マークダウン記法の文章の中にマークアップ記法を書けますか?書けるとするとそれはなぜですか?どのような規約で決まっていますか?

Markdown記法の中にマークアップ記法(例えばHTML)を書くことは可能です。これは、Markdownが本来HTMLに変換されることを前提とした軽量マークアップ言語であり、HTMLコードをサポートする設計がされているからです。そのため、Markdownで書かれたドキュメントにHTMLコードを挿入することができ、HTMLタグを使用してより複雑なレイアウトや装飾を加えることができます。

できる理由

Markdownの仕様は、John Gruberのオリジナル仕様と、それを拡張したCommonMarkによって管理されています。これらの仕様によれば、HTMLブロックがMarkdownテキストの中に含まれている場合、それはそのままHTMLとして解釈されることが想定されています。例えば、次のようなコードがMarkdownファイル内で使えます。

これはMarkdownで書かれたテキストです。

<div style="color: red;">
    これはHTMLで書かれたテキストです。
</div>

Markdownは、このようにHTMLのタグをサポートしており、Markdown文書内にHTMLを埋め込むことができます。

決まっている規約

Markdown自体には、特に「他のマークアップ言語をサポートしてはいけない」とする明確な制限がないため、HTMLのコードを含めることは推奨される方法の一つとされています。さらに、HTMLコードがMarkdownのシンタックスに影響を与えない限り、HTMLコードはMarkdownパーサによってそのままの形で処理され、HTMLとしてレンダリングされます。

ただし、HTMLがすべてのMarkdownエンジンで完全にサポートされているわけではありません。例えば、GitHub Flavored Markdown(GFM)ではHTMLがサポートされているものの、Jupyter Notebookのような特定のMarkdownレンダリングエンジンではサポートが限定的です。そのため、使用するエンジンやプラットフォームによって、対応可能なHTMLタグの種類や挙動が異なる場合もあります。

注意点

Markdown文書にHTMLを埋め込む場合、そのMarkdown文書をレンダリングするプラットフォームでHTMLタグがどのように扱われるかを確認する必要があります。特に、XSS(クロスサイトスクリプティング)などのセキュリティリスクを軽減するために、いくつかのHTMLタグ(<script>タグなど)がブロックされていることがあります。