Python 删除sphinx pdflatex目录顶部的空白
我正在将python包文档构建为HTML和latex PDF。默认生成的latex pdf(手动类)在目录顶部的文本“contents”周围有大量空白。我对latex不太熟悉,所以当我查看生成的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。
.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代码。