2016-07-23 18 views
0

Ich habe große Schwierigkeiten, Variablen in meine Vorlage zu bekommen. Ich habe eine LaTeX-Vorlage, und ich möchte Markdown-Dateien für den Inhalt verwenden. Das Endergebnis sollte ein PDF sein.Kann Pandoc Variablen aus Metadata.yaml in importierten Markdown-Dateien verwenden?

metadata.yaml:

--- 
varnameone: 'large heading' 
varnametwo: 'baz' 
varnamethree: 
- threeone: textone 
- threetwo: texttwo 
--- 

template.tex:

\documentclass[12t, A4]{extarticle} 
\usepackage{Styles.sty} 

\begin{document} 

\import{chapters/}{chapter1.md} % MD-file probably not possible. So how? 
\import{chapters/}{chapter2.md} 
\import{chapters/}{chapter3.md} 

\end{document} 

chapter1.md:

# This is a $varnameone$ 

Lorem ipsum foo bar. 

## Subheading 
Lorem ipsum foo bar with a $varnametwo$ and more. 

\if[varnametwo == 'baz'] 
Lorem ipsum foo bar with a $varnamethree.threetwo$ and more. 
\endif 

Jade-style indentation would be even simpler: 
if varnametwo == 'baz' 
    Lorem ipsum foo bar with a $varnamethree.threetwo$ and more. 

Hier ist das Ding: Ich ziehe Markdown-Dateien für den Inhalt haben , da sie am einfachsten zu bearbeiten sind (von nicht so technischen Leuten). Und ich weiß, dass Pandoc sie versteht, aber wie bekomme ich diese Variablen in ihnen? Ist das überhaupt möglich?

Ich möchte am Ende sogar einen Server haben, um Dateien mit verschiedenen Metadaten-Dateien, oder wenn möglich, mit einem JSON-Array anstelle einer YAML-Datei zu erzeugen. Weiß jemand, ob das auch möglich ist?

Antwort

1

Pandoc-Variablen können nur in pandoc templates verwendet werden, nicht das Dokument selbst. Dafür sollten Sie eine preprocessor like gpp oder andere Scripting/Templating-Lösungen ausprobieren.

Ähnlich haben Pandoc Vorlagen eine $body$ Variable, wo der Dokumententext platziert wird. Sie rendern ein Dokument mit einer Vorlage, nicht umgekehrt (wie Sie es mit \import{chapters/}{chapter1.md} versucht haben, was ein LaTeX-Befehl ist und daher nicht zum Importieren von Abschriften verwendet wird). Unter Mac/Linux können Sie jedoch: pandoc -o foo.pdf chapter*.md ausführen, um alle Markdown-Dateien zu verketten, bevor Sie sie an Pandoc übergeben.

+0

Danke! Ich werde das überprüfen. Aber könnte ich theoretisch das aktuelle Setup verwenden und das gesamte Dokument in die Vorlagendatei schreiben (ohne Markdown zu verwenden)? – Magnifix

+0

meinst du: könntest du stattdessen LaTeX benutzen? Ähm ... sicher ...? – mb21

+0

Ja, das würde ich gerne wissen. Überspringen der 'Vorlage' und direktes Schreiben der Variablen in das Dokument. – Magnifix