6

Utilizando el generador de documentos de sphinx, intento utilizar imágenes .png para las compilaciones HTML de la documentación, y luego deseo que las imágenes .svg se usen para las compilaciones de PDF/LATEx.Uso de documentos de Sphinx ¿cómo puedo especificar los formatos de imagen png para compilaciones HTML y formatos de imagen pdf para compilaciones Latex/PDF?

Alguien sabe cómo "etiquetar" secciones como "compilación HTML" -únicamente y "compilación Latex" -sólo?

Saludos

Respuesta

15

Echa un vistazo a estas opciones:

  1. nombre archivo imagen comodín:

    .. image:: gnu.* 
    

    Desde el documentation: ". Por ejemplo, si el nombre del archivo gnu * era dado y dos archivos gnu.pdf y gnu.png existían en el árbol fuente, el constructor LaTeX elegiría el primero, mientras que el generador de HTML preferiría el último ".

  2. El only Directiva:

    .. only:: latex 
    
        This appears only in LaTeX output. 
    
    .. only:: html 
    
        This appears only in HTML output. 
    
+0

Gracias @mzjn ..solo :: es exactamente lo que estaba buscando :) Recuerdo verlo en los documentos y pensé que lo necesitaría algún día y luego lo olvidé de inmediato y no pude encontrarlo de nuevo. ¡Salud! –

+0

¡Perfecto! Esto funciona para que el constructor de HTML use un SVG y LaTeX para usar un PDF como una imagen. – davidjb

10

Es posible utilizar el makefile para construir automáticamente los formatos de salida adecuados.

También hay un tutorial que muestra un proceso similar para using Sphinx with SVG and LaTeX PDF output.

  1. Use la imagen filename wildcard option en su .prima fuente.

    .. image:: my_image.* 
    
  2. uso de Inkscape para convertir sus imágenes de origen en archivos PDF y PNG en la acumulación de tiempo. Usted puede hacer esto de forma automática a la acumulación de tiempo añadiendo el siguiente código a su 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 [email protected] 
    
    # Pattern rule for converting SVG to PNG 
    %.png : %.svg 
        $(SVG2PNG) $(SVG2PNG_FLAGS) -f $< -e [email protected] 
    
    # 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 
    

    Por último, actualizar las normas clean, latex y latexpdf a tener una dependencia de los respectivos objetivos de imagen:

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

    Ahora puedes construir tus imágenes escribiendo make images y limpiarlas con make clean-images. Al usar make html, make latex y make latexpdf, se asegurará automáticamente de que sus imágenes estén actualizadas.

  3. Un problema es que Sphinx prefiera preferir SVG a PNG en la salida HTML. Puede solucionar esto anulando preferece en su archivo conf.py.

    Agregue las siguientes líneas cerca de la parte superior de su archivo conf.py, después de las importaciones.

    # 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'] 
    
Cuestiones relacionadas