\setchapterpreamble{\tudhyperdef'{sec:packages}} \chapter{Benötigte, unterstützte und empfehlenswerte Pakete} \index{Kompatibilität|?}% % \section{Notwendige und ergänzende Pakete für \TUDScript} \tudhyperdef*{sec:packages:needed}% Diese Pakete werden von den \TUDScript"~Klassen zwingend benötigt und eingebunden. Möchten Sie eines der im Folgenden aufgezählten Pakete selber mit bestimmten Optionen nutzen, so sollten diese bereits \emph{vor} dem Laden der Dokumentklasse an das Paket weitergereicht werden, falls bei der folgenden Beschreibung des Paketes nichts anderweitiges angegeben wird. % \begin{Example} Das Weiterreichen von Optionen an Pakete muss folgendermaßen erfolgen: \begin{Code}[escapechar=§] \PassOptionsToPackage§\Parameter{Paketoptionen}\Parameter{Paket}§ \documentclass§\OParameter{Klassenoptionen}\PParameter{tudscr\dots}§ \end{Code} \end{Example} % \begin{packages} \item[koma-script,typearea,scrbase,scrlayer-scrpage,scrextend] \begin{Declaration*}{\Class{scrbook}} \begin{Declaration*}{\Class{scrreprt}} \begin{Declaration*}{\Class{scrartcl}} \begin{Declaration*}{\Class{scrlttr2}} \ChangedAt{% v2.02:Paket \Package{scrlayer-scrpage} ist für \TUDScript unabdingbar% }% Das \KOMAScript-Bundle ist die zentrale Grundlage für \TUDScript. Neben den Klassen \Class{scrbook}, \Class{scrreprt} und \Class{scrartcl} wird das Paket \Package{scrbase} benötigt. Dieses erlaubt das Definieren von Klassenoptionen im Stil von \KOMAScript, welche auch noch nach dem Laden der Klasse mit den Befehlen \Macro{TUDoption} und \Macro{TUDoptions} geändert werden können. Für die Bereitstellung der \PageStyle{tudheadings}"=Seitenstile ist das Paket \Package{scrlayer-scrpage} notwendig. Wenn es nicht durch den Anwender~-- mit beliebigen Optionen~-- geladen wird, erfolgt dies am Ende der Präambel automatisch durch \TUDScript. \end{Declaration*} \end{Declaration*} \end{Declaration*} \end{Declaration*} \item[opensans,iwona] \index{Schriftart|!}% \ChangedAt{% v2.06:Pakete \Package{opensans}, \Package{iwona} und \Package{mathastext} sind für \TUDScript zwingend erforderlich% }% Das Paket \Package{opensans} stellt die Schriftfamilie \OpenSans sowohl für den Fließtext als auch den mathematischen Satz zur Verfügung. Es enthält alle nötigen Schriftschnitte sowohl im Type1- als auch im OpenType-Format. Da die Schriftfamilie in der aktuellen Version keine mathematischen Glyphen bereitstellt, werden die Pakete \Package{mathastext} und \Package{iwona} zusätzlich genutzt, um zumindest einen halbwegs erträglichen mathematischen Satz mit \OpenSans zu ermöglichen. Werden dabei zusätzliche Symbole benötigt, wird empfohlen, auf das Paket \Package{amssymb} zu verzichten und anstelle dessen \Package{mdsymbol} zu laden. \item[mweights] \index{Schriftstärke}% \ChangedAt{% v2.06:Paket \Package{mweights} ist für \TUDScript zwingend erforderlich% }% In \hologo{LaTeXe} existieren die Schriftfamilien für Serifenschriften (\Macro*{rmfamily}), serifenlose Schriften (\Macro*{sffamily}) sowie die Schreibmaschinenschriften (\Macro*{ttfamily}). Deren Schriftstärke wird für gewöhnlich mit den beiden Befehlen \Macro*{mddefault} und \Macro*{bfdefault} einheitlich festgelegt. Bei der Verwendung unterschiedlicher Schriftpakete kann es unter Umständen zu Problemen bei den Schriftstärken kommen. Diese Paket erlaubt die individuelle Definition der Schriftstärke für jede der drei Schriftfamilien. \item[geometry] \index{Satzspiegel}% Das Paket wird zum Festlegen der Seitenränder respektive des Satzspiegels verwendet. \Attention{% Ein Weiterreichen zusätzlicher Optionen an das Paket wird dringlich nicht empfohlen. }% \item[graphicx] \index{Grafiken}% Dies ist das De"~facto"~Standard"~Paket zum Einbinden von Grafiken. Zum Setzen des Logos der \TnUD im Kopf sowie aller weitere Abbildungen und Logos wird \Macro{includegraphics}(\Package{graphicx})'none' genutzt. \item[xcolor] \index{Farben}% Damit werden die Farben des \CDs zur Verwendung im Dokument definiert. Genaueres ist bei der Beschreibung von \Package{tudscrcolor}'auto' zu finden. \item[kvsetkeys] Das von \Package{scrbase} geladene Paket \Package{keyval} ermöglicht das Definieren von Klassen"~ und Paketoptionen sowie Parametern nach dem Schlüssel"=Wert"=Prinzip. Mit diesem Paket kann das Verhalten für unbekannte Schlüssel festgelegt werden. \item[etoolbox,xpatch,letltxmacro,etexcmds] Diese Pakete stellen viele Funktionen zum Testen und zur Ablaufkontrolle bereit. Weiterhin wird das Manipulieren vorhandener Makros ermöglicht. \item[environ] \index{Befehlsdeklaration}% Es wird eine verbesserte Deklaration von Umgebungen ermöglicht, bei der auch beim Abschluss der Umgebung auf die übergebenen Parameter zugegriffen werden kann. \item[trimspaces] Bei mehreren Eingabefeldern für den Anwender werden die Argumente mithilfe dieses Paketes um eventuell angegebene, unnötige Leerzeichen befreit. \end{packages} % \minisec{Durch \TUDScript direkt unterstütze Pakete} % Einige der unter \autoref{sec:packages:recommended} beschriebenen Pakete werden durch \TUDScript direkt unterstützt und erweitern dessen Funktionalität. Dies sind namentlich \Package{hyperref}, \Package{multicol}, \Package{quoting}, \Package{ragged2e} und \Package{crop} sowie \Package{isodate} respektive \Package{datetime2}. Weitere Informationen dazu ist den nachfolgenden Beschreibung des jeweiligen Paketes zu entnehmen. \newcommand*\RecPack{% \hyperref[sec:packages:recommended]{Paketbeschreibung}:\xspace% } \section{Empfehlenswerte Pakete} \tudhyperdef*{sec:packages:recommended}% % In diesem \autorefname wird eine Vielzahl an Paketen~-- zumeist kurz~-- vorgestellt, welche sich für mich persönlich bei der Arbeit mit \hologo{LaTeX} bewährt haben. Einige davon werden außerdem im Tutorial \Tutorial{treatise} in ihrer Anwendung beschrieben. Für detaillierte Informationen sowie bei Fragen zu den einzelnen Paketen sollte die jeweilige Dokumentation% \footnote{Kommandozeile/Terminal: \Path{texdoc\,\PName{Paketname}}} zu Rate gezogen werden, das Lesen der hier gegebenen Kurzbeschreibung ersetzt dies in keinem Fall. \subsection{Pakete zur Verwendung in jedem Dokument} Die hier vorgestellten Pakete gehören meiner Meinung nach in die Präambel eines jeden Dokumentes. Die Dokumentsprache sollte in jedem Fall mit \Package{babel} oder \Package{polyglossia} definiert werden~-- auch wenn dies Englisch ist. Für deutschsprachige Dokumente ist für eine annehmbare Worttrennung beim Einsatz von \Engine{pdfLaTeX} das Paket \Package{hyphsubst} unbedingt zu verwenden. \begin{packages} \item[fontenc,fontspec] \index{Zeichensatzkodierung}% \ChangedAt{v2.02:\RecPack \Package{fontspec}} Die Zeichensatzkodierung des Ausgabefonts sollte immer festgelegt werden. Für \Engine{pdfLaTeX} ist die Ausgabe als 7"~bit"~kodierte Schrift in der Voreinstellung gewählt, was unter anderem dazu führt, dass keine echten Umlaute im erzeugten PDF"~Dokument verwendet werden. Um auf 8"~bit"~Schriften zu schalten, ist \Macro*{usepackage}[\POParameter{T1}\PParameter{fontenc}] zu nutzen. Für die Unicode"=Textsatzsysteme \Engine{LuaLaTeX} oder \Engine{XeLaTeX} sollte stattdessen das Paket \Package{fontspec} verwendet werden. Damit können Systemschriften im OpenType-Format und einer beliebigen Zeichensatzkodierung eingebunden werden, womit sich die Auswahl der verwendbaren Schriften stark erweitert. Das Paket wird durch \TUDScript unterstützt. \item[microtype] \index{Typografie}% Dieses Paket kümmert sich um den optischen Randausgleich% \footnote{englisch: protrusion, margin kerning} und das Nivellieren der Wortzwischenräume% \footnote{englisch: font expansion} im Dokument. Es funktioniert nicht mit der klassischen \Engine*{TeX}"~Engine, wohl jedoch mit \Engine*{pdfTeX} oder \Engine*{LuaTeX} sowie \Engine*{XeTeX}. \item[babel,polyglossia] \index{Sprachunterstützung}% \index{Bezeichner}% Mit dem Paket \Package{babel} erfolgt die Einstellung der im Dokument verwendeten Sprache(n). Bei mehreren angegebenen Sprachen ist die zuletzt geladene die Hauptsprache des Dokumentes. Die gewünschten Sprachen sollten nicht als Paketoption sondern als Klassenoption und gesetzt werden, damit auch andere Pakete auf die Spracheinstellungen zugreifen können. Für deutschsprachige Dokumente ist die Option \Option*{ngerman} für die neue oder \Option*{german} für die alte deutsche Rechtschreibung zu verwenden. Mit dem Laden von \Package{babel} und der dazugehörigen Sprachen werden sowohl die Trennmuster als auch die sprachabhängigen Bezeichner angepasst. Von einer Verwendung der obsoleten Pakete \Package{german} beziehungsweise \Package{ngerman} anstelle von \Package{babel} wird abgeraten. Für \Engine{LuaLaTeX} und \Engine{XeLaTeX} kann das Paket \Package{polyglossia} genutzt werden. \item[hyphsubst,dehyph-exptl] \index{Worttrennung|!}% Die möglichen Trennstellen von Wörtern wird von \hologo{LaTeX} mithilfe eines Algorithmus berechnet. Dieser wird für deutschsprachige Texte mit dem Paket \Package{hyphsubst} entscheidend verbessert. \Engine{LuaLaTeX} und \Engine{XeLaTeX} nutzen diese Trennmuster automatisch, für \Engine{pdfLaTeX} müssen diese mit folgendermaßen eingebunden werden: \begin{Code}[escapechar=§] \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \end{Code}\vspace{-\baselineskip}% In \autoref{sec:tips:hyphenation} wird genauer auf das Zusammenspiel von \Package{hyphsubst} und \Package{babel} sowie \Package{fontenc} eingegangen, ein Blick dahin wird dringend empfohlen. Zusätzliche werden dort weitere Hinweise für eine verbesserte Worttrennung gegeben. \end{packages} \subsection{Pakete zur situativen Verwendung} Die nachfolgenden Pakete sollten nicht zwangsweise in jedem Dokument geladen werden sondern nur, falls dies auch tatsächlich notwendig ist. Zur besseren Übersicht wurde versucht, diese thematisch passend zu gruppieren. Daraus lässt sich keinerlei Wertung bezüglich ihrer Nützlichkeit oder meiner persönlichen Wertschätzung ableiten. \subsubsection{Typografie und Layout} \index{Typografie|(}% % Neben dem zuvor beschriebenem Paket \Package{microtype}, welches verantwortlich für mikrotypografische Feinheiten ist, existieren weitere Pakete, die vorrangig die Makrotypografie adressieren. % \begin{packages} \item[setspace] \index{Zeilenabstand}% Die Vergrößerung des Zeilenabstandes wird: % \begin{enumerate}[itemindent=0pt,labelwidth=*,labelsep=1em,label=\Roman*.] \stditem viel zu häufig und völlig unnötig gefordert und \stditem schließlich auch noch zu groß gewählt. \end{enumerate} % Die Forderung nach Erhöhung des Zeilenabstandes~-- in der Typografie als Durchschuss bezeichnet~-- kommt aus den Zeiten der Textverarbeitung mit der Schreibmaschine. Ein einzeiliger Zeilenabstand bedeutete hier, dass die Unterlängen der oberen Zeile genau auf der Höhe der Oberlängen der folgenden Zeile lagen. Ein anderthalbzeiliger Zeilenabstand erzielte hier somit einen akzeptablen Durchschuss. Eine Erhöhung des Durchschusses bei der Verwendung von \hologo{LaTeX} ist an und für sich nicht notwendig. Sinnvoll ist dies nur, wenn im Fließtext serifenlose Schriften zum Einsatz kommen, um die damit verbundene schlechte Lesbarkeit etwas zu verbessern. Ist die Erhöhung des Durchschusses wirklich notwendig, sollte das Paket \Package{setspace} genutzt werden. Dieses stellt den Befehl \Macro{setstretch}[\Parameter{Faktor}](\Package{setspace})'none' zur Verfügung, mit dem der Durchschuss respektive Zeilenabstand angepasst werden kann. Der Wert des Faktors ist standardmäßig auf~1 gestellt und sollte maximal bis~1.25 vergrößert werden. Der Befehl \Macro*{onehalfspacing} aus diesem Paket setzt diesen Wert auf eben genau~1.25. Allerdings ist hier anzumerken, dass die Vergrößerung des Zeilenabstandes~-- so wie ich es mir angelesen habe~-- aus der Sicht eines Typographen keine Spielerei ist sondern vielmehr allein der Lesbarkeit des Textes dient und möglichst gering ausfallen sollte. Ziel ist es, beim Lesen nach dem Beenden einer Zeile das Auffinden der neuen Zeile zu vereinfachen. Bei Serifen ist dies durch die Betonung der Grundlinie sehr gut möglich. Bei serifenlosen Schriften~-- wie der im \TUDCD verwendeten \OpenSans~-- ist dies schwieriger und ein erweiterter Abstand der Zeilen kann hierbei hilfreich sein. Jedoch sollte nicht nach dem Motto \enquote{viel hilft viel} verfahren werden. Für dieses Dokument wurde \Macro{setstretch}[\PParameter{1.1}](\Package{setspace})'none' für den Zeilenabstand gewählt. Weitere Tipps sind in \autoref{sec:tips:headings} und \autoref{sec:tips:headline} zu finden. \item[multicol] \index{Satzspiegel!zweispaltig|?}% \index{Mehrspaltensatz}% \index{Satzspiegel!mehrspaltig}% Hiermit kann jeglicher beliebiger Inhalt in zwei oder mehr Spalten ausgegeben werden, wobei~-- im Gegensatz zum normalen zweispaltigen Satz über die \KOMAScript-Option \Option{twocolumn}(\Package{typearea})'none'~-- für einen Spaltenausgleich gesorgt wird. Unterstützt wird das Paket innerhalb der Umgebungen \Environment{abstract} und \Environment{tudpage}. \item[balance] \index{Satzspiegel!zweispaltig}% Dieses Paket ermöglicht einen Spaltenausgleich im zweispaltigen Satz auf der letzten Dokumentseite. Alternativ dazu kann auch \Package{multicol} verwendet werden. \item[isodate,datetime2] \index{Datum|?}% Mit \Macro{printdate}[\Parameter{Datum}](\Package{isodate})'none' formatiert das Paket \Package{isodate} die Ausgabe eines Datums automatisch in ein spezifiziertes Format. Die Datumsangabe kann dabei im deutschen, englischen oder ISO"~Format erfolgen. Alternativ kann auch das Paket \Package{datetime2} genutzt werden, welches zwingend die Eingabe im ISO"~Format erfordert. Wird eines der beiden Pakete geladen, werden alle Datumsfelder, welche durch die \TUDScript-Klassen definiert wurden,% \footnote{% \Macro{date}, \Macro{dateofbirth} und \Macro{defensedate} sowie aus \Package{tudscrsupervisor} \Macro{duedate}(\Package{tudscrsupervisor}) und \Macro{issuedate}(\Package{tudscrsupervisor})% } im durch das jeweilige Paket definierten Ausgabeformat ausgegeben. \item[quoting] \index{Zitate}% \hologo{LaTeX} bietet von Haus aus \emph{zwei} verschiedene Umgebungen~-- \Environment{quote}(\Package{koma-script})'none' und \Environment{quotation}(\Package{koma-script})'none'~-- für Zitate und ähnliches an. Allerdings werden durch beide Umgebungen die \KOMAScript-Option \Option{parskip=\PName{Methode}}(\Package{koma-script})'none'|declare| ignoriert. Mit der Umgebung \Environment{quoting}(\Package{quoting})'none' aus dem gleichnamigen Paket lässt sich dieses Problem umgehen. Wird das Paket geladen, wird diese innerhalb der \Environment{abstract}"=Umgebung verwendet. \item[csquotes] \index{Zitate}% Das Paket stellt unter anderem den Befehl \Macro{enquote}[\Parameter{Zitat}](\Package{csquotes})'none' zur Verfügung, welcher Anführungszeichen in Abhängigkeit der gewählten Sprache setzt. Zusätzlich werden weitere Kommandos und Optionen für die spezifischen Anforderungen des Zitierens bei wissenschaftlichen Arbeiten angeboten. Außerdem wird es durch \Package{biblatex} unterstützt und sollte zumindest bei dessen Verwendung geladen werden. \item[noindentafter] \ChangedAt{v2.02:\RecPack \Package{noindentafter}} Mit diesem Paket lassen sich automatische Absatzeinzüge für selbst zu bestimmende Befehle und Umgebungen unterdrücken. \item[ragged2e] \index{Worttrennung}% Das Paket verbessert den Flattersatz, indem für diesen die Worttrennung aktiviert wird. \item[fnpct] \index{Fußnoten|?}% \ChangedAt{v2.05:\RecPack \Package{fnpct}} Diese Paket sorgt zum einen für das Einhalten der richtigen Reihenfolge von Satzzeichen und Fußnoten und zum anderen wird das typografisch korrekte Setzen mehrerer, nacheinander folgender Fußnoten unterstützt. \item[xspace,xpunctuate] \index{Befehlsdeklaration}% Mit \Package{xspace} kann bei der Definition eigener Makros der Befehl \Macro{xspace}(\Package{xspace})'none' genutzt werden. Dieser setzt ein gegebenenfalls notwendiges Leerzeichen automatisch. In \autoref{sec:tips:xspace} ist die Definition eines solchen Befehls exemplarisch ausgeführt. Durch das Paket \Package{xpunctuate} wird \Package{xspace} um die Beachtung von Interpunktionen erweitert. \item[ellipsis] \index{Befehlsdeklaration}% In \hologo{LaTeX} folgen den Befehlen für Auslassungspunkte (\Macro{dots} und \Macro{textellipsis}) \emph{immer} ein Leerzeichen. Dies kann unter Umständen unerwünscht sein. Mit dem Paket \Package{ellipsis} wird das nachfolgende Leerzeichen~-- im Gegensatz zum Standardverhalten~-- nur gesetzt, wenn ein Satzzeichen und kein Buchstabe folgt, \seeref*{\autoref{sec:tips:dots}}. \stditem[\Application{DeLig}, \Package{selnolig}] \index{Ligaturen}% Hierbei handelt es sich um ein Java"~Script, das anhand eines Wörterbuches falsche Ligaturen innerhalb eines Dokumentes automatisiert entfernt. Diese müssten~-- insbesondere in deutschen Texten aufgrund der vielen Komposita~-- für einen guten Satz manuell aufgelöst werden.% \footnote{% Das sind \enquote{ff}, \enquote{fi}, \enquote{fl}, \enquote{ffi}, und \enquote{ffl} bei den meisten \hologo{LaTeX}"=Schriften.% } Mit \Engine{LuaLaTeX} als Textsatzsystem kann auch \Package{selnolig} alternativ dazu verwendet werden. \index{Typografie|)}% \end{packages} \subsubsection{Rechtschreibung} \index{Rechtschreibung|(}% % Für die Rechtschreibkontrolle zeichnet im Normalfall der verwendete Editor verantwortlich. Dennoch gibt es einige wenige Pakete, welche sich diesem Thema widmen. Diese sind jedoch ausschließlich nutzbar, wenn als Textsatzsystem \Engine{LuaLaTeX} genutzt wird. \begin{packages} \item[lua-check-hyphen] \index{Worttrennung}% Hiermit lassen sich mit \Engine{LuaLaTeX} Trennstellen am Zeilenende zur Prüfung markieren. Zum Thema der \textit{korrekten Worttrennung} sei außerdem auf \autoref{sec:tips:hyphenation} verwiesen. \item[spelling] Wird \Engine{LuaLaTeX} als Textsatzsystem verwendet, wird mit diesem Paket der reine Textanteil aus dem \hologo{LaTeX}"~Dokument extrahiert~-- wobei Makros und aktive Zeichen entfernt werden~-- und in eine separate Textdatei geschrieben. Anschließend kann diese Datei mit einer externen Software zur Rechtschreibprüfung wie \Application{GNU~Aspell}, \Application{Hunspell} oder \Application{LanguageTool} analysiert und falsch geschriebene Wörter im PDF"~Dokument hervorgehoben werden. \index{Rechtschreibung|)}% \end{packages} \subsubsection{Schriften und Sonderzeichen} \begin{packages} \item[lmodern] \index{Schriftart}% Soll mit den klassischen \hologo{LaTeX}"=Standardschriften gearbeitet werden, empfiehlt sich die Verwendung des Paketes \Package{lmodern}. Dieses verbessert die Darstellung der Computer~Modern sowohl am Bildschirm als auch beim finalen Druck. \item[cfr-lm] \index{Schriftart}% Dieses experimentelle Paket liefert weitere Schriftschnitte für das Paket \Package{lmodern}. \item[newtx,newtxmath] \index{Schriftart}% \index{Mathematiksatz}% Es werden einige alternative Schriften sowohl für den Fließtext (\textit{Times} und \textit{Helvetica}) als auch den Mathematikmodus bereitgestellt. \item[libertine] \index{Schriftart}% Das Paket stellt die Schriften Linux~Libertine und Linux~Biolinum zur Verfügung. Um diese Schriftart auch für den Mathematikmodus verwenden zu können, sollte \Package{newtxmath} aus dem \Package{newtx}"=Bundle mit \Macro*{usepackage}[\POParameter{libertine}\PParameter{newtxmath}] in der Präambel eingebunden werden. Das Paket \Package{libgreek} enthält griechische Buchstaben für Linux~Libertine. \item[relsize] \index{Schriftgröße}% Die Größe einer Textauszeichnung kann relativ zur aktuellen Schriftgröße gesetzt werden. \item[textcomp] \index{Sonderzeichen}% Es werden zusätzliche Symbole und Sonderzeichen wie beispielsweise das Promille- oder Eurozeichen sowie Pfeile für den Fließtext zur Verfügung gestellt. \end{packages} % \index{Mathematiksatz|(}% Auch für (serifenlose) Mathematikschriften gibt es einige nützliche Pakete. Werden die Schriften des \CDs genutzt, sei auf die Option \Option{cdmath} verwiesen. % \begin{packages} \item[sansmathfonts,sansmath] Sollten die normalen \hologo{LaTeX}"=Schriften Computer~Modern verwendet werden, lässt sich dieses Paket zum serifenlosen Setzen mathematischer Ausdrücke nutzen. Ein alternatives Paket mit der gleichen Zielstellung ist \Package{sansmath} \item[sfmath] Diese Paket verfolgt ein ähnliches Ziel, kann jedoch im Gegensatz zu \Package{sansmath} nicht nur für Computer~Modern sondern mit der entsprechenden Option auch für Latin~Modern, Helvetica und Computer~Modern~Bright verwendet werden. \item[mathastext] Mit dem Paket wird das Ziel verfolgt, aus der genutzten Schrift für den Fließtext alle notwendigen Zeichen für den Mathematiksatz zu extrahieren. \end{packages} \subsubsection{Mathematiksatz} Dies sind Pakete, die Umgebungen und Befehle für den Mathematiksatz sowie das Setzen von Einheiten und Zahlen im Allgemeinen anbieten. \begin{packages} \item[mathtools,amsmath] Dieses Paket stellt für das De"~facto"~Standard"~Paket \Package{amsmath} für Mathematikumgebungen Bugfixes zur Verfügung und erweitert dieses. \item[bm] Das Paket bietet mit \Macro*{bm} eine Alternative zu \Macro*{boldsymbol} im \hrfn{http://tex.stackexchange.com/questions/3238}{Mathematiksatz}. Sollten bei der Nutzung des Paketes Fehler auftreten, sei auf dessen Dokumentation und insbesondere auf das Makro \Macro*{bmmax} verwiesen. \end{packages} % Die korrekte Formatierung von Zahlen ist häufig ein Problem bei der Verwendung von \hologo{LaTeX}. Insbesondere, wenn in einem deutschsprachigen Dokument Daten im englischsprachigen Format verwendet werden, kommt es zu Problemen. Dafür wird im \TUDScript-Bundle das Paket \Package{mathswap} bereitgestellt. Dennoch gibt es zu diesem auch Alternativen. % \begin{packages} \index{Zifferngruppierung|(}% \item[ionumbers] Dieses Paket ist mir tatsächlich erst bei der Arbeit an \Package{mathswap} bekannt geworden. Es bietet mehr Funktionalitäten und kann als Alternative dazu betrachtet werden. \item[icomma] Wird im Mathematikmodus nach dem Komma ein Leerzeichen gesetzt, wird dies bei der Ausgabe beachtet. Der Verfasser muss sich demzufolge jederzeit selbst um die typografisch korrekte Ausgabe kümmern. \item[ziffer] Für deutschsprachige Dokumente wird das Komma als Dezimaltrennzeichen zwischen zwei Ziffern definiert. Folgt dem Komma keine Ziffer, wird jederzeit der obligatorische Freiraum gesetzt, was meiner Meinung nach besser als das Verhalten von \Package{icomma} ist. \index{Zifferngruppierung|)}% \end{packages} % Für das typografisch korrekte Setzen von Einheiten~-- ein halbes Leerzeichen zwischen Zahl und \emph{aufrecht} gesetzter Einheit~-- gibt es zwei gut nutzbare Pakete. % \begin{packages} \index{Einheiten|(}% \item[units] Dies ist ein einfaches und sehr zweckdienliches Paket zum Setzen von Einheiten und für die meisten Anforderungen völlig ausreichend. \item[siunitx] Dieses Paket ist in seinem Umfang im Vergleich deutlich erweitert. Neben Einheiten können zusätzlich auch Zahlen typografisch korrekt gesetzt werden. Die Ausgabe lässt sich in vielerlei Hinsicht an individuelle Bedürfnisse anpassen. Für deutschsprachige Dokumenten sollte die Lokalisierung angegeben werden. Mehr dazu in \autoref{sec:tips:siunitx}. \index{Einheiten|)}% \end{packages} % Weitere Hinweise zur mathematischen Typografie werden in \autoref{sec:tut} gegeben. \index{Mathematiksatz|)}% \subsubsection{Listen} \index{Listen|?(}% % \begin{packages} \item[enumitem] Das Paket \Package{enumitem} erweitert die rudimentären Funktionalitäten der \hologo{LaTeX}"=Standardlisten \Environment{itemize}(\Package{koma-script},\Package{enumitem})'none', \Environment{enumerate}(\Package{koma-script},\Package{enumitem})'none' sowie \Environment{description}(\Package{koma-script},\Package{enumitem})'none' und ermöglicht die individuelle Anpassung dieser durch die Bereitstellung vieler optionale Parameter nach dem Schlüssel"=Wert"=Prinzip. Eine von mir sehr häufig genutzte Funktion ist beispielsweise die Entfernung des zusätzlichen Abstand zwischen den einzelnen Einträgen einer Liste mit \Macro{setlist}[\PParameter{noitemsep}](\Package{enumitem})'none'. \end{packages} \index{Listen|?)}% \subsubsection{Verzeichnisse aller Art} \index{Verzeichnisse|?(}% % Neben dem Erstellen des eigentlichen Dokumentes sind für eine wissenschaftliche Arbeit meist auch allerhand Verzeichnisse gefordert. Fester Bestandteil ist dabei das Literaturverzeichnis, auch ein Abkürzungs- und Formelzeichen- beziehungsweise Symbolverzeichnis werden häufig gefordert. Gegebenenfalls wird auch noch ein Glossar benötigt. Hier werden die passenden Pakete vorgestellt. Sollen im Dokument komplette Quelltexte oder auch nur Auszüge daraus erscheinen und für diese auch gleich ein entsprechendes Verzeichnis generiert werden, so sei auf das Paket \Package{listings}'full' verwiesen. \begin{packages} \item[biblatex] \index{Literaturverzeichnis}% Das Paket kann als legitimer Nachfolger zu \hologo{BibTeX} gesehen werden. Ähnlich dazu bietet \Package{biblatex} die Möglichkeit, Literaturdatenbanken einzubinden und verschiedene Stile der Referenzierung und Darstellung des Literaturverzeichnisses auszuwählen. Mit \Package{biblatex} ist die Anpassung eines bestimmten Stiles wesentlich besser umsetzbar als mit \hologo{BibTeX}. Wird \Application{biber} für die Sortierung des Literaturverzeichnisses genutzt, ist die Verwendung einer UTF"~8"~kodierten Literaturdatenbank problemlos möglich. In Verbindung mit \Package{biblatex} wird die zusätzliche Nutzung des Paketes \Package{csquotes} sehr empfohlen. \item[glossaries,nomencl] \index{Glossar}% \index{Abkürzungsverzeichnis}% \index{Formelzeichenverzeichnis}% \index{Symbolverzeichnis}% Dies ist ein sehr mächtiges Paket zum Erstellen eines Glossars sowie Abkürzungs- und Symbolverzeichnisses. Die mannigfaltige Anzahl an Optionen ist zu Beginn eventuell etwas abschreckend. Insbesondere wenn Verzeichnisse für Abkürzungen \emph{und} Formelzeichen respektive Symbole notwendig sind, sollte dieses Paket in Erwägung gezogen werden. Alternativ dazu kann für ein Symbolverzeichnis auch lediglich eine manuell gesetzte Tabelle genutzt werden. Das hierfür sehr häufig empfohlene Paket \Package{nomencl} bietet meiner Meinung nach demgegenüber keinerlei Vorteile. \item[acro,acronym] \index{Abkürzungsverzeichnis}% Soll lediglich ein Abkürzungsverzeichnis erstellt werden, ist dieses Paket die erste Wahl. Es stellt Befehle zur Definition von Abkürzungen sowie zu deren Verwendung im Text und zur sortierten Ausgabe eines Verzeichnisses bereit. Alternativ dazu kann das Paket \Package{acronym} verwendet werden. Die Sortierung des Abkürzungsverzeichnisses muss hier allerdings manuell durch den Anwender erfolgen. \index{Verzeichnisse|?)}% \end{packages} \subsubsection{Gleitobjekte} \index{Gleitobjekte|?(}% % Es werden Pakete für die Beeinflussung von Aussehen, Beschriftung und Positionierung von Gleitobjekten vorgestellt. Unter \autoref{sec:tips:floats} sind außerdem Hinweise zur manuellen Manipulation der Gleitobjektplatzierung zu finden. \begin{packages} \item[caption] Mit der Option \Option{captions=\PSet}(\Package{koma-script})'none'|declare| bieten die \KOMAScript-Klassen bereits einige Möglichkeiten zum Formatieren der Beschriftungen für Gleitobjekte. Dieses Paket ist daher meist nur in gewissen Ausnahmefällen für spezielle Anweisungen notwendig, allerdings auch bei der Verwendung unbedenklich. \item[subcaption] Diese Paket kann zum einfachen Setzen von Unterabbildungen oder "~tabellen mit den entsprechenden Beschriftungen genutzt werden. Das dazu alternative Paket \Package{subfig} sollte vermieden werden, da es nicht mehr gepflegt wird und es mit diesem im Zusammenspiel mit anderen Paketen des Öfteren zu Problemen kommt. Sollte der Funktionsumfang von \Package{subcaption} nicht ausreichen, kann anstelle dessen das Paket \Package{floatrow} verwendet werden, welches ähnliche Funktionalitäten wie \Package{subfig} bereitstellt. \item[floatrow] Mit diesem Paket können global wirksame Einstellungen und Formatierungen für \emph{alle} Gleitobjekte eines Dokumentes über die Paketoptionen oder mit \Macro{floatsetup}[\PParameter{\dots}](\Package{floatrow})'none' vorgenommen werden. So lässt sich unter anderem die verwendete Schrift innerhalb der Umgebungen \Environment{figure} und \Environment{table} mit \Macro*{floatsetup}[\PParameter{font=\dots}] einstellen. Mit \begin{Code} \floatsetup[figure]{capposition=bottom} \floatsetup[table]{capposition=top} \end{Code}\vspace{-\baselineskip}% lässt sich automatisch das typografisch korrekte Setzen von Abbildungs\emph{unterschriften} sowie Tabellen\emph{überschriften} erzwingen~-- unabhängig von der Position des Befehls zur Beschriftung \Macro{caption}(\Package{koma-script},\Package{caption})'none' innerhalb der jeweiligen Gleitobjektumgebung. Wird das Verhalten wie empfohlen eingestellt, sollte für eine gute vertikale Platzierung der Tabellenüberschriften zusätzlich die \KOMAScript-Option \Option{captions=tableheading}(\Package{koma-script})'none' genutzt werden. \item[placeins] Mit diesem Paket kann die Ausgabe von Gleitobjekten vor Kapiteln und wahlweise Unterkapiteln erzwungen werden. \item[flafter] Dieses Paket erlaubt die frühestmögliche Platzierung von Gleitobjekten im ausgegeben Dokument erst an der Stelle ihres Auftretens im Quelltext. Diese werden dementsprechend nie vor ihrer Definition am Anfang der Seite erscheinen. \end{packages} \index{Gleitobjekte|?)}% \subsubsection{Tabellen} \index{Tabellen|?(}% % Für den Tabellensatz werden standardmäßig die Umgebungen \Environment{tabbing} und \Environment{tabular} respektive \Environment{tabular*} bereitgestellt, welche in ihrer Funktionalität für einen qualitativ hochwertigen Tabellensatz meist nicht ausreichen. Deshalb werden hier zusätzliche Pakete vorgestellt. % \begin{packages} \item[array] Dieses Paket ermöglicht mit \Macro{newcolumntype}(\Package{array})'none' das Erstellen neuer Spaltentypen und die erweiterte Definition von Tabellenspalten (\PValue{>\PParameter{\dots}}\PName{Spaltentyp}\PValue{<\PParameter{\dots}}), wobei mithilfe sogenannter \enquote{Hooks} vor und nach Einträgen innerhalb einer Spalte gezielt Anweisungen gesetzt werden können. Die Zeilenhöhe lässt sich mit \Macro{extrarowheight}(\Package{array})'none' ändern. \item[booktabs] Für einen guten Tabellensatz mit \hologo{LaTeX} gibt es bereits zahlreiche \hrfn{http://userpage.fu-berlin.de/latex/Materialien/tabsatz.pdf}{Tipps} im Internet zu finden. Zwei Regeln sollten dabei definitiv beachtet werden: % \begin{enumerate}[itemindent=0pt,labelwidth=*,labelsep=1em,label=\Roman*.] \stditem keine vertikalen Linien \stditem keine doppelten Linien \end{enumerate} % Das Paket \Package{booktabs} (deutsche Dokumentation \Package*{booktabs-de}) ist für den Satz von hochwertigen Tabellen eine große Hilfe und stellt die Befehle \Macro{toprule}(\Package{booktabs})'none', \Macro{midrule}(\Package{booktabs})'none' sowie \Macro{cmidrule}(\Package{booktabs})'none' und \Macro{bottomrule}(\Package{booktabs})'none' für unterschiedliche horizontale Linien bereit. \item[widetable] Mit der Standard"=\hologo{LaTeX}"=Umgebung \Environment{tabular*} kann eine Tabelle mit einer definierten Breite gesetzt werden. Dieses Paket stellt die Umgebung \Environment{widetable}(\Package{widetable})'none' zur Verfügung, die als Alternative genutzt werden kann und eine symmetrische Tabelle erzeugt. \item[tabularx] Auch mit diesem Paket kann die Gesamtbreite einer Tabelle spezifiziert werden. Dafür wird der Spaltentyp \PValue{X} definiert, welcher als Argument der \Environment{tabularx}(\Package{tabularx})'none'"=Umgebung beliebig häufig angegeben werden kann (\Macro*{begin}[\PParameter{tabularx}\Parameter{Breite}\Parameter{Spalten}]). Die \PValue{X}"~Spalten ähneln denen vom Typ~\PValue{p}\Parameter{Breite}, wobei die Breite dieser aus der gewünschten Tabellengesamtbreite abzüglich dem benötigten Platz der gegebenenfalls vorhandenen Standardspalten automatisch berechnet wird. \item[tabulary] Dies ist ein weiteres Paket zur automatischen Berechnung von Spaltenbreiten. Der zur Verfügung stehende Platz~-- gewünschte Gesamtbreite abzüglich der notwendigen Breite für Standardspalten~-- wird jedoch nicht wie bei der \Environment{tabularx}(\Package{tabularx})'none' auf alle Spalten gleichmäßig verteilt sondern in der \Environment{tabulary}(\Package{tabulary})'none'"=Umgebung für die Spaltentypen~\PValue{LCRJ} anhand ihres Zellinhaltes gewichtet vergeben. (\Macro*{begin}[\PParameter{tabulary}\Parameter{Breite}\Parameter{Spalten}]). \item[longtable,ltxtable,ltablex] Sollen mehrseitige Tabellen mit Seitenumbruch erstellt werden, ist dieses Paket das Mittel der ersten Wahl. Für die Kombination mehrseitiger Tabellen mit einer \Environment{tabularx}(\Package{tabularx})'none'"=Umgebung können die Pakete \Package{ltablex} oder besser noch \Package{ltxtable} verwendet werden. Alternativ dazu lässt sich auch \Package{tabu} nutzen. \item[multirow] Es wird der Befehl \Macro{multirow}(\Package{multirow})'none' definiert, der das Zusammenfassen von mehreren Zeilen in einer Spalte ermöglicht~-- ähnlich zum Makro \Macro{multicolumn} für Spalten. \item[tabularborder] Bei Tabellen wird zwischen Spalten automatisch ein horizontaler Abstand (\Length{tabcolsep}) gesetzt~-- besser gesagt jeweils vor und nach einer Spalte. Dies geschieht auch \emph{vor} der ersten und \emph{nach} der letzten Spalte. Dieser zusätzliche Platz an den äußeren Rändern kann störend wirken, insbesondere wenn die Tabelle über die komplette Textbreite gesetzt wird. Mit dem Paket \Package{tabularborder} kann dieser Platz automatisch entfernt werden. Dies funktioniert allerdings nur mit der \Environment{tabular}"=Umgebung. Die Tabellen aus den Paketen \Package{tabularx}, \Package{tabulary} und \Package{tabu} werden nicht unterstützt. Wie dieser Abstand bei diesen manuell entfernt werden kann, ist unter \autoref{sec:tips:table} zu finden. \item[tabu] \ChangedAt{% v2.02:\RecPack \Package{tabu} ist nur bedingt empfehlenswert } Dies ist ein relativ neues Paket, welches versucht, viele der zuvor genannten Funktionalitäten zu implementieren und weitere bereitzustellen. Dafür werden die Umgebungen \Environment{tabu}(\Package{tabu})'none' und \Environment{longtabu}(\Package{tabu})'none' definiert. Es kann alternativ zu \Package{tabularx} verwendet werden und ist insbesondere als Ersatz für das Paket \Package{ltxtable} empfehlenswert. \Attention{% Für das Paket in der Version~v2.8 wären seit einigen Jahren mehrere Bugfixes notwendig. Der originäre Autor hatte außerdem die Änderung der \hrfn{https://groups.google.com/d/topic/comp.text.tex/xRGJTC74uCI}{% Benutzerschnittstelle in einer zukünftigen Version% } angekündigt, anscheinend aber mittlerweile die Pflege des Paketes komplett eingestellt. }% Durch Änderungen am \hologo{LaTeXe}"~Kernel wurde das Paket unbrauchbar. Deshalb sind durch das \hrfn{https://github.com/tabu-fixed/tabu}{% \hologo{LaTeX3}-Projektteam die allernötigsten Anpassungen% } vorgenommen worden, damit das Paket in der aktuellen Version~v2.9 zumindest grundsätzlich lauffähig ist. Ein Großteil der ursprünglich sehr guten Funktionalitäten kann momentan allerdings nicht genutzt werden. Deshalb ist das Paket aktuell nur bedingt empfehlenswert. \end{packages} \index{Tabellen|?)}% \subsubsection{Grafiken und Abbildungen} \index{Grafiken|?(}% % Grafiken für wissenschaftliche Arbeiten sollten als Vektorgrafiken erstellt werden, um die Skalierbarkeit und hohe Druckqualität zu gewährleisten. Bestenfalls folgen diese auch dem Stil der dazugehörigen Arbeit.% \footnote{% Für qualitativ hochwertige Dokumente sollten übernommene Grafiken nicht direkt kopiert oder gescannt sondern im gewünschten Zielformat neu erstellt und mit einer Referenz auf die Quelle eingebunden werden.% } Für das Erstellen eigener Vektorgrafiken, welche die \hologo{LaTeX}"=Schriften und das Layout des Hauptdokumentes nutzen, gibt es zwei mögliche Ansätze. Entweder die Grafiken werden ähnlich wie das Dokument \enquote{programmiert} oder Zeichenprogramme, welche wiederum die Ausgabe oder das Weiterreichen von Text an \hologo{LaTeX} unterstützen, werden genutzt. Für das Programmieren von Grafiken sollen hier die wichtigsten Pakete vorgestellt werden. Wie diese zu verwenden sind, ist den dazugehörigen Paketdokumentationen zu entnehmen. \begin{packages} \item[tikz] Dies ist ein sehr mächtiges Paket für das Programmieren von Vektorgrafiken und sehr häufig~-- insbesondere bei Einsteigern~-- die erste Wahl bei der Verwendung von \Engine{pdfLaTeX}. \item[pstricks] Diese Paket stellt die zweite Variante zum Programmieren von Grafiken dar. Da hiermit auf PostScript (direkt) zugegriffen werden kann, existieren \emph{noch} mehr Möglichkeiten bei der Erstellung eigener Grafiken, wovon die bereitgestellten Befehle rege Gebrauch machen. Daraus resultiert allerdings der Nachteil, dass die mit \Package{pstricks} erstellten Grafiken nicht direkt in eine PDF"~Datei kompiliert werden können. Vielmehr müssen die Grafiken aus den Umgebungen \Environment{pspicture}(\Package{pstricks})'none' zunächst über den Pfad \Path{latex\,>\,dvips\,>\,ps2pdf} in PDF"~Dateien gewandelt werden. Diese lassen sich von \Engine{pdfLaTeX} anschließend als Abbildungen einbinden. Um dieses Vorgehen zu ermöglichen, lassen sich folgende Pakete nutzen: % \begin{packages} \item[pst-pdf] Dieses Paket stellt Methoden für den Export von PostSript-Grafiken in PDF"~Datien bereit. Die einzelnen Aufrufe zur Kompilierung von DVI über PostScript zu PDF müssen durch den Anwender manuell beziehungsweise über die Ausgaberoutinen des verwendeten Editors durchgeführt werden. \item[auto-pst-pdf,pdftricks2] Das Paket automatisiert die Erzeugung der \Package{pstricks}"=Grafiken mit dem Paket \Package{pst-pdf}. Hierfür muss \Engine{pdfLaTeX} per Option mit erweiterten Schreibrechten ausgeführt werden. Dazu ist der Aufruf von \Path{pdflatex} mit der Option \Path{-{}-shell-escape} respektive \Path{-{}-enable-write18} notwendig. Bitte beachten Sie dazu ebenfalls die Hinweise in \autoref{sec:tips:auto-pst-pdf}. Eine Alternative dazu ist das Paket \Package{pdftricks2}. \end{packages} \end{packages} % Im Tutorial \Tutorial{treatise} wird für \Package{pstricks} und \Package{tikz} jeweils ein Beispiel gegeben. Um bei der Erstellung von Grafiken mit einem der beiden Paketen nicht bei jeder Änderung das komplette Dokument kompilieren zu müssen, können diese in separate Dateien ausgelagert werden. Hierfür sind die beiden Pakete \Package{standalone} oder \Package{subfiles} sehr nützlich. Für das Zeichnen einer Grafik mit einem Bildbearbeitungsprogramm, welches die Weiterverarbeitung durch \hologo{LaTeX} erlaubt, möchte ich auf die freien Programme \Application{LaTeXDraw} und \Application{Inkscape} verweisen. Insbesondere das zuletzt genannte Programm ist sehr empfehlenswert. % \begin{packages} \item[svg] Mit diesem Paket können alle notwendigen Schritte zum Einfügen einer SVG"~Grafik in ein \hologo{LaTeX}"~Dokument automatisiert durchgeführt werden. In \autoref{sec:tips:svg} sind weitere Hinweise hierzu zu finden. \end{packages} \index{Grafiken|?)}% \subsubsection{Querverweise und Lesezeichen} \index{Querverweise|?(}% \index{Lesezeichen|?(}% % Für das Erzeugen von Querverweisen auf bestimmte Gliederungsebenen, Tabellen, Abbildungen oder auch Gleichungen muss für diese besagten Elemente zunächst mit \Macro{label}[\Parameter{Label}] ein \emph{eindeutiges} Label erzeugt werden, auf welches im Dokument entweder mit \Macro{ref} oder nach dem Laden von \Package{hyperref} besser noch mit \Macro{autoref}(\Package{hyperref})'none' referenziert werden kann. In \autoref{sec:tips:references} sind diesbezüglich weitere Informationen zu finden. % \begin{packages} \item[hyperref] Hiermit können in einem PDF"~Dokument Lesezeichen, Querverweise und Hyperlinks erstellt werden. Wird es geladen, sind außerdem die Option \Option{tudbookmarks} sowie der Befehl \Macro{tudbookmark} nutzbar. Das Paket \Package{bookmark} erweitert die Unterstützung nochmals. Beide genannten Pakete sollten~-- bis auf sehr wenige Ausnahmen wie beispielsweise \Package{glossaries}~-- als letztes in der Präambel eingebunden werden. \item[bookmark] Dieses Paket verbessert und erweitert die von \Package{hyperref} angebotenen Möglichkeiten zur Erstellung von Lesezeichen~-- auch Outline"=Einträge~-- im PDF"~Dokument. Zum Beispiel können Schriftfarbe- und "~stil geändert werden. \item[varioref] Mit diesem Paket lassen sich sehr gute Verweise auf bestimmte Seiten erzeugen. Insbesondere, wenn der Querverweis auf die aktuelle, die vorhergehende oder nachfolgende sowie im doppelseitigen Satz auf die gegenüberliegende Seite erfolgt, werden passende Textbausteine für diesen verwendet. \item[cleveref] Dieses Paket vereint die Vorzüge der automatischen Benennung referenzierter Objekte mit dem Befehl \Macro{autoref}(\Package{hyperref})'none' aus dem Paket \Package{hyperref} und der Verwendung von \Package{varioref}. \end{packages} \index{Lesezeichen|?)}% \index{Querverweise|?)}% \subsubsection{Aufteilung des Hauptdokumentes in Unterdateien} Um während des Entwurfes eines Dokumentes die Zeitdauer für das Kompilieren zu verkürzen, kann dieses in Unterdokumente gegliedert werden. Dadurch wird es möglich, nur den momentan bearbeiteten Dokumentteil~-- respektive die aktuelle \Package{tikz}"~ oder \Package{pstricks}"=Grafik~-- zu kompilieren. Die meiner Meinung nach besten Pakete für dieses Unterfangen werden folgend vorgestellt. % \begin{packages} \item[standalone] \ChangedAt{% v2.02:Bugfix für Verwendung der Klasse \Class{standalone} aus dem Paket \Package{standalone}% } Dieses Paket ist für das Erstellen eigenständiger (Unter)"~Dokumente gedacht, welche später in ein Hauptdokument eingebunden werden können. Jedes dieser Teildokumente benötigt eine eigene Präambel. Optional lassen sich die Präambeln der Unterdokumente automatisch in ein Hauptdokument einbinden. \item[subfiles] \ChangedAt{v2.02:\RecPack \Package{subfiles}} Dieses Paket wählt einen etwas anderen Ansatz als \Package{standalone}. Es ist von Anfang an dafür gedacht, ein dediziertes Hauptdokument zu verwenden. Die darin mit \Macro{subfiles}(\Package{subfiles})'none' eingebundenen Unterdateien nutzen bei der autarken Kompilierung dessen Präambel. \end{packages} % Unabhängig davon, ob Sie eines der beiden Pakete nutzen oder alles in einem Dokument belassen, ist es ratsam, eigens definierte Befehle, Umgebungen und ähnliches in ein separates Paket auszulagern. Dafür müssen Sie lediglich ein leeres \hologo{LaTeX}"=Dokument erzeugen und es unter \File*{mypreamble.sty} oder einem anderen Namen im gleichen Ordner wie das Hauptdokument speichern. Dann können Sie in dieser Datei ihre Deklarationen ausführen und diese mit \Macro*{usepackage}[\PParameter{mypreamble}] in das Dokument einbinden. Dies hat den Vorteil, dass das Hauptdokument zum einen übersichtlich bleibt und Sie zum anderen Ihre persönliche Präambel generisch wachsen lassen und für andere Dokumente wiederverwenden können. \subsubsection{Die kleinen und großen Helfer\dots} Hier taucht alles auf, was nicht in die vorherigen Kategorien eingeordnet werden konnte. % \begin{packages} \item[marginnote] \index{Randnotizen}% Mit dem Befehl \Macro{marginpar}(\Package{koma-script})'none' lassen sich Randnotizen erzeugen. Diese sind in \hologo{LaTeX} spezielle Gleitobjekte, wodurch selbige nicht immer direkt an der ursprünglich intendierten Stelle am Blattrand gesetzt werden. Das Paket \Package{marginnote} stellt den Befehl \Macro{marginnote}(\Package{marginnote})'none' für nicht"~gleitende Randnotizen zur Verfügung. Eine Alternative dazu ist Paket \Package{mparhack}. \item[todonotes] \index{Randnotizen}% Mit \Package{todonotes} können noch offene Aufgaben in unterschiedlicher Formatierung am Blattrand oder im direkt Fließtext ausgegeben werden. Aus allen Anmerkungen lässt sich eine Liste aller offenen Punkte erzeugen. \item[xparse] \index{Befehlsdeklaration}% Dieses mächtige Paket entstammt dem \hologo{LaTeX3}"=Projekt und bietet für die Erstellung eigener Befehle und Umgebungen einen alternativen Ansatz zu den bekannten \hologo{LaTeX}"=Deklarationsbefehlen \Macro*{newcommand} und \Macro*{newenvironment} sowie deren Derivaten. Mit \Package{xparse} wird es möglich, obligatorische und optionale Argumente an beliebigen Stellen innerhalb des Befehlskonstruktes zu definieren. Auch die Verwendung anderer Zeichen als eckige Klammern für die Spezifizierung eines optionalen Argumentes ist möglich. \item[xkeyval,keyval,kvoptions,pgfkeys] \index{Befehlsdeklaration}% \ChangedAt{v2.02:\RecPack \Package{xkeyval}} Das \KOMAScript"=Bundle lädt das Paket \Package{keyval}, um Optionen mit einer Schlüssel"=Wert"=Syntax deklarieren zu können. Zusätzlich wird von \TUDScript das Paket \Package{kvsetkeys} geladen, um auf nicht definierte Schlüssel reagieren zu können. Die Schlüssel"=Wert"=Syntax kann auch für eigens definierte Makros genutzt werden, um sich das exzessive Verwenden von optionalen Argumenten zu ersparen. Damit wäre folgende Definition möglich: \Macro*{newcommand}[% \Macro*{Befehl}[\OParameter{Schlüssel"=Wert"=Liste}\Parameter{Argument}]% ] Das Paket \Package{xkeyval} erweitert insbesondere die Möglichkeiten zur Deklaration unterschiedlicher Typen von Schlüsseln. Sollten die bereits durch \TUDScript geladenen Pakete \Package{keyval} und \Package{kvsetkeys} in ihrer Funktionalität nicht ausreichen, kann dieses Paket verwendet werden. Für die Entwicklung eigener Pakete, deren Optionen das Schlüssel"=Wert"=Format unterstützen, kann das Paket \Package{scrbase} genutzt werden. Soll aus einem Grund auf \KOMAScript{} gänzlich verzichtet werden, sind die beiden Pakete \Package{kvoptions} oder \Package{pgfkeys} eine Alternative. \item[scrlfile] \index{Paketabhängigkeiten} \ChangedAt{v2.05:\RecPack \Package{scrlfile}} Dieses \KOMAScript-Paket erlaubt es, auf das Laden von Klassen oder Paketen direkt davor oder danach zu reagieren, um beispielsweise Paketabhängigkeiten aufzulösen oder nach dem Laden eines bestimmten Paketes gezielt Befehle anzupassen. Mehr dazu ist im \scrguide zu finden. \item[calc] \index{Berechnungen}% Normalerweise lassen sich Berechnungen im Dokument lediglich mit Low"~Level"~\hologo{TeX}"=Primitiven durchführen. Dieses Paket stellt eine einfachere Syntax für Rechenoperationen der vier Grundrechenarten zur Verfügung. Zusätzlich werden neue Befehle zur Bestimmung der Höhe und Breite bestimmter Textauszüge definiert. \item[mwe,blindtext] \index{Minimalbeispiel|?}% \ChangedAt{v2.02:\RecPack \Package{mwe}} Mit dem Paket \Package{mwe} lassen sich sehr einfach Minimalbeispiele erzeugen, die sowohl Blindtexte als auch Abbildungen enthalten sollen. Werden keine Grafiken sondern lediglich Textabschnitte etc. benötigt, ist das Laden von \Package{blindtext} ausreichend. \item[filecontents] \index{Minimalbeispiel|?}% Dieses Paket erweitert die im \hologo{LaTeX}"=Kernel definierte Umgebung \Environment{filecontents}(\Package{filecontents})'none' dahingehend, dass bereits existierende Dateien überschrieben werden können. \item[pdfpages] Das Paket ermöglicht die Einbindung von einzelnen oder mehreren PDF"~Dateien. \item[crop] \index{Beschnittzugabe}\index{Schnittmarken}% Hiermit können eine Beschnittzugabe sowie Schnittmarken~-- beispielsweise für Poster~-- erzeugt werden. Hierzu ist in \autoref{sec:tips:crop} ein Beispiel zu finden. \item[pagecolor] \index{Farben}% Mit dem Paket kann die Hintergrundfarbe der Seiten im Dokument geändert werden. \item[afterpage] Der Befehl \Macro{afterpage}[\PParameter{\dots}](\Package{afterpage})'none' kann genutzt werden, um den Inhalt aus dessen Argument direkt nach der Ausgabe der aktuellen Seite auszuführen. \item[filemod] Wird entweder \Engine{pdfLaTeX} oder \Engine{LuaLaTeX} als Textsatzsystem eingesetzt, können mit diesem Paket das Änderungsdatum zweier Dateien miteinander verglichen und in Abhängigkeit davon definierbare Aktionen ausgeführt werden. \item[listings] \index{Quelltextdokumentation}% Dieses Paket eignet sich hervorragend zur Quelltextdokumentation in \hologo{LaTeX}. Es bietet die Möglichkeit, externe Quelldateien einzulesen und darzustellen sowie die Syntax in Abhängigkeit der verwendeten Programmiersprache hervorzuheben. Zusätzlich lässt sich ein Verzeichnis mit allen eingebundenen sowie direkt im Dokument angegebenen Quelltextauszügen erstellen. \ChangedAt{v2.02:\RecPack \Package{listings}} Wird \Package{listings} in Dokumenten mit UTF"~8"~Kodierung verwendet, sollte direkt nach dem Laden des Paketes in der Präambel Folgendes hinzugefügt werden: \begin{Code} \lstset{% inputencoding=utf8,extendedchars=true, literate=% {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1 {~}{{\textasciitilde}}1 {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1 } \end{Code}\vspace{-\baselineskip}% \item[coseoul] Mit diesem Paket kann die Struktur der Gliederung relativ erstellt werden. Es wird keine absolute Gliederungsebene (\Macro*{chapter}, \Macro*{section}) angegeben sondern die Relation zwischen vorheriger und aktueller Ebene (\Macro*{levelup}, \Macro*{levelstay}, \Macro*{leveldown}). \item[selinput,inputenc] \index{Eingabekodierung}% \index{Minimalbeispiel|?}% Die verwendete Eingabekodierung ist standardmäßig auf \PValue{utf8} festgelegt, was von (fast) allen \LaTeX-Editoren unterstützt wird. Dies sollte im Normalfall auch nicht geändert werden. Ältere Dokumente sind aber vielleicht noch in einer anderen Eingabekodierung gespeichert. Kann diese nicht geändert werden, so ist es für \Engine{pdfLaTeX} möglich, eine andere~-- im \hyperref[sec:tips:editor]{Editor (\autoref{sec:tips:editor})} vom Anwender eingestellte~-- Eingabekodierungen zu nutzen. Diese kann mit dem Paket \Package{selinput} (automatisch) für \LaTeX{} festgelegt werden Mit: \begin{Code} \usepackage{selinput} \SelectInputMappings{adieresis={ä},germandbls={ß}} \end{Code}\vspace{-\baselineskip}% wird es verwendet. Alternativ dazu lässt sich mit dem Paket \Package{inputenc} die Eingabekodierung manuell mit \Macro*{usepackage}[\OParameter{Eingabekodierung}\PParameter{inputenc}] einstellen. Das Paket \Package{fontenc} sollte in jedem Fall \emph{zuvor} geladen werden. \end{packages} \subsubsection{Bugfixes} \begin{packages} \item[scrhack] Das Paket behebt Kompatibilitätsprobleme der \KOMAScript-Klassen mit den Paketen \Package{hyperref}, \Package{float}, \Package{floatrow} und \Package{listings}. Es ist durchaus empfehlenswert, jedoch sollte unbedingt die Dokumentation beachtet werden. \item[scrwfile,morewrites] Falls der Fehler \texttt{No room for a new \textbackslash write} erscheint, kann dieser möglicherweise mit einem dieser beiden Pakete behonben werden. Mehr dazu in \autoref{sec:tips:write}. \item[mparhack] Zur Behebung falsch gesetzter Randnotizen wird ein Bugfix für \Macro{marginpar}(\Package{koma-script})'none' bereitgestellt. Alternativ dazu lässt sich auch \Package{marginnote} verwenden. \item[fix-cm] Sollte bei einer Schriftgrößenänderung eine oder mehrere Warnungen der Form \begin{Code} Font shape `T1/cmr/m/n' in size <...> not available \end{Code}\vspace{-\baselineskip}% erscheinen, so sollte das Paket \Package{fix-cm} \emph{vor} der Klasse geladen werden. Siehe dazu auch die Hinweise in \autoref{sec:tips:fontsize}. \end{packages}