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.
| Paket | Zweck | Erscheint in dieser Serie |
|---|---|---|
| geometry | Seitenränder und Papier | LaTeX Dokumentstruktur und Satz |
| fancyhdr | Kopf- und Fußzeilen | LaTeX Dokumentstruktur und Satz |
| amsmath / amssymb | Mathe-Formel-Erweiterung / erweiterte Symbole | LaTeX Mathe-Formeln Grundlagen、Fortgeschrittene LaTeX Mathe-Formeln |
| graphicx | Abbildungen | LaTeX Abbildungen und Tabellen |
| booktabs / multirow | Booktabs / vertikal verbundene Zellen | LaTeX Abbildungen und Tabellen |
| enumitem | Anpassen von Listen | LaTeX Textformatierung und Listen |
| xcolor | Farbdefinition | In diesem Kapitel eingeführt |
| listings | Code-Satz | In diesem Kapitel eingeführt |
| hyper | Hyperlinks und Lesezeichen | LaTeX-Querverweise und Literaturverwaltung |
| biblatex | Literaturverweise (moderner Ansatz) | LaTeX-Querverweise und Literaturverwaltung |
| float | Erzwungene 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
\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}
| Befehl | Zweck | Hinweis |
|---|---|---|
| \newcommand | Neuen Befehl definieren | Der Befehlsname darf nicht mit vorhandenen Befehlen in Konflikt stehen |
| \renewcommand | Bestehenden Befehl neu definieren | Verwenden, wenn Standardstile geändert werden; Vorsicht bei grundlegenden Befehlen |
| \newenvironment | Neue Umgebung definieren | Syntax wie oben; Start- und Endcode angeben |
Lernen wir auch die Syntax für benutzerdefinierte Umgebungen:
Beispiel: Benutzerdefinierte "Note"-Umgebung
{\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
\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}

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
\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 Seitenumbruch | Erzwingt \clearpage vor jeder Datei |
| Funktioniert mit \includeonly | Nicht unterstützt | Unterstützt; nur angegebene Kapitel kompilieren (ein großartiges Beschleunigungswerkzeug) |
| Anwendbare Granularität | Jedes 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.
| Fehlermeldung | Bedeutung | Behandlung |
|---|---|---|
| Nicht definierte Steuersequenz | Befehl existiert nicht: Rechtschreibfehler oder fehlendes Paket | Prüfen Sie die Schreibweise anhand der Zeilennummer; vergewissern Sie sich, dass das Paket geladen ist |
| Fehlendes $ eingefügt | Mathematikbefehl erscheint im Textmodus | Setzen Sie _ ^ \alpha usw. in $ |
| Datei 'xxx' nicht gefunden | Datei oder Paket nicht gefunden | Prüfe den Pfad; tlmgr install xxx |
| Entlaufenes Argument | Umgebung nicht geschlossen (\end fehlt) | Füge \end{...} gemäß der Zeilennummer hinzu |
| LaTeX-Fehler: Umgebung xxx nicht definiert | Eine nicht definierte Umgebung verwendet | Prüfe die Schreibweise der Umgebung und das Paket |
| ! Notstopp | Kompilierung vollständig abgebrochen | Im 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ötigt | Lösung |
|---|---|
| Wiederholte Eingabe reduzieren | \newcommand definiert Befehle und Umgebungen |
| Code einfügen | listings + \lstset globaler Stil |
| Aufteilen großer Dokumente | \input (Fragment) / \include (Kapitel-Ebene) |
| Kompilierung mit einem Klick | latexmk -xelatex |
| Debugging | Die Zeilennummer des ersten !-Fehlers im Protokoll lesen |