\section{\ldeen{Konzepte}{Concepts}}
\label{sec:concepts}
\ldeen{Nach dem kurzen Tutorial sollen nun die Begriffe und Konzepte von \osglecture\ etwas systematischer und ausführlicher besprochen werden.}{After the short tutorial, the terminology and concepts of \osglecture\ are now discussed more systematically and in greater detail.}

\ldeen*{Dabei ist zu beachten, dass der Name @1 in diesem Bundle zwei Bedeutungen hat: Zum einen bezeichnet er das gesamte Bundle, zum anderen dessen Hauptklasse. Zur besseren Unterscheidung wird in diesem Manual für den ersten Fall die Schreibweise @2 verwendet, für den zweiten dagegen @3.}{The name @1 has two meanings in this bundle: it denotes both the bundle as a whole and its main class. To distinguish the two, @2 is used below for the bundle and @3 for the class.}{"`Osglecture"'}{\osglecture}{\cls{osglecture}}

%\begin{infobox}{\ldeen{Hinweis}{Hint}}
%\ldeen{Ab diesem Abschnitt ist das Manual zugleich Nachschlagewerk. Die
%Grundbegriffe werden hier eingeführt; vollständige Schnittstellenübersichten
%finden Sie bei den jeweiligen Themen: Inhalte und Modi in
%Abschnitt~\ref{sec:content-command-reference}, Serien in
%Abschnitt~\ref{sec:series}, Standalone-Betrieb in
%Abschnitt~\ref{sec:standalone}, Konfiguration und Profile in
%Abschnitt~\ref{sec:configuration-reference} sowie OLLM in
%Abschnitt~\ref{sec:ollm-reference}.}{From this section onward, the manual also
%serves as a reference. The basic concepts are introduced here; complete
%interface summaries are located with their respective topics: content and
%modes in Section~\ref{sec:content-command-reference}, series in
%Section~\ref{sec:series}, standalone operation in Section~\ref{sec:standalone},
%configuration and profiles in Section~\ref{sec:configuration-reference}, and
%OLLM in Section~\ref{sec:ollm-reference}.}
%\end{infobox}

\subsection{\ldeen{Projekt}{Project}}
\ldeen{
  Als ein "`Projekt"' wird hier eine Sammlung zusammengehöriger Materialien verstanden.
  Im Kontext unseres Anwendungsfalls bedeutet dies Lehrmaterialien wie Vorlesungsfolien oder
  Skripts, auch wenn \osglecture\ auf andere Anwendungsfälle übertragbar ist.
  Mit anderen Worten: Ein \osglecture-Projekt ist ein \emph{Kurs}.}{
  In this context, a "`project"' refers to a collection of related materials.
  In the context of our use case, this means teaching materials such as lecture slides or
  lecture notes, even though \osglecture\ can be applied to other use cases as well.
  In other words: An \osglecture project is a \emph{course}.
  }

  \ldeen*{Alle Kursmaterialien stehen in einem Verzeichnis, welches in der Regel ein spezielles Manifest enthält.
  Eine Ausnahme von dieser Regel bilden sogenannte \emph{Standalone}-Projekte, die ursprünglich für
  einen der oben angesprochenen anderen Anwendungsfälle gedacht waren, nämlich Konferenzbeiträge.
  Diese Ausnahme wird später gesondert betrachtet.
  Im Folgenden gehen wir aber von Kursen aus.}{All course materials are located in a directory that typically contains a special manifest.
  An exception to this rule is formed by so-called \emph{standalone} projects, which were originally intended for
  one of the other use cases mentioned above, namely conference papers.
  This special case is discussed separately later.
  In what follows, however, we will focus on courses.}

\subsection{\ldeen{Lehreinheit}{Course Unit}}
\ldeen{Ein Kurs ist aus Sicht von \osglecture\ eine Serie von zusammenhängenden
Lehreinheiten, z.\,B. Vorlesungen oder Übungen (oder beidem), die
typischerweise im Laufe eines Semesters gehalten werden.}{
  From the perspective of \osglecture\, a course is a series of related
course units, e.g.\ lectures or tutorials (or both), which
are typically held over the course of a semester.
}
\ldeen{Eine Lehreinheit ist hier eher ein didaktisches Konzept als ein
  zeitliches Konzept: Es ist durchaus möglich, dass sich eine Lehreinheit
  über mehrere Termine streckt oder dass zu einem Termin mehrere (eher kurze)
  Einheiten behandelt werden.}{A teaching unit here is a didactic concept rather than a
  temporal one: It is entirely possible for a teaching unit to
  span multiple sessions or for several (rather short)
  units to be covered in a single session.}
\ldeen{Welche Lehrmaterialien für einen Kurs benötigt werden, kann recht
unterschiedlich sein. In der OSG gibt es einige typische Lehrszenarien}{
  The set of teaching materials required for a course can vary quite
a lot. At the OSG, there are a number of typical teaching scenarios
}:
\begin{enumerate}
  \item \label{it:ts:lec}\ldeen{Es gibt Präsentationen, die die Lehrenden benutzen,
        während die Studierenden dazu passende Handouts erhalten.
        }{There are presentations that lecturers use whilst students are given
        the relevant handouts.}

  \item \label{it:ts:ml}\ldeen*{Wie @1, aber die Handouts gibt es in einer
        englischen und einer deutschen Sprachfassung.
        }{
        Same as @1, but the handouts are available in both English and German.
        }{\ref{it:ts:lec}}
  \item \ldeen*{Wie @1, aber statt der Handouts pro Lehrthema
        gibt es jeweils ein Gesamtskript pro Sprache.
        }{
        As in @1, but instead of handouts for each teaching topic,
        there is one comprehensive set of lecture notes for each language.
        }{\ref{it:ts:ml}}
\end{enumerate}

\ldeen{All diese und noch viel mehr Szenarien werden durch \osglecture{} unterstützt.}{
  All of these scenarios—and many more—are supported by \osglecture.}
\ldeen*{Dabei spielt @1 die Rolle einer \emph{Metaklasse}: Sie organisiert im Wesentlichen,
  welche konkrete Klasse geladen wird (z.\,B. \code{article}, \cls{book}, \cls{ltx-talk} oder \cls{beamer}) und sorgt dafür, dass es ein gemeinsames Interface gibt.}{In this context, @1 acts as a \emph{metaclass}: It essentially determines
  which specific class is loaded (e.g., \code{article}, \cls{book}, \cls{ltx-talk}, or \cls{beamer}) and ensures that there is a common interface.}{\cls{osglecture}}
\ldeen{Dabei werden Materialien, die nicht so unmittelbar präsentationsbezogen sind wie die eigentliche Präsentation oder Handouts, also beispielsweise Skripte oder Lehrbücher, unter dem Begriff "`Langform"' zusammengefasst.}{Materials that are not as directly related to the presentation itself or to handouts---such as lecture notes or textbooks---are grouped under the term "`long form"'.}

\subsection{\ldeen{Verzeichnisstruktur}{Directory Structure}}
\ldeen{
  Die Materialien jedes Kurses befinden sich in einem eigenen Verzeichnis, dem sogenannten (Kurs-)Projektverzeichnis
  oder (bezogen auf das Projekt) Rootverzeichnis.
  Dabei bildet die Verzeichnisstruktur die Struktur des Kurses nach.}{
  The materials for each course are located in their own directory, known as the (course) project directory
  or (in relation to the project) root directory.
  The directory structure mirrors the structure of the course.
  }

\ldeen{Im Folgenden ist eine mögliche Verzeichnisstruktur für ein einfaches Szenario zu sehen}{
  The following shows a possible directory structure for a simple scenario
}:\medskip

\begin{manualdirtree}
  \dtdir{Operating\_Systems}{\ldeen{Root-Verzeichnis}{root}}{
    \dtfile{ollmconfig.toml}{\ldeen{Manifest}{manifest}}
    \dtdir{000-Intro}{\ldeen{1. Lehreinheit}{1st unit}}{
      \dtfile{main.tex}{}
      \dtfile{picture.png}{}
      \manualdirtreeellipsis{\ldeen{weitere Dateien}{additional files}}
    }
    \dtdir{010-Design}{\ldeen{2. Lehreinheit}{2nd unit}}{
      \dtfile{main.tex}{}
    }
    \dtdir{020-Process}{\ldeen{3. Lehreinheit}{3rd unit}}{
      \dtfile{main.tex}{}
    }
    \manualdirtreeellipsis{\ldeen{weitere Lehreinheiten}{additional units}}
    \dtdir{Include}{\ldeen{gemeinsame Daten}{common data}}{
      \dtfile{projectconfig.tex}{\ldeen{Kurs-Metadaten}{course's meta data}}
      \manualdirtreeellipsis{\ldeen{weitere gemeinsame Dateien}{additional shared files}}
    }
  }
\end{manualdirtree}

\ldeen{Der Verzeichnisname einer Lehreinheit besteht mindestens aus einer dreistelligen Nummer
  und einer durch einen Bindestrich abgetrennten Themenbeschreibung.}{
  The directory name of a course unit consists of at least a three-digit number
  and a description of the topic, separated by a hyphen.
  }
  \ldeen{Die Nummer muss dreistellig sein (führende Nullen sind erlaubt) und legt lediglich die Reihenfolge
  der Lehreinheiten fest, nicht etwa Kapitelnummern. Daher bietet es sich mindestens in der Entwicklungsphase eines Kurses an, eine größere Schrittweite zu wählen, um später Kapitel ohne großen Aufwand umorganisieren zu können.
  }{The number must be three digits long (leading zeros are allowed) and simply determines the order
  of the learning units, not chapter numbers. Therefore, at least during the development phase of a course, it makes sense to choose a larger increment so that chapters can be reorganized later without much effort.}\footnote{\ldeen{Ältere Programmierer kennen dieses Prinzip vielleicht noch von Programmiersprachen wie BASIC}{Older programmers may still be familiar with this principle from programming languages such as BASIC}.}

\ldeen{  Die Themenbeschreibung im Verzeichnisnamen ist frei wählbar und soll nur als Gedächtnisstütze dienen, was der
  Inhalt der jeweiligen Einheit ist. Mehrere Worte können durch Unterstrich oder Gedankenstrich getrennt werden, aber in der Regel empfiehlt es sich, ein einzelnes aussagekräftiges Wort zu nutzen.}{  The topic description in the directory name can be chosen freely and is intended only as a reminder of what the content of the respective unit is. Multiple words can be separated by an underscore or a dash, but as a general rule, it is recommended to use a single, meaningful word.}

  \ldeen{Der Verzeichnisname kann aber noch zusätzliche Informationen beinhalten. Insgesamt hat der Verzeichnisname
    einer Lehreinheit das folgende Format
  }{
    However, the directory name may also contain additional information. Overall, the directory name of a
    course unit has the following format}:

  \centerline{\code{\meta{number}[\meta{target}]-[\meta{role}]-\meta{topic}}}

\ldeen{Die Teile in eckigen Klammern sind jeweils optional. Sie haben folgende Bedeutung
}{
  The parts in square brackets are optional. They have the following meanings
}:

\begin{description}
\item [\meta{target}] Beschreibt das Ziel dieser Einheit.
  \ldeen{Manchmal gibt es Material, das nur für bestimmte Arten von Materialien sinnvoll ist.
  Beispielsweise werden häufig die organisatorischen Inhalte der Auftaktvorlesung nicht
  mit im Skript stehen. Dies kann mit dem Targetbereich beschrieben werden. Es ist ein Code
  aus ein oder zwei Buchstaben
  }{
    Sometimes there is material that is only relevant for certain types of materials.
  For example, the organizational details of the introductory lecture are often not
  included in the lecture notes. This can be described using the "Target(scope)." It is a code
  consisting of one or two letters
  }:
  \begin{itemize}
    \item [\code{a}] \ldeen{Es ist nur Material eine sogenannte Langform (also ein Skript,
      ein Buch, etc.) in dem Verzeichnis enthalten}{
        The directory contains only material for long-form work (script, book, etc.)
      }.
    \item [\code{b}] \ldeen{Das Verzeichnis enthält Material für eine Präsentation}{The directory contains materials for a presentation}.
  \end{itemize}

  \ldeen{Ein zusätzlicher zweiter Buchstabe kann den Bereich weiter einschränken. Beispielsweise steht "`\code{bh}"' für ausschließlich
  Handouts, es werden also keine Slides erstellt.}{An additional second letter can narrow it down even further. For example, "`\code{bh}"' stands for handouts only, so no slides are created.}

  \ldeen{Ohne eine Target-Spezifikation enthält das Verzeichnis Material für \emph{alle} konfigurierten
    Dokumentarten}{Without a target specification, the directory contains material for \emph{all} configured
    document types}.

  \ldeen{Dieser Zielbereich ist erweiterbar, siehe die Dokumentation zu \code{ollm}.}{This target range can be extended; see the documentation for \code{ollm}.}
  \item [\meta{role}] \ldeen{Rolle, die die Einheit einnimmt. Dies wird stets durch einen einzelnen Buchstaben
      beschrieben:}{The role that the unit plays. This is always described by a single letter}
  \begin{itemize}
    \item [\code{a}] \ldeen{Die Einheit ist ein Anhang}{Unit is an appendix}.
    \item [\code{c}] \ldeen{Dies ist synonym zu einer ausgelassenen Rollenangabe und steht für eine normale Einheit}{This is synonymous with an omitted role specification and represents a normal unit}.
    \item [\code{e}] \ldeen{Die Einheit ist eine Ergänzung. Damit ist gemeint, dass sie zur vorhergehenden Einheit gehört, aber eine gewisse Eigenständigkeit besitzt. Beispielsweise könnte es ein Übungsblatt oder Ergänzungsmaterial sein.}{The unit is a supplement. This means that it is related to the preceding unit but has a certain degree of independence. For example, it could be a worksheet or supplementary material.}
    \item [\code{i}] \ldeen{Diese Einheit integriert andere Einheiten. Beispielsweise würde die Integrationseinheit eines Vorlesungsskripts alle Skriptkapitel (die anderen Einheiten) zusammenfügen und ein Titelblatt, gemeinsames Inhaltsverzeichnis etc.\ hinzufügen. Jede Dokumentenart darf nur eine Integrationseinheit haben.}{This unit integrates other units. For example, the integration unit for a lecture transcript would combine all the transcript chapters (the other units) and add a title page, a common table of contents, etc. Each document type may have only one integration unit.}
  \end{itemize}
\end{description}

\begin{warnbox}{\ldeen{Achtung}{Attention}}
  \ldeen*{Bitte beachten Sie, dass der Aufbau der Verzeichnisnamen nicht nur Konvention ist: Sowohl die Hauptklasse @1 als auch das Tool @2 werten die Namen aus.}{Please note that the structure of the directory names is not merely a convention: both the main class @1 and the tool @2 interpret these names.}{\cls{osglecture}}{\OLLM}
\end{warnbox}
\ldeen*{In jedem Lehreinheitenverzeichnis befindet sich eine \LaTeX-Datei. Sie verwendet die Dokumentklasse @1 und trägt in der Standardkonfiguration den Namen @2. Neben dieser Datei kann sich beliebiges weiteres Material in dem Verzeichnis befinden, etwa Bilder, einzubindende Dateien oder private \File{.sty}-Dateien, die nur in dieser Einheit benötigt werden.}{Each course-unit directory contains a \LaTeX\ file. It uses the document class @1 and, in the default configuration, is named @2. The directory may also contain any other material, such as images, files to be included, or private \File{.sty} files needed only by that unit.}{\cls{osglecture}}{\File{main.tex}}

\ldeen{Dagegen sollten private \File{.sty}-Dateien oder andere Materialien, die in \emph{allen} Lehreinheiten benötigt werden, im \path{Include}-Verzeichnis stehen.}{By contrast, private \File{.sty} files or other material needed by \emph{all} course units should be placed in the \path{Include} directory.}

\subsection{Modi}
\label{sec:concept-modes-overlays}
\ldeen{Wer schon einmal mit \cls{beamer} oder \cls{ltx-talk} gearbeitet hat, kennt Modi
und Overlayspezifikationen. Beide erlauben es, aus derselben Quelle unterschiedliche
Darstellungen zu setzen, beantworten aber verschiedene Fragen.
}{Anyone who has worked with \cls{beamer} or \cls{ltx-talk} will know modes
and overlay specifications. Both allow different presentations to be typeset from the
same source, but they answer different questions.}

\ldeen{Für alle, die noch nicht damit gearbeitet haben: Beides wird (auch gemischt) in spitzen Klammern
als erstes Argument eines Befehls angegeben.
Ein \emph{Modus} entscheidet bei der Übersetzung, ob der Befehl und damit
sein Inhalt mit übersetzt wird. So kann Textmaterial, das nur auf den Folien, aber
z.\,B.\ nicht im Skript stehen soll, entsprechend gekennzeichnet werden.}{For readers
new to these concepts: both may appear, even together, in angle brackets as the first
argument of a command. A \emph{mode} decides during compilation whether the command and
therefore its content is included. Text intended for slides but not, for example, for the
lecture notes can thus be marked accordingly.}
\ldeen{Bei Overlays können aus einer gestalteten Folie mehrere Seiten im PDF erzeugt
werden, die alle leicht unterschiedlich aussehen, aber die gleiche Foliennummer
haben. Damit können z.\,B.\ Animationen wie das zeilenweise Aufdecken oder
Markieren von Inhalt erreicht werden. 
}{Overlays can produce several PDF pages from one designed slide. They differ slightly
but carry the same slide number. This supports effects such as revealing or highlighting
content step by step.}
\ldeen{Angenommen, eine Folie zeigt zunächst nur eine Frage und nach dem
nächsten Klick auch die Antwort. Das ist ein Overlay: Beide Ansichten gehören
zum selben PDF, Target und Sprachbuild. Soll die ausführliche Begründung dagegen
nur im Skript stehen und auf Folien ganz fehlen, ist das eine Modusentscheidung.
Sie führt zu unterschiedlichem Inhalt verschiedener Dokumentinstanzen.}{Suppose
a slide initially shows only a question and reveals the answer after the next
click. That is an overlay: both views belong to the same PDF, target, and
language version. If the detailed reasoning should instead appear only in the
lecture notes and be absent from slides altogether, that is a mode decision.
It produces different content in different document instances.}

\ldeen{Modi und Overlays werden mitunter verwechselt, was auch daran liegt, dass sie 
bei \cls{beamer}/\cls{ltx-talk} häufig gemischt eingesetzt werden und eine gemeinsame
Syntax haben.
Tabelle~\ref{tbl:overlay-modus} stellt die Unterschiede noch einmal kompakt dar.}{Modes
and overlays are sometimes confused, partly because \cls{beamer} and \cls{ltx-talk}
often combine them and use related syntax. Table~\ref{tbl:overlay-modus} summarizes
the distinction.}

\begin{center}
\captionof{table}{Overlay und Modus\label{tbl:overlay-modus}}
  \begin{tabular}{lll}
\textbf{\ldeen{Frage}{Question}} & \textbf{\ldeen{Mechanismus}{Mechanism}} &
\textbf{\ldeen{Beispiel}{Example}}\\
\ldeen{Gehört der Inhalt in dieses Ergebnis?}{Does the content belong in this output?} &
\ldeen{Modus}{mode} & \code{longform}, \code{presentation}\\
\ldeen{Wann erscheint er innerhalb der Präsentation?}{When does it appear within the presentation?} &
Overlay & \code{<2->}
\end{tabular}
\end{center}

\ldeen{Das Paket \pkg{osglecture-modes} stellt das gemeinsame Modussystem bereit,
das unabhängig von \cls{beamer} und \cls{ltx-talk} genutzt werden kann. Die konkreten
Modi der Präsentationsklassen bleiben verfügbar, sollten aber nur abgefragt werden, wenn
tatsächlich eine Besonderheit dieser Klasse gemeint ist.}{The \pkg{osglecture-modes}
package supplies the common mode system, which can be used independently of \cls{beamer}
and \cls{ltx-talk}. The presentation classes' own modes remain available, but should only
be queried when a feature specific to that class is actually intended.}

\ldeen{Bei \cs{lecturemode}\code{<longform>} ist es ein Modus. Bei einem von
der Basisklasse bereitgestellten \cs{item}\code{<2->} ist es ein Overlay. Ein
Overlayausdruck ist keine portable Modusbedingung.}{The confusion is reinforced
by syntax: presentation classes often write overlay specifications in angle
brackets, and \osglecture\ also uses angle brackets for mode arguments. The
command determines which concept is meant. With
\cs{lecturemode}\code{<longform>} it is a mode. With an
\cs{item}\code{<2->} supplied by the base class it is an overlay. An overlay
specification is not a portable mode condition.}

\ldeen{Modi bilden in \osglecture\ keinen flachen Schaltervorrat, sondern einen
gerichteten Graphen vom Speziellen zum Allgemeinen. Der konkrete Modus
\code{handout} hat beispielsweise die Eltern \code{presentation} und
\code{print}; \code{script} führt über \code{article} zu \code{longform} und
\code{print}. Eine Abfrage nach einem Elternmodus trifft damit alle passenden
Spezialisierungen. Das ist der Grund, warum Autoren meist ihre Absicht als
\code{presentation}, \code{longform}, \code{slides} oder \code{print}
formulieren sollten, statt eine Basisklasse abzufragen.}{Modes in
\osglecture\ are not a flat collection of switches but a directed graph from
specific to general. For example, the concrete \code{handout} mode has the
parents \code{presentation} and \code{print}; \code{script} leads through
\code{article} to \code{longform} and \code{print}. Querying a parent mode
therefore matches all appropriate specializations. This is why authors should
normally express their intent as \code{presentation}, \code{longform},
\code{slides}, or \code{print} instead of testing for a base class.}

\ldeen{Target, Dokumenttyp und Profil wirken dabei nacheinander. Das Target
wählt die gewünschte Ausgabe, der Dokumenttyp aktiviert deren fachlichen
Blattmodus, und das Profil ergänzt technische Modi der Satzumgebung. Das
\cls{beamer}-Profil ergänzt beispielsweise \code{beamer}; ein anderes
Präsentationsprofil muss diesen technischen Modus nicht besitzen. Der
Elterngraph sorgt dennoch dafür, dass beide Profile dieselbe portable Abfrage
\code{presentation} erfüllen. Profile dürfen außerdem zusätzliche Modi und
eine Modus-Setup-Datei mitbringen. Sie erweitern damit die Fähigkeiten einer
Satzumgebung, ohne die Bedeutung des Dokumenttyps zu ersetzen.}{Target,
document type, and profile act in sequence. The target selects the requested
output, the document type activates its semantic leaf mode, and the profile
adds technical modes belonging to the typesetting environment. For example,
the \cls{beamer} profile adds \code{beamer}; another presentation profile need
not have that technical mode. The parent graph nevertheless ensures that both
profiles satisfy the same portable \code{presentation} query. Profiles may
also supply additional modes and a mode setup file. They can thus extend the
capabilities of a typesetting environment without replacing the meaning of the
document type.}

\ldeen{Overlays bleiben dagegen Aufgabe der gewählten Präsentationsklasse.
\osglecture\ kann gebräuchliche Overlaybefehle anbinden, aber
es verspricht nicht, dass jede klassen- oder themespezifische Animation einen
Profilwechsel überlebt. Wer Portabilität zwischen \cls{beamer} und
\cls{ltx-talk} benötigt, sollte den gemeinsamen Strukturwortschatz verwenden
und Overlays auf die von beiden Profilen unterstützte Teilmenge begrenzen. Die
konkrete Inhaltsauswahl wird in Abschnitt~\ref{sec:content-osglecture-modes}
fortgesetzt.}{Overlays, by contrast, remain the responsibility of the selected
presentation class. \osglecture\ can integrate common overlay
commands, but it does not promise that every class- or theme-specific animation
survives a profile switch. Authors requiring portability between \cls{beamer}
and \cls{ltx-talk} should use the common structural vocabulary and restrict
overlays to the subset supported by both profiles. Concrete content selection
continues in Section~\ref{sec:content-osglecture-modes}.}

\ldeen{Erweiterbarkeit ist dann sinnvoll, wenn ein Projekt eine semantisch neue
Ausgabe benötigt, nicht bloß ein anderes Layout. Ein betreutes Selbststudium
könnte beispielsweise den Typ \code{studyguide} mit eigenen aktiven Modi und
einem Langformprofil einführen. Ein bloßer Wechsel von \cls{book} zu
\cls{scrbook} benötigt dagegen nur ein anderes Profil für den vorhandenen Typ
\code{script}. Diese Unterscheidung verhindert, dass technische
Satzentscheidungen unnötig viele Dokumentinstanzen erzeugen. Das vollständige
Profilbeispiel steht in Abschnitt~\ref{sec:project-configuration}; neue
OLLM-Targets werden über die dort beschriebenen Targetdefinitionen
registriert.}{Extensibility is useful when a project needs a semantically new
output, not merely a different layout. For example, supervised self-study
might introduce a \code{studyguide} type with its own active modes and a
long-form profile. Merely switching from \cls{book} to \cls{scrbook}, by
contrast, only requires another profile for the existing \code{script} type.
This distinction prevents technical typesetting decisions from needlessly
creating additional document instances. The complete profile example is in
Section~\ref{sec:project-configuration}; new OLLM targets are registered using
the target definitions described there.}

\subsection{\ldeen{Dokumententypen und Profile}{Document Types and Profiles}}
\label{sec:types-profiles}
\ldeen{Ein \emph{Dokumenttyp} (\emph{doctype}) bezeichnet die
Ausgabeform, die angefordert werden kann: beispielsweise \code{slides},
\code{handout}, \code{script} oder \code{article}. Denken Sie dabei an
die Frage "`Was soll für wen entstehen?"' und nicht an eine konkrete
\LaTeX-Klasse.}{A \emph{document type} (\emph{doctype}) denotes the conceptual
output form you request, for example \code{slides}, \code{handout},
\code{script}, or \code{article}. Think of the question "`What should be
produced, and for whom?"' rather than of a particular \LaTeX\ class.}

\begin{figure}[htbp]
\centering
\begin{tcolorbox}[width=.92\linewidth,colback=blue!2,colframe=blue!55!black]
\centering
\code{ollm build slides --language=en}
\par\medskip$\Downarrow$\par\smallskip
\begin{tabular}{c@{\quad$\longrightarrow$\quad}c@{\quad$\longrightarrow$\quad}c}
\ldeen{Target}{Target} & \ldeen{Profil und Klasse}{Profile and class} & \ldeen{aktive Modi}{active modes}\\
\code{slides} & \cls{beamer} & \code{projector, presentation, beamer}
\end{tabular}
\end{tcolorbox}
\caption{\ldeen{Von der Nutzerwahl zur konkreten Darstellung.}{From the user's choice to the concrete rendering.}}
\end{figure}

\ldeen{Im normalen Arbeitsablauf begegnet Ihnen der Dokumenttyp als Targetname
im \OLLM-Befehl. \OLLM\ prüft im Manifest, ob dieses Target und die gewünschte
Sprache für das Projekt vorgesehen sind. Anschließend übergibt es die
normalisierte Auswahl an \cls{osglecture}.}{In the normal workflow, the
document type appears as the target name in the \OLLM\ command. \OLLM\ checks the
manifest to determine whether this target and the requested language are
configured for the project. It then passes the normalized selection to
\cls{osglecture}.}

\ldeen{Der anschließende Build \emph{instanziiert} die gemeinsame Quelle für
genau diese Auswahl. Das konkrete Ergebnis heißt \emph{Dokumentinstanz}. Zwei
Instanzen können also denselben fachlichen Inhalt besitzen und sich dennoch in
Sprache, Dokumenttyp oder beidem unterscheiden.}{The subsequent build
\emph{instantiates} the shared source for precisely this selection. The concrete
result is called a \emph{document instance}. Thus, two instances may contain the
same subject matter while differing in language, document type, or both.}

\ldeen{Die Klasse wählt zu jedem Target ein \emph{Profil}. Das Profil legt die
konkrete Basisklasse und deren Adapter fest. So kann \code{slides} in einem
Projekt mit \cls{beamer}, in einem anderen mit \cls{ltx-talk} gesetzt
werden, ohne dass die Lehreinheiten umgeschrieben werden. Targetspezifische
Ausnahmen sind ebenfalls möglich, etwa \cls{beamer} für Folien und
\cls{ltx-talk} für Handouts.}{For each target, the class selects a
\emph{profile}. The profile determines the concrete base class and its adapter.
Thus, \code{slides} can use \cls{beamer} in one project and
\cls{ltx-talk} in another without rewriting the course units. Target-specific
exceptions are possible as well, for example \cls{beamer} for slides and
\cls{ltx-talk} for handouts.}

\ldeen{Die \emph{Basisklasse} ist die eigentliche \LaTeX-Klasse, die den Satz
ausführt, beispielsweise \cls{beamer}, \cls{ltx-talk}, \cls{book} oder
\cls{scrbook}. Ein \emph{Adapter} übersetzt die einheitliche Schnittstelle von
\cls{osglecture} in die Befehle und Konventionen dieser Basisklasse. Dadurch
kann der fachliche Quelltext unabhängig von der gewählten Basisklasse bleiben.}{The
\emph{base class} is the actual \LaTeX\ class that performs the typesetting,
such as \cls{beamer}, \cls{ltx-talk}, \cls{book}, or \cls{scrbook}. An
\emph{adapter} translates the uniform \cls{osglecture} interface into the
commands and conventions of that base class. The subject-matter source can
therefore remain independent of the selected base class.}

\ldeen*{Für Präsentationen wählen Sie das Profil projektweit mit der Option
\option{presentation-profile}, für Langformen mit
\option{longform-profile} in \File{Include/projectconfig.tex}. Soll nur ein
einzelnes Target abweichen, verwenden Sie
:} {Select the project-wide presentation profile with
\option{presentation-profile} and the long-form profile with
\option{longform-profile} in \File{Include/projectconfig.tex}. To override the
profile for just one target, use
:}

\centerline{\cs{LectureTargetSetup}\marg{target}\Marg{profile=\meta{profile}}}

\ldeen*{Im Standalone-Betrieb (siehe Abschnitt~@1) steht dafür die Klassenoption \option{profile} zur
Verfügung.}{In standalone mode (see Section~@1), use the \option{profile} class option instead.}
{\ref{sec:standalone}}
\ldeen{Die Profilwahl betrifft mehr als das Erscheinungsbild. \cls{beamer}
bietet beispielsweise ein großes Ökosystem vorhandener Themes;
\cls{ltx-talk} ist dagegen von Grund auf auf Tagged PDF und damit auf
automatisches Struktur-Tagging ausgelegt. Bei Langformen unterscheiden sich
\cls{book} und \cls{scrbook} unter anderem in ihren Klassenoptionen und
Anpassungsmöglichkeiten. Ein Profilwechsel sollte deshalb durch einen
vollständigen Build der betroffenen Targets geprüft werden.}{Choosing a
profile affects more than appearance. For example, \cls{beamer} provides a
large ecosystem of existing themes, whereas \cls{ltx-talk} is designed around
Tagged PDF and automatic structure tagging. For long forms, \cls{book} and
\cls{scrbook} differ in their class options and customization facilities,
among other things. A profile change should therefore be checked with a full
build of the affected targets.}

\ldeen{Dokumenttypen und Klassen sind daher absichtlich getrennt. Die Trennung
hält Ihre Quellen stabil: Sie entscheiden im Projekt, \emph{wie} Folien gesetzt
werden; in der Lehreinheit schreiben Sie nur, \emph{was} auf Folien und in
Langformen erscheinen soll.}{Document types and classes are therefore
deliberately separate. This separation keeps your sources stable: in the project
you decide \emph{how} slides are typeset; in the course unit you only write
\emph{what} should appear in slides and long forms.}

\begin{description}
  \item[\code{slides}] \ldeen{bildschirmorientierte Präsentation für die
    Lehrveranstaltung}{screen-oriented presentation for teaching};
  \item[\code{handout}] \ldeen{druckorientierte Präsentationsfassung für das
    Publikum}{print-oriented presentation version for the audience};
  \item[\code{screen}] \ldeen{Vortragendenfassung der Folien: Jede Seite ist
    doppelt so breit und zeigt rechts neben der Folie wahlweise die aktuelle
    und die nächste Folie, die mit \cs{Note} notierten Anmerkungen und eine
    Uhr. Bei erweitertem Desktop liegt die linke Hälfte auf dem Projektor}{the
    presenter's version of the slides: every page is twice as wide and shows,
    to the right of the slide, optionally the current and the next slide, the
    remarks recorded with \cs{Note}, and a clock. With an extended desktop the
    left half goes to the projector};
  \item[\code{script}] \ldeen{zusammenhängende Langform, typischerweise als
    Kapitel oder Gesamtskript}{continuous long form, typically a chapter or
    complete set of lecture notes};
  \item[\code{article}] \ldeen{eigenständige Langform, beispielsweise für
    einen Beitrag}{standalone long form, for example a paper}.
\end{description}
\ldeen{Einige Profile unterscheiden sich außerdem darin, ob sie die neue
PDF-Verwaltung von \LaTeX\ benötigen. Insbesondere \cls{ltx-talk} verlangt
einen \cs{DocumentMetadata}-Aufruf, der technisch vor \cs{documentclass}
stehen muss. In einer Serie kann die Unit ihn nicht selbst passend voranstellen,
weil Sprache und Target erst durch den Buildauftrag feststehen. Deshalb gehört
der frühe Aufruf in \File{Include/documentmetadata.tex}}{Some profiles also
differ in whether they require \LaTeX's new PDF management. In particular,
\cls{ltx-talk} requires a \cs{DocumentMetadata} call that technically has to
precede \cs{documentclass}. In a series, the unit cannot place the appropriate
call first itself because language and target are only known from the build
request. The early call therefore belongs in
\File{Include/documentmetadata.tex}}:

\begin{verbatim}
\DocumentMetadata{
  lang=\OsgLectureRequestedLanguage,
  tagging=on
}
\end{verbatim}

\ldeen{Das ist bewusst von sichtbaren Angaben wie \cs{title} und \cs{author}
getrennt: \File{documentmetadata.tex} aktiviert PDF-Infrastruktur, während
\File{projectconfig.tex} den fachlichen und gestalterischen Projektkontext
beschreibt.}{This is deliberately separate from visible information such as
\cs{title} and \cs{author}: \File{documentmetadata.tex} activates PDF
infrastructure, whereas \File{projectconfig.tex} describes the project's
subject-matter and design context.}

\ldeen{Diese Liste ist erweiterbar. Für den Einstieg sollten Sie jedoch die
mitgelieferten Typen verwenden: Sie sind in \OLLM\ registriert und besitzen bereits
passende Profile, Modi und Anwendungsbereiche.}{This list is extensible. When
starting out, however, use the supplied types: they are already registered with
\OLLM\ and have suitable profiles, modes, and scopes.}

\begin{table}[htbp]
  \centering
  \begin{tabular}{llll}
    \textbf{\ldeen{Profil}{Profile}} & \textbf{\ldeen{Basisklasse}{Base class}} &
    \textbf{\ldeen{Dokumenttypen}{Document types}} & \textbf{\ldeen{Kennzeichen}{Characteristics}}\\
    \cls{beamer} & \cls{beamer} & \code{slides}, \code{handout}, \code{screen} &
      \ldeen{große Theme-Auswahl}{large choice of themes}\\
    \cls{ltx-talk} & \cls{ltx-talk} & \code{slides}, \code{handout}, \code{screen} &
      \ldeen{Tagged PDF erforderlich}{Tagged PDF required}\\
    \cls{book} & \cls{book} & \code{script}, \code{article} &
      \ldeen{Standardklasse}{standard class}\\
    \cls{scrbook} & \cls{scrbook} & \code{script}, \code{article} &
      KOMA-Script\\
  \end{tabular}
  \caption{\ldeen{Mitgelieferte Dokumentprofile.}{Document profiles supplied with the bundle.}}
  \label{tab:profiles}
\end{table}

