Python 如何使用Sphinx更改LaTeX PDF输出中的代码示例字体大小?
我发现Sphinx生成的PDF中的默认代码示例字体太大了 我尝试过在生成的.tex文件中插入字体大小命令,如代码块上方的Python 如何使用Sphinx更改LaTeX PDF输出中的代码示例字体大小?,python,pdf,latex,python-sphinx,Python,Pdf,Latex,Python Sphinx,我发现Sphinx生成的PDF中的默认代码示例字体太大了 我尝试过在生成的.tex文件中插入字体大小命令,如代码块上方的\tiny,但这只会使代码块上方的行变小,而不是代码块本身 我不知道还能做什么-我是LaTeX的绝对初学者。要更改sphinx中的LaTeX输出选项,请在构建配置文件中设置相关的LaTeX\u元素键,相关文档位于此处 要更改所有字体的字体大小,请使用pointsize 例如 要更改文档站点中列出的其他Latex设置,请使用序言或使用Latex\u文档中的自定义文档类 例如 默认
\tiny
,但这只会使代码块上方的行变小,而不是代码块本身
我不知道还能做什么-我是LaTeX的绝对初学者。要更改sphinx中的LaTeX输出选项,请在构建配置文件中设置相关的
LaTeX\u元素
键,相关文档位于此处
要更改所有字体的字体大小,请使用pointsize
例如
要更改文档站点中列出的其他Latex设置,请使用序言
或使用Latex\u文档
中的自定义文档类
例如
默认情况下,读取Sphinx源代码中的代码会将代码段设置为\code
latex原语
因此,您要做的是用合适的替换件替换\code
这是通过将类似于\newcommand{\code}[1]{\texttt{\tiny{1}}}
的Latex命令作为序言的一部分或作为sphinx自定义文档类的一部分来实现的,该类在Latex_文档
中设置为documentclass键。sphinx文档类示例可用
除了使用\tiny
使其变小之外,您还可以修改latex_文档
文档类或latex_元素
序言,以使用latex包列表获得更奇特的代码格式,如StackOverflow问题
链接文章中的包内容将作为一个自定义文档类,类似于\newcommand{\code}[1]{\begin{lstlisting}{1\end{lstlisting}
的重新定义将作为序言的一部分
或者,您可以编写一个sphinx扩展,使用您选择的自定义latex编写器扩展默认latex编写器,尽管这要花费大量精力
其他相关问题包括
\begin{Verbatim}
块来表示代码段,它使用fancyvrb
包。提到了逐字记录块的formatcom
选项
Pygments'表示一个实例变量,verbyoptions
,被钉在每个verbatim块的末尾,Sphinx'允许您替换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
是我的首选,但是有一个大小列表可用您可以在序言中添加一个修改过的逐字命令(注意,在这种情况下,字体大小更改为微小)
\renewcommand{\Verbatim}[1][1]{%
%LIST启动新的PAR,但我们不希望它垂直设置。
\b组\parskip=0pt%
\小跳跃%
%需要列表环境来完美地控制垂直方向
%空间。
\列表{}{%
\setlength\parskip{0pt}%
\setlength\itemsep{0ex}%
\setlength\topsep{0ex}%
\setlength\partopsep{0pt}%
\setlength\leftmargin{10pt}%
}%
\item\MakeFramed{\FrameRestore}%
\极小%可用字体大小为
mypreamble='''customlatexstuffgoeshere
'''
latex_elements = {
'papersize':'letterpaper',
'pointsize':'11pt',
'preamble':mypreamble
}
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
\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]%
}