Pandoc


Dokumente konvertieren

Pandoc ist ein universeller Dokumentenkonverter, der sich besonders für die Übersetzung von Markdown-Dokumenten in andere Zielformate eignet.
Pandoc kann mit reveal.js und Markdown tolle HTML-Präsentationen erstellen.
Ebenso lassen sich in Markdown verfasste Texte mit Pandoc sehr einfach in ein E-Book umwandeln.

Installation

  1. Pandoc herunterladen und installieren.
  2. PDF-Export:
    Linux: sudo apt-get install texlive-latex-base texlive-generic-recommended texlive-latex-recommended texlive-lang-german texlive-xetex texlive-fonts-recommended lmodern
    Windows: MiKTeX installieren.
  3. Präsentationen: reveal.js herunterladen und entpacken. Den entpackten Ordner in reveal.js umbenennen. Dieser Ordner muss sich im Verzeichnis der Präsentation befinden.

Pandoc-Beispiele

Pandoc wird über die Kommandozeile aufgerufen. Hier ein paar Beispiele:

  • pandoc -o ausgabe.odt eingabe.md (Markdown → ODT)
  • pandoc --reference-doc=vorlage.odt -o ausgabe.odt eingabe.md (Markdown → ODT, mit Vorlage-Datei)
  • pandoc -o ausgabe.pdf eingabe.md (Markdown → PDF)
  • pandoc -s -5 -o ausgabe.html eingabe.md (Markdown → HTML5)
  • pandoc -f html -o webseite.odt http://baireuther.de (HTML → ODT)
  • pandoc -f html -o ausgabe.md webseite.html (Webseite → Markdown)
  • pandoc --epub-cover-image bild.png -o ausgabe.epub eingabe.md (Markdown→ epub)
  • pandoc -t beamer -o ausgabe.pdf eingabe.md (einfache PDF-Präsentation)
  • pandoc *.md > markdown_book.html (mehrere Markdown-Dateien in eine Webseite umwandeln)

Schalter

  • -o → Output (Ausgabedatei)
  • -s → Standalone (Header und Footer werden erzeugt)
  • --template template → Vorlage übergeben, z.B. --template=vorlage.odt für OpenDocument
  • --toc → ein Inhaltsverzeichnis wird erzeugt
  • --toc-depth=NUMBER → Tiefe des Inhaltsverzeichnisses
  • --number-sections : aktiviert die Nummerierung vor den jeweiligen Überschriften (1., 1.1, 1.2 usw.)
  • -V lang=de-DE → deutsche Sprache
  • -V papersize=a4paper : Seitengröße ist A4-Papier
  • -V geometry:margin=2cm : 2cm Seitenrand überall
  • --pdf-engine=xelatex : für das Einden von Systemschriftarten ist diese LaTeX-Engine nötig
  • -V fontsize=12pt : Schriftgröße
  • -V breakurl : lange URLs korrekt umbrechen
  • -V hyphens=URL : URLs korrekt trennen

Eine ausführliche Dokumentation aller Befehle gibt es hier.

Formeln

Formeln können in LaTeX-Code geschrieben werden und müssen zwischen zwei Dollar-Zeichen gesetzt werden.

Templates

Pandoc nutzt standardmäßig die Vorlagen in ~/.pandoc/templates.

Metadaten

Mittels eines YAML-Metadaten-Blocks kann man diverse Einträge setzen:

---
title: Titel
subtitle: Untertitel
author: Vorname Name
date: 12.05.2018
lang: de-DE
abstract: Dieser Beitrag ...
...

“großer Header”:

---
# Infos
title: Titel
subtitle: Untertitel
author: Vorname Name
date: 12.05.2018
abstract: Dieser Beitrag ...
numbersections: true
lang: de-DE 

# Format
fontsize: 12pt
linestretch: 1.5
mainfont: "Ubuntu"
sansfont: "Roboto Condensed"
monofont: "Ubuntu Mono"
mathfont:
geometry: a4paper, left=25mm, right=20mm, top=20mm, bottom=20mm

# Bibliography
csl: style.csl # Styles: https://www.zotero.org/styles 
bibliography: references.bib # Formate: https://github.com/jgm/pandoc-citeproc/blob/master/man/pandoc-citeproc.1.md 
suppress-bibliography: false
link-citations: true
color-links: true 
linkcolor: black
urlcolor: black
citecolor: black
endnote: false

# Verzeichnisse
toc: true # Inhaltsverzeichnis
toc_depth: 2 # Verzeichnistiefe
lof: true # Abbildungsverzeichnis
lot: true # Tabellenverzeichnis
block-headings: true # Verzeichnisebenen > 3 erlauben
...

Alternativ zu den Verzeichniseinträgen können kann im Anschluss an den YAML-Header folgende LaTeX-Steuerzeichen verwendet werden:

\pagenumbering{gobble}
\maketitle 
\pagebreak 
\pagenumbering{Roman}
\tableofcontents 
\pagebreak 
\listoffigures
\pagebreak 
\pagenumbering{arabic}
\setcounter{page}{3}

Die Umwandlung erfolgt dann durch:
pandoc input.md --pdf-engine=xelatex -o output.pdf

Briefe mit Pandoc

  1. Download der Vorlage und entpacken.
  2. Die Datei letter.latex nach ~/.pandoc/templates kopieren
  3. Im Ordner example befindet sich ein Beispielbrief (letter.md).
  4. Konvertierung des Briefes mit pandoc letter.md -s -o letter.pdf --template="letter"

Präsentationen

Pandoc kann mittels S5, DZSlides, Slidy, Slideous, oder reveal.js Präsentationen erzeugen. Hier am Beispiel von reveal.js:

Vorbereitung

reveal.js herunterladen und entpacken. Den entpackten Order “reveal.js-master” in “reveal.js” umbenennen. Die Präsentation muss sich im gleichen Verzeichnis wie der Ordner reveal.js befinden.

Text schreiben

Der Text wird in Markdown geschrieben und als praesentation.md abgespeichert.

Steuerzeichen

Drei Punkte, getrennt durch Leerzeichen, kennzeichnen eine Pause.
Der folgende Inhalt wird erst nach einem Tastendruck angezeigt: . . .

Notizen

Notizen werden mit “s” angezeigt und folgendermaßen eingegeben:

<div class="notes">
Meine Anmerkung
</div>

Videos & Bilder

Alles, was sich nicht direkt mit Markdown schreiben lässt, kann einfach per HTML eingebunden werden. So z.B. Videos über iframe oder den HTML5-Video-Befehl .

  • Youtube: <iframe width="854" height="480" src="https://www.youtube.com/embed/yrRPLBYiiEc" frameborder="0" allowfullscreen></iframe>

  • mp4-Video: <video src="film.mp4" width=320 height=240 controls>

  • Bilder in einer bestimmten Größe: ![Bildname](bild.jpg){#id .class width=400 height=400px}

Konvertieren

Der Text praesentation.md wird mit Pandoc in eine HTML-Präsentation konvertiert:

pandoc -i --section-divs -V revealjs-url:./reveal.js -V theme=sky -V transition=convex -t revealjs -s -o revealtest.html testfolie.md 

oder man schreibt am Anfang des Dokuments einen YAML-Metadaten-Block:

---
title: "Titel"
author: Autor
date: April 08, 2017
theme: sky
transition: convex 
revealjs-url: ./reveal.js 
---

Dann wird so konvertiert:

pandoc -i --section-divs -t revealjs -s -o revealtest.html testfolie.md 
  • Themes: beige, black, blood, league, moon, night, serif, simple, sky, solarized, white
  • Übergangseffekte (transition): none, fade, slide, convex, concave, zoom

Theme-Anpassungen

Die Themes liegen in reveal.sj/css/theme. Diese können einfach angepasst werden.

Oder man legt im Verzeichnis der Präsentationsdatei (praesentation.md) eine neue css-Datei (meinstyle.css) mit folgendem Inhalt an:

@import url('http://fonts.googleapis.com/css?family=Quicksand');
@import url('http://fonts.googleapis.com/css?family=Oswald');

.reveal {
    font-size: 32px;
    font-family: 'Oswald', 'sans-serif'; }

.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {
    font-family: 'Quicksand', 'sans-serif';
    font-weight:normal;
    text-transform: none;
    text-shadow: none; }

.reveal h1 { font-size: 2em; }
.reveal h2 { font-size: 1.7em; }
.reveal h3 { font-size: 1.4em; }
.reveal h4 { font-size: 1em; }

Diese wird dann mit dem zusätzlichen Schalter -css meinstyle.css übergeben.

Ein Logo im Hintergrund fügt man mit diesem Quelltext in der meinstyle.css-Datei ein:

body {
    background-image: url(logo.png);
    background-repeat: no-repeat;
    background-position:20px 20px;
    # oder auch background-position: right  top;
}

Präsentieren

  • o - Übersicht
  • f - Vollbildmodus
  • b - schwarzer Bildschirm
  • s - Notizen anzeigen
  • Leertaste/Shift-Leertaste - Navigation
  • Pfeiltasten - Navigation

Schalter

  • -s standalone (eigenständiges Dokument)
  • -i incremental (bei Aufzählungen werden die einzelnen Punkte nacheinander angezeigt)

Markdown → Powerpoint

Mit pandoc -o ausgabe.pptx eingabe.md kann die Präsentation auch in eine Powerpoint-Datei umgewandelt werden.

E-Books

% Buchtitel
% Autor
% Erscheinungsdatum

Titelbild

  • Format 3:4 oder 2:3
  • Breite: 500-1000 Pixel
  • jpg- oder png-Format

Konvertieren

pandoc kap1.md kap2.md kap3.md -t epub3 --toc --epub-cover-image bild.jpg -o ausgabe.epub

Metadaten

In die Datei metadata.xml schreibt man folgenden Inhalt:

<dc:rights>Copyright 2018 Autor</dc:rights>
<dc:description>Beschreibung</dc:description>
<dc:language>de</dc:language>
<dc:publisher>Verlag</dc:publisher>
<dc:identifier id="ISBN"> <dc:identifier>

Konvertieren mit Metadaten

pandoc kap1.md kap2.md kap3.md -t epub3 --toc --epub-metadata metadata.xml --epub-cover-image bild.jpg -o ausgabe.epub

Layout

Das Layout lässt sich über eine CSS-Datei beeinflussen.

Textausrichtung

body, p {
text-align: left;
}

Schriftart

@font-face {
font-family: SourceSansPro;
font-style: normal;
font-weight: normal;
src:url("SourceSansPro.ttf");
}

body {
font-family: "SourceSansPro";
}

Konvertieren unter Einbindung der Schrift:

pandoc kap1.md kap2.md kap3.md -t epub3 --toc --epub-metadata metadata.xml --epub-cover-image bild.jpg --css ebook.css--epub-embed-font SourceSansPro.ttf -o ausgabe.epub

aktualisiert am 30. 9. 2020