2

在 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!” 正如我所料,在网络浏览器中:

一个制作 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!” 这包括所有三个项目。

rst2pdf 结果

有什么办法可以得到“我是 PDF!” “我是 LaTeX!” 在 PDF 文件中?

笔记。

4

1 回答 1

0

rst2pdf 并没有真正的条件,但您可能会发现 --strip-elements-with-class 开关有用吗?将可选部分放入类名中,然后如果该类对这种格式没有意义,请使用开关将其删除。

手册在这里https://rst2pdf.org/static/manual.html#command-line-options我还写了关于这个 https://rst2pdf.org/static/manual 的博客(基本上是第一段的较长版本)。 html#command-line-options如果更多信息有用。

于 2020-08-12T09:04:14.177 回答