ฉันจะสร้างตารางเนื้อหาบางประเภทใน GitHub wiki ได้อย่างไร


114

หากคุณดูที่นี่: http://en.wikipedia.org/wiki/Stack_Overflow

คุณจะสังเกตเห็นว่ามีส่วน "เนื้อหา" เล็กน้อยหากคุณคลิกที่ลิงก์ใดลิงก์หนึ่งระบบจะส่งคุณไปยังส่วนเฉพาะในหน้านั้น

ฉันจะทำสิ่งนี้ใน GitHub wiki ได้อย่างไร ด้วย Markdown หรืออะไรก็ตามที่พวกเขาใช้?


3
ที่เกี่ยวข้อง แต่ไม่ซ้ำกันทุกประการซึ่งจะกล่าวถึงรายละเอียดเพิ่มเติม: stackoverflow.com/q/9721944/2291
Jon Adams

คำตอบ:


119

มันจะแสดงให้เห็นอย่างในสารบัญของMarkdown Cheatsheet

##### Table of Contents  
[Headers](#headers)  
[Emphasis](#emphasis)  
...snip...    
<a name="headers"/>
## Headers

หากคุณวางเมาส์เหนือ Header ในไฟล์ GitHub Markdown คุณจะเห็นลิงค์เล็ก ๆ ทางด้านซ้ายคุณสามารถใช้ลิงก์นั้นได้ <project URL#<header name>รูปแบบสำหรับการเชื่อมโยงที่เป็น <header name>จะต้องเป็นกรณีที่ต่ำกว่า


47
แน่นอนว่ามีวิธีสร้างอัตโนมัติเช่น _ _ TOC _ _ ของมีเดียวิกิ?
ปอนด์

20
@ LB--: หากคุณแก้ไขหน้า GitHub wiki และเปลี่ยนรายการแบบเลื่อนลง "สไตล์การแก้ไข" เป็น "MediaWiki" คุณสามารถใช้ MediaWiki __TOC__ได้โดยตรง เห็นได้ชัดว่าตรรกะของการสร้างอัตโนมัติอยู่ที่นั่น แต่ดูเหมือนว่าฟังก์ชันการทำงานจะไม่ถูกเปิดเผยในรูปแบบการแก้ไข Markdown ค่อนข้างโชคร้าย มาเริ่มส่งคำขอคุณสมบัติสำหรับมันและบางทีพวกเขาอาจจะเปิดใช้งาน
Andrew Janke

4
ฉันอ่าน "ตรรกะพื้นฐานการสร้างอัตโนมัติ" อยู่ที่นั่น ดูเหมือนว่า "สไตล์การแก้ไข" ที่แตกต่างกันจะต้องใช้ตัวแสดงผลที่แตกต่างกัน ยังคงเป็นเรื่องดีที่จะมีสิ่งนี้ในเวอร์ชัน MD เนื่องจากเป็นที่นิยมมากและไม่ยากที่จะเพิ่ม
Andrew Janke

6
@AndrewJanke ฉันดูมันมากขึ้นดูเหมือนว่ารูปแบบ MarkDown ไม่มีการรองรับการสร้างสารบัญอัตโนมัติและพวกเขาก็ภูมิใจกับมัน
ปอนด์

6
มีข้อสังเกตอย่างหนึ่งในการสร้างลิงก์ พวกเขาจะต้องเป็นตัวพิมพ์เล็ก ฉันไม่รู้และสงสัยว่าทำไม TOC ของฉันถึงไม่ทำงาน ฉันใช้#Headersแทน#headers. ฉันคิดว่าคำตอบของคุณพิมพ์ผิด บางทีคุณสามารถเพิ่มคำตอบของคุณข้อมูลนี้
t3chb0t

24

หนึ่งที่เป็นไปได้ (กึ่งอัตโนมัติ) github-markdown-tocการแก้ปัญหาคือยูคาฯ เครื่องมือนี้จะREADME.mdบีบอัดไฟล์ของคุณเป็นหลักและแยก#ส่วนหัวออกเพื่อสร้าง TOC

  1. ดาวน์โหลดสคริปต์https://github.com/ekalinin/github-markdown-toc
  2. ป้อนREADME.mdสคริปต์ของคุณ(ตามที่ระบุไว้ใน Eugene's README.md)

    แมว README.md | ทุบตี github-markdown-toc

  3. ตัดและวาง TOC ที่สร้างขึ้นและวางไว้ที่ด้านบนของREADME.mdไฟล์ของคุณ

โปรดทราบว่าbashการใช้งานนี้ใช้ได้กับ Linux เท่านั้น (จากสิ่งที่ฉันบอกได้)

โปรดทราบว่ามีการใช้งาน golang และอาจเป็นเรื่องยุ่งยากในการทำงาน


19

เนื่องจาก github ไม่สามารถใช้งานTOCได้โดยตรง แต่เรามีทางเลือกอื่น

คุณสามารถสร้าง TOC โดยอัตโนมัติผ่านเครื่องมือออนไลน์:

สร้างสารบัญ TOC จาก GitHub Markdown หรือ Wiki Online

ป้อนคำอธิบายภาพที่นี่

หรือผ่านเครื่องมือท้องถิ่น:

github-markdown-toc


14

https://github.com/jonschlinkert/markdown-toc

  • git clone your-repo.wiki.git(เพิ่ม.wikiสิทธิ์ก่อนที่.gitจะโคลนวิกิ
  • npm i -g markdown-toc
  • แทรก<!-- toc -->(ตรงตามตัวพิมพ์เล็กและใหญ่) ในมาร์กดาวน์ของวิกิ
  • markdown-toc -i my-wiki-markdown.md( -iจะแก้ไขในสถานที่)
  • กำไร

อัปเดต:ฉันคิดว่าตอนนี้https://github.com/thlorenz/doctocเป็นที่นิยมมากขึ้น


14

ขณะนี้ยังไม่สามารถทำได้โดยใช้ไวยากรณ์ markdown ( .md) มีการอภิปรายอย่างไม่เป็นทางการเกี่ยวกับการสร้างสารบัญ TOC โดยอัตโนมัติในไฟล์มาร์กดาวน์ที่แสดงผลREADME.mdซึ่งแสดงรายการแนวคิดบางส่วน

อย่างไรก็ตามมีวิธีแก้ปัญหาอื่น ๆ เช่น:


1
ใช่ฉันถูกแปลงเป็น asciidoc ส่วนใหญ่สำหรับ ToC และเชื่อมโยงกับส่วนหัว เบื่อกับการรอ Markdown ที่จะตามทัน
Ciro Santilli 郝海东冠状病六四事件法轮功

8

หากคุณไม่อยู่ในสถานะที่จะยึดติดกับMarkdownคุณสามารถทำได้ดังนี้:

  • บนGitHub / วิกิพีเดีย : สลับMarkdownเพื่อมีเดียวิกิ ใช้__TOC__ไวยากรณ์ ดูตัวอย่าง
  • บนGitHub / repo : สลับMarkdownเพื่อAsciiDoc ใช้:toc:ไวยากรณ์ ดูการสาธิต

อย่างไรก็ตามการใช้ไฟล์MarkdownในGitHub / repoคุณสามารถดาวน์โหลดได้จากหน้า GitHubเช่นในWikipedia

  • เมื่อเปิดใช้งานJekyllจะสร้างหน้า GitHubโดยใช้Kramdownตามค่าเริ่มต้น
  • Kramdownมาพร้อมกับTable Of Content. ใช้{:toc}ไวยากรณ์ ดูคำอธิบาย

7

รหัส Visual Studio

หากคุณใช้Visual Studio Codeมีส่วนขยายที่ใช้งานง่ายชื่อMarkdown All in Oneที่สามารถสร้าง TOC สำหรับไฟล์. md ใด ๆ ได้ในทันที

ป้อนคำอธิบายภาพที่นี่

เพียงเปิด Command Palette ( Ctrl-Shift-P) ->Markdown: Create Table of Contents

เอ็มดีเดิม หลังจากใส่ TOC อัตโนมัติ

การอัปเดตอัตโนมัติทำให้ TOC ที่แก้ไขของคุณยุ่งหรือไม่

เคล็ดลับเพิ่มเติมคุณอาจต้องการปิด "การอัปเดต TOC อัตโนมัติในการบันทึก" โดยใช้

  "markdown.extension.toc.updateOnSave": false,

ในการตั้งค่า Visual Studio ของคุณ (Command Palette -> Preferences: Open Settings (JSON))



2

เนื่องจาก github มีวิธีสร้างแอตทริบิวต์ id = ".. " ใน h1, h2, h3 และอื่น ๆ ... ส่วนหัวในเวอร์ชัน html หลังจากประมวลผล Markdown (ตัวอย่างเช่น Bitbucket ใช้รูปแบบที่แตกต่างกันเล็กน้อยของหัวเรื่อง sluggifying id = "slug") มีประโยชน์อย่างยิ่งที่จะไม่ต้องสร้างล้อใหม่และใช้ไลบรารีที่ออกแบบกระบวนการนี้แบบย้อนกลับ

ฉันพบไลบรารีที่ค่อนข้างดีสำหรับงานนี้ชื่อmarkdown-toc markdown-toc

สำหรับฉันดูเหมือนว่าจะเป็นทางออกที่ดีที่สุดเพราะฉันมักจะติดตั้งโหนดบนเครื่องของฉัน

เพียงแค่รันnpx markdown-toc -i file.md

และดูเหมือนว่ามันเป็นหนึ่งในเครื่องมือยอดนิยมสำหรับงานนี้ - อย่างน้อยก็ในระบบนิเวศ node.js

ls
cat <<EOF >> test.md | tee 
## Table of Contents

<!-- toc -->
- old toc 1
- old toc 2
- old toc 3
<!-- tocstop -->

## abc
This is a b c.

## xyz
This is x y z.
EOF
ls
cat test.md
npx markdown-toc -i test.md
cat test.md

เอาท์พุท:

ป้อนคำอธิบายภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.