【发布时间】:2018-04-18 11:39:30
【问题描述】:
我的公司正在使用 Sphinx 为我们的产品创建手册。我们的产品附带 PDF 和 HTML 文档。我们使用 Windows 作为唯一的开发环境。
一个必要的要求是从相同的源(*.rst 文件)生成两种格式。
旧文档使用大量 SVG 图像,但 sphinx 构建格式 latex 不支持 \includegraphics{} 环境中的 SVG 文件。
现在我找到了有前途的 Sphinx-Extension sphinx.ext.imgconverter 并将其包含在我的 conf.py 中。
extensions = [
'sphinx.ext.imgmath',
'sphinx.ext.ifconfig',
'sphinx.ext.imgconverter'
]
如果我正在构建 LaTeX,希望将所有 SVG 文件转换为 PDF 文件。不幸的是,扩展的文档很短,没有工作示例。
http://www.sphinx-doc.org/en/master/ext/imgconverter.html#module-sphinx.ext.imgconverter
我们的rst文件的内容基本上是:
.. image:: Image.*
:width: 100px
Sphinx 应该自己弄清楚,是否应该用 svg 或 pdf 替换星形,具体取决于构建 html/pdf。我从以前的帖子中获得的这些信息:
但不知何故,我无法生成我的乳胶。 Using Sphinx docs how can I specify png image formats for HTML builds and pdf image formats for Latex/PDF builds?
而是发出以下警告:
WARNING: no matching candidate for image URI u'Image.*'
但只有当我想在 HTML 的情况下构建 LaTeX 时才没有警告。
我必须安装 ImageMagick 还是有什么问题? Sphinx 怎么知道在哪里搜索 ImageMagick?
更新
我刚刚将我的 Sphinx 更新到了 1.7.2 版。它仍然不起作用。由于无法安装 ImageMagick,我暂时从 conf.py 中删除了扩展名 sphinx.ext.imgconverter 以测试手动解决方案。我使用inkscape将所有图像手动转换为pdf/png。
如果我使用 make latex 编译,现在我收到以下警告。
WARNING: a suitable image for latex builder not found: ['image/svg+xml']
但source 目录和build/latex 目录中肯定有手动转换的图像(pdf、png)。
我的 LaTeX 文件被编译成如下内容:
\noindent\sphinxincludegraphics[width=100\sphinxpxdimen]{{Image}.*}
而且我无法用 pdflatex 编译它。
LaTeX Error: Unknown graphics extension: .*.
我的conf.py 中是否有一些 LaTeX Builder 设置来获取转换后的图像?
如果我在conf.py 中包含以下几行,则会发生意外情况:
from sphinx.builders.latex import LaTeXBuilder
LaTeXBuilder.supported_image_types = ['image/png', 'image/pdf','image/svg+xml' ]
我的 LaTeX 文件的输出现在包含以下行:
\noindent\sphinxincludegraphics[width=100\sphinxpxdimen]{{Image}.svg}
如果我从supported_image_types 中删除image/svg+xml 类型,我会再次遇到上一个错误。我的印象是,sphinx-build 在错误的位置寻找转换后的图像。但这只是一个想法。
【问题讨论】:
-
查看sphinxcontrib-svg2pdfconverter,这将有助于将 svg 动态转换为 pdf,以便与 Sphinx 的乳胶生成器一起使用。它基于sphinx.ext.imgconverter通过inkscape或rsvg-convert添加转换
标签: imagemagick latex python-sphinx imagemagick-convert pdflatex