Как установить размер шрифта для блоков кода в pandoc markdown?
это маленький пример:
An example code snippet:
~~~{.cpp}
class A
{
public:
static void f1 () {};
virtual void f2 () = override;
};
~~~
можно использовать для генерации вывода PDF с помощью:
pandoc -o block-code.pdf block-code.txt
в результате
размер шрифта как кода, так и текста, которые равны. Как изменить размер шрифта фрагментов кода для вывода PDF (LaTex) pandoc?
4 ответов
я решил эту проблему для меня, написав несколько фрагментов LaTeX в дополнительные файлы, которые я держу вокруг:
cat make-code-footnotesize.tex
\renewenvironment{Shaded} {\begin{snugshade}\footnotesize} {\end{snugshade}}
у меня есть такие фрагменты разного формата: huge
, LARGE
, Large
, large
, normalsize
, small
, footnotesize
, scriptsize
, tiny
.
применять их при запуске pandoc
, просто включите соответствующий фрагмент латекса с -H
параметр:
pandoc -o block-code.pdf block-code.txt \
-H make-code-scriptsize.tex --highlight-style=espresso
результат:
Примечание, это управляет размерами шрифта для все блоки кода в формате PDF. Это не позволяет изменять размеры от блока к блоку. Конечно, он также не работает для HTML, ODT, EPUB или другого вывода-только для вывода LaTeX и PDF.
Я разработал фильтр для pandoc https://github.com/chdemko/pandoc-latex-fontsize для этой цели:
установите этот фильтр с pip
:
$ pip install pandoc-latex-fontsize
добавить например
---
pandoc-latex-fontsize:
- classes: [c, listing]
size: footnotesize
---
к Вашему блоку метаданных и укажите списки, которые вы хотите иметь размер footnotesize
:
~~~{.c .listing}
int main(void) {
return 0;
}
~~~
затем запустите pandoc с
$ pandoc --filter pandoc-latex-fontsize ...
вы можете просто добавить \small
перед началом фрагмента кода и \normalsize
после (чтобы вернуться к нормальному состоянию).
вы также можете добавить другие аналогичные команды. Например, если ваш документ doublespaced, вы можете добавить \singlespace
перед фрагментом кода и \doublespacing
после.
для этого вам нужно добавить в yaml в начале вашего документа следующее:
---
header-includes:
- \usepackage{setspace}
---
на pandoc 1.16.0.2 я получил ту же проблему, но не был решен предыдущими ответами.
при использовании подсветки кода по умолчанию этой версии и ее экспорте с помощью beamer (-t beamer
) Я получил следующий сгенерированный вывод (для вывода команды 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}
путем поиска непосредственно в коде pandoc с grep -r "Highlighting" *
я нашел следующий код:
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\{\}}
и Я заменил его следующим, чтобы иметь крошечный размер шрифта в моем пользовательском шаблоне pandoc (см. pandoc -D beamer
):
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\{\},fontsize=\tiny}
теперь у меня есть меньший размер шрифта, выполнив следующую команду:
pandoc -t beamer input.md -o output.pdf --template beamer.template