Làm cách nào để tạo một số loại mục lục trong wiki GitHub?


102

Nếu bạn xem ở đây: http://en.wikipedia.org/wiki/Stack_Overflow

Bạn sẽ nhận thấy có một phần "Nội dung" nhỏ, nếu bạn nhấp vào một trong các liên kết, nó sẽ đưa bạn đến một phần cụ thể trên trang.

Làm cách nào để thực hiện việc này trong GitHub wiki? Với Markdown hoặc bất cứ điều gì họ sử dụng?


3
Liên quan, nhưng không chính xác lặp lại, mà đi vào chi tiết hơn: stackoverflow.com/q/9721944/2291
Jon Adams

Câu trả lời:


111

Nó là độc đáo thể hiện trong Table of Contents của Markdown Cheatsheet .

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

Nếu bạn di chuột qua Header trong tệp GitHub Markdown, bạn sẽ thấy một liên kết nhỏ đơn giản ở bên trái của nó, bạn cũng có thể sử dụng liên kết đó. Định dạng cho liên kết đó là <project URL#<header name>. Tất cả <header name>phải là chữ thường.


36
Chắc chắn có một cách để tự động tạo nó giống như _ _ TOC _ _ của MediaWiki?
LB--

17
@ LB--: Nếu bạn chỉnh sửa trang wiki GitHub và thay đổi menu thả xuống "kiểu chỉnh sửa" thành "MediaWiki", bạn chỉ có thể sử dụng MediaWiki __TOC__trực tiếp. Rõ ràng là logic tự động cơ bản nằm ở đó. Nhưng chức năng dường như không được thể hiện trong phong cách chỉnh sửa Markdown của họ. Khá đáng tiếc. Tất cả hãy bắt đầu gửi yêu cầu tính năng cho nó và có thể họ sẽ bật nó lên.
Andrew Janke

3
Tôi dựa vào "logic tự động cơ bản" ở đó; có vẻ như các "kiểu chỉnh sửa" khác nhau đi qua các trình kết xuất khác nhau. Tuy nhiên, sẽ thật tuyệt nếu có điều này trong phiên bản MD vì nó khá phổ biến và không khó để thêm.
Andrew Janke

5
@AndrewJanke Tôi đã xem xét kỹ hơn, có vẻ như định dạng MarkDown không có bất kỳ hỗ trợ nào cho việc tự động tạo mục lục và họ tự hào về nó.
LB--

6
Có một lợi ích trong việc tạo liên kết. Chúng phải được viết thường. Tôi không biết điều đó và tự hỏi tại sao TOC của tôi không hoạt động. Tôi đã sử dụng #Headersthay vì #headers. Tôi nghĩ đó là lỗi đánh máy trong câu trả lời của bạn. Có lẽ bạn có thể thêm vào câu trả lời của bạn thông tin này.
t3chb0t

20

Một giải pháp khả thi (bán tự động) là của Eugene Kalinin github-markdown-toc. Về cơ bản, công cụ này sẽ xử lý README.mdtệp của bạn và tóm tắt #các tiêu đề để tạo TOC.

  1. Tải xuống tập lệnh https://github.com/ekalinin/github-markdown-toc
  2. Cung cấp cho bạn README.mdtập lệnh (như đã lưu ý trong Eugene's README.md)

    con mèo README.md | bash github-markdown-toc

  3. Cắt và dán TOC đã tạo và đặt nó ở đầu README.mdtệp của bạn

Lưu ý rằng bashtriển khai này chỉ hoạt động trên Linux (theo những gì tôi có thể nói).

Cũng cần lưu ý thêm, có một cách triển khai golang và có lẽ sẽ gặp nhiều rắc rối hơn khi làm việc.




12

Hiện tại, không thể thực hiện việc đó bằng cú pháp markdown ( .md). Đang có cuộc thảo luận không chính thức về việc tự động tạo mục lục TOC trên các tệp đánh dấu được hiển thị như README.mdliệt kê một số ý tưởng.

Tuy nhiên có một số cách giải quyết khác như:


1
Có, tôi đã được chuyển đổi phần lớn thành asciidoc cho ToC và liên kết đến các tiêu đề. Đã phát chán khi phải chờ Markdown bắt kịp.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

8

Nếu bạn không ở vị trí để gắn bó với Markdown , bạn có thể làm như dưới đây:

  • trên GitHub / wiki : chuyển Markdown sang MediaWiki . Sử dụng __TOC__Cú pháp. Xem mẫu .
  • trên GitHub / repo : chuyển Markdown thành AsciiDoc . Sử dụng :toc:Cú pháp. Xem bản demo .

Tuy nhiên, bằng cách sử dụng các tệp Markdown trong GitHub / repo , bạn có thể tải nó trên các Trang GitHub như trong Wikipedia

  • khi Jekyll được kích hoạt, nó tạo các Trang GitHub bằng Kramdown theo mặc định
  • Kramdown đi kèm Table Of Content. Sử dụng {:toc}Cú pháp. Xem lời giải thích .

5

Mã Visual Studio

Nếu bạn tình cờ sử dụng Visual Studio Code , có một tiện ích mở rộng dễ sử dụng được gọi là Markdown All in One có thể tạo TOC cho bất kỳ tệp .md nào ngay lập tức.

nhập mô tả hình ảnh ở đây

Chỉ cần mở Command Palette ( Ctrl-Shift-P) ->Markdown: Create Table of Contents

Md gốc Sau khi chèn TOC tự động

Tự động cập nhật làm xáo trộn TOC đã chỉnh sửa của bạn?

Là một mẹo bổ sung, bạn có thể muốn TẮT "cập nhật TOC tự động khi lưu" bằng cách sử dụng

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

trong Cài đặt Visual Studio của bạn (Bảng lệnh -> Tùy chọn: Mở Cài đặt (JSON)).



2

Do github có cách riêng để tạo thuộc tính id = ".." trong các tiêu đề h1, h2, h3, v.v. id = "slug") sẽ rất hữu ích nếu bạn không phát minh lại bánh xe và sử dụng thư viện đã thiết kế ngược quy trình này.

Tôi đã tìm thấy một thư viện khá tốt cho tác vụ này có tên là markdown-toc .

Đối với tôi, đó có vẻ là giải pháp tốt nhất vì tôi luôn cài đặt nút trên máy của mình.

Chỉ cần thực hiện npx markdown-toc -i file.md .

Và có vẻ như nó là một trong những công cụ phổ biến hơn cho tác vụ này - ít nhất là trong hệ sinh thái 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

đầu ra:

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.