Markdown中的评论

在批注文件中存储注释的语法是什么,例如文件顶部的CVS $ Id $注释? 我在减价项目上找不到任何东西。

我相信所有以前提出的解决scheme(除那些需要特定实现的解决scheme外)都会导致注释被包含在输出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) 

在这种types的注释之前和之后插入一个空白行也是谨慎的,因为一些Markdownparsing器可能不喜欢链接定义对常规文本的刷新。

这应该适用于大多数Markdownparsing器,因为它是核心规范的一部分。 (即使定义了多个链接时的行为,或者定义了链接但从未使用链接的行为也没有严格规定)。

我使用标准的HTML标签,如

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

注意三重短划线。 它的优点是在生成TeX或HTML输出时可以与pandoc协同工作。 更多的信息可以在pandoc讨论组中find 。

这个小小的研究certificate和改进了Magnus的答案

最平台独立的语法是

 (empty line) [comment]: # (This actually is the most platform independent comment) 

这两个条件都很重要:

  1. 使用# (而不是<>
  2. 在评论前用空行 。 评论之后的空行对结果没有影响。

严格的Markdown规范CommonMark只能按照这个语法(而不是<>和/或空行)

为了certificate这一点,我们将使用John MacFarlane所写的Babelmark2。 该工具检查28个Markdown实现中特定源代码的呈现。

+ – 通过了testing, -没有通过, – 留下了一些垃圾,这些垃圾没有在呈现的HTML中显示)。

  • 没有空行,使用<> 13+,15-
  • 空行注释之前,使用<> 20+,8-
  • 评论周围的空行,使用<> 20+,8-
  • 没有空行,使用# 13 + 1? 14-
  • 评论之前的空行,使用# 23 + 1? 4-
  • 评论周围的空行,使用# 23 + 1? 4-

这certificate了上面的陈述。

这些实现失败所有6个testing。 没有机会使用排除在渲染评论与他们。

  • cebe / markdown 1.1.0
  • cebe / markdown MarkdownExtra 1.1.0
  • cebe / markdown GFM 1.1.0
  • s9e \ TextFormatter(Fatdown / PHP)

如果你正在使用Jekyll或八爪鱼以下也将工作。

 {% comment %} These commments will not include inside the source. {% endcomment %} 

液体标记{% comment %}首先被parsing,然后在MarkDown处理器甚至到达它之前被移除。 当他们试图从浏览器查看源代码时,访问者不会看到。

另一种方法是将注释放在风格化的HTML标签中。 这样,您可以根据需要切换其可见性。 例如,在CSS样式表中定义一个注释类。

.comment { display: none; }

然后,下面的增强MARKDOWN

We do <span class="comment">NOT</span> support comments

在BROWSER中显示如下

We do support comments

这适用于GitHub:

 [](Comment text goes here) 

生成的HTML如下所示:

 <a href="Comment%20text%20goes%20here"></a> 

这基本上是一个空的链接。 很明显,你可以在提供的文本的源文件中阅读,但是你可以在GitHub上做到这一点。

另请参阅批评标记,由越来越多的Markdown工具支持。

http://criticmarkup.com/

 Comment {>> <<} Lorem ipsum dolor sit amet.{>>This is a comment<<} Highlight+Comment {== ==}{>> <<} Lorem ipsum dolor sit amet, consectetur adipiscing elit. {==Vestibulum at orci magna. Phasellus augue justo, sodales eu pulvinar ac, vulputate eget nulla.==}{>>confusing<<} Mauris massa sem, tempor sed cursus et, semper tincidunt lacus. 

披露:我写了这个插件。

由于该问题没有指定具体的降价实现,所以我想提一下python-markdown的注释插件 ,它实现了上面提到的相同的pandoc注释风格。

如何把评论放在一个非Eval的非回声R块? 即

 ```{r echo=FALSE, eval=FALSE} All the comments! ``` 

似乎对我很好。

 <!--- ... --> 

在Pandoc Markdown中不起作用(Pandoc 1.12.2.1)。 评论仍然出现在HTML中。 以下工作:

 Blank line [^Comment]: Text that will not appear in html source Blank line 

然后使用+脚注扩展。 这本质上是一个从未被引用的脚注。

kramdown – 基于Ruby的Markdown引擎是Jekyll的默认设置,因此GitHub Pages- 通过扩展语法具有内置的注释支持 :

 {::comment} This text is completely ignored by kramdown - a comment in the text. {:/comment} Do you see {::comment}this text{:/comment}? {::comment}some other comment{:/} 

这有利于允许在线评论,但不能移植到其他Markdown引擎的缺点。

Vim Instant-Markdown用户需要使用

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

你可以试试

 []( Your comments go here however you cannot leave // a blank line so fill blank lines with // Something ) 

对于pandoc来说,阻止评论的一个好方法是使用yaml元块, 正如pandoc作者所build议的 。 我注意到,与其他许多提议的解决scheme相比,这至less在我的环境( vimvim-pandocvim-pandoc-syntax )中提供了更正确的语法突出显示。

由于html-注释不能嵌套 ,因此我使用yaml块注释和html-inline注释组合在一起。 不幸的是, 在yaml元区块内没有阻止注释的方法 ,所以每一行都必须单独评论。 幸运的是,软件中只能有一行。

在我的~/.vimrc ,我设置了块注释的自定义快捷键:

 nmap <Leader>b }o<Esc>O...<Esc>{ji#<Esc>O---<Esc>2<down> nmap <Leader>v {jddx}kdd 

作为我的<Leader>键,分别使用,b,v评论和取消注释。 如果我需要评论多个段落,我将j,b映射到一个macros(通常是Q ),然后运行<number-of-paragraphs><name-of-macro> (例如( 3Q )。