我正在将python软件包文档构建为HTML和乳胶PDF。生成的默认乳胶pdf(手册类)在目录“ CONTENTS”周围的顶部具有大量空白。我对乳胶不是很熟悉,因此当我查看生成的.tex文件时,看不到任何告诉我如何删除空格的内容。

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

谁能帮我这个?

python - 删除sphinx pdflatex目录顶部的空白-LMLPHP

最佳答案

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

fncychapsphinx.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}减少了很多(在下面的屏幕快照中不可见)。

python - 删除sphinx pdflatex目录顶部的空白-LMLPHP

09-25 21:18