Python 删除sphinx pdflatex目录顶部的空白

Python 删除sphinx pdflatex目录顶部的空白,python,latex,python-sphinx,pdflatex,Python,Latex,Python Sphinx,Pdflatex,我正在将python包文档构建为HTML和latex PDF。默认生成的latex pdf(手动类)在目录顶部的文本“contents”周围有大量空白。我对latex不太熟悉,所以当我查看生成的.tex文件时,我看不到任何东西告诉我如何删除空白 我四处寻找,找不到一种有效的乳胶溶液。我还尝试将目录树上的:caption:设置为空字符串,但这实际上会删除整个目录和我的所有内容 有人能帮我吗 英语版Sphinx的默认行为是使用Bjarne选项为章节标题设置LaTeX packagefncychap。

我正在将python包文档构建为HTML和latex PDF。默认生成的latex pdf(手动类)在目录顶部的文本“contents”周围有大量空白。我对latex不太熟悉,所以当我查看生成的
.tex
文件时,我看不到任何东西告诉我如何删除空白

我四处寻找,找不到一种有效的乳胶溶液。我还尝试将目录树上的
:caption:
设置为空字符串,但这实际上会删除整个目录和我的所有内容

有人能帮我吗


英语版Sphinx的默认行为是使用Bjarne选项为章节标题设置LaTeX package
fncychap
。但它也会加载包
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
设置。它与下面带有
“序言”
键的方法没有什么不同,只是人们不需要知道
标题EC
在所有这些方面的干预

但从最近的Sphinx1.5开始,您可以使用自己的Jinja模板来制作乳胶内容。从您的
内容的外观来看,它很小,我认为您有一个较旧版本的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
命令

然而,图像显示内容和TOC内容之间有一些额外的垂直空间来源(即使使用
\vskip 0\p@
,它仍然存在,但可以做
\vskip-40\p@
),但我认为您在追求内容上方的顶部空间,并且已经只使用
\vspace*{10pt}
将其减少了很多(在下面的屏幕截图中不可见)


请参阅以获取答案我发现了这一点,但无法使其发挥作用。我将再试一次。忘了说Sphinx删除了编号章节标题顶部的空格。但TOC使用的是非编号章节标题,因此Sphinx不会更改初始垂直移动。非常感谢。这非常有效。我目前使用的是1.4.9,但我没有如果我使用的是1.5,我是否可以将您提供的序言部分添加到jinja模板中?我很难在sphinx中找到关于jinja模板的文档。很高兴它起了作用……LaTeX的jinja模板在最后一段被简要地调用,使用的默认模板将被找到。紧接在下面的
您可以定位
\def\@makeschapterhead{…与我的帖子中的定义相同…
;顺便说一句,我已经确定了标题后额外空格的来源:它位于
fncychap
\DOTIS
,即
\renewcommand{\DOTIS}[1]{\CTV\FmTi{1}\par nobreak\vskip 40\p}
fncychap.sty
中为Bjarne编写的
fncychap.sty
中。当我调用模板方法时,我忘记了
latex\u元素词典中存在
'fncychap'
的键。这可能比模板方法更可取。在conf.py中,如果不使用原始字符串,反斜杠必须加倍。在这两种方法中,我都忘了说您必须使用
>\makeatletter…\makeatother
围绕LaTeX代码。