Apples Office-Programme verwende ich selten. Pages wird vereinzelt geöffnet, wenn ein “richtiger” Brief geschrieben werden muss. Ich speichere anschließend die Pages-Datei und ein PDF in DevonThink ab. Die Pages-Dateien sind für Linux aber nutzlos. Zeit somit, eine Alternative zu nutzen, die kein proprietäres Format enthält.
Der Ursprung soll, wie üblich, eine Markdown-Datei sein, also reiner Text, aus dem ein PDF generiert wird, ohne Verwendung der “üblichen” Tools wie LibreOffice oder OnlyOffice. Die Konvertierung soll zudem ohne Kommandozeile erfolgen, sondern über den Dateimanager ausgelöst werden können.
Einrichtung unter macOS#
Basis-Software#
Voraussetzung: Bereits installiertes Homebrew ↗.
brew install pandocshellbrew install --cask basictexshellecho 'export PATH="/Library/TeX/texbin:$PATH"' >> ~/.zshrcshellsource ~/.zshrcshellsudo tlmgr update --selfshellsudo tlmgr install koma-script babel hyphen-german libertinus-fonts tex-gyreshellcurl https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/letter.latex --create-dirs -o ~/.pandoc/templates/letter.latexshellcurl https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/examples/minimal/letter.md -o ~/Downloads/letter.mdshellTest#
pandoc letter.md -o brief.pdf --template="letter"shellDies erzeugt aus der letter.md einen Brief im PDF-Format.

Die relevanten Daten stehen als Frontmatter am Beginn der Markdown-Datei, gefolgt von dem eigentlichen Text darunter:
---
backaddress: Erika Musterfrau, Musterstraße 1, 12345 Musterstadt
fromname: Erika Musterfrau
fromaddress: |
Musterstraße 1
12345 Musterstadt
place: Musterstadt
to: |
Musterfirma GmbH
Max Mustermann
Musterstraße 2
12345 Musterstadt
date: 01.01.2023
subject: Musterbrief
signature: Erika Musterfrau
...
Nostrud ullamco do elit ullamco. Tempor culpa id minim eiusmod labore in fugiat anim anim cupidatat est. Ipsum culpa in labore ea minim nisi amet. Fugiat aute duis non ut aliqua ex. Irure id nulla amet do nostrud commodo ea aliqua non eu.
Do duis voluptate occaecat mollit laborum ad id proident culpa sit. Fugiat labore qui magna occaecat ex amet nisi ipsum eiusmod commodo minim. Ea culpa voluptate est laborum in culpa.
Esse incididunt consequat Lorem nostrud ea enim cupidatat occaecat. Commodo ut fugiat magna nulla. Id consectetur minim laborum id laboris quis amet. Veniam ipsum id culpa eiusmod id deserunt laboris cupidatat quis duis dolor sit. Do culpa veniam laboris aute ipsum in.markdownEinrichtung als Quick-Action für den Finder#
Ziel: Aus dem Kontextmenü des Finders eine Markdown-Datei in einen Brief umwandeln können.
- Automator öffnen → „Neues Dokument” → „Quick Action” wählen
- Oben im Workflow einstellen:
- „Workflow erhält aktuelle” → Dateien oder Ordner
- „in” → Finder
- Bild:
documents(optional, für schönes Icon)
- Links in der Aktionsbibliothek: „Shell-Skript ausführen” per Doppelklick hinzufügen
- Einstellungen der Aktion:
- Shell:
/bin/zsh - Eingabe übergeben: „als Argumente”
- Shell:
- Den Inhalt des
.sh-Scripts vollständig in das Textfeld einfügen (Skript siehe unten) - Sichern (
⌘S) → Name:MD→PDF (Pandoc)→ wird automatisch in~/Library/Services/abgelegt
Ergebnis: Bei Rechtsklick auf eine .md-Datei im Finder erscheinen die Einträge unter „Quick Actions” direkt im Kontextmenü.
Das zu verwendende .sh-Skript:
#!/usr/bin/env bash
# ─────────────────────────────────────────────────────────────────────────────
# MD→PDF via Pandoc + KOMA-Script/scrlttr2 (macOS)
# Verwendung: Als Automator-Quick-Action eingebunden (siehe README)
#
# Voraussetzungen installieren:
# brew install pandoc
# brew install --cask mactex-no-gui # vollständig, ~4 GB
# # ODER schlanker:
# brew install --cask basictex # ~100 MB, dann noch:
# sudo tlmgr update --self
# sudo tlmgr install koma-script babel hyphen-german \
# libertinus-fonts tex-gyre
#
# Template-Pfad: ~/.config/pandoc/din5008.tex
# ─────────────────────────────────────────────────────────────────────────────
# Desktop-Benachrichtigung via osascript
notify() {
local TITLE="$1"
local MSG="$2"
osascript -e "display notification \"$MSG\" with title \"$TITLE\""
}
# PATH um Homebrew und TeX ergänzen (in Automator oft unvollständig)
export PATH="/opt/homebrew/bin:/usr/local/bin:/Library/TeX/texbin:$PATH"
TEMPLATE="$HOME/.pandoc/templates/letter.latex"
# ── Abhängigkeiten prüfen ─────────────────────────────────────────────────────
for CMD in pandoc pdflatex; do
if ! command -v "$CMD" &>/dev/null; then
notify "MD→PDF (Pandoc)" \
"'$CMD' nicht gefunden. Siehe Kommentar im Script für Installation."
exit 1
fi
done
if [[ ! -f "$TEMPLATE" ]]; then
notify "MD→PDF (Pandoc)" \
"Template nicht gefunden: ~/.config/pandoc/din5008.tex"
exit 1
fi
# ── Jede markierte Datei verarbeiten ─────────────────────────────────────────
for INPUT_FILE in "$@"; do
case "$(echo "$INPUT_FILE" | tr '[:upper:]' '[:lower:]')" in
*.md) ;;
*)
notify "MD→PDF (Pandoc)" \
"Übersprungen (kein Markdown): $(basename "$INPUT_FILE")"
continue
;;
esac
BASENAME="$(basename "$INPUT_FILE" .md)"
OUTDIR="$(dirname "$INPUT_FILE")"
OUTPUT="$OUTDIR/$BASENAME.pdf"
# LaTeX-Hilfsdateien in temporärem Verzeichnis erzeugen
TMPDIR="$(mktemp -d)"
TMPOUT="$TMPDIR/$BASENAME.pdf"
pandoc "$INPUT_FILE" \
--template="$TEMPLATE" \
--pdf-engine=pdflatex \
-o "$TMPOUT" 2>"$TMPDIR/pandoc.log"
if [[ -f "$TMPOUT" ]]; then
mv "$TMPOUT" "$OUTPUT"
notify "MD→PDF (Pandoc+scrlttr2)" "✓ Erstellt: $BASENAME.pdf"
# Optional: PDF direkt öffnen – Zeile einkommentieren wenn gewünscht
# open "$OUTPUT"
else
LOG="$(tail -3 "$TMPDIR/pandoc.log" 2>/dev/null)"
notify "MD→PDF (Pandoc+scrlttr2)" \
"✗ Fehler bei: $(basename "$INPUT_FILE") — $LOG"
fi
rm -rf "$TMPDIR"
done
shellEinrichtung unter Linux (Ubuntu/Gnome)#
Basis-Software#
sudo apt install curl pandoc texlive-latex-recommended texlive-lang-german texlive-fonts-recommendedshellcurl https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/letter.latex --create-dirs -o ~/.pandoc/templates/letter.latexshellcurl https://raw.githubusercontent.com/benedictdudel/pandoc-letter-din5008/master/examples/minimal/letter.md -o ~/Downloads/letter.mdshellTest#
pandoc ~/Downloads/letter.md --template="letter" --pdf-engine=pdflatex -o ~/Downloads/letter.pdfshell
Einbindung in Nautilus-Dateimanager#
Ziel: Aus dem Kontextmenü von Nautilus eine Markdown-Datei in einen Brief umwandeln können.
Das folgende komplett im Terminal einfügen und ausführen:
# Script-Datei erstellen
cat > ~/.local/share/nautilus/scripts/"MD→PDF (Pandoc+scrlttr2)" << 'EOF'
#!/usr/bin/env bash
TEMPLATE="$HOME/.pandoc/templates/letter.latex"
for CMD in pandoc pdflatex; do
if ! command -v "$CMD" &>/dev/null; then
notify-send --urgency=critical "MD→PDF (Pandoc)" \
"'$CMD' wurde nicht gefunden."
exit 1
fi
done
if [[ ! -f "$TEMPLATE" ]]; then
notify-send --urgency=critical "MD→PDF (Pandoc)" \
"Template nicht gefunden: $TEMPLATE"
exit 1
fi
for INPUT_FILE in "$@"; do
case "$(echo "$INPUT_FILE" | tr '[:upper:]' '[:lower:]')" in
*.md) ;;
*)
notify-send "MD→PDF (Pandoc)" \
"Übersprungen: $(basename "$INPUT_FILE")"
continue
;;
esac
BASENAME="$(basename "$INPUT_FILE" .md)"
OUTDIR="$(dirname "$INPUT_FILE")"
OUTPUT="$OUTDIR/$BASENAME.pdf"
TMPDIR="$(mktemp -d)"
TMPOUT="$TMPDIR/$BASENAME.pdf"
pandoc "$INPUT_FILE" \
--template="letter" \
--pdf-engine=pdflatex \
-o "$TMPOUT" 2>"$TMPDIR/pandoc.log"
if [[ -f "$TMPOUT" ]]; then
mv "$TMPOUT" "$OUTPUT"
notify-send --urgency=low "MD→PDF (Pandoc)" \
"✓ Erstellt: $BASENAME.pdf"
else
LOG="$(tail -3 "$TMPDIR/pandoc.log" 2>/dev/null)"
notify-send --urgency=critical "MD→PDF (Pandoc)" \
"✗ Fehler: $(basename "$INPUT_FILE") — $LOG"
fi
rm -rf "$TMPDIR"
done
EOF
# Ausführbar machen
chmod +x ~/.local/share/nautilus/scripts/"MD→PDF (Pandoc+scrlttr2)"
# Nautilus neu starten
nautilus -q && nautilus &shellDas Ergebnis:

Zusätzlich können die Briefvorlagen in ~/Templates abgelegt werden. Nautilus verwendet dort abgelegte Dateien als Vorlagen, sodass per Kontextmenü direkt im Dateimanager neue Briefe erzeugt werden können, was mich ein ganz kleines bisschen an die Schablonen von OS/2 erinnert.
