diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex')
-rw-r--r-- | Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex | 2878 |
1 files changed, 2878 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex b/Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex new file mode 100644 index 00000000000..9d73bee604b --- /dev/null +++ b/Master/texmf-dist/source/latex/tudscr/doc/tutorials/treatise.tex @@ -0,0 +1,2878 @@ +\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} +\documentclass[% + english,ngerman,% + geometry=no,DIV=12,automark,% +]{tudscrartcl} +\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} +\usepackage[T1]{fontenc} +\usepackage{lmodern} + +\usepackage{tudscrman} +\lstset{% + inputencoding=utf8,extendedchars=true, + literate=% + {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 + {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 + {~}{{\textasciitilde}}1 {ß}{{\ss}}1 +} +\lstset{escapechar=§} +\TUDoptions{cdfont=false} +\KOMAoptions{headings=normal} + +\usepackage{tudscrsupervisor} +\usepackage{array} +\usepackage{tabu} +\usepackage{tabularx} +\usepackage{tabulary} +\usepackage{booktabs} +\usepackage{siunitx} +\sisetup{% + locale = DE,% + input-decimal-markers={,},% + input-ignore={.},% + group-separator={\,},% + group-minimum-digits=3% +} +\usepackage{xfrac} +\AfterPackage*{hyperref}{% + \usepackage[% + automake,% + xindy={language=german-din},% + acronym,% + symbols,% + nomain,% + translate=babel,% + nogroupskip,% + ]{glossaries} + \setStyleFile{\jobname-temp} + \renewcommand*{\glsglossarymark}[1]{} + \newignoredglossary{abbreviation} + \newcommand*\newabbreviation[4][]{% + \newacronym[type=abbreviation,#1]{#2}{#3}{#4}% + }% + \makeglossaries +} +\usepackage{csquotes} +\usepackage[backend=biber,style=alphabetic]{biblatex} +\addbibresource{\jobname.bib} +\DefineBibliographyStrings{ngerman}{urlseen = {Am:}} + +\usepackage{enumitem} + +\usepackage{caption} +\DeclareCaptionSubType[alph]{figure} +\DeclareCaptionSubType[alph]{table} +\usepackage{floatrow} +\renewcommand{\floatpagefraction}{0.7} + +\ifpdf + \usepackage{tikz} + \usetikzlibrary{chains} + \usetikzlibrary{decorations.markings} + \tikzset{on grid} +\fi + +\usepackage{pstricks,pst-node} + +\makeatletter +\newcommand*\pcolumnfuzz[1]{\pretocmd{\@endpbox}{\hfuzz=#1}{}{}} +\makeatother + +\usepackage[open,openlevel=0]{bookmark}[2011/12/02] + + +\ActivateWarningFilters[Tutorial]% +\begin{filecontents}{\jobname.bib} +@book{talbot2012, + author = {Nicola L. C. Talbot}, + title = {{\LaTeX} for Complete Novices}, + publisher = {Dickimaw Books}, + series = {Dickimaw {\LaTeX} Series}, + volume = {1}, + isbn = {978-1-909440-00-5}, + address = {Norfolk, UK}, + year = {2012}, + url = {http://www.dickimaw-books.com/latex/novices/}, + urldate = {2014-12-01}, +} +@book{talbot2013, + author = {Nicola L. C. Talbot}, + title = {Using {\LaTeX} to Write a PhD Thesis}, + publisher = {Dickimaw Books}, + series = {Dickimaw {\LaTeX} Series}, + volume = {2}, + isbn = {978-1-909440-02-9}, + address = {Norfolk, UK}, + year = {2013}, + url = {http://www.dickimaw-books.com/latex/thesis/}, + urldate = {2014-12-01}, +} +@online{reichert2012, + author = {Reichert, Axel and Voß, Herbert}, + title = {\LaTeX~-- Satz von Tabellen}, + organization = {Freie Universität Berlin}, + date = {2012-01-12}, + url = {http://userpage.fu-berlin.de/latex/Materialien/tabsatz.pdf}, + urldate = {2014-12-01} +} +@article{neubauer1996, + author = {Marion Neubauer}, + title = {Feinheiten bei wissenschaftlichen Publikationen~-- + Mikrotypographie"=Regeln, Teil~I}, + journaltitle = {Die \TeX{}nische Komödie}, + year = {1997}, + month = {2}, + volume = {4/96}, + pages = {23-40}, + url = {http://www.dante.de/tex/Dokumente/dtk-neubauer.pdf}, + urldate = {2014-12-01}, +} +@article{neubauer1997, + author = {Marion Neubauer}, + title = {Feinheiten bei wissenschaftlichen Publikationen~-- + Mikrotypographie"=Regeln, Teil~II}, + journaltitle = {Die \TeX{}nische Komödie}, + year = {1997}, + month = {5}, + volume = {1/97}, + pages = {25--44}, + url = {http://www.dante.de/tex/Dokumente/dtk-neubauer.pdf}, + urldate = {2014-12-01}, +} +@online{struckmann2007, + author = {Struckmann, Werner}, + title = {Einige typographische Grundregeln und ihre Umsetzung in \LaTeX}, + date = {2007-09-03}, + url = {http://www2.informatik.hu-berlin.de/sv/lehre/typographie.pdf}, + urldate = {2014-12-01} +} +@online{bier2009, + author = {Bier, Christoph}, + title = {typokurz~-- Einige wichtige typografische Regeln}, + date = {2009-05-21}, + url = {http://zvisionwelt.wordpress.com/downloads/#typokurz}, + urldate = {2014-12-01} +} +\end{filecontents} +\DeactivateWarningFilters[Tutorial]% + + +\begin{document} +\date{17.12.2014} +\author{Falk Hanisch\thanks{\noexpand\scriptsize\noexpand\Email{\tudscrmail}}} +\title{% + Ein Anwenderleitfaden für das Erstellen einer wissenschaftlichen Abhandlung% +} +\makeatletter +\begingroup% + \def\and{, }% + \let\thanks\@gobble% + \let\footnote\@gobble% + \hypersetup{% + pdfauthor = {\@author},% + pdftitle = {\@title},% + pdfsubject = {Tutorial für \hologo{LaTeXe}},% + pdfkeywords = {LaTeX, \TUDScript, Tutorial, Anwenderleitfaden},% + }% +\endgroup% +\makeatother +\StartTutorial[% + \begin{abstract}\noindent + Der Versuch, ein allumfassendes Tutorial für eine wissenschaftliche Arbeit + zur Verfügung zu stellen gleicht der beschwerlichen Suche nach einer + eierlegenden Wollmilchsau. Es ist quasi nicht möglich, alle potentiellen + Anforderungen an eine wissenschaftliche Arbeit in einem Dokument abzudecken, + insbesondere weil es für diese fast von jedem Lehrstuhl mehr oder weniger + unterschiedliche Vorgaben zu Formatierung und Layout gibt. Dennoch soll hier + versucht werden, einen Großteil der für gewöhnlich auftretenden Erfordernisse + zu bearbeiten. + + Dieses Tutorial hat \emph{nicht} die Intention, \hologo{LaTeX}-Einsteigern + sämtliche Grundlagen zu erläutern. Vielmehr wird davon ausgegangen, dass Sie + bereits erste Erfahrungen mit \hologo{LaTeXe} gesammelt haben. Dennoch wird + versucht, alle Schritte möglichst leicht nachvollziehbar zu gestalten. Sollte + Ihnen beim Lesen und Durcharbeiten des Tutorials etwas auf- oder missfallen, + so dürfen Sie mich gerne per E-Mail kontaktieren. Auch Anregungen und Wünsche + dürfen sie mir gegenüber gerne kommunizieren. + + Für absolute Neueinsteiger gibt es einige freie Tutorials, welche die ersten + Schritte mit \hologo{LaTeXe} stark erleichtern. Sehr empfehlenswert ist die + ausführliche \hrfn{http://www.fadi-semmo.de/latex/workshop/}{Workshop-Reihe} + von Fadi~Semmo. Außerdem stellt Nicola~L.~C.~Talbot sehr gute Tutorials für + \hrfn{http://www.dickimaw-books.com/latex/novices/}{\hologo{LaTeX}-Novizen} + \cite{talbot2012} sowie + \hrfn{http://www.dickimaw-books.com/latex/thesis/}{Dissertationen} + \cite{talbot2013} zur freien Verfügung. + + In erster Linie ist dieser Leitfaden für Anwender gedacht, die für ihre + wissenschaftliche Arbeit eine \TUDScript"=Dokumentklasse verwenden wollen. + Das vorgestellte Vorgehen kann jedoch~-- natürlich mit gewissen Abstrichen~-- + auch mit anderen Klassen, insbesondere denen aus dem \KOMAScript"=Bundle, + umgesetzt werden. Viele der hier verwendeten Optionen und Befehle aus dem + \TUDScript-Bundle werden nur sporadisch in ihrer Grundfunktion erläutert. + Eine detaillierte Erläuterung lässt sich jedoch jederzeit sehr einfach über + die türkisfarbigen Hyperlinks im \manualhyperref{}{\TUDScript-Handbuch} + öffnen. Des Weiteren wird in auf eine Vielzahl von Paketen verwiesen, deren + Dokumentation sich entweder über den magentafarbigen Hyperlink auf das + \href{http://www.ctan.org/}{Comprehensive TeX Archive Network (CTAN)} oder + alternativ über die Kommandozeile respektive das Terminal mit dem Aufruf + \PValue{texdoc }\PName{Paket} direkt lokal öffnen lässt. + + Der Anwenderleitfaden muss nicht zwingend vollständig nachvollzogen werden. + Dieser ist in einzelne Abschnitte untergliedert, damit Sie sich bestimmte + Aspekte erarbeiten können. Sollten Querbezüge zu den einzelnen Abschnitten + bestehen, werden diese auch genannt. Zu guter Letzt findet sich am Ende + dieses Dokumentes das komplette Tutorial als ausführbarer Quelltext. + \end{abstract} +] +\tableofcontents +\listoffigures +\listoftables + + + +\section{Einleitung} +\label{sec:introduction} +Zu Beginn werden einige Pakete geladen, die quasi in jedem neu erstellten +Dokument verwendet werden sollten. Alle weiteren in diesem Tutorial genutzten +und/oder empfohlenen Pakete werden in den relevanten Abschnitten des Tutorials +genauer erläutert. + +Den Anfang macht das Paket \Package{hyphsubst}. Dieses wird für eine wesentlich +verbesserte Worttrennung für die deutsche Sprache benötigt und muss bereits +\emph{vor} der Klasse geladen werden, damit es problemlos funktioniert. In +\autoref{sec:hyphenation} können Sie außerdem weitere Informationen zum Thema +\emph{Worttrennung} finden. +% +\begin{Preamble} +\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} +\end{Preamble} +% +Beim Laden der Klasse mit \Macro{documentclass} können Sie globale Optionen +angeben. Diese werden sowohl an die Klasse selbst weitergereicht als auch allen +in der Präambel geladenen Pakete zur Verfügung gestellt. Falls das Paket +\Package{babel} für die Sprachauswahl im Dokument verwendet wird, sollten auf +alle Fälle die verwendeten Sprachen als Klassenoption angegeben werden, wobei +die zuletzt angegebene als aktuelle Sprache aktiviert wird. Dadurch werden +diese nicht nur an das Paket \Package{babel} sondern auch an andere Pakete +übergeben, welche sprachspezifische Einstellungen vornehmen. +% +\begin{Preamble} +\documentclass[english,ngerman]{tudscrreprt} +\usepackage{babel} +\end{Preamble} +% +Bei der Verwendung von \hologo{LaTeXe} sollte zum einen die Eingabekodierung +des erstellten Datei spezifiziert werden. Das Paket \Package{selinput} erkennt +automatisch, welche Kodierung der genutzte Editor verwendet. Zum anderen werden +die Schriften in der Ausgabe ebenfalls kodiert. Mit dem Paket \Package{fontenc} +lässt sich die verwendete Schriftkodierung für das Dokument spezifizieren, +wobei im Normalfall die europäischen Zeichen mit der Option~\Option{T1} +aktiviert werden sollten. +% +\begin{Preamble} +\usepackage{selinput} +\SelectInputMappings{adieresis={ä},germandbls={ß}} +\usepackage[T1]{fontenc} +\end{Preamble} +% +Das Paket \Package{fixltx2e} behebt einige Fehler im \hologo{LaTeXe}-Kernel. +In neuen Dokumenten kann es bedenkenlos geladen werden. +% +\begin{Preamble} +\usepackage{fixltx2e} +\end{Preamble} +% +Für die \KOMAScript-Klassen wird außerdem das Paket \Package{scrhack} +bereitgestellt. Dieses behebt einige Probleme bei der Kompatibilität mit +anderen Paketen bezüglich des Erstellens von Verzeichnissen. Deshalb sollte +dieses frühzeitig in der Präambel geladen werden. +% +\begin{Preamble} +\usepackage{scrhack} +\end{Preamble} +% +Damit sind die allgemein notwendigen Pakete eingebunden. Es werden zwar weitere +benötigt, diese werden allerdings in den einzelnen Abschnitten dieses Tutorials +aufgeführt. + + + +\section{Makrotypographie} +\subsection{Satzspiegel} +Gleich zu Beginn und bevor das eigentliche Verfassen der Arbeit beginnt, sollte +sich der Verfasser Gedanken über das zu nutzenden Layout und den Satzspiegel +machen, um bei der Finalisierung des Dokumentes keine böse Überraschung bei +Seitenumbrüchen oder der Position von Gleitobjekten zu erleben. + +Zuallererst gilt zu entscheiden, ob das Dokument einseitig oder beidseitig +gesetzt werden soll. Ist Letzteres der Fall, so sollte \Option{twoside} als +Klassenoption angegeben werden. Im nächsten Schritt ist der zu verwendenden +Satzspiegel festzulegen. Hierfür kann die Option \Option*{geometry} verwendet +werden, welche im \TUDScript-Handbuch beschrieben wird. Normalerweise wird das +Dokument im asymmetrischen Layout des \CDs gesetzt. + +Dieses Verhalten kann mit \Option*{geometry}[false] deaktiviert werden und der +Satzspiegel wird durch das Paket \Package{typearea} nach typographischen +Gesichtspunkten konstruiert. Dabei ist die \KOMAScript"=Option \Option{DIV} +maßgeblich für die Aufteilung des Satzspiegels verantwortlich. Des Weiteren +spielt die \KOMAScript"=Option \Option{BCOR} für die Bindekorrektur eine Rolle. +Diese wird in \autoref{sec:bcor} erläutert. + +\subsection{Änderung des Zeilenabstandes (Durchschuss)} +Auf die Änderung des standardmäßigen Zeilenabstandes sollte aus typographischer +Sicht bei der Verwendung einer Standardschrift im Normalfall verzichtet werden. +Die Gründe hierfür werden im Handbuch von \TUDScript bei der Vorstellung des +Paketes \Package*{setspace} erläutert, welches im Zweifelsfall für dieses +Anliegen den Befehl \Macro{setstretch} bereitstellt. Wird ein Dokument in der +\Univers-Hausschrift der \TnUD gesetzt, sollte der Wert von \Macro{setstretch} +im Bereich 1.05--1.1 liegen. + +\subsection{Bindekorrektur} +\label{sec:bcor} +Falls die Arbeit nach der Fertigstellung gebunden werden soll, so ist auf den +notwendigen Binderand zu achten, quasi der Teil einer Seite, welcher durch die +Bindung \enquote{verschwindet} und nicht mehr als sichtbarer Teil der Seite +vorhanden ist. Als Faustregel gilt, dass die erforderliche Bindekorrektur in +etwa der halben Höhe des Buchblocks entsprechen sollte. Dessen Höhe wiederum +ist abhängig von der Anzahl der Seiten sowie der Papierdichte. + +Wird qualitativ höherwertiges Papier mit einer Dichte von \SI{100}{g/m^2} +verwendet, so entsprechen 100~Blatt einer Buchblockhöhe von zirka~\SI{12}{mm}. +Dementsprechend wäre in diesem Beispiel eine Bindekorrektur von~\SI{6}{mm} +notwendig, welche sich mit der Klassenoption \Option*{BCOR}[6mm] einstellen +ließe. Sollte die erwartete Seitenzahl davon abweichen, kann die einzustellende +Bindekorrektur linear skaliert werden. Für differierende Papierdichten sollte +die Buchblockhöhe für die geschätzte Gesamtseitenanzahl in Erfahrung gebracht +werden. + + + + + + +\section{Umschlagseite und Titel} +Die Umschlagseite und der Titel sind sich in ihrer Gestalt sehr ähnlich. +Allerdings gibt es ein paar kleine Unterschiede. Einerseits werden auf dem +Cover weniger Informationen als auf der Titelseite ausgegeben. Andererseits +wird der Titel immer im Satzspiegel des restlichen Dokumentes ausgegeben, +wohingegen die Umschlagseite~-- ohne weitere Optionen~-- im asymmetrischen +Layout des \CDs der \TnUD erscheint. Wie dieses Verhalten geändert werden kann, +ist im Handbuch für \Macro*{makecover} erläutert. Die resultierende Ausgabe des +nachfolgenden Quelltextauszugs ist in \autoref{fig:title} zu sehen und stellt +eine mögliche Ausprägung von Umschlagseite und Titel dar. +% +\begin{figure} +\IncludeStandalone{Title}[1,2] +\caption{Umschlagseite und Titel} +\label{fig:title} +\end{figure} + +\begin{Trunk!}{Title} +\faculty{Juristische Fakultät} +\department{Fachrichtung Strafrecht} +\institute{Institut für Kriminologie} +\chair{Lehrstuhl für Kriminalprognose} +\title{% + Entwicklung eines optimalen Verfahrens zur Eroberung des + Geldspeichers in Entenhausen +} +\thesis{master} +\graduation[M.Sc.]{Master of Science} +\author{% + Mickey Mouse + \matriculationnumber{12345678} + \dateofbirth{2.1.1990} + \placeofbirth{Dresden} + \course{Klinische Prognostik} + \discipline{Individualprognose} +\and% + Donald Duck + \matriculationnumber{87654321} + \dateofbirth{1.2.1990} + \placeofbirth{Berlin} + \course{Statistische Prognostik} + \discipline{Makrosoziologische Prognosen} +} +\matriculationyear{2010} +\supervisor{Dagobert Duck \and Mac Moneysac} +\professor{Prof. Dr. Kater Karlo} +\date{10.09.2014} + +\makecover +\maketitle + +\end{Trunk!} + + + +\section{Vor- und Nachspann} +In den folgenden Unterabschnitten werden Elemente vorgestellt, welche häufig +als Bestandteil einer wissenschaftlichen (Abschluss"~)Arbeit gefordert werden, +wobei meistens nur eine Teilmenge verlangt wird. Die Platzierung oder Position +der vorgestellten Elemente innerhalb der Arbeit ist nicht eindeutig durch eine +Norm oder dergleichen festgelegt. Vielmehr gibt es meist eine Richtlinie vom +verantwortlichen Prüfungsamt oder eine konkrete Vorgabe des wissenschaftlichen +Mitarbeiters respektive betreuenden Hochschullehrers. + +Verwenden Sie für ihre Arbeit eine Buchklasse, so können die entsprechenden +Abschnitte mit \Macro{frontmatter} (Vorspann), \Macro{mainmatter} (Hauptteil) +und \Macro{backmatter} (Nachspann) gekennzeichnet werden. Einen Anhang starten +Sie mit \Macro{appendix}, womit unter anderem die Kapitelnummerierung auf +Großbuchstaben umgeschaltet wird (siehe \scrguide*). + + +\subsection{Aufgabenstellung} +\label{sec:task} +Das Erstellen der Aufgabenstellung einer Abschlussarbeit im \CD der \TnUD muss +das Paket \Package*{tudscrsupervisor} geladen werden. +% +\begin{Preamble} +\usepackage{tudscrsupervisor} + +\end{Preamble} +% +Dieses Paket stellt die Umgebung \Environment*{task} sowie den Befehl +\Macro*{taskform} bereit. Bei beiden Varianten wird zu Beginn eine Tabelle mit +Informationen zum Autor erzeugt. Am Ende werden der oder die Betreuer der +Arbeit sowie Professor und gegebenenfalls der Prüfungsausschussvorsitzende +ausgegeben. Mit der \Environment*{task}-Umgebung kann zwischen dem Kopf und dem +Fuß ein beliebiger Inhalt gesetzt werden. Der Befehl \Macro*{taskform} hingegen +erzeugt eine standardisierte Ausgabe, wobei das zweite obligatorische Argument +in der \Environment{itemize}-Umgebung verwendet wird und somit \Macro{item} zu +nutzen ist. Das Resultat des folgenden Quelltextes ist in \autoref{fig:task} zu +sehen. +% +\begin{figure} +\IncludeStandalone{Task}[1,2] +\caption{Aufgabenstellung in freier und standardisierter Form} +\label{fig:task} +\end{figure} + +\begin{Hint!}{Task} +\faculty{Juristische Fakultät} +\department{Fachrichtung Strafrecht} +\institute{Institut für Kriminologie} +\chair{Lehrstuhl für Kriminalprognose} +\title{% + Entwicklung eines optimalen Verfahrens zur Eroberung des + Geldspeichers in Entenhausen +} +\thesis{master} +\author{% + Mickey Mouse + \matriculationnumber{12345678} + \course{Klinische Prognostik} + \discipline{Individualprognose} +\and% + Donald Duck + \matriculationnumber{87654321} + \course{Statistische Prognostik} + \discipline{Makrosoziologische Prognosen} +} +\matriculationyear{2010} +\issuedate{1.2.2015} +\duedate{1.8.2015} +\supervisor{Dagobert Duck \and Mac Moneysac} +\chairman{Prof. Dr. Primus von Quack} +\professor{Prof. Dr. Kater Karlo} + +\newcommand\taskcontent{% + Momentan ist das besagte Thema in aller Munde. Insbesondere wird es + gerade in vielen~-- wenn nicht sogar in allen~-- Medien diskutiert. + Es ist momentan noch nicht abzusehen, ob und wann sich diese Situation + ändert. Eine kurzfristige Verlagerung aus dem Fokus der Öffentlichkeit + wird nicht erwartet. + + Als Ziel dieser Arbeit soll identifiziert werden, warum das Thema + gerade so omnipräsent ist und wie man diesen Effekt abschwächen + könnte. Zusätzlich sollen Methoden entwickelt werden, wie sich ein + ähnlicher Vorgang zukünftig vermeiden ließe. +} + +\begin{task} +\smallskip +\par\noindent +\taskcontent +\end{task} + +\taskform[pagestyle=empty]{\taskcontent}{% + \item Recherche + \item Analyse + \item Entwicklung eines Konzeptes + \item Anwendung der entwickelten Methodik + \item Dokumentation und grafische Aufbereitung der Ergebnisse +} + +\end{Hint!} +\begin{Trunk+} +\newcommand\taskcontent{% + Momentan ist das besagte Thema in aller Munde. Insbesondere wird es + gerade in vielen~-- wenn nicht sogar in allen~-- Medien diskutiert. + Es ist momentan noch nicht abzusehen, ob und wann sich diese Situation + ändert. Eine kurzfristige Verlagerung aus dem Fokus der Öffentlichkeit + wird nicht erwartet. + + Als Ziel dieser Arbeit soll identifiziert werden, warum das Thema + gerade so omnipräsent ist und wie man diesen Effekt abschwächen + könnte. Zusätzlich sollen Methoden entwickelt werden, wie sich ein + ähnlicher Vorgang zukünftig vermeiden ließe. +} +\taskform[pagestyle=empty]{\taskcontent}{% + \item Recherche + \item Analyse + \item Entwicklung eines Konzeptes + \item Anwendung der entwickelten Methodik + \item Dokumentation und grafische Aufbereitung der Ergebnisse +} + +\end{Trunk+} + + +\subsection{Zusammenfassung} +Häufig wird zu Beginn einer wissenschaftliche Arbeit die Motivation und der +Inhalt dieser zusammengefasst, um den Leser die Thematik der Abhandlung +vorzustellen. in den meisten Fällen wird diese dabei in deutscher und +englischer Sprache verfasst. Hierfür stellt \KOMAScript{} bereits die Umgebung +\Environment*{abstract} bereit. Vielfach wird der Wunsch geäußert, sowohl die +deutsche als auch die englische Zusammenfassung auf derselben Seite zu setzen. +Diese Variante kann mithilfe der \TUDScript-Klassen sehr einfach umgesetzt +werden, wie der nachfolgende Quelltextauszug zeigt. Die resultierende Ausgabe +ist in \autoref{fig:abstr} zu sehen. +% +\begin{figure} +\centering +\IncludeStandalone[width=.5\textwidth]{Abstract} +\caption{Zusammenfassung in deutscher und englischer Sprache} +\label{fig:abstr} +\end{figure} + +\begin{Trunk!}{Abstract} +\TUDoption{abstract}{multiple,section} +\begin{abstract} + Dies ist der deutschsprachige Teil der Zusammenfassung, in dem die + Motivation sowie der Inhalt der nachfolgenden wissenschaftlichen + Abhandlung kurz dargestellt werden. +\nextabstract[english] + This is the english part of the summary, in which the motivation and + the content of the following academic treatise are briefly presented. +\end{abstract} + +\end{Trunk!} + + + +\subsection{Selbstständigkeitserklärung und Sperrvermerk} +Für die meisten Abschlussarbeiten an der \TnUD wird vom Verfasser eine +Selbstständigkeitserklärung verlangt. Für diese wird ein Standardtext +bereitgestellt. Dieser kann mit dem Befehl \Macro*{confirmation} ausgegeben +werden. Wurde das Thema in Kooperation mit einem Unternehmen bearbeitet, so +wird zumeist auch ein Sperrvermerk gefordert, welcher mit \Macro*{blocking} +erzeugt werden kann. Mit \Macro*{declaration} werden beide Erklärungen direkt +nacheinander erzeugt. Die verwendete Überschrift und ein möglicher Eintrag in +das Inhaltsverzeichnis können über die Option \Option*{declaration} reguliert +werden. Eine mögliche Ausprägung der Erklärungen ist in \autoref{fig:decl} +abgebildet. +% +\begin{figure} +\centering +\IncludeStandalone[width=.5\textwidth]{Declaration} +\caption{Selbstständigkeitserklärung und Sperrvermerk} +\label{fig:decl} +\end{figure} + +\begin{Hint!}{Declaration} +\title{% + Entwicklung eines optimalen Verfahrens zur Eroberung des + Geldspeichers in Entenhausen +} +\author{Mickey Mouse\and Donald Duck} +\declaration[company=FIRMA] +\end{Hint!} +\begin{Trunk+} +\declaration[company=FIRMA] + +\end{Trunk+} + +\subsection{Inhalts-, Abbildungs-, und Tabellenverzeichnis} +Das Inhaltsverzeichnis wird mit dem \hologo{LaTeX}"=Standardbefehl +\Macro{tableofcontents} erzeugt und führt die Gliederung des erstellten +Dokumentes entsprechend der verwendeten Befehle (\Macro{part}, \Macro{addpart}, +\Macro{chapter}, \Macro{addchap}, \Macro{section}, \Macro{addsec} etc.) auf. +Wurde das Paket \Package{hyperref} geladen, so werden im Inhaltsverzeichnis +PDF-Hyperlinks auf die einzelnen Abschnitte erzeugt. + +Sowohl Abbildungen als auch Tabellen werden in \hologo{LaTeX} normalerweise +mit speziellen Umgebungen~-- \Environment{figure} und \Environment{table}~-- +eingebunden. Innerhalb dieser sogenannten Gleitumgebungen kann der Befehl +\Macro{caption}\OParameter{Verzeichniseintrag}\Parameter{Bezeichnung} genutzt +werden, um diesen eine Bezeichnung hinzuzufügen. Mit \Macro{listoffigures} +beziehungsweise \Macro{listoftables} lassen sich Verzeichnisse erstellen, in +denen alle Gleitobjekte des jeweiligen Typs ausgegeben werden, falls diese denn +eine Bezeichnung hinzugefügt wurde. Sollen Abbildungen oder Tabellen außerhalb +ihrer angestammten Gleitumgebung genutzt und benannt werden, kann dies mit dem +Befehl \Macro{captionof}\Parameter{Typ}\OParameter{Verzeichniseintrag} +\Parameter{Bezeichnung} erfolgen. Weitere Informationen diesbezüglich sind der +\KOMAScript"=Anleitung \scrguide zu entnehmen. In \autoref{sec:floats} wird +außerdem genauer auf die Verwendung von Gleitumgebungen eingegangen. +% +\begin{Trunk} +\tableofcontents +\listoffigures +\listoftables + +\end{Trunk} +\begin{Trunk+} +\printacronyms[style=acrotabu] +\printsymbols[style=symblongtabu] + +\setchapterpreamble{% + \renewcommand*\dictumwidth{.4\textwidth}% + \dictum[Johann Wolfgang von Goethe]{% + Es irrt der Mensch, solang er strebt.% + }% + \bigskip +} +\chapter{Einleitung} +Nachdem nun der Vorspann und~-- bis auf das Literaturverzeichnis am +Ende des Dokumentes auf Seite~\pageref{sec:bibliography}~-- alle +Verzeichnisse erfolgreich ausgegeben wurden, wird nun die Verwendung +der weiteren Umgebungen und Befehle demonstriert, welche im Tutorial +\texturn{treatise.pdf} vorgestellt wurden. + +\end{Trunk+} + + +\subsection{Abkürzungs- und Symbolverzeichnis} +\label{sec:glossaries} +Für die Auszeichnung von Abkürzungen gibt es zwei sehr gute Pakete, die dieses +Unterfangen stark vereinfachen. Die einfachere~-- jedoch nicht so mächtige~-- +der beiden Varianten ist die Nutzung des Paketes \Package{acro}. Sollen nur +Abkürzungen und gegebenenfalls eine sortierte Liste dieser gesetzt werden, ist +dieses allerdings absolut ausreichend. Für ein Symbolverzeichnis lässt sich in +dieser Variante das Paket \Package{nomencl} nutzen. Dieses bietet meiner +Meinung nach jedoch keine großen Vorteile, stattdessen kann auch einfach eine +Tabelle händisch erzeugt werden. Das Paket \Package{acro} ist sehr gut und +ausführlich dokumentiert. Deshalb wird hier auf eine exemplarische Erläuterung +verzichtet und stattdessen auf dessen Dokumentationen verwiesen. + +Die andere Möglichkeit ist die Nutzung des Paketes \Package{glossaries}, das +eine große Zahl an Einstellmöglichkeiten und Optionen besitzt, allerdings auch +etwas Zeit für die Einarbeitung und Studium der Dokumentation benötigt. Der +ursprüngliche Einsatzzweck dieses Paketes ist das Setzen eines fachsprachlichen +oder technischen Glossars. Es bietet zusätzlich die Mittel zum Erzeugen eines +Abkürzungs- sowie Symbolverzeichnis. Es soll folgend hier kurz erläutert +werden, wie das Paket zu verwenden ist. Für weiterführende Beispiele sollte +die Dokumentationen zu Rate gezogen werden, welche dahingehend keine Wünsche +offen lässt. + +Das Paket \Package{glossaries} sollte immer \emph{nach} \Package{hyperref} +geladen werden. Entweder Sie achten explizit darauf oder Sie verwenden den +Befehl \Macro{AfterPackage*} aus dem \KOMAScript-Bundle. Mit diesem können Sie +die Ausführung von Quelltext bis zum Laden eines Paketes verzögern. Allerdings +ist darauf zu achten, dass der Quelltext nur ausgeführt wird, wenn auch das +avisierte Zielpaket geladen wird. Die für \Package{glossaries} verwendeten +Optionen werden kurz erläutert. +% +\begin{Preamble+} +\AfterPackage*{hyperref}{% +\end{Preamble+} +\begin{Preamble} +\usepackage[% +\end{Preamble} +% +Das Programm \Application{makeindex} wird im Normalfall durch die genutzte +\hologo{LaTeX}"=Distribution bereitgestellt und für das alphabetische Sortieren +der erstellten Listen verwendet. Mit der Paketoption \Option{automake} erfolgt +der automatische Aufruf von \Application{makeindex} mit den passenden +Einstellungen für alle Verzeichnisse. Alternativ dazu kann die Option +\Option{xindy} aktiviert werden, welche \Application{xindy} anstelle von +\Application{makeindex} für das Sortieren verwendet. Dieses Programm bietet +unter anderem eine Unterstützung von Unicode sowie die Möglichkeit, nach +sprachabhängigen Regeln zu sortieren. Allein für die deutsche Sprache gibt es +beispielsweise zwei verschiedene Varianten~-- nach DIN und nach Duden~-- zum +alphabetischen Sortieren. Ich persönlich würde~-- aufgrund der genannten +Vorteile~-- der Verwendung von \Application{xindy} immer den Vorzug geben. + +Leider wird das Programm \Application{xindy} lediglich mit den Distributionen +\Distribution{\hologo{TeX}~Live} und \Distribution{Mac\hologo{TeX}} jedoch +nicht mit \Distribution{\hologo{MiKTeX}} geliefert. Soll \Application{xindy} +mit der letztgenannten Distribution genutzt werden, muss diese Anwendung +manuell installiert werden. +Für das Erstellen der Glossare mit \Application{xindy} sollte das Perl"=Skript +\Application{makeglossaries} verwendet werden, welches alle notwendigen +Optionen an die Anwendung weiterleitet. Treten Probleme bei der Erzeugung der +einzelnen Glossare auf, sollte die Dokumentation von \Package{glossaries} +weiterhelfen können. + +% +\begin{Preamble} + automake,% +% mit Tex Live einfach verwendbar +% xindy={language=german-din}, +\end{Preamble} +% +Die Optionen \Option{acronym} und \Option{symbols} erzeugen die Glossare +beziehungsweise die Verzeichnisse für Abkürzungen und Symbole. Die Option +\Option{nomain} wird verwendet, weil in diesem Tutorial kein zusätzliches +technisches Glossar erzeugt werden soll. +% +\begin{Preamble} + acronym,% Abkürzungen + symbols,% Formelzeichen + nomain,% kein Glossar +\end{Preamble} +% +Mit der Option \Option{translate}[babel] werden die Überschriften der Glossare +in der Dokumentsprache gesetzt, mit \Option{nogroupskip} kann der automatische +Abstand zwischen den Einträgen zur Gruppierung innerhalb eines Glossars +entfernt werden. Die Option \Option{toc} fügt die Verzeichnisse dem +Inhaltsverzeichnis hinzu, \Option{section} bestimmt die Gliederungsebene der +Überschrift. +% +\begin{Preamble} + translate=babel,% + nogroupskip,% + toc,% + section=chapter,% +\end{Preamble} +% +Damit sind alle verwendeten Optionen erläutert. Schließlich sorgt der Befehl +\Macro{makeglossaries} für das Erstellen der optionsabhängigen Stildateien für +\Application{makeindex} respektive \Application{xindy} sowie das Erzeugen der +benötigten Hilfsdateien. +% +\begin{Preamble} +]{glossaries} +\makeglossaries + +\end{Preamble} +% +Damit wäre der erste Teil zur Initialisierung überstanden und wir können zum +eigentlichen Problem kommen. Wie erstellt man nun ein Abkürzungs- und/oder +Symbolverzeichnis? + +\subsubsection{Abkürzungsverzeichnis} +Das Paket \Package{glossaries} stellt für die Definition von Abkürzungen einen +speziellen Befehl bereit. Mit\Macro{newacronym}\LParameter\Parameter{Label}% +\Parameter{Abkürzung}\Parameter{Wortgruppe} wird eine Abkürzung definiert und +kann später über \Parameter{Label} genutzt werden. Die möglichen optionalen +Parameter können in der Dokumentation zu \Package{glossaries} nachgeschlagen +werden. Für ein kleines Beispiel werden drei Abkürzungen erstellt\dots +% +\begin{Trunk+} +\section{Die Verwendung von Akronymen und Symbolen} +\end{Trunk+} +\begin{Trunk*} +\newacronym{apsp}{APSP}{All-Pairs Shortest Path} +\newacronym{spsp}{SPSP}{Single-Pair Shortest Path} +\newacronym{sssp}{SSSP}{Single-Source Shortest Path} + +\end{Trunk*} +% +\dots und diese in einer kurzen Textpassage mit \Macro{gls}\Parameter{Label} +verwendet. +% +\begin{Trunk*} +In der Graphentheorie wird häufig die Lösung des Problems des kürzesten +Pfades zwischen zwei Knoten gesucht. Dieses Problem wird häugig auch +mit \gls{spsp} bezeichnet. Es lässt sich auf die Variationen \gls{sssp} +und \gls{apsp} erweitern. Für die Lösung von \gls{spsp}, \gls{sssp} +oder \gls{apsp} kommen unterschiedliche Algorithmen zum Einsatz. + +\end{Trunk*} +% +Gut zu sehen ist, dass sich die Ausgabe der Abkürzung bei der ersten Verwendung +mit \Macro{gls} von der zweiten~-- und jeder weiteren~-- unterscheidet. Das +Verhalten lässt sich über verschiedene Stile mit \Macro{setacronymstyle} +anpassen. Die Ausgabe einer Liste aller Abkürzungen erfolgt mit: +% +\begin{Hint} +\printacronyms +\end{Hint} +\begin{quoting}[rightmargin=0pt] +\vspace*{-\baselineskipglue} +\glsdisablehyper +\InputCode +\end{quoting} +% +Dabei werden die Akronyme in einer \Environment{description}"=Umgebung gesetzt, +was absolut ausreichend ist. Mir persönlich ist allerdings die Darstellung in +einer quasi-tabellarischen Form lieber. Dabei soll der Stil mit fettgedruckten +Abkürzungen beibehalten werden. Das \Package{glossaries}"=Paket stellt zwar +auch eine Vielzahl an Stilen in Tabellenform bereit, allerdings nicht in dem +gewünschten. Deshalb wird nachfolgend gezeigt, wie sich ein eigener Stil in +Tabellenform kreieren lässt. + +Es bieten sich die Umgebungen \Environment{tabularx} oder \Environment{tabu} +an, bei denen die Spaltenbreite teilweise automatisch berechnet wird, um sich +manuelle Formatierungsarbeiten zu sparen. Folgend werden beide Varianten +vorgestellt. Falls Sie noch keine Erfahrungen mit dem Tabellensatz in +\hologo{LaTeXe} haben, lohnt sich vorher ein Blick in \autoref{sec:tables}, um +die verwendeten Befehle und Umgebungen zu verstehen. Wie Sie Stile definieren, +die auch Seitenumbrüche in der Tabelle zulassen, können Sie etwas später bei +Symbolverzeichnissen in diesem \autorefname[sec:glossaries] erfahren. + +\minisec{Eigener Stil mit \Environment{tabularx}} +Für das Definieren eines eigenen Glossarstils wird \Macro{newglossarystyle} +verwendet, wobei für den neuen Stils die Umgebung \Environment{theglossary} +umdefiniert wird. Als erstes kommt die Tabellenumgebung \Environment{tabularx} +aus dem gleichnamigen Paket, welches in \autoref{sec:tabularx} vorgestellt +wird, zum Einsatz. + +Es werden in der Tabelle drei Spalten definiert. Die erste und letzte Spalte +sind schlicht linksbündige Standardspalten~(\PValue{l}). In diesen werden die +Abkürzungen selbst sowie die Seitenzahlen eingetragen. Die Verwendung +von~\PValue{@\{\}} führt dazu, dass der normalerweise vor der ersten und nach +der letzten Spalte eingefügte Abstand von \Length{tabcolsep} entfällt. Die +Breite der Spalte vom Typ~\PValue{X} wird automatisch berechnet. + +Aufgrund der Implementierung von \Environment{tabularx} lässt sich diese nicht +als verschachtelte Umgebung verwenden. Allerdings kann man stattdessen die mit +\Macro{tabularx} und \Macro{endtabularx} die Low"~Level"~Variante nutzen. Die +Definition des neuen Stils \PValue{acrotabularx} wird nachfolgend ausgegeben, +die weitergehende Erläuterung schließt sich daran an. +% +\CodeHook{\let\newglossarystyle\renewglossarystyle} +\begin{Hint*} +\newglossarystyle{acrotabularx}{% + \renewenvironment{theglossary}{% + \tabularx{\linewidth}{@{}lXl@{}}% + }{% + \endtabularx\par\bigskip% + }% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glsgroupskip}{}% + \renewcommand*{\glossentry}[2]{% + \glsentryitem{##1}% Entry number if required + \glstarget{##1}{\sffamily\bfseries\glossentryname{##1}} & + \glsentrydesc{##1} & + ##2\tabularnewline + } +} + +\end{Hint*} +% +Der Rest des Stils ist schnell erläutert. Zunächst wird auf Tabellenköpfe +(\Macro{glossaryheader}) sowie Überschriften und Abstände bei Gruppierungen +(\Macro{glsgroupheading} und \Macro{glsgroupskip}) verzichtet. Der Befehl +\Macro{glossentry} ist verantwortlich für die Formatierung der Einträge +im Abkürzungsverzeichnis. Dieser wird intern durch \Package{glossaries} mit +zwei obligatorischen Argumenten aufgerufen.Das erste enthält das entsprechende +Label, das zweite ein kommaseparierte Liste der Seitenzahlen. Dabei stehen +verschiedene Makros zur Auswahl, um anhand des gegebenen Labels die gewünschten +Informationen zu extrahieren.% +\footnote{% + bspw. mit \Macro{glossentryname} die Bezeichnung oder mit + \Macro{glsentrydesc} die dazugehörige Beschreibung% +} + +Der Befehl \Macro{glossentry} wurde so definiert, dass für jeden Eintrag eine +separate Zeile in der Tabelle erzeugt wird, wo in der ersten Spalte die +Abkürzung selbst, in der zweiten die Langform und in der dritten Spalte +schließlich die Liste der Seiten, auf welchen die jeweilige Abkürzung mit +\Macro{gls}\Parameter{Label} verwendet wurde, ausgegeben wird. Zum Abschluss +die resultierende Ausgabe des Abkürzungsverzeichnisses im neuen Stil. +% +\begin{Hint} +\printacronyms[style=acrotabularx] +\end{Hint} +\begin{quoting}[rightmargin=0pt] +\vspace*{-\baselineskipglue} +\InputCode +\end{quoting} +% +Sollte der Platz für die Erläuterungen wie in diesem Beispiel in der mittleren +Spalte mehr als ausreichend sein und kein Zeilenumbruch benötigt werden, kann +auch einfach eine \Environment{tabular}"=Umgebung mit einer \PValue{l}"~Spalte +anstelle von \PValue{X} verwendet werden. + +\minisec{Eigener Stil mit \Environment{tabu}} +Die sehr komfortabel zu nutzende Umgebung \Environment{tabu} wird durch das +Paket \Package{tabu} bereitgestellt. Es wird in \autoref{sec:tabu} vorgestellt, +wobei die dortigen Anmerkungen \emph{unbedingt} zu beachten sind. Ähnlich zu +\Environment{tabularx} bietet auch die \Environment{tabu}-Umgebung einen +\PValue{X}"~Spaltentyp. Allerdings gibt es hier eine Besonderheit. Für +\Environment{tabularx}"=Tabellen muss generell eine feste Tabellenbreite +angegeben werden. Die Breite der \PValue{X}"~Spalten wird anhand der +angegebenen, gewünschten Gesamtbreite und dem bereits für andere Spalten vom +Typ~\PValue{l},~\PValue{r}~und~\PValue{c} benötigten Platz berechnet. + +Für \Environment{tabu}"=Tabellen kann anstelle einer fest vorgegebenen Breite +auch \PValue{spread~0pt} angegeben werden. Dadurch werden \PValue{X}"~Spalten +anfänglich in ihrer natürlichen Breite gesetzt. Sobald jedoch die Gesamtbreite +der Tabelle den zur Verfügung stehenden Platz bis zum Zeilenende überschreiten +würde, werden die \PValue{X}"~Spalten automatisch umbrochen. + +In umbrochenen Spalten gibt es beim Paket \Package{tabu} jedoch ein kleineres +Problem.In diesen setzt \Package{tabu} zu wenig vertikalen Freiraum am unteren +Ende. Um dieses Manko zu beheben, wird am Schluss jeder \PValue{X}"~Spalte mit +\PValue{X<\{\Macro{strut}\}} einfach der Befehl \Macro{strut} angehängt, der +vertikalen Freiraum ober- und unterhalb der aktuellen Grundlinie einfügt. In +\autoref{sec:tables} wird ein Ansatz aufgezeigt, wie man dies automatisiert +über einen neuen Spaltenstil ausmerzen kann. Der Rest des Stils ist identisch +zu \PValue{acrotabularx}. +% +\CodeHook{\let\newglossarystyle\renewglossarystyle} +\begin{Preamble*} +\newglossarystyle{acrotabu}{% + \renewenvironment{theglossary}{% + \begin{tabu}spread 0pt{@{}lX<{\strut}l@{}}% + }{% + \end{tabu}\par\bigskip% + }% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glsgroupskip}{}% + \renewcommand*{\glossentry}[2]{% + \glsentryitem{##1}% Entry number if required + \glstarget{##1}{\sffamily\bfseries\glossentryname{##1}} & + \glsentrydesc{##1} & + ##2\tabularnewline + } +} + +\end{Preamble*} +\begin{Hint} +\printacronyms[style=acrotabu] +\end{Hint} +\begin{quoting}[rightmargin=0pt] +\glsdisablehyper +\vspace*{-\baselineskipglue} +\InputCode +\end{quoting} +% +Welche Variante gewählt wird, ist letztendlich eine Frage, was für spezifische +Anforderungen an die Formatierung des Abkürzungsverzeichnis gestellt werden. +Natürlich ist auch die Definition eines eigenen Stils möglich. Wenn Sie wissen +wollen, wie Sie einen Stil in Tabellenform erstellen können, welcher einen +Seitenumbruch zulässt, sollte Sie den nächsten Abschnitt lesen. + + +\subsubsection{Symbolverzeichnis} +Für das Erzeugen eines Symbolverzeichnisses kann ebenfalls \Package{glossaries} +verwendet werden. Allerdings muss dazu ein wenig mehr Aufwand getrieben werden, +da das Paket hierfür keine dedizierte Schnittstelle bereitstellt. Wurde die +Paketoption \Option{symbols} angegeben wird jedoch zumindest das notwendige +Glossar erstellt. + +Als erstes sollte ein gut nutzbarer Befehl zum Definieren eines neuen Symbols +erstellt werden. In Anlehnung an den Befehl für Abkürzungen wird dieser +\Macro{newsymbol} genannt. Dieser hat ein optionales und vier obligatorische +Argumente, wobei das optionale Argument prinzipiell alle Schlüssel-Wert-Paare +enthalten kann, die durch \Package{glossaries} akzeptiert werden. Welche davon +letztlich auch Auswirkungen haben, hängt allerdings von der Gestaltung des +Stils durch den Anwender ab. Der nachfolgend definierte Befehl hat folgende +Gestalt: +% +\begin{quoting}[leftmargin=\parindent] +\Macro{newsymbol}\LParameter\Parameter{Label}\Parameter{Bezeichnung}% +\Parameter{Symbol}\Parameter{Einheit} +\end{quoting} +% +Mit \PName{Label} erfolgt die eindeutige Kennzeichnung des Symbols. Außerdem +wird dies für die Sortierung verwendet, was unter Umständen etwas problematisch +sein könnte. Eine manuelle Festlegung für den dazugehörigen Schlüssel durch den +Anwender über das optionale Argument mit \PValue{sort=}\PName{Bezeichnung} ist +eventuell sinnvoll. Nach dem \PName{Label} schließt die \PName{Bezeichnung} für +das Formelzeichen an, gefolgt vom \PName{Symbol} sowie der dazugehörige +physikalische \PName{Einheit}. +% +\CodeHook{\let\newcommand\renewcommand} +\begin{Preamble*} +\newcommand*{\newsymbol}[5][]{% + \newglossaryentry{#2}{% + type=symbols,% + description={},% + name={#3},% + symbol={\ensuremath{#4}},% + user1={\ensuremath{\mathrm{#5}}},% + sort={#2},% + #1% + }% +} + +\end{Preamble*} +% +Da es sich zumeist um mathematische Symbole handelt, wird für das Symbol und +die Einheit mit \Macro{ensuremath} Sorge getragen, dass diese auch im +Textmodus ohne Probleme verwendet werden können. Für das aufrechte Setzen der +Einheit wird für diese außerdem \Macro{mathrm} verwendet. Als Alternative dazu +könnte man auch den Befehl \Macro{si} aus dem Paket \Package{siunitx} benutzen. +Für ein kleines Beispiel werden folgend fünf Formelzeichen definiert. Damit die +Darstellung der mathematischen Brüche auch für den Fließtext gut genutzt werden +kann, wird für diese der Befehl \Macro{sfrac} aus dem Paket \Package{xfrac} +genutzt. +% +\begin{Trunk*} +\newsymbol{l}{Länge}{l}{m} +\newsymbol{m}{Masse}{m}{kg} +\newsymbol{a}{Beschleunigung}{a}{\sfrac{m}{s^2}} +\newsymbol{t}{Zeit}{t}{s} +\newsymbol{f}{Frequenz}{f}{s^{-1}} +\newsymbol{F}{Kraft}{F}{m \cdot kg \cdot s^{-2} = \sfrac{J}{m}} + +\end{Trunk*} +% +Die soeben definierten Symbole werden für ein kleines Beispiel mit dem Befehl +\Macro{gls}\Parameter{Label} in einer kurzen Textpassage verwendet. +% +\begin{Hint*} +Die Einheiten für die \gls{f} sowie die \gls{F} werden aus den +SI"=Einheiten der Basisgrößen \gls{l}, \gls{m} und \gls{t} abgeleitet. +Und dann gibt es noch die Grundgleichung der Mechanik, welche für den +Fall einer konstanten Kraftwirkung in die Bewegungsrichtung einer +Punktmasse lautet: +\[\gls{F} = \gls{m} \cdot \gls{a}\] +\end{Hint*} +% +Das Ergebnis ist nur bedingt befriedigend. Sowohl im Fließtext als auch im +Mathematikmodus werden lediglich die Bezeichnungen jedoch nicht die Symbole +selbst verwendet. Damit man die Formelzeichen auch für den mathematischen +Satz sinnvoll nutzen kann, sollte das Erscheinungsbild der Einträge mit +\Macro{defglsentryfmt} angepasst werden. +% +\begin{Preamble*} +\defglsentryfmt[symbols]{% + \ifmmode% + \glssymbol{\glslabel}% + \else% + \glsgenentryfmt~\glsentrysymbol{\glslabel}% + \fi% +} +\end{Preamble*} +% +Diese Definition führt bei der Verwendung von \Macro{gls}\Parameter{Label} +dazu, dass im Mathematikmodus allein das Symbol verwendet wird. Im Fließtext +wird diesem zusätzlich die Bezeichnung vorangestellt. Das nachfolgende Beispiel +macht dies deutlich. +% +\begin{Trunk*} +Die Einheiten für die \gls{f} sowie die \gls{F} werden aus den +SI"=Einheiten der Basisgrößen \gls{l}, \gls{m} und \gls{t} abgeleitet. +Und dann gibt es noch die Grundgleichung der Mechanik, welche für den +Fall einer konstanten Kraftwirkung in die Bewegungsrichtung einer +Punktmasse lautet: +\[\gls{F} = \gls{m} \cdot \gls{a}\] + +\end{Trunk*} +% +Als nächstes kümmern wir uns um die Ausgabe des Symbolverzeichnisses. Momentan +erzeugt der Befehl \Macro{printsymbols} jedenfalls kein sinnvolles Verzeichnis: +% +\begin{Hint} +\printsymbols +\end{Hint} +\begin{quoting}[rightmargin=0pt] +\vspace*{-\baselineskipglue} +\glsdisablehyper +\InputCode +\end{quoting} +% +Für dieses muss erst ein Stil definiert werden, was nachfolgend ähnlich zum +Stil \PValue{acrotabularx} respektive \PValue{acrotabu} geschieht. Allerdings +wird hier eine Variante gezeigt, mit der die Tabelle einen Seitenumbruch +zulässt. + +\minisec{Eigener Stil mit \Environment{tabularx} und \Environment{longtable}} +Soweit mir bekannt ist, lassen sich umbruchfähige Tabellen nicht direkt mit +\Environment{tabularx} setzen. Vielmehr ist das Paket \Package{ltxtable} +notwendig. Dieses wiederum verlangt, dass die zu setzende Tabelle in einer +separaten Datei abgelegt wird. Möchte man diese dennoch im Hauptdokument +belassen, kann man die \Environment{filecontents}"=Umgebung nutzen. + +Leider habe ich keine Möglichkeit gefunden, diesen Prozess ohne wahnsinnig +großen Aufwand für das Erstellen eines Glossars zu portieren. Für umbruchfähige +Tabellen mit automatisch berechneten Spaltenbreiten kommt meines Wissens nach +momentan nur die Umgebung \Environment{longtabu} aus dem Paket \Package{tabu} +infrage. + +\minisec{Eigener Stil mit \Environment{tabu}} +Das Paket \Package{tabu} definiert die \Environment{longtabu}"=Umgebung, die +wiederum auf \Environment{longtable} basiert und nachfolgend verwendet wird. +Damit diese linksbündig gesetzt wird, muss vor dem obligatorischen Argument mit +den Spaltendefinitionen noch das optionale Argument \OParameter{l} angegeben +werden. +% +\CodeHook{\let\newglossarystyle\renewglossarystyle} +\begin{Preamble*} +\newglossarystyle{symblongtabu}{% + \renewenvironment{theglossary}{% + \begin{longtabu}spread 0pt[l]{ccX<{\strut}l}% + }{% + \end{longtabu}% + }% + \renewcommand*{\glossaryheader}{% + \toprule + \bfseries Symbol & \bfseries Einheit & + \bfseries Name & \bfseries Seite(n) + \tabularnewline\midrule\endhead% + \bottomrule\endfoot% + }% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glsgroupskip}{}% + \renewcommand*{\glossentry}[2]{% + \glsentryitem{##1}% Entry number if required + \glstarget{##1}{\glossentrysymbol{##1}} & + \glsentryuseri{##1} & + \glossentryname{##1} & + ##2\tabularnewline% + }% +} +\end{Preamble*} +% +Innerhalb von \Macro{newglossarystyle} wird \Macro{glossaryheader} für einen +Tabellenkopf definiert, wie er auch für eine \Environment{longtable}"=Umgebung +erscheinen würde. In hier vorgestellten Fall werden Kopf beziehungsweise Fuß +mit \Macro{endhead} respektive \Macro{endfoot} terminiert. Diese werden beim +einem möglichen Seitenumbruch zu Beginn und am Ende auf jeder Seite gesetzt. +% +\begin{Preamble+} +}% Ende von AfterPackage* + +\end{Preamble+} +% +Das Symbolverzeichnis kann sich nun durchaus sehen lassen. +% +\begin{Hint} +\printsymbols[style=symblongtabu] +\end{Hint} +\begin{quoting}[rightmargin=0pt] +\newglossarystyle{symbtabu}{% + \setglossarystyle{symblongtabu}% + \renewenvironment{theglossary}{% + \begin{tabu}spread 0pt{ccX<{\strut}l}% + }{% + \bottomrule\end{tabu}% + }% + \renewcommand*{\glossaryheader}{% + \toprule + \bfseries Symbol & \bfseries Einheit & + \bfseries Name & \bfseries Seite(n) + \tabularnewline\midrule% + }% +} +\printsymbols[style=symbtabu] +\end{quoting} + + +\subsection{Literaturverzeichnis} +\label{sec:biblatex} +Für das Erstellen eines Literaturverzeichnisses wurde in der Vergangenheit fast +ausschließlich \hologo{BibTeX} verwendet. Lieder wird auch heute immer noch +darauf verwiesen, obwohl es seit einigen Jahren das Paket \Package{biblatex} +gibt, welches insbesondere für neue Dokumente definitiv den Vorzug erhalten +sollte. Auch die Umstellung älterer \hologo{BibTeX}"=Datenbanken ist mit +wenigen Handgriffen realisierbar. Für \Package{biblatex} existieren eine Menge +unterschiedlicher, vordefinierter Zitierstile, welche sich im Vergleich zu +\hologo{BibTeX} auch wesentlich leichter an die individuellen Bedürfnisse +anpassen lassen. + +Ein weiterer Vorteil ist die Unterstützung von Datenbanken, welche eine +UTF"~8"~Kodierung nutzen, wenn \Application{biber} zur Sortierung der Einträge +verwendet wird. Welcher Stil und welches Backend zur Sortierung genutzt werden +soll, lässt sich durch das optionale Argument beim Laden des Paketes festlegen. +Damit die Zitierstile das optimale Ergebnis erzielen wird das vorherige Laden +von \Package{csquotes} sehr empfohlen. +% +\begin{Preamble} +\usepackage{csquotes} +\usepackage[backend=biber,style=alphabetic]{biblatex} + +\end{Preamble} +% +Die Erstellung einer Literaturdatenbank kann entweder von Hand oder mithilfe +einer externen Anwendung erfolgen. Für die letztgenannte Variante sind die +Programme \Application{Citavi} respektive \Application{JabRef} empfehlenswert. +Auf eine Einführung in diese Anwendungen wird jedoch verzichtet. + +Die \Environment{filecontents}"=Umgebung kann verwendet werden, um innerhalb +eines \hologo{LaTeX}"=Dokumentes externe Dateien direkt beim Kompilieren zu +erstellen. Damit wird nachfolgend für dieses Tutorial eine Literaturdatenbank +\File{\jobname-temp.bib} mit drei Einträgen manuell erzeugt. Die Umgebung +gehört zu den Bordmitteln von \hologo{LaTeXe}. Das Paket \Package{filecontents} +erweitert die Umgebung dahingehend, dass \emph{bereits existierende Dateien} +überschrieben werden. Hier ist folglich Vorsicht geboten. Der große Vorteil ist +jedoch, dass die erweiterte \Environment{filecontents}"=Umgebung~-- im +Gegensatz zur Standardversion~-- die Dateien in der gleichen Eingabekodierung +erzeugt, wie das verwendete Dokument. Diese Funktionalität wird für dieses +Tutorial benötigt, weshalb auf das Laden des Paketes \Package{filecontents} +nicht verzichtet werden kann. +% +\begin{Preamble} +\usepackage{filecontents} +\end{Preamble} +% +Es werden folgend drei Einträge für die Literaturdatenbank definiert. Jeder +Eintrag einer \File{.bib}-Datei beginnt mit \PValue{@}\PName{Eintragstyp}. +Direkt danach ist für jeden Eintrag ein \emph{eindeutiges} \PParameter{Label} +festzulegen. Anschließend können für unterschiedliche Felder die dazugehörige +Werte eingetragen werden. Die verwendbaren Eintragstypen und die für diesen +benötigten und zusätzlich nutzbaren Felder sind in der Dokumentation von +\Package{biblatex} zu finden. +% +\begin{Preamble*} +\begin{filecontents}{\jobname-temp.bib} +@book{goossens94, + author = {Goossens, Michel and Mittelbach, Frank + and Samarin, Alexander}, + title = {The LaTeX Companion}, + date = {1994}, + publisher = {Addison-Wesley}, + location = {Reading, Massachusetts}, + language = {english}, +} +@book{knuth84, + author = {Knuth, Donald E.}, + title = {The \TeX book}, + date = {1984}, + maintitle = {Computers \& Typesetting}, + volume = {A}, + publisher = {Addison-Wesley}, + location = {Reading, Massachusetts}, + language = {english}, +} +@manual{hanisch14, + author = {Hanisch, Falk}, + title = {Ein \LaTeX"=Bundle für Dokumente + im neuen Corporate Design + der Technischen Universität Dresden}, + date = {2014}, + subtitle = {Benutzerhandbuch}, + location = {Dresden}, + language = {german}, +} +\end{filecontents} +\end{Preamble*} +% +Nachdem die Literaturdatenbank erstellt wurde, muss diese auch noch eingebunden +werden. Dies geschieht mit: +% +\begin{Preamble} +\addbibresource{\jobname-temp.bib} + +\end{Preamble} +% +Im einfachsten Fall werden die Einträge mit \Macro{cite}\Parameter{macro} im +Dokument referenziert. Für die Referenzierung werden durch \Package{biblatex} +weitere Befehle angeboten. +% +\begin{refsection}[\jobname-temp.bib] +\begin{Trunk+} +\section{Referenzen und das Literaturverzeichnis} +Das Literaturverzeichnis wir auf Basis der nachfolgend verwendeten +Zitate erstellt und ist auf Seite~\pageref{sec:bibliography} zu finden. +\end{Trunk+} +\begin{Trunk*} +In diesem Textabschnitt werden die zwei bekannten \LaTeX-Bücher +\cite{knuth84} und \cite{goossens94} sowie das Anwenderhandbuch +\cite{hanisch14} zitiert. + +\end{Trunk*} +% +Das Literaturverzeichnis wird mit \Macro{printbibliography} ausgegeben, wobei +nicht alle Einträge der Literaturdatenbank sondern lediglich die tatsächlich +referenzierten verwendet werden. Der Parameter \PValue{heading=bibintoc} führt +zu einem Eintrag in das Inhaltsverzeichnis. +% +\begin{Hint} +\printbibliography[heading=bibintoc] +\end{Hint} +\begin{quoting}[rightmargin=0pt] +\makeatletter +\let\markboth\@gobbletwo +\let\markright\@gobble +\makeatother +\vspace*{-\baselineskipglue} +\printbibliography +\end{quoting} +\end{refsection} + + + +\section{Anfangszitat oder Schlauer Spruch} +\renewcommand*\dictumwidth{.4\textwidth}% +\dictum[Johann Wolfgang von Goethe]{Es irrt der Mensch, solang er strebt.}% +\bigskip\noindent +Oftmals möchte der Autor einer wissenschaftlichen Arbeit für das erste oder +auch jedes Kapitel ein Zitat oder ähnliches voranstellen. Dies kann mit dem +Befehl \Macro{dictum}\OParameter{Autor}\Parameter{Text} erfolgen. Damit wird +der im obligatorischen Argument angegeben Ausspruch in einer \Macro{parbox} +ausgegeben. Das optionale Argument kann für die Angabe des Autors verwendet +werden. Soll das Ganze für einen Teil oder ein Kapitel erfolgen, sollte der +Befehl \Macro{dictum} innerhalb von \Macro{setpartpreamble} beziehungsweise +\Macro{setchapterpreamble} verwendet werden. Genaueres hierzu und zu den +Möglichkeiten, die Gestalt des Zitats zu beeinflussen, ist in der Anleitung von +\KOMAScript{} \scrguide zu finden. Es folgt ein Beispiel zur Verwendung. +% +\begin{Hint} +\setchapterpreamble{% + \dictum[Johann Wolfgang von Goethe]{% + Es irrt der Mensch, solang er strebt.% + }% + \bigskip +} +\chapter{Einleitung} + +\end{Hint} + + + +\section{Gleitumgebungen für Abbildungen und Tabellen} +\label{sec:floats} +Die Positionierung von Abbildungen mit \hologo{LaTeX} kann zu Beginn für viele +Anfänger durchaus frustrierend sein. Das liegt häufig am Missverständnis der +beiden Standard"=Gleitobjektumgebungen für Tabellen (\Environment{table}) und +Abbildungen (\Environment{figure}). Diese sind in erster Linie zur Ergänzung +des Fließtextes gedacht und sollten für das prinzipielle Verständnis des +Geschrieben nicht notwendig sein. Das oft geforderte Verhalten, ein Gleitobjekt +an einer ganz bestimmten und explizit festgelegten Position im Text zu setzen, +ist nicht erforderlich, insbesondere weil dadurch der Lesefluss unnötig +unterbrochen wird. + +Vielmehr ist es sinnvoll, Gleitobjekte entweder am Anfang oder Ende einer Seite +zu platzieren, wo sie den Lesefluss deutlich weniger stören. Allerdings sollte +auf jedes Gleitobjekt im Fließtext über eine Referenz~-- beispielsweise mit dem +Befehl \Macro{autoref} aus dem Paket \Package{hyperref}~-- Bezug genommen und +gegebenenfalls eine kurze Erläuterung gegeben werden. Weitere Erläuterungen zum +Thema \emph{Querverweise} ist in \autoref{sec:references} nachlesen. + +Ein weitere Grund, \hologo{LaTeX} die Platzierung von Tabellen und Abbildungen +vollständig zu überlassen, ist die Ungewissheit über den vorhandenen Platz auf +der momentan erzeugten Seite. In nicht wenigen Fällen kann es passieren, dass +das einzufügende Objekt zu groß für die aktuelle Seite ist, was einen wahrlich +schlechten Seitenumbruch mit einer schlecht gefüllten Seite zur Folge hätte. +Die Verwendung einer Gleitumgebung für eine Abbildung wird im nachfolgenden +Quelltextauszug exemplarisch gezeigt, das Ergebnis ist in \autoref{fig:example} +zu sehen. Worauf man bei Gleitobjekten in jedem Fall achten sollte, dass die +Verwendung von \Macro{label} immer erst \emph{nach} \Macro{caption} erfolgt, da +der erzeugte Anker sich sonst nicht auf das Objekt bezieht. +% +\begin{Trunk+} +\section{Grafiken und Tabellen in Gleitumgebungen} +Es folgt die Demonstration von Gleitumgebungen, welche sowohl für +Grafiken als auch Tabellen verwendet werden sollten. Im vorliegenden +Beispiel kann unter Umständen der Eindruck entstehen, dass diese Seite +etwas zu überladen mit Gleitobjekten ist. Dies liegt nicht an der +Verwendung der Gleitobjekte sondern vielmehr am zu geringen Textvolumen +und den eingeschränkten Möglichkeiten von \LaTeX{}, diese an geigneten +Stellen zu platzieren. + +\subsection{Abbildungen als Gleitobjekte und das Einbinden von Grafiken} +In \autoref{fig:example} wird dargestellt, wie eine Grafik im PDF-Format +in ein Dokument eingebunden und auf diese verwiesen werden kann. Ein +Querverweis auf ein Gleitobjekt sollte im Fließtext am besten mit Befehl +\texttt{\textbackslash autoref\{\emph{<Label>}\}} erstellt werden. +Hierfür ist ein entsprechender Anker am zu referenziereden Objekt nötig, +welcher mit dem Makro \texttt{\textbackslash label} erzeugt wird. Dabei +ist entscheidend, dass dieser Anker erst \emph{nach} der Beschriftung des +Objektes, welche mit \texttt{\textbackslash caption} erstellt wird, +gesetzt wird. + +\end{Trunk+} +\begin{Trunk} +\begin{figure} +\centering +\includegraphics{TUD-black} +\caption{Beispielgrafik}\label{fig:example} +\end{figure} + +\end{Trunk} +\InputCode\noindent +% +In der Konsequenz ist dies hier ein Plädoyer, bei der Platzierung von Tabellen +und Abbildungen vollständig auf \hologo{LaTeX} zu vertrauen. Anfangs kann der +Anwender dies als Kontrollverlust empfinden. Sobald Sie jedoch Änderungen am +Dokument vornehmen und eventuell in einem Kapitel einen Absatz ergänzen oder +gar einen ganzen Abschnitt hinzufügen werden sie dankbar sein, sich in der +Folge nicht mit der Neupositionierung sämtlicher Objekte herumschlagen zu +müssen. Leidgeprüfte Anwender einschlägiger Textverarbeitungsprogramme können +gewiss ein Lied darüber singen. + + + +\subsection{Beeinflussung des Gleitprozesses} +Sobald das Dokument inhaltlich den finalen Zustand erreicht hat, haben Sie sich +zu diesem Zeitpunkt schon mit Sicherheit an das standardmäßige Vorgehen von +\hologo{LaTeX} gewöhnt und müssen respektive wollen gegebenenfalls nur noch bei +wenigen Gleitobjekten~-- über das optionale Argument der Gleitumgebungen zur +individuellen Empfehlung für die Platzierung~-- nachjustieren. Mögliche Werte +sind: +% +\begin{description}[labelindent=\parindent,leftmargin=*,style=nextline] +\item[\POParameter{h} (here)] + An der Stelle, wo es im Quelltext angegeben wurde~-- falls genügend Platz + vorhanden ist +\item[\POParameter{t} (top)] + Am oberen Ende der aktuellen oder der folgenden Seite +\item[\POParameter{b} (bottom)] + Am unteren Ende der aktuellen Seite +\item[\POParameter{p} (page)] + Auf einer separaten Seite für mindestens ein Gleitobjekt +\end{description} +% +Sie können eine, mehrere oder alle Optionen angeben, wobei die Reihenfolge +keine Rolle spielt. Der Algorithmus arbeitet alle ihm zur Verfügung gestellten +Optionen immer in der zuvor aufgezählten Reihenfolge ab, wobei diese nur als +Empfehlung und nicht als Verpflichtung angesehen werden. Es gibt folglich keine +Garantie, dass Ihr Vorschlag akzeptiert wird. Fügen sie dem optionalen Argument +ein~\PValue{!} an, so verhindern Sie, dass \hologo{LaTeX} weitere Optionen +evaluiert. Das Gleitobjekt wird anhand der optionalen Parameter positioniert, +selbst wenn dabei ein unschönes Seitenlayout entsteht. Kann das Gleitobjekt +technisch unmöglich auf die angegebene Weise positioniert werden, wird dieses +sowie alle folgenden aufgeschoben und am Ende des Abschnitts oder Kapitels +angehängt. Dies ist ein Effekt, den man in den seltensten Fällen will. + +Außerdem können die Pakete \Package{flafter} sowie \Package{placeins} genutzt +werden. Das erstgenannte verhindert das Auftreten von Gleitobjekten im Dokument +vor ihrer Definition im Quelltext. In der Konsequent bedeutet dies, dass die +Option \POParameter{t} Gleitobjekte nur am oberen Ende der nächsten Seite +jedoch nicht auf der aktuellen zulässt. Mit dem zweiten Paket können Barrieren +definiert werden, an welchen die Ausgabe aller noch in der Warteschlange +befindlichen Gleitobjekte forciert wird~-- beispielsweise vor bestimmten +Gliederungsüberschriften. Im Handbuch zu \TUDScript findet sich außerdem zum +Thema \enquote{\manualhyperref{sec:tips:floats}{Platzierung von Gleitobjekten}} +ein eigener Abschnitt mit weiterführenden Informationen. + + +\subsection{Abstellen des Gleitprozesses} +Oftmals wird verlangt, den Gleitprozess vollständig abzustellen. Dies bringt in +den meisten Fällen einige Probleme mit sich. Die Folge sind sehr ein unruhiges +Erscheinungsbild das Satzspiegels aufgrund schlecht gefüllter Seiten, außerdem +viel Handarbeit mit hart kodierten Seitenumbrüchen sowie ein gegenüber von +Umbruchänderungen äußerst anfälliges Dokument. Sollte es in \emph{Einzelfällen} +dennoch erforderlich sein, dass eine Abbildung oder eine Tabelle nicht gleitet, +ist die einzig logische Konsequenz, auf die Verwendung einer Gleitumgebung +gänzlich zu verzichten. + +Hierfür eignen sich Umgebungen wie \Environment{center}, um etwas Abstand vor +und nach dem Objekt zu erzeugen und \Environment{minipage}, um Grafik oder +Tabelle und Beschriftung zusammenzuhalten. Die \KOMAScript-Klassen stellen für +diese Anwendung das Makro \Macro{captionof} zur Verfügung. Damit lassen sich +Bildunter- sowie Tabellenüberschriften auch ohne die gleitenden Umgebungen +\Environment{figure} beziehungsweise \Environment{table} erzeugen. Alternativ +kann das Paket \Package{float} verwendet werden, welches für Gleitumgebungen +den Platzierungsparameter \POParameter{H} zur Verfügung stellt. Allerdings ist +dies meiner Meinung nach alles andere als konsequent und sinnvoll. + + +\subsection{Gleitobjektlayout} +\label{sec:floatlayout} +% +Es wurde bis jetzt das prinzipielle Vorgehen bei der Nutzung von Gleitobjekten +beschrieben. Allerdings gibt es auch noch einige typographische Aspekte, welche +zu beachten sind. Zum einen sollte beachtet werden, dass die Beschriftung einer +Abbildung immer unterhalb dieser erfolgen sollte, bei Tabellen hingegen eine +Überschrift gesetzt wird. Hierfür muss der Anwender ohne die Verwendung eines +zusätzlichen Paketes selber Sorge tragen, indem er den Befehl \Macro{caption} +entweder vor oder nach dem eigentlichen Objekt in der Gleitumgebung verwendet. +Der zweite Punkt ist die verwendete Schrift innerhalb der Gleitumgebungen. + +Damit sich der Inhalt dieser besser vom restlichen Fließtext abhebt und vom +Leser direkt als nicht dazugehörig erkannt werden kann ist es ratsam, diesen in +serifenloser Schrift zu setzen~-- die Verwendung einer Serifenschrift für den +Fließtext vorausgesetzt. Das Paket \Package{floatrow} bietet die Möglichkeiten, +diese beiden Punkte automatisiert umzusetzen. Außerdem wird zur Formatierung +der Beschriftungen das Paket \Package{caption} benötigt. Sollten Sie noch keine +Erfahrung mit dem Setzen von Tabellen mit \hologo{LaTeX} haben, so wäre zuvor +ein Blick in \autoref{sec:tables} sehr sinnvoll. + +\newcommand*\tableexample[1][]{% + \begin{tabularx}{.75\textwidth}{@{}XXX@{}} + \toprule + \textbf{Erste Spalte} & \textbf{Zweite Spalte} & + \textbf{Dritte Spalte} \tabularnewline + \midrule + Etwas Blindtext für die erste Spalte & + Etwas Blindtext für die zweite Spalte & + Etwas Blindtext für die dritte Spalte + \tabularnewline + \bottomrule + \end{tabularx} + #1% +} +\begin{table} +\tableexample[% + \caption{Eine Tabelle in einer Gleitumgebung}\label{tab:tabular}% +] +\end{table} + +Normalerweise wird eine Tabelle sowie deren Beschriftung innerhalb einer +\Environment{table}"=Gleitumgebung in der selben Schrift wie der Fließtext +gesetzt, die korrekte Platzierung der Bezeichnungen bleibt dem Anwender +überlassen. Zu sehen ist dies in \autoref{tab:tabular}. Im Folgenden wird +gezeigt, wie sich dies automatisiert für alle Gleitobjekte im Dokument ändern +lässt. Die \emph{Formatierung} der Bezeichnungen von Gleitobjekten kann +mithilfe des Paketes \Package{caption} angepasst werden. +% +\begin{Preamble} +\usepackage{caption} +\end{Preamble} +% +Diese stellt den Befehl \Macro{captionsetup} bereit. Mit diesem werden die +Beschriftungen in Serifenlosen und das Label zur besseren Unterscheidung im +fetten Schriftschnitt gesetzt. +% +\begin{Preamble*} +\captionsetup{font=sf,labelfont=bf,labelsep=space} +\end{Preamble*} +% +Um die \emph{Platzierung} der Beschriftungen beeinflussen sowie den Inhalt +einer Gleitumgebung formatieren zu können, wird \Package{floatrow} geladen. +\begin{Preamble} +\usepackage{floatrow} +\end{Preamble} +% +Der Inhalt von Gleitobjekten wird~-- entgegen des normalen Verhaltens~-- durch +\Package{floatrow} automatisch zentriert gesetzt. Zusätzlich soll der Inhalt +noch die serifenlose Schriftfamilie verwenden. Dies lässt sich mit der Nutzung +des Befehls \Macro{floatsetup} realisieren. +% +\begin{Preamble*} +\floatsetup{font=sf} +\end{Preamble*} +% +Ohne weitere Maßnahmen werden durch \Package{floatrow} alle Beschriftungen +unterhalb der Gleitobjekte ausgegeben. Da das Ziel jedoch die Verwendung von +Tabellenüberschriften und Abbildungsunterschriften ist, wird dies für Tabellen +angepasst. +% +\begin{Preamble*} +\floatsetup[table]{style=plaintop} +\end{Preamble*} +% +\begin{table} +\tableexample[% + \caption{% + Eine Tabelle in einer Gleitumgebung mit einer angepassten Formatierung% + }\label{tab:tabularnew}% +] +\end{table}% +% +Damit wären alle Einstellungen soweit erfolgt, in \autoref{tab:tabularnew} ist +das Ergebnis zu sehen. Zumeist soll die Beschriftung für Gleitobjekte nicht +zentriert sondern linksbündig gesetzt werden. Dies lässt sich ebenfalls mit den +Mitteln des Paketes \Package{caption} mit der Option \Option{justification} +erreichen. Damit dies auch für einzeilige Beschriftungen angewendet wird, muss +zusätzlich die Einstellung \Option{singlelinecheck} deaktiviert werden. Mit der +Option \Option{hang} kann außerdem beeinflusst werden, ob eine mehrzeilige +Beschriftung nach einem Zeilenumbruch direkt unter dem Label oder mit Einzug +fortgesetzt werden soll. +% +\begin{Preamble*} +\captionsetup{singlelinecheck=off,format=hang,justification=raggedright} +\end{Preamble*} +% +In \autoref{tab:tabularnew} fällt die Beschriftung auf, welche die Breite der +Tabelle überragt. Falls linksbündige Gleitumgebungsbezeichnungen verwendet +werden, wie dies gerade eingestellt wurde, besteht das Problem quasi bei jeder +Beschriftung, da diese immer am linken Seitenrand beginnen. Auch hierfür stellt +das Paket \Package{floatrow} die Befehle \Macro{ttabbox} für Tabellen sowie +\Macro{ffigbox} für Abbildungen bereit. + +Beide Makros erwarten im ersten obligatorischen Argument den Befehl +\Macro{caption} für die Beschriftung gegebenenfalls gefolgt von einem mit +\Macro{label} gesetzten Textanker. Im zweiten Argument wird das Objekt +selbst~-- sprich Tabelle oder Abbildung~-- angegeben. Zu verwenden sind diese +folgendermaßen: +% +\begin{Hint} +\begin{table} +\ttabbox + §\Parameter{Tabellendefinition}§ + {\caption§\Parameter{Beschriftung}§\label§\Parameter{Label}§} +\end{table} +\begin{figure} +\ffigbox + §\Parameter{Abbildungsdefinition}§ + {\caption§\Parameter{Beschriftung}§\label§\Parameter{Label}§} +\end{figure} +\end{Hint} +% +Diese beiden Befehle sorgen dafür, dass die Beschriftungen in der jeweiligen +Breite des Objektes gesetzt werden. Entspricht das zu setzende Objekt in seiner +Breite dem Wert \Length{textwidth}~-- es ist genauso Breit wie die Laufweite +des Fließtextes~--, so ist deren Gebrauch nicht notwendig. Das Ergebnis der +Verwendung von \Macro{ttabbox} ist in \autoref{tab:tabularbox} zu sehen. + +Bei der Nutzung der beiden Befehle sollte darauf geachtet werden, dass zwischen +dem Ende des Objektes und der schließender Klammer des zweiten Argumentes kein +ungewolltes Leerzeichen gesetzt wird. Dies lässt sich am einfachsten vermeiden, +indem direkt nach dem Ende des Objektes mit \Macro{end}\PParameter{tabularx}, +\Macro{end}\PParameter{tabu}, \Macro{end}\PParameter{tikz} etc. die schließende +Klammer des zweiten Argumentes oder das Kommentarzeichen \PValue{\%} folgt. + +\begin{table} +\ttabbox{\tableexample}{% + \caption[Eine mit \Macro{ttabbox} gesetzte Tabelle in einer Gleitumgebung]{% + Eine in einer Gleitumgebung gesetzte Tabelle in Verbindung mit dem Befehl + \Macro{ttabbox}, welcher vom Paket \texttt{floatrow} für Beschriftungen in + Objektbreite bereitgestellt wird% + }\label{tab:tabularbox}% +} +\end{table} + + +\subsection{Untergleitobjekte} +\label{sec:subfloats} +Das Paket \Package{floatrow} stellt allerhand Möglichkeiten zur Erstellung von +nebeneinanderliegenden Gleitobjekten sowie \enquote{Untergleitobjekten} bereit +und ist insbesondere in Verbindung mit den Fähigkeiten von \Package{caption} +respektive \Package{subcaption} sehr gut für dieses Unterfangen nutzbar. Dafür +werden die Umgebungen \Environment{floatrow} und \Environment{subfloatrow} +angeboten, wobei letztere für ein Beispiel verwendet wird. Als erstes muss der +Typ der zu erzeugenden Labels für Abbildungen und Tabellen definiert werden. +Dies geschieht mit dem Befehl \Macro{DeclareCaptionSubType} aus dem Paket +\Package{subcaption}. +% +\begin{Preamble} +\DeclareCaptionSubType[alph]{figure} +\DeclareCaptionSubType[alph]{table} +\end{Preamble} +% +Anschließend werden die Untergleitobjekte formatiert. Dabei wird zum einen nach +dem alphanumerischen Label eine schließende Klammer gesetzt. Zum andern wird +ein Eintragen der Untergleitobjekte in das Abbildungsverzeichnis unterdrückt. +Lediglich die Bildunterschrift der Hauptabbildung wird in dieses eingetragen. +% +\begin{Preamble*} +\captionsetup[subfloat]{labelformat=brace,list=off} + +\end{Preamble*} +% +Mit diesen Einstellungen wird eine gleitende Abbildung erstellt, welche in +\autoref{fig:logos} zu sehen ist. Wurde der entsprechende Anker gesetzt, kann +zusätzlich auf die untergeordnete \autoref{fig:tud} sowie \autoref{fig:ddc} +verwiesen werden. +% +\begin{Trunk+} +\subsection{Untergleitobjekte} +Nachdem nun schon eine gleitende Abbildung und zwei gleitende Tabellen +erstellt wurden, folgt jetzt noch eine gleitende Abbildung mit zwei +Unterabbildungen. Durch die drei gesetzten Anker kann im Fließtext +sowohl auf \autoref{fig:logos} als auch auf \autoref{fig:tud} sowie +\autoref{fig:ddc} verwiesen werden. + +\end{Trunk+} +\begin{Trunk} +\begin{figure} +\ffigbox[\FBwidth]% + {\begin{subfloatrow}% + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[height=2cm]{TUD-black}}}% + {\caption{Eine Abbildung}\label{fig:tud}}% + \ffigbox[\FBwidth]% + {\fbox{\includegraphics[height=2cm]{DDC-21}}}% + {\caption{Eine weitere Abbildung}\label{fig:ddc}}% + \end{subfloatrow}}% + {\caption{Eine Gleitumgebung mit zwei Abbildungen}\label{fig:logos}}% +\end{figure} + +\end{Trunk} +\InputCode + + + +\section{Tabellensatz} +\label{sec:tables} +Zum Thema \enquote{Tabellensatz mit \hologo{LaTeX}} sind bereits zahlreiche +\hrfn{http://userpage.fu-berlin.de/latex/Materialien/tabsatz.pdf}{Leitfäden} +\cite{reichert2012} im Internet zu finden. Deshalb werde ich meine Ausführungen +zu diesem Punkt relativ kurz halten. Zwei Regeln sollten beim Satz von Tabellen +in jedem Fall beachtet werden: +% +\begin{enumerate}[itemindent=0pt,labelwidth=*,labelsep=1em,label=\Roman*.,noitemsep] +\item keine vertikalen Linien +\item keine doppelten Linien +\end{enumerate} +% +Das Paket \Package{booktabs} ist für den Satz von hochwertigen Tabellen eine +große Hilfe und stellt die Befehle \Macro{toprule}, \Macro{midrule} sowie +\Macro{cmidrule} und \Macro{bottomrule} für unterschiedliche horizontale Linien +bereit. +% +\begin{Preamble} +\usepackage{booktabs} +\end{Preamble} +% +Außerdem existiert das Paket \Package{array}, welches mit dem Befehl +\Macro{newcolumntype} die Definition eigener Spaltentypen sowie die Verwendung +sogenannter \enquote{Hooks} vor und nach Einträgen innerhalb einer Spalte +(\PValue{>\{\dots\}}\PName{Spaltentyp}\PValue{<\{\dots\}}) ermöglicht. +% +\begin{Preamble} +\usepackage{array} +\end{Preamble} +% +Für alle im Folgenden vorgestellten Umgebungen zum Setzen von Tabellen gilt, +dass die Inhalte zeilenweise angegeben werden, wobei die Einträge für die +einzelnen Spalten mit~\PValue{\&} voneinander zu trennen sind. Das Beenden +einer Tabellenzeile und der Wechsel zur nächsten erfolgt normalerweise mit +\PValue{\bsc\bsc}. Da jedoch einige \hologo{LaTeX}-Pakete diesen Befehl +innerhalb von Tabellen lokal ändern ist es zur Vermeidung unnötiger Fehler +wesentlich sicherer, das Zeilenende ausschließlich mit \Macro{tabularnewline} +zu setzen. + +Im Folgenden wird in einigen Tabellen bei der Definition der Spalten vor der +ersten und nach der letzten das Konstrukt~\PValue{@\{\}} verwendet, was das +\manualhyperref{sec:tips:table}{Einrücken dieser Tabellenspalten verhindert} +und im Handbuch genauer erläutert wird. + + +\subsection{Die Standardumgebung \Environment{tabular}} +Normalerweise gibt es vier unterschiedliche Spaltentypen. Dabei stehen die drei +Spaltentypen~\PValue{l},~\PValue{c}~und~\PValue{r} für linksbündige, zentrierte +und rechtsbündige Spalten, welche allerdings keinen Zeilenumbruch erlauben. Der +Inhalt wird quasi wie in einer \Macro {mbox} gesetzt, wodurch die Spalten sehr +breit werden und über den Seitenrand hinausragen können. + +Der Spaltentyp~\PValue{p}\Parameter{Breite} hingegen legt die Spaltenbreite +fest und setzt den Inhalt in jeder Zeile in eine \Macro{parbox}, wobei diese +wird mit ihrer obersten Zeile an der Grundlinie ausgerichtet wird. Das Paket +\Package{array} stellt außerdem die Spaltentypen~\PValue{m}\Parameter{Breite} +und~\PValue{b}\Parameter{Breite} bereit, welche ebenfalls mit \Macro{parbox} +gesetzt werden, die Ausrichtung an der Grundlinie jedoch zentriert respektive +an der unteren Zeile der Box erfolgt. Es folgt ein Beispiel zur Verwendung der +\Environment{tabular}-Umgebung. +% +\begingroup +\pcolumnfuzz{70pt} +\begin{Hint*} +\begin{tabular}{lcrp{33mm}} +\toprule +\textbf{Linksbündig} & \textbf{Zentriert} & +\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline +\midrule +a & b & c & Dieser Text wird im Blocksatz gesetzt\tabularnewline +aa & bb & cc & Auch Zeilenumbrüche sind vorhanden\tabularnewline +aaa & bbb & ccc & Worttrennungsmusterkontrolle\tabularnewline +\bottomrule +\end{tabular} +\end{Hint*} +\endgroup +% +Die Tabellenbreite ergibt sich aus der Breite der einzelnen Spalten. Bei dieser +Umgebung liegt es allein beim Anwender, auf die korrekte Breite der Tabelle zu +achten, damit diese nicht über die Seitenränder hinausragt. Das kann auf Dauer +recht aufwändig werden. Das Festlegen der Gesamtbreite einer Tabelle durch den +Anwender und das automatische Berechnen einiger oder aller Spaltenbreiten ist +sicher die angenehmere Variante. Wie sich dies sehr komfortabel bewerkstelligen +lässt wird~-- ebenso wie die Lösung des Problems des nicht umbrochenen Eintrags +in der letzten Spalte der dritten Zeile der obigen Tabelle~-- im nachfolgenden +Abschnitt demonstriert. + + +\subsection{Tabellen mit variabler Spaltenbreite} +Die Pakete \Package{tabularx}, \Package{tabulary} oder auch \Package{tabu} +stehen für das Setzen von Tabellen mit dynamisch berechneter Spaltenbreite bei +fest vorgegebener Gesamtbreite zur Verfügung, welche nun kurz vorgestellt +werden sollen. Die beiden erstgenannte Pakete \Package{tabularx} sowie +\Package{tabulary} stammen vom gleichen Paketautor und haben sich als sehr +stabil erwiesen. Das Paket \Package{tabu} ist relativ neu und versucht, viele +Funktionalitäten ganz unterschiedlicher Pakete für den Tabellensatz in sich zu +vereinen und glänzt insbesondere durch seine Vielseitigkeit. +% +\begin{Preamble} +\usepackage{tabularx} +\usepackage{tabulary} +\usepackage{tabu} + +\end{Preamble} +% +Jedes der Pakete stellt einen oder mehrere neue Spaltentypen zur Verfügung. +Dies bedeutet jedoch nicht, dass in den dazugehörigen Tabellenumgebungen +lediglich diese genutzt werden können. Vielmehr werden diese zusätzlich +angeboten, was bedeutet, dass auch in den neuen Tabellenumgebungen weiterhin +die gewohnten Spaltentypen~\PValue{l},~\PValue{c},~\PValue{r}~und~\PValue{p} +verfügbar sind. + +\subsubsection{Die Tabellenumgebung \Environment{tabularx}} +\label{sec:tabularx} +Das Paket \Package{tabularx} stellt den Spaltentyp~\PValue{X} bereit, welcher +prinzipiell dem Spaltentyp~\PValue{p} entspricht. Auch für diesen wird eine +\Macro{parbox} verwendet, allerdings wird deren Breite \emph{automatisch} +berechnet. Die Umgebung \Environment{tabularx} erwartet vor der Angabe der +Spaltentypen als obligatorisches Argument die gewünschte Breite der Tabelle. Zu +beachten ist, dass Spalten vom Typ~\PValue{l},~\PValue{c}~und~\PValue{r} +weiterhin ohne Zeilenumbruch gesetzt werden. Nur für Spalten vom Typ~\PValue{X} +und deren Derivate wird aus dem verbliebenen Platz die Breite berechnet. Für +die \Environment{tabularx}-Umgebung wird das vorherige Beispiel wiederholt. +% +\begingroup +\pcolumnfuzz{70pt} +\begin{Hint*} +\begin{tabularx}{11.7cm}{lcrX} +\toprule +\textbf{Linksbündig} & \textbf{Zentriert} & +\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline +\midrule +a & b & c & Dieser Text wird im Blocksatz gesetzt\tabularnewline +aa & bb & cc & Auch Zeilenumbrüche sind vorhanden\tabularnewline +aaa & bbb & ccc & Worttrennungsmusterkontrolle\tabularnewline +aaaa & bbbb & cccc & \hspace{0pt}Worttrennungsmusterkontrolle +\tabularnewline +\bottomrule +\end{tabularx} +\end{Hint*} +\endgroup +% +Die Breite der letzten Spalte wurde dabei aus der Angabe der Gesamtbreite mit +\PValue{11.7cm} berechnet. Des Weiteren ist zu sehen, wie das Problem des +Zeilenumbruchs behandelt werden kann. Normalerweise wird das erste Wort in +einem Absatz von \hologo{LaTeX} \emph{nie} umbrochen. Dies kann durch das +Einfügen eines breitenlosen Leerzeichens mit \Macro{hspace}\PParameter{0pt} +umgangen werden. Die gefundene Lösung ist allerdings alles andere als elegant. + +Mit den Möglichkeiten des Paketes \Package{array} ist das Problem relativ +schnell gelöst. Es wird mit \Macro{newcolumntype} ein neuer Spaltentyp +definiert. Das erste Argument von \Macro{newcolumntype} legt den Namen des +Spaltentyps fest. Mit \PValue{>\Parameter{Definitionen}}\Parameter{Typ} wird im +zweiten Argument das Ausführen von \PName{Definitionen} vor dem Setzen des +eigentlichen Inhaltes in einer \Parameter{Typ}"~Spalte definiert. Es wird ein +neuer, auf der \PValue{X}"~Spalte basierender Typ~\PValue{Y} definiert, welcher +zu Beginn der Spalte den Phantomabstand automatisch einfügt. Darauf basierend +werden drei Spaltentypen für den links- und rechtsbündigen sowie zentrierten +Textsatz mit einem möglichen Zeilenumbruch erstellt. +% +\begin{Trunk+} +\subsection{Tabellen als Gleitobjekte} +Tabellen sollten in der \texttt{table}"=Gleitumgebung gesetzt werden. +Welche Umgebung für die Tabelle selbst dabie genutzt wird ist dabei +nicht relevant. Es können sowohl die normale \texttt{tabular}"=Umgebung +als auch die Umgebungen \texttt{tabularx}, \texttt{tabulary} sowie +\texttt{tabu} für variable Spaltenbreiten bei einer fest vorgegebenen +Tabellenbreite oder jede andere Tabellenumgebung genutzt werden. +Nachfolgend wird dies an mehreren Beispielen demonstriert. + +\subsubsection{Eine gleitende tabularx-Tabelle} +Es wird eine Tabelle mithilfe der \texttt{tabularx}-Umgebung erstellt. +Zu sehen ist diese in \autoref{tab:tabularx}. Für diese werden zuvor +neue Spaltentypen definiert. + +\end{Trunk+} +\CodeHook{\renewcommand*{\newcolumntype}[2]{}} +\begin{Trunk*} +\newcolumntype{Y}{>{\hspace{0pt}}X} +\newcolumntype{D}{>{\raggedright}Y} +\newcolumntype{E}{>{\centering}Y} +\newcolumntype{F}{>{\raggedleft}Y} + +\end{Trunk*} +% +Nachfolgend wird die Tabelle gesetzt mit den neuen Spaltentypen gesetzt. +% +\begin{Trunk} +\begin{table} +\begin{tabularx}{\textwidth}{@{}DEFY@{}} +\toprule +\textbf{Linksbündig} & \textbf{Zentriert} & +\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline +\midrule +Ein linksbündiger Blindtext zur Demonstration einer S"~Spalte & +Ein zentrierter Blindtext zur Demonstration einer T"~Spalte & +Ein rechtsbündiger Blindtext zur Demonstration einer U"~Spalte & +Ein längerer Blindtext im Blocksatz zur besseren Demonstration +einer Y"~Spalte\tabularnewline +\bottomrule +\end{tabularx} +\caption{Eine \texttt{tabularx}-Tabelle}\label{tab:tabularx} +\end{table} + +\end{Trunk} +\InputCode\noindent +% +Die Breite der einzelnen \PValue{X}"~Spalten und deren Derivaten ist dabei +identisch. Ein Gewichten der Spaltenbreiten untereinander ist prinzipiell +möglich, allerdings mit einigen Einschränkungen verbunden. Genaueres hierzu ist +der Dokumentation des Paketes \Package{tabularx} zu entnehmen. + +\subsubsection{Die Tabellenumgebung \Environment{tabulary}} +\label{sec:tabulary} +Das Paket \Package{tabulary} verfolgt im Vergleich zum zuvor beschrieben Paket +\Package{tabularx} einen etwas anderen Ansatz. Anstatt die verfügbare Breite +über alle Spalten gleichmäßig zu verteilen, werden die Spaltenbreite anhand des +jeweils darin befindlichen Inhaltes zueinander gewichtet. Dafür werden die vier +Spaltentypen~\PValue{L},~\PValue{C},~\PValue{R}~sowie~\PValue{J} zur Verfügung +gestellt. Diese entsprechen prinzipiell dem Spaltentyp~\PValue{p}, allerdings +wird deren Breite \emph{automatisch} berechnet, wobei Spalten mit mehr Inhalt +breiter gesetzt werden. Für die automatische Berechnung der Spaltenbreiten muss +verständlicherweise die gewünschte Gesamtbreite angegeben werden, was bei der +\Environment{tabulary}-Umgebung mit dem ersten obligatorischen Argument vor der +Angabe der Spaltendefinition erfolgt. Werden für die Tabelle eine oder mehrere +Spalten vom Typ~\PValue{l},~\PValue{c}~und~\PValue{r} angegeben, so werden +diese weiterhin in ihrer natürlichen Breite und ohne Zeilenumbruch gesetzt. + +Die Gewichtung der Spalten vom Typ~\PValue{LCRJ} und deren Derivate wird aus +dem verbliebenen Platz die Breite berechnet. Die Berechnung der Spaltenbreite +kann durch den Anwender außerdem über zwei Längen beeinflusst werden. Mit +\Length{tymin} wird die Mindestgröße für Spalten festgelegt. Sollten Sie +wissen, dass eine Spalte sehr schmal wird, können Sie allerdings auch einfach +eine der Standardspalten~\PValue{lcrp} nutzen. Mit der Länge \Length{tymax} +kann die maximale Ausdehnung einer der Spalten vom Typ~\PValue{LCRJ} festgelegt +werden. Für die \Environment{tabulary}-Umgebung wird das vorherige Beispiel +wiederholt. Zu beachten ist, dass die Spaltentypen~\PValue{LCRJ} mit dem Makro +\Macro{tyformat} bereits ein breitenloses Leerzeichen einsetzen, womit sich das +manuelle Einfügen von selbigem durch den Anwender erübrigt. +% +\begin{Trunk+} +\subsubsection{Eine gleitende tabulary-Tabelle} +Es wird eine Tabelle mithilfe der \texttt{tabulary}-Umgebung erstellt. +Zu sehen ist diese in \autoref{tab:tabulary}. + +\end{Trunk+} +\begin{Trunk} +\begin{table} +\begin{tabulary}{\textwidth}{@{}LCRJ@{}} +\toprule +\textbf{Linksbündig} & \textbf{Zentriert} & +\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline +\midrule +Ein linksbündiger Blindtext zur Demonstration einer L"~Spalte & +Ein zentrierter Blindtext zur Demonstration einer C"~Spalte & +Ein rechtsbündiger Blindtext zur Demonstration einer R"~Spalte & +Ein wesentlich längerer und absolut inhaltsleerer Blindtext im +Blocksatz für eine um einiges bessere Demonstration einer J"~Spalte +\tabularnewline +\bottomrule +\end{tabulary} +\caption{Eine \texttt{tabulary}-Tabelle}\label{tab:tabulary} +\end{table} + +\end{Trunk} +\InputCode + + +\subsubsection{Die Tabellenumgebung \Environment{tabu}} +\label{sec:tabu} +Das Paket \Package{tabu} bietet eine mächtige und komfortable Alternative zu +\Package{tabularx}. Es kam in diesem Tutorial bereits für die Verzeichnisse von +Abkürzungen und Symbolen in \autoref{sec:glossaries} zum Einsatz. Leider ist +das Paket in er aktuellen Version~v2.8 mit Vorsicht zu genießen. Zum einen +wären für das Paket in der aktuellen Version seit geraumer Zeit ein paar +kleinere Bugfixes notwendig, mehr dazu sehen Sie später. Außerdem wird sich die +\hrfn{https://groups.google.com/d/topic/comp.text.tex/xRGJTC74uCI}{% + Benutzerschnittstelle in einer zukünftigen Version +} sehr stark ändern. Sie sollten sich bewusst sein, dass mit der Version~v2.8 +gesetzte Dokumente gegebenenfalls später angepasst werden müssen. + +Nichtsdestotrotz soll hier die Verwendung der \Environment{tabu}-Umgebung +gezeigt werden, insbesondere weil es für das Setzen umbruchfähiger Tabellen mit +automatisch berechneten Spaltenbreiten momentan (fast) keine Alternative zu der +Umgebung \Environment{longtabu} gibt. + +Dieses Paket definiert ebenso einen Spaltentyp~\PValue{X}, welchem allerdings +zusätzlich ein optionales Argument angehängt werden kann. Mit diesem lässt sich +sowohl die Gewichtung der automatisch berechneten Spalten untereinander als +auch die Positionierung zur Grundlinie sowie die Ausrichtung des Inhaltes +ändern. +% +\begingroup +\pcolumnfuzz{70pt} +\begin{Hint*} +\begin{tabu} to 11.7cm {lcrX} +\toprule +\textbf{Linksbündig} & \textbf{Zentriert} & +\textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline +\midrule +a & b & c & Dieser Text wird im Blocksatz gesetzt\tabularnewline +aa & bb & cc & Auch Zeilenumbrüche sind vorhanden\tabularnewline +aaaa & bbbb & cccc & Worttrennungsmus\-terkontrolle\tabularnewline +aaa & bbb & ccc & Worttrennungsmusterkontrolle\tabularnewline +\bottomrule +\end{tabu} +\end{Hint*} +\endgroup +% +Das Beispiel zeigt auch gleich das momentan meiner Meinung nach größte Problem +des Paketes: Bei mehrzeiligen Zellen fehlt vertikale Zwischenraum zur nächsten +Tabellenzeile. Nun hat man entweder die Möglichkeit, bei jeder Angabe einer +Spalte im Tabellenkopf, welche eine \Macro{parbox} verwendet, mit dem Ausdruck +\PValue{>\{\Macro{strut}\}} die fehlenden Unterlänge auszugleichen oder man +definiert sich abermals einen entsprechenden Spaltentyp. Das ist für die +\PValue{X}"~Spalten der Umgebung \Environment{tabu} etwas schwieriger, da +\Macro{newcolumntype} normalerweise die Definition eines optionalen Argumentes +nicht vorgesehen ist. Mit ein wenig Trickserei ist das dennoch möglich: +% +\begin{Trunk+} +\subsubsection{Eine gleitende tabu-Tabelle} +Eine andere Variante zum Setzen einer Tabelle mit variabler Spaltenbreite +und festgelegter Gesamtbreite ist in \autoref{tab:tabu} zu sehen. Diese +würde in der Umgebung \texttt{tabu} gesetzt. Auch für diese wird zuerst +ein neuer Spaltentyp definiert, welcher die Unzulänglichkeiten der +Umgebung reduziert. Außerdem wird \texttt{\textbackslash ttabbox} aus dem +Paket \texttt{floatrow} verwendet, um die Beschriftung auf die Breite der +Tabelle zu begrenzen. + +\end{Trunk+} +\CodeHook{\renewcommand*{\newcolumntype}[2]{}} +\begin{Trunk*} +\makeatletter +\newcolumntype{Z}{} +\renewcommand*\NC@rewrite@Z[1][]{% + \NC@find>{\hspace{0pt}}X[#1]<{\@finalstrut\@arstrutbox}% +} +\makeatother + +\end{Trunk*} +% +Anschließend kann der \PValue{Z}"~Spaltentyp äquivalent zu \PValue{X} genutzt +werden. Zu beachten ist dabei insbesondere die Möglichkeit, die Spalten in +ihrer resultierenden Breite sehr einfach zueinander gewichten zu können~-- im +Gegensatz zur Umgebung \Environment{tabularx}, wo dieses Unterfangen etwas +schwieriger ist. Das Ergebnis ist in \autoref{tab:tabu} zu sehen. Zu beachten +ist dabei die Verwendung von \Macro{ttabbox} aus dem Paket \Package{floatrow}, +um die Beschriftung an die Breite der Tabelle anzupassen. Genaueres dazu in +\autoref{sec:floatlayout}. +% +\begin{Trunk} +\begin{table} +\ttabbox{% +\begin{tabu} to .8\textwidth {@{}Z[3,l]Z[3,c]Z[3,r]Z[2,j]@{}} + \toprule + \textbf{Linksbündig} & \textbf{Zentriert} & + \textbf{Rechtsbündig} & \textbf{Blocksatz} \tabularnewline + \midrule + Ein linksbündiger Blindtext zur Demonstration einer Z[l]"~Spalte & + Ein zentrierter Blindtext zur Demonstration einer Z[c]"~Spalte & + Ein rechtsbündiger Blindtext zur Demonstration einer Z[r]"~Spalte & + Ein Blindtext im Blocksatz innerhalb einer Z"~Spalte + \tabularnewline + \bottomrule + \end{tabu}% +}{% + \caption[Eine \texttt{tabu}-Tabelle]{% + Eine \texttt{tabu}-Tabelle in Verbindung mit dem Befehl + \texttt{\textbackslash ttabbox}, welcher vom Paket \texttt{floatrow} + für Beschriftungen in Objektbreite bereitgestellt wird% + }\label{tab:tabu}% +} +\end{table} + +\end{Trunk} +\InputCode + + + +\section{Querverweise} +\label{sec:references} +% +Damit alle möglichen Querverweise in einem PDF-Dokument automatisch verlinkt +werden, sollte das Paket \Package{hyperref} geladen werden. Um die erzeugten +Links verträglich aussehen zu lassen, werden die Optionen \Option{colorlinks} +sowie \Option{linkcolor}[blue] verwendet. Da \Package{hyperref} allerhand +Veränderungen an vielen Standardbefehlen vornimmt, sollte dieses als letztes in +der Präambel eingebunden werden. Nur Pakete, bei denen in der Dokumentation +explizit darauf hingewiesen wird, dass diese nach \Package{hyperref} zu laden +sind, sollten auch danach folgen. Eines dieser wenigen Pakete ist das in diesem +Tutorial verwendete \Package{glossaries}. +% +\begin{Preamble} +\usepackage[colorlinks,linkcolor=blue]{hyperref} + +\end{Preamble} +% +Um auf ein bestimmtes Objekt wie beispielsweise eine Tabelle, eine Abbildung +oder einen bestimmten Anschnitt im Dokument referenzieren zu können, muss mit +\Macro{label}\Parameter{label} ein Anker für selbiges an der entsprechenden +Stelle gesetzt werden. Bei Überschriften sollte dies direkt nach der Nutzung +des Gliederungsbefehls\footnote{\Macro{chapter}, \Macro{section} etc.} +erfolgen. Für Abbildungen, Tabellen oder andere Objekte in Gleitumgebungen muss +der Anker unmittelbar nach der Verwendung von \Macro{caption} respektive +\Macro{captionof} erstellt werden. Um nun auf diesen Anker zu referenzieren, +sollte nicht \Macro{ref} sondern \Macro{autoref} im Fließtext genutzt werden. +Letztgenannter Befehl erzeugt nicht nur einen Link mit der dazugehörigen +Nummerierung sondern stellt dieser die Bezeichnung des referenzierten Objektes% +\footnote{\enquote{Abbildung}, \enquote{Tabelle}, \dots} voran. + +Mit dem Befehl \Macro{pageref} lässt sich auf die Seite eines Ankers verweisen. +Das Paket \Package{varioref} kann dabei unterscheiden, ob der Anker sich auf +der aktuellen Seite, auf einer Seite direkt davor beziehungsweise danach oder +auf einer entfernteren Seite befindet und dementsprechend einen Hinweis darauf +ausgeben. Hierfür werden die Befehle \Macro{vref} sowie \Macro{vpageref} zur +Verfügung gestellt. Das Paket \Package{cleveref} vereint die Vorzüge von +\Macro{autoref} in Verbindung mit \Macro{vref} durch den Befehl \Macro{cref}. + + + +\section{Zitate} +Für das wörtliche Zitieren kann das Paket \Package{csquotes} verwendet werden. +Dieses stellt den Befehl \Macro{enquote} bereit, der die kennzeichnenden +Anführungszeichen automatisch in Abhängigkeit der verwendeten Dokumentsprache +setzt. +% +\begin{Hint} +\usepackage{csquotes} +\end{Hint} +% +Da für die unterschiedlichen Fachdisziplinen teils sehr unterschiedliche +Zitierrichtlinien existieren, kann hier keine allgemeingültige Empfehlung zu +Stilfragen gegeben werden. Zu beachten ist auf jeden Fall, dass zu wörtlichen +Zitaten eine Quellenangabe erfolgen \emph{muss}. Dabei sollte darauf geachtet +werden, dass nicht nur die Quelle selbst sondern zumindest auch die Seitenzahl +des Zitats angegeben wird. +% +\begin{refsection}[\jobname-temp.bib] +\begin{Trunk+} +\section{Zitate} +Bei der Verwendung von wörtlichen Zitaten sollten diese als solche +gekennzeichnet werden. +\end{Trunk+} +\begin{Trunk*} +\enquote{Dies ist ein zugegebenermaßen nicht sehr sinnvolles Zitat.} +\cite[58]{hanisch14} +\end{Trunk*} +\begin{Trunk+} +Für eine möglichst gut nachvollziehbare Referenz sollte nicht nur +das Werk selber sondern zumindest die Seitenzahl und gegebenfalls +der Absatz der originalen Textstelle angegeben werden. +\end{Trunk+} +% +Längere Zitate sollten abgesetzt vom Fließtext ausgegeben werden. Hierfür +bieten sowohl die Standard"~ als auch die \KOMAScript-Klassen standardmäßig +die Umgebungen \Environment{quote} und \Environment{quotation} an. Allerdings +verwenden beide fest eingestellte Absatzauszeichnungen. Sollen jedoch die +mit der Option \Option{parskip} vorgegebenen Absatzeinstellungen beachtet +werden, so bietet sich das Paket \Package{quoting} an, welches die gleichnamige +Umgebung definiert und die Absätze wie im restlichen Dokument auszeichnet. +% +\begin{Preamble} +\usepackage{quoting} + +\end{Preamble} +% +\begin{Trunk*} +\begin{quoting} +\enquote{% + Dies ist ein noch sinnloseres Zitat. Allerdings wird zumindest die + Wirkung der Umgebung \texttt{quoting} bei der Absatzauszeichnung + deutlich. + + Wie man sieht, ist der zweite Absatz~-- wie jeder weitere~-- aufgrund + der Einstellung \texttt{parskip=false} eingezogen. +} +\cite[sinngemäß nach][\pno{} 12, zweiter Absatz]{hanisch14} +\end{quoting} +\end{Trunk*} +\begin{Trunk+} +Ebenfalls sollten sinngemäße Zitate mit einer möglichst genauen Referenz +angegeben werden. Dies kann im Laufe der Arbeit acuh für einen selbst von +Vorteil sein, wenn man beispielsweise die originale Textpassage noch +einmal analysieren möchte. + +\end{Trunk+} +\begin{quoting}[rightmargin=0pt] +\makeatletter +\let\markboth\@gobbletwo +\let\markright\@gobble +\makeatother +\vspace*{-\baselineskipglue} +\printbibliography +\end{quoting} +\end{refsection} + + + +\section{Worttrennungen} +\label{sec:hyphenation} +Bei der Verwendung von \hologo{LaTeXe} gibt es ab und an das Problem, dass +bestimmte Wörter am Zeilenende falsch getrennt werden. Dies hat historische +Gründe. Als \hologo{TeX} in den 1980er-Jahren entwickelt wurde, war es aufgrund +der zu dieser Zeit zur Verfügung stehenden Speichergrößen schier unmöglich, die +Worttrennungen mit einem Wörterbuchansatz umzusetzen. Stattdessen wurde~-- um +den benötigten Speicherbedarf möglichst gering zu halten~-- ein Algorithmus +entworfen, der mögliche Trennstellen in einem Wort mit einer Mustererkennung +ermittelt. Die verwendeten Muster basieren jedoch auf der englischen Sprache, +weshalb auch heute noch in nicht-englischsprachigen Texten teilweise falsche +Trennstellen gefunden werden. + +Zu Beginn wurde bei der Einleitung in \autoref{sec:introduction} auf das Paket +\Package{hyphsubst} hingewiesen, welches dieses Manko~-- aufgrund der nicht +mehr so stark gegebenen Restriktionen bezüglich des Speicherbedarfes~-- mit +einem Wörterbuch behebt. Dieses Paket muss \emph{vor} dem Laden der +Dokumentklasse eingebunden werden. Außerdem wird das Paket \Package{babel} +benötigt. Damit auch Wörter mit Umlauten richtig getrennt werden, ist zudem die +Verwendung der \PValue{T1}"~Schriftkodierung notwendig. Der Beginn einer +Dokumentpräambel könnte folgendermaßen aussehen: +% +\begin{Hint} +\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst} +\documentclass[ngerman,§\PName{Klassenoptionen}§]§\Parameter{Dokumentklasse}§ +\usepackage{selinput}\SelectInputMappings{adieresis={ä},germandbls={ß}} +\usepackage[T1]{fontenc} +\usepackage{babel} +§\dots§ +\end{Hint} +% +Die Option \Option{ngerman} lädt dabei die Trennmuster für die neue deutsche +Rechtschreibung, wobei der Wert \PValue{ngerman-x-latest} die neuesten aller +verfügbaren Trennmuster lädt. Für die alte Orthographie ist stattdessen +\Option{german}[german-x-lastest] zu verwenden. + + +\subsection{Einmalige und globale Worttrennungskorrektur} +Sollte es dennoch passieren, dass ein Wort nicht richtig getrennt wird, kann +dies manuell korrigiert werden. Dafür stellt das Paket \Package{babel} mehrere +Kurzbefehle zur Verfügung. Außerdem lassen sich mit \Macro{hyphenation} für ein +bestimmtes Wort alle potentiellen Trennstellen angeben. Im \TUDScript-Handbuch +ist im Kapitel Tipps~\&~Tricks zum Thema \manualhyperref{sec:tips:hyphenation}{% +Worttrennungen in deutschsprachigen Texten} mehr zu finden. Dort wird auch +erläutert, wie das Problem der alleinigen Trennung von Wörtern mit Bindestrich +an selbigem umgangen werden kann. + + +\subsection{Worttrennung im Flattersatz} +Normalerweise ist bei \hologo{LaTeXe} die Worttrennung im Flattersatz% +\footnote{\Macro{raggedright}, \Macro{raggedleft}, \Macro{center}} deaktiviert. +Mit dem Paket \Package{ragged2e} kann diese hierfür aktiviert werden. Wird es +geladen, stehen dem Anwender die Befehle \Macro{Centering}, \Macro{RaggedLeft} +sowie \Macro{RaggedRight} zur Verfügung, um Worttrennungen im Flattersatz zu +verwenden. Mit der Paketoption \Option{newcommands} können die originalen +Befehle \Macro{centering}, \Macro{raggedleft} und \Macro{raggedright} mit der +Definition der neuen überschrieben werden. Genaueres dazu ist der Dokumentation +des Paketes zu entnehmen. + + + +\section{Mikrotypographische Feinheiten} +Unter Mikrotypographie oder Detailtypographie versteht man die Gestaltung +folgender Feinheiten des Schriftsatzes: +\begin{itemize}[noitemsep] +\item korrekte Anwendung der Satzzeichen +\item Schriftart, Kapitälchen und Ligaturen +\item Wortabstände sowie Laufweite (Buchstaben- und Zeichenabstände) +\item optischer Randausgleich +\end{itemize} + +\noindent Die letzten beiden Punkte werden sensationell gut durch das Paket +\Package{microtype} bearbeitet. Dieses muss lediglich in der Präambel geladen +werden, wobei es nicht mit der klassischen \hologo{TeX}-Engine, wohl jedoch mit +\hologo{pdfTeX} als auch \hologo{LuaTeX} sowie \hologo{XeTeX} funktioniert. +% +\begin{Preamble} +\usepackage[babel]{microtype} + +\end{Preamble} +% +Die Option \Option{babel} ist nur notwendig, wenn einzelne Textpassagen oder +das gesamte Dokument in Englisch oder Französisch verfasst werden und hierfür +die genutzte Sprache mit den entsprechenden Möglichkeiten von \Package{babel} +eingestellt wird. + +Das korrekte Anwenden von Satzzeichen wird für deutschsprachige Texte bereits +in mehreren Artikeln \cite{neubauer1996,neubauer1997,struckmann2007,bier2009} +sehr gut erläutert, weshalb ein Hinweis auf diese Arbeiten für weitergehende +Informationen zu dieser Thematik absolut ausreichend ist. Nachfolgend werden +Tipps gegeben sowie einige \hologo{LaTeXe}-Pakete vorgestellt, die bei der +Umsetzung der in den genannten Artikeln erläuterten Empfehlungen helfen. + + +\subsection{Abkürzungen} +In \cite{struckmann2007} wird gleich zu Beginn darauf hingewiesen, wie häufig +verwendete Abkürzungen sehr einfach im Dokument verwendet werden können und +dabei typographisch richtig gesetzt werden. Beispielsweise gelingt dies für die +Abkürzung \enquote{zum~Beispiel~(z.\,B.)} mit der nachfolgenden Definition: +% +\begin{Hint} +\newcommand{\zB}{\mbox{z.\,B.}\xspace} +\end{Hint} +% +Wenn ohnehin das Paket \Package{glossaries} für Akronyme verwendet wird, kann +alternativ dazu auch dessen Funktionalität genutzt werden. Nach dem Einbinden +braucht man in der Präambel lediglich Folgendes einfügen: +% +\begin{Hint} + \newignoredglossary{abbreviation} + \newcommand*\newabbreviation[4][]{% + \newacronym[type=abbreviation,#1]{#2}{\mbox{#3\xspace}}{#4}% + }% +\end{Hint} +% +Mit \Macro{newignoredglossary} wird dabei ein Glossar erstellt, welche bei der +Ausgabe aller Glossare mit \Macro{printglossaries} ignoriert wird. Im Dokument +kann die gewünschte Abkürzung mit +% +\begin{Hint*} +\newabbreviation{zB}{z.\,B.}{zum Beispiel} +\end{Hint*} +% +definiert und über die gewohnten Befehlen aus \Package{glossaries} verwendet +werden. +% +\begin{Hint*} +Die Ausgabe der eben definierten Abkürzung erfolgt \acrshort{zB} mit dem +Befehl \texttt{\textbackslash acrshort}. Wurde \texttt{glossaries} mit +der Option \texttt{shortcut} geladen, kann alternativ auch das kürzere +Makro \texttt{\textbackslash acs} genutzt werden. +\end{Hint*} + + +\subsection{Mathematiksatz} +Von \hologo{LaTeXe} werden einige Umgebungen für das Setzen mathematischer +Formeln und Ausdrücke bereitgestellt, welche meist jedoch nicht \emph{alle} +Anforderungen eines Nutzers an den Mathematiksatz erfüllen können. Das Paket +\Package{amsmath} bietet deshalb eine Reihe weiterführender Umgebungen für das +Setzen von einzeiligen und mehrzeiligen sowie ausgerichteter Formeln zur +Verfügung. Auf eine Einführung in das Paket wird~-- aufgrund der bereits in +großer Zahl vorhandenen Einführungen~-- in diesem Tutorial verzichtet. Außerdem +stehen mit \Tutorial{mathtype} und \Tutorial{mathswap} zwei weitere Tutorials +zur Verfügung, die sich explizit mit der Thematik eines guten mathematischen +Satz beschäftigen. + +Das Paket \Package{amsmath} stellt den De-facto-Standard für den mathematischen +Satz mit \hologo{LaTeXe} dar. Allerdings wird es~-- insbesondere aus diesem +Grund~-- nur sehr \enquote{vorsichtig} weiterentwickelt. Für das Setzen neuer +Dokumente sollte deswegen das Paket \Package{mathtools} verwendet werden, +welches zwar auf \Package{amsmath} basiert, dieses jedoch um zusätzliche +Funktionalitäten ergänzt und Bugfixes bereithält. + + +\subsection{Einheiten} +Mit dem Paket \Package{siunitx} lassen sich sowohl physikalische Einheiten als +auch Zahlen typographisch korrekt setzen. Sollen die Funktionalitäten in einem +deutschsprachigen Dokument problemlos nutzbar sein, so sind die Hinweise zum +\manualhyperref{sec:tips:siunitx}{Setzen von Einheiten mit \Package{siunitx}} +im \TUDScript-Handbuch zu beachten. Das Paket \Package{units} ist nicht ganz so +mächtig wie \Package{siunitx}, kann allerdings als pragmatische Alternative +gesehen und genutzt werden. + + +\subsection{Darstellung von mathematischen Brüchen} +Für ansehnliche und insbesondere im Fließtext gut lesbare mathematische Brüche +stellt das Paket \Package{xfrac} den Befehl \Macro{sfrac} zur Verfügung. +% +\begin{Preamble} +\usepackage{xfrac} + +\end{Preamble} + + +\subsection{Ligaturen} +Die meisten \hologo{LaTeX}-Schriftfamilien enthalten Ligaturen, die für einen +typographisch sauberen Satz bei zusammengesetzten Wörtern, wie sie gerade im +Deutschen relativ häufig vorkommen, aufgetrennt werden müssten. Mit der +Anwendung \href{http://www.ctan.org/pkg/delig}{\Application{DeLig}} kann dies +automatisiert geschehen. Wird \hologo{LuaLaTeX} als Dokumentprozessor genutzt, +kann alternativ für dieses Unterfangen das Paket \Package{selnolig} verwendet +werden. + + +\subsection{Listen} +\label{sec:lists} +Für Auflistungen aller Art bietet \hologo{LaTeX} die drei Standardumgebungen +\Environment{iteimze}, \Environment{enumerate} und \Environment{description}. +Das häufigste Anliegen bei der Verwendung dieser Umgebungen ist das Reduzieren +der Abstände zwischen den einzelnen, mit \Macro{item} gesetzten Punkten, welche +sehr häufig als zu groß empfunden werden. Eine Aufzählung erscheint ohne +weitere Anpassungen normalerweise so: +% +\CodePreamble{% + Aufzählung mit einer \Environment{itemize}-Umgebung und Standardabständen:% +} +\begin{Hint*} +\begin{itemize} +\item erster Punkt +\item zweiter Punkt +\item dritter Punkt +\end{itemize} +\end{Hint*} +% +Dabei wirken die Abstände zwischen den einzelnen Punkten tatsächlich etwas +überdimensioniert. Mit dem Paket \Package{enumitem} können die Umgebungen für +Auflistungen einfach an die individuellen Bedürfnisse angepasst werden. +% +\begin{Preamble} +\usepackage{enumitem} +\end{Preamble} +Um diese ungewollten Abstände zwischen den Listenpunkten zu entfernen, kann der +Schlüssel \Option{noitemsep} verwendet werden. Mit dem Befehl \Macro{setlist} +werden~-- ohne zusätzliche Angaben im optionalen Argument~-- alle Umgebungen +für Aufzählungen global geändert. Hier soll dies lediglich für die Umgebung +\Environment{itemize} geschehen: +\begin{Preamble*} +\setlist[itemize]{noitemsep} + +\end{Preamble*} +% +Das Ergebnis stellt sich folgendermaßen dar: +% +\CodePreamble{% + Aufzählung mit einer \Environment{itemize}-Umgebung ohne vertikale Abstände:% +} +\begin{Hint*} +\begin{itemize} +\item erster Punkt +\item zweiter Punkt +\item dritter Punkt +\end{itemize} + +\end{Hint*} +% +Alternativ zur globalen Änderung einer speziellen oder aller Aufzählungslisten +kann der Schlüssel \PValue{noitemsep} auch nur gezielt an einzelne Umgebung +über das optionale Argument weitergereicht werden. + +Natürlich erlaubt das Paket noch weitergehende Einstellungen für die Umgebungen +\Environment{itemize}, \Environment{enumerate} und \Environment{description}. +Zusätzlich können diese für eigene Aufzählungsumgebungen geklont und den +eigenen Bedürfnissen angepasst werden. Genaueres hierzu ist der Dokumentation +des Paketes \Package{enumitem} entnehmen. + + +\subsection{Datumsformatierung} +Das Paket \Package{isodate} stellt den Befehl \Macro{printdate} bereit, welcher +für die Formatierung von Datumsangaben verwendet werden kann. Wird das Paket +mit einer der \TUDScript-Dokumentklassen geladen, wird der genannte Befehl +automatisch für alle bereitgestellten Datumsfelder verwendet. +% +\begin{Preamble} +\usepackage{isodate} + +\end{Preamble} + + +\subsection{Auslassungspunkte} +Das typographisch richtige Setzen von Auslassungspunkten mit den Befehlen +\Macro{dots} repsektive \Macro{textellipsis} wird im Handbuch unter +\manualhyperref{sec:tips:dots}{Das Setzen von Auslassungspunkten} genauer +beschrieben, weshalb hier nur kurz darauf eingegangen wird. Es wird das Paket +\Package{ellipsis} benötigt. +% +\begin{Preamble} +\usepackage{ellipsis} +\end{Preamble} +% +Für deutschsprachige Texte sollten außerdem noch +% +\begin{Preamble} +\let\ellipsispunctuation\relax + +\end{Preamble} +% +ausgeführt werden. + + + +\section{Erstellen von Abbildungen} +\label{sec:figures} +Die einfachste Möglichkeit, in einer wissenschaftlichen Abhandlung Grafiken zu +verwenden, ist sicherlich das Einbinden von externen Abbildungen mit dem Befehl +\Macro{includegraphics}. Allerdings ist für eine wissenschaftliche Arbeit in +höchster Qualität meiner Meinung nach das bloße Einfügen einer gescannten oder +heruntergeladenen Grafik unzureichend. Vielmehr sollte diese zum einen als +skalierbare Vektorgrafik vorliegen, um sowohl die höchste Druckqualität als +auch die Wiederverwendbarkeit sicherzustellen, und zum anderen in ihrer +Gestaltung dem verwendeten Layout des verfassten Dokumentes entsprechen. Dies +betrifft sowohl die eingesetzten Farben und Schriften als auch die Stärke der +verwendeten Linien. + +Zum Zeichnen von Grafiken sind die freien Programme \Application{LaTeXDraw} und +besonders \Application{Inkscape} empfehlenswert, da diese die Verwendung der +Dokumentschriften innerhalb der erstellten Grafiken ermöglichen. Im Handbuch zu +\TUDScript wird dies für \manualhyperref{sec:tips:svg}{\Application{Inkscape}} +genauer erläutert. Eine andere Variante ist das \enquote{Programmieren} von +Grafiken. Die zwei bekanntesten \hologo{LaTeX}-Pakete sind \Package{tikz}(pgf) +und \Package{pstricks}(pstricks-base). Für diese beiden wird im Folgenden eine +Abbildung exemplarisch erstellt, ohne dabei tiefer ins Detail gehen zu wollen. +Ebenfalls wird darauf verzichtet, diese im Kopierbeispiel einzubinden. Für +beide Pakete gibt es neben der umfangreichen Dokumentation zahlreiche Beispiele +und Erläuterungen im Internet. + + +\subsection{Das Paket \Package{tikz}} +Zur Verwendung von \Package{tikz}(pgf) ist nicht viel zu sagen. Einfach in der +Dokumentpräambel einbinden und es kann losgehen. Für das nachfolgende Beispiel +sind außerdem noch zwei weitere Programmbibliotheken für \Package{tikz}(pgf) +notwendig. +% +\begin{Hint} +\usepackage{tikz} +\usetikzlibrary{chains} +\usetikzlibrary{decorations.markings} +\tikzset{on grid} +\end{Hint} +% +Ein kurze Anmerkungen zur Skalierung der Grafiken möchte ich mir erlauben. +Normalerweise verwendet \Package{tikz}(pgf) Koordinaten im Zentimeter"=Raster. +Ich persönlich bevorzuge der relativierte Skalierung auf die Textbreite des +Dokumentes, wobei eine Einheit genau \SI{1}{\percent} dieser entspricht. Das +kann mit folgendem Quelltext erreicht werden: +% +\CodeHook{\renewcommand\newlength[1]{}} +\begin{Hint*} +\newlength{\tikzunit} +\setlength{\tikzunit}{.01\textwidth} +\tikzset{x=\tikzunit,y=\tikzunit} +\end{Hint*} +% +Nachfolgend wird eine Grafik innerhalb einer Gleitumgebung exemplarisch +erstellt. Das Ergebnis ist in \autoref{fig:tikz} zu sehen. + +\begin{Hint?} +\begin{figure} +\begin{tikzpicture} + \tikzstyle{inner box}=[% + text width=17\tikzunit, + align=center, + rectangle, + inner sep=.5\tikzunit, + minimum height=8\tikzunit, + font=\hspace{0pt}, + draw + ] + \tikzstyle{inner label}=[align=center, font=\scriptsize] + \tikzstyle{inner box chain}=[every node/.style={on chain}] + \tikzstyle{inner box chain below}=[% + inner box chain, node distance=8\tikzunit,continue chain=going below + ] + \tikzstyle{inner box chain right}=[% + inner box chain,node distance=35\tikzunit,continue chain=going right + ] + \tikzstyle{inner box chain above}=[% + inner box chain,node distance=16\tikzunit,continue chain=going above + ] + \tikzstyle{pstarrow->}=[% + decoration={markings, + mark=at position 1 with {\arrow[xscale=1.5]{stealth}}; + }, + postaction={decorate}, + shorten >=0.7pt + ] + \newcommand\tikzparbox[2][9]{% + \parbox{#1\tikzunit}{\centering\hspace{0pt}#2}% + } + \begin{scope}[start chain] + \begin{scope}[inner box chain below] + \node(NE)[inner box]{Navigations\-ebene}; + \node(NB)[inner label]{gewählte Fahrtroute\\zeitlicher Ablauf}; + \node(BE)[inner box]{{Bahnführungs\-ebene}}; + \node(BS)[inner label]{% + gewählte Führungsgrößen:\\Sollspur, Sollgeschwindigkeit% + }; + \node(SE)[inner box]{Stabilisierungs\-ebene}; + \end{scope} + \begin{scope}[inner box chain right] + \node(LQ)[inner box]{Längs- und Querdynamik}; + \node(FO)[inner box]{Fahrbahn\-oberfläche}; + \end{scope} + \begin{scope}[inner box chain above] + \node(FR)[inner box]{Fahrraum\\\smallskip{\scriptsize Straße + und\\\vspace{-1.5ex}Verkehrssituation}}; + \node(SN)[inner box]{Straßennetz}; + \end{scope} + \end{scope} + \begin{scope}[inner label,minimum size=0pt] + \draw [pstarrow->] (FO) -| ++(13.5,-12) to + node [above]{Istspur, Istgeschwindigkeit} ++(-97,0) |- (SE); + \draw [pstarrow->] (FR) -| ++(14 ,-32) to + node [above]{Bereich sicherer Führungsgrößen} ++(-98,0) |- (BE); + \draw [pstarrow->] (SN) -| ++(14.5 ,-52) to + node [above]{mögliche Fahrtroute} ++(-99,0) |- (NE); + \end{scope} + \begin{scope}[inner label] + \draw (NE) to (NB); + \draw [pstarrow->] (NB) to (BE); + \draw (BE) to (BS); + \draw [pstarrow->] (BS) to (SE); + \draw [pstarrow->] (SE) to + node[above] {\tikzparbox{Stell\-größen}} + node[below] {\tikzparbox{Lenken Gasgeben Bremsen}} + (LQ); + \draw [pstarrow->] (LQ) to + node[above]{\tikzparbox{Regel\-größen}} + node[below]{\tikzparbox{Fahrzeugbewegung}} + (FO); + \draw [pstarrow->] (LQ)+(24,0) |- (FR); + \draw [pstarrow->] (LQ)+(24,0) |- (SN); + \end{scope} + \begin{scope}[very thick,rounded corners=5\tikzunit] + \draw (-12.5,-40) rectangle (12.5,14); + \draw ( 22.5,-40) rectangle (47.5,-18); + \draw ( 57.5,-40) rectangle (82.5,14); + \end{scope} + \begin{scope}[font=\bfseries] + \node at (0,9) {Fahrer}; + \node at (35,-23) {Fahrzeug}; + \node at (70,9) {Umwelt}; + \end{scope} +\end{tikzpicture} +\caption{Eine mit TikZ erstellte Grafik}\label{fig:tikz} +\end{figure} +\end{Hint?} +%\InputCode + + +\subsection{Das Paket \Package{pstricks}} +Die zuvor mit \Package{tikz}(pgf) erstellte Grafik wird nachfolgend mit dem +Paket \Package{pstricks} erstellt. Mit diesem lassen sich PostScript"=Grafiken +erstellen. Ähnlich wie bei \Package{tikz}(pgf) gibt es ein Kernpaket und +zusätzliche Ergänzungen. Diese werden jedoch nicht als Programmbibliotheken +sondern ganz normal als \hologo{LaTeX}"=Pakete eingebunden. +% +\begin{Hint} +\usepackage{pstricks} +\usepackage{pst-node} +\end{Hint} +% +Die Verwendung von PostScript hat zahlreiche Vorteile, macht die direkte +Nutzung von \hologo{pdfLaTeX} etwas schwierig. Das Paket \Package{auto-pst-pdf} +schafft hier jedoch Abhilfe. Wird \hologo{pdfLaTeX} über die zusätzliche Option +\Option{--shell-escape} respektive \Option{--enable-write18} mit erweiterten +Schreibrechten aufgerufen, so werden die Abbildungen automatisch im PDF-Format +erzeugt und eingebunden. +% +\begin{Hint} +\usepackage{auto-pst-pdf} +\end{Hint} +% +Bei einigen Pakete kommt es in der Kombination mit \Package{auto-pst-pdf} zu +kleineren Problemen, die sich jedoch meist relativ leicht beheben lassen. Im +Handbuch wird die \manualhyperref{sec:tips:floatrow}{gleichzeitige Verwendung} +von \Package{auto-pst-pdf} in Kombination mit den Paketen \Package{tikz}(pgf), +\Package{todonotes} sowie \Package{floatrow}~-- bei der Nutzung des Befehls +\Macro{ffigbox}~-- erklärt. Diese Hinweise sollten Sie gegebenenfalls beachten. + +Ähnlich wie zuvor bei der \Package{tikz}(pgf)-Grafik wird die nachfolgende +\Package{pstricks}-Abbildung auf die Textbreite des Dokumentes skaliert, wobei +eine Einheit genau \SI{1}{\percent} dieser entspricht. Außerdem werden noch ein +paar weitere Einstellungen gemacht. Dies geschieht mit: +% +\begin{Hint*} +\psset{% + unit=.01\textwidth,% + cornersize=absolute,% + labelsep=.8ex,% + linewidth=.4pt,% + arrowscale=1.5,% +} +\end{Hint*} +% +Die innerhalb einer Gleitumgebung erzeugte \Package{pstricks}-Grafik ist in +\autoref{fig:pstricks} dargestellt. +% +\begin{Hint?} +\begin{figure} +\begin{pspicture}(0,-2)(100,64) +\newcommand\fnodetext{} +\def\fnodetext(#1)#2#3{% + \fnode[framesize=18 8](#1){#2}% + \rput(#1){\parbox{17\psunit}{\centering\hspace{0pt}#3}}% +} +\newcommand\scriptbox[2][24]{% + \parbox{#1\psunit}{\scriptsize\centering\hspace{0pt}#2}% +} +\rput(15,10){% + \rput(0,49){\textbf{Fahrer}} + \fnodetext(0,40){NE}{Navigations\-ebene} + \fnodetext(0,24){BE}{Bahnführungs\-ebene} + \fnodetext(0,08){SE}{Stabilisierungs\-ebene} + \ncline{->}{NE}{BE} + \ncput*{\scriptbox{gewählte Fahrtroute\\zeitlicher Ablauf}} + \ncline{->}{BE}{SE} + \ncput*{% + \scriptbox{gewählte Führungsgrößen:\\Sollspur,~Sollgeschwindigkeit}% + } + \psframe[dimen=middle,linewidth=1.2pt,linearc=5](-12.5,0)(12.5,54) +} +\rput(50,10){% + \rput(0,17){\textbf{Fahrzeug}} + \fnodetext(0,8){FZ}{Längs- und\\Querdynamik} + \psframe[dimen=middle,linewidth=1.2pt,linearc=5](-12.5,0)(12.5,22) +} +\rput(85,10){% + \rput(0,49){\textbf{Umwelt}} + \fnodetext(0,40){SN}{Straßennetz} + \fnodetext(0,24){FR}{% + Fahrraum\\\smallskip\scriptsize{Straße und Verkehrssituation}% + } + \fnodetext(0,08){FO}{Fahrbahn\-oberfläche} + \psframe[dimen=middle,linewidth=1.2pt,linearc=5](-12.5,0)(12.5,54) +} + +\ncline{->}{SE}{FZ} +\naput{\scriptbox[9]{Stell\-größen}} +\nbput{\scriptbox[9]{Lenken Gasgeben Bremsen}} +\ncline{->}{FZ}{FO} +\naput{\scriptbox[9]{Regel\-größen}} +\nbput{\scriptbox[9]{Fahrzeugbewegung}} + +\psset{armA=15,armB=0,angleA=0,angleB=180} +\ncangles{->}{FZ}{FR} +\ncangles{->}{FZ}{SN} + +\psset{angleA=180,angleB=0} +\ncloop[loopsize=12,arm=4.5]{<-}{SE}{FO} +\naput{\scriptbox{Istspur, Istgeschwindigkeit}} +\ncloop[loopsize=32,arm=5]{<-}{BE}{FR} +\naput{\scriptbox[30]{Bereich sicherer Führungsgrößen}} +\ncloop[loopsize=52,arm=5.5]{<-}{NE}{SN} +\naput{\scriptbox{mögliche Fahrtroute}} +\end{pspicture} +\caption{Eine mit pstricks erstellte Grafik}\label{fig:pstricks} +\end{figure} +\end{Hint?} + + +\subsection{Auslagern von Grafiken in separate Dateien} +Damit \enquote{programmierte} Grafiken zum einen das Dokument respektive dessen +Struktur nicht unnötig unübersichtlich machen und zum anderen nur nach einer +Änderung abermals kompiliert werden, um die Kompilierungsdauer möglichst gering +zu halten, ist es ratsam, diese in separate Dateien auszulagern. Hierfür bieten +sich die beiden Pakete \Package*{subfiles} und \Package*{standalone} an, welche +im Handbuch erläutert werden. + + + +\section{Dokumentation von Quelltexten} +Sollen in einer Dokument Quelltextauszüge beschrieben werden oder ganze +Quelltextdateien eingebunden werden, so empfiehlt sich für dieses Vorhaben das +Paket \Package{listings}. Neben der bloßen Einbindung der Quelltexte bietet es +zusätzlich die Möglichkeit, 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. +% +\begin{Hint} +\usepackage{listings} +\end{Hint} +% +Wird das Paket in einem Dokument mit UTF"~8-Kodierung verwendet, muss dies dem +Paket in der Präambel mitgeteilt werden: +% +\begin{Hint} +\lstset{% + inputencoding=utf8,extendedchars=true, + literate=% + {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 + {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 + {~}{{\textasciitilde}}1 {ß}{{\ss}}1 +} +\end{Hint} +% +Nachdem nun die Grundeinstellungen erfolgt sind, kann ein eigener Stil für eine +gewünschte Programmiersprache definiert werden. Im folgenden Beispiel wird dies +für ein MATLAB"~Skript demonstriert. Als erstes wird \Macro{lstdefinestyle} ein +eigener \Package{lsitings}"~Stil erstellt: +% +\begin{Hint*} +\lstdefinestyle{matlab}{% + language=Matlab,% + basicstyle=\ttfamily,% + commentstyle={\color{green!50!black}}, + keywordstyle={\color{blue!75!black}},% + columns=flexible,keepspaces,% +} +\end{Hint*} +% +Dabei wird die verwendete Programmiersprache definiert sowie die Formatierung +für die Quelltextauszüge festgelegt. Für weitere Einstellungsmöglichkeiten +sollte die Dokumentation zum Paket zu Rate gezogen werden. Der so definierte +Stil lässt sich anschließend folgendermaßen verwenden. +% +\begin{Hint} +\begin{lstlisting}[style=matlab] +§\dots§ +\end{lstlisting} +\end{Hint} +% +Soll innerhalb eines Quelltextauszuges ein Teil als \hologo{LaTeX}"~Code +interpretiert werden, lässt sich mit \PValue{escapechar} ein Escape-Zeichen +definieren. Mit \Macro{lstnewenvironment} ist es außerdem möglich, eine eigene +\Package{lsitings}-Umgebung zu definieren. Das Einbinden externer Quelldateien +in das Dokument ist über +\Macro{lstinputlisting}\OParameter{Schlüssel-Wert-Liste}\Parameter{Dateiname} +möglich, wobei dabei im optionalen Argument ebenfalls der definierte Stil +angegeben werden sollte. Es folgt die Ausgabe eines kurzen Beispiels mit dem +zuvor definierten Stil \PValue{matlab}. +% +\begin{lstlisting}[style=matlab] +function perfect = isperfect(test_value) + % This function checks to see if the given number is "perfect"; + % a "perfect" number is an integer whose factors + % (excluding itself) add up to it. + % + % Example: 6 is a perfect number: 1 + 2 + 3 = 6 == 6 + % 8 is not: 1 + 2 + 4 = 7 ~= 8 + % 28 is a perfect number: 1 + 2 + 4 + 7 + 14 = 28 == 28 + % + % Arguments: + % + % test_value (input) check to see if this value + % is perfect or not + % perfect (output) if yes, set this to 1 + % if no, set this to 0 + + % this will keep track of the sum of all integer divisors + tempsum = 0; + + % we check all possible divisors + for (divisor = 1 : test_value - 1) + div_result = test_value / divisor; + + if (div_result == floor(div_result)) + % this is an integer divisor, so add it to the sum + tempsum = tempsum + divisor; + end + end + + % now, does the sum equal the test_value? + if (tempsum == test_value) + perfect = 1; + else + perfect = 0; + end +end +\end{lstlisting} + + + + +\section{Und ganz zum Schluss \dots} +Mit Sicherheit werden Sie im Laufe der Zeit auf die eine oder andere Frage zu +\hologo{LaTeXe} stoßen, die in diesem Tutorial nicht behandelt wurde. Sollten +Sie an diesen Punkt gelangen, so empfehle ich als erstes einen Blick in die +Kapitel \manualhyperref{sec:packages}{Unerlässliche und beachtenswerte Pakete} +sowie \manualhyperref{sec:tips}{Praktische Tipps \& Tricks} im Handbuch zu +\TUDScript. Sollte Ihre Frage trotzdem unbeantwortet bleiben, so wäre der +Besuch eines \hologo{LaTeX}-Forums der nächste Schritt. Für allgemeine Anfragen +kann ich unter anderem folgende Foren empfehlen: +% +\begin{itemize} +\item \hrfn{http://mrunix.de/forums/forumdisplay.php?38-LaTeX-Forum}{mrunix} +\item \hrfn{http://golatex.de/}{golatex} +\item \hrfn{http://tex.stackexchange.com/}{\hologo{LaTeX} Stack Exchange} +\item \hrfn{http://www.latex-community.org/forum/}{\hologo{LaTeX} Community} +\end{itemize} +% +Insbesondere alle \TUDScript betreffende Fragen sollten natürlich direkt im +dazugehörigen \Forum gestellt werden. + +\begin{Trunk+} +\printbibliography[heading=bibintoc]\label{sec:bibliography} +\end{Trunk+} +\printbibliography[heading=bibintoc] + +\addsec{Index} +Da das Tutorial etwas umfangreicher ist, wird für alle erläuterten Optionen, +Umgebungen und Befehle ein Index erstellt. +\PrintIndex + +\FinishTutorial[% + Um das im kopierten Beispiel erstellte Literaturverzeichnis in das Dokument + einbinden zu können, bedarf es dem einmaligen Aufruf von \Application{biber} + nach dem ersten Durchlauf von \hologo{pdfLaTeX}. Dies erfolgt mit dem Aufruf + \PValue{biber}~\PName{Dateiname}. Danach ist ein weiteres mal die Verwendung + von \PValue{pdflatex}~\PName{Dateiname} notwendig. + + Für das Erstellen von Abkürzungs- und Symbolverzeichnis sollte das mehrmalige + Ausführen von \PValue{pdflatex}~\PName{Dateiname} vollkommen ausreichen. In + diesem Fall werden die Einträge mit \Application{makeindex} sortiert. Soll + stattdessen \Application{xindy} die Sortierung durchführen, muss beim Laden + von \Package{glossaries} die entsprechende Paketoption aktiviert werden. Für + diesen Fall sollte nach der Verwendung von \hologo{pdfLaTeX} der Aufruf des + Perl"=Skriptes \PValue{makeglossaries}~\PName{Dateiname} erfolgen, was + allerdings nur mit \Distribution{\hologo{TeX}~Live} ohne weiteres Zutun + möglich ist. Nutzer von \Distribution{\hologo{MiKTeX}} müssen das Sortieren + mit \Application{xindy} händisch anstoßen. +] +\end{document} |