This will be focused on the German language, so be aware that most of the formatting settings are German !

Accompanying Document

Welcome to part 5!
This is a little more on the theoretical side, but should provide you with everything you need to understand and debug any issues you occur.

Digging deeper into the $\TeX$-Compiler

The pdf document is of course the main file that you want to produce. It's what you want to create after all.
The log file contains warnings, errors and information about the progress.

In a little more detail, the source-code requires (based on it's documentclass) different *.cls files. Those files are based on ascii or utf8 and with some practise you could probably simply read through them.

The different packages, that are used in the souce-code are loaded from *.sty files. Those contain the packages in so called style-files.

The $\TeX$ Compiler uses a bunch of other files, not illustrated above. Mainly *.fmt - format files, binary-formatted $LaTeX$ files, which can be read very fast.
Furthermore it uses font-files in a bunch of different formats, including *.px,*.pfa,*.pfg, *.ttf and *.otf. Those are present in some kind of binary format as well - they are definitely not human readable.


The $\TeX$-Compiler first of all looks into the current directory of the document that is being installed. Afterwards the $/TeX$-Directory-Structure (TDS) is searched. In contains of four different parts. The doc-directory, where the documentation is located, the font-directory where all the font-informations are. In addition to that the web2c folder and furthermore a tex-directory that e.g. contains a latex-subfolder, which contains e.g. tools and base.

This tree is represented three times. First of all, into the texmf-dist - the distribution, that can only be updated explicitly. Next up is texmf-local, containing local, but system wide modifications. Last but not least the texmf tree contains user-specific details.

Note: Not all the trees necessarily have all the subfolders and all the same structure, but overwrite accordingly, as the $TeX-Compiler searches from local to global (cur-dir -> texmf -> texmf-local -> texmf-dist)

The Actual Implementation

The ls-R files profide database information, so the compiler doesn't have to search through the whole filetrees all the time. This enforces us to update the databases when we add any files, as otherwise the compiler ignores them. The command mktexlsr - make tex lsr - : TEXMFHOME/TEXMFLOCAL/TEXMFMAIN - updates the corresponding database. As those environmental variables are internal, they can only be viewed with the kpsewhich --expand-var="$TEXMFHOME" command.
(Linux users can alternatively use mxtexlsr $(kpsewhich --expand-vor="$TEXMFHOME")

To check for a specific file, the command kpsewhich can be used to determine its location.
If the file does not show up, use those commands to check for a proper /$TeX$ installation. (Make sure you only have one set up !)

Win : echo %PATH%
Linux : echo $PATH