2016-12-06 14 views
6

के साथ एचटीएमएल में मार्कडाउन लिंक कन्वर्ट करें मेरी नई परियोजना में मेरे पास एक-दूसरे से जुड़े कई मार्कडाउन फाइलें हैं। ये लिंक मूल .md फ़ाइलों को संदर्भित करते हैं।पांडोक

उदाहरण: फ़ाइल

... 
1. [Development documentation](Development.md) 
1. [User documentation](Usage.md) 
... 

README.md अगर मैं Pandoc, उदा के साथ इन फ़ाइलों को परिवर्तित एचटीएमएल फाइलों के लिए, सभी लिंक अभी भी मूल .md फ़ाइल पर इंगित कर रहे हैं। जो मैं खोज रहा हूं वह लिंक प्रकार को भी परिवर्तित करने का एक तरीका है, जिसका अर्थ है कि आउटपुट फाइलों को आउटपुट फ़ाइल प्रकार जैसे एचटीएमएल, पीडीएफ, टीएक्स इत्यादि का संदर्भ देना चाहिए। क्या आंतरिक लिंक प्रकार को पांडोक के साथ बदलने का कोई तरीका है?

मैं फ़ाइलों को परिवर्तित करने के लिए इस का उपयोग करें:

pandoc -f markdown -t html5 input.md -o output.html 
+0

आप फ़ाइल नाम और लिंक का एक उदाहरण दे सकते हैं? – mb21

+0

उदाहरण में जोड़ा गया उदाहरण। –

उत्तर

5

आप एक फिल्टर है कि हर link तत्व जाँच करता है और बना सकते हैं - यूआरएल समाप्त होता है तो .md.html साथ यह --replaces साथ।

अजगर के साथ उदाहरण panflute पैकेज का उपयोग:

import panflute as pf 

def action(elem, doc): 
    if isinstance(elem, pf.Link) and elem.url.endswith('.md'): 
     elem.url = elem.url[:-3] + '.html' 
     return elem 

if __name__ == '__main__': 
    pf.run_filter(action) 
+0

धन्यवाद, यह बहुत अच्छा है!मैं बस सोच रहा हूं कि क्या पांडोक विकल्पों का उपयोग करके कोई आसान तरीका नहीं है? –

+2

@ पी। टेल नंबर, ऐसा करने के लिए कोई आउट-द-द-बॉक्स तरीका नहीं है। मार्कडाउन मानता है कि आपके लिंक पहले ही प्रस्तुत किए गए HTML दस्तावेज़ों को इंगित करते हैं और आपके यूआरएल को नहीं बदलते हैं। वास्तव में, यूआरएल में से कोई भी बदलाव एक बग होगा। बेशक, एक कस्टम-निर्मित प्लगइन का उपयोग करना (जैसे यहां एक) विभिन्न मार्कडाउन पार्सर्स के साथ संभव है। लेकिन इसे कस्टम होना चाहिए क्योंकि केवल आप ही अपनी विशिष्ट जरूरतों को जानते हैं और कोई भी समाधान संभवतः अधिकांश की जरूरतों को पूरा नहीं कर सकता है (सभी को अकेले छोड़ दें)। – Waylan

0

मान लिया जाये कि क्या आप वेब सर्वर के माध्यम से HTML पृष्ठों यह अपेक्षाकृत बजाय pandoc के माध्यम से उन्हें फिर से लिखने की *.html लोगों के रूप में सभी *.md यूआरएल को हल करने के लिए सरल है सेवा करने के लिए जा रहे हैं जैसे Nginx का उपयोग कर: सभी आंतरिक फ़ाइल यूआरएल की ओर इशारा करते से * .md लिंक और बजाय बिंदु

बदलें: वैकल्पिक रूप से

location ~ \.md$ { 
    if (!-f $request_filename) { 
    rewrite ^(.*)\.md$ $1 permanent; 
    } 
} 

location/{ 
    try_files /$uri /$uri.html; 
} 

, आप सभी md लिंक htmlsed उपयोग करने के साथ जगह ले सकता है (here से लिया गया) स्थानीय * .html फाइल करने के लिए

  1. रिकर्सिवली इस एसईडी आदेश चला (प्रोग्राम के FILENAME की जगह)

    sed -n -i.bak '/href="\./s/\.md/\.html/' FILENAME.html 
    
  2. वैकल्पिक रूप से, निम्न आदेश चला बजाय (प्रोग्राम के FILENAME की जगह)

    sed -e '/href="\./s/\.md/\.html/' FILENAME.html > FILENAME.html.tmp && mv FILENAME.html.tmp FILENAME.html` 
    
1

मैं एक ऐसी ही समस्या थी, तो मैं इस बनाया: https://github.com/MatrixManAtYrService/md_htmldoc

यह पाता है निर्देशिका में .md फ़ाइलों में से सभी और फिर एक अलग निर्देशिका बनाता है जहां सभी मार्कडाउन एचटीएमएल में परिवर्तित कर दिया गया है।

यह हाइपरलिंक को ठीक करता है (@ Sergio_Correia के उत्तर के लिए धन्यवाद)।

यह भी किसी भी स्थानीय फ़ाइल संदर्भ बटोरता ताकि छवियों के लिंक और इस तरह अभी भी काम

संबंधित मुद्दे