1. 首页 >  语言文字 >       [Markdown cross-reference anchors with Ascii and CJK characters](^3^):这篇文章是一个 St

[Markdown cross-reference anchors with Ascii and CJK characters](^3^):这篇文章是一个 St

Markdown cross-reference anchors with Ascii and CJK characters:这篇文章是一个 Stack Overflow 的问题,讨论了如何在 Markdown 中使用中文字符作为锚点,以及 GitHub 的自动生成锚点的规则。markdown word

Markdown 是一种轻量级的标记语言,可以用简单的语法来格式化文本。Markdown 的优点是易于阅读和编写,可以转换成 HTML 或其他格式。Markdown 在很多场合都有广泛的应用,比如写博客、文档、电子书等。Markdown 也被很多网站和平台支持,比如 GitHub、Stack Overflow、Reddit 等。getdeclaredannotation

在 Markdown 中,我们经常需要创建一些锚点(anchor),也就是可以跳转到文档中某个位置的链接。比如,我们可以在文档的开头创建一个目录(table of contents),列出文档中的各个章节,并且可以点击目录中的项目直接跳转到对应的章节。为了实现这个功能,我们需要给每个章节创建一个锚点,并且在目录中引用这些锚点。array subscript has type char

[Markdown cross-reference anchors with Ascii and CJK characters](^3^):这篇文章是一个 St



在标准的 Markdown 语法中,创建锚点的方法是使用 HTML 的 `` 标签,给它一个 `name` 属性,作为锚点的名称。比如,我们可以这样创建一个名为 `pookie` 的锚点:

```html

```

然后,我们可以在文档中的任何地方,使用 `[link text] (#pookie)` 的语法,来引用这个锚点,创建一个可以跳转到 `pookie` 的链接。比如,我们可以这样写:

```markdown
Take me to [pookie] (#pookie)

...


This is pookie
```

这样,当我们点击 `Take me to pookie` 的链接时,就会跳转到 `This is pookie` 的位置。

这种方法在大多数情况下都可以正常工作,但是如果我们的锚点名称中包含了非 ASCII 字符,比如中文、日文、韩文等,就会出现一些问题。比如,我们想要创建一个包含中文的章节标题,如 `## English中文标题`,并且在目录中引用它,我们可能会这样写:

```markdown
[English中文标题] (#English中文标题)

...

## English中文标题
```

然而,这样的写法并不能正确地跳转到章节标题的位置。这是因为不同的 Markdown 渲染器(renderer)对于非 ASCII 字符的处理方式不一样。有些渲染器会将非 ASCII 字符转换成 HTML 实体(entity),比如 `中` 表示中文的 `文` 字,有些渲染器则会保留原始的非 ASCII 字符。这就导致了锚点名称和引用之间的不匹配,从而无法实现跳转。

为了解决这个问题,我们需要了解我们使用的 Markdown 渲染器是如何处理非 ASCII 字符的,然后根据它的规则来创建锚点和引用。比如,如果我们使用的是 GitHub 的 Markdown 渲染器,它会自动为每个标题创建一个锚点,锚点的名称是标题的内容,但是会将所有的非 ASCII 字符保留,同时将所有的空格和标点符号替换成连字符(hyphen),并且将所有的字母转换成小写。比如,标题 `## English中文标题` 的锚点名称是 `english中文标题`,标题 `## Hello, world!` 的锚点名称是 `hello-world`。[^1^]

因此,如果我们想要在 GitHub 的 Markdown 文档中引用包含中文的标题,我们需要使用和标题相同的非 ASCII 字符,并且注意空格和标点符号的替换,比如:

```markdown
[English中文标题] (#english中文标题)

...

## English中文标题
```

这样,我们就可以正确地跳转到包含中文的章节标题了。

总之,Markdown 是一种简单而强大的标记语言,可以用来创建各种文档和内容。在使用 Markdown 时,我们需要注意锚点和引用的创建和使用,特别是当锚点名称中包含非 ASCII 字符时,我们需要根据不同的 Markdown 渲染器的规则来进行适配,以实现正确的跳转功能。

[^1^]: [Markdown cross-reference anchors with Ascii and CJK characters](^1^)

版权声明:本文来源于互联网,不代表本站立场与观点,临夏教育无任何盈利行为和商业用途,如有错误或侵犯利益请联系我们。