Präprozessor

C. Bienmüller

2025-08-10

Der Präprozessor liest jede Markdowndatei zuerst ein und gibt eine mehr oder weniger veränderte Version an pandoc weiter. Dabei werden entweder Quelltexte verarbeitet oder weitere Dokumentenfragmente hinzugefügt.

Inkludieren von weiterem Markdown

mit m²_include_after kann man weitere Dateien hinten anhängen lassen. Bei diesen werden die YAML-Blöcke ignoriert, so dass auch keine Rekursion möglich ist.
Verwendung z.B. für Kolloquiumsprüfungen mit individueller Titelseite und einer angehängten Auswahl von Aufgaben-Dateien.

Sourcetexte

Quelltexte werden schon von pandoc in eigenen Divs untergebracht. Der Präprozessor fügt diesen aber noch die Beschriftung, um welche Art Quelltext es sich handelt hinzu.

Ausführung

Viele Quellcodes können “ausgeführt” werden.
Bei Python und Java dürfte die Bedeutung klar sein.
Aber auch Markdown und HTML kann zwecks Darstellung “ausgeführt” werden.

Dies wird immer mit der Klasse .execute in der Definition des Quellcode-DIVs erreicht.

So sieht ein Beispiel in der Markdowndatei aus:

```{.python .execute}
a=5
print(">"+a+"<")
```

Die folgenden zwei Kästen werden dann in der HTML-Datei auftauchen:

a=5
print(">", a**2, "<")
> 25 <

Mermaid

Der einzige Quelltext, der immer “ausgeführt”, dafür aber nie ausgegeben wird, ist der für Mermaid-Diagramme. Er wird auch von pandoc einfach durchgereicht.
Die Diagramme werden erst im Browser über den vom Präprozessor zusätzlich eingefügten JS-Code dargestellt:

```mermaid
flowchart LR
    A((a)) -----> |langer Pfeil| B
```
flowchart LR
    A((a)) -----> |langer Pfeil| B

LaTex-Formeln

werden nicht vom Präprozessor behandelt. Darum kümmert sich pandoc, dem mitgeteilt wird, dass es MathJax verwenden soll. Dies wird dann bei Bedarf eingebunden.

$e=m \cdot c^2$

\(e=m \cdot c^2\)