latex-wochenende/slides/chapter-04.en.md

4.8 KiB
Raw Blame History

@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 👹
  • 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}
\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}
\section{This is section 1}
A paragraph about the content 
of section 1.

% …
\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 👣

@content

  • important for \input{}, but later also for other media types
  • file and folder structure = tree structure 🌳
  • with \input{}, you can specify the path relative to the main file

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.

@preview

@slide(layout=content-and-preview-with-category)

@category Excursion

@title Specifying file paths 👣

@content

`main.tex` → `part1.tex`

`./part1.tex`

A single dot . represents the current folder (in this case: latex). It is optional, you could also write part1.tex here.

@preview

@slide(layout=content-and-preview-with-category)

@category Excursion

@title Specifying file paths 👣

@content

`main.tex` → `part1.tex` (in a subfolder)

./sections/part1.tex

@preview

@slide(layout=content-and-preview-with-category)

@category Excursion

@title Specifying file paths 👣

@content

`main.tex` → `part1.tex` (from one subfolder into a different subfolder)

../sections/part1.tex

Two dots .. represent the parent folder of the current folder (in this case: latex, parent of main).

Spaces in file paths have to be escaped using a backslash: `path/to/a\␣file`.

@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 dont 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=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?