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 eindrucksvolle HTML-Präsentationen erstellen.

Ebenso lassen sich in Markdown verfasste Texte mit Pandoc sehr einfach in ein E-Book umwandeln.

Installation

Die Installation von Pandoc erfolgt am besten über die bereitgestellten Pakete.

  1. Pandoc: http://pandoc.org herunterladen und installieren.
  2. Pakete für PDF-Export: sudo apt-get install texlive-latex-base texlive-generic-recommended texlive-fonts-recommended lmodern evtl. noch texlive-fonts-extra (Linux) oder unter Windows MiKTeX installieren.
  3. für 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 -o ausgabe.odt eingabe.md (Markdown → ODT)
  • pandoc --reference-odt=vorlage.odt -o ausgabe.odt eingabe.md (Markdown → ODT, mit Vorlage-Datei)
  • pandoc -o ausgabe.pdf eingabe.md (Markdown → PDF)
  • pandoc -o ausgabe.rtf eingabe.md (Markdown → RTF)
  • 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 -V geometry:margin=0.5in -o ausgabe.pdf eingabe.md (Markdown → PDF, mit verkleinerten Rändern)
  • pandoc --epub-cover-image bild.png -o ausgabe.epub eingabe.md (Markdown→ epub)
  • pandoc --epub-stylesheet vorlage.css -o ausgabe.epub eingabe.md (eBook unter Beachtung einer CSS-Style-Vorlage erstellen)
  • pandoc -t beamer -o ausgabe.pdf eingabe.md (einfache PDF-Präsentation)
  • pandoc *.md > markdown_book.html (mehrere Markdown-Dateien in eine Webseite umwandeln)
  • pandoc -D odt > template.odt (OpenDocument-Template auslesen)
  • pandoc -D latex > template.latex (LaTex-Template auslesen)

Aus einem Markdown-Dokument ein PDF-Dokument erstellen, unter Anwendung eines OpenDocument-Vorlagendokuments:

  1. pandoc --reference-odt=vorlage.odt -o ausgabe.odt eingabe.md
  2. unoconv -o ausgabe.pdf ausgabe.odt

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
  • -V lang=ngerman → deutsche Sprache

Eine ausführliche Dokumentation aller Befehle gibt es hier.

Formeln

Formeln können in LaTeX 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:

% Titel
% Autor
% Jahr
---
subtitle: Untertitel
email: adresse@anbieter.de
publishers: Abteilung
lang: german
abstract: |
Dieser Beitrag ...
...

LaTeX-Steuerkommandos

\maketitle (Titel erstellen)
\tableofcontents (Inhaltsverzeichnis)
\pagebreak (Seitenumbruch)

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:

Vorbereitungen

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 einen 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 & mehr

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>

Konvertieren

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

pandoc -i --section-divs -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 
---

Dann wird so konvertiert:

pandoc -i --section-divs -t revealjs -s -o revealtest.html testfolie.md 

Als Theme stehen zur Verfügung:

  • beige
  • black
  • blood
  • league
  • moon
  • night
  • serif
  • simple
  • sky
  • solarized
  • white

Als Übergangseffekte (transition) stehen zur Verfügung:

  • 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)

Parameter

Parameter, die mittels -V (oder im YAML-Metadaten-Block) übergeben werden können: Konfigurations-Parameter von reveal.js

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 --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 --epub-cover-image bild.jpg --epub-stylesheet ebook.css--epub-embed-font SourceSansPro.ttf -o ausgabe.epub

Links

aktualisiert am 2. 10. 2017