LaTeX Häufige Pakete und Tipps

Die vorherigen Kapitel haben bereits einige Pakete verwendet; dieser Artikel fasst systematisch zusammen: Paket-Schnellreferenz, benutzerdefinierte Befehle, Codesatz, Multi-File-Projekte, latexmk und Techniken zur Fehlerbehebung.

Beherrschen Sie diese "Toolbox"-Themen, und Sie werden sich vom LaTeX-Schreiben zum Verwalten von LaTeX-Projekten weiterentwickeln.


Schnellreferenz für gängige Pakete

Laden Sie Pakete mit \usepackage[options]{package-name}, alle in der Präambel platziert.

PaketZweckErscheint in dieser Serie
geometrySeitenränder und PapierLaTeX Dokumentstruktur und Satz
fancyhdrKopf- und FußzeilenLaTeX Dokumentstruktur und Satz
amsmath / amssymbMathe-Formel-Erweiterung / erweiterte SymboleLaTeX Mathe-Formeln Grundlagen、Fortgeschrittene LaTeX Mathe-Formeln
graphicxAbbildungenLaTeX Abbildungen und Tabellen
booktabs / multirowBooktabs / vertikal verbundene ZellenLaTeX Abbildungen und Tabellen
enumitemAnpassen von ListenLaTeX Textformatierung und Listen
xcolorFarbdefinitionIn diesem Kapitel eingeführt
listingsCode-SatzIn diesem Kapitel eingeführt
hyperHyperlinks und LesezeichenLaTeX-Querverweise und Literaturverwaltung
biblatexLiteraturverweise (moderner Ansatz)LaTeX-Querverweise und Literaturverwaltung
floatErzwungene Platzierung von Abbildungen und Tabellen [H]LaTeX Abbildungen und Tabellen

Wenn die lokale Umgebung die Meldung ausgibt, dass die Datei 'xxx.sty' nicht gefunden wurde, verwenden Sie tlmk install xxx zum Installieren (TeX Live); MiKTeX lädt automatisch herunter. Overleaf enthält fast alle Pakete, daher gibt es dieses Problem nicht.


Benutzerdefinierte Befehle: \newcommand

Wenn du denselben Inhalt mehr als dreimal geschrieben hast, ist es an der Zeit, einen Befehl zu definieren. \newcommand{\command-name}[number-of-parameters]{definition}.

{...}$ ergibt x_1, … , x_5

% Kein Parameter: einen langen Befehl verkürzen
\newcommand{\R}{\mathbb{R}}            % Ab jetzt ergibt das Schreiben von $\R$ $\mathbb{R}$

% Ein Parameter: ein festes Format umschließen
\newcommand{\email}[1]{\texttt{#1}}   % #1 steht für den ersten Parameter

% Optionaler Parameter mit Standardwert: [Anzahl der Parameter][Standardwert]
\newcommand{\vecn}[2][n]{x_1, \dots, x_#1}
% Verwendung: $\vecn{...}$ ergibt x_1, … , x_n
% $\vecn

\begin{document}
definiert auf$\R$Funktion auf, Vektor$\vecn$und$\vecn[5]$,
Kontakt-E-Mail\E-Mail{[email protected]}。
\end{document
}
BefehlZweckHinweis
\newcommandNeuen Befehl definierenDer Befehlsname darf nicht mit vorhandenen Befehlen in Konflikt stehen
\renewcommandBestehenden Befehl neu definierenVerwenden, wenn Standardstile geändert werden; Vorsicht bei grundlegenden Befehlen
\newenvironmentNeue Umgebung definierenSyntax wie oben; Start- und Endcode angeben

Lernen wir auch die Syntax für benutzerdefinierte Umgebungen:

Beispiel: Benutzerdefinierte "Note"-Umgebung

\newenvironment{note}                 % Umgebungsname
  {\par\medskip\noindent\textbf{Note:}\itshape}  % Code beginnen
  {\par\medskip}                      % Code beenden

\begin{note}
Der Inhalt hier beginnt automatisch mit "Note:" und wird kursiv gesetzt.
\end{note
}

Code-Satz: listings-Paket

Um Code in technische Dokumente einzubinden, verwenden Sie das listings-Paket; Syntaxhervorhebung, Zeilennummern und Rahmen sind automatisch.

Beispiel: Codeblock mit Hervorhebung und Zeilennummern

\documentclass{ctexart}
\usepackage{listings
}             % Paket zur Codeformatierung
\usepackage{xcolor}               % Farbunterstützung

\lstset{                          % Globale Einstellungen für den Code-Stil
  basicstyle=\ttfamily\small,     % Monospace-Schrift, etwas kleinere Schriftgröße
  keywordstyle=\color{blue},      % Schlüsselwörter in Blau
  commentstyle=\color{gray},      % Kommentare in Grau
  stringstyle=\color{purple},     % Zeichenketten in Violett
  numbers=left,                   % Zeilennummern links
  numberstyle=\tiny\color{gray},
  showstringspaces=false,         % Leerzeichenmarkierungen in Zeichenketten nicht anzeigen
  frame=single                    % Einfacher Linienrahmen
}

\begin{document}

\begin{lstlisting}[language=Python, caption=Berechnung der Fibonacci-Folge]
# Berechne die n-te Fibonacci-Zahl (Test für chinesische Kommentare)
def fib(n):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)

print(fib(10)) # Ausgabe 55
\end{lstlisting}

\end{document
}

listings 代码块的编译效果

lstlisting ist eine "Verbatim-Umgebung": Ihr Inhalt wird von LaTeX überhaupt nicht interpretiert, und & und % müssen nicht maskiert werden. Die Beschriftung wird ebenfalls automatisch nummeriert (Listing 1). Zu den gängigen Sprachnamen gehören Python, C, Java, HTML, SQL, bash usw. Wenn keine Sprache angegeben ist, wird der Inhalt als reiner Text eingefärbt.

Die Unterstützung von listings für chinesische UTF-8-Zeichen hängt vom Compiler ab: Chinesische Kommentare funktionieren unter XeLaTeX normal; bei Legacy-Engines (latex/pdfLaTeX) werden sie verstümmelt. Für chinesische Dokumente immer mit XeLaTeX kompilieren.


Mehrdatei-Projekte: \input und \include

Wenn ein Dokument einige hundert Zeilen überschreitet, sollte es in Dateien aufgeteilt werden – main.tex fungiert nur als Gerüst, und der Inhalt wird nach dem Prinzip Teile und herrsche aufgeteilt.

Beispiel: main.tex-Gerüst

\documentclass{ctexart}
\usepackage{amsmath, graphicx, booktabs, hyperref}

\begin{document}

\input{chapters/intro
}      % Einleitung (Dateiname ohne .tex)
\input{chapters/method}     % Methoden
\input{chapters/experiment} % Experimente
\input{chapters/conclusion} % Schlussfolgerungen

\bibliographystyle{plain}
\bibliography{refs}

\end{document
}

Die beiden Befehle sehen ähnlich aus, aber ihre Verhaltensweisen sind klar getrennt.

Vergleichspunkt\input{file}\include{file}
Kann verschachtelt werden?Ja (weiteres \input in Unterdateien)No
Erzwingt einen Seitenumbruch?Kein SeitenumbruchErzwingt \clearpage vor jeder Datei
Funktioniert mit \includeonlyNicht unterstütztUnterstützt; nur angegebene Kapitel kompilieren (ein großartiges Beschleunigungswerkzeug)
Anwendbare GranularitätJedes Segment (Makrodefinitionen, Abbildungen/Tabellen, Deckblätter)Große Inhaltsblöcke auf Kapitel-Ebene

Häufige Fehlerquelle: \include erzwingt einen Seitenumbruch. Wird es verwendet, um "mehrere Abschnitte auf derselben Seite" zusammenzustellen, verursacht es unerwartete Seitenumbrüche – verwenden Sie \input für kleine Fragmente.


latexmk: Ein-Klick-Kompilierung

Die Vier-Pass-Kompilierungspipeline aus Kapitel 9 ist mühsam manuell als vier Befehle einzutippen; latexmk erledigt das vollständig automatisch.

$ latexmk -xelatex main.tex     # XeLaTeX 引擎编译,自动跑满所有遍数
$ latexmk -xelatex -c main.tex  # 清理中间文件(保留 PDF)
$ latexmk -xelatex -C main.tex  # 连 PDF 一起清理

latexmk entscheidet automatisch: Wenn eine .bib-Datei vorhanden ist, führt es bibtex aus; wenn sich Querverweise ändern, kompiliert es mehrmals erneut, bis alle Nummern stabil sind. Den "Build-Befehl" in Ihrem Editor als latexmk zu konfigurieren, ist die beste Vorgehensweise für eine lokale Umgebung.


Techniken zur Fehlerbehebung

LaTeX-Fehlermeldungen beginnen mit einem Ausrufezeichen und enthalten eine Zeilennummer in einem festen Format. Es genügt, die ersten paar Zeilen zu verstehen.

! Undefined control sequence.
l.42 \secton{方法}

l.42 gibt die Fehlerzeile an – in diesem Beispiel wurde in Zeile 42 \section als \secton falsch geschrieben. Korrigieren Sie diese eine Stelle, und eine Kette nachfolgender Fehler verschwindet oft zusammen.

FehlermeldungBedeutungBehandlung
Nicht definierte SteuersequenzBefehl existiert nicht: Rechtschreibfehler oder fehlendes PaketPrüfen Sie die Schreibweise anhand der Zeilennummer; vergewissern Sie sich, dass das Paket geladen ist
Fehlendes $ eingefügtMathematikbefehl erscheint im TextmodusSetzen Sie _ ^ \alpha usw. in $
Datei 'xxx' nicht gefundenDatei oder Paket nicht gefundenPrüfe den Pfad; tlmgr install xxx
Entlaufenes ArgumentUmgebung nicht geschlossen (\end fehlt)Füge \end{...} gemäß der Zeilennummer hinzu
LaTeX-Fehler: Umgebung xxx nicht definiertEine nicht definierte Umgebung verwendetPrüfe die Schreibweise der Umgebung und das Paket
! NotstoppKompilierung vollständig abgebrochenIm Log nach oben scrollen, um den ersten Fehler zu finden
Referenz nicht definiert (Warnung)Die Referenz zeigt ??Noch einmal kompilieren

Behebe immer nur den ersten Fehler im Protokoll — die späteren Fehler sind meist Folgefehler des ersten. Nach der Korrektur erneut kompilieren; das ist viel zuverlässiger, als zehn Stellen auf einmal zu ändern.


Zusammenfassung

BenötigtLösung
Wiederholte Eingabe reduzieren\newcommand definiert Befehle und Umgebungen
Code einfügenlistings + \lstset globaler Stil
Aufteilen großer Dokumente\input (Fragment) / \include (Kapitel-Ebene)
Kompilierung mit einem Klicklatexmk -xelatex
DebuggingDie Zeilennummer des ersten !-Fehlers im Protokoll lesen
Weitere Erweiterungen