Einführung

Dieses Archiv ist Version 1.0. Es beinhaltet Unterlagen für den Workshop zu "Dokumenten-KungFoo mit Pandoc, Markdown & Co", abgehalten auf der FrOSCon 2015. Eine Version 2.0 werde ich in einigen auf die FrOSCon-Webseite stellen. Diese wird dann noch einige Ergänzungen und Bugfixes enthalten.

Im Unterverzeichnis froscon15-markdown befindet sich der Markdown-Sourcecode zu den beiden Prosa-Beiträgen "Markdown und ne Prise Pandoc" und "Pandoc Power Features" sowie ein Makefile.

Im Unterverzeichnis froscon15-presentation befindet sich der während des Workshops erarbeitete Markdown-Sourcecode zu den Präsentations-Folien zum Thema. Die zugehörigen fertigen Dateien sind in den Unterverzeichnissen beamer und revealjs zu finden.

Makefile

Das Makefile vereinfacht die Generierung verschiedener Ausgabe-Formate aus Markdown-Input. Es erwartet als Datei-Endung für Input-Dateien ".md".

Der Aufruf make showtargets listet, welche Ausgabe-Formate das Makefile ermöglicht:

  Run "make somedoc.format" in order to convert somedoc.mmd,
  where ".format" can be in:

  ==> .html
  ==> .html5
  ==> .plainhtml
  ==> .epub
  ==> .epub3
  ==> .docx
  ==> .odt
  ==> .asciidoc
  ==> .mediawiki
  ==> .dokuwiki
  ==> .rtf
  ==> .pdf
  ==> .defaultpdf
  ==> .fancypdf
  ==> .a5pdf
  ==> .text
  ==> .alldocs (create all supported output formats in one go...)

Angenommen, es liegt eine Markdown-Datei namens "mein-dokument.md" vor. Dann liefert das Kommando make mein-dokument.docx ein DOCX (MS Office Word ab 2003) aus. Es ist keine Word-Installation erforderlich, um DOCX zu erzeugen.

Der Befehl make mein-dokument.a5pdf erzeugt ein PDF-Dokument im A5-Seitenformat. Damit Pandoc das Ausgabe-Format PDF überhaupt erzeugen kann, ist eine allerdings LaTeX-Installation erforderlich. Das Makefile verwendet die LaTeX-Engine LuaLaTeX. Durch Editieren des Makefiles kann man, je nach Vorlieben, auch auf XeLaTeX umschalten. Wer nur eine LaTeX-Mini-Installation hat, muss die Zeilen --latex-engine=lualatex abändern nach --latex-engine=pdflatex. Allerdings kann diese Engine eventuell nicht alle Unicode-Zeichen des Quelltextes verarbeiten, oder nicht alle nicht-Standard-Schriften verwenden.

Der Befehl make mein-dokument.fancypdf erzeugt ein PDF mit Schriften, die nicht unbedingt "Standard" sind. Es handelt sich um die FOSS-Schriften-Familie Source Sans Pro von Adobe. Wer diese Schriften nicht installiert hat, der wird dieses Makefile-Target nicht verwenden können.

Der Befehl make mein-dokument.tex erzeugt eine LaTeX-Datei. Es ist keine LaTeX-Installation erforderlich, um LaTeX zu erzeugen.

Um einen Eindruck davon zu vermitteln, wie die entsprechenden Dokumente aussehen, beinhaltet dieses Archiv die fertigen Ergebnisse aller erzeugten Formate in den entsprechenden Unterverzeichnissen.

Noch ein Hinweis: Ich rate dazu, eine aktuelle Pandoc-Version 1.15.0.6 zu verwenden. Man kann sie via "Cabal" installieren, das Paket-Management-Tool für Haskell-Software. Cabal-Installationen gehen nach ${HOME}/.cabal/bin/ -- verursachen also keine Konflikte mit dem lokalen System-Paket-Manager, und erfordern keine Root-Rechte.

Man benötigt jedoch eine Erst-Installation von cabal über den System-Paket-Manager.

  sudo apt-get install cabal-install      # Installation des Debian-Pakets `cabal-install` (evtl. alte Version)
  cabal update                            # Cabal soll sich die neuesten Paket-Listen besorgen
  cabal install cabal-install             # Cabal installiert seine eigene neueste Versin nach `${HOME}/.cabal/`
  export PATH=${HOME/.cabal/bin:${PATH}   # Pfad aktualisieren
  cabal update                            # Das neuere Cabal soll ebenfalls die neuesten Paketlisten kennen
  cabal install pandoc pandoc-citeproc pandoc-csv2table   # Kann dauern....

RevealJS installieren

Wer selbst mit RevealJS-Präsentationen spielen möchte, kann sich die aktuelle Version des Codes von GitHub holen, und per Symlink in das Markdown-Verzeichnis aktivieren. Bei mir persönlich sah das so aus:

  mkdir ${HOME}/svn-stuff                                                 # neues Verzeichnis anlegen
  cd ${HOME}/svn-stuff                                                    # ins neue Verzeichnis gehen
  git clone https://github.com/hakimel/reveal.js.git git.revealjs.master  # RevealJS holen
  cd ${somdir}/froscon15-presentation                                     # ins Verzeichnis des ausgepackten Tarballs wechseln
  ln -s ${HOME}/svn-stuff/git.revealjs.master reveal.js                   # Symlink anlegen

Version 1.1 dieses Archivs wird ein zusätzliches Makefile für die Erzeugung von Präsentations-Formaten (Beamer, RevealJS, S5, Slidy, Slideous, DZSlides, ImpressJS) enthalten.

Für den Moment gibt's erstmal nur die Pandoc-Kommandozeile

  pandoc                        \
    --to=revealjs               \
    --from=markdown             \
    --output=meine-folien.html  \
    --standalone                \
    --self-contained            \
    --highlight-style=espresso  \
      folien-input.md

Hier sorgt der Parameter --self-contained dafür, dass die HTML nicht mehr auf externe Resourcen zugreifen muss, sondern alle Bilder, Java-Scripts, CSS-Dateien und Spezial-Fonts als data:-URIs einbettet...

Beamer-PDF-Folien erzeugt man wie folgt (LaTeX-Installation erforderlich):

  pandoc                                    \
    --chapters                              \
    --slide-level=2                         \
    --to=beamer                             \
    --from=markdown                         \
    --output=meine-folien.pdf               \
    --highlight-style=espresso              \
    --variable theme=Warsaw                 \
    --variable colortheme=whale             \
    --variable fontsize=11pt                \
    --filter pandoc-citeproc                \
    --filter pandoc-csv2table               \
     -H ../resources/beamerposter.tex       \
     -H ../resources/make-shaded-tiny.tex   \
      folien-input.md

Viel Spaß beim weiteren Herum-Experimentieren mit Pandoc, Markdown, Makefile & Co.

                  Siegburg, 23. August 2015
                  Kurt Pfeifle