4

我正在从 Sphinx 生成 LaTeX 文档,并使用 pdflatex(来自 MikTeX)将其转换为 PDF。该文档在 PDF 查看器的边栏中缺少目录。

如果我手动添加\usepackage{hyperref}到 tex 文件,它可以工作。但是我如何在 conf.py 项目文件中告诉 Sphinx 这样做呢?乳胶输出选项中没有(明显的)相关选项。

谢谢!

4

1 回答 1

3

2.5.3 节自定义Sphinx 文档的呈现提到:

乳胶序言

可以在生成的 LaTeX 文件中添加其他命令作为序言。这很容易通过编辑文件来完成conf.py

f = open('latex-styling.tex', 'r+');
PREAMBLE = f.read();

latex_elements = {
  # The paper size ('letterpaper' or 'a4paper').
  #'papersize': 'a4paper',

  # The font size ('10pt', '11pt' or '12pt').
  #'pointsize': '10pt',

  # Additional stuff for the LaTeX preamble.
  'preamble': PREAMBLE
}

这会将文件的内容latex-styling.tex(在与 相同的目录中conf.py)复制到生成的 LaTeX 文档中。例如,如果latex-styling.tex读取:

% My personal "bold" command
\newcommand{\mycommand}[1]{\textbf{#1}}

生成的 LaTeX 文档变为:

% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[a4paper,10pt,english]{sphinxmanual}
% snip (packages)
% My personal "bold" command
\newcommand{\mycommand}[1]{\textbf{#1}}
\title{My Extension Documentation}
\date{2013-06-30 22:25}
\release{1.0.0}
\author{Xavier Perseguers}

其他选项

配置文件conf.py允许您进一步调整 LaTeX 的渲染。请查阅http://www.sphinx-doc.org/en/stable/config.html#options-for-latex-output了解更多说明。

添加内容而不是将其插入到单独的文件(例如latex-styling.tex)中的一种更直接的方法是逐字指定是否。文档中的下一小节针对特定包提到了这一点typo3

TYPO3 模板

我们希望尽可能地坚持默认渲染,以避免不得不从 Sphinx 更改 LaTeX 代码生成。因此,我们选择包含一个自定义包typo3(文件typo3.sty),它将覆盖 package 的某些设置sphinx。要自动包含它,我们只需使用以下preamble选项conf.py

latex_elements = {
  # Additional stuff for the LaTeX preamble.
  'preamble': '\\usepackage{typo3}'
}

最好将样式选项包含在一个单独的latex-styling.tex文件中,您可以preamble通过f.read(). 这样你就不用更新了conf.py。分区通常更好。

于 2015-09-01T19:40:33.590 回答