Markdig
プログラミング
公開 2025年1月10日
最終更新 2025年10月7日
目次
-
- 2.1. Markdig をインストール
- 2.2. コード(Program.cs)
はじめに
Markdig は、.NET 向けのオープンソース Markdown ライブラリです。
Markdown 形式のテキストを HTML に変換でき、NuGet パッケージとして提供されています。
豊富な拡張機能と高速な変換、柔軟なカスタマイズ性が魅力です。
最小コード
1Markdig をインストール
dotnet add package 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 にはパイプライン(MarkdownPipeline)と呼ばれる仕組みがあり、Markdown の解析と変換処理をカスタマイズできます。
AutoIdentifiers という拡張機能をパイプラインに追加してみます。
MarkdownPipeline のインスタンスを生成し、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 に変換
// 第2引数に MarkdownPipeline のインスタンスを指定
var html = Markdown.ToHtml(markdown, pipeline);
// 結果を表示
Console.WriteLine(html);
出力結果
<h1 id="こんにちはコロちんだよ">こんにちは、コロちんだよ!</h1>
<p>これは <em>Markdig</em> のテストです。</p>
見出しタグ(H タグ)に id が追加されています。
AutoIdentifiers は見出しタグに自動的に 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]
[linkref]: https://ja.wikipedia.org/wiki/Markdown
強調
*強調* もしくは _強調_(斜体として表現されることが多い)
**強い強調** もしくは __強い強調__(太字として表現されることが多い)
強調 もしくは 強調(斜体として表現されることが多い) 強い強調 もしくは 強い強調(太字として表現されることが多い)
画像


インライン HTML
<font color="red">赤</font>
赤