Markdig

プログラミング
最終更新: 2025年08月15日 公開: 2025年01月10日
Article Image

はじめに

Markdig は、.NET 向けのオープンソース Markdown ライブラリ。 Markdown 形式のテキストを HTML に変換でき、NuGet パッケージとして提供されている。

公式 xoofx / markdig - GitHub

最小コード

(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つのスペースでインデントする
  • 順序無しリストの別のアイテム
  1. 順序付きリストのアイテム
    1. サブアイテムはタブもしくは4つのスペースでインデントする
  2. 順序付きリストの別のアイテム

コード

これは段落です。文中に`コードテキスト`を含みます。

これは段落です。文中にコードテキストを含みます。

```javascript
(() => {
  'use strict';

  console.log('Hello world');
})();
```
(() => {
  'use strict';

  console.log('Hello world');
})();

水平線

* * *

***

*****

- - -

---------------------------------------





リンク

[リンクのテキスト](リンクのアドレス "リンクのタイトル")

[リンクのテキスト][linkref]

これは参照リンクの例です:[Markdown - Wikipedia][linkref]

リンクのテキスト
リンクのテキスト

これは参照リンクの例です:Markdown - Wikipedia

強調

*強調* もしくは _強調_(斜体として表現されることが多い)

**強い強調** もしくは __強い強調__(太字として表現されることが多い)

強調 もしくは 強調(斜体として表現されることが多い)

強い強調 もしくは 強い強調(太字として表現されることが多い)

画像

![Altのテキスト](https://korochin0911.github.io/images202501/xzxkrv.webp)

![Altのテキスト](https://korochin0911.github.io/images202501/xzxkrv.webp "タイトル")

AltのテキストAltのテキスト

タイトルAltのテキスト

インライン HTML

<font color="red">赤</font>

参考資料

xoofx / markdig - GitHub
CommonMark Spec
Markdown - Wikipedia