将评论存储在降价文件中的语法是什么,例如文件顶部的CVS $ Id $评论?我在markdown project上找不到任何内容。
答案 0 :(得分:1214)
我相信所有先前提出的解决方案(除了需要特定实现的解决方案之外)都会导致注释包含在输出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解析器,因为它是核心规范的一部分。 (即使定义了多个链接时的行为,或者定义了链接但从未使用过的链接,也没有严格规定)。
答案 1 :(得分:886)
我使用标准HTML标记,例如
<!---
your comment goes here
and here
-->
请注意三重破折号。优点是它在生成TeX或HTML输出时与pandoc一起使用。有关详细信息,请访问pandoc-discuss组。
答案 2 :(得分:160)
这项小型研究证明并完善了the answer by Magnus
与平台无关的语法最为
(empty line)
[comment]: # (This actually is the most platform independent comment)
这两个条件都很重要:
#
(而不是<>
) 严格的Markdown规范CommonMark仅适用于此语法(而不是<>
和/或空行)
为了证明这一点,我们将使用由John MacFarlane编写的Babelmark2。此工具检查28 Markdown实现中特定源代码的呈现。
(+
- 通过了测试,-
- 没有通过,?
- 留下了一些未在渲染HTML中显示的垃圾。)
<>
13 +,15 - <>
20 +,8 - <>
20 +,8 - #
13+ 1? 14 - #
23+ 1? 4 - #
23+ 1? 4 - 这证明了上述陈述。
这些实现失败了所有7个测试。没有机会对它们使用排除渲染的评论。
答案 3 :(得分:50)
如果您正在使用Jekyll或octopress,也可以使用。
{% comment %}
These commments will not include inside the source.
{% endcomment %}
首先解析Liquid标签{% comment %}
,然后在MarkDown处理器进入之前将其删除。访问者在尝试从浏览器中查看来源时将看不到。
答案 4 :(得分:33)
另一种方法是将注释放在程式化的HTML标记中。这样,您可以根据需要切换其可见性。例如,在CSS样式表中定义注释类。
.comment { display: none; }
然后,以下增强的MARKDOWN
We do <span class="comment">NOT</span> support comments
在BROWSER中显示如下
We do support comments
答案 5 :(得分:30)
这适用于GitHub:
[](Comment text goes here)
生成的HTML如下所示:
<a href="Comment%20text%20goes%20here"></a>
这基本上是一个空链接。显然你可以在渲染文本的源代码中读到它,但无论如何你都可以在GitHub上做到这一点。
答案 6 :(得分:17)
另见Critic Markup,由越来越多的Markdown工具提供支持。
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.
答案 7 :(得分:15)
Vim Instant-Markdown用户需要使用
<!---
First comment line...
//
_NO_BLANK_LINES_ARE_ALLOWED_
//
_and_try_to_avoid_double_minuses_like_this_: --
//
last comment line.
-->
答案 8 :(得分:13)
如何将注释放在非eval,非echo R块中?即,
```{r echo=FALSE, eval=FALSE}
All the comments!
```
似乎对我有用。
答案 9 :(得分:11)
披露:我写了插件。
由于问题未指定特定的降价实现,我想提及Comments Plugin的python-markdown,它实现了与上述相同的pandoc评论风格。
答案 10 :(得分:9)
<!--- ... -->
在Pandoc Markdown(Pandoc 1.12.2.1)中不起作用。评论仍然出现在HTML中。以下工作:
Blank line
[^Comment]: Text that will not appear in html source
Blank line
然后使用+脚注扩展名。它本质上是一个永远不会被引用的脚注。
答案 11 :(得分:5)
对于pandoc,阻止评论的一种好方法是使用yaml metablock as suggested by the pandoc author。我注意到,与许多其他提议的解决方案相比,这给出了更合适的语法突出显示,至少在我的环境中vim
,vim-pandoc
和vim-pandoc-syntax
)。
自html-comments cannot be nested起,我将yaml块注释与html-inline注释结合使用。不幸的是,有no way of block commenting within the yaml metablock,所以每行必须单独评论。幸运的是,在软包装的段落中应该只有一行。
在我的~/.vimrc
中,我为块注释设置了自定义快捷方式:
nmap <Leader>b }o<Esc>O...<Esc>{ji#<Esc>O---<Esc>2<down>
nmap <Leader>v {jddx}kdd
我使用,
作为<Leader>
- 密钥,因此,b
和,v
分别对段落进行评论和取消注释。如果我需要评论多个段落,我会将j,b
映射到一个宏(通常是Q
)并运行<number-of-paragraphs><name-of-macro>
(例如(3Q
)。同样适用于取消注释。< / p>
答案 12 :(得分:5)
kramdown - 基于Ruby的降价引擎,是Jekyll的默认值,因此是GitHub页面 - has built-in comment support through its extension syntax:
{::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引擎的缺点。
答案 13 :(得分:5)
以下内容效果很好
<empty line>
[whatever comment text]::
该方法利用了syntax to create links via reference
由于将不会呈现使用[1]: http://example.org
创建的链接引用,因此同样不会呈现以下任何内容
<empty line>
[whatever]::
[whatever]:whatever
[whatever]: :
[whatever]: whatever
答案 14 :(得分:4)
你可以尝试
SELECT spb.SPB_code
,spb.NAME
,spp.City
,spp.County
,spb.ADD1
,SUM(num.Amount_1) AS sum_amount_1
FROM SPB spb
INNER JOIN VW vw
ON spb.SPB_Code = vw.SPB_Code
INNER JOIN Num nm
ON vw.vw_Code = nm.vw_CodeCODE
INNER JOIN SPP spp
on spb.SPB_Code = spp.SPP_Code
WHERE nm.period BETWEEN '201501' AND '201503'
GROUP BY spb.SPB_code
,spb.NAME
,spp.City
,spp.County
,spb.ADD1;
答案 15 :(得分:1)
使用 mkdocs 时,添加您的 mkdocs.yml
:
- pymdownx.striphtml:
strip_comments: true
strip_js_on_attributes: false
然后在任何 Markdown 文件中使用普通的 html 注释,如
<!-- this is a comment -->
将从 html 输出中删除。
答案 16 :(得分:1)
我编写了一个小 awk 程序来过滤掉我添加到文本中的 #omitbegin 和 #omitend 标记之间。我使用 awk 将其输出通过管道传输到 pandoc 可以处理的临时文件。像这样:
awk -f omitfilter.awk aim2_article.md >aim2_article_tmp.md
pandoc --pdf-engine=xelatex --lua-filter=pagebreak.lua --filter pandoc-crossref --citeproc aim2_article_tmp.md -o aim2_article.pdf
这是omit filter.awk
:
/#omitbegin/ {
insideOmit = 1;
}
! insideOmit {
print $0
}
/#omitend/ {
insideOmit = 0;
}
答案 17 :(得分:0)
您可以执行此操作(YAML块):
~~~
# This is a
# multiline
# comment
...
我仅尝试使用乳胶输出,请为其他人确认。
答案 18 :(得分:0)
对于Github自述文件或Stackoverflow答案,我使用#进行内联注释。
示例:
# clone the remote repository to your local machine
npm clone https://github.com/chebaby/echebaby.git
# change directory
cd echebaby
# install dependencies
yarn install
答案 19 :(得分:0)
对于 Pandoc Markdown,我使用带有 comment
的反引号作为类似内联“代码”语法的语言
`here's a comment`{=comment}
这会在所有输出中自动过滤掉。它只是重载了他们的代码语法,也适用于多行注释的代码块。我没试过,但我猜这对非 Pandoc Markdown 不起作用。
答案 20 :(得分:0)
此 Markdown 评论不会在带有 Jekyll 的 GitHub Pages 站点上呈现
import re
import sys
if len(sys.argv) > 1:
val = sys.argv[1]
if re.search("^(abc|def)[0-9]+$", val.strip()) == None:
# do something here to inform the PHP code True or False