\begin{equation} \vec x = \left( \begin{array} x_1\\ x_2\\ \end{array} \right) \end{equation}
Inhaltsverzeichnis
LaTeX
Mathematik-Umgebungen
Code | Bemerkung | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
\begin{equation} x^2 = 1 \end{equation} |
|
||||||||||||||
\begin{align} x^2 &= 1\\ y^2 &= 2 \end{align} |
|
||||||||||||||
\begin{equation} \begin{split} a =&{} b + c + d\\ & + e + f + g \end{split} \end{equation} |
|
||||||||||||||
\begin{equation} \begin{aligned} x^2 &= 1\\ y^2 &= 2 \end{aligned} \end{equation} |
|
||||||||||||||
\begin{equation} f(x) = \begin{cases} 2x^{2} & \text{für} x > 4 \\ 2x^{3} + 4^{2} & \text{für } x < 4 \\ \end{cases} \end{equation} |
|
||||||||||||||
\begin{equation} \begin{rcases} 2x^{2} & \text{für} x > 4 \\ 2x^{3} + 4^{2} & \text{für } x < 4 \\ \end{rcases} = f(x) \end{equation} |
|
||||||||||||||
\begin{equation} \vec x = \begin{pmatrix} x_1\\ x_2\\ \end{pmatrix} \end{equation} |
Varianten:
|
Eigene Operatoren oder Funktionen definieren
Braucht man eigene Operatoren oder Funktionsnamen aus mehreren Zeichen, z.B. $lnexp()$, kann man einen Operator mit \DeclareMathOperator in der Präambel deklarieren. Damit wird der Name normal und nicht kursiv wie Variablen dargestellt. Ein Vorteil von \DeclareMathOperator ist außerdem, dass auch die Abstände vor und hinter dem Operator sinnvoll gesetzt werden.
\DeclareMathOperator{\befehl}{Name_mit_mehreren_Zeichen} \DeclareMathOperator{\lnexp}{lnexp}
4. Gliederungsebene oder ''\subsubsubsection''
Eine 4. oder 5. Gliederungsebene lässt sich durch \paragraph
oder \subparagraph
erzeugen.
Die Befehle \subsubsubsection
bzw. \subsubsubsubsection
existieren nicht.
Bilder über zwei Spalten
In zweispaltigen Texten können Bilder über beide Spalten dargestellt werden, in dem man figure* statt figure verwendet. Die Option h kann dabei nicht verwendet werden, da das Bild nur oberhalb oder unterhalb der Spalten eingefügt werden kann.
\begin{figure*}[tb] \includegraphics{file.eps} \end{figure*}
Metadaten im PDF
Benutzt man den Flow dvi→ps→pdf und bindet in sein Dokument eps-Grafiken ein, die mit dem epslatex-Terminal von Gnuplot erzeugt wurden, werden die per hyperref oder pdfmark gesetzten Metadaten für das PDF überschrieben, da die Grafiken selbst entsprechende Anweisungen enthalten. Als Abhilfe kann das pdfmark Kommando nach dem ersten Setzen umdefiniert werden:
\special{! /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse [ /Author (Norbert Niemand) /Title (Sinnvolle Sinnleere im Spannungsfeld der Wirtschaftkrise) /Keywords (Stichwort1, Stichwort2) /DOCINFO pdfmark userdict /pdfmark /cleartomark load put }
Umlaute oder andere spezielle Zeichen in PDF-Bookmarks
Um Nicht-ASCII-Zeichen in PDF-Bookmarks verwenden zu können muss das hyperref-Paket mit der Option unicode geladen werden:
\usepackage[unicode]{hyperref}
Damit lassen sich Evince-Fehlermeldungen wie
Entity: line 12: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE4 0x72 0x67 0x65
vermeiden.
Verhalten bei Zeilenumbrüchen
Um das Umbruchverhalten von LaTex etwas lockerer zu machen, soll kein \sloppy mehr verwendet werden (siehe LaTex-Sündenregister). Empfohlen wird sowas:
\tolerance 1414 \hbadness 1414 \emergencystretch 1.5em \hfuzz 0.3pt \widowpenalty=10000 \vfuzz \hfuzz \raggedbottom
Verwendet man pdflatex, kann man auch das Paket microtype verwenden:
\usepackage{microtype}
Einige Features können auch mit dem DVI-Output von pdftex verwendet werden (siehe Tabelle 1 der Doku).
Silbentrennung und Umbruch
Es gibt zwei Möglichkeiten Trennungen und Umbrüche zu definieren, lokal für ein einzelnes Wort und global für das gesamte Dokument.
Lokale Trennungsregel
Befehl | Bedeutung |
---|---|
\-
| Trennung nur an der angegebenen Stelle |
\mbox{Texttrennung} | Keine Trennung erlauben |
~ | Leerzeichen, an dem keine Umbruch erfolgen soll (geschütztes Leerzeichen) |
\,
| halbes Leerzeichen, an dem keine Umbruch erfolgen soll (halbes geschütztes Leerzeichen, z.B. bei Abkürzungen) |
"- | Zusätzliche Trennstelle |
"= | Bindestrich, der sonstige Trennstellen weiterhin erlaubt |
"" | ermöglicht Umbruch ohne Bindestrich (z.B. wenn bereits einer verhanden ist) |
"~ | Bindestrich, an dem nicht getrennt werden soll |
Die letzten vier Befehle benötigen die Pakete ngerman bzw. german
Globale Trennungsregel
\hyphenation{Text-tren-nung Test-string}
Die einzelnen Wörter müssen durch Leerzeichnen getrennt werden. Werden Kommas verwendet, erhält man den Fehler Not a letter.
Optionen für ps2pdf
alle Fonts als Subset einbetten, Bilder nicht komprimieren
ps2pdf -dPDFSETTINGS=/prepress -dSubsetFonts=true -dEmbedAllFonts=true -dAutoFilterColorImages=false -dAutoFilterGrayImages=false -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode -dMonoImageFilter=/FlateEncode
Bilder nebeneinander platzieren
Mit dem Paket subcaption lassen sich Bilder oder andere Floats nebeneinander platzieren. Die Pakete subfig und subfloat sollten nicht mehr verwendet werden.
\begin{figure} \begin{subfigure}[b]{0.3\textwidth} \includegraphics{image1} \caption{Image 1} \end{subfigure}% \begin{subfigure}[b]{0.3\textwidth} \includegraphics{image2} \caption{Image 2} \end{subfigure} \end{figure}
Abstände zwischen Subfigures
Um die Abstände zwischen zwei Subfigures um eine Länge zu vergrößern, kann ein \hspace eingefügt werden:
\begin{figure} \begin{subfigure}[b]{0.3\textwidth} \includegraphics{image1} \caption{Image 1} \end{subfigure}% \hspace{1em} \begin{subfigure}[b]{0.3\textwidth} \includegraphics{image2} \caption{Image 2} \end{subfigure} \end{figure}
Horizontale Ausrichtung unterschiedlich hoher Subfloats
Damit die Bildunterschriften auch von unterschiedlichen hohen Subfloats gleich ausgerichtet sind, kann man diese Lösung mit \savebox
verwenden.
Die vertikale Ausrichtung des kleineren Floats wird bestimmt, indem \vfill
vor oder nach \includegraphics
geschrieben wird (oder an beide Stellen zur Zentrierung).
\documentclass{article} \usepackage{graphicx} \usepackage{subcaption} \newsavebox\mybox \begin{document} \begin{figure} \savebox{\mybox}{\includegraphics[width=3cm,height=4cm]{example-image-a}} \begin{subfigure}{0.45\textwidth} \centering \usebox{\mybox} \caption{Caption 1} \end{subfigure} \begin{subfigure}{0.45\textwidth} \centering \vbox to \ht\mybox{% \includegraphics[width=3cm,height=2cm]{example-image-b} \vfill } \caption{Caption 2} \end{subfigure} \caption{Main caption} \end{figure} \end{document}
Quelle minipage durch subfigure Umgebung ersetzt
Alle Floats zentrieren
Standardmäßig werden alle Floats (Figure, Table, usw.) linkbündig gesetzt. Um nicht in jeder Float-Umgebung \centering
schreiben zu müssen, kann man mit
\usepackage{floatrow}
das Paket floatrow laden. Damit werden standardmäßig alle Floats zentriert, andere Ausrichtungen sind über die Paketoptionen möglich.
Dies wirkt nicht auf Subfloats, die mit dem subcaption
-Paket erstellt wurden.
Eine Möglichkeit zu ihrer Zentrierung ist:
\usepackage{xpatch} \makeatletter % \subcaption@minipage is the last macro call in \subfigure (and \begin{subfigure}) \xapptocmd{\subcaption@minipage}{\centering}{}{} \makeatother
Diese und eine andere (aufwändigere) Lösung ausschließlich mit dem Paket floatrow
wird hier beschrieben.
Floats positionieren
LaTeX verwendet zur Positionierung von Floats Defaultwerte, die nicht jedem gefallen. Eine mögliche Alternative sind diese Werte:
% Alter some LaTeX defaults for better treatment of figures: % See p.105 of "TeX Unbound" for suggested values. % See pp. 199-200 of Lamport's "LaTeX" book for details. % General parameters, for ALL pages: \renewcommand{\topfraction}{0.9} % max fraction of floats at top \renewcommand{\bottomfraction}{0.8} % max fraction of floats at bottom % Parameters for TEXT pages (not float pages): \setcounter{topnumber}{2} \setcounter{bottomnumber}{2} \setcounter{totalnumber}{4} % 2 may work better \setcounter{dbltopnumber}{2} % for 2-column pages \renewcommand{\dbltopfraction}{0.9} % fit big float above 2-col. text \renewcommand{\textfraction}{0.07} % allow minimal text w. figs % Parameters for FLOAT pages (not text pages): \renewcommand{\floatpagefraction}{0.7} % require fuller float pages % N.B.: floatpagefraction MUST be less than topfraction !!
Quelle
Details zum Positionierungs-Algorithmus enthält der Artikel
How to influence the position of float environments like figure and table in LaTeX?.
Mit dem Paket flafter
werden Floats immer nach ihrer Definition (nicht nach der ersten Referenz auf sie!) platziert.
Captions einheitlich positionieren
Mit
\usepackage{floatrow}
werden alle Captions unter die Floats gesetzt, egal, wo sie im Text stehen. Möchte man dies für Tabellen ändern, kann man dies mit
\floatsetup[table]{style=plaintop}
erreichen.
Hängender Einzug von Bild- und Tabellenunterschriften (Captions)
Das KOMA-Paket setzt den Einzug bei Bild- und Tabellenunterschriften (erzeugt mit \caption) automatisch hängend. Ist der Einsatz von KOMA nicht möglich, kann das Paket caption verwendet werden. caption2 sollte nicht verwendet werden, caption in Version 3 ist aktueller.
\usepackage[format=hang]{caption}
Weitere Optionen finden sich in der Dokumentation.
Kurze Bildunterschriften (Captions) im Abbildungsverzeichnis
Um nicht die vollständige Bildunterschrift sondern nur eine kurze Version davon ins Abbildungsverzeichnis zu übernehmen, kann \caption mit einem optionalen Parameter verwendet werden:
\caption[Kurze Version]{Lange Version, die unter dem Bild erscheint}
Das gleiche gilt für Tabellen und Tabellenverzeichnisse.
Tabellen
Automatischer Umbruch
Mit dem Paket tabulary kann eine feste Breite für Tabellen angegeben werden. Ist der Inhalt breiter, wird der Inhalt in den Zellen automatisch umgebrochen.
\usepackage{tabulary} \begin{tabulary}{0.7\textwidth}{LCL} Kurzer Satz & \# & Ganz langer Satz mit ganz vielen Worten\\ \end{tabulary}
Manueller Umbruch
Mit dem Paket pbox kann ein manueller Umbruch in einer Tabelle durchgeführt werden:
\usepackage{pbox} \begin{tabular}{ll} \pbox{20cm}{Dies ist die Zelle\\ mit dem Umbruch} & zweite Zelle\\ \end{tabular}
Die angegebene Breite ist die Maximalbreite, ist der Inhalt der Zelle kürzer, wird diese kürzere Länge verwendet.
Gedrehte/Vertikale Tabellenüberschriften
Um gedrehte oder vertikale Tabellenüberschriften zu erzeugen, definiert man sich am besten ein Makro \rot
:
\usepackage{graphicx} \usepackage{xparse} % Rotation: \rot[<angle>][<width>]{<stuff>} \NewDocumentCommand{\rot}{O{90} O{1em} m}{\makebox[#2][l]{\rotatebox{#1}{#3}}}
Dies wird dann wie folgt benutzt:
\begin{tabular}{cc} & \rot{Heading} Cell 1& Cell 2\\ \end{tabular}
Tabellen aus CSV-Dateien
Um Tabellen direkt aus CSV-Dateien zu erzeugen, kann das Paket csvsimple benutzt werden. Eine erste Ausgabe kann mit
\usepackage{csvsimple} \csvautotabular{data.csv}
erzeugt werden. Mit dem \csvreader
Befehl, kann die Ausgabe angepasst werden.
\begin{table} \csvreader[ before reading=\centering, tabular=lc, table head=\toprule, table foot=\bottomrule] {data.csv}{} {\csvcoli & \csvcolii} \end{table}
In Zusammenarbeit mit dem Paket siunitx
und dem Spaltentyp S
können Zahlen auch automatisch gerundet werden:
\usepackage{siunitx} \begin{table} \csvreader[ before reading=\centering \sisetup{table-number-alignment=center, table-format=2.1, table-auto-round, table-number-alignment=center}, tabular=lS, table head=\toprule, table foot=\bottomrule] {data.csv}{} {\csvcoli & \csvcolii } \end{table}
Trennzeichen
Standardmäßig wird beim Einlesen ein Komma als Trennzeichen verwendet. Dies kann mit der Option separator
angepasst werden:
\csvreader[ separator = tab] {data.csv}{} {\csvcoli & \csvcolii }
Mögliche Werte sind:
Wert | Bedeutung |
---|---|
comma | Komma , |
semicolon | Semikolon ; |
tab | Tabulator |
pipe | senkrechter Strich, Pipe | |
Stimmt die Anzahl der Spalten im Header nicht mit der Anzahl der Datenspalten überein, wird mit \csvreader
nur eine leere Tabelle (mit den richtigen Headern, wenn konfiguriert) angezeigt.
\csvautotabular
zeigt die fehlerhafte CSV-Datei dagegen korrekt an.
Einzelne Zellen anders ausrichten
Standardmäßig werden alle Zellen in einer Tabelle gleich ausgerichtet. Um einzelne Zellen anders auszurichten, kann man \multicoulmn benutzen:
\begin{tabular}{ll} Zelle 1 Links & Zelle 2 Links\\ \multicolumn{1}{c}{Zelle 3 zentriert} & \multicolumn{1}{r}{Zelle 4 rechts}\\ \end{tabular}
Links
Einheiten
Um Einheiten automatisch richtig zu setzen, existieren mehrere Pakete, das empfohlene ist siunitx. Ältere wie units
oder siunits
sollten nicht mehr verwendet werden.
Beispiele:
Code | Bemerkung |
---|---|
\SI{300}{\kelvin} | Zahlenwert mit Einheit |
\num{1.2} | Zahlenwert bei der Eingabe kann sowohl Punkt als auch Komma als Dezimaltrenner verwendet werden, die Ausgabe wird durch die Option output-decimal-marker bestimmt |
\si{\kilo\gram} | Nur Einheit |
Paketoptionen
Paketoptionen werden global mit \sisetup
gesetzt:
\sisetup{ output-decimal-marker = {,} }
Lokale Änderungen sind bei den einzelnen Makros möglich:
\num[output-decimal-marker = {,}]{1.3} % Ausgabe: 1,3
Lokale Änderungen können auch innerhalb einer Umgebung mit \sisetup
gesetzt werden:
\begin{equation} \sisetup{round-mode = places, round-precision = 4} y = \num{0.123456} \end{equation}
Bei Umgebungen, die &
zur Ausrichtung benutzen (wie z.B. align
oder tabular
), wirkt dies allerdings nur bis zum ersten Auftreten von &
, da alignment cells TeX Gruppen sind.
Mit geschweiften Klammern lässt sich aber eine äußere Gruppe um die Umgebung herum realisieren:
{ \sisetup{round-mode = places, round-precision = 4} \begin{align} x &=\num[]{0.123456}\\ y &= r \end{align} }
Option | Bedeutung |
---|---|
output-decimal-marker | Dezimaltrennzeichen für die Ausgabe |
exponent-product | Malzeichen vor dem Exponenten 1x103, standardmäßig \times , Alternative z.B. \cdot |
binary-units | erlaubt die Verwendung von binären Einheiten wie \giga\byte |
Algorithmen
Um Algorithmen im Pseudocode darzustellen, verwende ich im Moment das Paket algorithmicx. Es stellt selber keine Float-Umgebung bereit, diese kommt aus dem Paket algorithm. Um anstelle von „Algorithm 1“ eine deutsche Bezeichnung zu benutzen, wird der gewünschte String als Option übergeben.
\usepackage[Algorithmus]{algorithm} %Paket für die Float-Umgebung algorithm, zeige Algorithmus anstelle von Algorithm \usepackage{algpseudocode} %Paket für Algorithmen im Pseudocode (Teil von algorithmicx)
Befehlsübersicht
Befehl | Hinweis |
---|---|
\State $x = 1$ |
|
\Statex $x = 1$ |
|
\For{<bedingung>} <text> \EndFor | |
\ForAll{<bedingung>} <text> \EndFor |
|
\If{<bedingung>} \Elsif{<bedingung>} \Else \Endif |
|
\Call{<name>}{<parameter>} |
|
\Procedure{<name>}{<parameter>} \EndProcedure |
|
\Return
|
|
\While{<bedingung>} <text> \EndWhile | |
\Repeat <text> \Until{<bedingung>} |
Fehler "Do not use float package with floatrow"
Wird das Paket algorithm zusammen mit floatrow benutzt, muss floatrow vor algorithm geladen werden:
\usepackage{floatrow} \usepackage{algorithm}
Andernfalls kommt es zu folgendem Fehler:
! Package floatrow Error: Do not use float package with floatrow. (floatrow) The latter will be skipped. See the floatrow package documentation for explanation.
Fehler "destination with the same identifier has been already used, duplicate ignored"
Wird das Paket algorithmic
bzw. algpseudocode
zusammen mit dem Paket hyperref
benutzt, muss hyperref
zuerst geladen werden
\usepackage{hyperref} \usepackage{algpseudocode}
und der Zähler umdefiniert werden:
\makeatletter \newcounter{algorithmicH}% New algorithmic-like hyperref counter \let\oldalgorithmic\algorithmic \renewcommand{\algorithmic}{% \stepcounter{algorithmicH}% Step counter \oldalgorithmic}% Do what was always done with algorithmic environment \renewcommand{\theHALG@line}{ALG@line.\thealgorithmicH.\arabic{ALG@line}} \makeatother
Quelle
Andernfalls stimmen die Links nicht und es erscheint diese Warnung:
pdfTeX warning (ext4): destination with the same identifier (name{ALG@line.2}) has been already used, duplicate ignored
Quellcode
Quellcode lässt sich in Latex mit dem Paket listing einbinden. Dabei wird auch ein Syntaxhighlighting durchgeführt.
\usepackage{listings} %used to include listings \lstloadlanguages{C++} \lstset{numbers=left, language=C++, showstringspaces=false} %show line numbers, do not show whitespace as symbol
Der Code kann auch aus externen Dateien eingefügt werden:
\lstinputlisting{somefile.cpp}
Unterschiedliche Schriftgrößen in \lstinline und \lstinputlisting
Wenn man unterschiedliche Schriftgrößen in Listings in \lstinputlisting und \lstinline verwenden möchte, kann man die Schriftgröße von \lstinline so verändern:
\makeatletter \lst@AddToHook{TextStyle}{\let\lst@basicstyle\normalsize\ttfamily} \makeatother
Die Schriftgröße von \lstinputlisting wird regulär über \lstset gesetzt.
TODOs und Anmerkungen
TODOs und Anmerkungen lassen sich mit dem Paket todonotes setzen:
\usepackage{todonotes} \todo{Note in box on border of the page} \todo[inline]{Note highlighted in text}
Mit der Packetoption disable
wird das Erzeugen der Anmerkung deaktiviert, z.B. für die Erzeugung des fertigen Dokuments.
\usepackage[disable]{todonotes}
Für längere Texte sind außerdem die Befehle
\listoftodos %create list of TODOS \todototoc %add list of TODOs to TOC
nützlich, die eine Liste der TODOs erstellen und sie dem Inhaltsverzeichnis hinzufügen.
Aufzählungen oder Gleichungen in den Anmerkungen
Für Aufzählungen oder Gleichungen in den Anmerkungen muss die Option caption
gesetzt sein:
\todo[caption={Liste mit Punkten}]{ \begin{itemize} \item Punkt 1 \item Punkt 2 \end{itemize} }
\todo[caption={Gleichung}]{ \begin{equation} a + b \end{equation} }
Die Option inline
kann, aber muss nicht gesetzt sein.
Floats mit Kommentaren versehen
Um Floats, wie z.B. die figure
-Umgebung mit Kommentaren versehen zu können, muss die Option inline
gesetzt werden:
\begin{figure} \includegraphics{example-image-a} \caption{test caption} \todo[inline]{testing todo note} \end{figure}
Andernfalls kommt des zu folgendem Fehler:
! LaTeX Error: Float(s) lost.
Eine andere Möglichkeit ist die Redefinition von \todo
mit \marginnote
wie im folgenden Abschnitt beschrieben.
Align-Umgebung kommentieren
Um Gleichungen in einer Align-Umgebung zu kommentieren, kann der Befehl \todo
mit \marginnote
aus dem Paket marginnote umdefinert werden:
\makeatletter \if@todonotes@disabled% \else \renewcommand{\@todonotes@drawMarginNoteWithLine}{% \begin{tikzpicture}[remember picture, overlay, baseline=-0.75ex]% \node [coordinate] (inText) {};% \end{tikzpicture}% \marginnote[{% Draw note in left margin \@todonotes@drawMarginNote% \@todonotes@drawLineToLeftMargin% }]{% Draw note in right margin \@todonotes@drawMarginNote% \@todonotes@drawLineToRightMargin% }% } \fi \makeatother
Quelle, erweitert so dass die Option disable
funktioniert
Diese Umdefinition kann Probleme verursachen, z.B. werden mehrere TODOs in der selben Zeile aufeinander gesetzt und sind dann nicht mehr sichtbar 2). Außerdem wird für die korrekte Positionierung der Verbindungsstriche zwischen Text und TODO ein weiterer pdflatex-Lauf benötigt. Dies wird jedoch nicht durch „LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. “ angezeigt, sodass Latexmk oder andere automatische Lösungen einen Lauf zu wenig ausführen. Weitere mögliche Probleme werden in der marginnote-Doku, Abschnitt „Known Problems“ genannt.
Leerzeichen nach eingefügtem Text mit \input
Texte aus anderen Dateien lassen sich mit \input einfügen. Steht ein Zeilenumbruch am Ende, wird im Dokument ein Leerzeichen daraus. Bei längeren Texten ist das unkritisch, will man nur einzelne kürzere Passagen einbinden, kann man mit \unskip das Leerzeichen vermeiden. Am einfachsten definiert man sich ein eigenes Kommando dafür:
\newcommand{\myinput}[1]{\input{#1}\unskip
KOMA-Script: You've used obsolete option XY
Warnung wie diese weisen auf veralte Optionen von KOMA hin:
Class scrbook Warning: You've used obsolete option `liststotoc'. (scrbook) Usage of this option indicates an old document and (scrbook) changes compatibility level using (scrbook) `listof=totoc,version=first'. (scrbook) If you don't want this, you should simply replace (scrbook) usage of option `liststotoc' by `listof=totoc'.
Eine Übersicht über obsolete Optionen und ihre neuen Entsprechungen findet sich in der KOMA-Doku (via Wayback Machine)
KOMA-Script: Warnung "\float@addtolists detected!"
Eine Warnung im Zusammenspiel von KOMA mit älteren Paketen wie float, floatrow oder listings wie diese hier
Class scrreprt Warning: \float@addtolists detected! (scrreprt) You should use the features of package `tocbasic' (scrreprt) instead of \float@addtolists. (scrreprt) Support for \float@addtolists may be removed from (scrreprt) `scrreprt' soon .
lässt sich durch ein Laden des Pakets scrhack
\usepackage{scrhack} %used to avoid warnings with older packages like listings, floatrow, float
vor dem Laden des entsprechenden Pakets vermeiden.
LaTeX-Befehl für Symbol XY
Wer den LaTeX-Befehl für ein bestimmtes Symbol sucht, kann es in einer Symbolliste, z.B. in diesemsehr umfangreichen PDF (>160 Seiten) oder thematisch geordnet suchen, oder zeichnen und automatisch erkennen lassen.
Einheitlich formatierte Referenzen
Möchte man alle Referenzen einheitlich formatieren und den Verweistext (z.B. Abbildung, Gleichung, etc.) nicht manuell vor jede Referenzierung mit /ref{labelname} schreiben, kann man das Paket cleveref benutzen:
\usepackage{cleveref}
Im Gegensatz zu dem Paket prettyref müssen die Marker keinen Formatidentifier wie eqn:Bild1 enthalten. Der Typ wird automatisch bestimmt. Außerdem werden mehrere Marker in einer Referenz unterstützt. Hier ein Beispiel für Abbildungen (und ngerman als Sprachoption in documentclass), andere Typen (und Sprachen) funktionieren analog.
Code | Darstellung im Dokument |
---|---|
\cref{Bild1} | Abbildung 1 |
\cref{Bild1,Bild2,Bild3} keine Leerzeichen zwischen den Kommas | Abbildungen 1 bis 3 |
\cref{Bild1,Bild2,Bild3,,Bild5} keine Leerzeichen zwischen den Kommas | Abbildungen 1 bis 3 und 5 |
\labelcref{Bild1,Bild2,Bild3,,Bild5 keine Leerzeichen zwischen den Kommas | 1 bis 3 und 5 |
\crefrange{Bild1}{Bild5} | Abbildung 1 bis 5 |
Referenzen sortieren und zusammenfassen
Um mehrere Verweise ala
\cite{authorC, authorA, authorB}
nicht als „[3,1,2]“ sondern sortiert als „[1,2,3]“ darstellen zulassen, kann das Paket natbib mit der Option sort verwendet werden:
\usepackage[numeric, sort]{natbib}
Mit der Option sort&compress, werden die Referenzen zu „[1-3]“ zusammengefasst:
\usepackage[numeric, sort&compress]{natbib}
Eine Alternative, falls natbib nicht verwendet werden kann/soll, ist das Paket cite:
\usepackage{cite}
Wird statt bibtex das modernere biblatex verwendet, kann das gleiche Ergebnis durch einen Bibliografie-Stil wie numeric-comp
oder alphabetic-comp
erzielt werden:
\usepackage[style=numeric-comp]{biblatex}
Glossare erzeugen
Um Glossare zu erzeugen, existiert das Paket glossaries. Das Paket glossary ist veraltet und sollte nicht mehr verwendet werden.
%Paket für Glossare \usepackage{glossaries} %nach hyperref laden \makeglossaries \loadglsentries{glossar} %muss nach makeglossaries stehen
Mit \loadglsentries{glossar} werden die Einträge aus Datei glossar.tex geladen. Die Überschrift des Glossars wird übersetzt, wenn babel geladen ist und die Sprache als Option der Dokumentenklasse gesetzt ist:
\usepackage[ngerman]{babel} \usepackage{glossaries} \documentclass[ngerman]{article}
Nützliche Paketoptionen für glossaries sind:
Option | Bedeutung |
---|---|
toc | Glossar in Inhaltsverzeichnis aufnehmen |
nopostdot | Keinen Punkt nach Beschreibung anzeigen |
nonumberlist | Keine Seitenzahlen anzeigen |
nogroupskip | Keine Abstände zwischen Gruppen mit verschiedenen Anfangsbuchstaben |
Um alle Glossareinträge anzuzeigen, auch wenn auf diese nicht verwiesen wird, kann der Befehl
\glsaddall
verwendet werden. Er muss im Dokument, nicht in der Präambel verwendet werden.
Automatischer Umbruch in Bibliografie
Um einen automatischen Umbruch von langen Einträgen in der Bibliografie zu erreichen, kann man das Paket ragged2e verwendet werden.
\usepackage[newcommands]{ragged2e}
Im Dokument:
\bibliographystyle{unsrt} {\raggedright \bibliography{\jobname} }
Das Laden des Pakets kann auch andere Stellen verändern, die \raggedright verwenden, wie zum Beispiel den Titel
Bibliografie auf ungenutzte oder undefinierte Einträge prüfen
Mit dem Werkzeug checkcite lassen sich Bibliografien auf ungenutzte oder undefinierte Einträge prüfen. Als Argument muss die *.aux-Datei des Dokuments angegeben werden:
checkcites text.aux
Zur Zeit wird nur eine *.aux-Datei pro Dokument unterstützt, d.h. Dokumente mit \include
werden nicht korrekt geprüft (siehe Bugreport).
Als Workaround können temporär alle \include
durch \input
ersetzt werden.
Bibliografie lokalisieren ("and" durch "und" ersetzen)
Um die Bibliografie auf deutsch zu setzen, können verschiedene alternative Wege benutzt werden.
- Verwendung von biblatex anstelle von bibtex (empfohlen)
- Verwendung von Stilen nach DIN1505
- Verwendung von babelbib (stärkere Ähnlichkeit mit den eingebauten Stilen
plain
,unsrt
,alpha
undabbrv
)
Das Paket germbib (Aktivierung via \usepackage{bibgerm}
) ist veraltet und sollte nicht mehr verwendet werden.
Lange Vektorpfeile
Lange Vektorpfeile über Variablen, die aus mehreren Buchstaben bestehen, können mit \vv
aus dem Paket esvect erzeugt werden.
\usepackage{esvect} $\vv{solution}$
Warnung bei veralteten Paketen und Befehlen
Das Paket nag warnt bei veralteten Paketen und Befehlen. Dazu muss
\RequirePackage[l2tabu, orthodox]{nag}
in der ersten Zeile des Dokuments stehen.
Die Option orthodox
prüft auf häufige Fallen, die aber technisch korrekt sind.
Wenn man, weiß was man tut, kann sie auch weg gelassen werden.
Die Ausgabe von nag
wird in die Logdatei geschrieben.
Spaltenlängen von zweispaltigem Layout ausgleichen
Um die Spaltenlängen auf der letzten Seite eines Textes mit zweispaltigem Layout auszugleichen, gibt es verschiedene Möglichkeiten:
- manuell an der „richtigen“ Stelle
\newpage
einfügen. Die „richtige“ Stelle ist aber nur durch wiederholtes Ausprobieren zu finden. - die vollautomatische Lösung mit dem Paket flushend. Dazu muss nur das Paket geladen werden:
\usepackage{flushend}
Teilweise kann es zu Problemen mit der Einrückung der letzten Zeile der Referenzen kommen.
- die halbautomatische Lösung mit dem Paket balance. Dazu muss das Paket mit
\usepackage{balance}
geladen werden und auf der letzten Seite der Befehl
\balance
aufgerufen werden.
Debugging
Definition von Makro oder Kommando
Geht beim Aufruf oder der Definition eines Kommandos oder Makros etwas schief, ist der Fehler häufig schwer zu finden. Eine Debuggingmöglichkeit dafür ist das Einschalten des Tracings mit
\tracingcommands=1 \tracingmacros=1
Damit werden zusätzliche Informationen in die *.log-Datei geschrieben.
Overfull \hbox
Die Stelle auf die sich die Warnung Overfull \hbox
bezieht, lässt sich gut mit
\showboxdepth=\maxdimen \showboxbreadth=\maxdimen
oder wenn das zu viel Output produziert
\showboxdepth=5 \showboxbreadth=5
finden.
Damit wird eine Repräsentation des Inhalts der \hbox
in die *.log-Datei geschrieben.
Eine andere Möglichkeit ist das Einschalten einer Markierung mit
\overfullrule=5pt
in der Präambel.
Auch eine farbliche Markierung ist möglich.
Mit dem Paket showframes
lassen sich außerdem die Seitenränder, die durch die zu volle hbox
überschritten werden, anzeigen.
Unterschiede zwischen \newline, \linebreak und \\
Die Unterschiede zwischen \newline
, \linebreak
und \\
werden hier sehr gut beschrieben.
Blindtexte für Minimal Working Example (MWE)
Mit dem Paket blindtext
lassen sich Bildtexte erstellen.
Befehl | Bedeutung |
---|---|
\blindtext | kurzer Blindtext |
\Blindtext
| längerer Blindtext |
\blinddocument
| kurzes Blinddokument |
\Blinddocument
| längeres Blinddokument |
Weitere Möglichkeiten wie Blindaufzählungen finden sich in der Paketdoku.
Beispielgrafiken für Minimal working Example (MWE)
Um lauffähige Minimalbeispiele mit Grafiken zu erstellen, können die Grafiken aus dem Paket mwe
verwendet werden:
\includegraphics{example-image-a} \includegraphics{example-image-b}
In der Paketdokumentation werden weitere mögliche Grafiken gezeigt.
Seitenränder anzeigen
Um die Seitenränder anzuzeigen, kann das Paket showframe
verwendet werden:
\usepackage{showframe}
Das gleiche kann auch mit der Option showframe
des Pakets geometry
erreicht werden:
\usepackage[showframe]{geometry}
Rahmen zeichen
Mit dem Befehl \fbox
lässt sich ein Rahmen um Texte und Grafiken zeichnen:
\fbox{ \includegraphics{example-image-a} some text }
Das kann nützlich sein, um Probleme mit Subfigures zu debuggen.
psfrag mit PDFLaTeX
Mit dem Paket psfrag lassen sich Texte in EPS-Grafiken durch beliebige andere Texte (z.B. mit LaTeX gesetzte Formeln) ersetzen. Dazu muss der zu ersetzende Text als echter Klartext, nicht als Kurve, in der Grafik vorhanden sein, hier eine Liste von kompatiblen Programmen. Da psfrag Postscriptbefehle verwendet, die pdflatex nicht kennt, funktioniert die Ersetzung dort nicht und die Warnung „Non-PDF special ignored!“ wird ausgegeben.
Workarounds/Alternativen:
- Verwendung von Programmen, die eps+tex oder pdf+tex ausgeben können, z.B. Inkscape
Bewerbungen: Lebenslauf und Anschreiben
Mit dem Paket moderncv lassen sich sehr ansprechende Lebensläufe setzen.
Das Anschreiben, das sich damit erzeugen lässt, entspricht jedoch nicht den deutschen Gepflogenheiten.
Das Paket koma-moderncvclassic bildet ausschließlich den classic-Stil von moderncv nach, das neuere komacv auch die anderen Stile.
Dabei gibt es jedoch Probleme beim Setzen der Abstände zwischen den Sections (Workaround).
Außerdem werden die Bullets in Listen nicht farbig gesetzt.
Meine Lösung ist daher im Moment moderncv
für den Lebenslauf und ein entsprechend angepasstes ''scrlttr2'' für das Anschreiben zu verwenden.
moderncv ist nicht mit biblatex kompatibel. Das war der Hauptgrund für die Entwicklung von koma-moderncvclassic bzw. komacv.
moderncv setzt die PDF-Attribute wie Titel und Autor automatisch.
Um die Vorgaben zu ändern, muss \hypersetup
innnerhalb von \AfterPreamble
gesetzt werden:
\AfterPreamble{\hypersetup{ pdfauthor={Mein Name}, pdftitle={Lebenslauf}, }}
C++ setzen
Um den Namen der Programmiersprache C++ schön zu setzen, kann man das folgende Makro benutzen:
\newcommand{\Cpp}{{C\nolinebreak\hspace{-.05em}\raisebox{.4ex}{\tiny\bfseries ++}}\xspace}
Der Befehl \xspace
aus dem gleichnamigen Paket verhindert das automatische Entfernen des Leerzeichens nach dem Makro, so dass sowohl \Cpp-Programmierung
als auch in \Cpp programmiert
mit dem richtigen Abstand zum nachfolgenden Text gesetzt werden.
Links
- Errors while processing latex files Sammelung von LaTeX-Fehlern und Hinweisen zu ihrer Behebung
- TeXeR Online LaTeX Compiler
- HowtoTeX Blog mit vielen Tipps & Tricks zu LaTeX