Mehrere Pakete laden
Dem Makro \usepackage
kann man eine durch Kommata getrennte Liste von Paketnamen übergeben, so dass man mehrere Pakete auf einmal laden kann, z.B. mit \usepackage{color,graphicx}
. Übergibt man zusätzliche Optionen werden diese an alle Pakete der Liste weitergereicht. Es is zudem leichter, Pakete auszukommentieren, wenn sie einzeln geladen werden. Daher bleiben wir im folgenden dabei, jedes Paket einzeln zu laden.
Das Paket babel
Wir haben in der Haupteinheit das Paket babel
als eine Möglichkeit vorgestellt, unterschiedliche Silbentrennungsmuster zu nutzen. Das Paket kann noch eine Menge mehr, abhängig von den verwendeten Sprachen. Für deutsche Texte stellt es beispielsweise Kürzel (shorthands) bereit, um bedingte Trennstriche (‘soft’ hyphens) anzugeben oder auch Umlaute auf nicht-deutschen Tastaturen schneller eingeben zu können. Zusätzlich werden Begriffe wie Table of Contents, der automatisch durch \tableofcontents
genutzt wird, ins Deutsche zu Inhaltsverzeichnis übersetzt.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel} % Beachte, dass die Option 'ngerman' heißt
\begin{document}
\tableofcontents
\section{"Uber "Apfel und Birnen}
\subsection{Äpfel}
Äpfel sind rot.
\subsection{Birnen}
Birnen sind gelb.
\end{document}
Andere Spracheinstellungen bewirken Änderungen des Layouts. So wird beispielsweise in der traditionellen französischen Typographie vor einige Satzzeichen ein zusätzlicher Abstand gesetzt, z.B. bei :
. Dieser Abstand wird automatisch ergänzt, sobald man babel
mit der Option french
lädt.
Globale Optionen
Manchmal möchte man Optionen für alle geladenen Pakete angeben. Dies wird erreicht, indem die Option in der \documentclass
-Zeile gesetzt wird: jedes Paket kann diese Liste nutzen. Um also die Dokumentsprache allen Paketen mitzuteilen könnte man folgendes nutzen:
\documentclass[ngerman]{article} % Beachte, dass die Option 'ngerman' heißt
\usepackage[T1]{fontenc}
\usepackage{babel}
\begin{document}
\tableofcontents
\section{"Uber "Apfel und Birnen}
\subsection{Äpfel}
Äpfel sind rot.
\subsection{Birnen}
Birnen sind gelb.
\end{document}
Mehr Definitionen
\newcommand
erlaubt Befehle mit bis zu neun Argumenten, das erste kann optional sein.
Ausgehend vom Beispiel in der Hauptlektion können wir die Farbe optional machen, mit Blau als Standardwert.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{xcolor}
\newcommand\kw[2][blue]{\textcolor{#1}{\itshape #2}}
\begin{document}
Irgendwas über \kw{Äpfel} und \kw[red]{Orangen}.
\end{document}
Optionale Argumente werden in []
gegeben und wenn sie ausgelassen werden, wird der Standardwert aus der Definition verwendet.
\NewDocumentCommand
Seit der Oktober 2020 LaTeX-Veröffentlichung ist ein erweitertes Definitionssystem verfügbar. In älteren LaTeX-Versionen wurde dieses durch das xparse
Paket definiert, welches wir hier für die Kompatibilität auch verwenden.
Wiederholen wir obiges Beispiel allerdings mit \NewDocumentCommand
.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{xparse} % Nur für ältere LaTeX-Versionen notwendig
\usepackage{xcolor}
\NewDocumentCommand\kw{O{blue} m}{\textcolor{#1}{\itshape #2}}
\begin{document}
Irgendwas über \kw{Äpfel} und \kw[red]{Orangen}.
\end{document}
Genau wie \newcommand
erwartet \NewDocumentCommand
den zu definierenden Befehl (hier \kw
) und die Definition unter Verwendung von #1
bis #9
für die Argumente. Es gibt aber Unterschiede darin, wie die Argumente spezifiziert werden.
Anders als für \newcommand
, für das nur die Anzahl der Argument und optional auch der Standardwert für das erste angegeben wird, wird für \NewDocumentCommand
jedes Argument durch einen Buchstaben gekennzeichnet, ein Befehl der zwei Argumente erwartet wird also durch {mm}
anstelle von [2]
erzeugt. Dies ist etwas ausführlicher, erlaubt aber auch flexiblere Definitionen. An dieser Stelle soll aber obiges Beispiel mit einem optionalen Argument mit blue
als Standardwert (O{blue}
) und einem weiteren obligatorischen Argument (m
, für ‘mandatory’) ausreichen.