Latex ist kompliziert und wirft wilde Fehlermeldungen, die kein Mensch versteht und keiner verstehen will. Die erstellten Formeln sind allerdings unschlagbar schön und erstaunlicherweise relativ komfortabel und eingängig zu erstellen.
Markdown hingegen ist sehr simpel, aber es fehlt die Möglichkeit Formeln einzubinden.
Glücklicherweise kann man Markdown und Latex kombinieren und zwar mit: Pandoc.
Dazu muss zunächst Pandoc aus den Ubuntu-Quellen installiert werden:
apt install pandoc
Jetzt kann man einfach sein Markdown-Dokument verfassen und über den bekannten $-Operator in den math-mode von Latex wechseln.
Hier ein Beispiel:
## Datenunabhängige Klassifikationsregel: Wir ordnen jeder neuen Beobachtung die Klasse $A_k$ zu, was die folgenden Fehlklassfikationskosten ergibt: $C_k = \pi_1 \cdot c(1,k) + \dots + \pi_G \cdot c(G,k)$ Eine Bayes-Regel wählt diejenige Klasse mit den kleinsten Kosten aus.
Über den Befehl: pandoc -o test.pdf test.md
macht Pandoc folgendes PDF aus dem Code: Klick.
Das Dokument konfigurieren
Nun sieht das PDF noch etwas unschön aus, jedenfalls ist für meinen Geschmack der Rand zu breit. Die „geometry“ Latex-Parameter und einige andere kann man über einen YAML-Block am Anfang des Dokuments festlegen:
--- geometry: margin=2.5cm author: - name: Stefan Hesse ---
Er fängt mit — und endet auch mit — . Eine Liste der Latex-Variablen die so eingestellt werden können findet man hier: http://pandoc.org/MANUAL.html#variables-for-latex
Wenn man seine eigenen Latex-Packages integrieren möchte, muss das entsprechende Template angepasst werden. Das aktuelle Template von den Entwicklern gibt es hier: https://github.com/jgm/pandoc-templates/blob/master/default.latex. Dieses lädt man herunter und speichert es. Jetzt muss man die passende Stelle finden, um die Befehle zu integrieren. Ich füge meine „\usepackages{}“ ab Zeile 19 ein, allerdings gilt hier: Wenn es funktioniert, dann wird es schon richtig sein. Die Devise lautet also: Einfach ausprobieren, man sollte nur aufpassen, dass man sein Package nicht in einem der if-Blöcke rein legt, da der ggfs. nicht ausgeführt wird.
Der Befehl um das Template zu verwenden sieht dann so aus: pandoc --template=/pfad/zum/templdate/my.latex -o test.pdf test.md
.
Hilfe zu Latex-Befehlen findet man hier: latex-zeichen.de.
Editor integration
Es wäre noch schön das ganze in einen Editor einzubinden. Ich bearbeite die Dateien aktuell mit gedit und dort hat man die Möglichkeit über „STRG + F8“ ein makefile auszuführen. Ich verwende folgendes:
# Produce PDFs from all Markdown files in a directory # Lincoln Mullen | http://lincolnmullen.com | lincoln@lincolnmullen.com # List files to be made by finding all *.md files and appending .pdf PDFS := $(patsubst %.md,%.md.pdf,$(wildcard *.md)) # The all rule makes all the PDF files listed all : $(PDFS) # This generic rule accepts PDF targets with corresponding Markdown # source, and makes them using pandoc %.md.pdf : %.md pandoc --template=/home/stefan/.pandoc/my.latex $< -o $@ # Remove all PDF outputs clean : rm $(PDFS) # Remove all PDF outputs then build them again rebuild : clean all
Wie man sieht habe ich das File von Lincoln Mullen geklaut, die einzige Modifikation besteht aus dem Hinzufügen des Template-Parameters. Anstatt über gedit zu maken, kann man auch über das Terminal "make" ausführen.
Nachtrag: Wenn man viele Dokumente in einem Ordner hat, dann fängt das Makefile durchaus an zu nerven, da es immer auch die anderen Dokument neu baut. In gedit kann man unter Tools > Manage External Tools
ganz leicht eigene kleine Skripte hinzufügen, für pandoc habe ich folgendes erstellt:
#!/bin/bash DOC=$GEDIT_CURRENT_DOCUMENT_PATH pandoc --template=/home/stefan/.pandoc/my.latex $GEDIT_CURRENT_DOCUMENT_PATH -o $GEDIT_CURRENT_DOCUMENT_PATH.pdf
Wenn man nun noch unter „Save“ – „Current Document“ einstellt, dann hat man die gleiche Funktionalität wie über das Makefile.
Pandoc kann natürlich noch viel mehr, das Manual ist sehr aufschlussreich: http://pandoc.org/MANUAL.html
Dank geht raus an: http://kesdev.com/you-got-latex-in-my-markdown/