• Stars
    star
    1,116
  • Rank 40,333 (Top 0.9 %)
  • Language
    TeX
  • License
    MIT License
  • Created about 7 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A minimal & modern LaTeX template for your (bachelor's | master's | doctoral) thesis

latex-mimosis: A minimal & modern template for your thesis

This repository contains a minimal & modern LaTeX template for dissertations and other university documents.

For the impatient or curious: this is what the template looks like. You may also want to take a look at my Ph.D. dissertation, which uses a predecessor of this template.

Users

Before going over the details of this template, why not look at how it looks in practice? The following documents have been typeset with this template (or a slightly modified variant of it):

Please open a pull request if you want your document to be listed here, and consider acknowledging this repository.

Advantages

This template aims to be…

  • clean: no LaTeX trickery
  • minimal: no unnecessary adjustments and decorations
  • modern: typographically pleasing

It is specifically suited for the European education system because it uses A4 paper size by default—this can be easily adjusted to fit your personal needs, though (see below).

The class is based on KOMA-script, so it should be flexible enough to suit virtually any purpose.

How to use

If you are using Overleaf, download latex-mimosis in the gallery. If you want to use the template locally, follow these steps:

  • Clone this repository
  • Copy the file mimosis.cls into your document directory
  • Add \documentclass{mimosis} to your document preamble
  • Optionally copy the file Thesis.tex and the files in Sources as a starting point
  • Use latexmk to build the document
  • Write a nice thesis in LaTeX

While you can customise everything to your heart's desire, you should probably start with changing the fonts. I strongly recommend to use xelatex or lualatex to build the document, as this will make font selection almost trivial. Essentially, you only require these three commands (I took the liberty to specify some example fonts):

\setmainfont{Baskerville}
\setsansfont{IBM Plex Sans}
\setmonofont{IBM Plex Mono}

Put these commands in your main file such as Thesis.tex and be sure to remove this code block here:

\ifxetexorluatex
  % ...
\else
  % ...
\fi

Note that the document will work fine nevertheless, but some people dislike the default fonts or do not have them installed.

Overleaf users: If you are using Overleaf to build your thesis, you are restricted by their choice of fonts. Please read this document for more information about which fonts are available.

How to customise

The template is based on the excellent KOMA-script class. You can thus change the appearance of many things quite easily. For example, if you want the thesis to use the letter paper format, just add

\KOMAoptions{paper=letter}

in the preamble of the document and recompile.

Example

The repository comes with an example file called Thesis.tex. Please take a look at this file in order for more detailed instructions about how to use the class.

It is recommended to use latexmk to build your LaTeX documents. Your distribution might already have this command. If so, you can use

latexmk

in the main directory of this repository in order to build the example file.

Required packages for the class

The template uses various LaTeX packages that you should install using your favourite LaTeX distribution. Some distributions already do this automatically when you compile the document for the first time. Others require manual updates. Please refer to the documentation of your LaTeX distribution for more details.

Here is a list of packages that you need (I am using the package name as specified on CTAN):

Required packages for the example document

Typesetting the example document requires an additional set of packages. Feel free to remove them, though—they are only used for showcasing how a real document might look like.

For pdfTeX users:

For LuaTeX or XeTeX users:

  • The EB Garamond font
  • The Source Code Pro font

If you installed the packages above, everything should work automatically.

License

The template uses the MIT license. Please see the file LICENSE.md in the main directory of the repository for more details.

Known issues

The superscript citation style is not compatible with all citation styles. For example, to use the citation with chem-angew, please use an adjusted \supercite command such as this one:

\DeclareCiteCommand{\supercite}[\mkbibsuperscript]
{\bibopenbracket%
	\usebibmacro{cite:init}%
	\let\multicitedelim=\supercitedelim
	\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
	\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}%
	\usebibmacro{postnote}%
	\bibclosebracket%
}

Thanks to Carlo Botha for this contribution!

Extensions

Table of contents per chapter

If you want a small table of contents for each chapter, update mimosis.cls as follows:

\usepackage[automark,headsepline,plainheadsepline]{scrlayer-scrpage}
\pagestyle{scrheadings}
\automark[section]{chapter}

\lehead*{\headmark}
\cehead{}
\rehead{\headmark}

\lohead{\headmark}
\cohead{}
\rohead*{\headmark}

\newpairofpagestyles[scrheadings]{chapter}{
	\KOMAoptions{headsepline=false,plainheadsepline=false}%
	\ihead*{}%
	\ohead*{}%
}

\newpairofpagestyles[scrheadings]{part}{
	\KOMAoptions{headsepline=false,plainheadsepline=false}%
	\ihead*{}%
	\ohead*{}%
}

\renewcommand*\chapterpagestyle{chapter}

\renewcommand*\partpagestyle{part}

This extension was contributed by Nikos Antoniadis in issue 16. If you want to add this as proper extension or configurable parameter, please let me know!

Frequently asked questions (FAQ)

  1. Does the template support bold fonts?

    Yes. First of all, you can change the default font (my personal suggestion is to use the fontspec package and xelatex or lualatex; then, changing your font is as easy as using \setmainfont). Second, note that in older TeX distributions, the font ‘EB Garamond’, shipped in the ebgaramond package, does not ship with a bold variant. Consider updating your TeX distribution or manually replacing the font. This is not an issue with this package—please see issue #10 for more information.

  2. How do I use siunitx?

    The options of this package were recently updated. The setup has now been removed to simplify the package. For the new version of the package, the following options are suggested by Holger Dell:

    \sisetup{%
      mode                = match,
      propagate-math-font = true,
      reset-math-version  = false,
      reset-text-family   = false,
      reset-text-series   = false,
      reset-text-shape    = false,
      text-family-to-math = true,
      text-series-to-math = true,
    }

    If this does not work, you can also fall back to the older settings:

    \sisetup{%
      detect-all    = true,
      detect-family = true,
      detect-mode   = true,
      detect-shape  = true,
      detect-weight = true,
    }
  3. I have a font with special support for ordinal numbers. How can I use them?

    The easiest way is to override the definitions and specify the required font features:

    \renewcommand{\st}{{\addfontfeatures{VerticalPosition=Ordinal}\textup{st}}\xspace}
    \renewcommand{\rd}{{\addfontfeatures{VerticalPosition=Ordinal}\textup{rd}}\xspace}
    \renewcommand{\nd}{{\addfontfeatures{VerticalPosition=Ordinal}\textup{nd}}\xspace}
    \renewcommand{\th}{{\addfontfeatures{VerticalPosition=Ordinal}\textup{th}}\xspace}

    Notice that this will not work for most fonts. If you are unsure, just leave the default values in place.

  4. I want to use standard TeX fonts, but they look weird. (See issue #29 for more details)

    This could be related to the encoding if you are using pdflatex. Either consider using a better font, such as lmodern (to be found in the package with the same name), or use a different encoding:

    \usepackage[OT1]{fontenc}

    This might cause problems when copying text from the template, though. The better solution is to use lmodern.

  5. How can I ensure that the font for equations matches the main font?

    This depends a lot on your font selection. If you are using xelatex, consider using the mathspec package. Else, check that a package is available that provides maths support. For EB Garamond, the unicode-math package can be used, for instance. (See issue #33 for a brief discussion)

  6. How can I remove the indent in the second line (and all following ones) of Table/Figure captions?

    In mimosis.cls change \captionsetup{subrefformat=parens} to:

    \captionsetup{subrefformat=parens,format=plain}

    For details see here.

  7. How can I update the font size of citations?

    Check out bibliography-mimosis.tex and update or remove the \renewcommand*{\citesetup} block to your preference.

  8. I do not like some of the mathematical symbols. How can I change them?

    You should be using fontspec and see whether your selected font supports StylisticSet. See garamond-math for an example.

Contributing

If you require additional features, find some bugs, or just have some generic inquiries, please just open an issue in this repository.

Testimonials

I like it!

— My mum

Garish and overproduced.

— Some rando on social media

Nice and clean!

— utopcell on Hacker News

A dream to work with! A beautiful template that just works.

— Leslie O'Bray (who was totally not coerced into writing something nice about this template)

Contributors

Here is a list of contributors:

More Repositories

1

QtOSG

A proof-of-concept widget for integrating Qt and OpenSceneGraph in a thread-safe manner
C++
118
star
2

Aleph

A library for exploring persistent homology
C++
98
star
3

Events

A simple proof-of-concept for C++11 event dispatching
C++
52
star
4

latex-cv

A simple and modern template for your [academic] CV
TeX
38
star
5

latex-mimore

A minimal & modern LaTeX template for reports
TeX
34
star
6

libclang-experiments

Experiments with `libclang`
C++
20
star
7

latex-credits

A package for generating CRediT (Contributor Role Taxonomy) statements
TeX
19
star
8

pyper

Python-based persistent homology algorithms
Python
17
star
9

SimpleServer

Simple TCP/IP server implementation in modern C++
C++
16
star
10

psalm

Implementation of several subdivision algorithms for meshes
C++
16
star
11

hugo-purus

A pure, simple, and minimalistic Hugo theme
HTML
15
star
12

Auceps

A script for analysing potentially nefarious `auth.log` entries
Python
11
star
13

Shakespeare

Code and data for extracting co-occurrence networks from Shakespeare's plays
Python
10
star
14

DICOM

Utilities for converting DICOM files to volume data
Python
9
star
15

cmake-cpp

Example code for using CMake for a C++ project
CMake
8
star
16

DONUT

DONUT: Database of Original and Non-Theoretical Applications of Topology
Jupyter Notebook
8
star
17

cmake-cpp-pybind11

Showing how to integrate CMake, C++, and pybind11
CMake
8
star
18

iclr-analysis

ICLR 2020 and 2019 reviews
Python
7
star
19

TML

Experiments in topological machine learning
Python
7
star
20

stl-headers

Visualizing the usage and co-occurrence of headers in the C++ Standard Template Library
Python
6
star
21

CompHom

Computing homology groups of simplicial complexes
C++
6
star
22

bin-packing

C++ implementation of heuristics for solving the bin-packing problem
C++
6
star
23

enchiridion-tda

An enchiridion for instructing mortals in the hidden arts of topological data analysis
Python
5
star
24

polyhedron-3d-vertex-colours-plugin

An inkscape plugin for visualizing 3D polyhedra with vertex colours
Python
4
star
25

Simsam

Simplex sampling algorithms
Python
4
star
26

LittleBrother

A script for analysing who accesses your websites
Python
4
star
27

Mugshot

Creates automated mugshots of people near your computer
Python
4
star
28

TypeSwitch

Type switch template meta-programming class using C++11
C++
4
star
29

Skeleton_Persistence

Persistence-inspired concepts for skeleton analysis
Python
4
star
30

bestiary-autoencoders

A Bestiary of Autoencoders
Python
3
star
31

EtherCurve

Network packet visualization using Hilbert curves
C++
2
star
32

commitease

Grading the readability of git commits
Python
2
star
33

vim-markdown-navigation

`vim` plugin for Markdown navigation
Vim Script
2
star
34

bin-packing-heuristics

Some bin-packing heuristics
C++
2
star
35

dbakel-vis

Visualising the 'debacle' that is the German railway system
Python
2
star
36

Pixsort

Feature-driven pixel sorting in images
Python
1
star
37

Hyppolyta

An elegant way of cataloguing your belongings
HTML
1
star
38

git-heatmap

Code for creating heatmaps for git commits using gnuplot
Python
1
star
39

dcov

A Python package for calculating the sample distance covariance
Python
1
star
40

Pseudomanifold

1
star
41

Frak

An interpreter for the brainf*ck language
C++
1
star
42

imr

In medias res: a demo program for performing ARP attacks using FreeBSD's BPF device
C++
1
star