使用 Sphinx 文档,如何为 HTML 构建指定 png 图像格式,为 Latex/PDF 构建指定 pdf 图像格式?

发布于 2024-11-17 05:31:55 字数 138 浏览 5 评论 0原文

使用 sphinx 文档生成器,我尝试使用 .png 图像来构建文档的 HTML,然后我希望将 .svg 图像用于 PDF/LATEX 构建。

有人知道如何将部分“标记”为“仅 HTML 构建”和“仅 Latex 构建”吗?

干杯

Using sphinx doc generator, I am trying to use .png images for the HTML builds of the documentation, and then I want to have the .svg images used for the PDF/LATEx builds.

Anyone know how to "tag" sections as "HTML build"-only and "Latex build"-only?

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏有森光若流苏 2024-11-24 05:31:55

看一下这些选项:

  1. 图像文件名通配符:

    <前><代码>.. 图像:: gnu.*

    摘自文档:“对于 ,则 LaTeX 构建器将选择前者,而 HTML 构建器更喜欢后者。”

  2. 仅限 指令:

    .. 仅:: 乳胶
    
       这只出现在 LaTeX 输出中。
    
    ..仅:: html
    
       这仅出现在 HTML 输出中。 
    

Take a look at these options:

  1. Image filename wildcard:

    .. image:: gnu.* 
    

    From the documentation: "For instance, if the file name gnu.* was given and two files gnu.pdf and gnu.png existed in the source tree, the LaTeX builder would choose the former, while the HTML builder would prefer the latter."

  2. The only directive:

    .. only:: latex
    
       This appears only in LaTeX output.
    
    .. only:: html
    
       This appears only in HTML output. 
    
雨后彩虹 2024-11-24 05:31:55

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

演示将 Sphinx 与 SVG 结合使用的类似过程的教程还可以使用 LaTeX PDF 输出

  1. 在 .rst 源中使用图像文件名通配符选项

    <前><代码>.. image:: my_image.*

  2. 使用 Inkscape 在构建时将源图像转换为 PDF 和 PNG。您可以通过将以下代码添加到 Makefile 中,在构建时自动执行此操作:

    SOURCEDIR = 源
    #IMAGEDIRS 可以是包含 SVG 文件且相对于 SOURCEDIR 的目录列表
    IMAGEDIRS = _images
    
    # SVG 到 PDF 转换
    SVG2PDF = inkscape
    SVG2PDF_FLAGS = -C
    
    # SVG 到 PNG 转换
    SVG2PNG = inkscape
    SVG2PNG_FLAGS = -C -d=90 --export-background-opacity=\#00
    
    # 将 SVG 转换为 PDF 的模式规则
    %.pdf : %.svg
        $(SVG2PDF) $(SVG2PDF_FLAGS) -f 
    lt; -A$@
    
    # 将 SVG 转换为 PNG 的模式规则
    %.png : %.svg
        $(SVG2PNG) $(SVG2PNG_FLAGS) -f 
    lt; -e $@
    
    # 构建要转换为 PDF 的 SVG 文件列表
    PDF := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.pdf,$(通配符 $(SOURCEDIR)/$(dir)/*.svg)))
    
    # 构建要转换为 PNG 的 SVG 文件列表
    PNG := $(foreach dir, $(IMAGEDIRS), $(patsubst %.svg,%.png,$(通配符 $(SOURCEDIR)/$(dir)/*.svg)))
    
    # 制定构建 PDF 的规则
    图像-pdf:$(PDF) 
    
    # 制定规则来构建 PNG
    图片-png:$(PNG) 
    
    # 制定构建图像的规则
    图像:图像-pdf 图像-png
    
    干净的pdf:
        -rm $(PDF)
    
    干净的PNG:
        -rm $(PNG)
    
    干净的图像:干净的pdf 干净的png
    

    最后,更新 cleanlatexlatexpdf 规则以依赖于各自的图像目标:

    <前><代码>...
    干净:干净的图像
    ...
    html: 图像-png
    ...
    乳胶:图像-pdf
    ...
    Latexpdf:图像-pdf
    ...

    现在,您可以通过输入 make images 来构建图像,并使用 make clean-images 清理它们。 和 make Latexpdf 将自动确保您的图像是最新的。

  3. 一个问题是 Sphinx 默认在 HTML 输出中更喜欢 SVG 而不是 PNG。您可以通过覆盖 conf.py 文件中的首选项来解决此问题。

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

    # 为 HTML 构建器重新定义supported_image_types
    从 sphinx.builders.html 导入 StandaloneHTMLBuilder
    StandaloneHTMLBuilder.supported_image_types = ['image/png', 'image/svg+xml', 
                                           '图像/gif','图像/jpeg']
    

It is possible to use the makefile to automatically build the appropriate output formats.

A tutorial demonstrating a similar process for using Sphinx with SVG and LaTeX PDF output is also available.

  1. Use the image filename wildcard option in your .rst source.

    .. image:: my_image.*
    
  2. Use Inkscape to convert your source images into PDFs and PNGs at build-time. You can do this automatically at build-time by adding the following code to your 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 
    lt; -A $@
    
    # Pattern rule for converting SVG to PNG
    %.png : %.svg
        $(SVG2PNG) $(SVG2PNG_FLAGS) -f 
    lt; -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
    

    Finally, update the clean, latex and latexpdf rules to have a dependency on the respective image targets:

    ...
    clean: clean-images
    ...
    html: images-png
    ... 
    latex: images-pdf
    ...
    latexpdf: images-pdf
    ...
    

    Now you can build your images by typing make images and clean them with make clean-images. Using make html, make latex and make latexpdf will automatically make sure your images are up-to-date.

  3. One problem is that Sphinx defaults to preferring SVG over PNG in HTML output. You can fix this by overriding preferece in your conf.py file.

    Add the following lines near the top of your conf.py file, after imports.

    # 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']
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文