Djot(/dʒɑt/)は、CommonMarkの複雑で効率的に解析することが難しい構文を改善することを目的とした軽量マークアップ言語である[3]。Djotは2022年にPandocの作者でありCommonMarkの標準化グループのメンバーでもあるジョン・マクファーレイン(英語版)によって作成された[4][5]。
Djotの機能の殆どはCommonMarkから派生しているが、説明リスト、脚注、表、いくつかの新しい種類のインライン書式設定、数式、スマート句読点を含むより多くの機能が含まれている[3]。
オリジナルのリファレンス実装はスクリプト言語(Lua)で書かれているが、Djotは効率的に解析できるように設計されているので非常に高速に構文解析される[6]。
DjotのコードとドキュメンテーションはMIT Licenseで公開されている[7]。
CommonMarkとの違い
Djotの構文はCommonMarkの構文に似ているが、いくつかの違いがある[8]。
空白行
CommonMarkではブロックレベル要素の周りに空白行は不要だが、Djotでは必要である。
例:
入力
|
CommonMark処理系によって生成される対応するHTML
|
Djot処理系によって生成される対応するHTML
|
|
|
|
|
|
|
入力
|
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にはSetext(英語版)形式の見出し(=
か-
を使う)はなく、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>
|
テキストの属性 強調、強い強調、モノスペース 。
水平線:
|
順序付きリスト内に入れ子された順序なしリスト:
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)。
![画像](Icon-pictures.png){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タグなどの未加工のコンテンツは明示的にマークする必要があります。
|
実装
使用
- Pandocはバージョン3.1.12以降で入力フォーマットと出力フォーマットとしてDjotに対応している[9]。
脚注
外部リンク