删除 sphinx pdflatex table 内容顶部的空格
Remove whitespace at top of sphinx pdflatex table of contents
我正在将我的 python 包文档构建为 HTML 和乳胶 PDF。生成的默认 Latex pdf(手动 class)在文本 "CONTENTS" 周围的 table 内容顶部有大量白色 space。我对乳胶不是很熟悉,所以当我查看生成的 .tex
文件时,我没有看到任何告诉我如何删除白色 space.
的信息
我四处搜索但找不到有效的乳胶解决方案。我还尝试将 toctree 上的 :caption:
设置为空字符串,但这实际上删除了整个目录和我的所有内容。
谁能帮我解决这个问题?
英文版 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@ }
在日志跟踪中,这是 \@makeschapterhead
的 fncychap
定义,由 titlesec
在它自己的宏 \ttl@save@mkschap
中保存。
fncychap
是在sphinx.sty
之前加载的,没有hook,
编辑:事实上,默认值为 '\usepackage[Bjarne]{fncychap}'
的 'fncychap'
键可以添加一些代码来重新定义 [=53= 的 fncychap
设置] 章节标题。它与下面使用 'preamble'
键的方法没有什么不同,只是不需要知道 titlesec
干预所有这些。
但自最近的 Sphinx 1.5 以来,您可以使用自己的 Jinja 模板来处理 Latex 内容。从你的 contents
看起来很小,我认为你有一个旧版本的 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
命令,这是你需要的。
然而,图像显示在内容和目录内容之间有一些额外的垂直 space 来源(它与 \vskip 0\p@
保持一致,但可以 \vskip -40\p@
... ), 但我认为你在内容上面的顶部 space 之后并且已经只使用 \vspace*{10pt}
减少了很多(在下面的屏幕截图中不可见)。
我正在将我的 python 包文档构建为 HTML 和乳胶 PDF。生成的默认 Latex pdf(手动 class)在文本 "CONTENTS" 周围的 table 内容顶部有大量白色 space。我对乳胶不是很熟悉,所以当我查看生成的 .tex
文件时,我没有看到任何告诉我如何删除白色 space.
我四处搜索但找不到有效的乳胶解决方案。我还尝试将 toctree 上的 :caption:
设置为空字符串,但这实际上删除了整个目录和我的所有内容。
谁能帮我解决这个问题?
英文版 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@ }
在日志跟踪中,这是 \@makeschapterhead
的 fncychap
定义,由 titlesec
在它自己的宏 \ttl@save@mkschap
中保存。
fncychap
是在sphinx.sty
之前加载的,没有hook,
编辑:事实上,默认值为 '\usepackage[Bjarne]{fncychap}'
的 'fncychap'
键可以添加一些代码来重新定义 [=53= 的 fncychap
设置] 章节标题。它与下面使用 'preamble'
键的方法没有什么不同,只是不需要知道 titlesec
干预所有这些。
但自最近的 Sphinx 1.5 以来,您可以使用自己的 Jinja 模板来处理 Latex 内容。从你的 contents
看起来很小,我认为你有一个旧版本的 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
命令,这是你需要的。
然而,图像显示在内容和目录内容之间有一些额外的垂直 space 来源(它与 \vskip 0\p@
保持一致,但可以 \vskip -40\p@
... ), 但我认为你在内容上面的顶部 space 之后并且已经只使用 \vspace*{10pt}
减少了很多(在下面的屏幕截图中不可见)。