This post presents and highlights useful and probably important tools for writing a thesis with LaTeX. The tools are categorized in the following to allow the simple finding of appropriate tools for your thesis. In general, the posts explains only existing methods from other authors so that I also reference my sources.

MISQ Style

First, I needed to adopt the style of MISQ for my thesis. Luckily, Ryan Schützler created a wonderful template for the easy adoption. This template requires the usage of biber instead of bibtex for the bibliography management. biber enables simple changes of citation styles and reuses the bibtex infrastructure so that only slight changes must be conducted. In detail, [1] presents biber and the different citation styles. [2] provides a great overview on the different bibtex styles which I found very helpful when they were missing.

Font Change

I never liked the default font style of LaTeX and even a particular font was prescribed for my thesis. Unfortunately, font change handling can be quite complex since many side-effects must be considered. Depending on the used font type, the math support may need to be reenabled.

\usepackage{helvet}
\usepackage[eulergreek]{sansmath}

When you are using the tikz package, you also need to change its default font [3]:

\renewcommand{\familydefault}{\sfdefault}

Furthermore, the url font must be adapted [4]:

\urlstyle{\sfdefault}

Booktabs

Although many people consider the creation of tables simple, many mistakes can be done, even though the look of tables can be easily improved. The booktabs package for LaTeX is a good and simple way for improving the look, understanding and speed of information adoption. I found a great guide from Markus Püschel with further and detailled information. Restrictively, dashed separation lines were considered as appropriate, but they shouldn’t be realized with the arydshline package. It introduces problems with the booktabs package [5], seems to break their space alignment [6] and even the loading of the package can lead to compilation errors [8]. On the downside, alternative colored rows for a better row separation are harder to implement with booktabs. Considering these instructions [1], my LaTeX table code is presented in the following:

General Table Look Improvements

This paragraph presents various possibilities to enhance the looking of LaTeX tables. First, too long table captions are by default poorly rendered which can be resolved through the using of the caption package [7]:

\usepackage[justification=centering]{caption}

Secondly, very long booktabs tables can be improved with the alternative coloring of rows (guide), which is easily implemented through the rowcolors command and a color package [4].

\rowcolors{<starting row index>}{<odd row color>}{<even row color>}

On the downside, the alternative row coloring only colors the rows, so that a workaround is required to color the space between the last row and the end line of the table. This is solved by [8] which changes the settings of the default booktabs table rules:

Furthermore, booktabs requires another solution for the size adjustment of colored rows because it removes the trailing space of the rows at the beginning and end. This can be fixed through kern [9]:

\begin{tabular}{>{\kern-\tabcolsep}*{x}{>$c<$}<{\kern-\tabcolsep}}

Next, multirows requires the alignment of single lines through optional parameters [10]:

\multirow{2}[3]{*}{Sample}

Thereby, also cmidrule has an optional aligning parameter which you should use:

\cmidrule(lr)

The longtable environment introduced the problem of bad caption spacing which can be resolved by using the caption package [11].

\usepackage{caption}
\captionsetup[longtable]{skip=1em}

If you need a vertical longtable environment, employ the pdflscape package [12].

\usepackage{pdflscape}
...
\begin{landscape}
\begin{longtable}
...
\end{longtable}
\end{landscape}

Lastly, the cmidrule needs an adaption if you have a very long table header, so that the content is centered below and looks good [13].

Tikz Diagrams

Using tikz is a great oppurtunity to include good-looking diagrams into your LaTeX document. Saying that, a few settings can improve the look even more. The alignment of associated values can be enhanced by appending them [14]: every node near coord/.append style={font=\tiny}

Another simple upgrade is the avoidance of exponents in the axis labeling [15]:

scaled ticks=false,xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=4}

Regarding these two fixes, my final design of bars was also influenced by these described designs and their code ([16], [17], [18]). The next listing presents my bar chart design.

PDF Compilation Speedup

After approaching the look enhancement, this paragraph lists the speed up opportunities for the compilation step.

Although the application of tikz provides nice features, a special adaption is required to improve its performance. The externalization of such diagrams is a possibility and can be realized with the following settings according to its documentation [19, Section 50.4].

\usetikzlibrary{external}
\tikzexternalize

Furthermore, the compilation process commands must be adapted:

pdflatex -shell-escape

Since that’s only a very simple example, a setup for big files with a lot of diagrams is preferable. [20] suggests it:

\tikzexternalize[prefix=figures/]

\tikzsetnextfilename{diagram1}
\begin{tikzpicture}
...
\end{tikzpicture}

Another chance is enabled by the right selection of the data type and its settings. [21] presents and evaluates that:

Photos: Use the JPG format and crop it to the size and viewport your need using an image processing program, e.g. Gimp or Photoshop. DO NOT use JPG for anything else, it is really just thought for photos. It can handle other stuff as well but not as good as other formats.

Screenshoots and other Artificial Pixel-graphics: Use PNG format and again crop it to the size and viewport needed. The PNG format is lossless, i.e. doesn't create artifacts like JPG. Its compresses this kind of images well.

Diagrams, Pictures and other Vector-graphics: Should really be included as vector-graphics and not as pixel-graphics (and if so NOT as JPG!). You should export them as PDF or EPS which is then converted to PDF
(e.g. epstopdf). Extra whitespace from margins etc. can be removed by pdfcrop.

Beside that, the compilation command setup of LaTeX can be further improved [22]. Since three compilation executions are in general recommended, the first two executions can be conducted without regarding pictures through -draftmode:

pdflatex -draftmode file

The split-up of documents in subdocuments and their isolated compilation enables as well as the avoidance of the input command a further performance boost [23]. Also other compilation setups like pdflatex -interaction=batchmode are considered to enhance the compilation time [24]. The syntonly package [25] and a precompiled preamble accelerate the speed as well [26], but I haven’t utilized them in my thesis. In general, use as few packages as possible and only include required packages because useless packages can slow down the compilation or cause problems!

Code Listing Formatting

Since I was studying computer science, code was an essential part of my thesis. You can take advantage of the listings package to present it. [27] gives a good overview and [28] presents a good code design. In general, breakatwhitespace=true and a small tabsize=x must be recommended since the space is limited for documents.

I used the following code listing settings for my thesis:

Miscellaneous Simple Improvements

The last paragraph describes various simple enhancements for your thesis. If you want to change the colors of your hyperlinks, e.g. to improve the readability, you just need to apply different settings [29].

\usepackage[colorlinks, urlcolor=black, linkcolor=black, filecolor=black, citecolor=black]{hyperref}

To enhance the look of footnote cites and to indent more line citations, LaTeX settings must be overridden [24]:

\makeatletter
\renewcommand\@makefntext[1]{\leftskip=2em\hskip-2em\@makefnmark#1}
\makeatother

Moreover, the pifont package provides nice looking Xs and ticks [30]. Thanks to croeck for the tip! If you need to have a footnote at different places and to avoid duplicates,footnotemark can help you out [31]. Line breaks in footnotes can be resolved for urls by usepackage[hyphens]{url} [32]. Additionally, the depth of chapter levels and their display in the table of content can be set by setcounter{secnumdepth}{x} and setcounter{tocdepth}{x} [33]. Furthermore, spacing between values and units is simply realized by [34]:

\newcommand{\unit}[2]{#1$\mskip3mu$#2}

Tables can be a pain in the ass in LaTeX, but there are tools for a better table handling [35]. I used Lyx and it was absolutely fine with me.

Do you know missing essential packages others should consider? Just drop a comment and start the discussion :)