我正在编写一个大型Markdown文档,并希望在开始时放置一个目录,将提供到文档中各个位置的链接。我该怎么做呢?

我试着用:

[a link](# MyTitle)

其中MyTitle是文档中的一个标题,但这不起作用。


当前回答

因为在评论中提到了MultiMarkdown作为一个选项。

在MultiMarkdown中,内部链接的语法很简单。

对于文档中的任何标题,只需以这种格式给出标题名称[heading][]以创建内部链接。

阅读更多:MultiMarkdown-5交叉引用。

Cross-References An oft-requested feature was the ability to have Markdown automatically handle within-document links as easily as it handled external links. To this aim, I added the ability to interpret [Some Text][] as a cross-link, if a header named “Some Text” exists. As an example, [Metadata][] will take you to # Metadata (or any of ## Metadata, ### Metadata, #### Metadata, ##### Metadata, ###### Metadata). Alternatively, you can include an optional label of your choosing to help disambiguate cases where multiple headers have the same title: ### Overview [MultiMarkdownOverview] ## This allows you to use [MultiMarkdownOverview] to refer to this section specifically, and not another section named Overview. This works with atx- or settext-style headers. If you have already defined an anchor using the same id that is used by a header, then the defined anchor takes precedence. In addition to headers within the document, you can provide labels for images and tables which can then be used for cross-references as well.

其他回答

在Markdown规范中没有这样的指令,抱歉。

只需遵循[text](#link)语法并遵循以下指导原则:

把字母和数字原封不动地写下来 用破折号-替换空格 删除其余的字符

举个例子,如果你有这些部分:

# 1. Python

# 2. c++

# 3. c++11

# 4. asp.net-core

您可以使用以下命令添加引用:

[1. Python](#1-python)
[2. c++](#2-c)
[3. c++11](#3-c11)
[4. asp.net-core](#4-aspnet-core)

注意asp.net-core如何变成aspnet-core, 1。Python变成了1-python,等等。

在我的情况下,我正在寻找一个没有Pandoc的TOC解决方案。每个TOC条目都包含一个指向标题的链接,格式为[显示名称](#-url- formatting - Name -of-header)

对于2个缩进级别的简单情况,

1. [Installation](#1-installation)  
1.1. [Minimum System Requirements](#11-minimum-system-requirements)  
1.2. [Prerequisites](#12-prerequisites)  

结果:

安装 1.1. 系统最低要求 1.2. 先决条件

对于包含3个或更多缩进级别的一般多级编号列表,列表无法在第3级或更高级别进一步缩进(例如1.3.2.)。相反,我能找到的最好的解决方案是使用>>>来格式化嵌套的blockquotes。

## Table of Contents  
>1. [Installation](#1-installation)  
>>1.1. [Minimum System Requirements](#11-minimum-system-requirements)  
>>1.2. [Prerequisites](#12-prerequisites)  
>>>1.2.1. [Preparation of Database Server](#121-preparation-of-database-server)  
>>>1.2.2. [Preparation of Other Servers](#122-preparation-of-other-servers)  
>>  
>>1.3. [Installing – Single Server](#13-installing-single-server)  
>>1.4. [Installing – Multi Server](#14-installing-multi-server)  
>>>1.4.1. [Database Server](#141-database-server)  
>>>...  

结果在GitHub上很好地渲染TOC。不能渲染它在这里没有SO的linter抱怨未格式化的代码。

注意1.2.2之后的空白条目。 如果没有空白条目,下面的行仍然停留在第3个blockquote缩进级别。

相比之下,项目列表只使用空格或制表符作为缩进标记

## Table of Contents  
- [Installation](#1-installation)  
  - [Minimum System Requirements](#11-minimum-system-requirements)  
  - [Prerequisites](#12-prerequisites)  
    - [Preparation of Database Server](#121-preparation-of-database-server)  
    - [Preparation of Other Servers](#122-preparation-of-other-servers)  
  - [Installing – Single Server](#13-installing-single-server)  
  - [Installing – Multi Server](#-installing-multi-server)  
    - [Database Server](#141-database-server)  
    - ...  

结果:

目录

安装 系统最低要求 先决条件 数据库服务器准备 其他服务器准备 安装—单机 安装-多服务器 数据库服务器 ...

所有上述缩进列表将成功链接到以下标题在GitHub markdown(标题无法链接在so风味markdown出于某种原因)-

# 1. Installation  
## 1.1. Minimum System Requirements  
## 1.2. Prerequisites  
### 1.2.1. Preparation of Database Server  
### 1.2.2. Preparation of Other Servers  
## 1.3. Installing – Single Server  
## 1.4. Installing – Multi Server   
### 1.4.1. Database Server 

试验,我发现了一个解决方案使用<div…/>,但一个明显的解决方案是在页面中放置自己的锚点,无论你喜欢,因此:

<a name="abcde">

之前和

</a>

在你想要“链接”到的行之后。然后是一个降价链接:

[link text](#abcde)

文档中的任何地方都可以。

<div…/>解决方案插入一个“假”除法只是为了添加id属性,这可能会破坏页面结构,但<a name="abcde"/>解决方案应该是非常无害的。

(PS:把锚点放在你想链接的行中也可以,如下所示:

## <a name="head1">Heading One</a>

但这取决于Markdown如何处理。我注意到,例如,Stack Overflow答案格式化器很高兴这样!)

Github会自动从你的标题中解析锚标记。所以你可以这样做:

[Custom foo description](#foo)

# Foo

在上面的例子中,Foo头生成了一个名为Foo的锚标记

注意:所有标题大小只有一个#,#和锚点名称之间没有空格,锚点标签名称必须小写,如果有多个单词,则用破折号分隔。

[click on this link](#my-multi-word-header)

### My Multi Word Header

更新

潘多克也不例外。