我正在将我的python包文档构建为HTML和latex PDF。生成的默认乳胶pdf(手动类)在文本“CONTENTS”周围的目录顶部有大量的空白区域。我对乳胶并不是很熟悉,所以当我查看生成的endif
文件时,我没有看到任何告诉我如何删除空格的内容。
我四处搜寻,找不到有效的乳胶解决方案。我还尝试将toctree上的.tex
设置为空字符串,但这实际上删除了整个TOC和我的所有内容。
任何人都可以帮我吗?
答案 0 :(得分:1)
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@ }
在日志跟踪中,fncychap
\@makeschapterhead
的{{1}}定义由titlesec
保留在其自己的宏\ttl@save@mkschap
中。
fncychap
在sphinx.sty
之前加载,没有挂钩,
编辑:实际上,默认值为'fncychap'
的{{1}}密钥可用于添加一些代码以重新定义未编号章节标题的'\\usepackage[Bjarne]{fncychap}'
设置。它与下面fncychap
密钥的方法没有什么不同,除了一个人不需要了解'preamble'
干预所有这些。
但是从最近的Sphinx 1.5开始,您可以使用自己的Jinja模板来制作乳胶内容。从您titlesec
这个小的外观来看,我认为你有一个较旧版本的Sphinx,因此我会选择像这样的LaTeX黑客变种:
contents
我在其中添加了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
命令。
但是图像显示内容与TOC内容之间存在一些额外的垂直空间来源(即使\vskip
仍然存在,但可以\vskip 0\p@
...),但我认为你位于内容上方的顶部空间之后,仅使用\vskip -40\p@
已经减少了很多(在下面的屏幕截图中不可见)。