diff options
Diffstat (limited to 'macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex')
-rw-r--r-- | macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex | 1054 |
1 files changed, 1054 insertions, 0 deletions
diff --git a/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex b/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex new file mode 100644 index 0000000000..13ce2d1ec8 --- /dev/null +++ b/macros/latex/contrib/tudscr/source/doc/tudscr-packages.tex @@ -0,0 +1,1054 @@ +\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}<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]<lm> + \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]<newtx> + \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]<pgf> + 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 + {~}{{\textasciitilde}}1 {ß}{{\ss}}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]<koma-script> + 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} |