Wer mit LaTeX arbeitet, lernt auch nach vielen Jahren noch Neues über das Textsatzsystem. Das liegt an der Vielfalt der Einstellmöglichkeiten, mit denen Feinarbeiten an Seiten, Absätzen oder sogar einzelnen Wörtern möglich sind. Unsere Tipps helfen u. a. bei Silbentrennung und korrekten Ligaturen.
Tipp: Richtige Dokumentenklasse wählen
Manche Probleme bei der Arbeit mit LaTeX lösen sich von selbst, wenn Sie die richtige Dokumentklasse wählen. Wichtig ist hier unter anderem, dass die oberste Gliederungsebene eines Dokuments von der Klasse abhängt: Bei Büchern (Klassen z. B. book und scrbook) und Reports (Klassen report und scrreprt) ist das Kapitel (\chapter) die oberste Ebene, das führt zu folgender Überschriftnummerierung:
- 1. Kapitel (
\chapter) - 1.1 Abschnitt (
\section) - 1.1.1 Unterabschnitt (
\subsection) - (1.1.1.1) Unterunterabschnitt (
\subsubsection) - (1.1.1.1.1) Absatz (
\paragraph) - (1.1.1.1.1.1) Unterabsatz (
\subparagraph)
Die Überschriften der letzten drei Gliederungsebenen erhalten dabei keine Nummern (darum stehen dort die Nummern in Klammern), und sie tauchen auch nicht im Inhaltsverzeichnis auf.
Die Artikelklassen article und scrartcl sind für kürzere Dokumente gedacht: Hier fehlt die Gliederungsebene “Kapitel”, es geht also mit Abschnitten (\section) los, so dass sich diese Darstellung ergibt:
- 1 Abschnitt (
\section) - 1.1 Unterabschnitt (
\subsection) - 1.1.1 Unterunterabschnitt (
\subsubsection) - (1.1.1.1) Absatz (
\paragraph) - (1.1.1.1.1) Unterabsatz (
\subparagraph)
Auch hier erhalten nur die obersten drei Ebenen eine Nummerierung, und das Inhaltsverzeichnis enthält nur dazu Einträge.
Haben Sie die falsche Klasse ausgewählt, kann Folgendes passieren:
- Sie setzen Abschnitte als oberste Gliederungsebene ein, verwenden aber eine Buch-ähnliche Klasse – dann haben alle Überschriftnummern die Form 0.1, 0.1.1 usw.: Das beheben Sie, indem Sie alle Überschriften eine Ebene höher schieben (also aus Abschnitten Kapitel machen) oder die Klasse ändern.
- Sie setzen Kapitel als oberste Ebene ein, nutzen aber eine Artikel-ähnliche Klasse; dann gibt LaTeX eine Fehlermeldung aus. Auch hier liegt die Lösung in der Änderung der Ebenen (aus Kapiteln Abschnitte machen) oder im Wechsel der Klasse.
Die Dokumentklassen, deren Namen mit “scr” beginnen, stammen aus dem Koma-Script-Projekt [1]. Diese sind oft besser als die LaTeX-Standardklassen vorkonfiguriert, und sie bringen zahlreiche Zusatzbefehle mit, über die Änderungen am Layout leichter möglich sind.
Für Briefe gibt es spezielle Klassen – hier ist ja keine Gliederung üblich, dafür enthalten diese Klassen vordefinierte Bereiche, in die z. B. Absender und Empfänger geschrieben werden. Die üblichen Klassen sind letter und scrlttr2 (Koma-Script); für den deutschsprachigen Raum steht außerdem die Klasse dinbrief zur Verfügung [2], und für Bewerbungen gibt es moderncv[3].
Tipp: Trennfehler korrigieren
LaTeX bringt eine automatische Silbentrennung mit, die in den meisten Fällen gute Ergebnisse liefert. “Gut” bedeutet dabei drei Dinge: Offensichtlich soll das Programm Worte an den richtigen Stellen trennen (also z. B. “Sil-be” und nicht “Si-lbe”), gleichzeitig soll das Ergebnis der Silbentrennung aber auch gut aussehen: Das Ziel ist, im ganzen Absatz ungefähr gleich große Abstände zwischen den Worten zu erzeugen. Die dritte Aufgabe ist, den Blocksatz einzuhalten.
Es gibt zwei Hauptgründe, aus denen es manchmal schief geht:
Wenn Sie ein zusammengesetztes Wort im Text verwenden, das einen Bindestrich enthält, geht LaTeX davon aus, dass nur an dieser Stelle eine Trennung möglich ist. So würde also z. B. das Wort “Internet-Gesetzgebung” im hinteren Teil nicht mehr automatisch getrennt. Das Problem können Sie schnell beheben, indem Sie an solchen Stellen statt Bindestrich ein Anführungszeichen und ein Gleich-Zeichen, also
Internet"=Gesetzgebung
schreiben. Abbildung 1 zeigt in der oberen Hälfte verschiedene Trennungen dieser Wortkombination, die LaTeX automatisch finden konnte, weil die beiden Worte mit "= gekoppelt wurden.

Abbildung 1: Die automatische Silbentrennung von LaTeX funktioniert meist gut, doch manchmal muss man ihr auf die Sprünge helfen.
LaTeX-Anfänger wählen bei Trennproblemen oft den Weg, an der gewünschten Stelle von Hand ein “-“-Zeichen einzubauen: Das führt zwar auch zum Umbruch an der gewünschten Stelle, aber wenn Sie später den Text überarbeiten und vor der Trennstelle weitere Worte einfügen, landet das manuelle Trennzeichen mitten im Text.
Die erwähnte Einhaltung des Blocksatzes misslingt manchmal, wenn LaTeX keinen “schönen” Weg findet, einen Absatz zu setzen. Dann ragt ein Wort rechts aus dem Textblock heraus, und LaTeX gibt in der Shell eine Warnung der Form
Overfull \hbox (11.46631pt too wide) in paragraph at lines 25--26
aus. (In Abbildung 1 sehen Sie unten den kaputten Blocksatz, der entsteht, weil LaTeX die Internet-Gesetzgebung – mit einfachem Bindestrich eingegeben – nicht trennen kann.) In solchen Fällen können Sie auch nachhelfen, indem Sie selbst einen Trennvorschlag machen: Fügen Sie dazu die Zeichen "- an einer Stelle ein, an der LaTeX trennen soll. Gegenüber dem einfachen “-” ohne führendes Anführungszeichen erscheint kein Bindestrich, wenn das Wort mitten in der Zeile landet.
Tipp: Nachhilfe bei der Trennung
Neben dem obigen Tipp zur Trennung können Sie LaTeX noch bei Worten auf die Sprünge helfen, die es regelmäßig falsch trennt: Dazu tragen Sie im Vorspann der LaTeX-Datei (also vor \begin{document}) einen oder mehrere \hyphenation-Befehle ein, die als Argumente Worte mit allen erlaubten Trennungen erhalten, z. B.
\hyphenation{Ea-sy-Li-nux}
\hyphenation{Li-bre-Of-fice}
Wenn Sie Worte in Groß- und Kleinschreibung verwenden (etwa Verben, die auch am Satzanfang auftauchen können), tragen Sie diese in beiden Schreibweisen separat ein, denn LaTeX achtet beim Abgleich mit den Trennregeln exakt auf die Schreibweise; das gilt auch für abgeleitete Formen (Deklination, Konjugation), also z. B.
\hyphenation{Dis-tri-bu-tion}
\hyphenation{Dis-tri-bu-tio-nen}
Wenn Sie viele LaTeX-Dokumente erstellen, wollen Sie die Trennungen nicht jedes Mal von Hand in neue Dateien kopieren. Sie können dann eine zentrale Datei trennungen.tex, etwa im Ordner tex in Ihrem Home-Verzeichnis anlegen, die nur \hyphenation-Befehle enthält. Diese binden Sie dann aus jeder Datei heraus mit
\input{/home/Username/tex/trennungen.tex}
ein. Den \input-Befehl setzen Sie in den Vorspann (an die Stelle, an der vorher die einzelnen \hyphenation-Befehle standen).
Trennungen mit \hyphenation vorzugeben, kann auch dann hilfreich sein, wenn Sie in einem deutschsprachigen Dokument englische Sätze (oder anders herum) verwenden: LaTeX versucht dann, die Worte aus der zweiten Sprache nach den Trennregeln der ersten Sprache zu zerteilen, was oft fehlschlägt. Der folgende Tipp zeigt, wie das durch geeignete Optionen des babel-Pakets besser geht.
Tipp: Mehrsprachige Texte setzen
Schreiben Sie Dokumente, die Texte in mehreren Sprachen enthalten, geben Sie beim Einbinden des babel-Pakets alle nötigen Sprachen durch Kommata getrennt ein, z. B. in der Form
\usepackage[english,french,ngerman]{babel}
Dabei ist die zuletzt genannte Sprache (hier: ngerman für die neue deutsche Rechtschreibung) die Hauptsprache im Dokument, die Datei darf dann aber auch englische und französische Abschnitte enthalten.
Um nun mit einer anderen Sprache zu arbeiten, haben Sie zwei Möglichkeiten: Der Befehl \selectlanguage schaltet vollständig auf die andere Sprache um, was dann z. B. auch die Formatierung von Kapitelüberschriften (“Chapter 2” statt “Kapitel 2”) oder Datumsangaben ändert. In Listing 1 sehen Sie den Einsatz von \selectlanguage, in jedem Block taucht der Befehl \today auf, der das aktuelle Datum in der landestypischen Form ausgibt. Abbildung 2 zeigt das Ergebnis.
Listing 1
Mehrsprachiges LaTeX
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english,french,ngerman]{babel}
\begin{document}
Das ist Deutsch: \today
\selectlanguage{english}
This is English: \today
\selectlanguage{french}
Et ça, c'est français : \today
\selectlanguage{ngerman}
Weiter geht's auf Deutsch \dots
\end{document}
Die zweite Variante nutzt den Befehl \foreignlanguage: Er nimmt zwei (wie üblich jeweils separat in {}-Paare eingeschlossene) Argumente, die Sprache und den Text in dieser Sprache, z. B.
\foreignlanguage{english}{This is an English sentence.}
Mit diesem Befehl müssen Sie nicht auf die Ursprungssprache zurück schalten: Das passiert automatisch nach der schließenden Klammer }. Auf Befehle wie \today wirkt sich \foreignlanguage nicht aus, und Kapitelwechsel sind innerhalb eines Arguments eh nicht sinnvoll.
Tipp: Falsche Ligatur vermeiden
Zeichenkombinationen wie “fl”, “ff” und “fi” fasst LaTeX automatisch zu Ligaturen zusammen, bei denen die beiden Buchstaben miteinander verbunden sind. Je nach gewählter Schriftart erhalten die Zeichen dabei auch eine leicht abweichende Form.
Nach den deutschen Textsatzregeln ist eine Ligatur nur erlaubt, wenn die Zeichen zum gleichen Wortteil gehören. Im Wort “flach” ist das für “fl” der Fall, bei “Auflage” aber nicht. (“Auflage” ist aus “auf” und “Lage” zusammengesetzt.)
Verwenden Sie das Wort “Auflage” in einem LaTeX-Dokument, entsteht eine unerwünschte Ligatur. Das vermeiden Sie, indem Sie zwischen “f” und “l” eine Markierung einfügen:
Auf"|lage
Der Trick funktioniert nur, wenn Sie das Dokument mit
\usepackage[ngerman]{babel}
auf deutsche Sprache eingestellt haben. Arbeiten Sie ohne das babel-Paket, gibt es noch die Möglichkeit, \/ zwischen den Silben einzufügen – das erzeugt allerdings einen minimal größeren Abstand zwischen den Zeichen (Abbildung 3).

Abbildung 3: Ligaturen aus zwei oder drei Buchstaben verschönern den Text, sind aber an manchen Stellen verboten. Es gibt zwei Wege, sie zu deaktivieren.
Tipp: Überschrift ohne Kapitelnummer
Manchmal wünscht man sich, in einem längeren Dokument eine Zwischenüberschrift einzufügen, die wie eine normale Kapitel- oder Abschnittsüberschrift aussehen, aber keine Kapitelnummer erhalten soll. Zu genau diesem Zweck lassen sich alle Gliederungsbefehle mit einem Sternchen versehen – aus
\chapter{Kapitelname}
wird dann etwa
\chapter*{Kapitelname}
und entsprechend gibt es \section*, \subsection*, \subsubsection*, \paragraph* und \subparagraph*.
In Abbildung 4 sehen Sie ein Beispiel mit mehreren Abschnitten (\section) und Unterabschnitten (\subsection), wobei es zudem zwei Zwischenüberschriften (einmal mit \section* und einmal mit \subsection*) gibt.

Abbildung 4: Kapitel- oder Abschnittsüberschriften gibt es auch in einer Variante ohne Nummerierung.
Auch im Inhaltsverzeichnis tauchen die Zwischenüberschriften mit Sternchen nicht auf. Wollen Sie diese doch im Inhalt sehen, fügen Sie nach der Zwischenüberschrift einen Befehl der Form
\addcontentsline{toc}{section}{Überschrift}
ein – dabei ist section durch die passende Kategorie (also z. B. chapter oder subsection) zu ersetzen. Der erste Parameter toc sorgt für die Eintragung im Inhaltsverzeichnis (toc: table of contents); das Kommando kann man auch für Eintragungen in andere Verzeichnisse, etwa das Abbildungs- oder Tabellenverzeichnis (lof: list of figures; lot: list of tables) verwenden. Abbildung 5 zeigt das veränderte Inhaltsverzeichnis mit nicht nummerierten Zwischenüberschriften.

Abbildung 5: Die nicht nummerierten Überschriften können Sie manuell ins Inhaltsverzeichnis aufnehmen.
Übrigens: Das Zwei-Spalten-Layout erhalten Sie über die Option twocolumn, die Sie bei der Definition der Dokumentklasse (hier: article) angeben, der nötige Befehl in der ersten Zeile des Dokuments lautet dann
\documentclass[twocolumn]{article}
Tipp: Filialdokumente mit “\include”
Wer LibreOffice Writer oder Word für große Dokumente nutzt, kennt vielleicht das Konzept der Teildokumente bzw. Filialdokumente: Man erstellt mehrere separate Textdateien, etwa für verschiedene Kapitel, und kann trotzdem am Ende ein Gesamtinhaltsverzeichnis, einen Index usw. erzeugen und das Dokument komplett drucken oder in eine PDF-Datei exportieren. Der Vorteil ist, dass man nicht immer das Gesamtdokument vollständig im Speicher halten muss, wodurch die Textverarbeitung schneller arbeitet.
Auch mit LaTeX ist das möglich. Am sinnvollsten ist es dabei, die Kapitelstruktur des Dokuments in eine Aufteilung auf einzelne Dateien umzusetzen: Je nach Dokumentart ist chapter oder section die oberste Gliederungsebene. Als Hauptdokument verwenden Sie eine Datei, deren Aufbau dem in Listing 2 ähnelt.
Listing 2
Hauptdokument
\documentclass{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
% \includeonly{chap2} % nur Kapitel 2
\begin{document}
\tableofcontents % Inhaltsverzeichnis
\include{chap1} % Kapitel 1
\include{chap2} % Kapitel 2
\include{chap3} % Kapitel 3
\end{document}
Über die \include-Befehle binden Sie dann die Teildokumente ein, im Beispiel wären das chap1.tex bis chap3.tex; die Dateiendung .tex können Sie im Befehl weg lassen.
Beim normalen LaTeX-Lauf schaut sich das Programm auch nach der Aufteilung alle Dokumentteile an und generiert eine vollständige PDF-Datei – das kann gerade bei sehr großen Dokumenten (und auf langsamen PCs) störend sein. LaTeX bietet mit dem Befehl \includeonly die Möglichkeit, nur den Teil neu zu übersetzen, an dem Sie gerade arbeiten. Listing 2 zeigt in der auskommentierten Zeile bereits, wie das aussehen kann – statt einer lassen sich auch mehrere Dateien angeben, dazu führen Sie alle Namen einfach durch Kommata getrennt auf, z. B.
\includeonly{chap2,chap3}
wenn Sie parallel an den Kapiteln 2 und 3 arbeiten, das schon fertige Kapitel 1 aber nicht jedes Mal mit übersetzen möchten.
Es entsteht dann beim LaTeX-Lauf nur noch eine PDF-Datei mit dem ausgewählten Kapitel; Komponenten wie Inhaltsverzeichnis oder Index (wenn die Befehle dafür im Hauptdokument stehen) enthalten dabei aber weiter Hinweise auf die übrigen Kapitel. Sogar Querverweise auf fremde Kapitel bleiben im Text stehen (sind aber nicht mehr anklickbar, weil die anderen Textteile in der PDF-Datei fehlen).
Um sich zwischendurch einen Gesamtüberblick zu verschaffen, können Sie einfach kurz den \includeonly-Befehl auskommentieren, indem Sie der Zeile (wie in Listing 2) ein Prozentzeichen voranstellen: Dann baut LaTeX beim nächsten Lauf wieder das komplette Dokument.
Ein Vorteil der Aufteilung in mehrere Teildokumente ist übrigens, dass Sie LaTeX-Projekte auf diese Weise gut mit einer Versionsverwaltung pflegen können (siehe folgender Tipp).
Tipp: LaTeX und Versionsverwaltung
Versionsverwaltungen werden meist für die Archivierung von Programm-Quellcode (etwa von C- oder C++-Programmen) verwendet, bei Textdokumenten im LibreOffice- (oder bei Windows im Word-Format) sind sie weniger hilfreich, weil sie die Unterschiede zwischen zwei Versionen derselben Datei nicht erkennen. Ganz anders ist dies bei LaTeX: Hier wird ja – wie bei Programmiersprachen – mit Quellcode-Dateien gearbeitet, und damit bietet sich für Projekte in LaTeX die Verwaltung der Dateien mit einem Tool wie Mercurial [4,5] oder Git [6,7] an.
Ohne hier im Detail auf die Bedienung einer Versionsverwaltung einzugehen, können Sie Quellcode-Dateien eines LaTeX-Projekts (Texte mit Endungen .tex, Bibliotheken mit Endung .bib sowie Bilder) unter die Kontrolle eines solchen Tools stellen und dann jeweils nach größeren Änderungen eine Commit-Operation ausführen. So haben Sie dann nicht nur ein Backup Ihres LaTeX-Projekts, sondern können bei Bedarf auch ältere Fassungen anzeigen oder sich die Unterschiede zwischen zwei Versionen auflisten lassen.
Ein weiterer Tipp in diesem Zusammenhang ist, in LaTeX-Quelldateien keine überlangen Zeilen einzugeben: Absätze können Sie prinzipiell als eine lange Zeile (ohne Zeilenumbruch) erfassen, das erschwert aber den Vergleich solcher Absätze in zwei Dateiversionen. Es ist besser, nur ca. 80 Zeichen breit zu schreiben und dann jeweils von Hand (mit [Eingabe]) in eine neue Zeile zu wechseln – für die erzeugte PDF-Datei ist es irrelevant, wie viele manuelle Zeilenumbrüche Sie einfügen, denn ein Absatzwechsel wird in LaTeX durch (mindestens) eine Leerzeile angegeben.
Tipp: Ältere LaTeX-Dateien konvertieren
Möchten Sie ältere LaTeX-Dateien verwenden, die Sie im Internet gefunden oder vor vielen Jahren selbst unter Windows oder Linux erstellt haben? Dann liegen diese nicht in UTF-8-Kodierung (Unicode), sondern im älteren Latin- oder Windows-Textformat vor. Beim Öffnen im Editor sehen Sie dann falsche Darstellungen der Umlaute (sofern der Editor die alte Kodierung nicht erkennt).
Mit dem Programm recode können Sie die Kodierung auf UTF-8 umstellen. Ältere .tex-Dateien von Linux-Systemen liegen meist in der Kodierung ISO 8859-15 (Latin-9) vor und lassen sich mit dem Befehl
recode latin9..utf8 dateiname.tex
ins UTF-8-Format bringen. Für Windows-Dateien können Sie es mit der Kodierung Windows Codepage 1252 versuchen und das Kommando
recode cp1252..utf8 dateiname.tex
verwenden. Wenn das Ergebnis unbrauchbar ist, machen Sie die Konvertierung rückgängig, indem Sie das recode-Kommando erneut aufrufen, dabei aber alte und neue Kodierung vertauschen (utf8..latin9 bzw. utf8..cp1252). Wirft recode eine Fehlermeldung der Form
recode: Ungültige Eingabe in step [...]
aus, enthält die Datei Zeichen, die sich in der Zielkodierung nicht darstellen lassen (und recode bricht die Umwandlung ab, damit keine Inhalte verloren gehen). Das kann bei der Rekodierung alter Dateien nach UTF-8 aber nicht passieren: Sie haben dann vermutlich die Reihenfolge der Kodierungen im recode-Aufruf vertauscht. (Ein Beispiel, bei dem recode scheitern muss, wäre etwa der Versuch, eine UTF-8-Datei mit einem griechischen kleinen Delta nach Latin-9 zu kodieren: Das Zeichen gibt es in Latin-9 nicht.)
Infos
[1] Koma-Script: http://www.komascript.de/
[2] Artikel zu Briefen in LaTeX: Daniel Tibi, “Blattwerk”, LU 02/2008, S. 54 ff., https://www.linux-community.de/14725
[3] Artikel zu Bewerbungen in LaTeX: Daniel Tibi, “Chefsache”, LinuxUser 09/2012, S. 46 ff., http://linux-community.de/26386
[4] Mercurial: https://www.mercurial-scm.org/
[5] Artikel zur Versionsverwaltung mit Mercurial: Hans-Georg Eßer, “Vorher und nachher”, EasyLinux 01/2015, S. 117 ff., http://linux-community.de/32576
[6] Git: https://git-scm.com/
[7] Artikel zu Git: Falko Benthin, “Verteilt verwalten”, LinuxUser 11/2012, S. 32 ff., http://linux-community.de/27185


