Markdownのコメント


1402

マークダウンファイルにコメントを保存するための構文は何ですか(ファイルの先頭にあるCVS $ Id $コメントなど)。マークダウンプロジェクトには何も見つかりませんでした。


10
行間を読むと、Markdownにメタデータを添付したいようです。そのため、ヘッダーを追加できるプリプロセッサを使用することをお勧めします。1つの例については、ジキルのフロントマターを参照してください。別の例として、BashoがドキュメントにMiddlemanをどのように使用しているかをご覧ください。(注:これは質問に対する直接の回答ではないため、コメントとして共有しています。)
David J.


これは、Babelmarkのさまざまなパーサーを使用したさまざまなコメントタイプのベンチマークです。
Ulysse BN

回答:


1456

以前に提案されたすべてのソリューション(特定の実装を必要とするものを除く)では、コメントが表示されなくても、出力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.)

プラットフォームの互換性を向上させる(および1つのキーストロークを節約#する)ために、<>次の代わりに(正当なハイパーリンクターゲット)を使用することもできます。

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

可搬性を最大にするには、このタイプのコメントの前後に空白行を挿入することが重要です。これは、一部のMarkdownパーサーが、定義が通常のテキストに対してブラッシュアップされるときに正しく機能しないためです。Babelmarkを使用した最新の調査では、前後の空白行がどちらも重要であることを示しています。一部のパーサーは、前に空白行がない場合にコメントを出力し、一部のパーサーは後に空白行がない場合に次の行を除外します。

一般に、このアプローチはコア仕様の一部であるため、ほとんどのMarkdownパーサーで機能します。(複数のリンクが定義されているとき、またはリンクが定義されていても使用されていないときの動作が厳密に指定されていなくても)。


145
[//]: # "Comment"そして、[//]: # (Comment)するので、より多様な実装で動作するように思われる#有効な相対URIです。たとえば、GitHubはを拒否し<>、行全体が表示されます。また、リンクラベルは他のコンテンツと空白行で区切る必要があることが多いことにも注意してください。
Zenexer 2014年

6
プラットフォームに最も依存しないようにするには、コメントの前に空の行が必要です。テストを参照してください:stackoverflow.com/a/32190021/2790048
Nick Volynkin、2015

6
これは複数行コメントに使用できますか?
クリプディック2015年

4
@RovingRichardはい、少なくともPandocでは、コメント付きブロックに空白行がない場合、これは複数行コメントに対して機能します(単一の改行で問題ありません)。ブロックコメントにはMagnusのアプローチを使用し、インラインコメントにはchlのHTMLアプローチを使用します(通常、ダッシュは2つだけです)。このようにして、すでにインラインHTMLコメントが含まれている段落をコメントアウトすることをブロックできます。
joelostblom

4
参考までに、Pandocを使用してTOCを作成している場合は、リンク参照の重複に関する警告が生成されます。(これらは単なる警告であり、目次は引き続き作成されます。)
Karl Giesing

995

私は次のような標準のHTMLタグを使用します

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

トリプルダッシュに注意してください。利点は、TeXまたはHTML出力を生成するときにpandocで動作することです。詳細については、pandoc-discussグループを参照してください。


73
私が正しく理解している場合、三重ダッシュは、マークダウンファイルを解析するときにpandocにコメントを無視させます。ただし、別のマークダウンエンジンを使用する場合、コメントは生成されたHTMLに表示されます(したがって、「ソースの表示」で表示されます)。したがって、そのコメントに入力する内容に注意する必要があります;)
cberzan

5
パンドックがトリプルダッシュをダブルダッシュとは異なる方法で処理する方法を説明できますか それらを実験したところ、同じように扱われたように見えました。また、Pandocユーザーガイドでは、「生のHTMLは、HTML、S5、Slidy、Slideous、DZSlides、EPUB、Markdown、およびTextile出力で変更されずに渡され、他の形式では抑制されます」と書かれています。トリプルダッシュには、ダブルダッシュよりも高い特権はないようです。
dkim d'

1
トリプルダッシュを含む@dkimコメントは無視され、HTML出力から破棄されます。これは、HTMLファイルに挿入される2つの破線のコメントには当てはまりません。これは、Pandocの最新バージョン(1.10)でも同じです。
2012年

32
トリプルダッシュが重要な場合、これらは「標準HTML」コメントではありません。
tripleee 2013

17
Google社員への注意:残念ながら、これはGitHub Markdownでは機能せず、結局Magnusのソリューションを使用しました。
ダニエルバックマスター、2014

198

この小さな研究は、マグナスによる答えを証明し、洗練さ せます

最もプラットフォームに依存しない構文は

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

どちらの条件も重要です。

  1. 使用する#(しない<>
  2. コメントの前に空行があります。コメントの後の空行は結果に影響を与えません。

厳密なMarkdown仕様CommonMarkは、この構文で意図したとおりにのみ機能します(<>および/または空の行では機能しません)。

これを証明するには、John MacFarlaneによって書かれたBabelmark2を使用します。このツールは、28のMarkdown実装で特定のソースコードのレンダリングをチェックします。

+—テストに合格しました— —合格-しませんでした?—レンダリングされたHTMLに表示されないガベージが残っています)。

これは上記のステートメントを証明します。

これらの実装は、7つのテストすべてに失敗します。それらと一緒にレンダリング時に除外されたコメントを使用する機会はありません。

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

3
優れた、徹底したテストツール!それはあなたに似ている右に見える# すべてが、GFMのために働く<> GFMのための作品ではなく、カップルの人を。あまりにも悪いGFMはコーナーケースであり、非常に人気のあるフレーバーでもあります。
ホブ2015年

1
# 2016年1月21日の時点でs9e \ TextFormatterは動作するようです。Cebe はまだ処理していません。
Troy Daniels

1
奇妙なことに、コメント(...)自体が含まれていると、コメントが壊れます。少なくともVisual Studio Code 1.19では。
Royi

1
したがって、一度にすべてのファイルにコメントしたいvimユーザーの場合:%s/^\(.*\)$/[comment]: # (\1)/g
Simon C.

Bablemark2が存在するというマークダウンについては何と言っていますか?
TCプロクター

54

Jekyllまたはoctopressを使用している場合は、以下も機能します。

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

Liquidタグ{% comment %}は最初に解析され、MarkDownプロセッサがそれに到達する前に削除されます。訪問者は、ブラウザからソースを表示しようとしても表示されません。


2
Jinja2 = {#複数行のコメント#}
John Mee

29

別の方法は、様式化されたHTMLタグ内にコメントを配置することです。このようにして、必要に応じて表示を切り替えることができます。たとえば、CSSスタイルシートでコメントクラスを定義します。

.comment { display: none; }

次に、次の拡張されたMARKDOWN

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

ブラウザに次のように表示されます

We do support comments


5
コピー/貼り付けは、「コメントされた」テキストと通常のテキストをコピーすることになるので、これを使用するときは注意してください。それは、テキストのブロックをコピーしている誰かに予期しない結果を簡単に生成する可能性があります。
Eilon、2014年

4
@エイロンもこれのアクセシビリティはひどいだろう
イーサン

アクセシビリティをサポートするエンジンは適切に表示をスキップします:テキストなし。
aredridel

28

これはGitHubで動作します:

[](Comment text goes here)

結果のHTMLは次のようになります。

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

これは基本的に空のリンクです。もちろん、レンダリングされたテキストのソースでそれを読むことができますが、とにかくGitHubでそれを行うことができます。


6
確かにそうですが、GitHubで常に機能するのは、実際のところ、これが実際の唯一の回答です(リストなど)。
jomo

私は同じ解決策にたどり着きました。インラインコメントを処理できるのはこれだけsome text [](hidden text) blah blahです。
c24w 2016年

3
この2019年3月8日のようgithubの上、もはや作品は、あるとして、それはレンダリング[](Comment text goes here)
dogmatic69

19

Vim Instant-Markdownユーザーは使用する必要があります

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

18

マークダウンツールの数の増加によってサポートされている批評家マークアップも参照してください。

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.

5
このような「疑似」標準の問題の1つは、移植性がないことです。一部のWebサイトでは、これらは完全に機能しますが、他のWebサイトでは機能しません。
Willem Van Onsem 2014年

14

非eval、non-echoのRブロックにコメントを入れてみませんか?つまり、

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

私にはうまくいくようです。


2
また、cat("# Some Header")「コメントアウトされた」コードブロック内などを自由に使用して使用results = "asis"できます。また、コメントアウトされたセクション全体をコードに追加できますeval = FALSE。これは、Rの評価がpandocコンパイル。アイデアをありがとう!
MichaelChirico


11
<!--- ... --> 

Pandoc Markdown(Pandoc 1.12.2.1)では機能しません。コメントはまだhtmlで表示されました。以下はうまくいきました:

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

次に+ footnote拡張機能を使用します。これは基本的に、決して参照されない脚注です。


出力がまったく生成されないので、これが一番好きです。Bitbucketの場合、次のプレフィックスで十分です[#]:
ceving

7

以下は非常にうまく機能します

<empty line>
[whatever comment text]::

で 作成されたリンク参照はレンダリングされないため、そのメソッドは構文を利用して参照を介し
てリンクを作成し[1]: http://example.orgます。同様に、次のいずれも同様にレンダリングされません

<empty line>
[whatever]::
[whatever]:whatever
[whatever]: :
[whatever]: whatever

これ(テスト済みの最初のバリアント)pandocは、GitlabおよびGitHubの現在のオンラインインスタンスと同様に機能ます
doak

5

pandocの場合、コメントをブロックする良い方法は、pandocの作者が提案したように、yamlメタブロックを使用することです。私は、これは(少なくとも私の環境では他の提案された解決策の多くに比べて、コメントのより適切な構文の強調表示を与えることに気づいたvimvim-pandocvim-pandoc-syntax)。

htmlコメントはネストできないため、yamlブロックコメントをhtmlインラインコメントと組み合わせて使用​​しています。残念ながら、yamlメタブロック内でブロックコメントする方法ないため、すべての行を個別にコメントする必要があります。幸いなことに、ソフトラップされた段落には1行しかありません。

私のでは~/.vimrc、ブロックコメントのカスタムショートカットを設定しています。

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

私が使用し,、私のよう<Leader>-key、そう,b,vはそれぞれ、コメントおよびコメント解除A段落。複数の段落にコメントを付ける必要がある場合はj,b、マクロ(通常はQ)にマップして実行<number-of-paragraphs><name-of-macro>(例3Q:())します。コメントを外しても同じように機能します。


5

kramdown(Jekyll、したがってGitHub PagesのデフォルトであるRubyベースのマークダウンエンジン)には、拡張構文によるコメントサポートが組み込まれています

{::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エンジンに移植できないという欠点があります。


4

あなたが試すことができます

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

4

これを行うことができます(YAMLブロック):

~~~
# This is a
# multiline
# comment
...

ラテックス出力のみで試してみました。他で確認してください。


HTML出力でも動作します。
petzi

DanielによるHTML出力の確認が正しいかどうかはわかりません。私はhtml出力ファイルを使用してそれを実行し、「pandoc --bibliography paper.bib -o paper.html paper.md」を実行すると、HTMLにコメント行が表示されました。
markgalassi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.