如何使用狮身人面像更改LaTeX PDF输出中的代码示例字体大小?

问题描述 投票:9回答:3

我发现sphinx生成的PDF中的默认代码示例字体太大了。

[我试图在生成的.tex文件中动手,在代码块上方插入\tiny之类的字体大小命令,但这只是使代码块上方的行很小,而不是代码块本身。

我不确定该怎么办-我绝对是LaTeX的初学者。

python documentation latex python-sphinx
3个回答
11
投票

我解决了。 Pygments使用\begin{Verbatim}块表示代码段,该代码段使用fancyvrb包。 documentation I found (warning: PDF)提到了逐字块的​​formatcom选项。

Pygments的latex writer source表示实例变量verboptions被装订到每个逐字块的末尾,而Sphinx的latex bridge则可替换LatexFormatter

conf.py文件的顶部,添加了以下内容:

from sphinx.highlighting import PygmentsBridge
from pygments.formatters.latex import LatexFormatter

class CustomLatexFormatter(LatexFormatter):
    def __init__(self, **options):
        super(CustomLatexFormatter, self).__init__(**options)
        self.verboptions = r"formatcom=\footnotesize"

PygmentsBridge.latex_formatter = CustomLatexFormatter

\footnotesize是我的偏爱,但尺寸列表可用here


4
投票

要更改狮身人面像中的乳胶输出选项,请在构建配置文件中设置相关的latex_elements键,有关此文档的文档位于here

要更改所有字体的字体大小,请使用pointsize

例如

latex_elements = {
   'pointsize':'10pt'
}

要更改文档中列出的其他Latex设置,请使用preamble或使用latex_documents中的自定义文档类。

例如

mypreamble='''customlatexstuffgoeshere
'''
latex_elements = {
'papersize':'letterpaper',
'pointsize':'11pt',
'preamble':mypreamble
}

默认情况下,读取Sphinx源代码时,LatexWriter中的代码会将代码段设置为\code乳胶原语。

因此,您要做的是用合适的替换物替换\code

这是通过将诸如\newcommand{\code}[1]{\texttt{\tiny{#1}}}之类的Latex命令作为前导的一部分或作为狮身人面像的自定义文档类的一部分来完成的,该类在latex_documents中被设置为文档类关键字。一个示例狮身人面像文档类可用here

除了使用\tiny使其更小之外,您还可以修改latex_documents文档类或latex_elements序言,以使用Latex软件包清单来实现更精美的代码格式,如StackOverflow问题here

链接文章中的包装材料将作为自定义文档类,并且与\newcommand{\code}[1]{\begin{lstlisting} #1 \end{lstlisting}}相似的重新定义将成为前言的一部分。

或者,您可以编写一个狮身人面像扩展程序,用您选择的自定义乳胶编写器扩展默认的乳胶编写器,尽管这样做会花费更多的精力。

其他有关StackOverflow的问题包括


0
投票

您可以在PREAMBLE中添加修改后的Verbatim命令(请注意,在这种情况下,字体大小更改为微小)

© www.soinside.com 2019 - 2024. All rights reserved.