我发现Sphinx生成的PDF中默认的代码示例字体太大了。
我尝试在生成的.tex文件中插入字体大小命令,例如在代码块上方插入\tiny
,但这只会使代码块上面的一行变得非常小,而不是代码块本身。
我不确定还有什么其他办法 - 我对LaTeX毫无经验。
我发现Sphinx生成的PDF中默认的代码示例字体太大了。
我尝试在生成的.tex文件中插入字体大小命令,例如在代码块上方插入\tiny
,但这只会使代码块上面的一行变得非常小,而不是代码块本身。
我不确定还有什么其他办法 - 我对LaTeX毫无经验。
我解决了。Pygments使用\begin{Verbatim}
块来表示代码片段,它使用fancyvrb
包。我找到的文档(警告:PDF)提到verbatim块的formatcom
选项。
Pygments的latex writer源码表明,一个实例变量verboptions
被钉在每个verbatim块的末尾,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
latex_elements
键。关于此的文档可以在这里找到。pointsize
。latex_elements = {
'pointsize':'10pt'
}
如果需要修改文档中列出的其他Latex设置,请使用preamble
或在latex_documents
中使用自定义文档类。
例如:
mypreamble='''customlatexstuffgoeshere
'''
latex_elements = {
'papersize':'letterpaper',
'pointsize':'11pt',
'preamble':mypreamble
}
\code
LaTeX原语。您需要做的是用适当的替换来替换\code
。\newcommand{\code}[1]{\texttt{\tiny{#1}}}
的Latex命令来完成,该命令可以作为导言部分的一部分或作为sphinx的自定义文档类的一部分,在latex_documents
中设置为documentclass键。示例sphinx文档类在此处可用。\tiny
使其更小之外,您还可以修改latex_documents
文档类或latex_elements
导言部分,以使用Latex软件包列表进行更高级的代码格式设置,例如StackOverflow问题here中的设置。\newcommand{\code}[1]{\begin{lstlisting} #1 \end{lstlisting}}
类似的重新定义将成为导言部分的一部分。\renewcommand{\Verbatim}[1][1]{%
% list starts new par, but we don't want it to be set apart vertically
\bgroup\parskip=0pt%
\smallskip%
% The list environement is needed to control perfectly the vertical
% space.
\list{}{%
\setlength\parskip{0pt}%
\setlength\itemsep{0ex}%
\setlength\topsep{0ex}%
\setlength\partopsep{0pt}%
\setlength\leftmargin{10pt}%
}%
\item\MakeFramed {\FrameRestore}%
\tiny % <---------------- To be changed!
\OriginalVerbatim[#1]%
}