Djot()は、CommonMarkの複雑で効率的に解析することが難しい構文を改善することを目的とした軽量マークアップ言語である。Djotは2022年にPandocの作者でありCommonMarkの標準化グループのメンバーでもあるによって作成された。
Djotの機能の殆どはCommonMarkから派生しているが、説明リスト、脚注、表、いくつかの新しい種類のインライン書式設定、数式、スマート句読点を含むより多くの機能が含まれている。
オリジナルのリファレンス実装はスクリプト言語(Lua)で書かれているが、Djotは効率的に解析できるように設計されているので非常に高速に構文解析される。
DjotのコードとドキュメンテーションはMITライセンスで公開されている。
CommonMarkとの違い Djotの構文はCommonMarkの構文に似ているが、いくつかの違いがある。
空白行 CommonMarkではブロックレベル要素の周りに空白行は不要だが、Djotでは必要である。
例:
入力 CommonMark処理系によって生成される対応するHTML Djot処理系によって生成される対応するHTML# 見出し 段落。<h1>見出し</h1>
<p>段落。</p><h1>見出し 段落。</h1># 見出し
段落。<h1>見出し</h1>
<p>段落。</p><h1>見出し</h1>
<p>段落。</p>
入力 CommonMark処理系によって生成される対応するHTML Djot処理系によって生成される対応するHTML* 果物 * リンゴ * バナナ<ul> <li>果物 <ul> <li>リンゴ</li> <li>バナナ</li> </ul> </li> </ul><ul> <li>果物 * リンゴ * バナナ </li> </ul>* 果物
* リンゴ * バナナ<ul> <li><p>果物</p> <ul> <li>リンゴ</li> <li>バナナ</li> </ul> </li> </ul><ul> <li>果物 <ul> <li>リンゴ</li> <li>バナナ</li> </ul> </li> </ul>
見出し Djotには形式の見出し(=か-を使う)はなく、ATX形式の見出し(#を使う)だけがある。
例:
CommonMarkの構文を使用したテキスト Djotの構文を使用したテキスト 生成される対応するHTML見出し
サブ見出し -----------# 見出し
## サブ見出し<h1>見出し</h1>
<h2>サブ見出し</h2>
強調 CommonMarkは1つの*または_を強調に使用し、2つの*または_を強い強調に使用する。Djotは1つの_を強調に使用し、1つの*を強い強調に使用する。
例:
CommonMarkの構文を使用したテキスト Djotの構文を使用したテキスト 生成される対応するHTMLテキストの属性 _強調_、**強い強調**。テキストの属性 _強調_、*強い強調*。<p>テキストの属性 <em>強調</em>、<strong>強い強調</strong>。</p>
リンク CommonMarkとは異なり、Djotにはリンクにタイトルを追加するための特別な構文はない。タイトルの追加には一般的な属性構文を使うことができる。
例:
CommonMarkの構文を使用したテキスト Djotの構文を使用したテキスト 生成される対応するHTML[リンク](http://example.com "タイトル")。[リンク](http://example.com){title="タイトル"}。<p><a href="http://example.com" title="タイトル">リンク</a>。</p>
例 Djotの構文を使用したテキスト Djot処理系によって生成される対応するHTML ブラウザでのレンダリング結果# 見出し
## サブ見出し
段落は空白行によって 区切られます。
行末のバックスラッシュは\ 改行を引き起こします。<h1>見出し</h1>
<h2>サブ見出し</h2>
<p>段落は空白行によって 区切られます。</p>
<p>行末のバックスラッシュは<br> 改行を引き起こします。</p>見出し
サブ見出し
段落は空白行によって 区切られます。
行末のバックスラッシュは 改行を引き起こします。テキストの属性 _強調_、*強い強調*、`モノスペース`。
水平線:
* * *<p>テキストの属性 <em>強調</em>、<strong>強い強調</strong>、<code>モノスペース</code>。</p>
<p>水平線:</p>
<hr>テキストの属性 強調、強い強調、モノスペース。</p>
水平線:順序付きリスト内に入れ子された順序なしリスト:
1. 果物
* リンゴ * バナナ
2. 野菜
- ニンジン - ブロッコリー<p>順序付きリスト内に入れ子された順序なしリスト:</p>
<ol> <li>果物 <ul> <li>リンゴ</li> <li>バナナ</li> </ul> </li> <li>野菜 <ul> <li>ニンジン</li> <li>ブロッコリー</li> </ul> </li> </ol>順序付きリスト内に入れ子された順序なしリスト:
果物 リンゴ バナナ 野菜 ニンジン ブロッコリー[リンク](http://example.com)。
{title="アイコン"}
> Djotはブロック引用に 電子メール形式の文字を使います。 > > 複数の段落にする場合は個別に行頭に引用符を追加する必要があります。
インライン`<abbr title="Hypertext Markup Language">HTML</abbr>`{=html}タグなどの未加工のコンテンツは明示的にマークする必要があります。<p><a href="http://example.com">リンク</a>。</p>
<p><img alt="画像" title="アイコン" src="Icon-pictures.png"></p>
<blockquote> <p>Djotはブロック引用に電子メール形式の文字を使います。</p> <p>複数の段落にする場合は個別に行頭に引用符を追加する必要があります。</p> </blockquote>
<p>インライン<abbr title="Hypertext Markup Language">HTML</abbr>タグなどの未加工のコンテンツは明示的にマークする必要があります。</p>リンク。
Djotはブロック引用に電子メール形式の文字を使います。
複数の段落にする場合は個別に行頭に引用符を追加する必要があります。
インラインHTMLタグなどの未加工のコンテンツは明示的にマークする必要があります。
実装 + Djotの実装 名前 ライセンス 言語 リポジトリ 説明 djot.js TypeScript https://github.com/jgm/djot.js TypeScriptによるオリジナルのリファレンス実装の再実装。 djot.lua Lua https://github.com/jgm/djot.lua オリジナルのリファレンス実装。 Jotdown Rust https://github.com/hellux/jotdown Rustのライブラリとして実装されたプル・パーサー。 Djota Prolog https://github.com/aarroyoc/djota Prologによる実装。 djoths Haskell https://github.com/jgm/djoths Haskellのライブラリとコマンドラインツール。 godjot Go https://github.com/sivukhin/godjot Goによる実装。
使用 Pandocはバージョン3.1.12以降で入力フォーマットと出力フォーマットとしてDjotに対応している。
脚注
外部リンク