219 lines
11 KiB
TeX
219 lines
11 KiB
TeX
\chapter{Basic Document Structure}
|
|
\label{sec:basic-document-structure}
|
|
|
|
How does a \LaTeX{} document look like?
|
|
In essence, every \LaTeX{} document is composed of two parts: the first part is
|
|
the preamble which is followed by the second part, the document environment.
|
|
|
|
We call the first commands within our \LaTeX{} document a \emph{preamble}. It
|
|
contains global information about our document, such as the document class that
|
|
we want to use, the encoding, the language, the page format, and additional
|
|
packages that we use.
|
|
The \emph{document environment}, on the other hand, contains the actual content
|
|
of our document, that is, the things that we will later see in our generated
|
|
\acro{PDF} file.
|
|
|
|
\Example{lst:latex-document-basic-structure}{basic-document-structure/hello-world}{basic-document-structure/hello-world_crop}{Beispielhafter
|
|
Structure of a simple \LaTeX{} document with preamble and document
|
|
environment}
|
|
|
|
\section{Preamble}
|
|
Let's take a closer look at the preamble.
|
|
A minimal preamble should contain the following specifications:
|
|
|
|
\subsection{Document Class}\label{sec:document-class}
|
|
We can define a document class by using the command
|
|
\mintinline{latex}|\documentclass[<parameter>]{<document class>}|. The most
|
|
commonly used document classes that are supported by default are
|
|
\mintinline{latex}{article} for short documents, and \mintinline{latex}{report}
|
|
for longer ones. Futhermore you can use \mintinline{latex}{book} for books,
|
|
\mintinline{latex}{beamer}\footnote{We do not cover making presentations in
|
|
\LaTeX{} in this tutorial. However, if you are interested in the topic, we
|
|
recommend this introduction on Overleaf:
|
|
\url{https://www.overleaf.com/learn/latex/Beamer}} for presentations, and
|
|
\mintinline{latex}{letter}\footnote{We also do not cover letters in this
|
|
script. An introduction can be found on WikiBooks:
|
|
\url{https://en.wikibooks.org/wiki/LaTeX/Letters}} for letters.
|
|
|
|
In addition to the standard document classes, the \acro{KOMA} script classes
|
|
developed over time. It offers alternatives to the document classes mentioned
|
|
above: In lieu of \mintinline{latex}{article} you can use
|
|
\mintinline{latex}{scrartcl}, \mintinline{latex}{report} is replaced by
|
|
\mintinline{latex}{scrreport}, and \mintinline{latex}{scrbook} can be used
|
|
instead of \mintinline{latex}{book}. As a replacement for
|
|
\mintinline{latex}{letter} one can use \mintinline{latex}{scrlttr2}.
|
|
A complete list of all \acro{KOMA} script classes is available
|
|
online\footnote{Erreichbar unter
|
|
\url{https://komascript.de/komascriptbestandteile}}. By using \acro{KOMA}
|
|
document classes, the layout of the generated \acro{PDF} document is changed.
|
|
On top of that, they provide additional functionality.
|
|
The standard document classes are designed according to the American-English
|
|
standards whereas \acro{KOMA} classes adhere to European norms, such as for
|
|
writing letters.
|
|
|
|
Each \mintinline{latex}{\documentclass} command can hold optional parameters in
|
|
square brackets.
|
|
\mintinline{latex}{\documentclass[10pt,a5paper,landscape]{scrartcl}}, for
|
|
instance, configures a \acro{KOMA} script article ans specifies its font size
|
|
to 10\,pt\footnote{The standard font size is 12,pt.}, sets the page size to
|
|
A5\footnote{The default case would be A4} and the orientation of the page to
|
|
landscape. The language can be passed as an optional parameter, too (cf.
|
|
\cref{sec:language}).
|
|
|
|
\subsection{Digression: Packages}
|
|
\label{sec:packages}
|
|
\begin{minted}{latex}
|
|
\usepackage[<optionen>]{<paketname>}
|
|
\end{minted}
|
|
Packages provide additional commands and functionalities that we can use within
|
|
our \LaTeX{} source code. There are numerous packages for different use cases
|
|
(e.\,g. typesetting forumlas, lists, \textellipsis).
|
|
In order make use of a package, it must be included within the preamble. To do
|
|
so, the above-mentioned command is used.
|
|
The most important \LaTeX{} packages can be found n the Comprehensive \TeX\
|
|
Archive Network,\footnote{Available at: \url{https://www.ctan.org/}}, short:
|
|
\acro{CTAN}. You can also find the documentations for the packages there.
|
|
|
|
\subsection{Encoding}
|
|
\begin{minted}{latex}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[t1]
|
|
\end{minted}
|
|
|
|
One use case for packages is specifying the encoding of our \LaTeX{} document.
|
|
The character encoding\footnote{Vgl.
|
|
\url{https://en.wikipedia.org/wiki/Character_encoding}} determines the
|
|
available character set.
|
|
The standard encoding in \LaTeX{} is \acro{ASCII}. \footnote{cf.
|
|
\url{https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange}}
|
|
It is an American character encoding and therefore does, for instance, not
|
|
contain German umlauts, or other special characters, which makes it unsuitable
|
|
for most use cases.
|
|
As a consequence, \acro{UTF-8}footnote{cf.
|
|
\url{https://en.wikipedia.org/wiki/UTF-8}} can be used as a universal
|
|
character
|
|
encoding.
|
|
|
|
In \LaTeX{} we need to specify two character encodings:
|
|
The input encoding (short: \mintinline{latex}{inputenc})) which refers to our
|
|
source code. The font encoding (short: \mintinline{latex}{fontenc}) concerncs
|
|
the choice of the file that is used to portray the content of our document
|
|
since we also need special characters there.\footnote{Details on how
|
|
\mintinline{latex}{fontenc} works can be found at:
|
|
\url{https://www.texwelt.de/fragen/5537/was-macht-eigentlich-usepackaget1fontenc}}
|
|
\mintinline{latex}{T1} is an enconding that tries to cover most European
|
|
language with a limited number of characters.
|
|
|
|
\subsection{Language}\label{sec:language}
|
|
\begin{minted}{latex}
|
|
\usepackage[ngerman]{babel}
|
|
\end{minted}
|
|
|
|
The package \mintinline{latex}{babel} provides language-specific information
|
|
(e.\,g. on hyphenation, special characters, changing fonts, translation of
|
|
labels\footnote{cf. \cref{sec:references}} like \enquote{Chapter},
|
|
\enquote{Table of Contents}, or \enquote{Figure}).
|
|
The language that you want to use can be passed as an optional parameter.
|
|
Als optionaler Parameter kann die Sprache übergeben werden.
|
|
\mintinline{latex}{ngerman}, for instance, is used for the new German spelling.
|
|
Some packages require that the language is already passed as optional parameter
|
|
in the \mint{latex}{\documentclass} command. In this case, just leave aus the
|
|
optional parameter for the language within the \mintinline{latex}{babel}
|
|
command.
|
|
|
|
You can use multiple languages in your document. To do so, pass the languages,
|
|
separated by commas, as optional parameter to the \mintinline{latex}{\babel}
|
|
command. Within your document, you can switch between langauges with the
|
|
\mintinline{latex}{\selectlanguage{<language>}} command. Alternatively, you can
|
|
include foreign-language text by using the following command:
|
|
\begin{minted}{latex}
|
|
\foreignlanguage{<sprache>}{<text>}
|
|
\end{minted}
|
|
|
|
\section{Document Environment}
|
|
The actual content of your \acro{PDF} document needs to be put between
|
|
\mintinline{latex}{\begin{document}} and \mintinline{latex}{\end{document}}.
|
|
|
|
\subsection{Continuous Text}
|
|
The easiest that you can integrate into the document environment is continuous
|
|
text. You can directly write it into your source code. Line breaks and multiple
|
|
spaces are ignored by \LaTeX{}. Blank lines create a new paragraph, which are
|
|
indented by default. \footnote{The automatic indentation of new paragraphs can
|
|
be prevented by using the command \mintinline{latex}{\noindent}.}
|
|
Manual linebreaks can be forced with two backslashes
|
|
(\textbackslash\textbackslash). This should be avoided, though.
|
|
|
|
\subsection{Comments}
|
|
Some characters are reserved for \LaTeX-specific commands. By using a percent
|
|
sign, for instance, the rest of the line is going to be ignroed by the
|
|
compiler, i.\,e. the text will not appear in your generated \acro{PDF} document.
|
|
This can be useful in order to take notes while working on your document
|
|
without affecting the actual document. This is called a comment.
|
|
|
|
However, if you want the percent sign to actually appear in your text, you can
|
|
achieve this by using a backslash: \mintinline{latex}{\%}.
|
|
This solution is also called escaping and also works for other reserved
|
|
characters, like \#, \$, \&, \_, \{ and \}.
|
|
|
|
In order to escape the backslash, the command
|
|
\mintinline{latex}{\textbackslash} must be used.\footnote{An overview of
|
|
additional special characters can be found in \cref{sec:special-characters}.}
|
|
|
|
\subsection{Sections and Chapters}
|
|
Continuous text can be structured by headings that divide the document into
|
|
sections and chapters. Needless to say, \LaTeX{} provides us with commands for
|
|
that.
|
|
The commands that are depicted in \cref{lst:headlines} can be used with any
|
|
document class.
|
|
\Example{lst:headlines}{basic-document-structure/headlines}{basic-document-structure/headlines_crop}{Überschriftenebenen}
|
|
Depending on your specified document class the commands
|
|
\mintinline{latex}{\chapter{Chapter}} and \mintinline{latex}{\part{Part}} are
|
|
additionally available -- for instance in books.
|
|
You can mark the command with an asterisk if you want to omit the numbering of
|
|
a section and exclude it from the table of contents\footnote{cf.
|
|
\cref{sec:table}}:
|
|
|
|
\begin{minted}{latex}
|
|
\section*{This section is excluded from the table of contents}
|
|
\end{minted}
|
|
|
|
An alternative title for the table of contents can be declared as an optional
|
|
parameter in square brackets between the command and the actual title.
|
|
|
|
\begin{minted}{latex}
|
|
\section[Title in the TOC]{Actual Chapter Title}
|
|
\end{minted}
|
|
|
|
\subsection{Front Matter}
|
|
A simple font matter can be created by using the command
|
|
\mintinline{latex}{\maketitle}. The values that get inserted into the front
|
|
matter must be specified within the preamble.
|
|
Multiple authors are joined by \mintinline{latex}{\and}.
|
|
Ein einfacher Titel lässt sich im Dokument mit dem Befehl
|
|
\mintinline{latex}{\maketitle} erzeugen.
|
|
If the date is not specified by \mintinline{latex}{\date}, the current date
|
|
will be inserted by default.
|
|
The design of the front matter depends on the specified document class.
|
|
|
|
\Example{lst:titles}{basic-document-structure/titles}{basic-document-structure/titles_crop}{Die
|
|
Titelei}
|
|
|
|
\subsection{Indices}\label{sec:table-of-contents}
|
|
If you structure your document with the above-mentioned commands for headings,
|
|
the command \mint{latex}{\tableofcontents} generates a automatically numbered
|
|
table of contents of it (like in \cref{lst:main-file} on
|
|
\cpageref{lst:main-file}).
|
|
|
|
The numbering style, the depth of the numbering and many other options can, of
|
|
course, be adapted. \footnote{We recommend the following blogpost:
|
|
\url{https://texblog.org/2011/09/09/10-ways-to-customize-tocloflot/}}
|
|
For \LaTeX{} to create your table of contents, the project has to be compiled
|
|
twice.
|
|
|
|
Besides the table of contents, you can also generate a
|
|
\mintinline{latex}{\listoffigures} (list of figures) and a
|
|
\mintinline{latex}{\listoftables} (list of tables). The captions of your
|
|
figures and tables will appear within those indices.\footnote{cf.
|
|
\cref{sec:graphics} (Grafiken) and \cref{sec:tables} (Tabellen) for more
|
|
information on this.}
|