Have a look at the latest release to get the PDF version (there is no point in building the PDF yourself). You can also watch the video of the defence.
You need the Fira Sans and Fira Mono fonts to build the thesis. You also need Symbola because I use it as a fallback for some special unicode characters. I also now use DejaVu Sans and DejaVu Sans Mono as fallback fonts. I will use Fira Math as fallback as well.
I build using xelatex
with the following series of commands
xelatex --shell-escape main
makeindex main.nlo -s nomencl.ist -o main.nls # Compile nomenclature
makeindex main # Compile index
biber main # Compile bibliography
makeglossaries main # Compile glossary
xelatex --shell-escape main
xelatex --shell-escape main
xelatex --shell-escape main
Once its done, just doing
xelatex --shell-escape main
is often enough.
If you want to build using VSCode like me, you can install the LaTeX Workshop
plugin (the one suggested by VSCode) and add some recipes in the
settings.json
.
"latex-workshop.latex.recipes":[
{
"name": "latexmk 🔃",
"tools": [
"latexmk"
]
},
{
"name": "latexmk (latexmkrc)",
"tools": [
"latexmk_rconly"
]
},
{
"name": "latexmk (lualatex)",
"tools": [
"lualatexmk"
]
},
{
"name": "pdflatex ➞ bibtex ➞ pdflatex × 2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
{
"name": "Compile Rnw files",
"tools": [
"rnw2pdf"
]
},
{
"name": "kaobook",
"tools": [
"xelatex (shell escape)",
"make nomenclature",
"makeindex",
"biber",
"makeglossaries",
"xelatex (shell escape)",
"xelatex (shell escape)",
"xelatex (shell escape)"
]
}
],
"latex-workshop.latex.tools": [
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
},
{
"name": "lualatexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-lualatex",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
},
{
"name": "latexmk_rconly",
"command": "latexmk",
"args": [
"%DOC%"
],
"env": {}
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
],
"env": {}
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
],
"env": {}
},
{
"name": "rnw2pdf",
"command": "Rscript",
"args": [
"-e",
"knitr::knit2pdf('%DOCFILE%')"
],
"env": {}
},
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "xelatex (shell escape)",
"command": "xelatex",
"args": [
"--shell-escape",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "biber",
"command": "biber",
"args": [
"%DOCFILE%"
],
"env": {}
},
{
"name": "make nomenclature",
"command": "makeindex",
"args": [
"%DOCFILE%.nlo",
"-s",
"nomencl.ist",
"-o",
"%DOCFILE%.nls"
]
},
{
"name": "makeindex",
"command": "makeindex",
"args": [
"%DOCFILE%"
]
},
{
"name": "makeglossaries",
"command": "makeglossaries",
"args": [
"%DOCFILE%"
]
}
]