Sphinx 英语语言的默认行为是使用 Bjarne 选项将 LaTeX 包 fncychap 用于章节标题。但它也加载包titlesec 用于一般的标题标题。它没有使用titlesec 进行特殊的章节定义,它只是收集fncychap 定义并将其包装在自己的钩子中。无论如何,让我们发现故事简短
\ttl@save@mkschap #1->\vspace *{50\p@ }{\parindent \z@ \raggedright \normalfont \interlinepenalty \@M \DOTIS {#1} \vskip 40\p@ }
在日志跟踪中,这是\@makeschapterhead 的fncychap 定义,由titlesec 在其自己的宏\ttl@save@mkschap 中保留。
fncychap在sphinx.sty之前加载,没有钩子,
编辑:事实上,默认值为'\\usepackage[Bjarne]{fncychap}' 的'fncychap' 键可以用来添加一些代码来重新定义未编号章节标题的fncychap 设置。这与下面使用'preamble' 键的方法没有什么不同,只是不需要知道titlesec 干预所有这些。
但是从最近的 Sphinx 1.5 开始,您可以使用自己的 Jinja 模板来处理乳胶内容。从您的 contents 看起来很小,我认为您使用的是旧版本的 Sphinx,因此我将选择 LaTeX 黑客变体,如下所示:
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
'preamble': r"""
\makeatletter
\def\ttl@save@mkschap #1{\vspace *{10\p@ }{\parindent \z@ \raggedright
\color{blue}%
\normalfont \interlinepenalty \@M \DOTIS {#1} \vskip 10\p@ }}
\makeatother
""",
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
我在其中添加了一个\color{blue} 仅用于演示目的,并修改了您需要的\vspace 和\vskip 命令。
然而,图像显示,在 Contents 和 TOC 内容之间存在一些额外的垂直空间来源(即使使用 \vskip 0\p@,它仍然存在,但可以做到 \vskip -40\p@ ...),但我认为你在顶部之后内容上方的空间并且已经只使用了\vspace*{10pt} 减少了很多(在下面的屏幕截图中不可见)。