\begin{equation} \vec x = \left( \begin{array} x_1\\ x_2\\ \end{array} \right) \end{equation}
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:
|
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}
Eine 4. oder 5. Gliederungsebene lässt sich durch \paragraph
oder \subparagraph
erzeugen.
Die Befehle \subsubsubsection
bzw. \subsubsubsubsection
existieren nicht.
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*}
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 }
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.
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).
Es gibt zwei Möglichkeiten Trennungen und Umbrüche zu definieren, lokal für ein einzelnes Wort und global für das gesamte Dokument.
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
\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.
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
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}
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}
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
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.
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.
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.
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.
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.
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}
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.
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}
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}
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.
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}
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 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 |
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)
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>} |
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.
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 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}
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 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.
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.
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.
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.
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
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)
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.
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.
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 |
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}
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.
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
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.
Um die Bibliografie auf deutsch zu setzen, können verschiedene alternative Wege benutzt werden.
plain
, unsrt
, alpha
und abbrv
)
Das Paket germbib (Aktivierung via \usepackage{bibgerm}
) ist veraltet und sollte nicht mehr verwendet werden.
Lange Vektorpfeile über Variablen, die aus mehreren Buchstaben bestehen, können mit \vv
aus dem Paket esvect erzeugt werden.
\usepackage{esvect} $\vv{solution}$
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.
Um die Spaltenlängen auf der letzten Seite eines Textes mit zweispaltigem Layout auszugleichen, gibt es verschiedene Möglichkeiten:
\newpage
einfügen. Die „richtige“ Stelle ist aber nur durch wiederholtes Ausprobieren zu finden.\usepackage{flushend}
Teilweise kann es zu Problemen mit der Einrückung der letzten Zeile der Referenzen kommen.
\usepackage{balance}
geladen werden und auf der letzten Seite der Befehl \balance
aufgerufen werden.
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.
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.
Die Unterschiede zwischen \newline
, \linebreak
und \\
werden hier sehr gut beschrieben.
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.
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.
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}
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.
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:
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}, }}
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.