使用sphinx doc生成器,我试图将.png图像用于文档的HTML版本,然后我希望将.svg图像用于PDF / LATEx版本。
任何人都知道如何将部分“标记”为仅“ HTML build”和“ Latex build”吗?
欢呼声
看看这些选项:
图像文件名通配符:
.. image:: gnu.*
[来自documentation:“例如,如果给出文件名gnu。*,并且源树中存在两个文件gnu.pdf和gnu.png,则LaTeX构建器将选择前者,而HTML构建器将选择前者。更喜欢后者。“
only
指令:
only
可以使用makefile自动构建适当的输出格式。
也提供了说明.. only:: latex
This appears only in LaTeX output.
.. only:: html
This appears only in HTML output.
类似过程的教程。
在.rst来源中使用图像using Sphinx with SVG and LaTeX PDF output。
filename wildcard option
在构建时使用Inkscape将源图像转换为PDF和PNG。您可以在构建时通过将以下代码添加到Makefile中来自动执行此操作:
.. image:: my_image.*
最后,更新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
将自动确保您的图像是最新的。
一个问题是Sphinx默认在HTML输出中默认使用SVG而不是PNG。您可以通过覆盖make latexpdf
文件中的preferece来解决此问题。
导入后,在conf.py
文件顶部附近添加以下几行。
conf.py