Forschung - Meine Publikationen seit 2005
Zurück zur Homepage
Forschung

LaTeX - Tipps zur Dissertation

Layout und mehr

Während der Arbeit an meiner Dissertation musste ich mich viel mit LaTeX und seinen Eigenheiten auseinandersetzen. Dabei stieß ich oft an die Grenzen des Möglichen - des zeitlich Möglichen, den theoretisch lässt sich fast alles mit LaTeX machen.
Ich stelle daher hier für nachfolgende LaTeX-Jünger-Generationen ein paar meiner Lösungen als Anregung und Inspiration zur Verfügung :-)

Hinweis 1:
Kommentare zu dieser Seite und ihren Inhalten kann man beim entsprechenden Posting in meinem Blog hinterlassen und nachlesen.

Hinweis 2:
Ich bin dankbar für jeden Hinweis zu Fehlern oder Verbesserungen im Code ... schreibt mit einfach eine Mail: konrad@my-rho.de

Inhaltsüberisicht

1. Grundlegendes

1.1 Überholte Packages

Ob man wirklich auf den neuesten LaTeX-Packages arbeitet, kann man hier nachschauen:
http://projekte.dante.de/DanteFAQ/Verschiedenes#86

1.2 Werte von Variablen ausgeben

Möchte man Werte von Variablen ausgeben (bspw. um Dinge zu Testen, Debuggen oder zu Überprüfen), so kann man dies mit Hilfe von:

Variablenwerte ausgeben
\message{************************************ \the\VARIABLENNAME}

Die **** dienen allein der einfachereren Erkennung der eigenen Ausgaben in einer großen, vollen Logdatei. Da kann man auch andere Strings nehmen, die eindeutig sind und nach denen sich später einfach suchen lässt.

1.3 Verwaltung großer Dokumente

Schreibt man an großen Dokumenten wie einer Dissertation kann ein wenig Sturktur nicht schaden. Sie ist oft sogar überlebenswichtig. Es empfiehlt sich zum Beispiel, jedes Kapitel in eine eigene .tex-Datei auszulagern. Vielleicht sogar in ein eigenes Verzeichnis zusammen mit den verwendeten Grafiken und Notizen.

Man hat nun zwei Möglichkeiten, eine .tex-Datei einzubinden:

  1. Über \input mit \input{Kapitel1\Kapitel1.tex}
  2. Über \include mit \include{Kapitel1/Kapitel1} (ohne Endung!)

Bei der \input-Anweisung wird der in der Datei enthaltene Text quasi an der Stelle der Anweisung eingefügt und dann alles kompiliert. Kommentiert man so eine \input-Anweisung aus, so ist es, als ob man den gesamten Text der eingebundenen Datei auskommentieren würde. Beim \include-Befehl wird die Datei separat kompiliert, was sich in eigenen temporären Dateien mit den Informationen der Label und Quellen niederschlägt. Dies hat den Vorteil, dass, möchte man nicht immer alle Kapitel eines Dokumentes kompilieren (weil es einfach sehr lange dauert) kann man mit Hilfe von \includeonly{} einzelne Dateien/Kapitel einbinden, ohne dass Verweise und Referenzen auf anderen Kapitel verloren gehen. Auch stimmen Seitenzahlen und Quellen, ohne dass man jedesmal das Literaturzeichnis mit kompilieren müsste.

1.4 Trennung von Wörtern

Möchte man die Trennung von Wörtern verhindern, so kann man eine \mbox{…} um das Wort machen. Möchte man für einzelne Wörter eine Trennungsregel festlegen, so macht man dies mittels \hyphenation{}:

Trennungsvorgabe für gesamtes Dokument
\hyphenation{bei-spiels-wei-se}

Ich habe aufgrund von ca. 80 selbst vorgegebenen Trennungen diese aus Gründen der Übersicht alle in eine extra Datei ausgelagert. Weitere nützliche Hinweise zur Trennung und zum Einsatz von verschiedenen Arten Bindestrichen sind:

-
Bindestrich, der andere Trennungen unterdrückt: Leuthheuse-Schnarrenberger
"=
Bindestrich, der andere Trennungen erlaubt: 3D"=Visualisierung
"~
Bindestrich, an dem nicht getrennt werden darf: bergauf und "~ab
\-
Trennmöglichkeit, die andere Trennungen ausschließt: Ur\-instinkt
"-
Trennmöglichkeit, die andere Trennungen nicht ausschließt
""
Trennmöglichkeit, bei der kein Trennstrich benötigt wird: (Ein"~)""Gänge
"|
Auflösen einer Ligatur und Schaffung einer Trennmöglichkeit: Auf"|forderung

2. Seitenlayout

2.1 Seitenränder

Zum Seitenlayout lässt sich viel sagen. Man kann, wenn man die KOMA-Klassen nutzt, es direkt über diese machen. Da gibt es viele Dokus zu. Die KOMA-Klassen haben aber für meinen Geschmack die Randaufteilung immer zu großzügig gewählt. Daher wollte ich meine Ränder selbst einstellen. Dazu habe ich das geometry-Package genutzt:

Seitenränder einstellen
\usepackage[  
    vmarginratio=1:2, %Verhältnis der oben/unten Seitenränder zur automatischen Berechnung
    paper=a4paper,
    lmargin=4cm, % mittlerer Rand
    rmargin=2cm, % äußerer Rand
    marginparwidth=2.3cm, % Breite des Marginpars
    includehead, % Kopfzeile in Berechnung einbeziehen
    includemp % Marginpar in die Berechnung mit einbeziehen
]{geometry}
\setlength\marginparwidth{2.3cm} %Die wird später zum Rechnen gebraucht, wird aber durch die Angabe im geometry package nicht automatisch richtig gesetzt.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Alles nachträglich selbst einstellen
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\setlength\oddsidemargin{3cm-1in}
%\setlength\marginparwidth{2cm}
%\setlength\evensidemargin{2,6cm-1in + \marginparwidth + \marginparsep}
%\setlength\textwidth{\paperwidth - \evensidemargin - 2in }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Dort kann man die Werte, die man nutzen möchte, selbst angeben. Alles andere wird automatisch berechnet. Durch die Angabe eines Seitenverhältnisses von linken zu rechtem Rand (hmarginratio) bzw. oberem zu unterem Rand (vmarginratio) kann man sich auch die Angabe bestimmter Werte sparen. Die werden dann jeweils aus dem Pendant berechnet. Zusätzlich kann man aber auch nach der Einbindung des Packages die Werte für Textbreite und Ränder selbst setzen. Ich hab das hier als Kommentar im Code mal als Möglichkeit mit hingeschrieben.

2.2 Parameter des Seitenlayouts visualisieren

Die Einteilung der Ränder von geraden und ungeraden Seiten kann man mit diesem Code als Grafiken ausgeben lassen:

Parameter eines Seitenlayout visuell darstellen
\usepackage{layouts}
\setlayoutscale{0.33}
\setparametertextfont{\scriptsize}
\currentpage

...


\pagedesign
\oddpagelayoutfalse
\pagedesign

2.3 Schnelle Darstellung

Die Kompilierung eines Dokumentes in LaTeX kann mitunter sehr lange dauern. Wenn man es nur als DVI erzeugt, so wird das Betrachten zur Qual, wenn erst dann Seite für Seite die Grafiken geladen werden. Andererseits dauert das Kompilieren eines PDF (über PS) mit zunehmender Zahl an Grafiken auch länger. Oft kennt man die Bilder aber und möchte nur schnell sehen, wie der Satzspiegel aussieht, wie sich ein Befehl auswirkt oder wie etwas am Text aussieht. Daher gibt es eine paar Möglichkeiten die Kompilierung und Darstellung zu beschleunigen:

  • Mit der demo-Option bei der Einbindung des graphicx-Packages werden anstelle der Grafiken nur Boxen angezeigt \usepackage[demo]{graphicx}. Das insofern hilfreich, da man zum Experimentieren mit verschiedenen Minimalbeispielen keine echten Grafiken braucht. Die Angaben in \includesgraphics werden einfach ignoriert.
  • Mit der draft-Option schon bei der Angabe der \documentclass: \documentclass[a4paper,twoside,11pt,draft]{book} kann man die Ausgabe ins DVI beschleunigen. Die Grafiken werden auch hier nur als Boxen gerendert, behalten aber ihre korrekten Abmaße. Weiterhin werden alles zuvollen Boxen mit einem schwarzen Rand angezeigt. Man sieht sofort auf einen Blick, wo Text über den Rand ragt, weil nicht getrennt wurde oder anderweitig der Text nicht umgebrochen werden konnte.
    Ein Hinweis, wenn man Listings nutzt: Bei Nutzung der draft-Option werden Listing über das lstlisting-Package nicht gerendert!

2.4 Seitenzahlen

Bei vielen Büchern bekommen die Vorworte und Inhaltverzeichnisse andere Seitenzahlen als das übrige Dokument. Meist sind sie römisch, während der restliche Text arabische Zahlen als Seitenzahlen bekommt.
Das erreicht man sehr einfach per:

Arabische Seitenzahlen
\pagenumbering{roman}
\include{Titel}
\pagenumbering{arabic}
\include{Kapitel1}

2.5 Kopf- und Fußzeilen

Kopf- und Fußzeilen sind ein Thema, dass Bücher füllen könnte, so viele Varianten und Möglichkeiten gibt es hier. Ich stelle daher hier nur mein Design vor und wie ich es umgesetzt habe.

Zunächst ein paar Bilder, damit man erkennt, wie es am Ende aussehen soll:


Beispiel einer normalen Kopfzeile auf ungeraden Seiten - Auf der rechten Seite wird die aktuelle subsection angezeigt.


Beispiel einer normalen Kopfzeile auf geraden Seiten - Auf der linken Seite wird das aktuelle Kapitel angezeigt.


Kopfzeile im Anhang - Anstelle von 'Kapitel' erscheint 'Anhang'


Kopfzeile im Inhaltsverzeichnis - Die nicht existente Kapitelnummer wird nicht angezeigt. Es gibt keine subsections, die auf der jeweils rechten Seiten angezeigt werden.


Fußzeile mit der Seitenzahl. Auf der rechten Seite werden ein Linie und dann die Seitenzahl angezeigt.


Fußzeile mit der Seitenzahl. Auf der linken Seite werden zuerst die Seitenzahl und dann eine Linie angezeigt.


Seitenzahl im Inhaltsverzeichnis. Es werden römische Zahlen verwendet.

Code für Kopf- und Fußzeilen auf den verschiedenen Seitenarten (ungerade, gerade, Inhaltsverzeichnis, Anhang, leere Seiten, ...)
\newlength{\marginWidth}
\setlength\marginWidth{\marginparwidth+\marginparsep}
\newlength{\fulllinewidth}
\setlength\fulllinewidth{\textwidth+\marginWidth}

\usepackage{truncate} %Um zu lange Kapiteltitel abzuschneiden

\footskip=1.6cm
\makeatletter % = mache @ letter

%Vordefinition mehrfachverwendeter Teile
\def\oddfootSTANDARD{
   \renewcommand{\@oddfoot
}{
       \hbox to\textwidth{\vbox{\hbox to\textwidth{
          \hfill
          \strut
          \hspace{1pt
}
       }}}
       \hbox to\marginWidth{\vbox{\hbox to\marginWidth{
          \strut %unsichtbares Zeichen
               \large
               \hspace{5pt}              
               \vrule width 1pt height 1cm
            \hspace{8pt}            
            \textsf{\thepage}
            \hfill
       }}}\hss  
   }
}

\def\evenfootSTANDARD{
   \renewcommand{\@evenfoot
}{
      \hspace{-\marginWidth
}  
         \hbox to\marginWidth{\vbox{\hbox to\marginWidth{
         \large
         \strut %unsichtbares Zeichen
         \hfill
         \textsf{\thepage}
         \hspace{5pt}
         \vrule width 1pt height 1cm
         \hspace{7pt}
      }}}\hss
   }  
}


%Standardstil für die gesamte Dissertation
\newcommand{\ps@thesis}{
   \renewcommand{\@oddhead
}{
         \hbox to\textwidth{\vbox{\hbox to\textwidth{
            \textsf
            \hfill
            \rightmark
            \strut
            \hspace{1pt
}
      }}}
         \hbox to\marginWidth{\vbox{\hbox to\marginWidth{
            \strut %unsichtbares Zeichen
            \hspace{5pt}
            \vrule width 1pt
            \hspace{5pt}
            \textsf
            \thesection
            \hfill
         }}}\hss
   }  
   
   \renewcommand{\@evenhead}{
      \hspace{-\marginWidth
}  
         \hbox to\marginWidth{\vbox{\hbox to\marginWidth{
            \hfill
            \strut %unsichtbares Zeichen
            \textbf{\textsf{Kapitel~\thechapter}}
            \hspace{5pt}
            \vrule width 1pt
            \hspace{7pt}
            \strut
         }}}\hss
         
         \hbox to\textwidth{\vbox{\hbox to\textwidth{
            \strut %unsichtbares Zeichen
         \truncate{.9\textwidth}{\leftmark}
         \hfill
      }}}\hss
   }
   
   \oddfootSTANDARD  
   \evenfootSTANDARD  
}


%Der PLAIN-Style der Chapter- und Sonderseiten muss redefiniert werden.
\renewcommand{\ps@plain}{
   \let\@oddhead\@empty
   \let\@evenhead\@empty
   \let\@evenfoot\@empty  
   \oddfootSTANDARD
}

%Spezieller Stil für Inhaltsverzeichnis und Literaturverzeichnis (ohne Nummern wie 0.0 oder B.0)
\newcommand{\ps@thesisINTRO}{
   \renewcommand{\@oddhead
}{
         \hbox to\textwidth{\vbox{\hbox to\textwidth{
            \textsf
            \hfill
            \sffamily\rightmark
            \strut
            \hspace{1pt
}
         }}}\hss
   }
   
   \renewcommand{\@evenhead}{
         \hbox to\textwidth{\vbox{\hbox to\textwidth{
            \strut %unsichtbares Zeichen
            \truncate{.9\textwidth}{\sffamily\leftmark}
            \hfill
         }}}\hss  
   }
   
   \oddfootSTANDARD  
   \evenfootSTANDARD  
}

%Spezieller Stil für Anhänge
\newcommand{\ps@thesisANHANG}{
   \renewcommand{\@oddhead
}{
         \hbox to\textwidth{\vbox{\hbox to\textwidth{
            \textsf
            \hfill
            \rightmark
            \strut
            \hspace{1pt
}
         }}}
         \hbox to\marginWidth{\vbox{\hbox to\marginWidth{%
            \strut %unsichtbares Zeichen
            \hspace{5pt}
            \vrule width 1pt
            \hspace{5pt}
            \textsf
            \thechapter
            \hfill
         }}}\hss
   }
   
   \renewcommand{\@evenhead}{
      \hspace{-\marginWidth
}  
         \hbox to\marginWidth{\vbox{\hbox to\marginWidth{
            \hfill
            \strut %unsichtbares Zeichen
            \textbf{\textsf{Anhang~\thechapter}}
            \hspace{5pt}
            \vrule width 1pt
            \hspace{7pt}
            \strut
         }}}\hss
         
         \hbox to\textwidth{\vbox{\hbox to\textwidth{
            \strut %unsichtbares Zeichen
            \truncate{.9\textwidth}{\leftmark}
            \hfill
         }}}\hss  
   }
   
   \oddfootSTANDARD
   \evenfootSTANDARD
}


\newcommand{\ps@reallyempty}{
   \let\@oddhead\@empty
   \let\@evenhead\@empty
   \let\@oddfoot\@empty
   \let\@evenfoot\@empty
}

\renewcommand{\chaptermark}[1]{\markboth{\uppercase{\textsf{#1}}}{}}%markboth hat zwei argumente für die linke und rechte seite
\renewcommand{\sectionmark}[1]{\markright{\textsf{#1}}}

\makeatother % = mache @ wieder zu nicht-Buchstaben
\pagestyle{thesis}


%Problem mit den Seitenzahlen und Headern auf leeren Seiten nach Kapiteln:
\let\origdoublepage\cleardoublepage
\newcommand{\clearemptydoublepage}{%
  \clearpage
  {\pagestyle{empty}\origdoublepage}%
}
\let\cleardoublepage\clearemptydoublepage

2.6 Fußnoten

Per Default beginnt die Nummerierung der Fußnoten bei jedem Kapitel neu. Um dies zu verhindern, sollte man diesen Code verwenden:

Fußnotennummerierung über gesamten Dokument durchzählen
\makeatletter
\@removefromreset{footnote}{chapter}
\makeatother

3 Abbildungen und ihre Beschriftungen

3.1 Captions von Subfigures rechts oder links neben das Bild

Wer die Beschriftung von Sugbigures wie (a), (b) etc. lieber recht oder links neben das Sub-Bild packen möchte wie hier:


(a), (b) ... neben die Bilder packen

... der kann diesen Code nutzen:

Captions von Subfigures rechts oder links neben das Bild
\setlength{\pictureheight}{3.45cm}%
\begin{figure}[htbp]
\center
        \includegraphics[height=\pictureheight]{img1}
        \hfill
        \noindent\parbox[b][\pictureheight][c]{1cm}{
                \subfloat[]{\label{img:vp:goodbad-occlusion}}
        }      
        \includegraphics[height=\pictureheight
]{img2}
        \hfill
        \noindent\parbox[b][\pictureheight][c]{1cm}{
                \subfloat[]{\label{img:vp:goodbad-importance}}
        }
        \includegraphics[height=\pictureheight
]{img3}
        \hfill
...
        \caption[]{\subref{img:vp:goodbad-occlusion} Verdeckung;
\subref{img:vp:goodbad-importance} Wichtigkeit; ...}
\label{img:vp:goodbad}
\end{figure}

3.2 Grafiken mit captions links oder rechts

Möchte man die Beschriftung (Caption) für eine Grafik links oder rechts daneben setzen, so kann man diesen Code hier nutzen:

Grafiken mit captions links oder rechts
\usepackage{floatrow}
...
\thisfloatsetup{capposition=beside,capbesideposition={top,outside},facing=yes,floatwidth=.6\linewidth}
\begin{figure}[htbp]
  \includegraphics[width=\textwidth]{ img/myImage}
  \caption{Plain figure Plain figure Plain figure Plain figure Plain figure}
\end{figure}


Grafiken mit captions links oder rechts

Durch die Nutzung von \thisfloatsetup kann man genau die figure-Umgebung anpassen, die dem Befehl folgt. Alle anderen Abbildungen die früher oder später kommen, bleiben von \thisfloatsetup unberührt. Wie halt der Name sagt. Über floatwidth setzt man die Breite der Abbildung. Die Abbildung selbst wir dann auch voll \textwidth gesetzt.

3.3 Bilder über den Rand gehen lassen

Es soll ja vorkommen, dass man in manchen Stilen die Abbildungen über den Rand ragen lassen möchte – in den Bereich des marginpar. Auch wenn ich es am Ende nicht in meiner Dissertation verwendet habe, hilft der Code vielleicht dem ein oder anderen:

Bilder über den Rand gehen lassen
\usepackage[demo]{graphicx}
%das facing ist wichtig für doppelseitige Dokumente
\usepackage[facing=yes]{floatrow}
\floatsetup[figure]{margins=hangoutside}

\begin{document}

...

\noindent\hrulefill~Das zeigt die Satzspiegelbreite \hrulefill

\begin{figure}
\includegraphics[width=\linewidth]{Test}
    \caption{Testabbildung Testabbildung Testabbildung TestabbildungTestabbildung Testabbildung Testabbildung TestabbildungTestabbildung Testabbildung Testabbildung TestabbildungTestabbildung Testabbildung Testabbildung TestabbildungTestabbildung Testabbildung Testabbildung TestabbildungTestabbildung Testabbildung Testabbildung TestabbildungTestabbildung Testabbildung Testabbildung TestabbildungTestabbildung Testabbildung Testabbildung Testabbildung      Testabbildung Testabbildung Testabbildung Testabbildung Testabbildung}\label{fig:test}
\end{figure}

...

\end{document}

3.4 Vorläufige Bilder mit DRAFT markieren

Oft hat man Abbildungen im Dokument, die nur vorläufig sind und die daher auch als solche markiert werden sollen. Dies kann man mithilfe des overpic-Packages erreichen und sich eine eigene Umgebung draftImage definieren. Anstelle von "Draft" kann man natürlich auch beliebig anderen Text drüber legen.

Vorläufige Bilder mit DRAFT markieren (Definition der Umgebung)
\usepackage{overpic} %for draft text overlays
\usepackage{rotating}
\newcommand{\draftImage}[2]{
\begin{overpic
}[#1]{#2}
  \put(0,0){\includegraphics[#1]{#2}}
  \put(40,5){\fontsize{50}{55}\lightgray{\textbf{\begin{rotate}{45}Draft\end{rotate}}}}
\end{overpic}
}

Im Dokument verwendet man dann anstelle von \includegraphics einfach \draftImage:

Vorläufige Bilder mit DRAFT markieren (Nutzung im Text)
\begin{figure}[tbp]
   \center
   \draftImage{width=\textwidth}{Annotation/img/20080602-2dlabeling-filter}
   \caption[]{...}\label{labelX}
\end{figure}

4 Tabellen

4.1 Tabellen mit vertikal und horizontal zentrierten Inhalten sowie Zellen über mehrere Zeilen

Wer eine Tabelle möchte, in der die Inhalte einer Zelle sowohl horizontal (ist einfach) als auch vertikal (wird komplizert) zentriert sind und dann auch noch Zellen hat, die sich über mehrere Zeilen erstrecken, der hat eigentlich ein Problem. Dieser Code kann da weiterhelfen:

Tabelle mit vertikal und horizontal zentrierten Inhalten sowie Zellen über mehrere Zeilen
\begin{table}[htb]
\begin{center}
% arraystrech sorgt für Abstand in den Zellen indem es den Zeilenabstand hoch setzt
% auf jeden Fall danach wieder auf 1 setzen!
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{
|>{\Centering
}m{0.245\linewidth-2\tabcolsep}
|>{\Centering}m{0.2\linewidth-2\tabcolsep}
|>{\Centering}m{0.21\linewidth-2\tabcolsep}
|>{\Centering}m{0.165\linewidth-2\tabcolsep}
|>{\Centering}m{0.17\linewidth-2\tabcolsep}|
}
\hline
Bewertung der ...&Technik&Normalver-\newline teilung\newline (Shapiro-Wilk)&Signifikanz&Effektgröße\
\hline
\multirow{2}{\linewidth}{... Sichtbarkeit der Zielstruktur}&Neue Technik&p<0,0001&\multirow{2}{*}{p<0,0001}&\multirow{2}{*}{$\delta\dn{sichtb}$=0,67}\
\cline{2-3}
&VPE&p<0,0001&&\
\hline
\multirow{2}{\linewidth}{... Nützlichkeit des Blickwinkels}&Neue Technik&p<0,0001&\multirow{2}{*}{p<0,0001}&\multirow{2}{*}{$\delta\dn{blick}$=0,79}\
\cline{2-3}
&VPE&p<0,0001&&\
\hline
\end{tabular}
\renewcommand{\arraystretch}{1}
\end{center}
\caption []{...}
\label{tab:vp:eval}
\end{table}


Tabelle mit vertikal und horizontal zentrierten Inhalten sowie Zellen über mehrere Zeilen

4.2 Farbige Tabellenzellen

Als Freund eines ansprechenden Layouts kommt man an farbigen Tabellenzellen manchmal nicht vorbei. In Word&Co ein Kinderspiel, wird es in LaTeX wirklich zur Qual. \rowcolor kann da helfen:

Farbige Tabellenzellen
\usepackage[table]{xcolor} % Für farbige Tabellenzellen
\usepackage{colortbl} % Für farbige Tabellenzellen mit cellcolor

...

\definecolor{p-orangelight}{cmyk}{0,0.3,0.7,0}
\begin{table}[tbp]
\begin{center}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{
|>{\Centering
}m{0.25\linewidth-2\tabcolsep}
|>{\Centering}m{0.25\linewidth-2\tabcolsep}
|>{\Centering}m{0.25\linewidth-2\tabcolsep}
|>{\Centering}m{0.24\linewidth-2\tabcolsep}|
}
\rowcolor[gray]{.8}
\hline
\textbf{Anzahl der Strukturen}  & \textbf{Viewport"=Auflösung} & \textbf{Sichtpunkte} & \textbf{Benötigte Zeit}\
\hline
21& 300 $\times$ 300& 42& 45s\
\hline
21& 400 $\times$ 400& 162& 295s\
\hline
21& 300 $\times$ 300& 162& 171s\
\hline
\rowcolor{p-orangelight}
21& 200 $\times$ 200& 162& 84s\
\hline
\hline
\end{tabular}
\end{center}
\caption []{XXX}
\label{tab:xy:abc}
\end{table}


Farbige Tabellenzellen

Wie man auf dem Bild sieht: So richtig perfekt ist es nicht. Die Farbe übsermalt die Linien der Zellbegrenzungen. Vielleicht sollte man in solchen Fällen dann komplett auf Linien verzichten und stattdessen die weißen Zellen in einem leichten Grau kolorieren.

5 Schriftarten

5.1 Die Myriad und die Minion als eigene Schriften

Für einen alten Adobe-Freund wie mich war es eine Frage der Ehre meine vielgenutzten Lieblingsfonts aus diesem Hause auch in meiner Dissertation anzuwenden: Die Myriad als serifenlosen Font für Überschriften und Bildunterschriften, und die MinionPro als Serifenfont für den Fließtext.


Myriad und Minion als Schriften für Überschriften und Fließtext

Nun kann man zumindest beim weit verbreiteten MikTex nicht einfach einen Windows-TrueType Font für seine Dokumente installieren und nutzen. Ich musste wahre Handstände vollführen, die ich in Gänze auch nicht mehr ganz reproduzieren kann.

Zunächst muss man natürlich die TrueType Schriften haben bzw. kaufen. Zum Glück sind sie aber in den gängigen Adobe-Installationen enthalten. Diese Fonts müssen dann in Type1 Fonts umgewandelt werden und mit zusätzlichen passenden Metrik-Dateien, die man bei den unten genannten URLs findet, in verschiedene Verzeichnisse der MikTex-Installation kopiert werden. Abschließend müssen die neuen Fonts auch noch MikTex bekannt gemacht werden. Soweit die allgemeine Vorgehensweise.

Für die Myriad-Installation sei auf diese Dokumente und Anleitungen im Netz verwiesen:

Anleitung und Metriken zum Download:

LCDF Typetools zur Erstellung von Type1 Fonts:

Für die MinionPro-Installation sei auf diese Dokumente und Anleitungen im Netz verwiesen:

Der LaTeX-Code im Dokument ist im Gegensatz zu alledem richtig übersichtlich:

LaTeX-Code zum Einbinden der Myriad und Minion
%Adobe Myriad als serifenloser Font
\renewcommand{\sfdefault}{pmy}

%Adobe Minion als serifen Font
\usepackage{MinionPro}


%Der default Typewriter-Font (ttdefault) wird hier auf einen anderen Wert gesetzt, da er, wenn er über die MinionPro geladen wird, nur als Bitmap-Font (PK) dargestellt werden kann - was ihn nicht durchsuch- und kopierbar macht im PDF und auch in der stark gezoomten Darstellung verpixelt erscheinen lässt
\renewcommand{\ttdefault}{txtt}

5.2 Schriftart der Bildunterschriften

Bildunterschriften sollten nicht im Font des übrigen Textes gesetzt sein, sondern sich von diesem wohltuend abgrenzen. Ich nutzt oft eine serifenlose, leicht kleinere Schrift für die Bildunterschriften, wenn ich im Text eine Serifenschrift nutze:


Serifenlose Schrift für Bildunterschriften

Mit captionsetup kann man den Font genau festlegen:

Serifenlose Beschriftung von Bildern, Algorithmen und Co.
\usepackage[]{caption}
\captionsetup{labelfont=bf,font={sf,footnotesize},format=plain}

%Für algorithm2e Package die Caption setzen
\SetAlCapFnt{\sffamily\footnotesize}
\SetAlCapNameFnt{\sffamily\footnotesize}

Das caption-Paket berücksichtigt figures und tables, jedoch keine Algorithmen. Daher muss der Font für die Caption der Algorithmen extra gesetzt werden, damit alles einheitlich aussieht.

5.3 Aussehen von Überschriften

Wenn es um die typographische Gestaltung größerer Dokumente geht, ist man ganz schnell beim Aussehen der verschiedenen Überschriften. Welchen Font sollen sie haben, welche Abstände davor und dahinter und wie sieht ihr Einzug aus. All das kann man mit dem titlesec-Package lösen. Die Parameter von \titleformat auf dem titlesec-Package sind:

Parameter von \titleformat
\titleformat{hcommandi}[hshapei]{hformati}{hlabeli}{hsepi}{hbeforei}[hafteri]


Beispiel für eine Kapitelüberschrift

Hier nun der Code, wie er die verschiedenen Überschriftarten definiert und die etwas umfangreichere Kapitelüberschrift wie in der Abbildung. Hinzu kommt eine Beispieldefinition für Überschriften, die in den Rand ragen sollen. Die hatte ich letztendlich verworfen, aber einen Versuch wars wert.

Formatierung von Überschriften
%Überschriften serifenlos und über den Rand hängend
\usepackage[sf,sl,outermarks,noindentafter,nobottomtitles]{titlesec}

%könnte alles auch mit \bfseries versehen werden nach Geschmack

\titleformat{\section}[hang]{\Large\sffamily}{\thetitle}{8pt}{}
\titleformat{\subsection
}[hang]{\large\sffamily}{\thetitle}{8pt}{}
\titleformat{\subsubsection
}[hang]{\normalfont\sffamily}{\thetitle}{8pt}{}
\titleformat{\paragraph
}[hang]{\bfseries\sffamily}{\thetitle}{8pt}{}

%Wenn man die Überschriften in den Rand hängend haben möchte:
%\titlespacing{name=\section,page=even}{-\marginparwidth-\marginparsep}{12pt}{8pt}
%\titlespacing{name=\section,page=odd}{0cm}{12pt}{8pt}[-\marginparwidth-\marginparsep]
%\titlespacing{name=\subsection,page=even}{-\marginparwidth-\marginparsep}{12pt}{8pt}
%\titlespacing{name=\subsection,page=odd}{0cm}{12pt}{8pt}[-\marginparwidth-\marginparsep]
%%\titlespacing{name=\subsubsection,page=even}{-\marginparwidth}{12pt}{8pt}
%%\titlespacing{name=\subsubsection,page=odd}{0cm}{12pt}{8pt}[-\marginparwidth]

%Etwas aufwendiger für die Kapitelüberschriften:
\titleformat{\chapter}[display]
{\filleft\huge\sffamily} %Huge ist die Größe für Titeltext und Nummer
{\fontsize{100pt}{90pt}\selectfont\thechapter}
{-2ex} %is vertical space in [display] mode
%Platz vor dem ganzen Krempel
{\vspace{1ex}} %1ex ist die Höhe von x im aktuellen Font
%Platz danach
[\vspace{1ex}]

5.4 Schriftart und Aussehen des Inhaltsverzeichnisses

Durch die Nutzung des tocloft-Packages kann man die Schriftarten und Abstände in einem Inhaltsverzeichnis für jede Stufe der Hierarchie individuell setzen:

Formatierung des Inhaltsverzeichnisses
\usepackage[titles]{tocloft}

\setlength{\cftbeforechapskip}{2ex}
\setlength{\cftbeforesecskip}{0.8ex}
\setlength{\cftbeforesubsecskip}{0.8ex}

\renewcommand{\cftchapfont}{%
   \sffamily\bfseries
}
\renewcommand{\cftchappagefont}{\sffamily}
\renewcommand{\cftsecfont}{\sffamily}
\renewcommand{\cftsecpagefont}{\sffamily}
\renewcommand{\cftsubsecfont}{\sffamily}
\renewcommand{\cftsubsecpagefont}{\sffamily}


Beispiel für eine Inhaltsverzeichnis

5.5 Schriftart in Algorithmen

Möchte man Algorithmen nutzen, so bietet sich das algorithm2e-Package an. Hier kann man auch den Stil der keywords und des Algorithmus ganz allgemein individuell anpassen:

Formatierung von Algorithmen
\usepackage[german,algochapter]{algorithm2e}
%%algochapter: algorithms are numbered within chapter numbers.

\SetAlFnt{\sffamily\small} %setzt den Font für die Algorithmen

\newcommand{\myAlgoFont}[1]{\small\textbf{\sffamily{#1}}}
\SetKwSty{myAlgoFont}

%Für algorithm2e Package die Caption setzen
\SetAlCapFnt{\sffamily\footnotesize}
\SetAlCapNameFnt{\sffamily\footnotesize}


Beispiel für einen Algorithmus der mit dem obenstehenden Code formatiert wurde.

6 Verweise und Links

6.1 Einsatz von Links

Sehr praktisch zumindest für die digitale Version eines Dokumentes sind Links. So kann man Verweise auf Quellen und Abbildungen als Links ausweisen und somit den schnellen Sprung an entsprechende Stellen ermöglichen. Da es dazu eigentlich kaum weiterer Erklärung bedarf, hier nur die von mir genutzten Parameter für das hyperref-Package:

Einige Parameter des hyperref-Packages
\usepackage[pagebackref=true,dvips,pdfpagelabels]{hyperref}
\hypersetup{
        pdftitle={Dissertation Konrad Mühler
},    
        pdfauthor={Konrad Mühler},
        pdfcreator={LaTeX2e},
        pdfborder=0 0 0,
        breaklinks=true,
        bookmarksopen=true,
        bookmarksnumbered=true,
        linkcolor=blue,
        urlcolor=blue,
        citecolor=blue,
        colorlinks=true}

In gedruckten Fassungen machen sie die blauen Links aus meiner Sicht nicht gerade gut. Daher sollte man je nach Ausgabeart den Parameter colorlinks=false setzen.

6.2 Backlinks aus dem Literaturverzeichnis

Als ein nettes Angebot an den Leser langer und komplexer Arbeiten kann man die Möglichkeit sehen, für jede Quelle im Literaturverzeichnis die Seiten anzugeben, auf denen diese Quelle vorher zitiert wurde:


Backlinks aus dem Literaturverzeichnis

Dazu kann man –nach- der Einbindung des hyperref-Packages das backref-Package nutzen, sollte die entsprechenden Texte aber für die verwendete Dokumentensprache anpassen (hier deutsch):

Backlinks aus dem Literaturverzeichnis
%Backlinks vom LitVerz zu den Seiten
% #1: number of distinct back references
% #2: backref list with distinct entries
% #3: number of back references including duplicates
% #4: backref list including duplicates
\RequirePackage[hyperpageref]{backref}
\renewcommand{\backreflastsep}{ und~}
\renewcommand{\backreftwosep}{ und~}
\renewcommand{\backref}[1]{}% for backref < 1.33 necessary
\renewcommand{\backrefalt}[4]{
   \ifnum#1=0
      %No cited.        
   \else
      \ifnum#1=1
         \footnotesize (Zitiert auf Seite #2)
      \else
         \footnotesize (Zitiert auf den Seiten #2)
      \fi
   \fi
}

6.3 Korrektes Umbrechen von URLs

Korrektes Umbrechen von URLs
\usepackage{breakurl} % damit URLs korrekt umgebrochen werden

7 Nette Gimmicks

7.1 Farbige Boxen mit Seitenumbruch, Padding und definierter Breite

Möchte man einen Text mit einer farbigen Box hinterlegen, und ist dieser Text länger und bricht somit auf der Seite um, so wird es in LaTeX kompliziert. So richtig verwegen wird es, wenn man dann auch noch einen Innenabstand (padding) des Textes zum Rand definieren will und die Box generell eine feste, vorgegebene Breite haben soll.

Dafür kann man sich eine eigene Umgebung definieren, die das framed-Package nutzt.

Farbige Boxen mit Seitenumbruch, Padding und definierter Breite
\usepackage{framed}
\usepackage{xcolor}

\definecolor{MyBoxColor}{rgb}{0.9,0.9,0.9}
\newenvironment{shadedSmaller}{
  \def\FrameCommand{\fboxsep=\FrameSep \colorbox{MyBoxColor
}}
  \MakeFramed {\advance\hsize-2\width\FrameRestore}}
{\endMakeFramed}

\newenvironment{shadedSmallerPadding}{
  \def\FrameCommand{\fboxsep=1cm \colorbox{MyBoxColor
}}
  \MakeFramed {\advance\hsize-1.1\width\FrameRestore}}
{\endMakeFramed}

......
Anwendung:
\begin{shadedSmallerPadding}
Text ...
\end{shadedSmallerPadding}


Farbige Boxen mit Seitenumbruch, Padding und definierter Breite

7.2 Seitliche Notizen

Manchmal möchte man Notizen auf den Rand neben den Text schreiben. Die können sehr hilfreich für Kommentare sein oder als Hinweis, hier oder da später noch etwas zu überarbeiten.


Gelbe Notizen auf den Rand

Dann kann man sich in LaTeX eine eigene Umgebung dafür definieren:

Gelbe Notizen auf den Rand
% Umgebung für Anmerkungen im Text
% (für den spacing-Befehl wird das setspace-Paket benötigt)
\usepackage{setspace}
% gelbe Hintergrundfarbe für Marginalie
\definecolor{sidebox_bg}{rgb}{1,1,0.4}
\newcommand{\sidenoteSingle}[1]{
        \hspace{0pt
}%
        \marginpar{%
                \begin{spacing}{0.8}% Für geringeren Zeilenabstand
                        \fcolorbox{black}{sidebox_bg}{%
                                \parbox{\marginparwidth} {
                                        \raggedright\sffamily\footnotesize{#1
}%
                                }
                        }%
                \end{spacing}
        }
}

Die Farbe kann man über die Variable sidebox_bg festlegen. Die Fontgröße ist mit \footnotesize definert und der Zeilenabstand wurde mit der spacing-Umgebung verringert, damit die Notiz nicht zuviel Raum einnimmt.

Natürlich kann man anstelle einer kleinen gelben Box auch andere Inhalte auf den Rand packen. Zum Beispiel Verweise auf Videos der beiliegenden DVD:


Hinweis auf eine beiliegende DVD am Rand

Der Code für eine solche Umgebung sieht dann so aus:

Hinweis auf eine beiliegende DVD am Rand
\newenvironment{video}[1]%
    {\hspace{0pt}%    
     \marginpar{%
                %\vspace{1.8cm}
        \begin{spacing}{0.8}%
           %\fcolorbox{black}{sidebox_bg}{%
                \parbox{\marginparwidth}
                {
                        %\vspace{1.8cm}
                  \center
                        \includegraphics[width=.8\marginparwidth]{img/VideoIcon-#1}\
              \raggedright\sffamily
              \footnotesize{
                                                                \begin{center
}
                                                                        Video auf der DVD (Nr.~#1)\Infos Seite~\pageref{sec:video:#1}
                                                                        \vspace{2\baselineskip}
                                                                \end{center}                                   
                }%
                }          
        \end{spacing}
     }%
     }%
    {}%

...

%Anwendung im Text:
\video{13}

7.3 Farbige Formeln

Wer Teile seiner Formeln farblich hinterlegen möchte oder die Formel selbst in einer anderen Farbe haben möchte kann das hier versuchen:

Farbig hinterlegte Formel
\begin{equation}
{\color{red}p = \sum a}  {\colorbox{red}{$+ \sum b$}}  + \sum c
\end{equation}


Farbig hinterlegte Formel

7.4 Anzeigen der gesamten Bibliographie ohne einen einzigen \cite{...} Befehl

Möchte man seine gesamte Bibliography aus seiner .bib-Datei nett ausgegeben haben, so nutzt man \nocite{*} irgendwo zwischen \begin{document} und \bibliography{xxx.bib}.

Weitere interessante Seiten:


Über Konrad Mühler Über den Autor kLog - Weblog Weblog Publikationen von Konrad Mühler Publikationen

copyright 2010 - Konrad Mühler - konrad@my-rho.de