使用Sphinx docs如何为HTML版本指定png图像格式,为Latex / PDF版本指定pdf图像格式?

问题描述 投票:7回答:2

使用sphinx doc生成器,我试图将.png图像用于文档的HTML版本,然后我希望将.svg图像用于PDF / LATEx版本。

任何人都知道如何将部分“标记”为仅“ HTML build”和“ Latex build”吗?

欢呼声

latex pdf-generation documentation-generation python-sphinx
2个回答
16
投票

看看这些选项:

  1. 图像文件名通配符:

    .. image:: gnu.* 
    

    [来自documentation:“例如,如果给出文件名gnu。*,并且源树中存在两个文件gnu.pdf和gnu.png,则LaTeX构建器将选择前者,而HTML构建器将选择前者。更喜欢后者。“

  2. only指令:

    only

12
投票

可以使用makefile自动构建适当的输出格式。

也提供了说明.. only:: latex This appears only in LaTeX output. .. only:: html This appears only in HTML output. 类似过程的教程。

  1. 在.rst来源中使用图像using Sphinx with SVG and LaTeX PDF output

    filename wildcard option
  2. 在构建时使用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 cleanlatex规则以依赖于各个图像目标:

    latexpdf

    现在您可以通过键入... clean: clean-images ... html: images-png ... latex: images-pdf ... latexpdf: images-pdf ... 来构建图像,并使用make images对其进行清理。使用make clean-imagesmake htmlmake latex将自动确保您的图像是最新的。

  3. 一个问题是Sphinx默认在HTML输出中默认使用SVG而不是PNG。您可以通过覆盖make latexpdf文件中的preferece来解决此问题。

    导入后,在conf.py文件顶部附近添加以下几行。

    conf.py
© www.soinside.com 2019 - 2024. All rights reserved.