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

tma*_*ric 11 latex pandoc

这个小例子:

An example code snippet:

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

        virtual void f2 () = override; 
};
~~~
Run Code Online (Sandbox Code Playgroud)

可用于生成PDF输出:

pandoc -o block-code.pdf block-code.txt
Run Code Online (Sandbox Code Playgroud)

导致

代码段和文本的字体大小相等.

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

Kur*_*fle 11

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

 cat make-code-footnotesize.tex

   \renewenvironment{Shaded} {\begin{snugshade}\footnotesize} {\end{snugshade}}
Run Code Online (Sandbox Code Playgroud)

我有这样的片段的所有不同的大小:huge,LARGE, Large,large,normalsize,small,footnotesize,scriptsize,tiny.

要在运行时应用它们pandoc,只需在-H参数中包含相应的LaTeX代码段:

 pandoc -o block-code.pdf block-code.txt \
    -H make-code-scriptsize.tex --highlight-style=espresso
Run Code Online (Sandbox Code Playgroud)

结果:

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

  • 这是要走的路。但它仅适用于具有特殊背景的突出显示样式。在这里看到:https://hackage.haskell.org/package/pandoc-1.9.4/docs/Text-Pandoc-Highlighting.html#v:formatLaTeXBlock 否则你必须省略snugshade环境的开始和结束:\更新环境{阴影} {\footnotesize} {} (2认同)

Vla*_*lad 11

您可以简单地\small在代码片段的开头之前和\normalsize之后添加(以恢复正常)。

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

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

---
header-includes:
    - \usepackage{setspace}
---
Run Code Online (Sandbox Code Playgroud)


Chr*_*mko 6

为此,我为 pandoc https://github.com/chdemko/pandoc-latex-fontsize开发了一个过滤器:

安装此过滤器pip

$ pip install pandoc-latex-fontsize
Run Code Online (Sandbox Code Playgroud)

添加例如

---
pandoc-latex-fontsize:
  - classes: [c, listing]
    size: footnotesize
---
Run Code Online (Sandbox Code Playgroud)

到您的元数据块并指定您想要大小的列表footnotesize

~~~{.c .listing}
int main(void) {
    return 0;
}
~~~
Run Code Online (Sandbox Code Playgroud)

然后运行 ​​pandoc

$ pandoc --filter pandoc-latex-fontsize ...
Run Code Online (Sandbox Code Playgroud)