x davor, 3 dahinter

LaTeX3 dieser Name ist seit der Veröffentlichung von LaTeX2e ein Gesepenst, das immer mal wieder durch die wechselnden Mailinglists, Foren etc, schwirrt. Aber seit ein paar Jahren ist die Entwicklung des Nachfolgers von LaTeX2e tatsächlich im Gange und Mittlerweile kann man wirklich damit arbeiten. Joseph Wright zum Beispiel  hat große Teile seines bekannten und allseits beliebten Paketes siunitx auf l3 aufgebaut. Er beschreibt auch immer wieder kleine Einführungen in seinem Blog.  Natürlich ist l3 bei weitem noch nicht fertig, es harmoniert aber sehr gut mit LaTeX2e und kann praktisch parallel verwendet werden.
Einen guten Einstieg bekommt man neben den schon genannten Blog durch die mitgelieferte Dokumentation: texdoc -s expl3  hier lohnt sich auf jeden Fall ein Blick in die Dokumentation mit dem Namen interface3 die eigentlich alle Features von l3 abdeckt.

Absolut gelungen ist Paket xparse welches es dem Programmierer sehr leicht macht End-User Befehle anzulegen. Ein umständliches selbstgeschriebenes Argumenten Parsing entfällt.

    \NewDocumentCommand\mycommand{moos}{}

definiert zum Beispiel einen Befehl mit einem obligatorischen Argument in {} zwei optionalen in [] und einem Stern (sog. „starred commands“). Auf diese Argumente kann dann mit #1 #2 usw. zugegriffen werden.

Sehr schön ist auch das key=value Optionen Parsing in z.B. Paketoptionen (oder auch Klassen oder Befehlen). Das System hat gewisse Ähnlichkeit mit den pgfkeys ist aber derart leicht zu bedienen, dass es fast schon Spaß macht neue Optionen ein zu pflegen. Kleines Beispiel:

\keys_define:nn {modul}{
	key1 .bool_set:N=\g_prev_defined_bool,
	key1.default:n = false,
	key2 .code:n	=\cs_set:Npn\g_prev_defined_cs{ #1 },
}

Damit richte ich zwei Optionen ein, einmal eine Boolsche die anfänglich auf false steht und bei der, wenn durch den User angegeben wird key1=true, die boolsche Variable \g_prev_defined_bool auf true gestellt wird. Bei key2 wird das, was nach dem Gleichheitszeichen kommt, in die rechte Seite des Macros \g_prev_defined_cs geschrieben. (\cs_set:Npn entspricht etwa \def, es belegt ein Macro neu, initialisiert es aber nicht.)

Auch toll sind die vielen eingebauten Conditionals also die if-Abfragen. TeX kenn selbst ja nur ein paar basis Abfragen wie \ifnum oder \ifx. Wollte man bisher Strings vergleichen oder andere höhere Aufgaben erledigen so musste man sich die if-Schleifen jeweils selbst aus den Basis-Ifs bauen oder das Paket etextools bemühen (das eTeX benötigt). Das ist jetzt sozusagen im l3 Kern drin.

Das neue Konzept der Token Lists erklärt Joseph Wright in seinem Blog  sehr gut. Zumindest mir macht die Token List einiges einfacher, vorallem weil LaTeX 3 viele eingebaute Funktionen hat um diese tls zu verwenden. Manche Programmierer mögen das Konzept der nicht indizierten arrays in LaTeX etwas vermisst haben, eine tl ist im Prinzip etwas ähnliches.

Kurz um ich glaube dass LaTeX3 auf einem guten Weg ist und zumindest mir schon richtig  Spaß macht.

Ach ja und Klassen Autoren sollten sich xtemplate mal anschauen. Das ist (zumindest) der Versuch ein globales (einfaches) System zur Kontrolle des Aussehens und der typographischen Parameter zu etablieren, was bisher entweder jede Klasse selbst macht (man denke an das KOMASkript oder memoir ) oder dem Benutzer abverlangt in die Tiefen von LaTeX2e vorzudringen (wie z.B. die Standard-Klassen). Das ist zumindest ein löblicher Ansatz.

Dieser Beitrag wurde unter (La)TeX abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Die Kommentarfunktion ist geschlossen.