Python 如何使用Sphinx更改LaTeX PDF输出中的代码示例字体大小?

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文档中的自定义文档类 例如 默认

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

我尝试过在生成的.tex文件中插入字体大小命令,如代码块上方的
\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编写器,尽管这要花费大量精力

其他相关问题包括


我算出来了。Pygments使用
\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]%
}