正如标题所述,我正在使用sphinx-doc,我真的希望在构建输出为latexpdf时为条件渲染静态PNG,并为网络构建动画GIF。
理想情况下,能够以某种方式在第一个文件中执行此操作会很好...语义上:
如果builder == html: ..图片:等等等等 elif builder == latexpdf: ..图片:blah blah
答案 0 :(得分:2)
来自Sphinx documentation for images:
Sphinx通过允许扩展名的星号来扩展标准的docutils行为:
.. image:: gnu.*
然后,Sphinx会搜索与提供的模式匹配的所有图像并确定其类型。然后,每个建筑师从这些候选人中选择最佳图像。例如,如果给出了文件名
gnu.*
并且源树中存在两个文件gnu.pdf
和gnu.png
,则LaTeX构建器将选择前者,而HTML构建器则更喜欢后者。支持的图像类型和选择优先级在Available builders定义。
自定义"最佳图像"对于给定的构建器,请修改conf.py
以使用您喜欢的StandaloneHTMLBuilder
顺序覆盖supported_image_types
类。
from sphinx.builders.html import StandaloneHTMLBuilder
StandaloneHTMLBuilder.supported_image_types = [
'image/svg+xml',
'image/gif',
'image/png',
'image/jpeg'
]
答案 1 :(得分:1)
如果它对其他人有用,我采用了 Steve Piercy 非常有用的答案的一个变体,该答案试图验证代码的未来并防止神秘的图像丢失。它使用相同的结构,但默认情况下附加在 StandaloneHTMLBuilder.supported_image_types 中但不在我们提供的新集合中的任何项目。我在考虑 Sphinx 是否开始支持 HEIC 图像之类的东西,或者其他新标准出现,这将使它们能够无缝集成。
new_supported_image_types = [
'image/svg+xml',
'image/gif',
'image/png',
'image/jpeg'
]
# construct it this way so that if Sphinx adds default support for additional images, such
# as HEIC, then what we do is add any of those to the end. We start with the ones
# we want to support in this order, then subtract them from the defaults to identify
# any remaining items that we append to the end of the list
additional_default_supported_images = list(set(StandaloneHTMLBuilder.supported_image_types) - set(new_supported_image_types))
StandaloneHTMLBuilder.supported_image_types = new_supported_image_types + additional_default_supported_images