weidner/archives/2026/02/

Normseiten mit Asciidoctor erzeugen

Wenn ich Texte bearbeite, mache ich das nach wie vor am liebsten durch handschriftliche Anmerkungen an den ausgedruckten Texten. Dafür ist es praktisch, wenn diese Ausdrucke mehr Platz am Rand aufweisen.

Genau solche Seiten erzeugt das LaTeX-Paket stdpage. Vor mehr als 10 Jahren schrieb ich hier, wie ich für meine Artikel auf der Website den in Markdown geschriebenen Text mit dem LaTeX-Paket stdpage in PDF-Normseiten ausgebe, die ich dann ausdrucke und redigiere.

Ähnlich wie meine Artikel habe ich auch die in reStructuredText geschriebenen Kapitel der letzten Bücher mit Pandoc und stdpage als Normseiten-Drafts ausgedruckt und redigiert.

Bei meinem aktuellen Buchprojekt experimentiere ich mit Asciidoctor und möchte natürlich auch dafür die Kapitel als Normseiten ausdrucken und redigieren. Nur kann ich hier leider nicht das LaTeX-Paket einsetzen und muss mir einen anderen Weg suchen.

Nach etwas Recherche in der Dokumentation habe ich mir ein Theme zusammengestellt, dass Seiten erzeugt, die den Normseiten von stdpage recht nahe kommen:

extends: default
page:
  margin: [5cm, 5cm, 5cm, 5cm]
base:
  font-family: M+ 1mn
  line-height: 1.65
heading:
  h1-font-size: $base-font-size
  h2-font-size: $base-font-size
  h3-font-size: $base-font-size
  h4-font-size: $base-font-size
  h5-font-size: $base-font-size
  h6-font-size: $base-font-size

Dieses Theme ist auf A4-Seiten ausgerichtet, es liegt in der Datei themes/draft.yml und wird via make eingebunden, so dass die Draft-Texte automatisch im Verzeichnis build/drafts landen.

build/drafts/%.pdf: ./%.adoc themes/draft.yml
        podman run --rm -v $$(pwd):/documents/ \
        docker.io/asciidoctor/docker-asciidoctor asciidoctor-pdf \
        --theme themes/draft.yml -o $@ $<

Asciidoctor habe ich für das Konvertieren der Texte nicht direkt auf meinem Rechner installiert, sondern verwende einen Docker-Container, der bei mir mit Podman läuft. Das aktuelle Verzeichnis binde ich mit der Option -v als Volume ein, so dass Asciidoctor im Container damit arbeiten kann.

Posted 2026-02-21
Tags: