Markdig
Programming
最終更新: 2025-08-15
公開: 2025-01-09

目次
-
- 2.1. (1) Markdig をインストール
- 2.2. (2) コード (Program.cs)
はじめに
Markdig は、.NET 向けのオープンソース Markdown ライブラリ。 Markdown 形式のテキストを HTML に変換でき、NuGet パッケージとして提供されている。
最小コード
(1) Markdig をインストール
Install-Package Markdig
(2) コード (Program.cs)
Markdown.ToHtml()
で変換。
// Program.cs
using Markdig;
// Markdown テキスト
var markdown = "# こんにちは、コロちんだよ!\nこれは *Markdig* のテストです。";
// Markdown を HTML に変換
var html = Markdown.ToHtml(markdown);
// 結果を表示
Console.WriteLine(html);
出力結果
<h1>こんにちは、コロちんだよ!</h1>
<p>これは <em>Markdig</em> のテストです。</p>
Markdig の出力をカスタマイズ
Markdig には Markdown の解析と変換処理の流れを制御・カスタマイズするためのパイプライン(MarkdownPipeline)という仕組みがある。
AutoIdentifiers
という拡張機能をパイプラインに追加してみる。
MarkdownPipelineBuilder
のインスタンスを生成し、Markdown.ToHtml()
の第2引数に指定すればよい。
using Markdig;
using Markdig.Extensions.AutoIdentifiers;
// Markdown テキスト
var markdown = "# こんにちは、コロちんだよ!\nこれは *Markdig* のテストです。";
// パイプラインを構築
var pipeline = new MarkdownPipelineBuilder()
.UseAutoIdentifiers(AutoIdentifierOptions.GitHub) // GitHub スタイルの自動識別子を使用
.Build();
// Markdown を HTML に変換
var html = Markdown.ToHtml(markdown, pipeline);
// 結果を表示
Console.WriteLine(html);
出力結果
<h1 id="こんにちはコロちんだよ">こんにちは、コロちんだよ!</h1>
<p>これは <em>Markdig</em> のテストです。</p>
見出しタグに id が追加されている。
変換サンプル
Markdown - Wikipedia のタグを Markdig で変換してみる。
引用
> "このテキストは、HTMLのblockquote要素に囲まれます。
blockquote要素はreflowableです。テキストを好きなように
改行することができます。改行したとしても、変換後はひとつの
blockquote要素として扱われます。"
"このテキストは、HTMLのblockquote要素に囲まれます。 blockquote要素はreflowableです。テキストを好きなように 改行することができます。改行したとしても、変換後はひとつの blockquote要素として扱われます。"
リスト
* 順序無しリストのアイテム
* サブアイテムはタブもしくは4つのスペースでインデントする
* 順序無しリストの別のアイテム
+ 順序無しリストのアイテム
+ サブアイテムはタブもしくは4つのスペースでインデントする
+ 順序無しリストの別のアイテム
- 順序無しリストのアイテム
- サブアイテムはタブもしくは4つのスペースでインデントする
- 順序無しリストの別のアイテム
1. 順序付きリストのアイテム
1. サブアイテムはタブもしくは4つのスペースでインデントする
2. 順序付きリストの別のアイテム
- 順序無しリストのアイテム
- サブアイテムはタブもしくは4つのスペースでインデントする
- 順序無しリストの別のアイテム
- 順序無しリストのアイテム
- サブアイテムはタブもしくは4つのスペースでインデントする
- 順序無しリストの別のアイテム
- 順序無しリストのアイテム
- サブアイテムはタブもしくは4つのスペースでインデントする
- 順序無しリストの別のアイテム
- 順序付きリストのアイテム
- サブアイテムはタブもしくは4つのスペースでインデントする
- 順序付きリストの別のアイテム
コード
これは段落です。文中に`コードテキスト`を含みます。
これは段落です。文中にコードテキスト
を含みます。
```javascript
(() => {
'use strict';
console.log('Hello world');
})();
```
(() => {
'use strict';
console.log('Hello world');
})();
水平線
* * *
***
*****
- - -
---------------------------------------
リンク
[リンクのテキスト](リンクのアドレス "リンクのタイトル")
[リンクのテキスト][linkref]
これは参照リンクの例です:[Markdown - Wikipedia][linkref]
これは参照リンクの例です:Markdown - Wikipedia
強調
*強調* もしくは _強調_(斜体として表現されることが多い)
**強い強調** もしくは __強い強調__(太字として表現されることが多い)
強調 もしくは 強調(斜体として表現されることが多い)
強い強調 もしくは 強い強調(太字として表現されることが多い)
画像


インライン HTML
<font color="red">赤</font>
赤
参考資料
xoofx / markdig - GitHub
CommonMark Spec
Markdown - Wikipedia