在 Sphinx 2.x 上的 reStructuredText 中,我想放置一个根据输出格式而变化的内容。
在任何源文档中,比如 index.rst,添加以下行:
.. role:: pdf(raw)
:format: pdf
.. role:: latex(raw)
:format: latex
.. role:: html(raw)
:format: html
.. |foo| replace::
:pdf:`PDF!`
:latex:`LaTeX!`
:html:`HTML!`
I am |foo|
我希望它显示“我是 HTML!” 当输出格式为 HTML 时,“我是 LaTeX!” 如果它是 LaTeX(即使在通过 pdflatex 将产品转换为 PDF 之后)和“我是 PDF!” 如果是PDF。
我使用 HTML 版本制作make html
,我只看到“我是 HTML!” 正如我所料,在网络浏览器中:
安装rst2pdf
. 将以下行放入conf.py
:
extensions = [
'rst2pdf.pdfbuilder'
]
pdf_documents = [(
'index',
u'testRst2Pdf',
u'Test Title',
u'Sarah Author')]
制作PDF版本
sphinx-build -b pdf ./source/ ./build/
更新。下面是输出。没有错误。我使用 WSL 1 (Ubuntu 18.04) 运行它。
Running Sphinx v2.4.3
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [pdf]: targets for 1 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
processing testRst2Pdf...
index
resolving references...
done
writing testRst2Pdf...
done
build succeeded.
我看到“我是 PDF!LaTeX!HTML!” 这包括所有三个项目。
有什么办法可以得到“我是 PDF!” 或“我是 LaTeX!” 在 PDF 文件中?
笔记。
- 在将此行为报告为错误之前,请有人帮我检查它是否是意外行为或设计的。
- 这个问题源自我之前问过的另一个问题:StackOverflow: "Sphinx: Use a different directive for a different output format"。