Wiederholten LaTeX-Code mit Befehlen, Umgebungen und Eingabedateien reduzieren
Reduzieren Sie wiederholtes LaTeX auf drei Wegen: Befehle für gleiche Formatierungen, Umgebungen für gleiche Strukturen und \input für gemeinsame Dateien. Beginnen Sie mit Material, das wirklich identisch ist und voraussichtlich gemeinsam geändert wird. Nicht jede Wiederholung braucht eine Abstraktion.
Wiederkehrende Formatierung: einen Befehl definieren
Dieses vollständige Beispiel definiert \vect, \code und \R einmal und verwendet sie wieder:
\documentclass[11pt]{article}\usepackage[T1]{fontenc}\usepackage{lmodern}\usepackage[ngerman]{babel}\usepackage{amsmath,amssymb}\newcommand{\vect}[1]{\boldsymbol{#1}}\newcommand{\code}[1]{\texttt{#1}}\newcommand{\R}{\mathbb{R}}\begin{document}Öffnen Sie für $\vect{x}\in\R^d$ die Datei \code{main.tex}.\end{document}Definitionen in der Präambel sind im ganzen Haupttext verfügbar. Eine Definition im Haupttext gilt erst nach ihrer Ausführung und innerhalb ihres Geltungsbereichs. Eine Namenskollision kann Command \R already defined. auslösen. Benennen Sie den Befehl um, verwenden Sie für eine beabsichtigte Neudefinition \renewcommand oder für eine passende Ersatzdefinition \providecommand.
\newcommand unterstützt bis zu neun Parameter. Schon vier oder fünf können Aufrufe ohne Nachschlagen der Definition schwer lesbar machen.
Wiederkehrende Strukturen: eine Umgebung definieren
Tabellen mit derselben Struktur können eine Umgebung teilen. Hier erhält resulttable eine Spaltendefinition und eine Kopfzeile:
\documentclass[11pt]{article}\usepackage[T1]{fontenc}\usepackage{lmodern}\usepackage[ngerman]{babel}\usepackage{booktabs}\newenvironment{resulttable}[2]{% \begin{table}[htbp]\centering \begin{tabular}{#1}\toprule #2\\\midrule}{% \bottomrule\end{tabular} \end{table}}\begin{document}\begin{resulttable}{lcc}{Modell & Genauigkeit & F1}Referenzmodell & 0.812 & 0.794 \\Unser Modell & 0.867 & 0.851 \\\end{resulttable}\end{document}Jede Tabelle liefert Datenzeilen; die Umgebung liefert Linien, Spalten und Gleitobjektplatzierung. Fehler in einer Definition können erst bei deren Expansion oder Verwendung gemeldet werden. Testen Sie die Definition mit einem minimalen Aufruf, um die Ursache einzugrenzen.
Gemeinsame Definitionen: in eine Datei verschieben
Nutzen Sie \input, statt dieselbe Präambel in mehrere Dateien zu kopieren.
preamble.tex:
\usepackage{amsmath,amssymb}\newcommand{\vect}[1]{\boldsymbol{#1}}main.tex:
\documentclass{article}\input{preamble}\begin{document}$\vect{x}$\end{document}Hier liegt main.tex im Projektstamm. Eingabepfade werden relativ zum Arbeitsverzeichnis der Kompilierung aufgelöst, nicht zum Kapitel mit dem \input-Befehl. Verwenden Sie aus chapters/intro.tex beim Kompilieren vom Stamm aus \input{chapters/intro2} für die benachbarte Datei.
\include eignet sich für eigenständige Kapitel: Es fügt Seitenumbrüche ein und erzeugt separate Hilfsdateien. \includeonly kann Vorschauen begrenzen; Verweise auf ausgelassene Kapitel hängen aber von Hilfsinformationen ab. Kompilieren Sie zur Abschlussprüfung immer das gesamte Projekt. \include kann nicht verschachtelt werden.
Lohnt sich eine Abstraktion?
Achten Sie auf drei Bedingungen: mehrfach wiederholt, tatsächlich identisch statt nur ähnlich und wahrscheinlich gemeinsam zu überarbeiten. Das sind praktische Hinweise, keine strenge Zahlenregel.
Eine nur zweimal benutzte Abstraktion kann unnötige Dateisprünge verursachen. Leicht unterschiedliche Passagen können so viele Schalter benötigen, dass der Aufruf schwerer lesbar ist als das Original.
Kompilieren und kritische Punkte prüfen
Prüfen Sie, ob Definitionen vor dem Haupttext geladen werden, Pfade zum stammbezogenen Aufbau passen und Gleichungen, Tabellen und Verweise weiterhin auf die gewünschten Objekte zeigen.
| Fehler | Ursache | Maßnahme |
|---|---|---|
Command \foo already defined. | Name existiert bereits | Umbenennen oder gezielt neu definieren |
Environment foo undefined. | Definition steht zu spät oder wurde nicht geladen | In die Präambel verschieben und \input prüfen |
File 'chapters/intro2.tex' not found. | Pfad relativ zum Kapitel statt zur Kompilierungswurzel | Projektbezogenen Pfad korrigieren |
| Protokollfundstelle passt nicht zur scheinbaren Quellstelle | Fehler entsteht bei Makro-/Umgebungsexpansion | Nur Definition und Minimalaufruf testen |
Das Wichtigste
- Wiederkehrende Formatierung gehört in Befehle, wiederkehrende Struktur in Umgebungen.
- Gemeinsame Definitionen gehören in Eingabedateien, Kapitelgrenzen in die Hauptdatei.
- Abstrahieren Sie nur, wenn Lesbarkeit und Wartung profitieren.
Importieren Sie das vollständige Verzeichnis in EasyLaTeX und wählen Sie main.tex als Kompilierungseinstieg.