我正在将python软件包文档构建为HTML和乳胶PDF。生成的默认乳胶pdf(手册类)在目录“ CONTENTS”周围的顶部具有大量空白。我对乳胶不是很熟悉,因此当我查看生成的.tex
文件时,看不到任何告诉我如何删除空格的内容。
我四处搜寻,找不到有效的乳胶解决方案。我还尝试将toctree上的:caption:
设置为空字符串,但这实际上删除了整个TOC和我的所有内容。
谁能帮我这个?
最佳答案
Sphinx对于英语的默认行为是将LaTeX软件包fncychap
的Bjarne选项用作章节标题。但是,它还会加载包titlesec
用于一般而言的标题。它没有对titlesec
进行特殊的章节定义,而只是将fncychap
定义收集并包装在自己的钩子中。无论如何,使故事简短,我们发现
\ttl@save@mkschap #1->\vspace *{50\p@ }{\parindent \z@ \raggedright \normalfont \interlinepenalty \@M \DOTIS {#1} \vskip 40\p@ }
在日志跟踪中,这是
fncychap
的\@makeschapterhead
定义,由titlesec
保留在其自己的宏\ttl@save@mkschap
中。fncychap
在sphinx.sty
之前加载,没有钩子,编辑:实际上,默认值为
'fncychap'
的'\\usepackage[Bjarne]{fncychap}'
键可用于添加一些代码以重新定义未编号章节标题的fncychap
设置。它与下面的使用'preamble'
键的方法没有什么不同,除了不需要了解所有这方面的titlesec
干预。但是从最近的Sphinx 1.5开始,您可以使用自己的Jinja模板来获取乳胶内容。从
contents
的外观来看,我认为您的Sphinx版本较旧,因此我将选择LaTeX hacking变体,如下所示: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
命令。但是该图像显示目录和TOC内容之间有一些额外的垂直空间来源(即使使用
\vskip 0\p@
仍然可以,但可以执行\vskip -40\p@
...),但是我认为您位于目录上方的顶部空间之后并且仅使用\vspace*{10pt}
减少了很多(在下面的屏幕快照中不可见)。