我发现sphinx生成的PDF中的默认代码示例字体太大了。
我已经尝试在生成的.tex文件中插入代码块上方的\tiny
等字体大小命令,但它只是使代码块上方的行变得很小,而不是代码块本身。
我不知道还能做什么 - 我是LaTeX的初学者。
答案 0 :(得分:10)
我解决了这个问题。 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
答案 1 :(得分:4)
要在sphinx中更改Latex输出选项,请在构建配置文件中设置相关的latex_elements
键,其中的文档位于here。
要更改所有字体的字体大小,请使用pointsize
。
E.g。
latex_elements = {
'pointsize':'10pt'
}
要更改文档中列出的其他Latex设置,请使用preamble
或使用latex_documents
中的自定义文档类。
E.g。
mypreamble='''customlatexstuffgoeshere
'''
latex_elements = {
'papersize':'letterpaper',
'pointsize':'11pt',
'preamble':mypreamble
}
默认情况下,读取Sphinx源代码时,LatexWriter中的代码会将代码片段设置为\code
latex原语。
所以你要做的就是用合适的替代品替换\code
。
这是通过将\newcommand{\code}[1]{\texttt{\tiny{#1}}}
之类的Latex命令作为前导码的一部分或作为sphinx的自定义文档类的一部分来完成的,该文档类在latex_documents
中设置为文档类键。一个示例sphinx文档类是可用的here。
除了使用\tiny
缩小它之外,您可以修改latex_documents
文档类或latex_elements
前导码以使用Latex包列表来获得更多花哨的代码格式,例如StackOverflow问题here
链接帖子中的包裹内容将作为自定义文档类,类似于\newcommand{\code}[1]{\begin{lstlisting} #1 \end{lstlisting}}
的重新定义将成为序言的一部分。
或者,您可以编写一个sphinx扩展,使用您选择的自定义乳胶编写器扩展默认的乳胶编写器,但这需要更多的努力。
其他相关的StackOverflow问题包括
答案 2 :(得分:0)
您可以在PREAMBLE中添加修改后的Verbatim命令(注意,在这种情况下,字体大小会变为微小)
\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]%
}