使用sphinx doc生成器,我试图将.png图像用于文档的HTML版本,然后我想将.svg图像用于PDF / LATEx版本。
任何人都知道如何“标记”部分为“HTML构建” - 只有“Latex构建” - 只有?
干杯
答案 0 :(得分:15)
看看这些选项:
图片文件名通配符:
.. image:: gnu.*
来自documentation:“例如,如果给出了文件名gnu。*并且源树中存在两个文件gnu.pdf和gnu.png,则LaTeX构建器将选择前者,而HTML构建者更喜欢后者。“
only
指令:
.. only:: latex
This appears only in LaTeX output.
.. only:: html
This appears only in HTML output.
答案 1 :(得分:12)
可以使用makefile自动构建适当的输出格式。
还提供了一个演示using Sphinx with SVG and LaTeX PDF output类似过程的教程。
使用.rst来源中的图片filename wildcard option。
.. image:: my_image.*
使用Inkscape在构建时将源图像转换为PDF和PNG。您可以在构建时自动执行此操作,方法是将以下代码添加到Makefile:
SOURCEDIR = source
#IMAGEDIRS can be a list of directories that contain SVG files and are relative to the SOURCEDIR
IMAGEDIRS = _images
# SVG to PDF conversion
SVG2PDF = inkscape
SVG2PDF_FLAGS = -C
# SVG to PNG conversion
SVG2PNG = inkscape
SVG2PNG_FLAGS = -C -d=90 --export-background-opacity=\#00
# Pattern rule for converting SVG to PDF
%.pdf : %.svg
$(SVG2PDF) $(SVG2PDF_FLAGS) -f $< -A $@
# Pattern rule for converting SVG to PNG
%.png : %.svg
$(SVG2PNG) $(SVG2PNG_FLAGS) -f $< -e $@
# Build a list of SVG files to convert to PDFs
PDFs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.pdf,$(wildcard $(SOURCEDIR)/$(dir)/*.svg)))
# Build a list of SVG files to convert to PNGs
PNGs := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.png,$(wildcard $(SOURCEDIR)/$(dir)/*.svg)))
# Make a rule to build the PDFs
images-pdf: $(PDFs)
# Make a rule to build the PNGs
images-png: $(PNGs)
# Make a rule to build the images
images: images-pdf images-png
clean-pdf:
-rm $(PDFs)
clean-png:
-rm $(PNGs)
clean-images: clean-pdf clean-png
最后,更新clean
,latex
和latexpdf
规则以依赖相应的图片目标:
...
clean: clean-images
...
html: images-png
...
latex: images-pdf
...
latexpdf: images-pdf
...
现在,您可以通过键入make images
来构建图片,然后使用make clean-images
进行清理。使用make html
,make latex
和make latexpdf
会自动确保您的图片是最新的。
一个问题是Sphinx默认在HTML输出中更喜欢SVG而不是PNG。您可以通过覆盖conf.py
文件中的优先顺序来解决此问题。
导入后,在conf.py
文件顶部附近添加以下行。
# Redefine supported_image_types for the HTML builder
from sphinx.builders.html import StandaloneHTMLBuilder
StandaloneHTMLBuilder.supported_image_types = ['image/png', 'image/svg+xml',
'image/gif', 'image/jpeg']