我正在从 Sphinx 生成 LaTeX 文档,并使用 pdflatex(来自 MikTeX)将其转换为 PDF。该文档在 PDF 查看器的边栏中缺少目录。
如果我手动添加\usepackage{hyperref}
到 tex 文件,它可以工作。但是我如何在 conf.py 项目文件中告诉 Sphinx 这样做呢?乳胶输出选项中没有(明显的)相关选项。
谢谢!
我正在从 Sphinx 生成 LaTeX 文档,并使用 pdflatex(来自 MikTeX)将其转换为 PDF。该文档在 PDF 查看器的边栏中缺少目录。
如果我手动添加\usepackage{hyperref}
到 tex 文件,它可以工作。但是我如何在 conf.py 项目文件中告诉 Sphinx 这样做呢?乳胶输出选项中没有(明显的)相关选项。
谢谢!
第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
。分区通常更好。