Thesis layout in LaTeX

We beschrijven hier een skelet voor gebruik met LaTeX om een “normale” thesis layout te verkrijgen.

Je kan het skelet ook ineens downloaden: skelet.tex, het bevat dezelfde voorbeeldjes als op deze pagina. Je kan ook een pdf versie en een ps versie bekijken. (Indien je het skelet zelf wil LaTeXen, dan vind je de figuren hier: convergentie.eps, convergentie-oud.eps, convergentie-nieuw.eps, convergentie.pdf, convergentie-oud.pdf, convergentie-nieuw.pdf.)

We maken een onderscheid op deze pagina tussen zaken die we ten zeerste aangeraden vinden (do icon), voorbeelden (voorbeeld icon) en tips (tip icon) die het schrijven van je thesis zullen vergemakkelijken.

1. Papier formaat en regelafstand

Het papierformaat is uiteraard a4, maar LaTeX heeft per default nogal brede kantlijnen, vandaar dat we het package a4wide geometry toevoegen om een normalere bladspiegel te bekomen. (Het oude package a4wide geeft geen goede resultaten meer met pdflatex..) Je gebruikt een lettertypegrootte van 11 punt. De thesistekst wordt ingediend met enkele interlinie, hiervoor moet dus niets speciaals meer gedaan worden.

\documentclass[a4paper,11pt]{report}

\usepackage[a4paper]{geometry}

2. Taalinstelling

Om ervoor te zorgen dat LaTeX correct splitst en “Hoofdstuk” gebruikt in plaats van “Chapter” etc, moet je het package babel gebruiken.

\usepackage[dutch]{babel}

Het is nog wel noodzakelijk dat je de Nederlandstalige splitsingspatronen aanzet (standaard staan deze waarschijnlijk af, op de departementale machines staan ze aan). Op een Linux machine kan je dit doen met het commando texconfig: kies hyphenation, dan latex (of pdflatex als je dat gebruikt), en haal dan het percentteken weg voor de lijn die begint met dutch (let op: de editor is waarschijnlijk vi; een makkelijke en snelle manier om dit te doen is :%s/%dutch/dutch/ (substitute) en dan :wq (write,quit)).

Indien je LaTeX goed geconfigureerd is zie je bijvoorbeeld het volgende bij het latexen van een document: Babel <v3.7h> and hyphenation patterns for british, french, german, ngerman, dutch, nohyphenation, loaded.

Gebruik ook regelmatig een spellingchecker, bv ispell -d nederlands -t thesis.tex of gebruik het iets geavanceerdere aspell. Voeg de (correct gespelde) woorden die de spellingchecker niet kent toe aan je persoonlijke woordenlijst, dit bespaart je de volgende keer veel tijd.

3. Figuren

Om figuren in je tekst te kunnen opnemen moet je het package graphicx gebruiken (let op de schrijfwijze, graphics bestaat ook, maar is de verouderde versie!). Het package subfigure kan handig zijn om meerdere kleine figuurtjes op te nemen in één enkele illustratie.

\usepackage{graphicx,subfigure}

Je gebruikt dit als volgt:

\begin{figure}
  \begin{center}
    \includegraphics{convergentie}
  \end{center}
  \caption{Vergelijking van het convergentiegedrag}\label{fig:convergentie}
\end{figure}

of ook als:

\begin{figure}
  \begin{center}
    \subfigure[Oude methode]{\includegraphics{convergentie-oud}}
    \subfigure[Nieuwe methode]{\includegraphics{convergentie-nieuw}}
  \end{center}
  \caption{Vergelijking van het convergentiegedrag}\label{fig:convergentie2}
\end{figure}

Merk op: we gebruiken geen filenaam extensies in de voorbeelden hierboven! Afhankelijk van het commando dat je gebruikt om je document te latexen, latex of pdflatex, moet je respectievelijk .eps of .pdf figuren gebruiken, maar LaTeX is slim genoeg om naar de juiste extensie te zoeken.

Nota: je kan van .eps figuren .pdf figuren maken met het commando epstopdf. (Je kan ook .pdf exporteren vanuit Matlab, maar dit blijkt niet altijd te werken.)

Belangrijk: gebruik zeker geen bitmap formaten! In Matlab kan je je figuur makkelijk exporteren door in het File-menu Export setup te klikken. Je stelt daar best de grootte in van je figuur alsmede ook de grootte van de tekst op je figuur. Op deze manier zien al je figuurtjes er hetzelfde uit. Je bewaar je figuur ook best in het Matlab .fig formaat, zo kan je nadien nog makkelijk dingen veranderen aan je figuur. Let er ook op dat wanneer je twee figuren met elkaar wilt kunnen vergelijken dat je dan hetzelfde assenstelsel gebruikt.

4. Wiskundige formules en symbolen

De packages van de American Mathematical Society zijn een ten zeerste aangeraden addendum voor de reeds uitgebreide wiskundige mogelijkheden van LaTeX. Je voegt daarom best de volgende packages toe.

\usepackage{amsmath,amsfonts,amsthm}

Een aantal wiskundige symbolen zitten verrassend genoeg niet standaard in LaTeX in, bijvoorbeeld het standaard symbool voor de reële getallen. De packages van de American Mathematical Society bevatten echter wel de meest uiteenlopende symbolen. Je kan dan eigen commando's definiëren waardoor je bijvoorbeeld \R kan typen in plaats van \mathbb{R}.

\newcommand{\field}[1]{\mathbb{#1}}  % the font for a mathematical field is blackboard
\newcommand{\R}{\field{R}} % the field of the reals
\newcommand{\N}{\field{N}} % the field of the natural numbers
\newcommand{\C}{\field{C}} % the field of complex number
\newcommand{\Z}{\field{Z}} % the field of integers

De meeste auteurs gebruiken tegenwoordig een symbool in het vet om aan te geven dat het om een vector gaat. Je herdefinieert dan ook best het commando \vec zoals hieronder.

\renewcommand{\vec}[1]{\boldsymbol{#1}} % vectors in bold instead of with an arrow on top

Verder is het aan te raden om in je tekst en formules zoveel mogelijk semantische betekenis te steken. Heb je bijvoorbeeld vaak convolutie nodig dan is het beter om een commando \convolution te definiëren dan op al die plaatsen bijvoorbeeld \ast te schrijven (in de veronderstelling dat je een sterretje gebruikt om convolutie aan te geven). Indien je dan op een later ogenblik een ander symbool wil gebruiken moet je dit maar op één plaats wijzigen. Voorbeeld:

\newcommand{\convolution}{\ast} % convolution

Indien je op zoek bent naar een bepaald symbool dan kan je nuttig gebruik maken van The Comprehensive LaTeX Symbol List (nota: dit document bevat achteraan ook een index). Let wel op, voor vele speciale symbolen moet je ook het betreffende package includen, en sommige symbolen zitten in verschillende packages (waarschijnlijk onder een iets andere vorm).

Voor formules die je tussen twee paragrafen wil laten verschijnen heb je heel veel mogelijkheden. Het is aan te raden om de constructies uit het amsmath package te gebruiken. De documentatie bevat voldoende voorbeelden. We geven hier kort enkele mogelijkheden:

  1. Twee formules onder elkaar, gealigneerd op het gelijkheidsteken en beiden genummerd:

    \begin{align} % formulas with numbering, multiline and aligned at the &
      I(f) &= \int_0^1 f(x) \, dx     \label{eq:If}
      \\
      Q_n(f) &= \frac{1}{n} \sum_{k=0}^{n-1} f(k/n)     \label{eq:Qnf}
    \end{align}
    
  2. Hetzelfde als het voorbeeld hierboven, maar nu alleen de eerste formule genummerd:

    \begin{align} % formulas with numbering, multiline and aligned at the &
      I(f) &= \int_0^1 f(x) \, dx     \label{eq:If2}
      \\
      Q_n(f) &= \frac{1}{n} \sum_{k=0}^{n-1} f(k/n)     \nonumber
    \end{align}
    
  3. Als je helemaal geen nummering wil, volstaat het om een sterretje achter het commando toe te voegen. In dit voorbeeld staan de formules ook naast elkaar in plaats van onder elkaar.

    \begin{align*} % formulas without numbering, multiline and aligned at the &
      I(f) &= \int_0^1 f(x) \, dx
      &
      Q_n(f) &= \frac{1}{n} \sum_{k=0}^{n-1} f(k/n)
    \end{align*}
    

Verwijzen naar formules met een label doe je met het \ref commando en je zet de formule nummer tussen haakjes. Bijvoorbeeld: We benaderen de integraal~(\ref{eq:If}) met de kwadratuurformule~(\ref{eq:Qnf}).

Eventueel gebruik je hiervoor ook eigen commando's:

\newcommand{\RefVgl}[1]{~\textup{(\ref{#1})}} % using non breaking space, so use as\RefVgl{eq:foo}
\newcommand{\RefFig}[1]{Figuur~\textup{\ref{#1}}}
\newcommand{\RefTab}[1]{Tabel~\textup{\ref{#1}}}
\newcommand{\RefSec}[1]{Sectie~\textup{\ref{#1}}}
\newcommand{\RefHfdst}[1]{Hoofdstuk~\textup{\ref{#1}}}
\newcommand{\RefStel}[1]{Stelling~\textup{\ref{#1}}}
\newcommand{\RefLem}[1]{Lemma~\textup{\ref{#1}}}
\newcommand{\RefGev}[1]{Gevolg~\textup{\ref{#1}}}
\newcommand{\RefDef}[1]{Definitie~\textup{\ref{#1}}}
\newcommand{\RefVb}[1]{Voorbeeld~\textup{\ref{#1}}}
\newcommand{\RefAlg}[1]{Algoritme~\textup{\ref{#1}}}

Waarbij je de referentie naar een formule aan het vorige woord vastschrijft: in het commando zit reeds een non-breaking space zodat bijvoorbeeld (1) nooit op de volgende lijn komt.

Voor definities en stellingen gebruik je de mogelijkheden van amsthm (zie ook de documentatie):

\theoremstyle{plain}
  \newtheorem{stelling}{Stelling}[chapter]
  \newtheorem{lemma}[stelling]{Lemma}
  \newtheorem{gevolg}[stelling]{Gevolg}
\theoremstyle{definition}
  \newtheorem{definitie}[stelling]{Definitie}
  \newtheorem{voorbeeld}[stelling]{Voorbeeld}
\theoremstyle{remark}
  \newtheorem*{noot}{Noot}

Je gebruikt dit als volgt:

\begin{stelling}[Een bovengrens voor het aantal delers van $n$]\label{thm:delers}
  Het aantal delers $d(n)$ van een getal $n$ kan (ruw) afgeschat worden als
  \begin{align*}
    d(n) &\le 2 \sqrt{n}
  \end{align*}
\end{stelling}
\begin{proof}
  Voor elke deler $d \le \sqrt{n}$ van $n$ hebben we een deler $d' \ge
  \sqrt{n}$ waarvoor $d d' = n$. Indien alle getallen van $1$ tot $\sqrt{n}$
  delers zijn dan hebben we dus $2 \sqrt{n} - 1$ delers.
\end{proof}

Indien nodig kan je ook makkelijk nieuwe operatoren definiëren. Bijvoorbeeld de diag operator om van een vector een diagonaalmatrix te maken:

\DeclareMathOperator{\diag}{diag}

5. Bibliografie

Je gebruikt bibtex voor het aanmaken van je bibliografie. Raadpleeg voorlopig de volgende twee links als referentie: http://cmtw.harvard.edu/Documentation/TeX/Bibtex/Example.html en http://en.wikipedia.org/wiki/BibTeX.

Je kan zelf een “bib style” (.bst file) aanmaken met behulp van het commando latex makebst. Dit programma zal je een hele reeks vragen stellen over hoe je wil dat je biblografie er uit ziet. Ook kan je hiermee instellen dat je de bibliografie in de taal van het Babel package wil (Nederlands als je de instellingen op deze pagina gevolgd hebt) en niet in het Engels.