====== LaTeX ====== ===== Mathematik-Umgebungen ===== ^Code ^Bemerkung ^ |\begin{equation} x^2 = 1 \end{equation} | * Abgesetzte Formel mit Nummerierung | |\begin{align} x^2 &= 1\\ y^2 &= 2 \end{align} | * mehrere Formeln in einer Umgebung mit Ausrichtung an &-Zeichen * jede Zeile nummeriert * aus dem Paket ''amsmath'' | | \begin{equation} \begin{split} a =&{} b + c + d\\ & + e + f + g \end{split} \end{equation} | * mehrzeilige Formel mit einer Formelnummer * Ausrichtung am &-Zeichen * kann auch mit ''align''-Umgebung kombiniert werden * aus dem Paket ''amsmath'' | |\begin{equation} \begin{aligned} x^2 &= 1\\ y^2 &= 2 \end{aligned} \end{equation} | * mehrere Formeln in einer Umgebung mit Ausrichtung an &-Zeichen * nur eine Formelnummer * aus dem Paket ''amsmath'' | |\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} | * Fallunterscheidung mit geschweifter Klammer links von der Fallunterscheidung * Ausrichtung an &-Zeichen * aus dem Paket ''amsmath'' | |\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} | * Fallunterscheidung mit geschweifter Klammer rechts von der Fallunterscheidung * Ausrichtung an &-Zeichen * aus dem Paket ''[[http://mirrors.ctan.org/macros/latex/contrib/mathtools/mathtools.pdf|mathtools]]'' | |\begin{equation} \vec x = \begin{pmatrix} x_1\\ x_2\\ \end{pmatrix} \end{equation}| * Matrix mit runder Klammer drumherum * gut auch zum Darstellen von Vektoren, besser als Verwendung von Array ((\begin{equation} \vec x = \left( \begin{array} x_1\\ x_2\\ \end{array} \right) \end{equation})) * aus dem Paket ''amsmath'' * für Inline-Mathematik gibt es die Umgebung ''smallmatrix'' (aus amsmath) und ''bsmallmatrix'' usw. (s.u.) aus dem Paket ''[[http://mirrors.ctan.org/macros/latex/contrib/mathtools/mathtools.pdf|mathtools]]'' Varianten: ^Umgebung^Darstellung^ |''\begin{matrix}...''|ohne Klammerung/Striche ''a''| |''\begin{pmatrix}...''|runde Klammern ''(a)''| |''\begin{Bmatrix}...''|geschweifte Klammern ''{a}''| |''\begin{bmatrix}...''|eckige Klammern ''[a]''| |''\begin{Vmatrix}...''|Querstriche ''%%|%%a%%|%%''| |''\begin{vmatrix}...''|Doppelstriche ''%%|%%%%|%%a%%|%%%%|%%''| | ===== 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 [[http://mirrors.ctan.org/info/l2tabu/german/l2tabu.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/microtype/microtype.pdf|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| [[http://mirrors.ctan.org/language/german/gerdoc.pdf|Beispiele zur Verwendung]] Die letzten vier Befehle benötigen die Pakete ngerman bzw. german ==== Globale Trennungsregel ==== \hyphenation{Text-tren-nung Test-string} Damit hier Worte mit Umlauten erlaubt sind, muss das Paket \usepackage[T1]{fontenc} geladen sein. 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 [[http://mirrors.ctan.org/macros/latex/contrib/caption/subcaption.pdf|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} [[http://tex.stackexchange.com/a/42975|Weitere Möglichkeiten: gleiche oder maximale Längen]] ===== 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} [[http://tex.stackexchange.com/a/175206|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 [[http://tug.ctan.org/macros/latex/contrib/floatrow/floatrow.pdf|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 [[http://tex.stackexchange.com/a/148258|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 !! [[http://www-rohan.sdsu.edu/~aty/bibliog/latex/floats.html|Quelle]]\\ Details zum Positionierungs-Algorithmus enthält der Artikel [[https://www.latex-project.org/publications/2014-FMi-TUB-tb111mitt-float-placement.pdf|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 [[http://mirror.ctan.org/macros/latex/contrib/caption/caption.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/tabulary/tabulary.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/pbox/pbox.pdf|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[][]{} \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 [[http://mirrors.ctan.org/macros/latex/contrib/csvsimple/csvsimple.pdf|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 ==== * [[https://www.cl.uni-heidelberg.de/courses/ss19/wissschreib/material/tableTricks.pdf|LaTeX Table Hints and Tips]] * [[https://latex.org/forum/viewtopic.php?f=5&t=929#p3241|Tabellen mit Fußnoten]] ===== Einheiten ===== Um Einheiten automatisch richtig zu setzen, existieren mehrere Pakete, das empfohlene ist [[http://mirrors.ctan.org/macros/latex/contrib/siunitx/siunitx.pdf|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 1**x**103, 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$ | * Erzeugt neue Zeilennummer * nicht vor ''\For'', ''ForAll'', ''\If'', ''\Procedure'' (und den entsprechenden ''\EndXY'') verwenden, diese erzeugen automatisch eine eigene Zeile | | \Statex $x = 1$ | * Erzeugt keine neue Zeilennummer * nicht vor ''\For'', ''\If'', ''\Procedure'' (und den entsprechenden ''\EndXY'') verwenden, diese erzeugen automatisch eine eigene Zeile | | \For{} \EndFor | | | \ForAll{} \EndFor | * ''\EndFor'' nicht ''\EndForAll'' | | \If{} \Elsif{} \Else \Endif | * ''\ElsIf'' nicht ''ElseIf'' * keine Klammer nach ''Else'' | | \Call{}{} | * Parameter muss angegeben werden, kein Parameter entspricht daher ''{}'' | | \Procedure{}{} \EndProcedure | * Parameter muss angegeben werden, kein Parameter entspricht daher ''{}'' | | \Return | * kein Rückgabewert möglich | | \While{} \EndWhile | | | \Repeat \Until{} | | ==== 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 [[http://tex.stackexchange.com/a/177033|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 [[http://mirrors.ctan.org/macros/latex/contrib/todonotes/todonotes.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/marginnote/marginnote.pdf|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 [[http://tex.stackexchange.com/a/132451|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 ((Laut [[http://mirrors.ctan.org/macros/latex/contrib/marginnote/marginnote.pdf|marginnote-Doku]] ist das ein Feature, kein Bug)). 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|Latexmk]] oder andere automatische Lösungen einen Lauf zu wenig ausführen. Weitere mögliche Probleme werden in der [[http://mirrors.ctan.org/macros/latex/contrib/marginnote/marginnote.pdf|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 [[http://web.archive.org/web/20130720055335/http://www.komascript.de/betaoptions|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 diesem[[http://mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf|sehr umfangreichen PDF (>160 Seiten)]] oder [[http://de.wikipedia.org/wiki/Liste_mathematischer_Symbole|thematisch geordnet]] suchen, oder [[http://detexify.kirelabs.org/classify.html|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 [[http://mirrors.ctan.org/macros/latex/contrib/cleveref/cleveref.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/natbib/natbib.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/cite/cite.pdf|cite]]: \usepackage{cite} Wird statt bibtex das modernere [[http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/glossaries/glossaries-user.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/ragged2e/ragged2e.pdf|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 [[http://mirrors.ctan.org/support/checkcites/checkcites-doc.pdf|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 [[https://github.com/cereda/checkcites/issues/2|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 [[http://www.ctan.org/tex-archive//bibliography/bibtex/contrib/german/din1505|Stilen nach DIN1505]] * Verwendung von [[http://mirrors.ctan.org/biblio/bibtex/contrib/babelbib/babelbib.pdf|babelbib]] (stärkere Ähnlichkeit mit den eingebauten Stilen ''plain'', ''un­srt'', ''al­pha'' und ''ab­brv'') Das Paket [[https://www.ctan.org/tex-archive/biblio/bibtex/contrib/germbib|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 [[http://mirrors.ctan.org/macros/latex/contrib/esvect/esvect.pdf|esvect]] erzeugt werden. \usepackage{esvect} $\vv{solution}$ ===== Warnung bei veralteten Paketen und Befehlen ===== Das Paket [[http://mirrors.ctan.org/macros/latex/contrib/nag/nag.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/sttools/flushend.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/preprint/balance.pdf|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. * [[http://tex.stackexchange.com/a/60494|Liste mit weiteren Tracingbefehlen]] ==== 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 [[https://tex.stackexchange.com/a/28546|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 [[http://texwelt.de/wissen/fragen/4014/was-ist-der-unterschied-zwischen-newline-und-linebreak/4021|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 [[http://mirrors.ctan.org/macros/latex/contrib/blindtext/blindtext.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/mwe/mwe.pdf|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 [[http://mirrors.ctan.org/macros/latex/contrib/psfrag/pfgguide.pdf|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 [[http://www.e-dschungel.de/software/eps-latex-und-psfrag|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]] * [[https://dominichosler.wordpress.com/2011/08/03/using-psfrag-with-pdflatex/|auto-pst-pdf]] * [[http://mirrors.ctan.org/support/fragmaster/fragmaster.pdf|fragmaster]] * [[http://mirrors.ctan.org/support/pdfrack/doc/pdfrack.pdf|pdfrack]] ===== Bewerbungen: Lebenslauf und Anschreiben ===== Mit dem Paket [[https://www.ctan.org/pkg/moderncv|moderncv]] lassen sich sehr ansprechende Lebensläufe setzen. Das Anschreiben, das sich damit erzeugen lässt, entspricht jedoch nicht den deutschen Gepflogenheiten. Das Paket [[https://www.ctan.org/pkg/koma-moderncvclassic|koma-moderncvclassic]] bildet ausschließlich den classic-Stil von moderncv nach, das neuere [[https://www.ctan.org/pkg/komacv|komacv]] auch die anderen Stile. Dabei gibt es jedoch Probleme beim Setzen der Abstände zwischen den Sections ([[http://tex.stackexchange.com/questions/255691/merging-scrlttr2-and-komacv-layout|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 [[http://www.mrunix.de/forums/showthread.php?56055-Anschreiben-zu-moderncv&p=309293&viewfull=1#post309293|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 ===== * [[http://www.eng.fsu.edu/~dommelen/l2h/errors.html|Errors while processing latex files]] Sammelung von LaTeX-Fehlern und Hinweisen zu ihrer Behebung * [[http://artofproblemsolving.com/texer|TeXeR]] Online LaTeX Compiler * [[http://www.howtotex.com/|HowtoTeX]] Blog mit vielen Tipps & Tricks zu LaTeX * [[http://www.nagel-net.de/Latex/DOKU/DTK-2_2008-biblatex-Teil1.pdf|Bibliographien erstellen mit biblatex - Teil1]] * [[http://www.nagel-net.de/Latex/DOKU/DTK-4_2008-biblatex-Teil2.pdf|Bibliographien erstellen mit biblatex - Teil2]]