Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Howto zu pandoc und knitr
Formatierung in markdown
Überschriften
# Überschriftebene 1 ## Überschriftebene 2 ### Überschriftebene 3
Schrifttype ändern
Manchmal möchte man Dinge hervorheben. Dies kann ebenfalls in Markdown vorgenommen werden.
**fett**, `monospace`, _kursiv_, __fettunterstreichen__, \*so wird ein * erzeugt
Ausgabe:
- fett,
 monospace,- kursiv,
 - fettunterrichen,
 - * so wird ein * erzeugt
 
Tabellen
Eine Tabelle lässt sich wie folgt darstellen. Dabei sind die Breiten der kurzen Striche entscheidend für die Spalten. Die Ausrichtung innerhalb der Zellen lässt sich durch einrücken (zentriert) oder ganz links (ohne Space! linksbündig) oder ganz rechts (ohne Space! rechtsbündig) herstellen. Die Zeilen der Tabelle trennt man durch Leerzeilen von einander. So können Texte über mehrere Zeilen fließen.
-----------------------------------------------------------------------------
Code  SIP           HTTP          Request/Response  Klasse / Erläuterung
----- ------------- ------------- ----------------- -------------------------
100   Trying        Continue      Response          Informational         
180   Ringing                     Response          Informational         
200   OK            OK            Response          Success               
401   Unauthorized  Unauthorized  Response          Client-Error          
404   Not Found     Not Found     Response          Client-Error          
      
      SUBSCRIBE                   Request           Presence Management   
      NOTIFY                                 Presence Management   
-----------------------------------------------------------------------------
Bilder

Variablen
Variablen können im yaml-Format angegeben werden und im Dokumentenkopf eingebunden werden.
Diese lassen sich dann z.B. in einem Latex-Template verwenden.
--- titlename: 'VoIP-Vertiefung' filename: 'W02-VoIP 02 SIP Vertiefung' username: 'Name: ________________' classname: 'Klasse: ________' docdate: 'Datum: ________' ---
Fußnoten
Fußnoten lassen sich Inline (also direkt hinter dem Begriff) wie folgt bilden:
SIP^[SIP: Session Initiation Protocol; Signalierungsprotokoll ähnlich aufgebaut wie HTTP-Standard]
Dies würde im Text wie folgt aussehen, wobei die Fußnoten automatisch durchnummeriert werden und jeweils im unteren Bereich der Seite, auf der sie eingefügt wurden angezeigt werden.
Beispiel: SIP1)
Aufzählungen
Aufzählungen können mit * am Zeilenanfang dargestellt werden.
* Standard: IETF RFC 2543 * Protokoll ist ähnlich wie HTTP/SMTP aufgebaut (s. Fehler/Statuscodes)
So würde dies im Text aussehen:
- Standard: IETF RFC 2543
 - Protokoll ist ähnlich wie HTTP/SMTP aufgebaut (s. Fehler/Statuscodes)
 
Latex-Template
Die Kopf-/Fusszeilen habe ich über das Latex-Template in Zusammenhang mit den oben erläuterten Variabeln gesteuert.
\usepackage{fancyhdr} %Paket laden
%\pagestyle{plain} %nur Seitenzahl in der Fußzeile (LaTeX-Standard)
\pagestyle{fancy} %eigener Seitenstil
\fancyhf{} %alle Kopf- und Fußzeilenfelder bereinigen
\fancyhead[L]{{$username$}  \\{$titlename$}} %Kopfzeile links
\fancyhead[C]{{$classname$}\\Werner-von-Siemens-Schule} %zentrierte Kopfzeile
\fancyhead[R]{{$docdate$} \\Arbeitsblatt} %Kopfzeile rechts
\renewcommand{\headrulewidth}{0.4pt} %obere Trennlinie
\fancyfoot[L]{\today} %Seitennummer
\fancyfoot[C]{\thepage} %Seitennummer
\fancyfoot[R]{{$filename$}}
\renewcommand{\footrulewidth}{0.4pt} %untere Trennlinie
Um die Überschriften etwas kompakter zu gestalten habe ich folgende Latex-Zeilen in die Template-Datei eingefügt.
\usepackage{titlesec}
\titlespacing\section{0pt}{12pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
\titlespacing\subsection{0pt}{12pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
\titlespacing\subsubsection{0pt}{12pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
knitr - Der kleine Helfer
Tool zu Vereinfachung der Ausgabe kann folgendes Tool verwendet werden. http://yihui.name/knitr/demo/pandoc/ Damit man es nutzen kann wird die Programmiersprache R benötigt.
sudo apt-get install r-base
Die Command-Line von R erreicht man durch eintippen von R in die Shell.
Nun muss in R noch das Modul knitr installiert werden.
install.packages('knitr', dependencies = TRUE)
Sollte es dabei zu Fehlern kommen, dann kann mit folgendem Befehl evtl. Abhilfe geschaffen werden.
update.packages()
Damit knitr weiss, welches Template und welcher Converter verwendet werden soll, kann man dies entweder in einer eigenen Datei angeben oder direkt in die Markdown-Datei schreiben.
Hier ein Beispiel für die zweite Variante, die den Vorteil von wenigen Dateien hat.
<!--pandoc t: latex latex-engine: xelatex s: number-sections: template: default.latex output: "W02-VoIP 02 Vertiefung.pdf" t: odt s: number-sections: template: default.odt output: "W02-VoIP 02 Vertiefung.odt" -->
Die Parameter hinter t: werden für den format Parameter des knitr Aufrufs verwendet. Alle anderen Zeilen stellen jeweils einen Parameter dar, der normalerweise hinter pandoc in der Kommandozeile getippt wird.
Um nun ein Dokument zu konvertieren können folgende Befehle verwendet werden.
library(knitr)
pandoc('W02-VoIP 02 Vertiefung.md', format='latex')
Als Ergebnis wird nun dieser Befehl ausgeführt:
pandoc 'W02-VoIP 02 Vertiefung.md' -s --number-sections --latex-engine=xelatex --template=default.latex -o 'W02-VoIP 02 Vertiefung.pdf'
Es ist einleuchtend, dass der kleine Umweg über knitr viel Schreibarbeit auf der Konsole spart. Zumal man die R-Umgebung bei verlassen speichern kann und damit die History der R-Befehle erhalten bleiben.
Um R wieder verlassen zu können muss man folgendes Command eingeben:
q()
IDE für markdown mit knitr Support: https://www.rstudio.com/products/rstudio/download/
Template für ein Arbeitsblatt
Das Rstudio ist sehr komfortabel, allerdings möchte man nicht bei jedem neuen Dokument alles erneut einstellen. Daher helfen ein paar kleine Eingriffe, um schnell neue Dokumente generieren zu können. Rstudio unterstützt Templates. Diese liegen unter Ubuntu in folgendem Ordner:
/usr/local/lib/R/site-library/rmarkdown/rmarkdown/templates
Dort befindet sich pro Template ein Ordner.
Der Ordnet besteht aus folgender Struktur
template_name
    resources -> z.B. css-Dateien für HTML-Output
    skeleton -> hier liegen alle Dateien, die für ein neues Dokument benötigt werden
    template.yaml -> Name und Beschreibung des Templates für Rstudio
Ich habe mir ein Satz zusammengestellt, um meine Arbeitsblätter zu generieren. Diese sind sicherlich nicht perfekt, aber für den Anfang ausreichend.
Arbeitsblatt_template
Das Archive enthält die Ordnerstruktur, die in den templates-Ordner von R als root kopiert werden muss. 
Danach steht die neue Vorlage im Rstudio zur Verfügung.
knitr und pandoc automatisch in Rstudio laden
Da ich es als lästig empfinde die hauptsächlich eingesetzten Bibliotheken immer wieder neu laden zu müssen, habe ich nach einer Lösung gesucht, um diese während des Starts von R gleich mit zu laden. Da Rstudio die Standard R-Umgebung als Konsole anbietet, schlägt man gleich zwei Fliegen mit einer Klappe.
Die Lösung ist denkbar simpel. R lädt u.a. eine Datei .Rprofile, die im Hauptordner des Users liegen muss. Dort kann man häufig benötigte Bibliotheken einbinden. 
Unter Linux:
/home/USERNAME/
Unter Windows:
C:\Users\USERNAME\Documents\
In der folgende Beispieldatei wird knitr geladen, so dass der pandoc-Befehl unter R direkt ausgeführt werden kann.
- .Rprofile
 library(knitr)
pandoc/latex/knitr unter Windows
Folgende Tools werden benötigt bzw. damit geht es am schnellsten.
- R-Programmiersprache (https://cran.r-project.org/bin/windows/base/)
 - MikTex (http://miktex.org/2.9/setup)
 
Die Reihenfolge ist sinnvoll, damit keine Fehlermeldungen entstehen. Über das RStudio können weitere Pakete für MikTex bzw. R nachgeladen werden.
