我正在从Sphinx生成一个LaTeX文档,并使用pdflatex(来自MikTeX)将其转换为PDF。该文档缺少PDF查看器侧栏中的目录。
如果我手动将\usepackage{hyperref}
添加到tex文件,它可以正常工作。但是我如何告诉Sphinx在conf.py项目文件中执行此操作?乳胶输出选项中没有(明显的)相关选项。
谢谢!
答案 0 :(得分:2)
部分 2.5.3自定义Sphinx文档的渲染:
LaTeX序言
可以在生成的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
),该程序包将覆盖程序包sphinx
的某些设置。要自动加入,我们只需使用preamble
的{{1}}选项:conf.py
最好将样式选项包含在单独的latex_elements = {
# Additional stuff for the LaTeX preamble.
'preamble': '\\usepackage{typo3}'
}
文件中,您可以通过latex-styling.tex
使用preamble
键添加该文件。这样您就不必更新f.read()
。区室化通常更好。