2014-11-18 13 views
8

ten mały przykład:Jak ustawić rozmiar czcionki dla bloków kodu w przecinku pandoc?

An example code snippet: 

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

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

może być wykorzystywany do generowania sygnału wyjściowego PDF z:

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

powodując

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

rozmiarów czcionek zarówno kodowego a tekst, który jest równy. Jak mogę zmienić rozmiar czcionki fragmentów kodu dla wyjścia pandoc pdf (LaTex)?

Odpowiedz

5

I rozwiązać ten problem dla mnie, pisząc kilka fragmentów LaTeX do dodatkowego plików Trzymam wokół:

cat make-code-footnotesize.tex 

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

mam takie fragmenty wszystkich różnych rozmiarach: huge, LARGE, Large, large, normalsize, small, footnotesize, scriptsize, tiny.

Aby zastosować je przy uruchamianiu pandoc, po prostu zawierać odpowiednie LaTeX snippet z parametrem -H:

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

Wynik:

Note, to kontrole rozmiary czcionek dla wszystkie bloków kodu w pliku PDF. To nie pozwala na różne rozmiary od bloku do bloku. Oczywiście nie działa również w przypadku HTML, ODT, EPUB ani innego wyjścia - tylko dla wyjścia LaTeX i PDF.

+0

Czy 'renewenvironment' zostać dodane do szablonu pandoc Latex? Próbowałem go dodać i po dodaniu '\ usepackage {framed}' pojawia się komunikat o błędzie '! Błąd LaTeXa: Niezdefiniowany kolor 'shadecolor''. – tmaric

+0

@ tmaric: Cieniowane środowisko stanie się aktywne tylko wtedy, gdy użyjesz podświetlania składni. –

+1

Otrzymuję ten sam komunikat "Package xcolor Error: Undefined color 'shadecolor'.", Gdy próbuję stylu, a nie espresso. Udało mi się go zdefiniować, dodając do szablonu "\ colorlet {shadecolor} {white}". – Rovanion

1

Na pandoc 1.16.0.2 Zrobiłem ten sam problem, ale nie został rozwiązany przez poprzednie odpowiedzi.

Przy użyciu kodu domyślnego podświetlanie tej wersji i eksportowania go rzutnik (-t beamer) mam następujące generowane wyjście (do wyprowadzania polecenia JMeter):

\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} 

Przeszukując bezpośrednio w kodzie pandoc z grep -r "Highlighting" * I znaleziono następujący kod:

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

I zastąpił go następujące mieć mały rozmiar czcionki w moim szablonu niestandardowego pandoc (patrz pandoc -D beamer):

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

Teraz mam tinier rozmiaru czcionki, uruchamiając następującą komendę:

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

Mam opracowany filtr dla pandoc https://github.com/chdemko/pandoc-latex-fontsize do tego celu:

zainstalować ten filtr z pip:

$ pip install pandoc-latex-fontsize 

dodać na przykład

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

do bloku metadanych i określić ofert, które mają być wielkości footnotesize:

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

następnie uruchomić pandoc z

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

można po prostu dodać \small przed rozpoczęciem kodu snippet i \normalsize after (aby powrócić do normalnego).

Można również dodać inne podobne polecenia. Na przykład, jeśli dokument jest podwójnie podzielony, możesz dodać \singlespace przed fragmentem kodu i po \doublespacing.

Aby to zadziałało trzeba dodać w YAML na początku dokumentu, co następuje:

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