6

स्फिंक्स दस्तावेज़ जनरेटर का उपयोग करके, मैं HTML के दस्तावेज़ों के निर्माण के लिए .png छवियों का उपयोग करने का प्रयास कर रहा हूं, और फिर मैं पीडीएफ/लेटेक्स बिल्ड के लिए उपयोग की जाने वाली .svg छवियां बनाना चाहता हूं।स्फिंक्स डॉक्स का उपयोग करना मैं लेटेक्स/पीडीएफ बिल्ड के लिए एचटीएमएल बिल्ड और पीडीएफ छवि प्रारूपों के लिए पीएनजी छवि प्रारूप कैसे निर्दिष्ट कर सकता हूं?

कोई भी जानता है कि "एचटीएमएल बिल्ड" के रूप में "टैग" कैसे करें और केवल "लेटेक्स बिल्ड" - केवल?

चीयर्स

उत्तर

15

इन विकल्पों पर एक नजर डालें:

  1. छवि फ़ाइल नाम वाइल्डकार्ड:

    .. image:: gnu.* 
    

    documentation से:।, "उदाहरण के लिए यदि फ़ाइल नाम gnu * था दिए गए और दो फाइल gnu.pdf और gnu.png स्रोत पेड़ में मौजूद हैं, लाटेक्स बिल्डर पूर्व का चयन करेगा, जबकि HTML बिल्डर बाद वाले को पसंद करेगा। "

  2. only निर्देश:

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

@mzjn धन्यवाद ..केवल :: वही है जो मैं देख रहा था :) मुझे इसे दस्तावेज़ों में देखना याद है और सोच रहा है कि मुझे किसी दिन इसकी आवश्यकता होगी और फिर मैं तुरंत इसे भूल गया और इसे फिर से नहीं मिला! चीयर्स! –

+0

बिल्कुल सही! यह एक पीडीएफ का उपयोग छवि के रूप में करने के लिए एचटीएमएल बिल्डर एक एसवीजी, और लाटेक्स का उपयोग करने के लिए काम करता है। – davidjb

10

यह makefile उपयोग करने के लिए स्वचालित रूप से उचित उत्पादन प्रारूपों का निर्माण संभव है।

using Sphinx with SVG and LaTeX PDF output के लिए एक समान प्रक्रिया का प्रदर्शन करने वाला एक ट्यूटोरियल भी उपलब्ध है।

  1. अपने .rst स्रोत में छवि filename wildcard option का प्रयोग करें।

    .. image:: my_image.* 
    
  2. उपयोग इंकस्केप निर्माण समय में पीडीएफ़ और PNG का में अपने स्रोत छवियों कन्वर्ट करने के लिए।

    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 
    

    अंत में, clean, latex और latexpdf नियम अपडेट संबंधित छवि लक्ष्य पर निर्भरता के लिए:

    ... 
    clean: clean-images 
    ... 
    html: images-png 
    ... 
    latex: images-pdf 
    ... 
    latexpdf: images-pdf 
    ... 
    
    आप अपने Makefile के लिए निम्न कोड जोड़कर निर्माण समय में स्वचालित रूप से यह कर सकते हैं

    अब आप make images टाइप करके अपनी छवियां बना सकते हैं और उन्हें make clean-images से साफ़ कर सकते हैं। make html, make latex और make latexpdf का उपयोग करके स्वचालित रूप से सुनिश्चित हो जाएगा कि आपकी छवियां अद्यतित हैं।

  3. एक समस्या यह है कि स्फिंक्स 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']