<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% lualatex-doc: a guide to LuaLaTeX
%
% Written by Manuel PÃ©gouriÃ©-Gonnard &lt;mpg@elzevir.fr&gt;, 2010.
%
% Distributed under the terms of the GNU free documentation licence:
%   http://www.gnu.org/licenses/fdl.html
% without any invariant section or cover text.

\documentclass{lltxdoc}

\title{Eine EinfÃ¼hrung in \lualatex}
\author{Manuel PÃ©gouriÃ©-Gonnard \email{mpg@elzevir.fr}}
\date{\today}

\begin{document}

\maketitle

\begin{abstract}
  Dieses Dokument ist eine Karte oder vielmehr ein touristischer ReisefÃ¼hrer
  fÃ¼r die neue Welt von \lualatex.\footnote{Obwohl der Fokus des Dokumentes auf 
  \lualatex liegt, beinhaltet es auch nÃ¼tzliche Informationen Ã¼ber \luatex im
  Nur-Text-Format.} Die angestrebte Zielgruppe reicht von vÃ¶lligen AnfÃ¤ngern
  (mit etwas Wissen Ã¼ber gÃ¤ngiges \latex) bis hin zu Paket-Entwicklern. Dieser
  FÃ¼hrer versteht sich als "umfassend" im folgenden Sinne: Es enthÃ¤lt Verweise
  zu allen relevanten Quellen, trÃ¤gt Informationen zusammen, die sonst verstreut
  liegen und fÃ¼gt einfÃ¼hrende Materialien bei.

  RÃ¼ckmeldungen und VorschlÃ¤ge fÃ¼r Verbesserungen sind besonders willkommen. 
  Dieses Dokument ist unter permanenter Bearbeitung. Danke fÃ¼r ihr VerstÃ¤ndnis
  und ihre Geduld.
\end{abstract}

\vspace{\stretch{1}}
\setcounter{tocdepth}{2}
\listoftoc*{toc}
\vspace*{\stretch{2}}
\clearpage

\section{Einf"uhrung}\label{intro}

\subsection{Was ist eigentlich \lualatex?}\label{what}

Um diese Frage zu beantworten mÃ¼ssen wir ein paar Details Ã¼ber die Welt von \tex 
aufgreifen, die sie vielleicht fÃ¼r gewÃ¶hnlich nicht beachten wÃ¼rden, nÃ¤mlich den 
Unterschied zwischen der \emph{Maschine} und einem \emph{Format}. Eine Maschine
(engl. \emph{engine}) ist ein Computerprogramm wÃ¤hrenddessen ein Format eine 
Menge von Makros darstellt, die durch die Maschine ausgefÃ¼hrt wird. Ãœblicherweise
werden die Makros vor der eigentlichen AusfÃ¼hrung mit einer konkreten Datei
vorgeladen.

Eigentlich ist ein Format mehr oder weniger wie eine Dokumentenklasse oder ein
Paket, mit dem Unterschied, dass es mit einem bestimmten Kommando verknÃ¼pft ist.
Stellen sie sich vor, es gÃ¤be ein Kommando \cmd{latex-article}, das das gleiche 
machen wÃ¼rde, wie \cmd{latex}, allerdings brauchen sie dabei nicht die PrÃ¤ambel
Â©\documentclass{article}Â© zu Beginn ihrer Datei verwenden. GleichermaÃŸen
ist das Kommando \cmd{pdflatex} dasselbe wie das Kommando \cmd{pdftex}, mit dem
Unterschied, dass sie keine Anweisungen am Beginn ihrer Datei machen mÃ¼ssen, \latex 
zu laden. Das ist bequem und auch ein wenig effizienter.

Formate sind groÃŸartig, weil sie mÃ¤chtige Kommandos mit den einfach Werkzeugen
implementieren, die eine Maschine bereitstellt. Trotzdem ist die MÃ¤chtigkeit 
eines Formates manchmal durch die von der Maschine bereitgestellten Werkzeuge 
beschrÃ¤nkt, weshalb einige Leute begonnen haben, funktionsreichere Maschinen zu 
entwickeln, damit andere wiederum mÃ¤chtigere Formate (oder Pakete) implementieren
kÃ¶nnen. Die zur Zeit bekanntesten Maschinen (ausgenommen das ursprÃ¼ngliche \tex) 
sind \pdftex, \xetex und \luatex.

Um das Bild noch etwas weiter zu verkomplizieren, erzeugte die ursprÃ¼ngliche
\tex Maschine ausschlieÃŸlich DVI-Dateien, wÃ¤hrend seine Nachfolger zusÃ¤tzlich
PDF-Dateien erzeugen kÃ¶nnen. Jedes Kommando in ihrem System gehÃ¶rt zu einer 
bestimmten Maschine mit einem bestimmten Format und einem bestimmt Ausgabemodus.
Die folgende Tabelle fasst dies zusammen: In der Zeile das Format, in der Spalte
Maschine und in jeder Zelle steht oben das Kommando fÃ¼r den DVI-Modus und darunter
das fÃ¼r den PDF-Modus.

\begin{center}
  \newcommand*\cell [2] {%
    \parbox{6em}{\centering\leavevmode\color{code}\ttfamily
      \strut\maybe{#1} \\ \strut\maybe{#2}}}
  \makeatletter
  \newcommand*\maybe [1] {%
    \@ifmtarg{#1} {\textcolor{gray}{\normalfont (none)}} {#1}}
  \begin{tabular}{l|cccc}
                &amp; \tex &amp; \pdftex &amp; \xetex &amp; \luatex
    \\ \hline
    Plain
                &amp;  \cell{tex}{}
                &amp;  \cell{etex}{pdftex}
                &amp;  \cell{}{xetex}
                &amp;  \cell{dviluatex}{luatex}
    \\ \hline
    \latex
                &amp;  \cell{}{}
                &amp;  \cell{latex}{pdflatex}
                &amp;  \cell{}{xelatex}
                &amp;  \cell{dvilualatex}{lualatex}
    \\
  \end{tabular}
\end{center}

Wir kÃ¶nnen jetzt die Frage in der Ãœberschrift beantworten: \lualatex ist die 
\luatex Maschine mit dem \latex Format. Nun gut, diese Antwort ist nicht 
besonders befriedigend, wenn sie den Unterschied zwischen \luatex und \latex
nicht kennen.

\medskip

Wie sie vielleicht wissen ist \latex das allgemeine Rahmenwerk, in welchem 
Dokumente mit Â©\documentclassÂ© beginnen, Pakete mit Â©\usepackageÂ© geladen, 
Schriftarten auf eine schlaue Art und Weise ausgewÃ¤hlt werden (damit sie in die
Fettschrift wechseln kÃ¶nnen, aber kursiv beibehalten kÃ¶nnen), Seiten mit
komplizierten Algorithmen erstellt werden, darunter UnterstÃ¼tzung fÃ¼r Kopf- und
FuÃŸzeilen, FuÃŸnoten, Randnotizen, Textflussmaterial usw. Dies Ã¤ndert sich nicht
mit \lualatex, aber neue und mÃ¤chtigere Pakete werden damit verfÃ¼gbar, die 
Teile des Systems auf bessere Weise arbeiten lassen.

Was also ist \luatex? Kurz gesagt: Die heiÃŸeste \tex Maschine, die es zur Zeit
gibt! Etwas genauer ausgedrÃ¼ckt: Es ist der vorgesehene Nachfolger von \pdftex 
und beinhaltet all dessen Kernfunktionen: Direkte Generierung von PDF Dateien 
mit UnterstÃ¼tzung erweiterter PDF-Funktionen und mikrotypografischen 
Verbesserungen an den typografischen \tex-Algorithmen.

Die wichtigsten Neuerungen von \luatex sind:

\begin{enumerate}
  \item Nativer Support von Unicode, dem modernen Standard von Zeichenklassifikation
        und Kodierung mit UnterstÃ¼tzung aller Buchstaben der Welt, vom 
        Englischen Ã¼ber Arabisch bis hin zu traditionellem Chinesisch und mit 
        Einbezug einer groÃŸen Menge von mathematischen und sonstigen Symbolen.
  \item Die Inklusion von Lua als der eingebetteten Scriptsprache (siehe 
        Kapitel~\ref{luaintex} fÃ¼r Details).
  \item Eine Menge von groÃŸartigen Lua-Bibliothenken, darunter:
    \begin{itemize}
      \item Â©fontloaderÂ©, die moderne Schriftartenformate wie Truetype oder
            Opentype unterstÃ¼tzt;
      \item Â©fontÂ©, die die VerÃ¤nderung von Schriftarten innerhalb des Dokumentes
            ermÃ¶glicht;
      \item Â©mplibÂ©, eine eingebettete Version des Grafikprogramms Metapost;
      \item Â©callbackÂ©, die ZugÃ¤nge zu teilen der \tex-Maschine bereitstellt,
            die vorher nicht erreichbar waren;
      \item Dienstprogramm-Bibliotheken, um Bilder, PDF und andere Dateien zu
            manipulieren.
    \end{itemize}
\end{enumerate}

Einige dieser Funktionen, wie zum Beispiel die Unicode-UnterstÃ¼tzung, wirken sich
direkt auf alle Dokumente auf, wÃ¤hrend andere Funktionen hauptsÃ¤chlich Werkzeuge 
bereitstellen, die Autoren von Paketen nutzen, um noch noch mehr Kommandos und 
Erweiterungen bereitzustellen.

\subsection{Wechseln von \latex nach \lualatex}\label{switch}

Wie das vorangegangene Kapitel zeigt ist \lualatex vergleichbar mit \latex, hat 
einige wenige Unterschiede und hÃ¤lt eine hÃ¶here Anzahl von funktionsreichen Paketen 
und Werkzeugen verfÃ¼gbar. In diesem Abschnitt prÃ¤sentieren wir das absolute
Minimum, das sie wissen sollten, um ein Dokument mit \lualatex zu erzeugen, wÃ¤hrend 
der Rest des dieses Dokumentes mehr Details Ã¼ber die verfÃ¼gbaren Packages 
bereithÃ¤lt.

Es gibt nur drei Unterschiede:
There are only three differences:
\begin{enumerate}
  \item Verwenden sie nicht das Paket \pf{inputenc}! Kodieren sie ihre Quelldatei
        einfach in UTF-8.
  \item Laden sie nicht \pf{fontenc}, sondern stattdessen \pf{fontspec}.

  \item Benutzen sie kein Paket, das die Schriftarten Ã¤ndert, stattdessen
        verwenden sie \pf{fontspec}'s-Kommandos.
\end{enumerate}

Sie mÃ¼ssen sich also lediglich  mit \pf{fontspec} vertraut machen, was sehr 
einfach ist: WÃ¤hlen sie die Hauptserifenschriftart mit Â©\setmainfontÂ© aus, die 
serifenlose Schriftart mit Â©\setsansfontÂ©, die Festbreitenschriftart mit
Â©\setmonofontÂ©. Der Parameter fÃ¼r diese Kommandos ist ein menschen-lesbarer
Name der Schriftart, zum Beispiel Â©Latin Modern RomanÂ© anstelle von Â©ec-lmr10Â©. 
Sie mÃ¶chten gegebenenfalls Â©\defaultfontfeatures{Ligatures=TeX}Â© vor der 
Verwendung dieser Kommandos setzen, um die Ã¼blichen \tex-Ersetzungen (wie zum
Beispiel Â©---Â© fÃ¼r einen hervorgehobenen Gedankenstrich) zu bewahren.

Die gute Nachricht ist, dass sie jetzt direkt auf jede Schriftart ihres 
Betriebssystems zugreifen kÃ¶nnen, zusÃ¤tzlich zu denen der \tex-Distribution, 
darunter auch TrueType und OpenType-Schriftarten und sie haben Zugriff auf
deren neueste Funktionen. Das bedeutet, dass es jetzt einfach ist ist, mit 
\lualatex jede moderne Schriftart zu verwenden, die sie heruntergeladen oder
gekauft haben - und sie profitieren von deren vollem Potenzial.

Die schlechte Nachricht ist, dass es nicht immer einfach ist, eine Liste von
allen verfÃ¼gbaren Schriftarten zu erhalten. Unter Windows mit \texlive listet
ihnen das Kommandozeilenwerkzeug \cmd{fc-list} alle auf, aber es ist nicht 
besonders nutzerfreundlich. Unter Mac OS X, zeigt ihnen die 
\emph{Fontbook}-Anwendung alle Schriftarten ihres Systems an, aber nicht die
der \tex-Distribution. Das Gleiche gilt fÃ¼r \cmd{fc-list} unter Linux. Eine 
weitere schlechte Nachricht ist, dass sie auf diese Art nicht auf ihre alten
Schriftarten zugreifen kÃ¶nnen. GlÃ¼cklicherweise gibt es tagtÃ¤glich immer mehr
neue Schriftarten in modernen Formaten.

Ãœbrigens sollten wir hier erwÃ¤hnen, dass der Inhalt dieses Kapitels so weit
auch auf \xelatex zutrifft, das heiÃŸt fÃ¼r \latex nach \xetex. TatsÃ¤chlich 
teilt \xetex zwei der essenziellen Features von \luatex, nÃ¤mlich die native
Unicode-UnterstÃ¼tzung und die Verwendung moderner Schriftartenformate
(allerdings ohne die anderen Funktionen von \luatex; auf der anderen Seite ist
es zur Zeit stabiler). Obwohl sich die \xelatex-Implementierung bezÃ¼glich 
Schriftarten erheblich unterscheidet, so stellt doch \pf{fontspec} eine
vereinheitlichte Schriftarten-Schnittstelle fÃ¼r beide bereit.

\medskip

Um die VorzÃ¼ge der neuen Funktionen von \luatex zu erhalten, mÃ¼ssen sie einige
Teile der alten Welt fallenlassen und zwar jene Schriftarten, die nicht in 
einem modernen Format verfÃ¼gbar sind. Auch die Freiheit der Kodierung der 
Quelldatei nach Wahl muss aufgegeben werden, aber UTF-8 ist so Ã¼berlegen, dass
dieser Punkt kaum zÃ¤hlt. Das Paket \pk{luainputenc} stellt verschiedene 
KrÃ¼cken bereit, um diese Teile zu erhalten\footnote{Obwohl der Name andeutet,
es ginge lediglich um Eingabe-Kodierungen, so sind die Details der 
\latex-Schriftartenimplementierung fÃ¼r dieses Paket notwendig und unterstÃ¼tzen
daher ebenfalls die alten Schriftarten.}, allerdings mit dem 
Nachteil, die korrekte Unicode-UnterstÃ¼tzung zu verlieren.

Das ist alles, was sie wissen mÃ¼ssen, um Dokumente mit \lualatex zu erstellen.
Ich empfehle ihnen einen Blick ins die \pf{fontspec}-Anleitung zu werfen und
konkret ein kleines Dokument mit lustigen Schriftarten zu Ã¼bersetzen. Sie 
kÃ¶nnen dann den Rest des Dokuments nach Bedarf Ã¼berfliegen.
Kapitel~\ref{workornot} listet alle anderen Unterschiede zwischen konventionellem
\latex und \lualatex auf, die mir bekannt sind.


\subsection{Eine Lua-in-\tex Fibel}\label{luaintex}

Lua ist eine kleine, feine Sprache ganz offensichtlich weniger Ã¼berraschend
und viel einfacher zu lernen als \tex. Die Haupt-Referenz ist das sehr gut
lesbare Buch \emph{Programming in Lua}, dessen erste Ausgabe 
\href{http://www.lua.org/pil/} {online frei verfÃ¼gbar} ist. FÃ¼r den 
Schnelleinstieg empfehle ich die Kapitel~1 bis~5 zu lesen und einen schnellen
Blick auf Teil~3 zu werfen. Beachten sie bitte, dass alle Bibliotheken, die in
Kapitel~3 erwÃ¤hnt werden, auch Bestandteil von \luatex sind. Allerdings ist
die Â©osÂ©-Bibliothek aus SicherheitsgrÃ¼nden beschrÃ¤nkt.

Je nach ihrer Programmierweise sind sie vielleicht gleich an den restlichen 
Abschnitten von Teil~1 und Teil~2, die ihnen die erweiterten FunktionalitÃ¤ten 
der Sprache aufzeigen. Teil~4 ist bedeutungslos im Kontext von \luatex, sofern
sie nicht an \luatex selbst entwickeln wollen. SchlieÃŸlich ist das \emph{Lua
Referenz Handbuch} \href{http://www.lua.org/manual/}{in einigen Sprachen
online verfÃ¼gbar} und beinhaltet einen praktischen Index.

\medskip

Kommen wir nun zu Lua in \luatex. Die gebrÃ¤uchlichste Art, Lua-Code auszufÃ¼hren
ist das Â©\directluaÂ©-Kommando, das Lua code als Argument erhÃ¤lt. Genauso kÃ¶nnen 
sie Informationen von Lua nach \tex Ã¼bergeben mittels Â©tex.sprintÂ©.\footnote{
Der Name bedeutet vermutlich ``Zeichenkettendruck'' im Gegensatz zu ``laufe 
sehr schnell fÃ¼r eine sehr kurze Zeit.'' } Zum Beispiel

\begin{Verbatim}
  die StandardnÃ¤herung von $\pi = \directlua{tex.sprint(math.pi)}$
\end{Verbatim}

gibt ``die StandardnÃ¤herung von $\pi = \directlua{tex.sprint(math.pi)}$'' in
ihr Dokument aus. Sie sehen, wie einfach es ist \tex und Lua zu vermischen?

TatsÃ¤chlich gibt es einige wenige Treffer. Schauen wir zuerst auf den Lua 
nach \tex-Weg, denn es ist der einfachste. Wenn sie in das \luatex-Handbuch
schauen, werden sie sehen, dass es dort eine weitere Funktion mit einem 
einfacheren Namen Â©tex.printÂ©, gibt. Es fÃ¼gt eine komplette Zeile
in ihre \tex-Quelle ein, wobei der Inhalt das Argument des Kommandos ist. Falls
sie das noch nicht wussten: \tex macht alle garstigen Dinge mit kompletten 
Quellcodezeilen, wie das Ãœberspringen am Anfang und am Ende einer Zeile und dem 
HinzufÃ¼gen eines EOL-Zeichens am Ende der Zeile. Die meiste Zeit werden sie
das Feature nicht brauchen, daher empfehle ich die Verwendung von Â©tex.sprintÂ©.

Wenn sie genÃ¼gend tief in \tex bewandt sind und sogenannte catcodes kennen, 
werden sie sich freuen, dass ihnen Â©tex.printÂ© und seine Varianten beinahe
die volle Kontrolle Ã¼ber catcodes gibt, die sie benutzen kÃ¶nnen, um die 
Argumente zu zerlegen, da sie eine catcode-Tabelle als erstes Argument 
Ã¼bergeben kÃ¶nnen. Sie mÃ¶chten vielleicht mehr Ã¼ber catcodes erfahren, die
zur Zeit~2.7.6 im \luatex Handbuch sind. Wenn sie mit catcodes nichts am
Hut haben, Ã¼berspringen sie einfach diesen Abschnitt.

\medskip

Lassen sie uns nun auf Â©\directluaÂ© blicken. Um einen Eindruck davon zu bekommen
wie es arbeitet, stellen sie sich vor, dass es ein  Â©\writeÂ©-Kommando sei, aber 
es schreibt nur in eine virtuelle Datei und schickt diese Datei sofort an den
Lua-Interpreter. Im Lua-Kontext ergibt sich daruas, dass jedes Argument eines
Â©\directluaÂ©-Kommandos seinen eigenen Geltungsbereich hat: Lokale Variablen 
des einen Argumentes sind nicht sichtbar fÃ¼r das andere (was eigentlich 
vernÃ¼nftig ist, aber man weiÃŸ besser darÃ¼ber bescheid).

Nun der wichtigste Punkt ist, dass das Argument zuerst vom \tex-Interpreter
zerlegt wird, dann vollstÃ¤ndig erweitert und zurÃ¼ckverwandelt wird in eine
reine Zeichenkette, bevor es in den Lua-Interpreter gesteckt wird. Das Einlesen
in den \tex-Interpreter hat einige Konsequenzen. Eine davon ist, dass die
EOL-Zeichen in Leerzeichen umgewandelt werden, sodass es nur eine (lange) 
Eingabezeile gibt. Da Lua eine formfreie Sprache ist, spielt das fÃ¼r gewÃ¶hnlich
keine Rolle, allerdings dann schon, wenn es um Kommentare geht:

\begin{Verbatim}
  \directlua{a_function()
    -- a comment
    another_function()}
\end{Verbatim}

wird nicht das tun, was sie vermutlich erwarten wÃ¼rden. Â©another_function()Â© 
wÃ¼rde als Teil des Kommentars verstanden werden.

Eine weitere Konsequenz ist, dass aufeinanderfolgende Leerzeichen werden 
zusammengefasst zu einem Leerzeichen und \tex-Kommentare werden verworfen.
Hier nun die korrekte Version des vorigen Beispiels:
\begin{Verbatim}
  \directlua{a_function()
    % a comment
    another_function()}
\end{Verbatim}
Es ist ebenfalls zu bemerken, dass das Argument general in einem Â©\writeÂ© ist, 
und daher im expansion-only-Kontext ist. Wenn sie nicht wissen, was das 
bedeutet, lassen sie es mich so sagen, dass die Expansion-Sache der Hauptgrund
ist, der die \tex-Programmierung so schwierig gestaltet.

\medskip

Ich entschuldige mich dafÃ¼r, dass die letzten drei Abschnitte ein wenig
\tex{}nisch gewesen sind, aber ich dachte mir, dass sie das wissen sollten. Um
sie dafÃ¼r zu belohnen, dabei geblieben zu sein, gebe ich ihnen hier einen
debugging-Trick. Setzen sie den folgenden Code an den Anfang ihres Dokumentes:
\begin{Verbatim}
  \newwrite\luadebug
  \immediate\openout\luadebug luadebug.lua
  \AtEndDocument{\immediate\closeout\luadebug}
  \newcommand\directluadebug{\immediate\write\luadebug}
\end{Verbatim}

Wenn sie einmal schwer mit einem speziellen Aufruf von Â©\directluaÂ© zu kÃ¤mpfen
haben, weil er nicht das macht, was sie wollen, dann ersetzen sie den Aufruf 
dieser Instanz durch Â©\directluadebugÂ©. Ãœbersetzen sie dann wie immer und 
schauen in die Datei \file{luadebug.lua}. Sie sehen dannm, was der Lua-Interpreter
tatsÃ¤chlich gelesen hat.

Das \pk{luacode}-Pakte stellt Kommandos und Umgebungen bereit, die ihnen helfen
verschiedene Grade dieser Probleme zu lÃ¶sen. Wie dem auch seim, fÃ¼r alles was
nicht trivial ist, sollte man eine externe Datei mit dem Lua-Code verwenden, sie 
laden und verwenden. Zum Beispiel:

\begin{Verbatim}
  \directlua{dofile("my-lua-functions.lua")}
  \newcommand*{\greatmacro}[2]{%
    \directlua{my_great_function("\luatexluaescapestring{#1}", #2)}}
\end{Verbatim}

Das Beispiel nimmt an, dass Â©my_great_functionÂ© in Â©my-lua-functions.luaÂ© 
definiert ist und eine Zeichenkette und eine Zahl als Argument nimmt. Bemerken
sie auch, dass wir vorsichtig die Â©\luatexluaescapestringÂ© Primitive auf das 
Zeichenkettenargument anwenden, um jeden backslash oder GÃ¤nsefÃ¼ÃŸchen zu 
escapen. Das wÃ¼rde sonst den Lua Parser durcheinanderbringen.\footnote{
Wenn sie jemals schonmal SQL verwendet haben, dann ist das Konzept, 
Zeichenketten zu escapen hoffentlich nicht neu fÃ¼r sie.}

\medskip

Das ist alles, was Lua in \tex betrifft. Wenn sie sich darÃ¼ber wundern, warum
Â©\luatexluaescapestringÂ© einen so langen und dummen Namen hat, dann wollen sie
vielleicht das nÃ¤chste Kapitel anschauen.

\subsection{Andere wissenswerte Dinge}\label{things}

Nur fÃ¼r den Fall, dass dies nicht offensichtlich ist: Das \luatex-Handbuch, 
\file{luatexref-t.pdf} ist eine groÃŸartige Quelle.

Es ist wichtig zu wissen, dass die Namen der Primitive von \luatex im Handbuch
nicht mit den aktuellen Namen Ã¼bereinstimmen. Um Konflikte mit bestehenden
Makros zu vermeiden, sind alle neuen Primitive mit der Voranstellung Â©\luatexÂ©
versehen worden, es sei denn, sie begannen nicht bereits schon mit diesem Prefix. 

To prevent clashes with existing macro names, all new primitives
have been prefixed with Â©\luatexÂ© unless they already start with it, so
Â©\luaescapestringÂ© becomes Â©\luatexluaescapetringÂ© while Â©\luatexversionÂ©
remains Â©\luatexversionÂ©. The rationale is detailed in section~\ref{formats}.

\medskip

Oh, and by the way, did I mention that \luatex is in beta and version 1.0 is
expected in late 2012? You can learn more on the roadmap page of
\href{http://luatex.org/}{the \luatex site}. Stable betas are released
regularly and are included in \texlive since 2008 and \miktex since 2.9.

Not surprisingly, support for \luatex in \latex is shiny new, which means it
may be full of (shiny) bugs, and things may change at any point. You might
want to keep your \tex distribution very up-to-date\footnote{For \texlive,
  consider using the complementary
  \href{http://tlcontrib.metatex.org/} {tlcontrib} repository.} and also avoid
using \lualatex for critical documents at least for some time.

As a general rule, this guide documents things as they are at the time it is
written or updated, without keeping track of changes. Hopefully, you'll update
your distribution as a whole so that you always get matching versions of this
guide and the packages, formats and engine it describes.

\section{Essenzielle Pakete und Praktiken}\label{essential}

Dieser Abschnitt prÃ¤sentiert die Pakete, die Sie als Anwender mÃ¶glicherweise 
immer laden wollen oder Ã¼ber die Sie als Entwickler auf jeden Fall Bescheid 
wissen sollten.

\subsection{Anwender-Level}

\pkdesc{fontspec}{\WSPR}{\xetex, \luatex}{\latex}{% 
macros/latex/contrib/fontspec/}[https://github.com/wspr/fontspec/]
SchÃ¶nes Interface zur Schriftartenverwaltung, welches gut in die \latex 
Schriftartenauswahlschema integriert ist. Dies wurde schon in einem vorherigen 
Abschnitt vorgestellt.

\subsection{Entwickler-Level}

\subsubsection{Naming conventions}

Auf der \tex Seite sind Kontrollsequenzen, die mit Â©\luatexÂ© beginnen, fÃ¼r 
Primitiven reserviert. Es wird stark empfohlen, dass Sie \emph{keine} solcher 
Kontrollsequenzen definieren, um Namensueberschneidungen mit zukÃ¼nftigen 
Versionen von \luatex zu verhindern. Sollten Sie hervorheben wollen, dass ein 
Makro \luatex-spezifisch ist, empfehlen wir, dass Sie stattdessen das Â©\luaÂ© 
PrÃ¤fix  (ohne folgendem Â©texÂ©) benutzen. Es ist in Ordnung, das Â©\luatex@Â© 
PrÃ¤fix fÃ¼r interne Makros zu benutzen, da primitive Namen nie Â©@Â© enthalten, 
dennoch kÃ¶nnte dies Verwirrung stiften. Ausserdem benutzen Sie ja schon ein 
einzigartigen PrÃ¤fix fÃ¼r interne Makros in allen Ihren Paketen, nicht wahr?

Auf der Lua-Seite halten Sie bitte den globalen Namespace so sauber wie mÃ¶glich.
 Das heisst, Sie verwenden eine Tabelle Â©mypackageÂ© and setzen alle Ihre 
Ã¶ffentlichen Funktionen und Objekte in diese. Sie mÃ¶chten mÃ¶glicherweise dafÃ¼r 
Lua's \href{http://www.lua.org/manual/5.1/manual.html#pdf-module} 
{\code{module()}} benutzen.
Andere Strategien fÃ¼r die Lua Modulverwaltung werden in 
\href{http://www.lua.org/pil/15.html} {Kapitel~15 aus \emph{Programming in Lua}}
 diskutiert.  Es ist ausserdem eine gute Idee Â©localÂ© fÃ¼r Ihre internen 
Variablen und Funktionen zu verwenden.  Zu guter Letzt wird zur Vermeidung 
von Ãœberschneidungen mit zukÃ¼nftigen Versionen von \luatex  empfohlen, die 
Namespaces von \luatex's Standardbibliotheken nicht zu verÃ¤ndern.
    
\subsubsection{Engine und Modusfeststellung}\label{detect}

Zahlreiche Pakete erlauben es, die Engine festzustellen, die gegenwÃ¤rtig mit 
der Verarbeitung des Dokuments beschÃ¤ftigt ist.

\pkdesc{ifluatex}{\HO}{all}{\latex, Plain}{%
  macros/latex/contrib/oberdiek/}
Stellt Â©\ifluatexÂ© zur VerfÃ¼gung und stellt sicher, dass Â©\luatexversionÂ© 
benutzbar ist.

\pkdesc{iftex}{\VK}{all}{\latex, Plain}{%
  macros/latex/contrib/iftex/}[http://bitbucket.org/vafa/iftex]
Stellt Â©\ifPDFTeXÂ©, Â©\ifXeTeXÂ©, Â©\ifLuaTeXÂ© und  korrespondierendes Â©\RequireÂ©
Kommandos zur VerfÃ¼gung.

\pkdesc{expl3}{The \LaTeX3 Project}{all}{\latex}{%
  macros/latex/contrib/expl3/}[http://www.latex-project.org/code.html]
Stellt neben \emph{vieler} anderer Dinge Â©\luatex_if_engine:TFÂ©,
Â©\xetex_if_engine:TFÂ© und deren Varianten zur VerfÃ¼gung.

\pkdesc{ifpdf}{\HO}{all}{\latex, Plain}{%
  macros/latex/contrib/oberdiek/}
Stellt den Â©\ifpdfÂ© Schalter zur VerfÃ¼gung. \luatex, wie auch \pdftex kann 
sowohl PDF als auch DVI Ausgaben erzeugen; letzteres ist nicht wirklich sinnvoll
 mit \luatex, da es keine erweiterten Funktionen wie Unicode und moderne 
Schriftformate unterstÃ¼tzt. Der Â©\ifpdfÂ© Schalter ist nur aktiv, wenn und nur 
wenn Sie \pdftex oder \luatex im PDF Modus laufen lassen (beachten Sie dass dies
 nicht fÃ¼r \xetex gilt, dessen PDF Unterstuetzung anders funktioniert).


\subsubsection{Grundlegende Ressourcen}

\pkdesc{luatexbase}{\ER \&amp; \MPG}{\luatex}{\latex, Plain}{%
  macros/luatex/generic/luatexbase/}[https://github.com/mpg/luatexbase]
Die Text- und \latex-Formate enthalten Makros, um grundlegende \tex Ressourcen 
zu verwalten, wie zum Beispiel ZÃ¤hl- und Kistenregister. \luatex fÃ¼hrt neue 
Ressourcen ein, die anstandslos von Paketen gemeinsam benutzt werden kÃ¶nnen 
mÃ¼ssen. Dieses Paket stellt die grundlegenden Werkzeuge dafÃ¼r zur VerfÃ¼gung: 
die erweiterten konventionellen \tex Ressourcen, catcode Tabellen, Attribute, 
Callbacks sowie zum Laden und Identifizieren von Lua Modulen. Ausserdem verfÃ¼gt 
es Ã¼ber Werkzeuge, um einige KompatibilitÃ¤tsprobleme mit Ã¤lteren Versionen von 
\luatex zu hÃ¤ndeln.

\note{Warnung} Dieses Paket ist derzeitig im Konflikt mit dem \pk{luatex} Paket,
 da sie nahezu das Gleiche machen. Die entsprechenden Paketautoren sind sich 
dieser Situation bewusst und planen die beiden Pakete in der nahen Zukunft zu 
verschmelzen. Noch ist nicht klar, wann dies geschehen wird.

\pkdesc{luatex}{\HO}{\luatex}{\latex, Plain}{%
  macros/latex/contrib/oberdiek/}
Sehen Sie sich die Beschreibung des oben an. Dieses Paket stellt die selben 
Kernfunktionalitaeten, ausser Callback-Management und Lua Moduldentifizierung, 
zur VerfÃ¼gung.

\pkdesc{lualibs}{\ER}{\luatex}{Lua}{%
  macros/luatex/generic/lualibs/}[https://github.com/mpg/lualibs]
Eine Zusammenstellung von Lua-Bibliotheken und Erweiterungen der 
Standardbibliotheken; meist abgeleitet von den \context-Bibliotheken. Wenn Sie 
eine grundlegende Funktion brauchen, die Lua nicht zur VerfÃ¼gung stellt, dann 
prÃ¼fen Sie dieses Paket, bevor Sie eine eigene Implementierung vornehmen.

\subsubsection{Font internals}\label{fontint}

Diese Pakete werden von \pk{fontspec} geladen, um einige Low-Level-Probleme von 
Schriften und Encoding zu haendeln. Ein normaler Anwender sollte nur 
\pk{fontspec} nutzen, aber ein Entwickler sollte darÃ¼ber Kenntnis haben.

\pkdesc{luaotfload}{\ER \&amp; \KH}{\luatex}{\latex, Plain}{%
  macros/luatex/generic/luaotfload/}[https://github.com/khaledhosny/luaotfload]
Low-level Open Type Schriften Lader, adaptiert von einem Teil von \context. 
GrundsÃ¤tzlich benutzt es die Â©fontloaderÂ© Lua-Bibliothek und die entsprechenden 
Callbacks, um eine Syntax fÃ¼r die Â©\fontÂ© Primitive Ã¤hnlich wie tetex
bereitzustellen, und die entsprechenden SchriftenfunktionalitÃ¤ten umzusetzen.
 Zudem verwaltet es auch eine Schriftendatenbank fÃ¼r transparenten Zugriff auf 
die Schriften im System und der \tex Distribution entweder durch den 
Schriftfamiliennamen oder Dateinamen. Ausserdem hat es auch einen Schriftencache
 fÃ¼r schnelleres Laden.

\pkdesc{euenc}{\WSPR, \ER \&amp; \KH}{\xetex, \luatex}{\latex}{%
  macros/latex/contrib/euenc/}[https://github.com/wspr/euenc]
Setzt die Â©EUxÂ© Unicode Schrift Enkodierungen fÃ¼r \latex's \pf{fontenc} System 
um.
Derzeit benutzt \xelatex Â©EU1Â© und \luatex Â©EU2Â©. EnthÃ¤lt Definitionen 
(\file{fd} Dateien) fÃ¼r Latin Modern, die von \pk{fontspec} geladene 
Standardschrift.


\section{Andere Pakete}\label{other}

Bitte beachten Sie, dass diese Pakete nicht in einer bestimmten Reihenfolge 
aufgelistet sind.

\subsection{Anwender-Level}

\pkdesc{luatextra}{\ER \&amp; \MPG}{\luatex}{\latex}{%
  macros/luatex/latex/luatextra/}[https://github.com/mpg/luatextra]
LÃ¤dt die Ã¼blichen Pakete, derzeitig \pk{fontspec}, \pk{luacode}, \pf{metalogo}
(Kommandos fÃ¼r Logos, unter anderem Â©\LuaTeXÂ© und Â©\LuaLaTeXÂ©), \pk{luatexbase},
\pk{lualibs}, \pf{fixltx2e} (Fixes und Erweiterungen fuer den \latex-Kern).

\pkdesc{luacode}{\MPG}{\luatex}{\latex}{%
  macros/luatex/latex/luacode/}[https://github.com/mpg/luacode]
Stellt Kommandos und Makros zur VerfÃ¼gung, die dabei helfen, Lua Code in eine 
\tex-Quelle einzufÃ¼gen, insbesondere Sonderzeichen. 

\pkdesc{luainputenc}{\ER \&amp; \MPG}{\luatex, \xetex, \pdftex}{\latex}{%
  macros/luatex/latex/luainputenc/}[https://github.com/mpg/luainputenc]
Hilft, Dokumente zu kompilieren, die auf veralteten Enkodierenden basieren (sei
 es in der Quelle oder in den Schriften). Wurde schon in der Einfuehrung 
vorgestellt. Wenn \xetex benutzt wird, dann lÃ¤dt es einfach \pf{xetex-inputenc};
 unter \pdftex laedt es das standardmÃ¤ÃŸige \pf{inputenc}.

\pkdesc{luamplib}{\HH, \Taco \&amp; \ER}{\luatex}{\latex, Plain}{%
  macros/luatex/generic/luamplib/}[https://github.com/mpg/luamplib]
Stellt eine schÃ¶ne Schnittstelle fÃ¼r die Â©mplibÂ© Lua Bibliothek zur VerfÃ¼gung 
die Metapost in \luatex einbettet.

\pkdesc{luacolor}{\HO}{\luatex}{\latex}{%
  macros/latex/contrib/oberdiek/}
Ã„ndert die Low-Level-Farbenimplementierung, um \luatex Attribute anstatt 
whatsits. Dies macht die Implementierung robuster und korrigiert seltsame 
Fehler, wie zum Beispiel die fehlerhafte Ausrichtung, wenn Â©\colorÂ© zu Beginn 
einer Â©\vboxÂ© gesetzt ist.

\pkdesc{luadirections}{\KH}{\luatex}{\latex, Plain, \context}{}
[https://github.com/khaledhosny/luadirections]
Hoehergelegene Schnittstelle zu multi-direcktionaler UnterstÃ¼tzung. Derzeit 
nicht im CTAN vorhanden.

\subsection{Entwickler-Level}

\pkdesc{pdftexcmds}{\HO}{\luatex, \pdftex, \xetex}{\latex, Plain}{%
  macros/latex/contrib/oberdiek/}
Auch wenn \luatex normalerweise eine Erweiterung von \pdftex ist, wurden dennoch
 einige Primitiven entfernt (die, die durch Lua sozusagen abgelÃ¶st wurden) oder 
umbenannt. Dieses Paket stellt diese Primitiven mit konsistenten Namen 
durchgÃ¤ngig allen Engines zur VerfÃ¼gung, unter anderem \xetex, welches vor 
Kurzem einige dieser Primitiven implementiert hat, zum Beispiel Â©\strcmpÂ©.

\pkdesc{magicnum}{\HO}{\luatex, \pdftex, \xetex}{\latex, Plain}{%
  macros/latex/contrib/oberdiek/}
Stellt einen hierarchischen Zugriff auf ``magic numbers'', wie Catcodes, 
Gruppentypen usw., die intern von \tex und seinen Nachfolgern benutzt werden, 
zur VerfÃ¼gung. In \luatex wird eine effizientere Implementierung benutzt und 
eine Lua-Schnittstelle ist bereitgestellt.

\pkdesc{lua-alt-getopt}{Aleksey Cheusov}{\cmd{texlua}}{command-line}{%
  support/lua/lua-alt-getopt}[http://luaforge.net/project/lua_altgetopt]
Kommandozeilen-Options-Parser, nahezu vollstÃ¤ndig kompatibel mit POSIX und GNU 
getopt, zu benutzen in Kommandozeilen-LUA-Skripten, zum Beispiel 
\cmd{mkluatexfontdb} aus \pk{luaotfload}.


\section{Die \cmd{luatex} - und \cmd{lualatex}-Formate}\label{formats}

Dieser Abschnitt ist nur fÃ¼r Entwickler und neugierige Anwender gedacht; 
normale Anwender kÃ¶nnen dies gefahrlos Ã¼berspringen. Die folgende Information 
bezieht sich auf \texlive 2010 und hÃ¶chstwahrscheinlich auch auf \miktex 2.9, 
auch wenn ich dies nicht Ã¼berprÃ¼ft habe. FrÃ¼here Versionen von \texlive hatten 
eicht unterschiedliche und unvollstÃ¤ndigere Arrangements.

\para{Primitivennamen}
Wie im Abschnitt~\ref{things} erwÃ¤hnt wurde, sind die Namen der 
\luatex-spezifischen Primitiven nicht die selben im \cmd{lualatex} Format wie 
im \luatex Handbuch. Im \cmd{lualatex} Format (das heisst \luatex mit dem Plain 
Format) sind die Primitiven mit ihrem natÃ¼rlichen Namen verfÃ¼gbar, und 
zusÃ¤tzlich auch mit einem PrÃ¤fix vorangestellten Namen, um die Entwicklung von 
generischen Paketen zu erleichtern.

Die Rationale, entnommen der Datei \file{lualatexiniconfig.tex} , die dies fÃ¼r 
das \cmd{lualatex} Format umsetzt, ist:

\begin{myquote}
  \begin{enumerate}
    \item Alle derzeitigen Makropakete laufen unproblematisch auf pdf(e) TeX, 
daher sind diese Primitiven unberÃ¼hrt.
    \item Andere nicht-TeX82 Primitiven in \luatex kÃ¶nnen 
Namensueberschneidungen mit existierenden Makros in Makropaketen verursachen, 
besonders wenn sie sehr ``natÃ¼rliche'' Namen benutzen, wie zum Beispiel 
Â©\outputboxÂ©, Â©\mathstyleÂ© usw. Solch eine Wahrscheinlichkeit fÃ¼r 
Ãœberschneidungen ist nicht gewÃ¼nscht, da die meisten existierenden 
LaTeX-Dokumente ohne Ã„nderungen unter \luatex laufen.
    \item Das \luatex Team mÃ¶chte keine systematische PrÃ¤fixrichtlinie
 vorschreiben, stellt aber netterweise ein Werkzeug zur VerfÃ¼gung, mit dem 
PrÃ¤fixe gesetzt werden kÃ¶nnen. Deshalb haben wir uns entschieden, dies zu 
nutzen. Vorher deaktivierten sogar die Extra-Primitiven, aber nun denken wir, 
dass es besser ist, sie mit der systematischen PrÃ¤fixvoranstellung zu 
aktivieren, um zu vermeiden, dass jedes Makropaket (oder auch Anwender) diese 
mit vielfaltigen und inkonsistenten PrÃ¤fixen aktiviert (inkl. dem leeren 
PrÃ¤fix).
    \item Der Â©luatexÂ©-Praefix wurde ausgewÃ¤hlt, da er bereits als PrÃ¤fix fÃ¼r 
einige Primitiven benutzt wird, wie zum Beispiel Â©\luatexversionÂ©: dadurch 
erhalten diese nicht am Ende einen DoppelprÃ¤fix  (fÃ¼r Details siehe 
Â©tex.enableprimitivesÂ© im \luatex-Handbuch).
    \item  Die Â©\directluaÂ© Primitive wird mit ihrem natÃ¼rlichen (erlaubt die 
leichte Festellung von \luatex ) sowie mit einem PrÃ¤fix versehen Namen  
(Â©\luatexdirectluaÂ© (fÃ¼r Konsistenz mit Â©\luatexlateluaÂ©)) bereitgestellt.
    \item Einige Anmerkungen:
      \begin{itemize}
        \item Der offensichtliche Nachteile einer solchen PrÃ¤fixrichtlinie ist, 
dass die Namen, die von \latex oder einem generischen Makroersteller benutzt 
werden, nicht mit den Namen im Handbuch Ã¼bereinstimmen. Wir hoffen, dass sich 
dies durch den Gewinn der RÃ¼ckwÃ¤rtskompatibilitaet ausgleicht.
        \item Alle Primitiven, die das Thema Unicode Mathematik behandeln 
beginnen bereits mit Â©\UÂ© und werden mÃ¶glicherweise in der Zukunft mit den 
Namen der \xetex-Primitiven Ã¼bereinstimmen, sodass mÃ¶glicherweise ein PrÃ¤fix 
fÃ¼r diese nicht notwendig oder gewÃ¼nscht waren. Nichtsdestotrotz haben wir 
versucht, die PrÃ¤fixregeln so einfach wie mÃ¶glich zu halten, sodass der 
vorherige Punkt nicht noch schlimmer wird.
         \item Der endgÃ¼ltige Name einiger Primitiven mÃ¶ge sich seltsam anhÃ¶ren,
 besonders, die, die bereits den Namen einer Engine enthalten, wie zum Beispiel 
Â©\luatexOmegaVersionÂ©. Da aber \luatex nicht einfach ein Ersatz fÃ¼r Omega/Aleph 
ist, empfanden wir es als falsch, Â©\OmegaVersionÂ© zur VerfÃ¼gung zu stellen.
          \item Vielleicht empfinden wir es eines Tages besser, alle Primitiven 
ohne PrÃ¤fix bereitzustellen. Wenn dies passiert, wird es einfach sein du 
Primitiven ohne PrÃ¤fix in dem Format hinzuzufÃ¼gen, wÃ¤hrend die Namen mit PrÃ¤fix 
aus KompatibilitÃ¤tsgrÃ¼nden beibehalten werden. Andersherum wÃ¼rde dies nicht 
funktionieren; zum Beispiel zu spÃ¤t zu erkennen, dass wir die Primitiven ohne 
PrÃ¤fix nicht hÃ¤tten bereitstellen sollen wÃ¼rde dann alle \luatex-spezifische 
Makropakete kaputtmachen, die bereits geschrieben wurden.
      \end{itemize}
  \end{enumerate}
\end{myquote}

\para{\cs{jobname}}[jobname]
Der \latex Kernel (and eine Menge Pakete) benutzen Konstrukte wie 
Â©\input\jobname.auxÂ© aus verschiedensten GrÃ¼nden. Wenn Â©\jobnameÂ©  Leerzeichen 
enthÃ¤lt, funktioniert dies nicht richtig, da die Argumente von Â©\inputÂ© beim 
ersten auftretenden Leerzeichen enden. Um dies zu umgehen, setzt \pdftex 
automatisch Â©\jobnameÂ© in AnfÃ¼hrungszeichen wenn gebraucht, aber \luatex tut 
dies aus unerfindlichen GrÃ¼nden nicht. Ein nahezu vollstÃ¤ndiger Workaround ist 
in den \latex-basierten (im Gegensatz zu den plain-basierten) \luatex-Formaten 
vorhanden. 

Dies funktioniert aber nicht, wenn \luatex als Â©lualatexâ€&nbsp;'\inputâ€&nbsp;name'Â© 
aufgerufen wird, im Gegensatz zum gebrÃ¤uchlicheren Â©lualatexâ€&nbsp;nameÂ©. Um diese 
EinschrÃ¤nkung zu umgehen, kann ein Jobname explizit angegeben werden, wie zum 
Beispiel Â©lualatexâ€&nbsp;jobname=name '\inputâ€&nbsp;name'Â©. Oder besser noch, benutzen Sie 
keine Leerzeichen in den Namen Ihrer \tex-Dateien.

FÃ¼r mehr Details siehe
\href{http://www.ntg.nl/pipermail/dev-luatex/2009-April/002549.html}{diesen 
alten Eintrag} und
\href{http://tug.org/pipermail/luatex/2010-August/001986.html}{ein neuerer 
Eintrag}
auf der \luatex Mailingliste, und \file{lualatexquotejobname.tex} fÃ¼r die 
Umsetzung eines Workarounds.

\para{babel}
\luatex bietet dynamisches Laden von Silbentrennungsmustern. Derzeitig gibt es 
keine UnterstÃ¼tzung dafÃ¼r in \pf{babel} aber einige Dateien wurden angepasst, 
um ein halbdynamisches Laden bereitzustellen, welches eine bessere Ladezeit des 
Formates erreicht. Dies ist nur eine Ã„nderung in der Implementierung; nichts 
sollte auf der Anwenderebene sichtbar sein. Ein verÃ¤ndertes Muster-Ladeschema 
wird auch fÃ¼r Plain-basierten benutzt.

Dokumentation und Implementierungsdetails sind enthalten in 
\file{luatex-hyphen.pdf}. Die Quellen sind Teil des 
\href{http://tug.org/tex-hyphen/}{texhyphen Projektes}.

\para{codes}
Die Engine setzt selbst keine Â©\catcodeÂ©s, Â©\lccodeÂ©s, usw. fÃ¼r nich-ASCII 
Zeichen. Korrekte Â©\lccodeÂ©s sind im Besonderen essenziell, so dass 
Silbentrennung funktioniert. Die Formate fÃ¼r \luatex enthalten nun 
\file{luatex-unicode-letters.tex}, eine angepasste Version von 
\file{unicode-letters.tex} aus der \xetex Distribution, welches die 
entsprechenden Einstellungen konform zum Unicode Standard setzt.

Dies wurde hinzugefÃ¼gt, nachdem \texlive 2010 ausgeliefert. Daher wird stark 
empfohlen, dass Sie Ihre Installation aktualisieren, wenn Sie in den Genuss 
einer korrekten Silbentrennung fÃ¼r nicht-ASCII Text kommen wollen.

\section{Dinge, die einfach funktionieren, teilweise funktionieren oder (noch) 
gar nicht funktionieren}
\label{workornot}

\subsection{Voll funktionierend}\label{working}

\para{Unicode}
Konventionelles \latex bietet etwas UnterstÃ¼tzung fÃ¼r UTF-8 in Eingabedateien 
an. Aber auf einer niedrigeren Ebene werden nicht-ASCII Zeichen in diesem Fall 
nicht atomar behandelt: sie bestehen auch mehreren elementaren Teilen 
(den \tex{}nikern als  \emph{Tokens} bekannt). Demzufolge haben Pakete, 
die Text Zeichen fÃ¼r Zeichen scannen oder andere atomare Operationen auf Zeichen
 ausÃ¼ben(z.B. das Ã„ndern ihrer catcodes), oft Probleme mit UTF-8 in 
konventionellem \latex. Zum Beispiel kÃ¶nnen for nicht-ASCII Zeichen kein short 
verbatim mit \emph{tokens} benutzt werden usw.

Die gute Nachricht ist, dass mit \lualatex einige der Features dieser Pakete 
damit beginnen, mit beliebigen Unicode Zeichen zu funktionieren ohne das Paket 
anpassen zu mÃ¼ssen. The schlechte Nachricht ist, dass dies nicht immer wahr ist.
 Siehe nÃ¤chsten Abschnitt fÃ¼r die Details.

\subsection{Teilweise funktionierend}\label{partial}

\para{microtype}
Paket \pf{microtype} hat eingeschrÃ¤nkte UnterstÃ¼tzung fÃ¼r \luatex: prÃ¤ziser 
gesagt, seit Version 2.4 2010/01/10 sind Protrusion und Expansion verfÃ¼gbar und 
standardmÃ¤ÃŸig aktiviert im PDF Modus, aber Kerning, Spacing und Tracking werden 
nicht unterstÃ¼tzt (siehe Tabelle~1 in Abschnitt~3.1 von \file{microtype.pdf}).

Auf der anderen Seite, besitzt \pk{luaotfload}, dass durch \pk{fontspec} 
geladen wird, eine Menge an Mikrotypografischer Funktionen. Das einzige Problem
besteht daher im Fehlen einer einheitlichen Schnittstelle.


\para{xunicode}

Das Paket \pf{xunicode} hat als Hauptaufgabe sicherzustellen, dass die Ã¼blichen
Steuersequenzen fÃ¼r nicht-ASCII-Zeichen (wie etwa Â©\'eÂ©) im Unicode-Kontext
korrekt arbeiten. Es kÃ¶nnte \emph{vermutlich} mit \luatex arbeiten, aber nur mit
expliziten Tests fÃ¼r \xetex. Wie dem auch sei, \pk{fontspec} benutzt einen
Trick, um es dennoch zu laden. Daher kÃ¶nnen Sie es nicht explizit laden, mÃ¼ssen
es auch nicht, da \pk{fontspec} sich ohnehin darum kÃ¼mmert.

\para{encodings}

Wie im vorherigen Abschnitt erwÃ¤hnt, gibt es einige Dinge, die mit UTF-8 unter 
konventionellem Latex manchmal funktionieren, aber eben nicht immer. Zum 
Beispiel kÃ¶nnen sie mit dem \pf{listings}-Paket unter \lualatex innerhalb 
ihrer Listings nur Zeichen unterhalb von 256 verwenden - das heiÃŸt, Zeichen aus 
dem Latin-1 Zeichensatz.

\para{metrics}

Dieser Abschnitt handelt nicht konkret von "funktionieren" oder "nicht 
funktionieren", sondern eher, dass es nicht wie \pdftex oder \xetex
funktioniert. Sie werden kleinere Unterschiede im Layout und der Silbentrennung
ihres Textes bemerken. Diese entstehen wegen der Unterschiede zwischen zwei
Versionen derselben Schriftart bei Anwendung von verschiedenen Maschinen, 
Anpassungen an der Silbentrennung, Ligaturen oder Kerning-Algorithmen, oder 
Unterschieden in den verwendeten Silbentrennungs-Mustern (Muster von \pdftex
frieren in der Regel ein, aber \luatex und \xetex nutzen neuere Versionen 
fÃ¼r Sprachen).

Wenn Sie jemals einen grÃ¶ÃŸeren Unterschied zwischen pdf\latex und \lualatex mit
der selben Schriftart sehen, dann ist es nicht ungewÃ¶hnlich, dass es sich um einen
Fehler in \lualatex\footnote{\lualatex 0.60 hatte einen Fehler, der die 
Silbentrennung nach einer \code{-{}-{}-}-Ligatur am Ende eines Abschnittes
verhinderte.} handelt. Wie fÃ¼r gewÃ¶hnlich stellen Sie sicher, dass ihre 
Distribution aktuell ist.

\par{babel}

Kurz gesagt: Es arbeitet fast immer ohne Probleme mit latinisierten Sprachen. 
FÃ¼r andere Sprachen kann es Probleme geben. Ein moderneres, weniger fertigeres
Paket fÃ¼r die Mehrsprachigkeit ist \pf{polyglossia}, das fÃ¼r \xelatex verfÃ¼gbar
ist. Das Paket gibt es fÃ¼r \lualatex noch nicht.

\subsection{(Noch) nicht funktionierend}\label{notworking}

\para{Alte Encodings}[oldenco] Pakete, die mit Eingabedateien oder Ausgabe
(Schriftarten) spielen, werden sehr wahrscheinlich nicht mit \lualatex 
funktionieren. Die gute Nachricht ist, dass Unicode einen viel mÃ¤chtigeren
Ansatz zur LÃ¶sung von Encoding-Problemen bereitstellt, als die alten Pakete.
Daher werden Sie die alten Pakete ohnehin nicht benÃ¶tigen. Leider ist noch nicht
alles in die glitzernde neue Welt von Unicode portiert worden und es wird
noch ein reduzierte Auswahl fÃ¼r einige Zeit geben, was besonders auf 
Schriftarten zutrifft.

\para{soul} Das \pf{soul}-Paket benutzt einen schlauen Trick mit einer
Festbreitenschriftart, um Zeichen zu zÃ¤hlen. Wie dem auch sei, wegen Unterschiede
im Schriftartenhandling funktioniert dies nicht mit mehr als 256 Zeichen. 

\para{Leerzeichen} Leerzeichen in Dateinamen sind nicht gut unterstÃ¼tzt, was 
generell fÃ¼r die \tex Welt gilt. 

\end{document}

% vim: spell spelllang=en
</pre></body></html>