必要的要求是从相同的源文件(*.rst文件)生成两种格式。
一个传统的文档使用大量的SVG图像,但是sphinx构建格式latex不支持在includegraphics{}环境中使用SVG文件。
现在我找到了很有前途的Sphinx扩展程序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 应该自行判断,在构建 HTML/PDF 时,星号是否应替换为 SVG 或 PDF。我从先前的帖子中获得了这些信息:
但不知何故,我无法生成我的 LaTeX。 使用 Sphinx 文档,如何指定 PNG 图像格式用于 HTML 构建和 Latex/PDF 构建的 PDF 图像格式?
相反,会发出以下警告:
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']
但是在源目录和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
在错误的位置查找转换后的图像。但这只是一个想法。