LaTeX selbst ist eine Makrosprache, das bedeutet sie bietet von
Haus aus die Möglichkeiten für Automatismen. Diese Makros werden
im Deutschen oft als Befehle bezeichnet, im Englischen als
commands. Die ursprüngliche Bezeichnung ist übrigens control sequence.
LaTeX als solches stellt den Befehl \newcommand
zur Verfügung. Betrachten wir als Beispiel die Definition eins
Befehls \fragen:
Code, hier editierbar zum Übersetzen:
1
2
3
\newcommand{\fragen}{Wieso? Weshalb? Warum?}
%Neuer Befehl, der heißt fragen und ersetzt sich selbst
LaTeX ersetzt \fragen mit all dem, was wir in Klammern
geschrieben haben.
Solche einfachen Befehle kennen wir aus unseren Dokumenten
(\TeX, \tableofcontents oder \listoffigures).
Code, hier editierbar zum Übersetzen:
1
2
Er selbst bezeichnete sich als \emph{\TeX niker aus
Was passiert an dieser Stelle? TeXniker wird zusammen
geschrieben, leider aber auch TeXsehr. Warum aber verhält sich
das Computerprogramm so? Wir haben uns das Wort TeXniker aus
\TeX und niker gebildet. Würden wir beide Teile direkt hier
zusammenfügen, würde LaTeX bemerken, dass der Befehl \TeXniker
niemals definiert wurde (undefined control sequence). Das
Leerzeichen dient uns also dazu beide Teile voneinander zu
trennen, geschweifte Klammern sind dazu aber auch möglich.
Code, hier editierbar zum Übersetzen:
1
2
Er selbst bezeichnete sich als \emph{\TeX niker aus
Jeder kennt aber auch Befehle, welche ein Argument benötigen,
also irgendetwas, was LaTeX verarbeiten muss. Denken wir
beispielsweise an Überschriften in unseren Dokumenten.
Alles, was hier in Klammern steht, wird von LaTeX zu einer
Überschrift verarbeitet, was im Allgemeinen bedeutet den Text
größer und fetter zu darzustellen.
Auch solche Befehle können wir uns selbst definieren.
Beispielsweise wollen wir in unserem Dokument alle
Namen von Programmiersprachen in einer Schreibmaschienschrift setzen.
Er programmierte in programmiersprache{python}, obwohl er
Angst vor Schlangen hatte.
Genau wie bei einer Überschrift verarbeitet LaTeX unser Argument
(der Teil in geschweiften Klammern). LaTeX muss allerdings vorher
wissen, wie viele Argumente (Klammerpaare) vorhanden sein werden
([1]). In diesem falle haben wir nur ein Klammerpaar, auf das
wir uns mit #1 beziehen. Das selbst wiederum ist das Argument
für \texttt, unsere Schreibmaschinenschrift. @saputello liefert
ein paar hilfreiche Tipps zu semantischem Markup in Wie kann ich
bestimmte Begriffe
hervorheben?.
Natürlich können wir uns auch Befehle definieren, welche mehr als
nur ein Argument haben:
Ziel eines Dokumentes ist, vom Inhalt abgesehen, ein sauberes und
einheitliches Erscheinungsbild. Semantisches Markup bietet uns
die besten Chancen dieses Erscheinungsbild zu erreichen.
Hier haben wir unseren Befehl \deadpoet nochmal definiert. Das
Ergebnis in der pdf sieht für alle nachfolgenden Ereignisse eines
toten Dichters gleich aus.
Was bedeutet das jetzt für unser
Dokument?
Ich muss mir nur einmal festlegen, wie etwas aussehen soll, LaTeX
kümmert sich dann darum, dass es nachfolgend einheitlich aussieht.
Wo sollte ich meine Befehle definieren, wenn ich möchte, dass
alle Ereignisse im Dokument einheitlich sind?
Im Allgemeinen kann man sagen, dass die Definition eigener
Befehle oder Makros immer in den Vorspann, also die Präambel,
gehört.
Es gibt natürlich noch mehr zu entdecken, man denke nur an das
optionale Argument von \section, welches seinen Inhalt in das
Inhaltsverzeichnis schreibt.
Einen ausführlicheren Überblick gibt Wie definiere ich eigene Kommandos? von Marco Daniel. Darin werden
auch Vorteile und Möglichkeiten des Paketes
xparse vorgestellt.
Unser Minimalbeispiel ist mittlerweile Angewachsen auf: