Metainformationen zur Seite
  •  

Dies ist eine alte Version des Dokuments!


Markdown und Co.

Zur Zeit teste ich, ob der Workflow mit Markdown für mich sinnvoll ist um Texte zu verfassen. Derzeit überwiegt noch der Spieltrieb, aber die Resultate sind schon so, wie ich sie will.

Markdown ist bekanntlich eine vergleichsweise einfache Methode um sofort gut lesbaren strukturierten Text zu schreiben. Ohne Menüs, eine Maus oder Tastatur-Shortcuts zu nutzen kann man Texte mit hierarchischen Überschriften, Fett/Kursivschrift, Tabellen, Zitaten, Fußnoten und Code-Fragmenten schreiben.

Dienste wie z.B. Github zeigen Markdown-Dateien von sich aus als gut aussehendes HTML an. Aber jeder kann selbst Tools einzusetzen, die optisch ansprechende Dokumente in vielen verschiedenen Formaten erzeugen können:

  • Der Markdown Editor (Ghostwriter hilft mir reinen Markdown-Text zu verfassen
  • Ein Konvertierungssoftware (Pandoc erzeugt aus einer Markdown-Datei eine HTML-Datei.
  • Den Ausdruck der HTML-Datei in eine PDF-Datei erledigt der Chromium-Browser oder auch Google-Chrome von der Kommandozeile aus.

Pandoc alleine erzeugt eine korrekte, aber nicht so hübsche HTML-Datei. Aber man kann mit der Kommandozeilenoption -H eine zusätzliche Datei in den Header der HTML-Datei einfügen lassen. Damit ist es einfach viele CSS-Styles einzubinden. Am Ende kann man mit -F eine weitere Datei als eine Art Fußzeile einfügen lassen. Dann gibt es noch den Befehl --toc, der ein Inhaltsverzeichnis generiert, das wiederum erst nach eine Formatierung mit obigen Styles gut aussieht.

Chromium/Chrome kann über die Kommandozeile eine HTML-Datei direkt als PDF-Datei „ausdrucken“. Dabei werden Formatierungsanweisungen der HTML-Datei beachtet, z.B. page-break-before, so dass man Kapitel mit einer neuen Seite anfangen lassen kann. Man kann sogar das Aussehen der PDF-Datei komplett anders gestalten, da dabei @media print { … } beachtet wird.

Wer ein wenig experimentieren möchte: Hier der aktuelle Stand…

  #!/bin/bash
  if [[ "$1" == "" ]]
  then 
      echo "Dateiname.md als Parameter fehlt" 
      exit
  fi
  rumpf="${1%.*}"
  ext="${1##*.}"
  echo $rumpf . $ext
  [[ "$ext" == @(md|txt|markdown) ]] || (printf "Falsche, oder keine Erweiterung!\nMuss md oder txt sein\n"; exit;)
  pandoc -s -o "${rumpf}.html" "${1}" --toc --toc-depth=2 -H ~/Nextcloud/BieC/Privat/biecdoku.css -A ~/Nextcloud/BieC/Privat/biecfooter.txt 
  firefox "${rumpf}.html" &
  chromium --headless --disable-gpu  \
      --run-all-compositor-stages-before-draw --print-to-pdf-no-header --no-margins \
      --print-to-pdf=${rumpf}.pdf ${rumpf}.html