我正在编写一个大型Markdown文档,并希望在开始时放置一个目录列表,该目录将提供指向文档中各个位置的链接。 我怎样才能做到这一点?
我尝试使用
[a link](# MyTitle)
其中MyTitle
是文档中的标题,并且不起作用。
这可能是过时的线程,但是要在Github中使用markdown创建内部文档链接,请使用...
(注意:小写的#title)
# Contents
- [Specification](#specification)
- [Dependencies Title](#dependencies-title)
## Specification
Example text blah. Example text blah. Example text blah. Example text blah.
Example text blah. Example text blah. Example text blah. Example text blah.
Example text blah. Example text blah. Example text blah. Example text blah.
Example text blah. Example text blah.
## Dependencies Title
Example text blah. Example text blah. Example text blah. Example text blah.
Example text blah. Example text blah. Example text blah. Example text blah.
Example text blah. Example text blah. Example text blah. Example text blah.
Example text blah. Example text blah.
提出了一个很好的问题,所以我编辑了答案。
可以使用- #
, ##
, ###
, ####
将内部链接建立为任何标题大小,我在下面创建了一个快速示例... https://github.com/aogilvie/markdownLinkTest
Github会自动从标题中解析出定位标记。 因此,您可以执行以下操作:
[Custom foo description](#foo)
# Foo
在上述情况下, Foo
标头已生成名为foo
的锚标记
注意 :对于所有标题大小,只能使用一个#
, #
与锚名称之间不得有空格,锚标签名称必须为小写,并且如果是多个单词,则以短划线分隔。
[click on this link](#my-multi-word-header)
### My Multi Word Header
也可以与pandoc
一起pandoc
。
Pandoc手册说明了如何使用标头标识符链接到标头。 我没有检查其他解析器对此的支持,但是据报道它在github上不起作用 。
标识符可以手动指定:
## my heading text {#mht}
Some normal text here,
including a [link to the header](#mht).
或者您可以使用自动生成的标识符(在本例中为#my-heading-text
)。 两者在pandoc手册中都有详细说明。
注意 : 仅在转换为HTML , LaTex , ConTeXt , Textile或AsciiDoc时有效 。
Markdown规范中没有这样的指令。 抱歉。
在pandoc中 ,如果在生成html时使用选项--toc
,将生成目录,其中包含指向各节的链接,并从节标题返回该目录。 它与pandoc编写的其他格式类似,例如LaTeX,rtf,rst等。因此,使用命令
pandoc --toc happiness.txt -o happiness.html
降价的这一点:
% True Happiness
Introduction
------------
Many have posed the question of true happiness. In this blog post we propose to
solve it.
First Attempts
--------------
The earliest attempts at attaining true happiness of course aimed at pleasure.
Soon, though, the downside of pleasure was revealed.
会将其作为html的主体:
True Happiness
Introduction
Many have posed the question of true happiness. In this blog post we propose to solve it.
First Attempts
The earliest attempts at attaining true happiness of course aimed at pleasure. Soon, though, the downside of pleasure was revealed.
是的,markdown可以做到这一点,但是您需要指定锚点 。
一个完整的例子
这将创建链接 [tasks](#tasks)
在文档的后面,您将创建命名的锚(无论其名为什么)。
my tasks
请注意,您也可以将其包装在标题周围。
### Agile tasks (created by developer)
使用kramdown似乎效果很好:
[I want this to link to foo](#foo)
....
....
{: id="foo"}
### Foo are you?
我看到有人提到
[foo][#foo]
....
#Foo
可以有效地工作,但是对于标头或包含多个单词的标头,前者可能是元素的不错选择。
由于在评论中提到了MultiMarkdown作为选项。
在MultiMarkdown中,内部链接的语法很简单。
对于文档中的任何标题,只需以[heading][]
格式提供标题名称即可创建内部链接。
在此处阅读更多信息: MultiMarkdown-5交叉引用 。
交叉引用
经常需要的功能是让Markdown像处理外部链接一样容易地自动处理文档内链接。 为此,我添加了将[Some Text] []解释为交叉链接的功能(如果存在名为“ Some Text”的标头)。
例如,[Metadata] []将带您进入#元数据(或##元数据,###元数据,####元数据,#####元数据,######元数据中的任何一个)。
另外,您可以选择一个可选标签,以帮助消除多个标题具有相同标题的情况的歧义:
###概述[MultiMarkdownOverview] ##
这使您可以使用[MultiMarkdownOverview]专门引用本节,而不能使用另一个名为Overview的节。 这适用于atx或settext样式的标头。
如果您已经使用与标头使用的相同ID定义了锚,则定义的锚优先。
除了文档中的标题外,您还可以提供图像和表格的标签,这些标签也可以用于交叉引用。
Gitlab使用GitLab风味降价(GFM)
这里“所有Markdown呈现的标头都会自动获得ID”
一个可以使用鼠标进行以下操作:
使用鼠标右键单击复制并保存链接
例如在README.md文件中,我有标题:
## series expansion formula of the Boettcher function
它给出了一个链接:
https://gitlab.com/adammajewski/parameter_external_angle/blob/master/README.md#series-expansion-formula-of-the-boettcher-function
前缀可以删除,所以这里的链接很简单
file#header
这意味着:
README.md#series-expansion-formula-of-the-boettcher-function
现在可以用作:
[series expansion formula of the Boettcher function](README.md#series-expansion-formula-of-the-boettcher-function)
一个也可以手动完成:用连字符代替空格。
现场示例在这里
Title
------
#### Title (when you wanna control the h{N} with #'s)
一些额外的事情要记住,如果雅曾经获得幻想与亚希望导航到标题中的符号......
# What this is about
------
#### Table of Contents
- [About](#what-this-is-about)
- [⚡ Sunopsis](#9889-tldr)
- [:gear: Grinders](#it-grinds-my-gears)
- [Attribution]
------
## ⚡ TLDR
Words for those short on time or attention.
___
## It Grinds my :gear:s
Here _`:gear:`_ is not something like ⚙ or ⛭
___
## ⛤ Attribution
Probably to much time at a keyboard
[Attribution]: #9956-attribution
...之类的东西#
, ;
, &
和和:
标题字符串中的字符串通常被忽略/分割而不是转义,并且还可以使用引文样式链接使快速使用变得容易。
笔记
GitHub在提交,自述文件等中支持
:word:
语法。如果在那里感兴趣使用'em,请参见gist (来自rxaviers)。在现代浏览器中几乎所有其他地方都可以使用十进制或十六进制。 w3schools的备忘单很方便 ,特别是如果使用CSS的带有符号的伪元素
::before
或::after
更适合您。
以防万一有人想知道标题中的图像和其他链接如何解析为id
...
- [Imaged](#alt-textbadge__examplehttpsexamplecom-to-somewhere)
## [![Alt Text][badge__example]](https://example.com) To Somewhere
[badge__example]:
https://img.shields.io/badge/Left-Right-success.svg?labelColor=brown&logo=stackexchange
"Eeak a mouse!"
MarkDown渲染因位置而异,因此...
## methodName([options]) => Promise
...在GitHub上将具有id
为...的元素
id="methodnameoptions--promise"
...其中香草卫生将导致id
的...
id="methodnameoptions-codepromisecode"
...意味着从模板编写或编译MarkDown文件要么需要针对一种拖尾的方法,要么需要针对各种巧妙的方式(例如清除标题文本)添加配置和脚本逻辑。
除了上述答案之外,
在YAML标头中设置选项number_sections: true
时:
number_sections: TRUE
RMarkdown将自动为您的部分编号。
要引用这些自动编号的部分,只需将以下内容放入R Markdown文件中:
[My Section]
My Section
是该My Section
的名称
无论部分级别如何,这似乎都有效:
# My section
## My section
### My section
通过实验,我找到了一个使用的解决方案,但是一个显而易见的解决方案是将您自己的定位点放置在页面中任何您喜欢的位置,因此:
之前和
您要“链接”到的行之后 。 然后是一个markdown链接,例如:
[link text](#abcde)
文档中的任何位置都会带您到那里。
解决方案插入一个“虚拟”分区只是为了添加
id
属性,这可能会破坏页面结构,但是解决方案应该是无害的。
(PS:这可能是OK就摆在你想链接到线锚,如下所示:
## Heading One
但这取决于Markdown如何对待它。 我注意到,例如,堆栈溢出答案格式化程序对此感到满意!)