Как установить размер шрифта для блоков кода в уценке pandoc?
этот небольшой пример:
An example code snippet:
~~~{.cpp}
class A
{
public:
static void f1 () {};
virtual void f2 () = override;
};
~~~
может использоваться для генерации вывода PDF с помощью:
pandoc -o block-code.pdf block-code.txt
в результате чего
![Font sizes of the code snippet and the text are equal.]()
Размер шрифта как кода, так и текста, равного. Как изменить размер шрифта фрагментов кода для вывода pandoc pdf (LaTex)?
Ответы
Ответ 1
Я решил эту проблему для меня, написав несколько фрагментов LaTeX в дополнительные файлы, которые я сохраняю:
cat make-code-footnotesize.tex
\renewenvironment{Shaded} {\begin{snugshade}\footnotesize} {\end{snugshade}}
У меня есть такие фрагменты для всех разных размеров: huge
, LARGE
, LARGE
, LARGE
, normalsize
, small
, footnotesize
, scriptsize
, tiny
.
Чтобы применить их при запуске pandoc
, просто включите соответствующий фрагмент LaTeX с параметром -H
:
pandoc -o block-code.pdf block-code.txt \
-H make-code-scriptsize.tex --highlight-style=espresso
Результат:
![2ihIr.png]()
Примечание, это управляет размерами шрифтов для всех блоков кода в PDF. Он не позволяет изменять размеры от блока до блока. Конечно, он также не работает для HTML, ODT, EPUB или другого выхода - только для выхода LaTeX и PDF.
Ответ 2
Вы можете просто добавить \small
до начала фрагмента кода и \normalsize
после (для возврата в нормальное состояние).
Вы также можете добавить другие подобные команды. Например, если ваш документ дублируется, вы можете добавить \singlespace
до фрагмента кода и \doublespacing
после.
Для этого вам нужно добавить в yaml в начале вашего документа следующее:
---
header-includes:
- \usepackage{setspace}
---
Ответ 3
Я разработал для этой цели фильтр для 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 ...
Ответ 4
В pandoc 1.16.0.2 У меня была такая же проблема, но она не была решена предыдущими ответами.
При использовании выделения кода по умолчанию для этой версии и ее экспорта с помощью луча (-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
Ответ 5
Я использую pandoc с опцией --listings
и пользовательским шаблоном eisvogel.latex
.
- Загрузите оригинальный eisvogel-шаблон в новый файл
eisvogel_custom.latex
- Откройте файл, найдите строку
basicstyle = \color{listing-text-color}\small\ttfamily{}\linespread{1.15},
- Измените
\small
на \footnotesize
или \tiny
- Сохранить файл
Теперь запустите pandoc со следующими параметрами:
pandoc --pdf-engine=xelatex --template=eisvogel_custom --listings -o block-code.pdf block-code.txt
Чтобы отключить нумерацию строк, добавьте следующие строки вверху block-code.txt
---
listings-disable-line-numbers: true
...
Все варианты можно найти здесь: https://github.com/Wandmalfarbe/pandoc-latex-template#custom-template-variables
Протестировано с pandoc 2.6 с использованием docker-image dalibo/pandocker: стабильный