latex-wochenende/slides/project-structure.en.md

200 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@slide(layout=chapter-slide)
@number
4
@title
Project structure
@slide(layout=content-and-preview)
@title
Goal
@content
Create a bigger LaTeX project and …
* prevent LaTeX documents from growing monstrously <span class="emoji">👹</span>
* keep the overview over the project structure
@preview
![](svg/chapter-04/langes-dokument.jpg){style="padding: .2em; height: 100vh"}
@slide(layout=content-and-preview)
@title
Main file <span class="emoji">👑</span>
@content
* contains basic structure
* includes separate sections with \
`\input{path/to/file}`
``` {.lang-tex .hljs data-sourcefile=main.tex}
\documentclass{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\title{A Title}
\begin{document}
\maketitle
\tableofcontents
\input{section1.tex}
\input{section2.tex}
\end{document}
```
@preview
![](svg/chapter-04/main-orig.svg)
@slide(layout=content-and-preview)
@title
File with a section
@content
* contains **no preamble**
* contains **no** `\begin{document}` or `\end{document}`
``` {.hljs .lang-tex data-sourcefile=part1.tex}
\section{This is section 1}
A paragraph about the content
of section 1.
% …
```
``` {.hljs .lang-tex data-sourcefile=part2.tex}
\section{This is section 2}
A paragraph about the content
of section 2.
% …
```
@preview
![](svg/chapter-04/main-parts-crop.svg){.thin-padding}
@slide(layout=content-and-preview-with-category)
@category
Excursion
@title
Specifying file paths <span class="emoji">👣</span>
@content
* important for `\input{}`, but later also for other media types
* file and folder structure = tree structure <span class="emoji">🌳</span>
* with `\input{}`, you can specify the path relative to the main file
<p data-category="Caution!" class="fragment">In **LaTeX,** you have to use UNIX-style paths. They are separated by a forward slash: `path/to/file`. We will use those from here on.</p>
@preview
![](svg/chapter-04/tree-english-crop.svg)
@slide(layout=content-and-preview-with-category)
@category
Excursion
@title
Specifying file paths <span class="emoji">👣</span>
@content
<p data-category="Example">`main-exercises.tex` → `praeamble.tex`</p>
<div class="fragment">
`./praeamble.tex`
A **single dot `.`** represents the current folder (in this case: `latex-script`). It is optional, you could also write `praeamble.tex` here.
</div>
@preview
![](svg/chapter-04/relative-path-english-crop.svg)
@slide(layout=content-and-preview-with-category)
@category
Excursion
@title
Specifying file paths <span class="emoji">👣</span>
@content
<p data-category="Example">`main-exercises.tex` → `basic-document-structure.tex` (in a subfolder)</p>
<pre class="fragment">./content/basic-document-structure.tex</pre>
@preview
![](svg/chapter-04/relative-path-subdir-english-crop.svg)
@slide(layout=content-and-preview-with-category)
@category
Excursion
@title
Specifying file paths <span class="emoji">👣</span>
@content
<p data-category="Example">`basic-functionality.tex` → `graphics.raw.tex`</p>
<p>(`basic-functionality.tex` is imported into `main-exercises.tex`)</p>
<div class="fragment">
<pre>./exercises/graphics/graphics.raw.tex</pre>
<p data-category="Caution!">Paths are always relative to the root document that imports other files as fragments.</p>
</div>
@preview
![](svg/chapter-04/relative-path-transitive-english-crop.svg)
@slide(layout=content-only-with-category)
@category
Demo
@title
Compiling the project
@content
* **Only the main file** has to be compiled to get the complete PDF document.
* ++ Error messages include a reference to the corresponding subfile.
* ++ Subfiles cannot be compiled on their own as they dont have a preamble.
@slide(layout=task)
@task-number
4
@title
A structured project
@content
You will find a file named `main.tex` in the folder `exercises/project-structure`.
* Put the sections of the file into separate files, named `section1.tex` and `section2.tex`.
* Include them using the `\input` command.
* Move the preamble to its own file in a similar fashion.
* Finally, have a look at the general project archive, starting from `main-exercises.tex` (in the root folder of the project archive). How do we include the different sections here?
@slide(layout=content-only)
@title
Note
@content
+ From now on, we will compile the file `main-exercises.tex` in the project root.
+ To do so, right click on the file in TeXstudio and choose **“Select as explicit root document”** from the dropdown.
+ Next, compile as usual.