MDUtil

Markdown 注释

Markdown 本身没有注释语法,但有两种写法可以在渲染后的页面上隐藏文字:HTML 注释和没有被引用的链接定义。本文介绍这两种写法以及各自适合的场合。

简短回答

Markdown 怎么写注释?

用 HTML 注释包住文字:<!-- 备注 -->,它在渲染后的页面上不显示,但仍然留在文件里。如果希望连 HTML 里也没有,就单独写一行没有被引用的链接定义:[//]: # (备注)。

Markdown
看得见的文字。

<!-- 这条备注被隐藏了。 -->

[//]: # (这一条也被隐藏了。)

更多看得见的文字。

显示效果

看得见的文字。

更多看得见的文字。

注释的写法和示例

两种注释在渲染后的页面上都会消失,区别在于文字还会留在哪里。

HTML 注释

渲染后的页面上不显示。注释仍然留在 Markdown 文件里,有些网站还会把它留在网页的 HTML 源码里。

Markdown
看得见的文字。

<!-- 这条备注被隐藏了。 -->

更多看得见的文字。

显示效果

看得见的文字。

更多看得见的文字。

多行注释

HTML 注释可以跨任意多行。

Markdown
<!--
待办:补充截图
和常见问题。
-->

正文从这里继续。

显示效果

正文从这里继续。

链接定义写法

没有被引用的链接定义不会产生任何输出,HTML 里也没有。它必须写在一行里,前面要有空行。

Markdown
看得见的文字。

[//]: # (这条注释不会出现在 HTML 里。)

更多看得见的文字。

显示效果

看得见的文字。

更多看得见的文字。

链接定义的其他写法

标签和地址可以随意写,注释放在括号或引号里的标题部分。

Markdown
[comment]: <> (用空地址隐藏)
[//]: # "用引号里的标题隐藏"

只显示这一行。

显示效果

只显示这一行。

注释掉一整段

用 HTML 注释包住一段 Markdown,可以先隐藏而不删除。

Markdown
## 更新日志

<!--
## 旧的规划
- 深色模式
-->

- 修复了登录问题

显示效果

更新日志
  • 修复了登录问题

Obsidian 注释

Obsidian 在阅读视图中隐藏两个 %% 之间的文字,其他应用会显示百分号。

Markdown
看得见的文字 %%行内注释%%

%%
隐藏的
多行内容。
%%

仅适用于 Obsidian。其他 Markdown 应用的显示效果不同,因此不提供预览。

各平台的注释支持

渲染 Markdown 文件的应用会隐藏两种注释,聊天软件没有注释。

应用支持情况说明
GitHub / GitLab支持文件、Issue 和 PR 里的 HTML 注释和 [//]: # 都会隐藏。
Obsidian支持HTML 注释和 %%文字%% 都会隐藏。
VS Code / Typora支持预览中两种注释都会隐藏。
Hugo / Jekyll支持两种注释都不会显示在页面上,HTML 注释可能留在网页源码里。
Discord / Slack不支持没有注释,文字会原样发出。

常见问题

HTML 注释读者看得到吗?

渲染后的页面上看不到。但打开 Markdown 文件的人都能看到,有些网站还会把注释留在网页的 HTML 源码里,所以不要把密码或私人内容写在注释里。

[//]: # 是什么意思?

这是一个链接定义,标签是 //,地址是 #。没有任何地方引用它,所以它不会产生输出,后面括号里的文字就起到了注释的作用。

为什么注释显示出来了?

链接定义写法前面需要空一行,并且要写在一行里。HTML 注释必须以 --> 结尾,没有结尾时,后面的内容可能全部消失。

GitHub 支持注释吗?

支持。GitHub 会在文件、Issue 和 Pull Request 中隐藏 HTML 注释和 [//]: #。Issue 和 Pull Request 模板常用 HTML 注释写填写说明。

能隐藏一整段内容吗?

能。在这段内容的上一行写 <!--,下一行写 -->,中间的 Markdown 都不会显示。

代码块里能写注释吗?

代码块里的内容都会原样显示,Markdown 注释在那里会变成普通文字。请使用代码所用语言自己的注释写法。

Obsidian 里怎么写注释?

用 %% 包住文字:%%隐藏的内容%%。编辑时可以看到,阅读视图中会隐藏。

导出 PDF 或 Word 时注释会保留吗?

不会。两种注释都不产生输出,Markdown 转 PDF 和 Markdown 转 Word 都会把它们去掉。