删除sphinx pdflatex目录顶部的空格

时间:2017-02-18 04:01:00

标签: python latex python-sphinx pdflatex

我正在将我的python包文档构建为HTML和latex PDF。生成的默认乳胶pdf(手动类)在文本“CONTENTS”周围的目录顶部有大量的空白区域。我对乳胶并不是很熟悉,所以当我查看生成的endif文件时,我没有看到任何告诉我如何删除空格的内容。

我四处搜寻,找不到有效的乳胶解决方案。我还尝试将toctree上的.tex设置为空字符串,但这实际上删除了整个TOC和我的所有内容。

任何人都可以帮我吗?

whitespace example

1 个答案:

答案 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中。

fncychapsphinx.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@已经减少了很多(在下面的屏幕截图中不可见)。

enter image description here