202 lines
4.5 KiB
Markdown
202 lines
4.5 KiB
Markdown
@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
|
||
{style="padding: .2em; height: 100vh"}
|
||
|
||
|
||
@slide(layout=content-and-preview)
|
||
|
||
@title
|
||
Main file <span class="emoji">👑</span>
|
||
|
||
@content
|
||
* contains basic structure and front matter
|
||
* 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
|
||

|
||
|
||
|
||
@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
|
||
{.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
|
||

|
||
|
||
|
||
@slide(layout=content-and-preview-with-category)
|
||
|
||
@category
|
||
Excursion
|
||
|
||
@title
|
||
Specifying file paths <span class="emoji">👣</span>
|
||
|
||
@content
|
||
<p data-category="Example">`main.tex` → `part1.tex`</p>
|
||
|
||
<div class="fragment">
|
||
`./part1.tex`
|
||
|
||
A **single dot ‘`.`’** represents the current folder (in this case: `latex`). It is optional, you could also write `part1.tex` here.
|
||
</div>
|
||
|
||
@preview
|
||

|
||
|
||
|
||
@slide(layout=content-and-preview-with-category)
|
||
|
||
@category
|
||
Excursion
|
||
|
||
@title
|
||
Specifying file paths <span class="emoji">👣</span>
|
||
|
||
@content
|
||
<p data-category="Example">`main.tex` → `part1.tex` (in a subfolder)</p>
|
||
|
||
<pre class="fragment">./sections/part1.tex</pre>
|
||
|
||
@preview
|
||

|
||
|
||
|
||
@slide(layout=content-and-preview-with-category)
|
||
|
||
@category
|
||
Excursion
|
||
|
||
@title
|
||
Specifying file paths <span class="emoji">👣</span>
|
||
|
||
@content
|
||
<p data-category="Example">`main.tex` → `part1.tex` (from one subfolder into a different subfolder)</p>
|
||
|
||
<div class="fragment">
|
||
<pre>../sections/part1.tex</pre>
|
||
|
||
**Two dots ‘`..`’** represent the parent folder of the current folder (in this case: `latex`, parent of `main`).
|
||
</div>
|
||
|
||
<div class="fragment">
|
||
<p data-category="Caution!">Spaces in file paths have to be escaped using a backslash: `path/to/a\␣file`.</p>
|
||
</div>
|
||
|
||
@preview
|
||

|
||
|
||
|
||
@slide(layout=content-only)
|
||
|
||
@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 don’t have a preamble.
|
||
|
||
|
||
@slide(layout=content-only-with-category)
|
||
|
||
@category
|
||
Demo
|
||
|
||
@title
|
||
Compiling larger projects
|
||
|
||
@content
|
||
* From now on, we will compile the file `main.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.
|
||
|
||
|
||
@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.tex` (in the root folder of the project archive). How do we include the different sections here? |