Markdown फ़ाइलें: नियमों वाला प्लेन टेक्स्ट, और ये नियम एक नहीं, कई हैं
.md फ़ाइल क्या है, कोई दो रेंडरर इस पर एकमत क्यों नहीं होते, और जिस PDF में हेडिंग और लिस्ट थीं ही नहीं, उससे ये कैसे बनाई जाती हैं। ब्राउज़र में कन्वर्ट करें।
एक नज़र में
- प्रकार
- डॉक्यूमेंट
- एक्सटेंशन
- .md, .markdown
- MIME टाइप
- text/markdown
- दूसरे नाम
- MD
.md फ़ाइल एक टेक्स्ट फ़ाइल है। इसमें न कोई कंटेनर है, न कंप्रेशन, न कुछ बाइनरी — इसे Notepad में खोलें और जो कुछ इसमें है, ठीक वही दिखेगा। फ़ॉर्मैटिंग मार्कअप नहीं, बल्कि एक चलन है: लाइन की शुरुआत में # का मतलब हेडिंग, हाइफ़न का मतलब लिस्ट आइटम, और जो रेंडरर यह चलन समझता है वह इन्हें HTML में बदल देता है। पूरा विचार बस इतना है, और इसी वजह से यह फ़ॉर्मैट अपनी पीढ़ी के हर रिच-टेक्स्ट एडिटर से ज़्यादा टिका है: फ़ाइल किसी के रेंडर करने से पहले भी पढ़ी जा सकती है, और जिस प्रोग्राम में आपने इसे लिखा था उसके मिट जाने के बाद भी पढ़ी जा सकेगी।
और पढ़ें
उलझन यह है कि Markdown एक नहीं है। 2004 के मूल इम्प्लीमेंटेशन ने बहुत-सी स्थितियाँ अपरिभाषित छोड़ दी थीं, इसलिए हर रेंडरर ने उन्हें अपने ढंग से तय किया; CommonMark इन्हीं अस्पष्टताओं को पक्का करने के लिए बना, और GitHub Flavored Markdown उसके ऊपर टेबल, टास्क लिस्ट और स्ट्राइकथ्रू जोड़ता है। यह हालत आधिकारिक रूप से भी मानी गई है: मार्च 2016 में जब RFC 7763 में text/markdown को मीडिया टाइप के रूप में रजिस्टर किया गया, तो उसमें एक variant पैरामीटर रखा गया, ठीक इसलिए कि किसी फ़ाइल को Markdown कहने से यह पता नहीं चलता कि वह कौन-सा Markdown है। यह साइट UTF-8 वाला text/markdown बनाती है, और सिर्फ़ वही ढाँचे इस्तेमाल करती है जिन पर हर डायलेक्ट सहमत है — हैश वाली हेडिंग, ख़ाली लाइन से अलग पैराग्राफ़, हाइफ़न वाले बुलेट और हॉरिज़ॉन्टल रूल।
PDF को Markdown में बदलने का मतलब है ऐसा ढाँचा गढ़ना जो PDF में कभी था ही नहीं। PDF हेडिंग नहीं, टाइप साइज़ दर्ज करती है, इसलिए पेज के साइज़ों की रैंकिंग की जाती है और सबसे बड़े छह साइज़ हेडिंग के छह लेवल बन जाते हैं; जो लाइन बस बॉडी टेक्स्ट से बड़ी है, वह हेडिंग बन जाती है, चाहे लेखक ने उसे हेडिंग माना हो या नहीं। लिस्ट के साथ हालत और ख़राब है: PDF में लिस्ट जैसी कोई चीज़ होती ही नहीं, और जो बुलेट आपको दिखता है वह सचमुच टेक्स्ट का एक कैरेक्टर है, इसलिए लिस्ट बचाने का एक ही तरीक़ा है — उस कैरेक्टर को पहचानकर हाइफ़न में बदलना। नंबर वाले आइटम को ऐसी किसी मदद की ज़रूरत नहीं — "1. " और "1) " पहले से ही Markdown हैं, और पहले से ही लिस्ट के रूप में लिखे गए हैं।
दो बारीकियाँ जानने लायक़ हैं, क्योंकि ये टेक्स्ट को ही बदल देती हैं। हाइफ़न पर ख़त्म होने वाली लाइन को लाइन ब्रेक पर टूटा हुआ शब्द माना जाता है और हाइफ़न हटाकर जोड़ दिया जाता है; और चीनी या जापानी की लगातार लाइनें बिना स्पेस के जोड़ी जाती हैं, क्योंकि उन लिपियों में वहाँ स्पेस होता ही नहीं। पेज हॉरिज़ॉन्टल रूल से अलग किए जाते हैं, इसलिए तेरह पेज के डॉक्यूमेंट में ऐसे बारह रूल आते हैं। अगर PDF बिना टेक्स्ट लेयर वाला स्कैन है, तो PDF से Word वाला वही रिकग्निशन मॉडल पहले पेज की तस्वीरों में से कैरेक्टर पढ़ता है, आपकी अपनी मशीन पर।
दूसरे फ़ॉर्मैट को Markdown में बदलें
Markdown: अक्सर पूछे जाने वाले सवाल
क्या .md फ़ाइल बस एक टेक्स्ट फ़ाइल है?
हाँ। न कंटेनर, न कंप्रेशन, न कुछ बाइनरी। कोई भी टेक्स्ट एडिटर इसे खोल लेता है, और मार्कर — #, -, ** — आम कैरेक्टर हैं जिन्हें आप जैसे हैं वैसे पढ़ सकते हैं।
मुझे Markdown का कौन-सा रूप मिलता है?
सिर्फ़ वे हिस्से जिन पर हर डायलेक्ट सहमत है: हैश वाली हेडिंग, ख़ाली लाइन से अलग पैराग्राफ़, हाइफ़न वाले बुलेट और हॉरिज़ॉन्टल रूल। यहाँ कुछ भी GitHub या CommonMark के किसी एक्सटेंशन पर निर्भर नहीं, इसलिए आप इसे जहाँ भी पेस्ट करें, यह एक जैसा रेंडर होता है।
मेरे डॉक्यूमेंट में डैश की लाइनें क्यों हैं?
वे पेज ब्रेक हैं। हर एक हॉरिज़ॉन्टल रूल बताता है कि PDF का एक पेज कहाँ ख़त्म हुआ और अगला कहाँ शुरू हुआ, इसलिए तेरह पेज का डॉक्यूमेंट बारह रूल के साथ लौटता है।
एक हेडिंग ग़लत लेवल पर आई। क्यों?
लेवल टाइप साइज़ के हिसाब से तय होते हैं, क्योंकि PDF हेडिंग नहीं, साइज़ सेव करती है। जहाँ डॉक्यूमेंट साइज़ को क्रम दिखाने के बजाय ज़ोर देने के लिए इस्तेमाल करता है — कोई पुल कोट, बड़े अक्षरों वाली पहली लाइन — वहाँ रैंकिंग साइज़ के पीछे चलती है और लेवल ग़लत हो जाता है।
क्या टेबल बचती हैं?
रेखाओं से बनी टेबल बचती हैं — वे Markdown टेबल के रूप में आती हैं, पहली पंक्ति हेडर के रूप में। स्कैन किए पेज की टेबल आम लाइनों के रूप में आती हैं, क्योंकि स्कैन में पढ़ने के लिए कोई रेखाएँ नहीं होतीं। अगर आप टेबल की वजह से ही कन्वर्ट कर रहे हैं, तो PDF से Excel हर टेबल को ऐसी पंक्तियों और कॉलम में रखता है जिन पर आप काम कर सकें।
क्या यह स्कैन की हुई PDF पर काम करता है?
हाँ। जब टेक्स्ट लेयर नहीं होती, तो एक AI रिकग्निशन मॉडल आपके ब्राउज़र में चलकर पेज की तस्वीरों में से कैरेक्टर पढ़ता है। तब हेडिंग फ़ॉन्ट साइज़ के बजाय मापी गई लाइन की ऊँचाई से तय होती हैं, और कुछ भी अपलोड नहीं होता।