\RequirePackage{fix-cm} \documentclass[% english,ngerman,% cdgeometry=no,DIV=12,% automark,% listof=toc,% ]{tudscrartcl} \iftutex \usepackage{fontspec} \else \usepackage[T1]{fontenc} \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \fi \usepackage{babel} \usepackage[babel]{microtype} \usepackage{tudscrmanual} \lstset{% inputencoding=utf8,extendedchars=true, literate=% {ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{{\ss}}1 {~}{{\textasciitilde}}1 {»}{{\guillemetright}}1 {«}{{\guillemetleft}}1 } \lstset{escapechar=§} \usepackage{lmodern} \TUDoptions{cd=false,cdfont=false,cdtitle=true} \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,% nostyles,% ]{glossaries} \renewcommand*{\glsglossarymark}[1]{} \newignoredglossary{abbreviation} \newcommand*\newabbreviation[4][]{% \newacronym[type=abbreviation,#1]{#2}{#3}{#4}% }% \makeglossaries } \usepackage{csquotes} \usepackage[backend=biber,style=alphabetic]{biblatex} \DefineBibliographyStrings{ngerman}{urlseen = {Am:}} \addbibresource{\jobname.bib} \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 = {1996}, month = {2}, volume = {4}, 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}, 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} \usepackage{enumitem} \usepackage{caption} \DeclareCaptionSubType[alph]{figure} \DeclareCaptionSubType[alph]{table} \usepackage{floatrow} \renewcommand{\floatpagefraction}{0.7} \usepackage{tikz} \usetikzlibrary{chains} \usetikzlibrary{decorations.markings} \tikzset{on grid} % TODO pst-pdf funktioniert momentan nicht mit hyperref % github.com/rolfn/pst-pdf/issues/6 % --> luapstricks ? \usepackage{pstricks,pst-node} \makeatletter \newcommand*\pcolumnfuzz[1]{\pretocmd\@endpbox{\hfuzz=#1}{}{}} \makeatother \usepackage{bookmark} \begin{document} \subject{Tutorial für \hologo{LaTeX}} \title{% Ein Anwenderleitfaden für das Erstellen einer wissenschaftlichen Abhandlung% } \author{Falk Hanisch\TUDScriptContactTitle} \date{2017-03-29} \makeatletter \begingroup% \def\and{, }% \let\thanks\@gobble% \let\footnote\@gobble% \let\emailaddress\@gobble% \hypersetup{% pdfauthor = {\@author},% pdftitle = {\@title},% pdfsubject = {Tutorial für LaTeX},% pdfkeywords = {LaTeX, \TUDScript, Tutorial, Anwenderleitfaden},% }% \endgroup% \makeatother \StartTutorial[% 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 potenziellen 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. Nicola~L.~C.~Talbot stellt 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 im Folgenden verwendeten Optionen und Befehle aus dem \TUDScript-Bundle werden lediglich sporadisch in ihrer Grundfunktion erläutert. Allerdings lassen sich detaillierte Erläuterung über die türkisfarbigen Hyperlinks zum \tudhyperref{}{\TUDScript-Handbuch} jederzeit sehr einfach öffnen. Des Weiteren wird auf eine Vielzahl von Paketen verwiesen, deren Dokumentation über die magentafarbigen Links im \CTAN* geöffnet werden kann. Alternativ kann dies auch über das Terminal respektive die Kommandozeile mit dem Aufruf \Path{texdoc~\PName{Paket}} direkt lokal erfolgen. Ein Großteil dieser Pakete wird zusätzlich kurz im \TUDScript-Handbuch beschrieben. 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. ] \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. 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} % Mit dem Paket \Package{fontenc} lässt sich die Kodierung der für die Ausgabe der verwendeten Schriften im Dokument spezifizieren, wobei die europäische Zeichenkodierung mit der Option~\Option{T1}(\Package{fontenc}) aktiviert wird. Kommt mit \Engine{LuaLaTeX} oder \Engine{XeLaTeX} ein Unicode"=Textsatzsystem zum Einsatz, sollte besser das Paket \Package{fontspec} geladen werden. Weiterhin kann die Eingabekodierung der kompilierten Datei eingestellt werden. Diese ist standardmäßig \PValue{utf8}. Bei der Verwendung von \Engine{pdfLaTeX} sind auch andere Kodierungen möglich.% \footnote{% Sollte die Datei in einer anderen Kodierung gespeichert sein, so kann das Paket \Package{selinput} genutzt werden, um die Kodierung automatisch zu erkennen. Alternativ lässt sich die Eingabekodierung auch mit dem Paket \Package{inputenc} auch manuell festgelegen. In beiden Fällen sollte das Paket \Package{fontenc} \emph{vorher} geladen worden sein. } Wurde ein Sprachpaket für die deutsche Sprache geladen (\Package{babel} oder \Package{polyglossia}), so werden für \Engine{LuaLaTeX} und \Engine{XeLaTeX} erweiterte Trennmuster verwendet. Für \Engine{pdfLaTeX} lässt sich eine wesentlich verbesserte Worttrennung für die deutsche Sprache mit dem Paket \Package{hyphsubst} aktivieren. In \autoref{sec:hyphenation} können Sie weitere Informationen zur Verwendung von \Package{hyphsubst} sowie zum Thema \emph{Worttrennung} finden. % \begin{Preamble} \usepackage{iftex} \iftutex \usepackage{fontspec} \else \usepackage[T1]{fontenc} \usepackage[ngerman=ngerman-x-latest]{hyphsubst} \fi \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 bei Bedarf 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{Makrotypografie} \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. Zuerst gilt es zu entscheiden, ob das Dokument einseitig oder beidseitig gesetzt werden soll. Ist Letzteres der Fall, so sollte die \KOMAScript-Option \Option{twoside}(\Package{typearea}) als Klassenoption angegeben werden. Im nächsten Schritt ist der zu verwendende Satzspiegel festzulegen. Hierfür kann die \TUDScript-Option \Option{cdgeometry}'manual' verwendet werden, welche im \TUDScript-Handbuch beschrieben ist. Normalerweise wird das Dokument im asymmetrischen Layout des \CDs gesetzt. % Dieses Verhalten wird mit \Option*{cdgeometry=false}'manual' deaktiviert und der Satzspiegel durch das Paket \Package{typearea} nach typografischen Gesichtspunkten konstruiert. Dabei ist für dessen Aufteilung maßgeblich die \KOMAScript-Option \Option{DIV}(\Package{typearea}) verantwortlich, mit der \KOMAScript"=Option \Option{BCOR}(\Package{typearea}) wird die Bindekorrektur angegeben. Diese wird in \autoref{sec:bcor} erläutert. \subsection{Änderung des Zeilenabstandes (Durchschuss)} Auf eine Änderung des Zeilenabstandes sollte aus typografischer 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} erklärt, welches für dieses Anliegen den Befehl \Macro{setstretch}[\Parameter{Faktor}](\Package{setspace}) bereitstellt. Wird die \OpenSans-Hausschrift der \TnUD verwendet, sollte der Faktor im Bereich \PValue{1.05}--\PValue{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, die 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}'manual' 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. 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 betreuenden wissenschaftlichen Mitarbeiters oder Hochschullehrers. Verwenden Sie für ihre Arbeit eine Buchklasse, so können die entsprechenden Abschnitte mit \Macro{frontmatter}(\Package{koma-script}) (Vorspann), \Macro{mainmatter}(\Package{koma-script}) (Hauptteil) und \Macro{backmatter}(\Package{koma-script}) (Nachspann) gekennzeichnet werden. Einen Anhang starten Sie mit \Macro{appendix}(\Package{koma-script}), womit unter anderem die Kapitelnummerierung auf Großbuchstaben umgeschaltet wird. Weitere Hinweise zu den genannten Befehlen sind im \scrguide nachzulesen. \subsection{Aufgabenstellung} \label{sec:task}% % Das Erstellen der Aufgabenstellung einer Abschlussarbeit im \CD der \TnUD muss das Paket \Package{tudscrsupervisor}'manual' geladen werden. % \begin{Preamble} \usepackage{tudscrsupervisor} \end{Preamble} % Dieses Paket stellt die Umgebung \Environment{task}'manual' sowie den Befehl \Macro{taskform}'manual' bereit. Bei beiden Varianten wird zu Beginn eine Tabelle mit Autoreninformationen erzeugt. Am Ende werden der oder die Betreuer der Arbeit sowie Professor und gegebenenfalls der Prüfungsausschussvorsitzende ausgegeben. Mit der Umgebung \Environment{task}'manual' kann zwischen Kopf und Fuß ein beliebiger Inhalt gesetzt werden. Der Befehl \Macro{taskform}'manual' hingegen erzeugt eine standardisierte Ausgabe, wobei der Inhalt des zweiten obligatorischen Arguments in einer \Environment{itemize}(\Package{koma-script},\Package{enumitem})-Umgebung verwendet wird und somit \Macro{item}(\Package{koma-script},\Package{enumitem}) 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 dieser Effekt abgeschwächt werden könnte. Zusätzlich sind Methoden zu entwickeln, mit denen sich ein ähnlicher Vorgang zukünftig vermeiden lässt. } \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 dieser Effekt abgeschwächt werden könnte. Zusätzlich sind Methoden zu entwickeln, mit denen sich ein ähnlicher Vorgang zukünftig vermeiden lässt. } \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}'manual' 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}'manual' ausgegeben werden. Wurde das Thema in Kooperation mit einem Unternehmen bearbeitet, so wird zumeist auch ein Sperrvermerk gefordert, welcher mit \Macro{blocking}'manual' erzeugt werden kann. Mit \Macro{declaration}'manual' lassen sich beide Erklärungen direkt nacheinander erzeugen. Die verwendete Überschrift und ein möglicher Eintrag in das Inhaltsverzeichnis können über die Option \Option{declaration}'manual' 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 \Macro{tableofcontents}(\Package{koma-script}) erzeugt und führt die Gliederung des erstellten Dokumentes entsprechend der verwendeten Befehle% \footnote{% \Macro{part}(\Package{koma-script}), \Macro{addpart}(\Package{koma-script}), \Macro{chapter}(\Package{koma-script}), \Macro{addchap}(\Package{koma-script}), \Macro{section}(\Package{koma-script}), \Macro{addsec}(\Package{koma-script}) 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}% ](\Package{koma-script},\Package{caption}) genutzt werden, um diesen eine Bezeichnung hinzuzufügen. Mit \Macro{listoffigures}(\Package{koma-script}) beziehungsweise \Macro{listoftables}(\Package{koma-script}) 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 \Environment{figure} beziehungsweise \Environment{table} genutzt und benannt werden, kann dies entweder mit dem Befehl \Macro{captionof}[% \Parameter{Typ}\OParameter{Verzeichniseintrag}\Parameter{Bezeichnung}% ](\Package{koma-script}) oder~-- falls die beiden Pakete \Package{caption} und \Package{hyperref} genutzt werden~-- auch wie gewohnt mit \Macro{caption}(\Package{koma-script},\Package{caption}) allerdings zusätzlich ergänzt mit einem zuvor aufgerufenem \Macro{captionsetup}[\PParameter{type=figure/table}](\Package{caption}) erfolgen. Weitere Informationen diesbezüglich sind dem \scrguide respektive der Anleitung zu \Package{caption} zu entnehmen. In \autoref{sec:floats} wird genauer auf 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. Alternativ kann auch das Paket \Package{acronym} verwendet werden, wobei die alphabetische Sortierung der Abkürzungen durch den Anwender erfolgen muss, weshalb ich von diesem eher abrate. 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*}(\Package{scrbase}) aus dem \KOMAScript-Bundle. Mit diesem können Sie die Quelltext nach dem Laden eines Paketes ausführen. \Attention{% Es ist allerdings darauf zu achten, dass der Quelltext nur ausgeführt wird, wenn das avisierte Zielpaket auch tatsächlich geladen wird. } Falls Sie demnach auf \Package{hyperref} jedoch nicht auf \Package{glossaries} verzichten möchten, sollte der nachfolgende Quelltext am Ende der Präambel eingefügt werden. Die für \Package{glossaries} verwendeten Optionen werden kurz erläutert. % \begin{Preamble+} \AfterPackage*{hyperref}{% \end{Preamble+} \begin{Preamble} \usepackage[% \end{Preamble} % Die zwei Paketoptionen \Option{acronym}(\Package{glossaries}) sowie \Option{symbols}(\Package{glossaries}) erzeugen die beiden Verzeichnisse für Abkürzungen und Symbole. Die Option \Option{nomain}(\Package{glossaries}) wird immer dann verwendet, wenn im Dokument kein zusätzliches allgemeines oder technisches Glossar erzeugt werden soll. % \begin{Preamble} acronym,% Abkürzungen symbols,% Formelzeichen nomain,% kein Glossar \end{Preamble} % Durch \Option{nogroupskip}(\Package{glossaries}) wird der automatische Abstand zwischen den Einträgen zur Gruppierung innerhalb eines Glossars entfernt, die Option \Option{toc}(\Package{glossaries}) fügt alle erzeugten Verzeichnisse dem Inhaltsverzeichnis hinzu, \Option{section}(\Package{glossaries}) bestimmt die Gliederungsebene der Überschrift. % \begin{Preamble} nogroupskip,% toc,% section=chapter,% \end{Preamble} % Mit der Option \Option{nostyles}(\Package{glossaries}) kann man gegebenenfalls das Laden der von \Package{glossaries} vordefinierten Stilen verhindern. Dies ist insbesondere sinnvoll, wenn für die einzelnen Glossare und Verzeichnisse ohnehin eigene Stile erstellt werden, wie dies nachfolgend geschieht. % \begin{Preamble} nostyles,% \end{Preamble} % Mit der Option \Option{translate}(\Package{glossaries}) werden die Überschriften aller Glossare in der Dokumentsprache gesetzt, wobei \Option*{translate=babel} die Nutzung des Paketes \Package{babel} erzwingt. % \begin{Preamble} translate=babel,% \end{Preamble} % Das Paket \Package{glossaries} erstellt bei der Kompilierung des Dokumentes Hilfsdateien, anhand derer die Indexe erzeugt und sortiert werden können. Da \Engine{pdfLaTeX} diese Funktionalität nicht bereitstellt, ist hierfür der Aufruf einer passenden Anwendung notwendig. Die meisten Distributionen stellen dafür \Application{makeindex} bereit. Dieses Programm kann prinzipiell zwar Einträge alphabetisch sortieren, bietet allerdings weder die Nutzung von Unicode-Symbolen noch eine Sprachunterstützung. Aufgrund der genannten Nachteile ist \Application{xindy} zum Sortieren der Einträge zu empfehlen, da dieses Programm sowohl eine Unterstützung von Unicode als auch die Möglichkeit, nach sprachabhängigen Regeln zu sortieren, bietet. Allein für die deutsche Sprache gibt es beispielsweise zwei Varianten der Sortierung~-- nach DIN und nach Duden. Ohne weiteres Zutun des Anwenders wird vom Paket \Package{glossaries} in der Grundeinstellung \Application{makeindex} genutzt. Soll stattdessen für die Sortierung der Glossar- und Verzeichniseinträge \Application{xindy} zum Einsatz kommen, muss die Option \Option{xindy}(\Package{glossaries}) aktiviert werden. Dieser kann zusätzlich sowohl die zu nutzende Spracheinstellung zur Sortierung als auch die gewünschte Eingabekodierung an \Application{xindy} übergeben werden. Beispielsweise wird mit \Option*{xindy=\PParameter{language=german-din}} die deutsche Sortierung nach~DIN aktiviert. % % \begin{Hint} % mit Tex Live einfach verwendbar xindy=§\{§language=german-din§\}§, \end{Hint} \begin{Preamble+} % mit Tex Live einfach verwendbar xindy={language=german-din}, \end{Preamble+} % Das Erstellen aller Glossare~-- unabhängig davon, ob \Application{xindy} oder \Application{makeindex} für die Sortierung zum Einsatz kommt~-- sollte das Perl"~Skript \File{makeglossaries}(\Package{glossaries}) verwendet werden, welches alle notwendigen Optionen an die jeweilige Anwendung weiterleitet. \Attention{% Für den Aufruf von \Application{xindy} selbst als auch für die Ausführung des Skriptes \File{makeglossaries}(\Package{glossaries}) ist ein Perl"=Interpreter notwendig. Dieser wird lediglich von \Distribution{\hologo{TeX}~Live} nicht jedoch von \Distribution{\hologo{MiKTeX}} direkt bereitgestellt. Wird die letztgenannte Distribution verwendet, muss der Anwender gegebenenfalls diesen zusätzlich installieren. } Kann das Skript \File{makeglossaries}(\Package{glossaries}) nicht genutzt werden, kann alternativ dazu die Option \Option{automake}(\Package{glossaries}) aktiviert werden. Diese sorgt dafür, dass am Ende des \Engine{pdfLaTeX}"~Laufs der Aufruf von \Application{xindy} oder \Application{makeindex} direkt erfolgt. Soll \Application{xindy} verwendet werden, sind dafür allerdings erweiterte Schreibrechte notwendig, weshalb für diese Variante \Engine{pdfLaTeX} mit der Option \Option{-{}-shell-escape}(\Engine{pdfLaTeX}) respektive \Option{-{}-enable-write18}(\Engine{pdfLaTeX}) aufgerufen werden muss. Für \Application{xindy} ist außerdem die Angabe der Sprache über die Option \Option*{xindy=\PParameter{language=\dots}} zwingend notwendig. Ist weder die Nutzung des Skriptes \File{makeglossaries}(\Package{glossaries}) noch der~-- im Zweifel sicherheitskritische~-- Aufruf von \Engine{pdfLaTeX} mit erweiterten Schreibrechten möglich, so muss die gewünschte Anwendung für die Sortierung explizit durch den Anwender aufgerufen werden, wobei auf die Angabe der richtigen Parameter zu achten ist. Genaueres hierzu sowie Lösungen für Probleme beim Erstellen der Glossare und Verzeichnisse sind in der Dokumentation von \Package{glossaries} zu finden. % \begin{Hint} automake,% \end{Hint} % Damit sind alle verwendeten Optionen erläutert. Schließlich sorgt der Befehl \Macro{makeglossaries}(\Package{glossaries}) 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} \begin{Preamble+} }% Ende von AfterPackage \AfterPackage*{glossaries}{% \end{Preamble+} % Damit wäre der erste Teil zur Initialisierung überstanden und wir können zum eigentlichen Problem kommen. Wie wird nun ein Abkürzungs- und/oder Symbolverzeichnis erstellt? \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}% ](\Package{glossaries}) 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 dem \Package{glossaries}"=Befehl \Macro{gls}[\Parameter{Label}](\Package{glossaries}) 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äufig 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}(\Package{glossaries}) von der zweiten~-- und jeder weiteren~-- unterscheidet. Das Verhalten lässt sich über verschiedene Stile mit \Macro{setacronymstyle}(\Package{glossaries}) anpassen. Die Ausgabe einer Liste aller Abkürzungen erfolgt mit: % \begin{Hint} \printacronyms \end{Hint} \newglossarystyle{simple}{% \renewenvironment{theglossary}{}{\par}% \renewcommand*{\glossentry}[2]{% \noindent% \textsbn{\glsentryitem{##1}\glstarget{##1}\glossentryname{##1}}\quad \glossentrydesc{##1}\glspostdescription\space ##2% \par% }% } \begin{quoting}[rightmargin=0pt] \glsdisablehyper \printacronyms[style=simple] \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}(\Package{tabularx}) oder \Environment{tabu}(\Package{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 Seitenumbrüche in einer Tabelle zulassen, können Sie in diesem \autorefname[sec:glossaries] bei der Symbolverzeichniserstellung erfahren. \minisec{Eigener Stil mit \Environment*{tabularx}} Ein eigener Glossarstil kann mit \Macro{newglossarystyle}(\Package{glossaries}) definiert werden, wobei für den neu definierten Stil die Umgebung \Environment{theglossary}(\Package{glossaries}) umdefiniert wird. Als erstes kommt die Tabellenumgebung \Environment{tabularx}(\Package{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{@\PParameter{}} 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}(\Package{tabularx}) lässt sich diese nicht als verschachtelte Umgebung verwenden. Allerdings kann stattdessen die mit \Macro*{tabularx} sowie \Macro*{endtabularx} die Low"~Level"~Variante genutzt werden. 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}(\Package{glossaries})) sowie Überschriften und Abstände bei Gruppierungen (\Macro{glsgroupheading}(\Package{glossaries}) sowie \Macro{glsgroupskip}(\Package{glossaries})) verzichtet. Der Befehl \Macro{glossentry}(\Package{glossaries}) 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}(\Package{glossaries}) die Bezeichnung oder mit \Macro{glsentrydesc}(\Package{glossaries}) die dazugehörige Beschreibung% } Der Befehl \Macro{glossentry}(\Package{glossaries}) 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}](\Package{glossaries}) 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] \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}(\Package{tabu}) wird durch das Paket \Package{tabu} bereitgestellt. Es wird später in \autoref{sec:tabu} vorgestellt, wobei die dortigen Anmerkungen \emph{unbedingt} zu beachten sind. Für die bereits verwendeten \Environment{tabularx}(\Package{tabularx})"=Tabellen muss generell eine feste Tabellenbreite angegeben werden. Die Breite der \PValue{X}"~Spalten wird anhand der angegebenen Gesamtbreite und dem für andere Spalten vom Typ~\PValue{l},~\PValue{r}~und~\PValue{c} benötigten Platz berechnet. Wie \Environment{tabularx}(\Package{tabularx}) bietet auch die Umgebung \Environment{tabu}(\Package{tabu}) einen \PValue{X}"~Spaltentyp. Für diese kann jedoch 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 Leerraum am unteren Ende. Um dieses Manko zu beheben, wird am Schluss jeder \PValue{X}"~Spalte mit \PValue{X<\PParameter{\Macro{strut}}} einfach der Befehl \Macro{strut} angehängt, der vertikalen Leerraum ober- und unterhalb der aktuellen Grundlinie einfügt. In \autoref{sec:tables} wird ein Ansatz aufgezeigt, wie dies automatisiert über einen neuen Spaltenstil ausgemerzt werden kann. Der Rest des Stils ist identisch zu \PValue{acrotabularx}. % \CodeHook{\let\newglossarystyle\renewglossarystyle} \begin{Preamble*} \newglossarystyle{acrotabu}{% \renewenvironment{theglossary}{% \begin{tabu}{@{}lX<{\strut}l@{}}% 'spread 0pt' defekt in v2.9 }{% \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 \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}(\Package{glossaries}) 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 \Macro*{newacronym} wird er \Macro{newformulasymbol}|?| genannt. Dieser hat ein optionales und vier obligatorische Argumente, wobei das optionale Argument prinzipiell alle Schlüssel"~Wert"~Paare enthalten kann, die durch das Paket \Package{glossaries} akzeptiert werden. Welche davon letztlich auch Auswirkungen haben, hängt allerdings von der Gestaltung des Stils durch den Anwender ab. Der Befehl hat folgende Definition: % \begin{quoting}[leftmargin=\parindent] \Macro{newformulasymbol}[% \LParameter\Parameter{Label}\Parameter{Name}% \Parameter{Symbol}\Parameter{Einheit}% ]|?|% \end{quoting} % Mit \PName{Label} erfolgt die eindeutige Kennzeichnung des Symbols. Außerdem wird dies standardmäßig für die Sortierung verwendet, was unter Umständen etwas problematisch sein könnte. In diesem Fall ist eine manuelle Festlegung für den dazugehörigen Schlüssel durch den Anwender über das optionale Argument mit \PValue{sort=}\PName{Sortierung} eventuell sinnvoll. Nach dem \PName{Label} schließt der \PName{Name} für das Formelzeichen an, gefolgt vom \PName{Symbol} sowie der dazugehörige physikalische \PName{Einheit}. % \CodeHook{\let\newcommand\renewcommand} \begin{Preamble*} \newcommand*{\newformulasymbol}[5][]{% \newglossaryentry{#2}{% type=symbols,% name={#3},% description={\nopostdesc},% 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 der Befehl \Macro{si}(\Package{siunitx}) aus dem Paket \Package{siunitx} genutzt werden. 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 und ansehnlich ist, wird für diese der Befehl \Macro{sfrac}(\Package{xfrac}) aus dem Paket \Package{xfrac} genutzt. % \begin{Trunk*} \newformulasymbol{l}{Länge}{l}{m} \newformulasymbol{m}{Masse}{m}{kg} \newformulasymbol{a}{Beschleunigung}{a}{\sfrac{m}{s^2}} \newformulasymbol{t}{Zeit}{t}{s} \newformulasymbol{f}{Frequenz}{f}{s^{-1}} \newformulasymbol{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}](\Package{glossaries}) 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 die Formelzeichen auch für den mathematischen Satz sinnvoll nutzbar sind, sollte das Erscheinungsbild der Einträge mit \Macro{defglsentryfmt}(\Package{glossaries}) angepasst werden. % \begin{Preamble*} \defglsentryfmt[symbols]{% \ifmmode% \glssymbol{\glslabel}% \else% \glsgenentryfmt~\glsentrysymbol{\glslabel}% \fi% } \end{Preamble*} % Bei der Verwendung von \Macro{gls}[\Parameter{Label}](\Package{glossaries}) führt diese Definition 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}(\Package{glossaries}) jedenfalls kein sinnvolles Verzeichnis: % \begin{Hint} \printsymbols \end{Hint} \begin{quoting}[rightmargin=0pt] \glsdisablehyper \printsymbols[style=simple] \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}(\Package{tabularx}) setzen. Vielmehr ist für die Verwendung der Umgebung \Environment{longtable}(\Package{longtable}) das Paket \Package{ltxtable} notwendig. Dieses wiederum verlangt, dass die zu setzende Tabelle in einer separaten Datei abgelegt wird. Soll diese dennoch innerhalb des Hauptdokumentes erstellt werden, kann für dieses Unterfangen die Umgebung \Environment{filecontents}(\Package{filecontents}) aus dem gleichnamigen Paket genutzt werden, womit \emph{bereits existierende Dateien} überschrieben werden. 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}(\Package{tabu}) aus dem Paket \Package{tabu} infrage. \minisec{Eigener Stil mit \Environment*{longtabu}} Das Paket \Package{tabu} definiert für umbruchfähige Tabellen die Umgebung \Environment{longtabu}(\Package{tabu}), welche wiederum auf der Umgebung \Environment{longtable}(\Package{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. Die im nachfolgend definierten Stil verwendeten Befehle \Macro{toprule}(\Package{booktabs}), \Macro{midrule}(\Package{booktabs}) sowie \Macro{cmidrule}(\Package{booktabs}) und \Macro{bottomrule}(\Package{booktabs}) für unterschiedliche horizontale Linien stammen allesamt aus dem Paket \Package{booktabs}, welches für den Satz von hochwertigen Tabellen eine große Hilfe ist. % \CodeHook{\let\newglossarystyle\renewglossarystyle} \begin{Preamble*} \newglossarystyle{symblongtabu}{% \renewenvironment{theglossary}{% \begin{longtabu}[l]{ccX<{\strut}l}% 'spread 0pt' defekt in v2.9 }{% \end{longtabu}% }% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glsgroupskip}{}% \renewcommand*{\glossaryheader}{% \toprule \bfseries Symbol & \bfseries Einheit & \bfseries Bezeichnung & \bfseries Seite(n) \tabularnewline\midrule\endhead% \bottomrule\endfoot% }% \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}(\Package{glossaries}) wird der Befehl \Macro{glossaryheader}(\Package{glossaries}) für einen Tabellenkopf definiert, wie er auch für eine \Environment{longtable}(\Package{longtable})"=Umgebung erscheinen würde. In hier vorgestellten Fall werden der Kopf mit dem Makro \Macro{endhead}(\Package{longtable}) beziehungsweise der Fuß durch \Macro{endfoot}(\Package{longtable}) 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}{ccX<{\strut}l}% 'spread 0pt' defekt in v2.9 }{% \bottomrule\end{tabu}% }% \renewcommand*{\glossaryheader}{% \toprule \bfseries Symbol & \bfseries Einheit & \bfseries Bezeichnung & \bfseries Seite(n) \tabularnewline\midrule% }% } \printsymbols[style=symbtabu] \end{quoting} \minisec{Unterteilung nach griechischen und lateinischen Symbolen} Oftmals wird es für Abschlussarbeiten verlangt, das Symbolverzeichnis nach griechischen und lateinischen Formelzeichen zu untergliedern. Für die Umsetzung dieser Anforderung ist die zuvor beschriebene Lösung prinzipiell nutzbar, allerdings muss diese etwas erweitert werden. Realisiert wird das Ganze, indem die zwei Kategorien respektive Elterneinträge \PValue{greekletters} sowie \PValue{romanletters} definiert und sämtliche Formelzeichen einem der beiden als Untereintrag zugeordnet werden. % \begin{Hint*} \providecommand*\greeklettersname{Greek letters} \providecommand*\romanlettersname{Roman letters} \newglossaryentry{greekletters}{% type=symbols,% name={\greeklettersname},% description={\nopostdesc},% sort={a}% } \newglossaryentry{romanletters}{% type=symbols,% name={\romanlettersname},% description={\nopostdesc},% sort={b}% } \end{Hint*} % Die Bezeichnungen der beiden Kategorien könnten auch als Parameter von \Macro*{newglossaryentry} mit \PValue{name=\PName{Bezeichung}} direkt eingetragen werden. Um bei der Definition jedoch eine gewisse Flexibilität zu gewährleisten, wird dies über die zwei Befehle \Macro*{greeklettersname} sowie \Macro*{romanlettersname} realisiert. Diese werden mit \KOMAScript-Mitteln als sprachabhängige Bezeichner definiert. % \begin{Hint*} \providecaptionname{% american,australian,british,canadian,english,newzealand% }{\greeklettersname}{Greek letters} \providecaptionname{% german,ngerman,austrian,naustrian,swissgerman,nswissgerman% }{\greeklettersname}{Griechische Symbole} \providecaptionname{% american,australian,british,canadian,english,newzealand% }{\romanlettersname}{Roman letters} \providecaptionname{% german,ngerman,austrian,naustrian,swissgerman,nswissgerman% }{\romanlettersname}{Lateinische Symbole} \end{Hint*} % Für die Ausgabe wird der Glossarstil \PValue{symbsplitlongtabu} in ähnlicher Manier wie die Stile zuvor definiert. Dieser wird darauf ausgelegt, dass alle aufzulistenden Formelzeichen als Untereintrag von einem der beiden zuvor erstellten Elterneinträge angegeben werden. Allerdings ist bei diesem Stil aufgrund der Verwendung von \Environment{longtabu}(\Package{tabu}) etwas Aufwand zu betreiben, um die gewünschte Ausgabe zu erhalten. Das grundlegende Problem ist das Setzen von Überschriften und dem folgenden Tabellenkopf innerhalb der Tabelle. Die Erläuterung des Quelltextauszugs erfolgt nach dessen Ausgabe. % \CodeHook{\let\newglossarystyle\renewglossarystyle} \begin{Hint*} \newglossarystyle{symbsplitlongtabu}{% \newcommand*\symbollevel{-1}% \renewenvironment{theglossary}{% \begin{longtabu}[l]{ccX<{\strut}l}% 'spread 0pt' defekt in v2.9 }{% \end{longtabu}% }% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glsgroupskip}{}% \newcommand*\symbolhead{% \toprule \bfseries Symbol & \bfseries Einheit & \bfseries Bezeichnung & \bfseries Seite(n) \tabularnewline\midrule }% \renewcommand*{\glossaryheader}{% \endfirsthead% \symbolhead\endhead% \bottomrule\endfoot% \gdef\symbollevel{-1}% }% \renewcommand*{\glossentry}[2]{% \ifglshaschildren{##1}{% \ifnum\symbollevel>0\relax% \tabularnewline\bottomrule\tabularnewline[\smallskipamount]% \fi \gdef\symbollevel{0}% \tabularnewline[% \arraystretch\dimexpr-\ht\strutbox-\dp\strutbox\relax% ]% \multicolumn{4}{@{}l@{}}{\minisec{\glsentryname{##1}}}% }{% \GlossariesWarning{% There are no childrens for entry ##1.\MessageBreak Nothing will be printed. Maybe you should\MessageBreak specify ##1 as a child entry. }% }% }% \renewcommand*{\subglossentry}[3]{% \ifnum\symbollevel=0\relax% \tabularnewline[\medskipamount]\symbolhead% \else% \tabularnewline \fi% \gdef\symbollevel{##1}% \glsentryitem{##2}% Entry number if required \glstarget{##2}{\glossentrysymbol{##2}} & \glsentryuseri{##2} & \glossentryname{##2} & ##3% }% } \end{Hint*} % Der neu definierte Befehl \Macro*{symbollevel} wird benötigt, um bei der Ausgabe zu überprüfen, um es sich beim zuletzt gesetzten Eintrag um einen Elterneintrag (\Macro*{glossentry}) oder Untereintrag (\Macro*{subglossentry}) gehandelt hat. Im Makro \Macro*{symbolhead} wird die Definition für den zu setzenden Tabellenkopf gespeichert. Der Inhalt von \Macro*{glossaryheader} wird direkt zu Beginn der Umgebung \Environment{theglossary}(\Package{glossaries}) ausgeführt. Dieser wird so umdefiniert, dass die Tabelle keinen Kopf vor der ersten Überschrift erhält, jedoch nach einem Seitenumbruch sehr wohl der Tabellenkopf gesetzt wird. Abgeschlossen wird die Tabelle mit einer Fußlinie. Danach erfolgt die Formatierung der Einträge. Der Befehl \Macro*{glossentry} setzt \enquote{\greeklettersname} und \enquote{\romanlettersname} sowie gegebenenfalls weitere Elterneinträge als Überschriften. Bevor dies passieren kann wird eine vorher begonnene Tabelle mit einer Fußlinie beendet. Um die Überschrift innerhalb von \Environment{longtabu}(\Package{tabu}) linksbündig zu setzen, wird mit \Macro*{multicolumn} gearbeitet. Dieser Befehl muss in der ersten Zelle zwingend als aller erstes genutzt werden. Um dies sicherzustellen, wird zuvor eine neue Tabellenspalte eingefügt. Damit jedoch kein zusätzlicher Leerraum entsteht, wird diese über das optionale Argument nach oben verschoben. Die Einträge für Formelzeichen selber erfolgen mit \Macro*{subglossentry}. Im Gegensatz zum vorher beschriebenen Stil \PValue{symblongtabu} wird zusätzlich der notwendige Tabellenkopf nach der Überschrift gesetzt, falls es sich um den \emph{ersten} Untereintrags handelt. Jetzt könnte man den Glossarstil \PValue{symbsplitlongtabu} bereits verwenden und jedem Formelzeichen bei der Definition mit \begin{quoting}[leftmargin=\parindent] \Macro{newformulasymbol}[% \POParameter{parent={greekletters/romanletters}}% \PParameter{\dots}\PParameter{\dots}\PParameter{\dots}\PParameter{\dots}% ]|?|% \end{quoting} eine der beiden Elterneinträge zuweisen. Für wenige Formelzeichen mag dies ausreichen. Komfortabler wäre es natürlich, wenn die Zuweisung zu einer der beiden Kategorien automatisch erfolgen würde. Ein Ansatz für dieses Unterfangen wird folgend vorgestellt. \Attention{% Es kann nicht garantiert werden, dass dieser Ansatz in jedem Fall und für sämtliche Anwendungsszenarien funktioniert. Tatsächlich ist die Idee auf eine \hrfn{http://latex.wcms-file3.tu-dresden.de/phpBB3/viewtopic.php?f=11&t=427}{% Frage aus dem \Forum*% } heraus entstanden. Für auftretende Probleme bei der Verwendung ist dort der beste Anlaufpunkt. } Die Grundidee ist, das zu definierende Formelzeichen mit einer Liste der Makros für griechische Buchstaben abzugleichen und so zu entscheiden, in welche der beiden Kategorien das Symbol einzuordnen ist. Hierfür werden nachfolgend eine Liste \Macro*{greeksymbollist} aller griechischen Buchstaben sowie der Befehl \Macro*{ifisgreeksymbol}[\Parameter{Symbol}\Parameter{Dann}\Parameter{Sonst}] zur Fallunterscheidung definiert. Problematisch bei der Umsetzung ist, dass ein als Argument übergebenes Formelzeichen auch mit diakritischen Zeichen und Indizes verwendet werden kann~-- beispielsweise $\dot{\varphi}_{\mathrm{max}}$ (% \Macro*{dot}[\PParameter{\Macro*{varphi}}]\PValue{\textunderscore}% \PParameter{\Macro*{mathrm}[\PParameter{max}]}% ). Deshalb werden bei der Ausführung von \Macro*{ifisgreeksymbol} temporär alle diakritische Zeichen sowie \Macro*{boldsymbol} für den Mathematikmodus \enquote{unschädlich} gemacht und das Argument \Parameter{Symbol} expandiert. Anschließend werden alle Anteile für Hoch- sowie Tiefstellung abgeschnitten und das Resultat mit der Liste \Macro*{greeksymbollist} abgeglichen. % \CodeHook{\let\newcommand\renewcommand} \begin{Hint*} \makeatletter \newcommand*\greeksymbollist{} \def\@tempa#1{\ifdefvoid{#1}{}{\listadd\greeksymbollist{#1}}} \forcsvlist{\@tempa}{% \alpha,\beta,\varbeta,\gamma,\delta,\epsilon,\varepsilon,\zeta,% \eta,\theta,\vartheta,\iota,\kappa,\varkappa,\lambda,\mu,\nu,% \xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\varsigma,\tau,% \upsilon,\phi,\varphi,\chi,\psi,\omega,% \Alpha,\Beta,\Gamma,\Delta,\Epsilon,\Zeta,\Eta,\Theta,\Iota,% \Kappa,\Lambda,\Mu,\Nu,\Xi,\Omicron,\Pi,\Rho,\Sigma,\Tau,\Upsilon,% \Phi,\Chi,\Psi,\Omega% } \newcommand*\ifisgreeksymbol[1]{% \begingroup% \def\@tempa##1{\let##1\@firstofone}% \forcsvlist{\@tempa}{% \acute,\bar,\breve,\check,\dot,\ddot,\dddot,\ddddot,% \hat,\widehat,\grave,\tilde,\widetilde,\vec,% \Acute,\Bar,\Breve,\Check,\Dot,\Ddot,\Hat,\Grave,\Tilde,\Vec% }% \def\boldsymbol{}% \protected@edef\@tempa{#1}% \def\@tempb##1_##2\relax{\def\@tempa{##1}}% \expandafter\@tempb\@tempa_\relax\relax% \def\@tempb##1^##2\relax{\def\@tempa{##1}}% \expandafter\@tempb\@tempa^\relax\relax% \expandafter\ifinlist\expandafter{\@tempa}{\greeksymbollist}{% \aftergroup\@firstoftwo% }{% \aftergroup\@secondoftwo% }% \endgroup% } \makeatother \end{Hint*} % Mit \Macro*{ifisgreeksymbol} kann jetzt auf die Art des Symbols getestet. Dies wird innerhalb von \Macro{newformulasymbol}|?| genutzt, um den passenden Elterneintrag auszuwählen. Über das optionale Argument kann jederzeit mit \POParameter{parent={greekletters/romanletters}} der automatische ermittelte Elterneintrag überschrieben werden. % \begin{Hint} \newcommand*\symbollettergroup{} \newcommand*{\newformulasymbol}[5][]{% \ifisgreeksymbol{#4}{% \renewcommand*{\symbollettergroup}{greekletters}% }{% \renewcommand*{\symbollettergroup}{romanletters}% }% \newglossaryentry{#2}{% type=symbols,% name={#3},% description={\nopostdesc},% symbol={\ensuremath{#4}},% user1={\ensuremath{\mathrm{#5}}},% sort={#2},% parent={\symbollettergroup},% #1% }% } \end{Hint} \subsection{Literaturverzeichnis} \label{sec:biblatex}% % Für das Erstellen eines Literaturverzeichnisses wurde in der Vergangenheit fast ausschließlich \hologo{BibTeX} verwendet. Leider wird auch heute immer noch darauf verwiesen, obwohl es seit einigen Jahren das Paket \Package{biblatex} gibt, welches insbesondere für neue Dokumente 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. Zitierstil und Backend zur Sortierung lassen sich durch das optionale Argument beim Laden des Paketes festlegen. Damit die Zitierstile das optimale Ergebnis erzielen wird das 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}(\Package{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 standardmäßig 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}(\Package{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} % Folgend wird eine Literaturdatenbank mit drei Einträge 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örigen Werte eingetragen werden. Die verwendbaren Eintragstypen sowie die für den jeweiligen Typ obligatorischen und optionalen 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}, 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: % \begin{Preamble} \addbibresource{\jobname-temp.bib} \end{Preamble} % Im einfachsten Fall werden die gewünschten Einträge der Literaturdatenbank im Dokument mit \Macro{cite}[\Parameter{macro}](\Package{biblatex}) referenziert, von \Package{biblatex} werden zusätzliche Möglichkeiten angeboten. % \begin{refsection}[\jobname-temp.bib] \begin{Trunk+} \section{Referenzen und das Literaturverzeichnis} Das Literaturverzeichnis wird 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}(\Package{biblatex}) 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 \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}](\Package{koma-script}) 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}(\Package{koma-script}) innerhalb von \Macro{setpartpreamble}(\Package{koma-script}) beziehungsweise \Macro{setchapterpreamble}(\Package{koma-script}) verwendet werden. Genaueres hierzu und zu den weiteren Möglichkeiten, die Gestalt eines Zitats zu beeinflussen, ist in der \scrguide[Anleitung von \KOMAScript] 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 Geschriebenen 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}(\Package{hyperref}) aus dem Paket \Package{hyperref}~-- Bezug genommen und gegebenenfalls eine kurze Erläuterung gegeben werden. Zusätzliche Erläuterungen zum Thema \emph{Querverweise} sind unter \autoref{sec:references} zu finden. 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. Bei Gleitobjekten sollte in jedem Fall darauf geachtet werden, dass der Befehl \Macro{label} immer erst \emph{nach} \Macro{caption}(\Package{koma-script},\Package{caption}) verwendet wird, 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 geeigneten 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{