如何在Markdown中编写注释,即HTML输出中未呈现的文本?我在Markdown项目中没有发现任何东西。


当前回答

对于PandocMarkdown,我使用带有注释的反引号作为内联“代码”语法的语言

`here's a comment`{=comment}

这将在所有输出中自动过滤掉。它只是重载它们的代码语法,也适用于多行注释的代码块。我还没有尝试过,但我猜这对非潘多克·马克顿来说不起作用。

其他回答

Vim Instant Markdown用户需要使用

<!---
First comment line...
//
_NO_BLANK_LINES_ARE_ALLOWED_
//
_and_try_to_avoid_double_minuses_like_this_: --
//
last comment line.
-->

我使用标准的HTML标记,例如

<!---
your comment goes here
and here
-->

注意三点划线。其优点是,在生成TeX或HTML输出时,它可以与pandoc一起工作。有关更多信息,请访问pandoc讨论组。

我相信,所有先前提出的解决方案(除了那些需要特定实现的解决方案)都会导致注释包含在输出HTML中,即使它们没有显示出来。

如果你想要一个完全属于你自己的评论(转换文档的读者应该看不到它,即使使用“查看源代码”),你可以(ab)使用核心Markdown规范中提供的链接标签(用于参考样式链接):

http://daringfireball.net/projects/markdown/syntax#link

即:

[comment]: <> (This is a comment, it will not be included)
[comment]: <> (in  the output file unless you use it in)
[comment]: <> (a reference style link.)

或者您可以进一步:

[//]: <> (This is also a comment.)

为了提高平台兼容性(并节省一次按键),也可以使用#(这是合法的超链接目标)而不是<>:

[//]: # (This may be the most platform independent comment)

为了实现最大的可移植性,在这种类型的注释前后插入一个空行是很重要的,因为某些Markdown解析器在定义碰到常规文本时无法正常工作。Babelmark的最新研究表明,前后空白行都很重要。如果前面没有空行,一些解析器将输出注释,如果后面没有空行则一些解析器将排除以下行。

通常,这种方法应该适用于大多数Markdown解析器,因为它是核心规范的一部分。(即使定义了多个链接时的行为,或定义了链接但从未使用时的行为也未严格指定)。

如果它在VS代码中,那么还有另一个好选项:

<span hidden> Some texts </span>

与“HTML注释标记”相比,它具有在编辑区域保持语法高亮显示的优势,以及为语义标记添加属性的能力,如<span notice hidden>。

警告:根据常识,不要在源代码中包含个人信息。

使用mkdocs时,添加mkdocs.yml:

  - pymdownx.striphtml:
      strip_comments: true
      strip_js_on_attributes: false

然后在任何markdown文件中使用普通的html注释,如

<!-- this is a comment -->

将从html输出中删除。