क्या जीथब फ्लेवर्ड मार्कडाउन का उपयोग करके सामग्री की एक स्वचालित तालिका उत्पन्न करना संभव है ?
क्या जीथब फ्लेवर्ड मार्कडाउन का उपयोग करके सामग्री की एक स्वचालित तालिका उत्पन्न करना संभव है ?
जवाबों:
मैंने जीथब-फ्लेवर्ड-मार्कडाउन के लिए एक टो उत्पन्न करने के लिए दो विकल्प बनाए:
npm install doctoc
npx doctoc .
वर्तमान और सभी उप निर्देशिकाओं में सभी मार्कडाउन फ़ाइलों के लिए सामग्री की तालिका जोड़ने के लिए।
यदि आप इसे पहले ऑनलाइन आज़माना चाहते हैं, तो डॉक्टॉक साइट पर जाएं, मार्कडाउन पेज के लिंक को पेस्ट करें और यह सामग्री की एक तालिका उत्पन्न करेगा जिसे आप अपनी मार्कडाउन फ़ाइल के शीर्ष पर सम्मिलित कर सकते हैं।
जैसा कि मैथ्यू फ़्लेशेन ने नीचे दिए गए टिप्पणियों में बताया है, इसके विकी पृष्ठों के लिए GitHub ने पहले उन एंकरों को उत्पन्न नहीं किया था जो doctoc
निर्भर करता है।
अद्यतन: हालांकि, उन्होंने इस मुद्दे को ठीक कर दिया ।
GitHub Pages (जो मूल रूप से Jekyll के लिए एक आवरण है) क्रामडाउन का उपयोग करता है , जो सभी मारुकु को लागू करता है , और इसलिए एक विशेषता के माध्यम से सामग्री की स्वचालित रूप से उत्पन्न तालिका के लिए समर्थन है toc
:
* auto-gen TOC:
{:toc}
पहली पंक्ति बस एक अनियंत्रित सूची शुरू करती है और वास्तव में दूर फेंक दी जाती है।
यह दस्तावेज़ में शीर्षकों का उपयोग करते हुए, अनियंत्रित सूचियों के एक नेस्टेड सेट के परिणामस्वरूप होता है।
ध्यान दें: यह GitHub पेज के लिए काम करना चाहिए, न कि GitHub Flavoured Markdown (GFM) के रूप में टिप्पणियों या विकी पृष्ठों में उपयोग किया जाता है। AFAIK एक समाधान उस के लिए मौजूद नहीं है।
यदि आप Vim के साथ Markdown फ़ाइलों को संपादित करते हैं, तो आप इस प्लगइन vim-markdown-toc को आज़मा सकते हैं ।
उपयोग सरल है, बस अपने कर्सर को उस स्थान पर ले जाएं जहां आप टेबल ऑफ कंटेंट जोड़ना चाहते हैं और चला सकते हैं :GenTocGFM
, किया है!
स्क्रीनशॉट:
विशेषताएं:
मार्कडाउन फ़ाइलों के लिए टो उत्पन्न करें। (GitHub फ्लेवर्डडाउन और रेडकारपेट का समर्थन करें)
मौजूदा टो अपडेट करें।
ऑटो अपडेट टो को सेव करें।
~/.vimrc
: के साथ सूची चरित्र बदलें let g:vmt_list_item_char = "-"
, टीओसी से पहले शीर्षकों को शामिल करें let g:vmt_include_headings_before = 1
। अधिक के लिए डॉक्स विकल्प अनुभाग देखें , जैसे कि बाड़ पाठ को कैसे बदलना है।
यह स्वचालित नहीं है, लेकिन यह नोटपैड ++ नियमित अभिव्यक्ति का उपयोग करता है:
पहले को दूसरे से बदलें (हेडर नहीं होने वाली सभी लाइनों को हटाता है)
^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z)
-\1\2 [\3](#\3)\n
तब (हेडर III को रिक्त स्थान में परिवर्तित करता है)
-##
-
तब (हेडर II को रिक्त स्थान में परिवर्तित करता है)
-#
-
तब (लिंक शीर्षक के अंत में शुरुआत में अप्रयुक्त चार्ट हटा दें)
\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\]
[\1]
तब (रिक्त स्थान के बजाय अंतिम टोकन लोअरकेस और डैश में कनवर्ट करें)
\]([^ \r\n]*) ([^\r\n ]*)
]\L\1-\2
अप्रयुक्त अंतिम पाउंड और प्रारंभिक डैश निकालें:
(?:()[-:;!\?#]+$|(\]#)-)
\1\2
लिंक में बेकार चार्ट निकालें:
(\].*?)(?:\(|\))
\1
और अंत में अंतिम लिंक के आसपास कोष्ठक जोड़ें:
\](?!\()(.*?)$
\]\(\1\)
और वॉयला! आप इसे वैश्विक मैक्रो में भी डाल सकते हैं यदि आप इसे पर्याप्त समय दोहराते हैं।
प्रस्तावित समाधानों को छोड़कर यह संभव नहीं है।
मैंने Kramdown TOC विस्तार और support_ithub.com और स्टीवन को अन्य संभावनाओं का प्रस्ताव दिया ! रगनारोक ने हमेशा की तरह जवाब दिया:
सुझाव और लिंक के लिए धन्यवाद। मैं इसे टीम में देखने के लिए हमारी आंतरिक सुविधा अनुरोध सूची में जोड़ दूंगा।
चलिए इस सवाल को तब तक उठाते हैं जब तक ऐसा नहीं हो जाता।
एक और वर्कअराउंड मार्कडाउन के बजाय असिसीडोक का उपयोग करना है, जो TOCs को रेंडर करता है । मैं आजकल अपनी सामग्री के लिए इस दृष्टिकोण पर चला गया हूं।
Github Flavoured Markdown अपने Markdown इंजन के रूप में RedCarpet का उपयोग करता है। से RedCarpet रेपो :
: with_toc_data - प्रत्येक HTML को आउटपुट से जोड़ने के लिए HTML एंकर को आउटपुट HTML में प्रत्येक हेडर में जोड़ें।
ऐसा लगता है कि आपको इस ध्वज को सेट करने के लिए रेंडरर स्तर पर प्राप्त करने की आवश्यकता होगी, जो स्पष्ट रूप से जीथब पर संभव नहीं है। हालाँकि, Github Pages का नवीनतम अपडेट , ऐसा लगता है कि हेडर के लिए स्वचालित एंकरिंग चालू है, जिससे लिंक करने योग्य शीर्षक बनते हैं। ठीक वैसा नहीं जैसा आप चाहते हैं, लेकिन इससे आपको अपने डॉक्टर के लिए एक टीओसी बनाने में थोड़ी आसानी हो सकती है (यद्यपि मैन्युअल रूप से)।
विजुअल स्टूडियो कोड के साथ काम करते समय मार्डाउन फाइल के लिए सामग्री की एक तालिका प्राप्त करने का एक बहुत ही सुविधाजनक तरीका है एक्सटेंशन मार्कडाउन-टीओसी ।
यह मौजूदा मार्कडाउन फ़ाइलों में एक toc जोड़ सकता है और यहां तक कि बचत करने के लिए toc-to-date रख सकता है।
फ़ाइल से http://documentup.com/ के साथ स्वचालित रूप से वेबपृष्ठ जेनरेट करना संभव है README.md
। यह एक टीओसी नहीं बना रहा है, लेकिन कई लोगों के लिए यह टीओसी बनाने की इच्छा के कारण को हल कर सकता है।
डॉक्युमेंटअप का एक अन्य विकल्प है फ्लैटडॉक: http://ricostacruz.com/flatdoc/
Gitdown Github के लिए एक प्रीप्रोसेसर है।
Gitdown का उपयोग आप कर सकते हैं:
गिटडाउन रिपॉजिटरी के लिए डॉक्यूमेंटेशन पेज को बनाए रखने से जुड़े सामान्य कार्यों को गिडडाउन सुव्यवस्थित करता है।
इसका उपयोग करना सीधा है:
var Gitdown = require('gitdown');
Gitdown
// Gitdown flavored markdown.
.read('.gitdown/README.md')
// GitHub compatible markdown.
.write('README.md');
आप या तो इसे एक अलग स्क्रिप्ट के रूप में ले सकते हैं या इसे बिल्ड स्क्रिप्ट रूटीन (जैसे कि गुल्प ) के हिस्से के रूप में ले सकते हैं ।
उपयोग coryfklein / doctoc , का एक कांटा thlorenz / doctoc है कि "नहीं जोड़ता है के साथ उत्पन्न DocToc " सामग्री के हर मेज पर।
npm install -g coryfklein/doctoc
मेरे सहकर्मी @schmiedc और मैंने एक GreaseMonkey स्क्रिप्ट बनाई है जोTOC
बटन के बायें एक नया बटन स्थापित h1
करता है - जो उत्कृष्ट का उपयोग करता हैmarkdown-js
सामग्री की तालिका को जोड़ने / ताज़ा करने के पुस्तकालय का ।
डॉकटॉक जैसे समाधानों पर लाभ यह है कि यह गीथहब के विकी संपादक में एकीकृत होता है और उपयोगकर्ताओं को उनकी कमांड-लाइन पर काम करने की आवश्यकता नहीं होती है (और उपयोगकर्ताओं को जैसे उपकरण स्थापित करने की आवश्यकता होती है node.js
)। क्रोम में, यह एक्सटेंशन्स पेज में ड्रैग एन एन ड्रॉपिंग द्वारा काम करता है, फ़ायरफ़ॉक्स में आपको GreaseMonkey एक्सटेंशन इंस्टॉल करना होगा।
यह सादे मार्कडाउन के साथ काम करेगा (यानी यह कोड ब्लॉक को सही तरीके से नहीं संभालता है, क्योंकि यह मार्कडाउन के लिए GitHub एक्सटेंशन है)। योगदान का स्वागत करते हैं।
यह इस सवाल का सीधा जवाब नहीं है क्योंकि बहुत से लोगों ने वर्कअराउंड प्रदान किया है। मुझे नहीं लगता कि टीओसी का निर्माण आधिकारिक तौर पर गितुब द्वारा आज तक समर्थित है। यदि आप चाहते हैं कि GitHub अपने GFM पूर्वावलोकन पृष्ठों पर सामग्री तालिका को स्वचालित रूप से प्रस्तुत करे, तो कृपया आधिकारिक सुविधा अनुरोध मुद्दे पर चर्चा में भाग लें ।
वर्तमान में यह मार्कडाउन सिंटैक्स का उपयोग करना संभव नहीं है ( GitHub पर चल रही चर्चा देखें ), हालाँकि आप कुछ बाहरी उपकरणों जैसे:
AsciiDoc
इसके बजाय वैकल्पिक रूप से उपयोग करें (जैसे README.adoc
), जैसे
:toc: macro
:toc-title:
:toclevels: 99
# Title
## A
### A2
## B
### B2
के लिए Github के TextEditor एटम इस भयानक प्लगइन (या "पैकेज" एटम-शब्दावली में) है, जो उत्पन्न करता है की जाँच "टीओसी पार्स markdown से सुर्खियों की (सामग्री तालिका)" फाइलें:
एक बार एटम-पैकेज के रूप में स्थापित होने ctrl-alt-c
पर, आप वर्तमान कर्सर पर अपने मार्कडाउन-डॉक-संरचना के आधार पर टीओसी डालने के लिए शॉर्टकट का उपयोग कर सकते हैं ...
स्क्रीनशॉट:
एटम कीबाइंडिंग्स
markdown-toc आपको Atom में प्लगइन को नियंत्रित करने के लिए निम्नलिखित डिफ़ॉल्ट की-बाइंडिंग देता है:
ctrl-alt-c
=> TOC को कर्सर स्थिति पर बनाएं ctrl-alt-u
=> TOC अपडेट करें ctrl-alt-r
=> टीओसी हटाएं प्लगइन सुविधाएँ (परियोजना की README से)
# A 1
→#a-1
depthFrom:1
औरdepthTo:6
withLinks:1
updateOnSave:1
orderedList:0
यहाँ एक शेल स्क्रिप्ट है जिसे मैंने इसके लिए आज एक साथ फेंक दिया है। अपनी आवश्यकताओं के लिए इसे ट्विक करने की आवश्यकता हो सकती है, लेकिन यह एक अच्छा प्रारंभिक बिंदु होना चाहिए।
cat README.md \
| sed -e '/```/ r pf' -e '/```/,/```/d' \
| grep "^#" \
| tail -n +2 \
| tr -d '`' \
| sed 's/# \([a-zA-Z0-9`. -]\+\)/- [\1](#\L\1)/' \
| awk -F'(' '{for(i=2;i<=NF;i++)if(i==2)gsub(" ","-",$i);}1' OFS='(' \
| sed 's/^####/ /' \
| sed 's/^###/ /' \
| sed 's/^##/ /' \
| sed 's/^#//'
यदि किसी को उन अंतिम # प्रतिस्थापन को करने का एक बेहतर तरीका पता है, तो कृपया एक टिप्पणी जोड़ें। मैंने विभिन्न चीजों की कोशिश की और किसी के साथ खुश नहीं था, इसलिए मैंने बस इसे मजबूर किया।
अब एक GitHub Action इसे पूरा कर रही है:
https://github.com/marketplace/actions/toc-generator
README.md
<!-- START doctoc -->
<!-- END doctoc -->
.github/workflows/toc.yml
on: push
name: TOC Generator
jobs:
generateTOC:
name: TOC Generator
runs-on: ubuntu-latest
steps:
- uses: technote-space/toc-generator@v2
अन्य उत्तरों के अधिकांश को कुछ उपकरण स्थापित करने की आवश्यकता होती है। मुझे एक त्वरित और आसान ऑनलाइन समाधान मिला https://imthenachoman.github.io/nGitHubTOC ।
किसी भी मार्कडाउन इनपुट के लिए यह कंटेंट आउटपुट की तालिका तैयार करता है। आप न्यूनतम और अधिकतम शीर्षक स्तर निर्दिष्ट कर सकते हैं।
स्रोत कोड https://github.com/imthenachoman/nGitHubTOC पर स्थित है