Python sphinx Sphinx:对不同的输出格式使用不同的指令

Python sphinx Sphinx:对不同的输出格式使用不同的指令,python-sphinx,restructuredtext,rst2pdf,Python Sphinx,Restructuredtext,Rst2pdf,假设您有一个重构的文本文档,并希望使用Sphinx2.x将其导出为两种格式:HTML和PDF 您希望在这两种格式中放置一些稍微不同的内容。例如,文本“我是HTML”显示在HTML版本中,而“我是PDF”显示在PDF版本中文档的同一位置 无论导出格式如何,使用下面这样的替换指令都会给出“I am HTML” .. |foo| replace:: HTML ⋮ I am |foo| 您能为不同的导出格式使用不同的指令吗?这有点笨重,但它对我有用: .. role:: latex(raw)

假设您有一个重构的文本文档,并希望使用Sphinx2.x将其导出为两种格式:HTML和PDF

您希望在这两种格式中放置一些稍微不同的内容。例如,文本“我是HTML”显示在HTML版本中,而“我是PDF”显示在PDF版本中文档的同一位置

无论导出格式如何,使用下面这样的替换指令都会给出“I am HTML”

.. |foo| replace:: HTML

⋮

I am |foo|

您能为不同的导出格式使用不同的指令吗?

这有点笨重,但它对我有用:

.. role:: latex(raw)
   :format: latex

.. role:: html(raw)
   :format: html

.. |foo| replace:: :latex:`LaTeX text`:html:`HTML text`
.. |bar| replace:: :latex:`other latex text`:html:`other html text`

解决方案可以是基于一些(例如,可以是builder标记)动态定义(或
rst\u epilog

conf.py

prolog_for_html = """
.. |document_type| replace:: HTML
"""

prolog_for_latex = """
.. |document_type| replace:: latex
"""

if tags.has('html_prolog'):
    rst_prolog = prolog_for_html
elif tags.has('latex_prolog'):
    rst_prolog = prolog_for_latex
document.rst

This is a |document_type| document.
Makefile

html latex:
    sphinx-build -t $@_prolog -b $@ src build/$@

“原始”指令是否符合您的要求?不,我想使用相同的表示文本(如
|foo |
)。假设您的文档中有1000个foo,您想在一个地方定义它是什么,也许在conf.py的prolog中。它真的有效吗?PDF输出显示:
|foo |
| bar |
分别被
乳胶文本html文本
其他乳胶文本其他html文本
替换☹ 我用的是rst2pdf。在示例脚本中,我将所有的
latex
替换为
pdf
,但没有任何帮助。HTML看起来还可以。当我构建一个LaTeX文档时,以及当我使用
pdflatex
构建PDF时,它都可以工作。我没有尝试
rst2pdf