जीआईटीएच-फ्लेवर्ड-मार्कडाउन में स्वचालित टीओसी


215

क्या जीथब फ्लेवर्ड मार्कडाउन का उपयोग करके सामग्री की एक स्वचालित तालिका उत्पन्न करना संभव है ?


2
चिह्नित- toc की कोशिश करो , यह बहुत आसान नहीं मिल सकता है।
jonschlinkert

1
यदि आप linux का उपयोग करते हैं और न ही कोई अतिरिक्त सॉफ़्टवेयर स्थापित करना चाहते हैं तो github-markdown-toc (केवल हुड के नीचे awk) आज़माएं ।
shorrty

मैं html में जेड टेम्प्लेट के अंदर कई मार्कडाउन फाइलों को रेंडर कर रहा हूं। इसलिए मुझे अपने टीओसी की आवश्यकता है जिसमें एक मार्कडाउन फाइल में पाया गया है। मेरा समाधान यह है कि TOC को HTML कोड से नोड.जेएस लाइब्रेरी से जेनरेट किया जाएtoc
प्लेटो

2
मैंने तीन अलग-अलग मार्कडाउन टीओसी जनरेटर बनाए हैं, जो ऊपर सूचीबद्ध किए गए मार्क-टू सहित "इसे सही" करने की कोशिश कर रहे हैं। markdown-toc मेरा पसंदीदा है, यह एक वास्तविक markdown parser का उपयोग करता है ( उल्लेखनीय है जो [commonmark] (commonmark.org) युक्ति का अनुसरण करता है, TOCs को अपडेट करने की अनुमति देता है, इसमें CLI और API है, और अब इसे हजारों प्रोजेक्ट्स पर उपयोग किया जाता है
jonschlinkert

जवाबों:


141

मैंने जीथब-फ्लेवर्ड-मार्कडाउन के लिए एक टो उत्पन्न करने के लिए दो विकल्प बनाए:

DocToc कमांड लाइन टूल ( स्रोत ) के लिए node.js की आवश्यकता होती है

स्थापना:

npm install doctoc

उपयोग:

npx doctoc . वर्तमान और सभी उप निर्देशिकाओं में सभी मार्कडाउन फ़ाइलों के लिए सामग्री की तालिका जोड़ने के लिए।

DocToc WebApp

यदि आप इसे पहले ऑनलाइन आज़माना चाहते हैं, तो डॉक्टॉक साइट पर जाएं, मार्कडाउन पेज के लिंक को पेस्ट करें और यह सामग्री की एक तालिका उत्पन्न करेगा जिसे आप अपनी मार्कडाउन फ़ाइल के शीर्ष पर सम्मिलित कर सकते हैं।

जीथब विकी और एंकर

जैसा कि मैथ्यू फ़्लेशेन ने नीचे दिए गए टिप्पणियों में बताया है, इसके विकी पृष्ठों के लिए GitHub ने पहले उन एंकरों को उत्पन्न नहीं किया था जो doctocनिर्भर करता है।

अद्यतन: हालांकि, उन्होंने इस मुद्दे को ठीक कर दिया


3
TOC ठीक दिखता है, लेकिन GitHub वास्तविक वर्गों के लिए एंकर उत्पन्न नहीं करता है, इसलिए लिंक टूट जाते हैं। मैं उन्हें अभी के लिए मैन्युअल रूप से जोड़ूंगा। यह एक GitHub विकि है।
मैथ्यू फ्लैशेन

2
इसे GitHub समस्या के रूप में लॉग किया गया है, विकी में शीर्षकों के लिए स्वचालित एंकर
मैथ्यू फ्लैशेन

1
यदि आप इसे मेरे जैसे कष्टप्रद पाते हैं, तो कृपया @ MathFlaschen की टिप्पणी और इस मुद्दे को +1 करने के लिए लिंक पर जाएं।
blak3r

2
@MatthewFlaschen आपका लिंक टूट गया - नया पता github.com/gollum/gollum/issues/380 है
एडम स्पीयर्स

3
DocToc वेब ऐप काम नहीं करता है। मैं प्रयोग किया जाता markdown-toc
DynamicDan

23

GitHub Pages (जो मूल रूप से Jekyll के लिए एक आवरण है) क्रामडाउन का उपयोग करता है , जो सभी मारुकु को लागू करता है , और इसलिए एक विशेषता के माध्यम से सामग्री की स्वचालित रूप से उत्पन्न तालिका के लिए समर्थन है toc:

* auto-gen TOC:
{:toc}

पहली पंक्ति बस एक अनियंत्रित सूची शुरू करती है और वास्तव में दूर फेंक दी जाती है।

यह दस्तावेज़ में शीर्षकों का उपयोग करते हुए, अनियंत्रित सूचियों के एक नेस्टेड सेट के परिणामस्वरूप होता है।

ध्यान दें: यह GitHub पेज के लिए काम करना चाहिए, न कि GitHub Flavoured Markdown (GFM) के रूप में टिप्पणियों या विकी पृष्ठों में उपयोग किया जाता है। AFAIK एक समाधान उस के लिए मौजूद नहीं है।


1
यह काम नहीं करता है। यह उस पाठ को प्रस्तुत करता है। क्या आप ऐसी फ़ाइल को लिंक कर सकते हैं जो इस तरह की TOC का उपयोग करती है?
जेफ्री डी स्मेट


2
ध्यान दें कि यह मारकु सुविधा है, प्रति मार्कडाउन नहीं है, और शायद जीएच फ्लेवर्डड मार्कडाउन भी नहीं है। जीएच-पेज हालांकि मारुकु का उपयोग करते हैं।
रेबेका स्कॉट

क्या आप निश्चित हैं? Jekyll में redcarpet शामिल है, लेकिन maruku अभी भी डिफ़ॉल्ट की तरह दिखता है (जब तक GH एक अलग jekyll कॉन्फिगर का उपयोग नहीं करता है) github.com/mojombo/jekyll/blob/master/lib/jekyll.rb#L66
रेबेका स्कॉट

10
@BenScott यह आपके समाधान की तरह लग रहा है केवल github पृष्ठों के लिए काम करता है। क्या आप गितुब विकी के समाधान के बारे में जानते हैं?
reprogrammer

13

यदि आप Vim के साथ Markdown फ़ाइलों को संपादित करते हैं, तो आप इस प्लगइन vim-markdown-toc को आज़मा सकते हैं

उपयोग सरल है, बस अपने कर्सर को उस स्थान पर ले जाएं जहां आप टेबल ऑफ कंटेंट जोड़ना चाहते हैं और चला सकते हैं :GenTocGFM , किया है!

स्क्रीनशॉट:

vim-markdown-toc

विशेषताएं:

  1. मार्कडाउन फ़ाइलों के लिए टो उत्पन्न करें। (GitHub फ्लेवर्डडाउन और रेडकारपेट का समर्थन करें)

  2. मौजूदा टो अपडेट करें।

  3. ऑटो अपडेट टो को सेव करें।


यदि आप सहयोग करते हैं, तो एक आम TOC शैली खोजना सुनिश्चित करें। md फाइलें और अलग-अलग संपादक / प्लगइन्स शामिल हैं जो TOC पर हर दूसरे कमिट में बदलाव नहीं कर सकते हैं। इसके लिए संभावित परिवर्धन ~/.vimrc: के साथ सूची चरित्र बदलें let g:vmt_list_item_char = "-", टीओसी से पहले शीर्षकों को शामिल करें let g:vmt_include_headings_before = 1। अधिक के लिए डॉक्स विकल्प अनुभाग देखें , जैसे कि बाड़ पाठ को कैसे बदलना है।
वोल्फसन

9

यह स्वचालित नहीं है, लेकिन यह नोटपैड ++ नियमित अभिव्यक्ति का उपयोग करता है:

पहले को दूसरे से बदलें (हेडर नहीं होने वाली सभी लाइनों को हटाता है)

^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z)
-\1\2 [\3](#\3)\n

तब (हेडर III को रिक्त स्थान में परिवर्तित करता है)

-##
        -

तब (हेडर II को रिक्त स्थान में परिवर्तित करता है)

-#
    -

तब (लिंक शीर्षक के अंत में शुरुआत में अप्रयुक्त चार्ट हटा दें)

\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\]
[\1]

तब (रिक्त स्थान के बजाय अंतिम टोकन लोअरकेस और डैश में कनवर्ट करें)

\]([^ \r\n]*) ([^\r\n ]*)
]\L\1-\2

अप्रयुक्त अंतिम पाउंड और प्रारंभिक डैश निकालें:

(?:()[-:;!\?#]+$|(\]#)-)
\1\2

लिंक में बेकार चार्ट निकालें:

(\].*?)(?:\(|\))
\1

और अंत में अंतिम लिंक के आसपास कोष्ठक जोड़ें:

\](?!\()(.*?)$
\]\(\1\)

और वॉयला! आप इसे वैश्विक मैक्रो में भी डाल सकते हैं यदि आप इसे पर्याप्त समय दोहराते हैं।


9

प्रस्तावित समाधानों को छोड़कर यह संभव नहीं है।

मैंने Kramdown TOC विस्तार और support_ithub.com और स्टीवन को अन्य संभावनाओं का प्रस्ताव दिया ! रगनारोक ने हमेशा की तरह जवाब दिया:

सुझाव और लिंक के लिए धन्यवाद। मैं इसे टीम में देखने के लिए हमारी आंतरिक सुविधा अनुरोध सूची में जोड़ दूंगा।

चलिए इस सवाल को तब तक उठाते हैं जब तक ऐसा नहीं हो जाता।

एक और वर्कअराउंड मार्कडाउन के बजाय असिसीडोक का उपयोग करना है, जो TOCs को रेंडर करता है । मैं आजकल अपनी सामग्री के लिए इस दृष्टिकोण पर चला गया हूं।


मुझे उम्मीद है कि GFM इसे किसी दिन प्रदान करेगी। यह वास्तव में मेरे लिए एक गलत बात है जबकि SourceForge के Markdown में डिफ़ॉल्ट रूप से इस TOC को उत्पन्न करने के लिए वाक्यविन्यास है ।
चेतबाहन

8

Github Flavoured Markdown अपने Markdown इंजन के रूप में RedCarpet का उपयोग करता है। से RedCarpet रेपो :

: with_toc_data - प्रत्येक HTML को आउटपुट से जोड़ने के लिए HTML एंकर को आउटपुट HTML में प्रत्येक हेडर में जोड़ें।

ऐसा लगता है कि आपको इस ध्वज को सेट करने के लिए रेंडरर स्तर पर प्राप्त करने की आवश्यकता होगी, जो स्पष्ट रूप से जीथब पर संभव नहीं है। हालाँकि, Github Pages का नवीनतम अपडेट , ऐसा लगता है कि हेडर के लिए स्वचालित एंकरिंग चालू है, जिससे लिंक करने योग्य शीर्षक बनते हैं। ठीक वैसा नहीं जैसा आप चाहते हैं, लेकिन इससे आपको अपने डॉक्टर के लिए एक टीओसी बनाने में थोड़ी आसानी हो सकती है (यद्यपि मैन्युअल रूप से)।


5

विजुअल स्टूडियो कोड के साथ काम करते समय मार्डाउन फाइल के लिए सामग्री की एक तालिका प्राप्त करने का एक बहुत ही सुविधाजनक तरीका है एक्सटेंशन मार्कडाउन-टीओसी

यह मौजूदा मार्कडाउन फ़ाइलों में एक toc जोड़ सकता है और यहां तक ​​कि बचत करने के लिए toc-to-date रख सकता है।

यहां छवि विवरण दर्ज करें


एक और अच्छा VS कोड प्लगइन (GitHub और GitLab जायकेदार TOC सहित अच्छे फीचर्स के साथ बढ़िया .md सपोर्ट) मार्कडाउन -ऑल-इन-वन है
वोल्फसन

4

फ़ाइल से http://documentup.com/ के साथ स्वचालित रूप से वेबपृष्ठ जेनरेट करना संभव है README.md। यह एक टीओसी नहीं बना रहा है, लेकिन कई लोगों के लिए यह टीओसी बनाने की इच्छा के कारण को हल कर सकता है।

डॉक्युमेंटअप का एक अन्य विकल्प है फ्लैटडॉक: http://ricostacruz.com/flatdoc/


3

Gitdown Github के लिए एक प्रीप्रोसेसर है।

Gitdown का उपयोग आप कर सकते हैं:

  • सामग्री की तालिका बनाएँ
  • मृत URL और फ्रैगमेंट आइडेंटिफ़ायर खोजें
  • चरों को शामिल करें
  • फाइलें शामिल करें
  • फ़ाइल का आकार प्राप्त करें
  • बैज जनरेट करें
  • प्रिंट दिनांक
  • स्वयं भंडार के बारे में जानकारी प्रिंट करें

गिटडाउन रिपॉजिटरी के लिए डॉक्यूमेंटेशन पेज को बनाए रखने से जुड़े सामान्य कार्यों को गिडडाउन सुव्यवस्थित करता है।

इसका उपयोग करना सीधा है:

var Gitdown = require('gitdown');

Gitdown
    // Gitdown flavored markdown.
    .read('.gitdown/README.md')
    // GitHub compatible markdown.
    .write('README.md');

आप या तो इसे एक अलग स्क्रिप्ट के रूप में ले सकते हैं या इसे बिल्ड स्क्रिप्ट रूटीन (जैसे कि गुल्प ) के हिस्से के रूप में ले सकते हैं ।



1

मेरे सहकर्मी @schmiedc और मैंने एक GreaseMonkey स्क्रिप्ट बनाई है जोTOC बटन के बायें एक नया बटन स्थापित h1करता है - जो उत्कृष्ट का उपयोग करता हैmarkdown-js सामग्री की तालिका को जोड़ने / ताज़ा करने के पुस्तकालय का ।

डॉकटॉक जैसे समाधानों पर लाभ यह है कि यह गीथहब के विकी संपादक में एकीकृत होता है और उपयोगकर्ताओं को उनकी कमांड-लाइन पर काम करने की आवश्यकता नहीं होती है (और उपयोगकर्ताओं को जैसे उपकरण स्थापित करने की आवश्यकता होती है node.js )। क्रोम में, यह एक्सटेंशन्स पेज में ड्रैग एन एन ड्रॉपिंग द्वारा काम करता है, फ़ायरफ़ॉक्स में आपको GreaseMonkey एक्सटेंशन इंस्टॉल करना होगा।

यह सादे मार्कडाउन के साथ काम करेगा (यानी यह कोड ब्लॉक को सही तरीके से नहीं संभालता है, क्योंकि यह मार्कडाउन के लिए GitHub एक्सटेंशन है)। योगदान का स्वागत करते हैं।


बहुत धन्यवाद! क्रोम में इसे स्थापित करने के लिए मुझे उत्तर के रूप में टेम्परमॉन्की का उपयोग करना पड़ा , और यह काम कर गया! गितुब रेपो में सामान्य मार्कडाउन फ़ाइलों के लिए टीओसी उत्पन्न करने के लिए अपनी स्क्रिप्ट बनाने में क्या लगेगा?
जीवनशैली

1

यह इस सवाल का सीधा जवाब नहीं है क्योंकि बहुत से लोगों ने वर्कअराउंड प्रदान किया है। मुझे नहीं लगता कि टीओसी का निर्माण आधिकारिक तौर पर गितुब द्वारा आज तक समर्थित है। यदि आप चाहते हैं कि GitHub अपने GFM पूर्वावलोकन पृष्ठों पर सामग्री तालिका को स्वचालित रूप से प्रस्तुत करे, तो कृपया आधिकारिक सुविधा अनुरोध मुद्दे पर चर्चा में भाग लें ।


0

वर्तमान में यह मार्कडाउन सिंटैक्स का उपयोग करना संभव नहीं है ( GitHub पर चल रही चर्चा देखें ), हालाँकि आप कुछ बाहरी उपकरणों जैसे:


AsciiDocइसके बजाय वैकल्पिक रूप से उपयोग करें (जैसे README.adoc), जैसे

:toc: macro
:toc-title:
:toclevels: 99
# Title

## A

### A2

## B

### B2

जैसा कि इस टिप्पणी में सुझाया गया है । यहां डेमो देखें ।


टेबल जनरेटर की ऑनलाइन तालिका (रेचन / प्ले-टेबल-ऑफ-कंटेंट) की मेजिंग की मेजबानी AWS की लागत के कारण बंद हो गई।
माइकल फ्रीजिम

0

के लिए Github के TextEditor एटम इस भयानक प्लगइन (या "पैकेज" एटम-शब्दावली में) है, जो उत्पन्न करता है की जाँच "टीओसी पार्स markdown से सुर्खियों की (सामग्री तालिका)" फाइलें:

markdown-toc

एक बार एटम-पैकेज के रूप में स्थापित होने ctrl-alt-cपर, आप वर्तमान कर्सर पर अपने मार्कडाउन-डॉक-संरचना के आधार पर टीओसी डालने के लिए शॉर्टकट का उपयोग कर सकते हैं ...

स्क्रीनशॉट:

यहां छवि विवरण दर्ज करें

एटम कीबाइंडिंग्स

markdown-toc आपको Atom में प्लगइन को नियंत्रित करने के लिए निम्नलिखित डिफ़ॉल्ट की-बाइंडिंग देता है:

  • ctrl-alt-c => TOC को कर्सर स्थिति पर बनाएं
  • ctrl-alt-u => TOC अपडेट करें
  • ctrl-alt-r => टीओसी हटाएं

प्लगइन सुविधाएँ (परियोजना की README से)

  • एंकर टैग के माध्यम से ऑटो लिंकिंग, जैसे # A 1#a-1
  • गहराई नियंत्रण [1-6] के साथ depthFrom:1औरdepthTo:6
  • के साथ लिंक को सक्षम या अक्षम करें withLinks:1
  • के साथ सहेजें पर ताज़ा सूची updateOnSave:1
  • ऑर्डर की गई सूची (1. ..., 2. ...) का उपयोग करें orderedList:0

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/^#//'

यदि किसी को उन अंतिम # प्रतिस्थापन को करने का एक बेहतर तरीका पता है, तो कृपया एक टिप्पणी जोड़ें। मैंने विभिन्न चीजों की कोशिश की और किसी के साथ खुश नहीं था, इसलिए मैंने बस इसे मजबूर किया।


0

अब एक GitHub Action इसे पूरा कर रही है:

https://github.com/marketplace/actions/toc-generator

  1. TOC का स्थान निर्दिष्ट करें (विकल्प) उदा README.md
<!-- START doctoc -->
<!-- END doctoc -->
  1. सेटअप वर्कफ़्लो उदा .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

0

अन्य उत्तरों के अधिकांश को कुछ उपकरण स्थापित करने की आवश्यकता होती है। मुझे एक त्वरित और आसान ऑनलाइन समाधान मिला https://imthenachoman.github.io/nGitHubTOC

किसी भी मार्कडाउन इनपुट के लिए यह कंटेंट आउटपुट की तालिका तैयार करता है। आप न्यूनतम और अधिकतम शीर्षक स्तर निर्दिष्ट कर सकते हैं।

स्रोत कोड https://github.com/imthenachoman/nGitHubTOC पर स्थित है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.