2014-11-18 13 views
8

dieses kleine Beispiel:Wie wird die Schriftgröße für Codeblöcke in Pandoc Markdown festgelegt?

pandoc -o block-code.pdf block-code.txt 

in

Font sizes of the code snippet and the text are equal.

Die Schriftgrößen sowohl der Code resultierenden und die:

An example code snippet: 

~~~{.cpp} 
class A 
{ 
    public: 
     static void f1() {}; 

     virtual void f2() = override; 
}; 
~~~ 

können eine PDF-Ausgabe zu erzeugen mit verwendet werden Text, die gleich sind. Wie kann ich die Schriftgröße der Code-Snippets für die PDF (LaTex) -Pandoc-Ausgabe ändern?

Antwort

5

ich dieses Problem für mich gelöst, indem mehrere LaTeX-Schnipsel in die Verlängerung Schreiben von Dateien Ich halte um:

cat make-code-footnotesize.tex 

    \renewenvironment{Shaded} {\begin{snugshade}\footnotesize} {\end{snugshade}} 

Ich habe solche Schnipsel für alle verschiedenen Größen: huge, LARGE, Large, large, normalsize, small, footnotesize, scriptsize, tiny.

sie anwenden zu können, wenn pandoc ausgeführt wird, sind nur die jeweiligen LaTeX-Snippet mit dem -H Parameter:

pandoc -o block-code.pdf block-code.txt \ 
    -H make-code-scriptsize.tex --highlight-style=espresso 

Ergebnis:

Hinweis, diese Kontrollen die Schriftgrößen für alle Codeblöcke im PDF. Sie können die Größen nicht von Block zu Block variieren. Natürlich funktioniert es auch nicht für HTML, ODT, EPUB oder andere Ausgabe - nur für LaTeX und PDF-Ausgabe.

+0

Kann die 'renewenvironment' hinzugefügt werden, um eine pandoc Latex-Vorlage? Ich habe versucht, es hinzuzufügen, und nach dem Hinzufügen von '\ usepackage {framed}' bekomme ich eine Fehlermeldung '! LaTeX Error: Undefinierte Farbe 'shadecolor''. – tmaric

+0

@tmaric: Die schattierte Umgebung wird nur aktiv, wenn Sie die Syntaxhervorhebung verwenden. –

+1

Ich bekomme die gleiche 'Package xcolor Error: Undefinierte Farbe 'shadecolor'.Wenn ich einen Stil nicht Espresso versuche. Ich konnte es definieren, indem ich '\ colorlet {shadecolor} {white}' zu meiner Vorlage hinzufüge. – Rovanion

1

Auf pandoc 1.16.0.2 habe ich das gleiche Problem, wurde aber nicht durch vorherige Antworten gelöst.

Wenn Standard-Code-Hervorhebung dieser Version verwenden und es mit Beamer Export (-t beamer) Ich habe Ausgabe erzeugt folgenden (für einen jmeter Befehl ausgibt):

\begin{Shaded} 
\begin{Highlighting}[] 
\KeywordTok{./jmeter.sh} \NormalTok{-q prod.properties -p jmeter.properties -n -t mytest.jmx -l mylog.log} 
\end{Highlighting} 
\end{Shaded} 

Durch direkt im pandoc Code mit grep -r "Highlighting" * mir gesucht folgender Code gefunden:

\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} 

Und ich ersetzen sie durch die folgenden eine kleine Schriftgröße in meiner benutzerdefinierten pandoc Vorlage (siehe pandoc -D beamer):

\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\},fontsize=\tiny} 

Jetzt habe ich eine winzige Schriftgröße durch den folgenden Befehl ausführen:

pandoc -t beamer input.md -o output.pdf --template beamer.template 
1

I https://github.com/chdemko/pandoc-latex-fontsize zu diesem Zweck einen Filter für pandoc entwickelt habe:

Installieren Sie diese Filter mit pip:

$ pip install pandoc-latex-fontsize 

zum Beispiel hinzufügen

--- 
pandoc-latex-fontsize: 
    - classes: [c, listing] 
    size: footnotesize 
--- 

zu Ihrem Metadatenblock und geben Sie die Objekte Sie von Größe sein wollen footnotesize:

~~~{.c .listing} 
int main(void) { 
    return 0; 
} 
~~~ 

dann laufen pandoc mit

$ pandoc --filter pandoc-latex-fontsize ... 
0

Sie einfach \small vor Beginn des Codes hinzufügen Schnipsel und \normalsize nach (um wieder normal zu werden).

Sie können auch andere ähnliche Befehle hinzufügen. Zum Beispiel, wenn Ihr Dokument Doublespaced ist, können Sie \singlespace vor dem Code-Snippet und \doublespacing nach hinzufügen.

Damit dies funktioniert, Sie in der yaml am Anfang des Dokuments folgendes hinzufügen müssen:

--- 
header-includes: 
    - \usepackage{setspace} 
--- 
Verwandte Themen