Используя документы Sphinx, как я могу указать форматы изображений png для сборок HTML и pdf для сборок Latex / PDF? - PullRequest
7 голосов
/ 25 июня 2011

Используя генератор sphinx doc, я пытаюсь использовать изображения .png для сборок HTML документации, а затем хочу, чтобы изображения .svg использовались для сборок PDF / LATEx.

Кто-нибудь знаеткак пометить разделы как «только HTML-сборка» и «латексная сборка» -только?

Cheers

Ответы [ 2 ]

15 голосов
/ 27 июня 2011

Взгляните на эти опции:

  1. Имя файла подстановочного знака:

    .. image:: gnu.* 
    

    Из документации : «Например, если было задано имя файла gnu. * И в исходном дереве существовало два файла gnu.pdf и gnu.png, то конструктор LaTeX выберет первый, в то время как конструктор HTML предпочел бы последнее. "

  2. Директива only:

    .. only:: latex
    
       This appears only in LaTeX output.
    
    .. only:: html
    
       This appears only in HTML output. 
    
12 голосов
/ 24 ноября 2012

Возможно использовать make-файл для автоматической сборки соответствующих форматов вывода.

Также доступно руководство, демонстрирующее аналогичный процесс для с использованием Sphinx с выводом SVG и LaTeX PDF .

  1. Используйте опцию подстановки для имени файла в вашем .rst источнике.

    .. image:: my_image.*
    
  2. Используйте 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 автоматически обеспечит актуальность ваших изображений.

  3. Одной из проблем является то, что Sphinx по умолчанию предпочитает SVG над PNG в выводе HTML. Вы можете исправить это, переопределив предпочтения в файле 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']
    
...