1. Project structure
  2. Document class configuration

Project structure

You're free to organize the project as you wish. A sane default structure looks like this:

  • root
    • .gitlab-ci.yml: configures CI/CD
    • .gitignore: configures git to ignore temp files
    • utuftthesis.cls: document class description
    • thesis.xmpdata: metadata for PDF/A generation
    • latexmkrc: build instructions for latexmk
    • thesis.tex: main document (links to sub-documents)
    • bibliography.bib: biblioraphy data (multiple bibs also possible)
    • section-X.tex: sub-documents for sections
    • images/: embedded images
    • sources/: embedded source code listings

In case you're using LyX, the following extra files are needed (the tex files can be generated from the lyx files):

  • root
    • utuftthesis.layout: document class configuration for LyX
    • thesis.lyx: main document (links to sub-documents)
    • section-X.lyx: sub-documents for sections

The standard files included in the template consist of:

  • The latex directory contains the document root. Everything from this directory can be moved to the project root, but make sure you'll update the GitLab CI, too.
  • The tests directory can be deleted. It only contains the test suite for the template.
  • The document class file utuftthesis.cls is always required.
  • The *.lyx and *.layout files are only needed if you decide to use LyX, and can be deleted in other cases.

Document class configuration

The document class is described in utuftthesis.cls.

  • Based on the standard LaTeX report class
  • Proper page sizes as required by university guide for students:
    • proper font sizes as well as linespacings
    • proper size of margins
  • Document parameters (command: \documentclass[the,params]{utuftthesis})
    • version: draft / final (default: draft) shows/hides [draft] in the footer
    • language: finnish / english (default: finnish) defines the main document language, affects the general document appearance and hyphenation
    • mainfont: (default: times)
      • pdftex: main font package (lmodern, fourier, ...), special value: times, none
      • xetex: main font name (Arial, Comic Sans, ...), special value: times enables Times New Roman, none
      • note: use none in cloud/CI services in place of times unless you provide the fonts yourself. The copyrighted fonts cannot be included in free platform distributions due to licensing issues.
    • hidechapters: true / false (default: true) hides/shows the chapter/luku text at the beginning of each Chapter
    • countbibpages: true / false (default: false) include bibliography pages when calculating the total number of pages
    • sharelatex: true / false (default: false) don't attempt to locate copyright protected system fonts (e.g. Times New Roman / Arial), instead read them from the project repository
    • emptyfirstpages: true / false (default: true) clear the headers/footers for the 1st pages of text chapters
    • turnitinchecked: true / false (default: true) display the TurnItIn text at the bottom of the title page
    • turnitinnewpage: true / false (default: false) instead of placing the TurnItIn text on the title page, create a new page for the text
    • hidetocpagenum: true / false (default: false) hide the roman page numbers on the TOC and List of Xs pages
  • Extra document parameters (command: \documentclass[extra,params]{utuftthesis})
    • paper: (default: a4paper) paper size
    • pdfaconformance: a-1b/ a-2b / a-2u / a-3b / a-3u / none (default: a-2b) PDF/A conformance level. A special parameter mathxmp can be also appended (see the PDF/A documentation).
    • hidelinks: true / false (default: true) hide the underlining of links
    • minted: true / false (default: false) use minted instead of listings for embedded code listings. Note that minted requires the use of -shell-escape build parameter.
    • biburlbreak: ragged / split / none (default: split) how to handle long urls in the bibliography
  • Publication metadata
    • \pubyear{2000}: the year of the publication (uses the current year if omitted - freezing this becomes useful after publication!)
    • \pubmonth{6}: the month of the publication (uses the current month if omitted - freezing this becomes useful after publication!)
    • \publab{labname}: the name of the laboratory, e.g. 'tietojenkäsittely'
    • \publaben{labname}: the name of the laboratory in English, e.g. 'computer science'
    • \pubtype{type}: the type of the thesis, either a special token (tkk, luk, gradu, di), or a custom string for both fi/en
    • \supervisors{foo,bar}: comma separated list of thesis supervisors. Appear one per line on the title page.
    • \title{titlename}: the title of the publication
    • \author{authorname}: the author of the publication
  • Abstract
    • \abstract{text}: abstract written in the main document language
    • \abstracten{text}: abstract written in the second language (English or "native", depending on the main document language)
    • \keywords{kw1,kw2}: list of keywords in the main document language
    • \keywordsen{kw1,kw2}: list of keywords in the second language (English or "native", depending on the main document language)
  • Title page
    • \maketitle: the standard LaTeX command for creating a title page. This template also creates the pages for abstracts.
  • TOC and lists
    • \tableofcontents: generates the table of contents
    • \listoffigures: generates the list of figures
    • \listoftables: generates the list of tables
    • \listofacronyms: generates the list of acronyms (using the nomencl package)
  • Main content
    • \begin{document}: begins the main content
    • \end{document}: ends the main content
    • \chapter{name}: generates a new chapter (1)
    • \section{name}: generates a new section (1.1)
    • \subsection{name}: generates a new section (1.1.1)
    • \printbibliography: generates the bibliography list (must be set up before the appendices!)
    • \appchapter{name}: generates a new appendix chapter (A) after the bibliography list
  • Entry environment:
    • the actual items are aligned to suit the widest label, which is given as an argument to the environment
\begin{entry}[widest label]
  \item[1st label text] ...
  \item[2nd label text] ...
\end{entry}