Đánh dấu để tạo trang và mục lục?


358

Tôi bắt đầu sử dụng markdown để ghi chú.

Tôi sử dụng đánh dấu để xem ghi chú của tôi và nó đẹp.

Nhưng khi các ghi chú của tôi dài hơn, tôi cảm thấy khó khăn để tìm thấy những gì tôi muốn.

Tôi biết markdown có thể tạo bảng, nhưng nó có thể tạo mục lục, nhảy đến các phần hoặc xác định các phần trang trong markdown không?

Ngoài ra, có những độc giả / biên tập viên có thể làm những việc như vậy. Tìm kiếm sẽ là tính năng tốt để có quá.

Nói tóm lại, tôi muốn biến nó thành công cụ ghi chú tuyệt vời của tôi và các chức năng giống như viết một cuốn sách, v.v.


2
nếu bạn muốn sử dụng công cụ javascript / node.js, hãy thử đánh dấu-toc
jonschlinkert

@jonschlinkert Bạn nên gửi câu trả lời! Hiện tại, các câu trả lời chỉ đề xuất các công cụ không miễn phí hoặc Python. Không thực sự là một bộ tuyệt vời của sự lựa chọn.
Domi

8
Tôi có lẽ nên đề cập rằng trong LaTeX điều này đạt được với \tableofcontents. Nếu bánh xe sẽ được phát minh lại, tốt nhất là sao chép các bộ phận tốt.
Eero Aaltonen


Tương tự reSturationuredText có một chỉ thị tích hợp cho mục lục mà ở dạng đơn giản nhất trông giống như .. contents::.
saaj

Câu trả lời:


37

MultiMarkdown Composer dường như tạo ra một bảng nội dung để hỗ trợ trong khi chỉnh sửa.

Cũng có thể có một hoặc thư viện khác, những người có thể tạo TOC: xem phần mở rộng Python Markdown TOC .


17
Trình soạn thảo MultiMarkdown chỉ dành cho MacOS
chmike

1
Liên kết TOC Python Markdown hoạt động: python-markdown.github.io/extensions/toc
John

2
Ứng dụng này không có sẵn ở khu vực Vương quốc Anh.
kenorb

Tiện ích mở rộng TOC tạo mã thông báo HTML, không phải Markdown. Điều đáng chú ý là điều này là khó khăn.
rjurney

394

Bạn có thể thử cái này

# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
4. [Fourth Example](#fourth-examplehttpwwwfourthexamplecom)


## Example
## Example2
## Third Example
## [Fourth Example](http://www.fourthexample.com) 

10
Ví dụ thứ 3 ở trên không hoạt động. ## Example ## "Example2" ## Third Example<a name="third-example" /> là cách duy nhất tôi có thể khiến nó nuốt chửng không gian cho đến nay. Chắc chắn thẻ thứ 3 sẽ được hiểu là - #Third- theo sau là khoảng trắng - sau đó là từ Ví dụ - trong đoạn trích của bạn ở trên? Hyphens hoàn toàn không hoạt động. Cảm ơn
Twobob

Ví dụ là có để làm ví dụ cho nhiều hơn một từ. Tất cả các từ được chia thành không khóa mũ, và không có khoảng trắng.
Rick

6
Hoạt động tốt trong RStudio. Chỉ muốn thêm rằng các ô tiếng Đức, ví dụ: ü cần phải được viết mà không có âm sắc trong neo, ví dụ1. [Einführung](#einfuhrung)
steinbock

4
Các neo không được tạo tự động cho các tiêu đề trong Bitbucket v4.5.2
Mike Rylander

1
Ví dụ thứ tư đó là những gì tôi đang tìm kiếm. Cảm ơn!
kenecaswell

220

Đây là một phương pháp hữu ích. Nên tạo các tham chiếu có thể nhấp trong bất kỳ trình soạn thảo MarkDown nào.

# Table of contents
1. [Introduction](#introduction)
2. [Some paragraph](#paragraph1)
    1. [Sub paragraph](#subparagraph1)
3. [Another paragraph](#paragraph2)

## This is the introduction <a name="introduction"></a>
Some introduction text, formatted in heading 2 style

## Some paragraph <a name="paragraph1"></a>
The first paragraph text

### Sub paragraph <a name="subparagraph1"></a>
This is a sub paragraph, formatted in heading 3 style

## Another paragraph <a name="paragraph2"></a>
The second paragraph text

Sản xuất:

Mục lục

  1. Giới thiệu
  2. Một số đoạn
    1. Đoạn văn phụ
  3. Một đoạn khác

Đây là phần giới thiệu

Một số văn bản giới thiệu, được định dạng theo kiểu 2

Một số đoạn

Đoạn văn bản đầu tiên

Đoạn văn phụ

Đây là một đoạn phụ, được định dạng theo kiểu 3

Một đoạn khác

Đoạn văn bản thứ hai


22
Tôi muốn đặt thẻ neo trên dòng phía trên tiêu đề để khi nhấp vào liên kết, tiêu đề sẽ hiển thị trên trang.
mgarey

4
Đây là người duy nhất hữu ích cho tôi. Với các tiêu đề dài, không thể làm điều đó mà không có thẻ neo.
Matt Fletcher

Điều này thực sự tốt đẹp. Tôi bắt đầu đặt Mục lục trong tất cả các sổ ghi chép Jupyter của mình để nhanh chóng điều hướng giữa các phần.
jackdbd

@mgarey Chỉ cần đặt neo trước:## <a name="foo" /> Foo
tobias_k

40

Đối với người dùng Visual Studio Code , một ý tưởng hay là sử dụng Markdown TOC plugin .

Để cài đặt nó, khởi chạy VS Code Quick Open ( Control/⌘+ P), dán lệnh sau và nhấn enter.

ext install markdown-toc

Và để tạo TOC, hãy mở bảng lệnh ( Control/⌘+ Shift+ P) và chọn Markdown TOC:Insert/Update optionhoặc sử dụng Control/⌘+ MT.


7
Lưu ý: Tôi chỉ thấy rằng bằng cách sử dụng stock VSCode, bạn có thể tạo liên kết đánh dấu đến các tiêu đề: [Section Foo](#foo-header-title)và thậm chí nó hoạt động bên ngoài chế độ xem trước (nghĩa là trong đánh dấu đơn giản).
Kitsu.eb

4
một lựa chọn khác cho VSCode là vscode-markdown có nhiều tính năng, bao gồm
ToC

26

Bạn có thể thử tập lệnh ruby ​​này để tạo TOC từ tệp đánh dấu.

 #!/usr/bin/env ruby

require 'uri'

fileName = ARGV[0]
fileName = "README.md" if !fileName

File.open(fileName, 'r') do |f|
  inside_code_snippet = false
  f.each_line do |line|
    forbidden_words = ['Table of contents', 'define', 'pragma']
    inside_code_snippet = !inside_code_snippet if line.start_with?('```')
    next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ } || inside_code_snippet

    title = line.gsub("#", "").strip
    href = URI::encode title.gsub(" ", "-").downcase
    puts "  " * (line.count("#")-1) + "* [#{title}](\##{href})"
  end
end

Tuyệt quá! Chỉ cần một lưu ý, có thể muốn thêm ifndef, includeendif, trong số những chỉ thị tiền xử lý khác, vào danh sách từ bị cấm. Ngoài ra, việc xác định danh sách ngoài phạm vi của vòng lặp sẽ tránh phải xác định lại danh sách đó với mỗi lần lặp. Ngoài ra, điều này sẽ nhận bình luận của bất kỳ ngôn ngữ sử dụng# cú pháp nhận xét, bao gồm Ruby, không tốt. Tôi sẵn sàng chỉnh sửa nếu bạn muốn. Tuy nhiên đây là một khởi đầu tuyệt vời và hoạt động tốt cho mục đích của tôi. Cám ơn rất nhiều!
Jeff Klein

Điều này chỉ hoạt động với các tiêu đề atx (tức là các tiêu đề bắt đầu bằng #), không hoạt động với các tiêu đề setext (gạch chân).
gozzilli

cảm ơn vì điều này, nếu bạn đang sử dụng cái này cho redcarpet trên đường ray, bạn nên đi cùng với title.parameterizehref, cảm ơn!
Alexis

25

Có 2 cách để tạo TOC của bạn (tóm tắt) trong tài liệu đánh dấu của bạn.

1. Thủ công

# My Table of content
- [Section 1](#id-section1)
- [Section 2](#id-section2)

<div id='id-section1'/>
## Section 1
<div id='id-section2'/>
## Section 2

2. Lập trình

Bạn có thể sử dụng ví dụ một tập lệnh tạo tóm tắt cho bạn, hãy xem dự án của tôi trên github - Tóm tắtMD -

Tôi cũng đã thử mô-đun script / npm khác (ví dụ doctoc ) nhưng không ai tạo ra TOC với các neo hoạt động.


`` <div id = ... `không được MarkdownPad2 (Windows) nhận ra
chmike

Chỉ hoạt động trong cùng một thư mục, cũng không hoạt động cho các tiêu đề setext.
gozzilli

25
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)

## Example [](#){name=example}
## Example2 [](#){name=example2}
## [Third Example](#){name=third-example}

Nếu bạn sử dụng thêm markdown, đừng quên bạn có thể thêm các thuộc tính đặc biệt vào liên kết, tiêu đề, hàng rào mã và hình ảnh.
https://michelf.ca/projects/php-markdown/extra/#spe-attr


11

Các thẻ neo được tạo bởi các trình phân tích cú pháp Markdown khác nhau thậm chí không có.

Nếu bạn đang làm việc với trình phân tích cú pháp Markdown GFM (GitHub Flavored Markdown) hoặc Redcarpet, tôi đã viết một plugin Vim để xử lý mục lục.

Đặc trưng

  1. Tạo mục lục cho các tệp Markdown.

    Trình phân tích cú pháp Markdown được hỗ trợ:

    • GFM (GitHub Hương vị Markdown)
    • Thảm đỏ
  2. Cập nhật mục lục hiện có.

  3. Tự động cập nhật mục lục hiện có khi lưu.

Ảnh chụp màn hình

vim-markdown-toc

Sử dụng

Tạo mục lục

Di chuyển con trỏ đến dòng bạn muốn nối thêm mục lục, sau đó nhập lệnh bên dưới phù hợp với bạn. Lệnh sẽ tạo các tiêu đề sau khi con trỏ vào mục lục.

  1. :GenTocGFM

    Tạo mục lục theo kiểu liên kết GFM.

    Lệnh này phù hợp với các tệp Markdown trong kho GitHub, như README.md và các tệp Markdown cho GitBook.

  2. :GenTocRedcarpet

    Tạo mục lục theo kiểu liên kết Redcarpet.

    Lệnh này phù hợp với Jekyll hoặc bất kỳ nơi nào khác sử dụng Redcarpet làm trình phân tích cú pháp Markdown của nó.

    Bạn có thể xem tại đây để biết sự khác biệt giữa các liên kết toc kiểu GFM và Redcarpet.

Cập nhật mục lục hiện có theo cách thủ công

Nói chung, bạn không cần phải làm điều này, mục lục hiện có sẽ tự động cập nhật khi lưu theo mặc định. Nếu bạn muốn làm điều đó bằng tay, chỉ cần sử dụng :UpdateToclệnh.

Tải xuống và tài liệu

https://github.com/mzlogin/vim-markdown-toc


10

Bạn cũng có thể sử dụng pandoc, các "con dao swiss-quân đội" để chuyển đổi "một định dạng đánh dấu vào một" . Nó có thể tự động tạo một bảng nội dung trong tài liệu đầu ra nếu bạn cung cấp --tocđối số.

Gợi ý: Nếu bạn muốn có một mục lục trong htmlđầu ra, bạn cũng cần cung cấp-s để tạo ra một tài liệu độc lập.

Ví dụ dòng lệnh shell:

./pandoc -s --toc input.md -o output.html



7

Bạn có thể tạo nó bằng cách sử dụng bash one-liner này. Giả sử tập tin markdown của bạn được gọi FILE.md.

echo "## Contents" ; echo ; 
cat FILE.md | grep '^## ' | grep -v Contents | sed 's/^## //' | 
  while read -r title ; do 
    link=$(echo $title | tr 'A-Z ' 'a-z-') ; 
    echo "- [$title](#$link)" ; 
    done

Điều đó thật tuyệt. Sẽ có giá trị viết lại nó như một kịch bản phù hợp với tên tệp là đối số và có thể xử lý các phần phụ.
MasterScrat

6

Tôi vừa mã hóa một phần mở rộng cho python-markdown, sử dụng trình phân tích cú pháp của nó để truy xuất các tiêu đề và xuất ra một danh sách TOC dưới dạng Markdown được định dạng với các liên kết cục bộ. Các tập tin là

... và nó nên được đặt trong markdown/extensions/thư mục trong phần cài đặt markdown. Sau đó, tất cả những gì bạn phải làm là nhập <a>các thẻ neo với id="..."thuộc tính làm tham chiếu - vì vậy đối với văn bản đầu vào như thế này:

$ cat test.md 
Hello
=====

## <a id="sect one"></a>SECTION ONE ##

something here

### <a id='sect two'>eh</a>SECTION TWO ###

something else

#### SECTION THREE

nothing here

### <a id="four"></a>SECTION FOUR

also...

... phần mở rộng có thể được gọi như thế này:

$ python -m markdown -x md_toc test.md 
* Hello
    * [SECTION ONE](#sect one)
        * [SECTION TWO](#sect two)
            * SECTION THREE
        * [SECTION FOUR](#four)

... và sau đó bạn có thể dán lại mã thông báo này trong tài liệu đánh dấu của bạn (hoặc có một phím tắt trong trình soạn thảo văn bản của bạn, gọi tập lệnh trên tài liệu hiện đang mở, sau đó chèn TOC kết quả vào cùng một tài liệu).

Lưu ý rằng các phiên bản cũ hơn python-markdownkhông có __main__.pymô-đun và như vậy, lệnh gọi dòng lệnh như trên sẽ không hoạt động đối với các phiên bản đó.


6

Như đã đề cập trong các câu trả lời khác, có nhiều cách để tạo bảng mục lục tự động. Hầu hết là phần mềm nguồn mở và có thể phù hợp với nhu cầu của bạn.

Tuy nhiên, điều tôi thiếu là một định dạng hấp dẫn trực quan cho một mục lục, sử dụng các tùy chọn giới hạn mà Markdown cung cấp. Chúng tôi đã đưa ra những điều sau đây:

## Content

**[1. Markdown](#heading--1)**

  * [1.1. Markdown formatting cheatsheet](#heading--1-1)
  * [1.2. Markdown formatting details](#heading--1-2)

**[2. BBCode formatting](#heading--2)**

  * [2.1. Basic text formatting](#heading--2-1)

      * [2.1.1. Not so basic text formatting](#heading--2-1-1)

  * [2.2. Lists, Images, Code](#heading--2-2)
  * [2.3. Special features](#heading--2-3)

----

Trong tài liệu của bạn, bạn sẽ đặt các dấu phụ phụ mục tiêu như thế này:

<div id="heading--1-1"/>
### 1.1. Markdown formatting cheatsheet

Tùy thuộc vào vị trí và cách bạn sử dụng Markdown, những điều sau đây cũng sẽ hoạt động và cung cấp mã Markdown trông đẹp hơn:

### 1.1. Markdown formatting cheatsheet <a name="heading--1-1"/>

Kết xuất ví dụ

Nội dung

1. Đánh dấu

2. Định dạng BBCode


Ưu điểm

  • Bạn có thể thêm bao nhiêu cấp chương và chương phụ nếu bạn cần. Trong Mục lục, chúng sẽ xuất hiện dưới dạng các danh sách không có thứ tự lồng nhau ở các cấp độ sâu hơn.

  • Không sử dụng danh sách đặt hàng. Chúng sẽ tạo ra một vết lõm, sẽ không liên kết số và không thể được sử dụng để tạo đánh số phân loại thập phân như "1.1.".

  • Không sử dụng danh sách cho cấp độ đầu tiên. Ở đây, sử dụng danh sách không có thứ tự là có thể, nhưng không cần thiết: thụt đầu dòng và dấu đầu dòng chỉ thêm lộn xộn thị giác và không có chức năng nào ở đây, vì vậy chúng tôi không sử dụng danh sách cho cấp ToC đầu tiên.

  • Nhấn mạnh trực quan vào các phần cấp đầu tiên trong bảng nội dung bằng cách in đậm.

  • Các dấu phụ phụ ngắn, có ý nghĩa trông "đẹp" trong thanh URL của trình duyệt, #heading--1-1thay vì các điểm đánh dấu có chứa các phần được chuyển đổi của tiêu đề thực tế.

  • Mã sử ​​dụng các tiêu đề H2 ( ## …) cho các phần, các tiêu đề H3 ( ### …) cho các tiêu đề phụ, v.v. Điều này làm cho mã nguồn dễ đọc hơn vì ## …cung cấp đầu mối trực quan mạnh hơn khi cuộn qua so với trường hợp các phần sẽ bắt đầu với các tiêu đề H1 ( # …). Nó vẫn nhất quán về mặt logic khi bạn sử dụng tiêu đề H1 cho chính tiêu đề tài liệu.

  • Cuối cùng, chúng tôi thêm một quy tắc ngang đẹp để tách mục lục khỏi nội dung thực tế.

Để biết thêm về kỹ thuật này và cách chúng tôi sử dụng nó bên trong phần mềm diễn đàn Discourse , xem tại đây .


5

Tôi đã viết một kịch bản python phân tích tệp đánh dấu và xuất ra một bảng mục lục dưới dạng danh sách đánh dấu: md-to-toc

Không giống như các tập lệnh khác mà tôi đã tìm thấy, md-toc hỗ trợ chính xác các tiêu đề trùng lặp. Nó cũng không yêu cầu kết nối internet, vì vậy nó hoạt động trên bất kỳ tệp md nào, không chỉ những tệp có sẵn từ một repo công khai.


5

Trong Visual Studio Code (VSCode), bạn có thể sử dụng tiện ích mở rộng Markdown All in One .

Sau khi cài đặt, hãy làm theo các bước dưới đây:

  1. Nhấn CTRL+ SHIFT+P
  2. Chọn Markdown: Tạo Mục lục




4

Chỉ cần sử dụng trình soạn thảo văn bản của bạn với một plugin.

Trình chỉnh sửa của bạn hoàn toàn có thể có một gói / plugin để xử lý việc này cho bạn. Ví dụ: trong Emacs , bạn có thể cài đặt trình tạo TOC markdown-toc . Sau đó, khi bạn chỉnh sửa, chỉ cần liên tục gọi M-x markdown-toc-generate-or-refresh-toc. Đó là giá trị ràng buộc quan trọng nếu bạn muốn làm điều đó thường xuyên. Thật tốt khi tạo một TOC đơn giản mà không làm ô nhiễm tài liệu của bạn với các neo HTML.

Các trình soạn thảo khác có các plugin tương tự, vì vậy danh sách phổ biến là:


2

Dựa trên câu trả lời của albertodebortoli đã tạo ra hàm với các kiểm tra bổ sung và thay thế dấu chấm câu.

# @fn       def generate_table_of_contents markdown # {{{
# @brief    Generates table of contents for given markdown text
#
# @param    [String]  markdown Markdown string e.g. File.read('README.md')
#
# @return   [String]  Table of content in markdown format.
#
def generate_table_of_contents markdown
  table_of_contents = ""
  i_section = 0
  # to track markdown code sections, because e.g. ruby comments also start with #
  inside_code_section = false
  markdown.each_line do |line|
    inside_code_section = !inside_code_section if line.start_with?('```')

    forbidden_words = ['Table of contents', 'define', 'pragma']
    next if !line.start_with?('#') || inside_code_section || forbidden_words.any? { |w| line =~ /#{w}/ }

    title = line.gsub("#", "").strip
    href = title.gsub(/(^[!.?:\(\)]+|[!.?:\(\)]+$)/, '').gsub(/[!.,?:; \(\)-]+/, "-").downcase

    bullet = line.count("#") > 1 ? " *" : "#{i_section += 1}."
    table_of_contents << "  " * (line.count("#") - 1) + "#{bullet} [#{title}](\##{href})\n"
  end
  table_of_contents
end


2

Đối với tôi, giải pháp được đề xuất bởi @Tum hoạt động giống như một cơ duyên cho một mục lục với 2 cấp độ. Tuy nhiên, đối với cấp 3, nó không hoạt động. Nó không hiển thị liên kết như ở 2 cấp độ đầu tiên, nó hiển thị văn bản đơn giản3.5.1. [bla bla bla](#blablabla) <br> thay vào .

Giải pháp của tôi là một bổ sung cho giải pháp của @Tum (rất đơn giản) cho những người cần một mục lục có 3 cấp độ trở lên.

Ở cấp độ thứ hai, một tab đơn giản sẽ thực hiện thụt lề chính xác cho bạn. Nhưng nó không hỗ trợ 2 tab. Thay vào đó, bạn phải sử dụng một tab và thêm bao nhiêu&nbsp; tùy ý để căn chỉnh cấp 3 một cách chính xác.

Đây là một ví dụ sử dụng 4 cấp độ (các cấp độ cao hơn, khủng khiếp trở thành):

# Table of Contents
1. [Title](#title) <br>
    1.1. [sub-title](#sub_title) <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.1. [sub-sub-title](#sub_sub_title)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.1.1. [sub-sub-sub-title](#sub_sub_sub_title)

# Title <a name="title"></a>
Heading 1

## Sub-Title <a name="sub_title"></a>
Heading 2

### Sub-Sub-Title <a name="sub_sub_title"></a>
Heading 3

#### Sub-Sub-Sub-Title <a name="sub_sub_sub_title"></a>
Heading 4

Điều này đưa ra kết quả sau trong đó mọi phần tử của mục lục là một liên kết đến phần tương ứng của nó. Cũng lưu ý<br> để thêm một dòng mới thay vì nằm trên cùng một dòng.

Mục lục

  1. Tiêu đề
    1.1. Tiêu đề phụ
           1.1.1. Tiêu đề phụ
                     1.1.1.1. Tiểu mục phụ

Tiêu đề

Nhóm 1

Tiêu đề phụ

Nhóm 2

Tiêu đề phụ

Nhóm 3

Tiểu mục phụ

Nhóm 4


1

Tùy thuộc vào quy trình làm việc của bạn, bạn có thể muốn xem qua dây đeo

Đó là một nhánh của bản gốc ( http://strapdownjs.com ) có thêm thế hệ của bảng nội dung.

Có một tệp cấu hình apache trên repo (có thể chưa được cập nhật chính xác) để hoàn thành việc đánh dấu đơn giản khi bạn không muốn ghi vào các tệp html.


1

Tôi không chắc chắn, tài liệu chính thức cho markdown là gì. Tham chiếu chéo có thể được viết chỉ trong ngoặc [Heading]hoặc với dấu ngoặc rỗng [Heading][].

Cả hai công trình sử dụng pandoc . Vì vậy, tôi đã tạo một tập lệnh bash nhanh, nó sẽ thay thế $ TOC trong tệp md bằng TOC của nó. (Bạn sẽ cần envsubst, đó có thể không phải là một phần của bản phân phối của bạn)

#!/bin/bash
filename=$1
__TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/   /g;s/\. \(.*\)$/. [\1][]/')
export __TOC__
envsubst '$__TOC__' < $filename

1

Nếu bạn tình cờ sử dụng Eclipse, bạn có thể sử dụng phím tắt Ctrl+ O(phác thảo), điều này sẽ hiển thị tương đương với mục lục và cho phép tìm kiếm trong phần tiêu đề (tự động hoàn thành).

Bạn cũng có thể mở chế độ xem Phác thảo (Cửa sổ -> Hiển thị Chế độ xem -> Phác thảo) nhưng nó không có tìm kiếm tự động hoàn tất.


1

Sử dụng toc.py là một tập lệnh python nhỏ tạo ra một bảng nội dung để đánh dấu của bạn.

Sử dụng:

  • Trong tệp Markdown của bạn, thêm <toc>nơi bạn muốn đặt mục lục.
  • $python toc.py README.md(Sử dụng tên tệp đánh dấu của bạn thay vì README.md )

Chúc mừng!


Kịch bản của bạn rất hay nhưng nó không tạo ra một neo trước mỗi tiêu đề. Cần thiết ít nhất là trong bitbucket.
Paul Rougieux

1

Tôi đã sử dụng https://github.com/ekalinin/github-markdown-toc để cung cấp tiện ích dòng lệnh tự động tạo mục lục từ tài liệu đánh dấu.

Không có plugin, hoặc macro hoặc phụ thuộc khác. Sau khi cài đặt tiện ích, chỉ cần dán đầu ra của tiện ích vào vị trí trong tài liệu mà bạn muốn mục lục của mình. Rất đơn giản để sử dụng.

$ cat README.md | ./gh-md-toc -


1

Có một tập lệnh Ruby có tên mdtoc.rb có thể tự động tạo Bảng mục lục đánh dấu GFM, và nó tương tự nhưng hơi khác với một số tập lệnh khác được đăng ở đây.

Đưa ra một tệp Markdown đầu vào như:

# Lorem Ipsum

Lorem ipsum dolor sit amet, mei alienum adipiscing te, has no possit delicata. Te nominavi suavitate sed, quis alia cum no, has an malis dictas explicari. At mel nonumes eloquentiam, eos ea dicat nullam. Sed eirmod gubergren scripserit ne, mei timeam nonumes te. Qui ut tale sonet consul, vix integre oportere an. Duis ullum at ius.

## Et cum

Et cum affert dolorem habemus. Sale malis at mel. Te pri copiosae hendrerit. Cu nec agam iracundia necessitatibus, tibique corpora adipisci qui cu. Et vix causae consetetur deterruisset, ius ea inermis quaerendum.

### His ut

His ut feugait consectetuer, id mollis nominati has, in usu insolens tractatos. Nemore viderer torquatos qui ei, corpora adipiscing ex nec. Debet vivendum ne nec, ipsum zril choro ex sed. Doming probatus euripidis vim cu, habeo apeirian et nec. Ludus pertinacia an pro, in accusam menandri reformidans nam, sed in tantas semper impedit.

### Doctus voluptua

Doctus voluptua his eu, cu ius mazim invidunt incorrupte. Ad maiorum sensibus mea. Eius posse sonet no vim, te paulo postulant salutatus ius, augue persequeris eum cu. Pro omnesque salutandi evertitur ea, an mea fugit gloriatur. Pro ne menandri intellegam, in vis clita recusabo sensibus. Usu atqui scaevola an.

## Id scripta

Id scripta alterum pri, nam audiam labitur reprehendunt at. No alia putent est. Eos diam bonorum oportere ad. Sit ad admodum constituto, vide democritum id eum. Ex singulis laboramus vis, ius no minim libris deleniti, euismod sadipscing vix id.

Nó tạo ra mục lục này:

$ mdtoc.rb FILE.md 
#### Table of contents

1. [Et cum](#et-cum)
    * [His ut](#his-ut)
    * [Doctus voluptua](#doctus-voluptua)
2. [Id scripta](#id-scripta)

Xem thêm bài viết trên blog của tôi về chủ đề nà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.