@slide(layout=chapter-slide) @title Project structure @slide(layout=content-and-preview) @title Goal @content Create a bigger LaTeX project and β¦ * prevent LaTeX documents from growing monstrously πΉ * keep the overview over the project structure @preview {style="padding: .2em; height: 100vh"} @slide(layout=content-and-preview) @title Main file π @content * contains basic structure and front matter * includes separate sections with \ `\input{path/to/file}` or \ `\include{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=two-columns) @title `input` or `include`? @column-one ``` {.hljs .lang-tex} \input{path/to/file} ``` * file extension `.tex` **may** be added * **nesting** possible: nested files can again be embedded using `\input{}` * file is added to the resulting document **without a page break** @column-two ``` {.hljs .lang-tex} \include{path/to/file} ``` * file extension `.tex` **must not** be added * **no nesting** possible * each subfile starts a **new page** in the resulting document * advantage for larger projects: `\includeonly{file1,file2,...}` can be used in the preable to compile only certain subfiles (the entire project has to be compiled at least once before) @slide(layout=content-and-preview-with-category) @category Excursion @title Specifying file paths π£ @content * important for `\input{}` and `\include{}`, later also for pictures * file and folder structure = tree structure π³ @preview  @slide(layout=content-and-preview-with-category) @category Excursion @title Specifying file paths π£ @content ### Absolute paths * path from the root directory to a file * the direcories are separated by special characters: * in UNIX: `/` * in Windows: `\`
absolute path for `main.tex`
* UNIX: `/home/knut/docs/latex/main.tex` * Windows: `C:\knut\docs\latex\main.tex`In **LaTeX,** you have to use UNIX-style paths. Therefore, we will use those from here on.
Relative path \ from `main.tex` to `part1.tex`
`./part1.tex` A **single dot β`.`β** in a relative path represents the current folder (in this case: `latex`). It is optional, you could also write `part1.tex` here.Relative path from `main.tex` to `part1.tex` in subfolder
`./sections/part1.tex` @preview  @slide(layout=content-and-preview-with-category) @category Excursion @title Specifying paths π£ @content ### Relative pathsRelative path from `main.tex` in its own subfolder to `part1.tex` in another subfolder
`../sections/part1.tex` **Two dots β`..`β** represent the parent folder of the current folder (in this case: `latex`, parent of `main`). @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-and-preview) @title Outsourcing the preamble @content What do you think happens when we outsource the preamble into its own subfile? Will the document compile? ++ **Yes, it will!** \ A simple way of keeping the main file even more organised. @preview {.thin-padding} @slide(layout=task) @task-number 3 @title A structured project @content * Remove the preamble, both of the `document` lines, and the table of contents from `allgemeines.tex`. * ++ Compile `l2kurz.tex` insteadβit is going to be our **main file** from now on. The file `allgemeines.tex` is already included and will be compiled automatically. * ++ The main file is very complex. Outsource all the commands that come before the document environment (`\begin{document}`) into a new file `preamble.tex` and include it with `\input{preamble}`. * ++ **Technical note:** When a popup opens during compilation, please choose option β(c) use the default command.β @slide(layout=task) @task-number 3 @title A structured project @content * To avoid long compilation times, you should should only include the sections `einleitung.tex` and `allgemeines.tex` for now. * ++ For this purpose, replace all of the **other** `\input` statements inside `l2kurz.tex` by `\include` statements und then use `\includeonly`. * ++ **Caution:** The preamble still needs to be included via `\input`. * ++ Put the `\includeonly` statement directly above `\begin{document}`.