Markdown从入门到精通(+软件推荐)
本帖最后由 一只小凡凡 于 2020-10-17 22:04 编辑# Markdown 是什么?
Markdown 是一种轻量级的标记语言,可用于在纯文本文档中添加格式化元素。Markdown 由 (https://daringfireball.net/projects/markdown/) 于 2004 年创建,如今已成为世界上最受欢迎的标记语言之一。
使用 Markdown 与使用 (https://en.wikipedia.org/wiki/WYSIWYG) 编辑器不同。在 Microsoft Word 之类的应用程序中,单击按钮以设置单词和短语的格式,并且,更改立即可见。而 Markdown 与此不同,当你创建 Markdown 格式的文件时,可以在文本中添加 Markdown 语法,以指示哪些单词和短语看起来应该有所不同。
例如,要表示标题,只须在短语前面添加一个井号即可(例如, `# Heading One`)。或者要加粗一个短语,只须在短语前后各加两个星号即可(例如,`**this text is bold**`)。可能需要一段时间才能习惯在文本中看到 Markdown 语法,尤其是如果你已习惯了所见即所得的应用程序。以下屏幕截展示了 Markdown 文件在 (https://atom.io/) 中显示的效果。
!(https://www.markdown.xyz/assets/images/atom.png)
你可以使用文本编辑器为纯文本文件添加 Markdown 格式的元素。或者,你也可以安装针对 macOS、Windows、Linux、iOS 和 Android 操作系统的 Markdown 应用程序。或者还可以使用一些基于 Web 的应用程序用于 Markdown 编写。
依赖于你所使用的应用程序,你可能无法实时预览格式化的文档。但是没关系。[根据 Gruber 的说法](https://daringfireball.net/projects/markdown/),Markdown 的语法被设计为可读性强且不显眼,因此即使 Markdown 文件中的文本未经过渲染也易于阅读。
Markdown 语法的首要设计目标是尽可能易读。基于这个目标,Markdown 格式的文档能够以纯文本形式原样发布,而不会看起来像被填满了标签或格式化指令。
# 为什么要使用 Markdown?
你可能想知道为什么人们使用 Markdown 而不是所用即所得(WYSIWYG)编辑器。当你可以通过按下界面中的按钮来设置文本格式时,为什么还要使用 Markdown 来书写呢?事实证明,人们使用 Markdown 而不是 WYSIWYG 编辑器的原因有两个:
- Markdown 处处可用。人们使用它来创建 网站、文档、便签、书籍、演示文稿、邮件 和 技术文档。
- Markdown 是可移植的。几乎可以使用任何应用程序打开包含 Markdown 格式的文本文件。如果你不喜欢当前使用的 Markdown 应用程序了,则可以将 Markdown 文件导入另一个 Markdown 应用程序中。这与 Microsoft Word 等文字处理应用程序形成了鲜明的对比,Microsoft Word 将你的内容锁定在专有文件格式中。
- Markdown 是独立于平台的。你可以在运行任何操作系统的任何设备上创建 Markdown 格式的文本。
- Markdown 能适应未来的变化。即使你正在使用的应用程序将来会在某个时候不能使用了,你仍然可以使用文本编辑器读取 Markdown 格式的文本。当涉及需要无限期保存的书籍、大学论文和其他里程碑式的文件时,这是一个重要的考虑因素。
- Markdown 无处不在。例如 Reddit 和 GitHub 等网站都支持 Markdown,许多桌面和基于 Web 的应用程序也都支持 Markdown。
# 工欲善其事,必先利其器
Markdown 入门的最佳方式就是多使用它。由于有大量免费工具的存在,这比以前任何时候都更容易开始上手了。
你甚至都不需要下载任何程序,就可以使用几种在线的 Markdown 编辑器来编写 Markdown。(https://dillinger.io/) 是最好的在线 Markdown 编辑器之一。进入其站点就可以开始在左侧窗格中书写了。渲染后的文档在右侧窗格预览。
!(https://www.markdown.xyz/assets/images/dillinger.png)
阅读本指南时,你可以打开 Dillinger 网站。这样,你就可以一边学习 Markdown 语法一边练习了。熟悉 Markdown 之后,你可以在台式计算机或移动设备上安装支持 Markdown 的应用程序。
# Markdown 的工作原理
Dillinger 让 Markdown 的编写变得容易,因为它隐藏了幕后发生的事情,但是该过程的总体工作方式是值得探索的。
在使用 Markdown 格式书写时,文本内容存储在带有 `.md` 或 `.markdown` 扩展名的纯文本文件中。那然后呢?你的 Markdown 格式的文件如何转换为 HTML 或可打印的文档呢?
简单来说,你需要一个能够处理 Markdown 文件的 *Markdown 应用程序*。有许多应用程序可供选择,从简单的脚本到类似于 Microsoft Word 的桌面应用程序,应有尽有。尽管它们在视觉上有所不同,但所有应用程序都执行相同的操作。像 Dillinger 一样,它们都是将 Markdown 格式的文本转换为 HTML,以便可以在 Web 浏览器中显示。
Markdown 应用程序使用一种称为 *Markdown 处理器*(也通常称为“解析器”或“实现”)的东西将获取到的 Markdown 格式的文本输出为 HTML 格式。此时,可以在 Web 浏览器中查看你的文档,或者将其与样式表组合并打印。你可以在下图看到此过程的直观表示。
**注意:** Markdown 应用程序和处理器是两个单独的组件。为了简洁起见,在下图中,我将它们组合为一个元素(即 “Markdown应用程序”)。
!(https://www.markdown.xyz/assets/images/process.png)
总而言之,这是一个四步的过程:
1. 使用文本编辑器或 Markdown 专用的应用程序创建 Markdown 文件。该文件应带有 `.md` 或 `.markdown` 扩展名。
2. 在 Markdown 应用程序中打开 Markdown 文件。
3. 使用 Markdown 应用程序将 Markdown 文件转换为 HTML 文档。
4. 在 web 浏览器中查看 HTML 文件,或使用 Markdown 应用程序将其转换为其他文件格式,例如 PDF。
从你的角度来看,该过程将根据你使用的应用程序的不同而有所不同。例如,Dillinger 本质上将第 1-3 步组合到一个单一、无缝的界面中,你要做的就是在左窗格中键入内容,然后转换结果就在右窗格中就神奇地出现了。但是,如果你使用的是其他工具(例如带有静态网站生成器的文本编辑器),则会发现该过程更为明显。
# Markdown 有什么用?
Markdown 是做笔记、为网站创建内容以及生成可打印文档的快速、简便的方法。
学习 Markdown 语法并不需要很长时间,一旦你知道如何使用它,你就可以在几乎所有地方使用 Markdown 进行书写了。大多数人使用 Markdown 来为网站创建内容,但是 Markdown 也可以很好地格式化从电子邮件到购物清单的所有内容。
下面是一些你可以使用 Markdown 的场景。
### 网站
Markdown 是为 web 而设计的,因此,市面上有很多专门用于创建网站内容的应用程序就不足为奇了。
如果你您正在寻找利用 Markdown 文件创建网站的最简单方法,请参考 (https://blot.im/) 和 (https://smallvictori.es/) 两个站点。在你注册某个服务之后,它们将在你的计算机上创建一个 Dropbox 文件夹。你只需将 Markdown 文件拖放到该文件夹中,然后嗖的一声,这些文件就在你的网站上了。再简单不过了。
如果您熟悉 HTML、CSS和版本管理工具,请试试 Jekyll,这是一个广受欢迎的静态网站生成器,它能将 Markdown 文件并构建为 HTML 网站。这种方法的优势之一是 (https://www.markdown.xyz/tools/github-pages/) 为 Jekyll 生成的网站提供免费托管服务。如果 Jekyll 不是你的理想之选,你可以在 [其它大量可用的静态站点生成器](https://www.staticgen.com/) 中选择一个。
**注意:** 此 *Markdown 指南* 就是用 Jekyll 创建的。你可以在 (https://github.com/mattcone/markdown-guide) 上查看其源码。
如果你想使用内容管理系统(CMS)来支撑你的网站,请试试 Ghost。这是一个免费的开源博客平台,具有出色的 Markdown 编辑器。如果你是 WordPress 用户,你将很高兴地知道 WordPress.com 上托管的网站都 [支持 Markdown](https://en.support.wordpress.com/markdown/)。自托管的 WordPress 网站可以使用 (https://jetpack.com/support/markdown/)实现对 Markdown 的支持。
### 文件资料
Markdown 并不具备像 Microsoft Word 这样的文字处理程序的所有功能,但是对于创建基本文件(例如作业和信件)来说已经足够了。你可以使用 Markdown 文档创作工具来创建 Markdown 格式的文档并将其导出为 PDF 或 HTML 格式。PDF 格式是关键,因为一旦有了 PDF 文档,您就可以使用它进行任何操作:打印、通过电子邮件发送或将其上传到网站。
这是我推荐的一些Markdown文档创作工具:
- **Mac:** MacDown、iA Writer 或 (https://marked2app.com/)
- **iOS / Android:** iA Writer
- **Windows:** (https://wereturtle.github.io/ghostwriter/) 或 (https://markdownmonster.west-wind.com/)
- **Linux:** (https://github.com/retext-project/retext) 或 (https://wereturtle.github.io/ghostwriter/)
- **Web:** Dillinger 或 (https://www.markdown.xyz/tools/stackedit/)
**提示:** (https://ia.net/writer/templates/) 提供了模板用于预览、打印和导出 Markdown 格式的文档。例如,“ Academic – MLA 样式”的模板会缩进段落并添加双句间距。
### 笔记
在几乎所有方面,Markdown 都是记笔记的理想语法。不幸的是,两个最受欢迎的笔记应用程序 (https://evernote.com/) 和 (https://www.onenote.com/) 目前都不支持 Markdown。好消息是,其他一些笔记应用程序 *是* 支持 Markdown 的:
- Simplenote 是适用于所有平台的免费、简单的笔记应用程序。
- Notable 是可以在各种平台上运行的笔记应用程序。
- Bear 是适用于 Mac 和 iOS 设备的类似 Evernote 的应用程序。默认情况下,它并不专门针对 Markdown 的,但是你可以启用 Markdown 兼容模式。
- Boostnote 自称是“专为程序员设计的开源笔记应用程序”。
如果你无法放弃 Evernote,可以试试 (https://marxi.co/),一个专门针对 Evernote 的基于订阅付费的 Markdown编辑器,或在 Evernote 网站上使用 Markdown Here 插件。
### 书籍
想要自行出版小说?请试试 (https://leanpub.com/),该服务可将你的 Markdown 格式的文件转换为电子书。Leanpub 以 PDF、EPUB 和 MOBI 文件格式输出你的图书。如果你要创建纸版书籍,可以将 PDF 文件上传到类似 (https://kdp.amazon.com/) 之类的服务提供商处。要了解有关使用 Markdown 编写和自行出版书籍的更多信息,请阅读 [此博文](https://medium.com/techspiration-ideas-making-it-happen/how-i-wrote-and-published-my-novel-using-only-open-source-tools-5cdfbd7c00ca)。
### 演示文稿
信不信由你,你可以将 Markdown 格式的文件转换成演示文稿。在 Markdown 中创建演示文稿需要一点时间来适应,但是一旦你掌握了它,你就能体会到比使用 PowerPoint 或 Keynote 之类的应用程序更快、更容易。(https://remarkjs.com/)((https://github.com/gnab/remark))和 (https://jdan.github.io/cleaver/)((https://github.com/jdan/cleaver))一样,是一种基于浏览器的、流行的 Markdown 幻灯片工具。如果你使用的是 Mac,并且希望安装一个应用程序来使用的话,请试试 (https://www.decksetapp.com/) 或 (https://marked2app.com/)。
### 邮件
如果你需要发送大量电子邮件,并且对大多数电子邮件提供商网站上可用的格式设置控件感到厌倦,那么你将很高兴地发现有一种使用 Markdown 编写电子邮件的简便方法:Markdown Here 是一个免费、开源的浏览器扩展程序,可将 Markdown 格式的文本转换为可用于发送的 HTML。
### 文档
Markdown 非常适合技术文档。像 GitHub 这样的公司越来越多地转向使用 Markdown 来创建其文档了,请查看此 [博文](https://github.com/blog/1939-how-github-uses-github-to-document-github) 以了解如何将 Markdown 格式的文档迁移到 Jekyll。如果你是为产品或服务编写文档,请试试以下的便捷工具:
- (https://readthedocs.org/) 可以将你所开源的 Markdown 文件生成文档网站。只需将你的 GitHub 仓库连接到他们的服务,然后你就可以将内容推送到该仓库中,Read the Docs 会完成其余的工作。他们还为 [商业实体提供服务](https://readthedocs.com/)。
- MkDocs 是一个快速、简单的静态站点生成器,专门用于构建项目文档。文档源文件使用 Markdown 编写,并使用一个 YAML 配置文件进行配置。MkDocs 有多个 [内置主题](https://www.mkdocs.org/user-guide/styling-your-docs/),包括移植自 (https://readthedocs.org/) 的文档主题。最新的一个主题是 (https://squidfunk.github.io/mkdocs-material/)。
- Docusaurus 是一个静态网站生成器,专门用于创建文档网站。它支持翻译、搜索和版本控制。
- (https://vuepress.vuejs.org/) 是基于 (https://vuejs.org/) 构建的静态站点生成器,并针对编写技术文档进行了优化。
- Jekyll 前面已经提到过它了,但它也是将 Markdown 文件生成文档网站的一个不错的选择。如果你选择 Jekyll,请务必试试 (https://idratherbewriting.com/documentation-theme-jekyll/)。
# Markdown 方言
使用 Markdown 的过程中,最令人困惑的地方是:实际上每个 Markdown 应用程序都实现了稍有不同的 Markdown 语法。Markdown 的这些变体通常被称为 *flavors(方言)*。掌握你的应用程序所实现的 Markdown 语法是你需要主义的。
为了让你了解各 Markdown 变体的概念,将它们比作语言的方言(language dialects)可能会有所帮助。华雷斯城(Ciudad Juárez)的人说西班牙语,就像巴塞罗那(Barcelona)人一样,但是两个城市使用的方言之间有很大的不同。使用不同 Markdown 应用程序的人也是如此。Dillinger支持的 Markdown 格式与 Ulysses 有着很大的不同。
实际上,这意味着当一个应用程序说它支持 “Markdown” 时,你永远也不会确切地知到它的实际意思。它说的是仅支持基本语法?还是所有基本语法加扩展语法?或者是某些语法的组合呢?在你阅读其文档或开始使用该应用程序之前,你永远都不会知到。
如果你只是新手,我能给你的最好建议就是选择一个具有良好 Markdown 支持的应用程序。这对保持 Markdown 文件的可移植性大有帮助。你可能需要在其它应用程序中保存或使用你的 Markdown 文件,要实现这一点,你应当从使用一个具有良好 Markdown 支持的应用程序开始。你可以在下方工具推荐中找到合适的应用程序。
# 其它资源
网上有很多资源用来学习 Markdown。以下列出一些:
- (https://daringfireball.net/projects/markdown/). Markdown 的创建者编写的原始指南。
- (https://www.markdowntutorial.com/). 一个开源网站,你能用浏览器在这个网站上尝试 Markdown。
- (https://github.com/mundimark/awesome-markdown). Markdown 工具和学习资源列表。
- (https://dave.autonoma.ca/blog/2019/05/22/typesetting-markdown-part-1). 这是一个系列教程,介绍了使用 (https://pandoc.org/) 和 (https://www.contextgarden.net/) 对 Markdown 文档进行排版的系统。
# Markdown 速查表
## 总览
此 Markdown 速查表提供了所有 Markdown 语法元素的快速参考。但是此速查表无法覆盖所有用法,因此,如果你需要某些语法元素的更多信息,请参阅我们的 [基本语法](https://www.markdown.xyz/basic-syntax) 和 [扩展语法](https://www.markdown.xyz/extended-syntax)。
## 基本语法
这些是 John Gruber 的原始设计文档中列出的元素。所有 Markdown 应用程序都支持这些元素。
| 元素 | Markdown 语法 |
| ------------------------------------------------------------ | ------------------------------------------ |
| [标题(Heading)](https://www.markdown.xyz/basic-syntax/#headings) | `# H1## H2### H3` |
| [粗体(Bold)](https://www.markdown.xyz/basic-syntax/#bold)| `**bold text**` |
| [斜体(Italic)](https://www.markdown.xyz/basic-syntax/#italic) | `*italicized text*` |
| [引用块(Blockquote)](https://www.markdown.xyz/basic-syntax/#blockquotes-1) | `> blockquote` |
| [有序列表(Ordered List)](https://www.markdown.xyz/basic-syntax/#ordered-lists) | `1. First item2. Second item3. Third item` |
| [无序列表(Unordered List)](https://www.markdown.xyz/basic-syntax/#unordered-lists) | `- First item- Second item- Third item` |
| [代码(Code)](https://www.markdown.xyz/basic-syntax/#code)| ``code`` |
| [分隔线(Horizontal Rule)](https://www.markdown.xyz/basic-syntax/#horizontal-rules) | `---` |
| [链接(Link)](https://www.markdown.xyz/basic-syntax/#links) | `(https://www.example.com)` |
| [图片(Image)](https://www.markdown.xyz/basic-syntax/#images) | `!(image.jpg)` |
## 扩展语法
这些元素通过添加额外的功能扩展了基本语法。但是,并非所有 Markdown 应用程序都支持这些元素。
| 元素 | Markdown 语法 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| [表格(Table)](https://www.markdown.xyz/extended-syntax/#tables) | `| Syntax | Description || ----------- | ----------- || Header | Title || Paragraph | Text |` |
| [代码块(Fenced Code Block)](https://www.markdown.xyz/extended-syntax/#fenced-code-blocks) | ````{ "firstName": "John", "lastName": "Smith", "age": 25}```` |
| [脚注(Footnote)](https://www.markdown.xyz/extended-syntax/#footnotes) | `Here's a sentence with a footnote. [^1][^1]: This is the footnote.` |
| [标题编号(Heading ID)](https://www.markdown.xyz/extended-syntax/#heading-ids) | `### My Great Heading {#custom-id}` |
| [定义列表(Definition List)](https://www.markdown.xyz/extended-syntax/#definition-lists) | `term: definition` |
| [删除线(Strikethrough)](https://www.markdown.xyz/extended-syntax/#strikethrough) | `~~The world is flat.~~` |
| [任务列表(Task List)](https://www.markdown.xyz/extended-syntax/#task-lists) | `- Write the press release- [ ] Update the website- [ ] Contact the media` |
# 基本语法
## 总览
几乎所有 Markdown 应用程序都支持 John Gruber 原始设计文档中列出的 Markdown 基本语法。但是,Markdown 处理程序之间存在着细微的变化和差异,我们都会尽可能标记出来。
## 标题(Headings)
要创建标题,请在单词或短语前面添加井号 (`#`) 。井号的数量代表了标题的级别。例如,添加三个井号即创建一个三级标题 (`<h3>`) (例如:`### My Header`)。
| Markdown | HTML | 渲染效果 |
| ------------------------ | -------------------------- | --------------- |
| `# Heading level 1` | `<h1>Heading level 1</h1>` | Heading level 1 |
| `## Heading level 2` | `<h2>Heading level 2</h2>` | Heading level 2 |
| `### Heading level 3` | `<h3>Heading level 3</h3>` | Heading level 3 |
| `#### Heading level 4` | `<h4>Heading level 4</h4>` | Heading level 4 |
| `##### Heading level 5`| `<h5>Heading level 5</h5>` | Heading level 5 |
| `###### Heading level 6` | `<h6>Heading level 6</h6>` | Heading level 6 |
### 可选语法
还可以在文本下方添加任意数量的 `==` 号来标识一级标题,或者 `--` 号来标识二级标题。
| Markdown | HTML | 渲染效果 |
| -------------------------------- | -------------------------- | --------------- |
| `Heading level 1===============` | `<h1>Heading level 1</h1>` | Heading level 1 |
| `Heading level 2---------------` | `<h2>Heading level 2</h2>` | Heading level 2 |
### 标题(Heading)用法的最佳实践
Markdown 应用程序在处理标题和周围段落之间紧挨着的情况时并不一致。为了兼容考虑,请用一个或多个空白行对段落和标题进行分隔。
| ✅ 这样做 | ❌ 不要这样做 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| `This is a paragraph.# Here's the headingAnd this is another paragraph.` | `This is a paragraph.# Here's the headingAnd this is another paragraph.` |
## 段落(Paragraphs)
要创建段落,请使用空白行将一行或多行文本进行分隔。
| Markdown | HTML | 渲染效果 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `I really like using Markdown.I think I'll use it to format all of my documents from now on.` | `<p>I really like using Markdown.</p><p>I think I'll use it to format all of my documents from now on.</p>` | I really like using Markdown.I think I'll use it to format all of my documents from now on. |
### 段落(Paragraph)用法的最佳实践
不要用空格(spaces)或制表符( tabs)缩进段落。
| ✅ 这样做 | ❌ 不要这样做 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| `Don't put tabs or spaces in front of your paragraphs.Keep lines left-aligned like this.` | `This can result in unexpected formatting problems. Don't add tabs or spaces in front of paragraphs.` |
## 换行(Line Breaks)
在一行的末尾添加两个或多个空格,然后按回车键(return),即可创建一个换行(line break) (`<br>`)。
| Markdown | HTML | 渲染效果 |
| ------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------- |
| `This is the first line.And this is the second line.` | `<p>This is the first line.<br>And this is the second line.</p>` | This is the first line. And this is the second line. |
### 换行(Line Break)用法的最佳实践
几乎每个 Markdown 应用程序都支持两个或多个空格进行换行 (称为 “结尾空格(trailing whitespace)”) 的方式,但这是有争议的,因为很难在编辑器中直接看到空格,并且很多人在每个句子后面都会有意或无意地添加两个空格。由于这个原因,你可能要使用除结尾空格以外的其它方式来换行。幸运的是,几乎每个 Markdown 应用程序都支持另一种换行方式:HTML 的 `<br>` 标签。
为了兼容性,请在行尾添加“结尾空格”或 HTML 的 `<br>` 标签来实现换行。
还有两种其他方式我并不推荐使用。CommonMark 和其它几种轻量级标记语言支持在行尾添加反斜杠 (`\`) 的方式实现换行,但是并非所有 Markdown 应用程序都支持此种方式,因此从兼容性的角度来看,不推荐使用。并且至少有两种轻量级标记语言支持无须在行尾添加任何内容,只须键入回车键( return)即可实现换行。
| ✅ 这样做 | ❌ 不要这样做 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| `First line with two spaces after.And the next line.First line with the HTML tag after.<br>And the next line.` | `First line with a backslash after.\And the next line.First line with nothing after.And the next line.` |
## 强调(Emphasis)
通过将文本设置为粗体或斜体来强调其重要性。
### 粗体(Bold)
要加粗文本,请在单词或短语的前后各添加两个星号(asterisks)或下划线(underscores)。如需加粗一个单词或短语的中间部分用以表示强调的话,请在要加粗部分的两侧各添加两个星号(asterisks)。
| Markdown | HTML | 渲染效果 |
| ---------------------------- | ----------------------------------------- | -------------------------- |
| `I just love **bold text**.` | `I just love <strong>bold text</strong>.` | I just love **bold text**. |
| `I just love __bold text__.` | `I just love <strong>bold text</strong>.` | I just love **bold text**. |
| `Love**is**bold` | `Love<strong>is</strong>bold` | Love**is**bold |
#### 粗体(Bold)用法最佳实践
Markdown 应用程序在如何处理单词或短语中间的下划线上并不一致。为兼容考虑,在单词或短语中间部分加粗的话,请使用星号(asterisks)。
| ✅ 这样做 | ❌ 不要这样做 |
| ---------------- | ---------------- |
| `Love**is**bold` | `Love__is__bold` |
### 斜体(Italic)
要用斜体显示文本,请在单词或短语前后添加一个星号(asterisk)或下划线(underscore)。要斜体突出单词的中间部分,请在字母前后各添加一个星号,中间不要带空格。
| Markdown | HTML | 渲染效果 |
| -------------------------------------- | --------------------------------------------- | ------------------------------------ |
| `Italicized text is the *cat's meow*.` | `Italicized text is the <em>cat's meow</em>.` | Italicized text is the *cat’s meow*. |
| `Italicized text is the _cat's meow_.` | `Italicized text is the <em>cat's meow</em>.` | Italicized text is the *cat’s meow*. |
| `A*cat*meow` | `A<em>cat</em>meow` | A*cat*meow |
#### 斜体(Italic)用法的最佳实践
Markdown 的众多应用程序在如何处理单词中间的下划线上意见不一致。为了兼容起见,请用星号标注单词中间的斜体来表示着重。
| ✅ 这样做 | ❌ 不要这样做 |
| ------------ | ------------ |
| `A*cat*meow` | `A_cat_meow` |
### 粗体(Bold)和斜体(Italic)
要同时用粗体和斜体突出显示文本,请在单词或短语的前后各添加三个星号或下划线。要加粗并用斜体显示单词或短语的中间部分,请在要突出显示的部分前后各添加三个星号,中间不要带空格。
| Markdown | HTML | 渲染效果 |
| ----------------------------------------- | ------------------------------------------------------------ | ---------------------------------------- |
| `This text is ***really important***.` | `This text is <strong><em>really important</em></strong>.` | This text is ***really important\***. |
| `This text is ___really important___.` | `This text is <strong><em>really important</em></strong>.` | This text is ***really important\***. |
| `This text is __*really important*__.` | `This text is <strong><em>really important</em></strong>.` | This text is ***really important\***. |
| `This text is **_really important_**.` | `This text is <strong><em>really important</em></strong>.` | This text is ***really important\***. |
| `This is really***very***important text.` | `This is really<strong><em>very</em></strong>important text.` | This is really***very\***important text. |
#### 粗体(Bold)和斜体(Italic)用法的最佳实践
Markdown 应用程序在处理单词或短语中间添加的下划线上并不一致。为了实现兼容性,请使用星号将单词或短语的中间部分加粗并以斜体显示,以示重要。
| ✅ 这样做 | ❌ 不要这样做 |
| ----------------------------------------- | ----------------------------------------- |
| `This is really***very***important text.` | `This is really___very___important text.` |
## 块引用(Blockquotes)
要创建块引用,请在段落前添加一个 `>` 符号。
```
> Dorothy followed her through many of the beautiful rooms in her castle.
```
渲染效果如下所示:
> Dorothy followed her through many of the beautiful rooms in her castle.
### 多个段落的块引用(Blockquotes)
块引用可以包含多个段落。为段落之间的空白行各添加一个 `>` 符号。
```
> Dorothy followed her through many of the beautiful rooms in her castle.
>
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
```
渲染效果如下:
> Dorothy followed her through many of the beautiful rooms in her castle.
>
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
### 嵌套块引用(Nested Blockquotes)
块引用可以嵌套。在要嵌套的段落前添加一个 `>>` 符号。
```
> Dorothy followed her through many of the beautiful rooms in her castle.
>
>> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
```
渲染效果如下:
> Dorothy followed her through many of the beautiful rooms in her castle.
>
> > The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
### 带有其它元素的块引用(Blockquotes with Other Elements)
块引用可以包含其他 Markdown 格式的元素。并非所有元素都可以使用,你需要进行实验以查看哪些元素有效。
```
> #### The quarterly results look great!
>
> - Revenue was off the chart.
> - Profits were higher than ever.
>
>*Everything* is going according to **plan**.
```
渲染效果如下:
> #### The quarterly results look great!
>
> - Revenue was off the chart.
> - Profits were higher than ever.
>
> *Everything* is going according to **plan**.
## 列表(Lists)
你可以将多个条目组织成有序或无序列表。
### 有序列表(Ordered Lists)
要创建有序列表,请在每个列表项前添加数字并紧跟一个英文句点。数字不必按数学顺序排列,但是列表应当以数字 1 起始。
| Markdown | HTML | Rendered Output |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `1. First item2. Second item3. Third item4. Fourth item` | `<ol><li>First item</li><li>Second item</li><li>Third item</li><li>Fourth item</li></ol>` | First itemSecond itemThird itemFourth item |
| `1. First item1. Second item1. Third item1. Fourth item` | `<ol><li>First item</li><li>Second item</li><li>Third item</li><li>Fourth item</li></ol>` | First itemSecond itemThird itemFourth item |
| `1. First item8. Second item3. Third item5. Fourth item` | `<ol><li>First item</li><li>Second item</li><li>Third item</li><li>Fourth item</li></ol>` | First itemSecond itemThird itemFourth item |
| `1. First item2. Second item3. Third item1. Indented item2. Indented item4. Fourth item` | `<ol><li>First item</li><li>Second item</li><li>Third item<ol><li>Indented item</li><li>Indented item</li></ol></li><li>Fourth item</li></ol>` | First itemSecond itemThird itemIndented itemIndented itemFourth item |
### 无序列表(Unordered Lists)
要创建无序列表,请在每个列表项前面添加破折号 (`-`)、星号 (`*`) 或加号 (`+`) 。缩进一个或多个列表项可创建嵌套列表。
| Markdown | HTML | 渲染效果 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| `- First item- Second item- Third item- Fourth item` | `<ul><li>First item</li><li>Second item</li><li>Third item</li><li>Fourth item</li></ul>` | First itemSecond itemThird itemFourth item |
| `* First item* Second item* Third item* Fourth item` | `<ul><li>First item</li><li>Second item</li><li>Third item</li><li>Fourth item</li></ul>` | First itemSecond itemThird itemFourth item |
| `+ First item* Second item- Third item+ Fourth item` | `<ul><li>First item</li><li>Second item</li><li>Third item</li><li>Fourth item</li></ul>` | First itemSecond itemThird itemFourth item |
| `- First item- Second item- Third item- Indented item- Indented item- Fourth item` | `<ul><li>First item</li><li>Second item</li><li>Third item<ul><li>Indented item</li><li>Indented item</li></ul></li><li>Fourth item</li></ul>` | First itemSecond itemThird itemIndented itemIndented itemFourth item |
### 在列表中添加列表项
要在保留列表连续性的同时在列表中添加另一种元素,请将该元素缩进四个空格或一个制表符,如下例所示:
#### 段落(Paragraphs)
```
* This is the first list item.
* Here's the second list item.
I need to add another paragraph below the second list item.
* And here's the third list item.
```
渲染效果如下:
- This is the first list item.
- Here’s the second list item.
I need to add another paragraph below the second list item.
- And here’s the third list item.
#### 引用块(Blockquotes)
```
* This is the first list item.
* Here's the second list item.
> A blockquote would look great below the second list item.
* And here's the third list item.
```
渲染效果如下:
- This is the first list item.
- Here’s the second list item.
> A blockquote would look great below the second list item.
- And here’s the third list item.
#### 代码块(Code Blocks)
[代码块(Code blocks)](https://www.markdown.xyz/basic-syntax/#code-blocks) 通常采用四个空格或一个制表符缩进。当它们被放在列表中时,请将它们缩进八个空格或两个制表符。
```
1.Open the file.
2.Find the following code block on line 21:
<html>
<head>
<title>Test</title>
</head>
3.Update the title to match the name of your website.
```
渲染效果如下:
1. Open the file.
2. Find the following code block on line 21:
```
<html>
<head>
<title>Test</title>
</head>
```
3. Update the title to match the name of your website.
#### 图像(Images)
```
1.Open the file containing the Linux mascot.
2.Marvel at its beauty.
!(/assets/images/tux.png)
3.Close the file.
```
渲染效果如下:
1. Open the file containing the Linux mascot.
2. Marvel at its beauty.
!(https://www.markdown.xyz/assets/images/tux.png)
3. Close the file.
## 代码
要将单词或短语表示为代码,请将其包裹在反引号 (```) 中。
| Markdown | HTML | 渲染效果 |
| ------------------------------------- | ------------------------------------------------ | ----------------------------------- |
| `At the command prompt, type `nano`.` | `At the command prompt, type <code>nano</code>.` | At the command prompt, type `nano`. |
### 转义反引号
如果你要表示为代码的单词或短语中包含一个或多个反引号,则可以通过将单词或短语包裹在双反引号(````)中。
| Markdown | HTML | 渲染效果 |
| --------------------------------------- | ------------------------------------------------ | ----------------------------------- |
| ```Use `code` in your Markdown file.``` | `<code>Use `code` in your Markdown file.</code>` | `Use `code` in your Markdown file.` |
### 代码块(Code Blocks)
要创建代码块,请将代码块的每一行缩进至少四个空格或一个制表符。
```
<html>
<head>
</head>
</html>
```
渲染效果如下:
```
<html>
<head>
</head>
</html>
```
**注意:** 要创建不用缩进的代码块,请使用 [围栏式代码块(fenced code blocks)](https://www.markdown.xyz/extended-syntax/#fenced-code-blocks).
## 分隔线(Horizontal Rules)
要创建分隔线,请在单独一行上使用三个或多个星号 (`***`)、破折号 (`---`) 或下划线 (`___`) ,并且不能包含其他内容。
```
***
---
_________________
```
以上三个分隔线的渲染效果看起来都一样:
------
### 分隔线(Horizontal Rule)用法最佳实践
为了兼容性,请在分隔线的前后均添加空白行。
| ✅ 这样做 | ❌ 不要这样做 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| `Try to put a blank line before...---...and after a horizontal rule.` | `Without blank lines, this would be a heading.---Don't do this!` |
## 链接
要创建链接,请将链接文本括在方括号(例如``)中,然后立即在URL后面加上括号(例如`(https://duckduckgo.com)`)中的URL 。
```
My favorite search engine is (https://duckduckgo.com).
```
呈现的输出如下所示:
My favorite search engine is(https://duckduckgo.com/)。
### 添加标题
您可以选择为链接添加标题。当用户将鼠标悬停在链接上时,这将显示为工具提示。要添加标题,请将其括在URL后面的括号中。
```
My favorite search engine is (https://duckduckgo.com "The best search engine for privacy").
```
呈现的输出如下所示:
My favorite search engine is(https://duckduckgo.com/)。
### 网址和电子邮件地址
要将URL或电子邮件地址快速转换为链接,请将其括在尖括号中。
```
<https://www.markdownguide.org>
<fake@example.com>
```
呈现的输出如下所示:
(https://www.markdownguide.org/)
(mailto:fake@example.com)
### 格式化链接
要[强调](https://www.markdown.xyz/basic-syntax/#emphasis)链接,请在方括号和括号之前和之后添加星号。要将链接表示为[代码](https://www.markdown.xyz/basic-syntax/#code),请在方括号中添加反引号。
```
I love supporting the **(https://eff.org)**.
This is the *(https://www.markdownguide.org)*.
See the section on [`code`](#code).
```
呈现的输出如下所示:
我喜欢支持 **(https://eff.org/)**
这是 *(https://www.markdownguide.org/)*
请参阅上的部分[`code`](https://www.markdown.xyz/basic-syntax/#code)
### 参考样式链接
引用样式链接是一种特殊的链接,它使URL易于在Markdown中显示和阅读。参考样式链接分为两部分:与文本保持内联的部分以及存储在文件中其他位置的部分,以使文本易于阅读。
#### 格式化链接的第一部分
参考样式链接的第一部分使用两组括号进行格式化。第一组方括号包围应显示为链接的文本。第二组括号显示了一个标签,该标签用于指向您存储在文档其他位置的链接。
尽管不是必需的,但您可以在第一组和第二组括号之间包含一个空格。第二组括号中的标签不区分大小写,可以包含字母,数字,空格或标点符号。
这意味着以下示例格式对于链接的第一部分大致相同:
- ``
- ` `
#### 格式化链接的第二部分
引用样式链接的第二部分使用以下属性设置格式:
1. 括号中的标签后紧跟一个冒号和至少一个空格(例如`: `)
2. 链接的URL,您可以选择将其括在尖括号中。
3. 链接的可选标题,您可以将其括在双引号,单引号或括号中。
这意味着以下示例格式对于链接的第二部分几乎都是等效的:
- `: https://en.wikipedia.org/wiki/Hobbit#Lifestyle`
- `: https://en.wikipedia.org/wiki/Hobbit#Lifestyle "Hobbit lifestyles"`
- `: https://en.wikipedia.org/wiki/Hobbit#Lifestyle 'Hobbit lifestyles'`
- `: https://en.wikipedia.org/wiki/Hobbit#Lifestyle (Hobbit lifestyles)`
- `: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> "Hobbit lifestyles"`
- `: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> 'Hobbit lifestyles'`
- `: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> (Hobbit lifestyles)`
您可以将链接的第二部分放在Markdown文档中的任何位置。有些人将它们放在出现的段落之后,而其他人则将它们放在文档的末尾(例如尾注或脚注)
#### 将零件放在一起的示例
假设您添加一个URL作为到段落的[标准URL链接](https://www.markdown.xyz/basic-syntax/#links),并且在Markdown中看起来像这样:
```
In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends
of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to
eat: it was a (https://en.wikipedia.org/wiki/Hobbit#Lifestyle "Hobbit lifestyles"), and that means comfort.
```
尽管它可能指向有趣的附加信息,但显示的URL确实不会给现有原始文本增加太多,除了使其难以阅读之外。要解决此问题,您可以改为设置网址格式:
```
In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends
of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to
eat: it was a , and that means comfort.
: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> "Hobbit lifestyles"
```
在上述两种情况下,呈现的输出将相同:
> 在地上的一个洞里住着一个霍比特人。这不是一个肮脏,肮脏,潮湿的洞,里面充满蠕虫的末端和难闻的气味,也没有一个干燥,裸露,沙质的洞,里面没有东西可坐下或进食:那是一个[霍比特洞](https://en.wikipedia.org/wiki/Hobbit#Lifestyle),意味着舒适。
链接的HTML为:
```
<a href="https://en.wikipedia.org/wiki/Hobbit#Lifestyle" title="Hobbit lifestyles">hobbit-hole</a>
```
### 链接最佳做法
Markdown应用程序不同意如何处理URL中间的空格。为了兼容性,请尝试使用对URL进行编码`%20`
| this这样做 | ❌不要这样做 |
| --------------------------------------------------- | ----------------------------------------------- |
| `(https://www.example.com/my%20great%20page)` | `(https://www.example.com/my great page)` |
## 图片
要添加图像,请添加感叹号(`!`),然后在括号中添加替代文本,并在括号中添加图像资源的路径或URL。您可以选择在括号中的URL之后添加标题。
```
!(/assets/images/philly-magic-gardens.jpg "Philadelphia's Magic Gardens")
```
呈现的输出如下所示:
![费城的魔法花园。 这个地方真酷!](https://www.markdown.xyz/assets/images/philly-magic-garden.jpg)
### 链接图像
要向图像添加链接,请将图像的Markdown括在方括号中,然后在括号中添加链接。
```
[!(/assets/images/shiprock.jpg "Shiprock, New Mexico by Beau Rogers")](https://www.flickr.com/photos/beaurogers/31833779864/in/photolist-Qv3rFw-34mt9F-a9Cmfy-5Ha3Zi-9msKdv-o3hgjr-hWpUte-4WMsJ1-KUQ8N-deshUb-vssBD-6CQci6-8AFCiD-zsJWT-nNfsgB-dPDwZJ-bn9JGn-5HtSXY-6CUhAL-a4UTXB-ugPum-KUPSo-fBLNm-6CUmpy-4WMsc9-8a7D3T-83KJev-6CQ2bK-nNusHJ-a78rQH-nw3NvT-7aq2qf-8wwBso-3nNceh-ugSKP-4mh4kh-bbeeqH-a7biME-q3PtTf-brFpgb-cg38zw-bXMZc-nJPELD-f58Lmo-bXMYG-bz8AAi-bxNtNT-bXMYi-bXMY6-bXMYv)
```
呈现的输出如下所示:
[![沙漠中的一块老石头](https://www.markdown.xyz/assets/images/shiprock.jpg)](https://www.flickr.com/photos/beaurogers/31833779864/in/photolist-Qv3rFw-34mt9F-a9Cmfy-5Ha3Zi-9msKdv-o3hgjr-hWpUte-4WMsJ1-KUQ8N-deshUb-vssBD-6CQci6-8AFCiD-zsJWT-nNfsgB-dPDwZJ-bn9JGn-5HtSXY-6CUhAL-a4UTXB-ugPum-KUPSo-fBLNm-6CUmpy-4WMsc9-8a7D3T-83KJev-6CQ2bK-nNusHJ-a78rQH-nw3NvT-7aq2qf-8wwBso-3nNceh-ugSKP-4mh4kh-bbeeqH-a7biME-q3PtTf-brFpgb-cg38zw-bXMZc-nJPELD-f58Lmo-bXMYG-bz8AAi-bxNtNT-bXMYi-bXMY6-bXMYv)
## 转义字符(Escaping Characters)
要显示原本用于格式化 Markdown 文档的字符,请在字符前面添加反斜杠字符 (`\`) 。
```
\* 如果没有开头的反斜杠字符的话,这一行将显示为无序列表。
```
渲染效果如下:
\* 如果没有开头的反斜杠字符的话,这一行将显示为无序列表。
### 可做转义的(英文)字符
以下列出的字符都可以通过使用反斜杠字符从而达到转义目的。
| 字符 | 名称 |
| ---- | ------------------------------------------------------------ |
| \ | 反斜杠(backslash) |
| ` | backtick (另请参见 [在代码中转义反引号](https://www.markdown.xyz/basic-syntax/#escaping-backticks)) |
| * | 星号(asterisk) |
| _ | 下划线(underscore) |
| { }| 花括号(curly braces) |
| [ ]| 方括号(brackets) |
| ( )| 圆括号或括号(parentheses) |
| # | 井号(pound sign) |
| + | 加号(plus sign) |
| - | 减号(minus sign) (也叫连字符 hyphen) |
| . | 句点(dot) |
| ! | 感叹号(exclamation mark) |
| \| | 管道符(pipe) (另请参见 [在表格中转义管道符](https://www.markdown.xyz/extended-syntax/#escaping-pipe-characters-in-tables)) |
## HTML 标签
大多 Markdown 应用程序允许你在 Markdown 格式文本中添加 HTML 标签。如果你喜欢某些 HTML 标签胜于 Markdown 语法的话,这将何有帮助。例如,某些人发现通过 HTML 标签添加图像更加容易。当你需要更改元素的属性时(例如为文本指定颜色或更改图像的宽度),使用 HTML 标签更方便些。
如需使用 HTML,请将 HTML 标签添加到 Markdown 格式文本中即可。
```
This **word** is bold. This <em>word</em> is italic.
```
渲染效果如下:
This **word** is bold. This *word* is italic.
### HTML 用法最佳实践
出于安全原因,并非所有 Markdown 应用程序都支持在 Markdown 文档中添加 HTML。如有疑问,请查看 Markdown 应用程序的文档。某些应用程序只支持 HTML 标签的子集。
对于 HTML 的块级元素 `<div>`、`<table>`、`<pre>` 和 `<p>`,请在其前后使用空行(blank lines)与其它内容进行分隔。尽量不要使用制表符(tabs)或空格(spaces)对 HTML 标签做缩进,否则将影响格式。
在 HTML 块级标签内不能使用 Markdown 语法。例如 `<p>italic and **bold**</p>` 将不起作用。
# 扩展语法
## 总览
John Gruber的原始设计文档中概述的[基本语法](https://www.markdown.xyz/basic-syntax)每天添加许多所需的元素,但是对于某些人来说还不够。这就是扩展语法的用武之地。
一些个人和组织开始通过添加其他元素(如表,代码块,语法突出显示,URL自动链接和脚注)来扩展基本语法。可以通过使用基于基本Markdown语法的轻量级标记语言,或通过向兼容的Markdown处理器添加扩展来启用这些元素。
## 可用性
并非所有Markdown应用程序都支持扩展语法元素。您需要检查您的应用程序所使用的轻量级标记语言是否支持您要使用的扩展语法元素。如果没有,那么仍然有可能在Markdown处理器中启用扩展。
### 轻量标记语言
有几种轻量级标记语言是Markdown的*超集*。它们包括Gruber的基本语法,并通过添加其他元素(例如表,代码块,语法突出显示,URL自动链接和脚注)在此基础上构建。许多最受欢迎的Markdown应用程序使用以下轻量级标记语言之一:
- (https://commonmark.org/)
- (https://github.github.com/gfm/)
- (https://michelf.ca/projects/php-markdown/extra/)
- (https://fletcherpenney.net/multimarkdown/)
- (https://rmarkdown.rstudio.com/)
### Markdown处理器
有[许多Markdown处理器](https://github.com/markdown/markdown.github.com/wiki/Implementations)可用。它们中的许多允许您添加启用扩展语法元素的扩展。查看处理器的文档以获取更多信息。
## 表格
要添加表,请使用三个或多个连字符(`---`)创建每列的标题,并使用管道(`|`)分隔每列。您可以选择在表的任一端添加管道。
```
| Syntax | Description |
| ----------- | ----------- |
| Header | Title |
| Paragraph | Text |
```
呈现的输出如下所示:
| 句法 | 描述 |
| ---- | ---- |
| 标头 | 标题 |
| 段 | 文本 |
像元宽度可以变化,如下所示。呈现的输出将看起来相同。
```
| Syntax | Description |
| --- | ----------- |
| Header | Title |
| Paragraph | Text |
```
**提示:**使用连字符和管道创建表可能很麻烦。为了加快该过程,请尝试使用(https://www.tablesgenerator.com/markdown_tables)。使用图形界面构建表,然后将生成的Markdown格式的文本复制到文件中。
### 对准
您可以通过`:`在标题行内的连字符的左侧,右侧或两侧添加一个冒号(),以使列中的文本左,右或居中对齐。
```
| Syntax | Description | Test Text |
| :--- | :----: | ---: |
| Header | Title | Here's this |
| Paragraph | Text | And more |
```
呈现的输出如下所示:
| 句法 | 描述 | 测试文字 |
| :--- | :--: | -------: |
| 标头 | 标题 | 这是这个 |
| 段 | 文本 | 和更多 |
### 格式化表格中的文字
您可以在表格中设置文本格式。例如,您可以添加[链接](https://www.markdown.xyz/basic-syntax/#links),[代码](https://www.markdown.xyz/basic-syntax/#code-1)(```仅反引号()中的单词或短语,而不是[代码块](https://www.markdown.xyz/basic-syntax/#code-blocks))和[强调](https://www.markdown.xyz/basic-syntax/#emphasis)。
您不能添加标题,块引用,列表,水平规则,图像或HTML标签。
### 在表中转义管道字符
您可以`|`使用表格的HTML字符代码(`|`)在表中显示竖线()字符。
## 围栏代码块
Markdown基本语法允许您通过将行缩进四个空格或一个制表符来创建[代码块](https://www.markdown.xyz/basic-syntax#code-blocks)。如果发现不方便,请尝试使用受保护的代码块。根据Markdown处理器或编辑器的不同,您将在代码块之前和之后的行上使用三个反引号(`````)或三个波浪号(`~~~`)。最好的部分?您不必缩进任何行!
```
```
{
"firstName": "John",
"lastName": "Smith",
"age": 25
}
```
```
呈现的输出如下所示:
```
{
"firstName": "John",
"lastName": "Smith",
"age": 25
}
```
**提示:是否**需要在代码块中显示反引号?请参阅[本节](https://www.markdown.xyz/basic-syntax/#escaping-backticks)以了解如何规避它们。
### 语法高亮
许多Markdown处理器都支持围栏代码块的语法突出显示。使用此功能,您可以为编写代码的任何语言添加颜色突出显示。要添加语法突出显示,请在受防护的代码块之前的反引号旁边指定一种语言。
```
```json
{
"firstName": "John",
"lastName": "Smith",
"age": 25
}
```
```
呈现的输出如下所示:
```
{
"firstName": "John",
"lastName": "Smith",
"age": 25
}
```
## 脚注
脚注使您可以添加注释和参考,而不会使文档正文混乱。创建脚注时,带有脚注引用的上标编号会出现在其中。读者可以单击链接以跳至页面底部的脚注内容。
要创建脚注参考,请在方括号(`[^1]`)内添加插入符号和标识符。标识符可以是数字或单词,但不能包含空格或制表符。标识符仅将脚注参考与脚注本身相关联-在输出中,脚注按顺序编号。
在括号内使用另一个插入符号和数字添加脚注,并用冒号和文本(`[^1]: My footnote.`)。您不必在文档末尾添加脚注。您可以将它们放在除列表,块引号和表格之类的其他元素之外的任何位置。
```
Here's a simple footnote,[^1] and here's a longer one.[^bignote]
[^1]: This is the first footnote.
[^bignote]: Here's one with multiple paragraphs and code.
Indent paragraphs to include them in the footnote.
`{ my code }`
Add as many paragraphs as you like.
```
呈现的输出如下所示:
这是一个简单的脚注,(https://www.markdown.xyz/extended-syntax/#fn:1)是一个较长的脚注。(https://www.markdown.xyz/extended-syntax/#fn:bignote)
1. 这是第一个脚注。 [↩](https://www.markdown.xyz/extended-syntax/#fnref:1)
2. 这是一个包含多个段落和代码的代码。
将段落缩进以将其包括在脚注中。
`{ my code }`
添加任意数量的段落。 [↩](https://www.markdown.xyz/extended-syntax/#fnref:bignote)
## 标题编号
许多Markdown处理器支持[标题的](https://www.markdown.xyz/basic-syntax/#headings)自定义ID,一些Markdown处理器会自动添加它们。添加自定义ID允许您直接链接到标题并使用CSS对其进行修改。要添加自定义标题ID,请在与标题相同的行上用大括号括起该自定义ID。
```
### My Great Heading {#custom-id}
```
HTML看起来像这样:
```
<h3 id="custom-id">My Great Heading</h3>
```
### 链接到标题ID
通过创建带有数字符号()和自定义标题ID的[标准链接](https://www.markdown.xyz/basic-syntax/#links),可以链接到文件中具有自定义ID`#`的标题。
| 降价促销 | 的HTML | 渲染输出 |
| ----------------------------- | ---------------------------------------- | ------------------------------------------------------------ |
| `(#heading-ids)` | `<a href="#heading-ids">Heading IDs</a>` | [标题编号](https://www.markdown.xyz/extended-syntax/#heading-ids) |
通过将自定义标题ID添加到网页的完整URL(例如),其他网站可以链接到标题`(https://www.markdownguide.org/extended-syntax#heading-ids)`。
## 定义清单
某些Markdown处理器允许您创建术语及其对应定义的*定义列表*。要创建定义列表,请在第一行上键入术语。在下一行,键入一个冒号,后跟一个空格和定义。
```
First Term
: This is the definition of the first term.
Second Term
: This is one definition of the second term.
: This is another definition of the second term.
```
HTML看起来像这样:
```
<dl>
<dt>First Term</dt>
<dd>This is the definition of the first term.</dd>
<dt>Second Term</dt>
<dd>This is one definition of the second term. </dd>
<dd>This is another definition of the second term.</dd>
</dl>
```
呈现的输出如下所示:
- First Treme
This is the definition of the first term.
- Second Term
This is one definition of the second term.
This is another definition of the second term.
## 删除线
您可以通过在单词中心放置一条水平线来删除单词。结果看起来~~像这样~~。此功能使您可以指示某些单词是一个错误,并不意味着要包含在文档中。若要删除单词,请`~~`在单词前后使用两个波浪号。
```
~~The world is flat.~~ We now know that the world is round.
```
呈现的输出如下所示:
~~The world is flat.~~ We now know that the world is round.
## 任务清单
任务列表使您可以创建带有复选框的项目列表。在支持任务列表的Markdown应用程序中,复选框将显示在内容旁边。要创建任务列表,请在任务列表项之前添加破折号(`-`)和方括号,并在空格处加上()`[ ]`。要选择一个复选框,请`x`在方括号(``)之间添加进去 。
```
- Write the press release
- [ ] Update the website
- [ ] Contact the media
```
呈现的输出如下所示:
![降价任务列表](https://www.markdown.xyz/assets/images/tasklist.png)
## Emoji
将表情符号添加到Markdown文件的方法有两种:将表情符号复制并粘贴到Markdown格式的文本中,或者键入*emoji 代码*。
### 复制和粘贴表情符号
在大多数情况下,您可以简单地从(https://emojipedia.org/)等来源复制表情符号并将其粘贴到文档中。许多Markdown应用程序会自动以Markdown格式的文本显示表情符号。从Markdown应用程序导出的HTML和PDF文件应显示表情符号。
**提示:**如果您使用的是静态网站生成器,请确保将(https://www.w3.org/International/tutorials/tutorial-char-enc/)。
### 使用表情符号简码
一些Markdown应用程序允许您通过键入表情符号短代码来插入表情符号。这些以冒号开头和结尾,并包含表情符号的名称。
```
Gone camping! :tent: Be back soon.
That is so funny! :joy:
```
呈现的输出如下所示:
Gone camping! :tent: Be back soon.
That is so funny! :joy:
**注意:**您可以使用此[表情符号简码列表](https://gist.github.com/rxaviers/7360908),但请记住,表情符号简码因应用程序而异。有关更多信息,请参阅Markdown应用程序的文档。
## 自动网址链接
许多Markdown处理器会自动将URL转换为链接。这意味着如果您输入http://www.example.com,即使您未[使用方括号](https://www.markdown.xyz/basic-syntax/#links),您的Markdown处理器也会自动将其转换为链接。
```
http://www.example.com
```
呈现的输出如下所示:
(http://www.example.com/)
## 禁用自动URL链接
如果您不希望自动链接URL,则可以通过[将URL表示为](https://www.markdown.xyz/basic-syntax/#code)带有反引号的[代码](https://www.markdown.xyz/basic-syntax/#code)来删除该链接。
```
`http://www.example.com`
```
呈现的输出如下所示:
```
http://www.example.com
```
# 工具推荐
#### Bear
Bear is a Markdown notes application for macOS and iOS devices.
[了解更多](https://www.markdown.xyz/tools/bear/)
#### Boostnote
Boostnote is a Markdown note taking application for developers.
[了解更多](https://www.markdown.xyz/tools/boostnote/)
#### CodiMD
CodiMD is an open-source real-time collaborative Markdown editor.
[了解更多](https://www.markdown.xyz/tools/codimd/)
#### Dillinger
Dillinger is an online Markdown editor designed for on-the-go writing.
[了解更多](https://www.markdown.xyz/tools/dillinger/)
#### Docusaurus
Docusaurus converts Markdown files to a documentation website.
[了解更多](https://www.markdown.xyz/tools/docusaurus/)
#### Ghost
Ghost is an open source CMS renowned for its speed, simplicity, and ease of use.
[了解更多](https://www.markdown.xyz/tools/ghost/)
#### GitBook
GitBook is a hosted solution for documentation websites and knowledge bases.
[了解更多](https://www.markdown.xyz/tools/gitbook/)
#### GitHub Pages
GitHub Pages is a free service that turns Markdown files into a website.
[了解更多](https://www.markdown.xyz/tools/github-pages/)
#### Hugo
Hugo is a static site generator that converts Markdown files to a website.
[了解更多](https://www.markdown.xyz/tools/hugo/)
#### iA Writer
iA Writer is one of the most established and widely-acclaimed Markdown editors.
[了解更多](https://www.markdown.xyz/tools/ia-writer/)
#### Imdone
Imdone is a markdown based kanban board, that lives in your notes, docs, and code.
[了解更多](https://www.markdown.xyz/tools/imdone/)
#### Jekyll
Jekyll is a static site generator that converts Markdown files to a website.
[了解更多](https://www.markdown.xyz/tools/jekyll/)
#### Joplin
Joplin is a note taking application that respects your privacy.
[了解更多](https://www.markdown.xyz/tools/joplin/)
#### MacDown
MacDown is one of the best Markdown editors available for macOS.
[了解更多](https://www.markdown.xyz/tools/macdown/)
#### Mark Text
Mark Text is a popular free and open-source editor designed for Markdown.
[了解更多](https://www.markdown.xyz/tools/mark-text/)
#### Markdeep
Markdeep turns any Markdown file into a self-contained HTML file.
[了解更多](https://www.markdown.xyz/tools/markdeep/)
#### Markdown Here
Markdown Here is a browser extension that converts Markdown text in web forms.
[了解更多](https://www.markdown.xyz/tools/markdown-here/)
#### Mattermost
Mattermost is an open source messaging and team collaboration application.
[了解更多](https://www.markdown.xyz/tools/mattermost/)
#### MkDocs
MkDocs is a static site generator for building documentation websites.
[了解更多](https://www.markdown.xyz/tools/mkdocs/)
#### Notable
Notable is a bare-bones note taking application with great Markdown support.
[了解更多](https://www.markdown.xyz/tools/notable/)
#### Notion
Notion is an all-in-one knowledge management solution for everyone.
[了解更多](https://www.markdown.xyz/tools/notion/)
Reddit is a popular online community that supports posting in Markdown.
[了解更多](https://www.markdown.xyz/tools/reddit/)
#### Simplenote
Simplenote is a cross-platform Markdown notes application.
[了解更多](https://www.markdown.xyz/tools/simplenote/)
#### Slack
Slack is a messaging and team collaboration application.
[了解更多](https://www.markdown.xyz/tools/slack/)
#### Squarespace
Squarespace is a popular subscription service for building websites.
[了解更多](https://www.markdown.xyz/tools/squarespace/)
#### StackEdit
StackEdit is a powerful online Markdown editor you can use anywhere.
[了解更多](https://www.markdown.xyz/tools/stackedit/)
#### Standard Notes
Standard Notes is an elegant, open-source note taking application.
[了解更多](https://www.markdown.xyz/tools/standard-notes/)
#### Trello
Trello is a kanban-style project management application.
[了解更多](https://www.markdown.xyz/tools/trello/)
#### Typora
Typora is a simple and configurable editor designed for notes and documents.
[了解更多](https://www.markdown.xyz/tools/typora/)
#### Ulysses
Ulysses is a popular writing application for macOS and iOS devices.
[了解更多](https://www.markdown.xyz/tools/ulysses/)
---
本篇文章转载自并基于(https://www.markdown.xyz/)部分汉化和修改 拉了半天才拉到底 typora 天下第一 markdown本地用vscode来写也不错 千城忆梦 发表于 2020-10-17 22:14
markdown本地用vscode来写也不错
我目前使用typora,很简洁,超爱,但是比较喜欢他的Mac版本的,因为Windows版本没有设计窗口,比较难看,而且还支持主题 fuxing4 发表于 2020-10-17 22:19
拉了半天才拉到底
哈哈,推荐你个快捷方式,用键盘功能区“end”键,可以快速到网页最底部,同样“home”键到顶部{:301_987:} 好文,已收藏用来学习,非常感谢! 用不习惯啊 腾讯文档也带md 不如用latex