我的公司正在使用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
我们的第一个文件的内容基本上是:
.. image:: Image.*
:width: 100px
如果明星应该由svg或pdf重新定制,取决于构建html / pdf,Sphinx应该自行解决。我从以前的帖子中得到的这些信息:
但不知怎的,我无法生成乳胶。 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,因此我暂时从sphinx.ext.imgconverter
删除了扩展程序conf.py
以测试手动解决方案。我使用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}
如果我从image/svg+xml
删除supported_image_types
类型,我又收到了上一个错误。我的印象是,sphinx-build
在错误的地方寻找转换后的图像。但这只是一个想法。
答案 0 :(得分:1)
来自sphinx.ext.imgconverter
的文档:
在内部,此扩展程序使用Imagemagick转换图片。
这意味着必须安装它并且在您的系统路径中。