如何在pandoc markdown中设置代码块的字体大小?

时间:2014-11-18 18:02:26

标签: latex 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.

代码和文本的字体大小相等。如何更改pdf(LaTex)pandoc输出的代码片段的字体大小?

5 个答案:

答案 0 :(得分:4)

我通过将几个LaTeX片段写入我保留的额外文件中来解决这个问题:

 cat make-code-footnotesize.tex

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

我有适用于所有不同尺寸的代码段:hugeLARGELargelargenormalsizesmall,{{ 1}},footnotesizescriptsize

要在运行tiny时应用它们,只需添加带有pandoc参数的相应LaTeX代码段:

-H

<强>结果:

注意 ,它控制PDF中所有代码块的字体大小。它不允许您在块与块之间改变大小。当然,它也不适用于HTML,ODT,EPUB或其他输出 - 仅适用于LaTeX和PDF输出。

答案 1 :(得分:4)

您只需在代码段开头之前添加\small,然后在\normalsize之后添加(以恢复正常)。

您还可以添加其他类似的命令。例如,如果您的文档是双倍空格,则可以在代码段之前添加\singlespace,之后添加\doublespacing

为此,您需要在文档开头的yaml中添加以下内容:

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

答案 2 :(得分:2)

为此,我为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 ...

答案 3 :(得分:1)

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

通过使用grep -r "Highlighting" *在pandoc代码中直接搜索,我找到了以下代码:

\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

答案 4 :(得分:1)

我将pandoc与--listings选项和自定义eisvogel.latex模板一起使用。

  • 将原始eisvogel-template下载到新文件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

使用docker-image dalibo/pandocker:stable在pandoc 2.6上进行了测试