プリプロセッサーの設定

プリプロセッサーは、レンダラーへ渡す前のMarkdownソースを変更できる拡張です。

次のプリプロセッサーは組み込まれており、既定で使われます。

  • links:章にあるhandlebarsヘルパー{{ #playground }}、{{ #include }}、{{ #rustdoc_include }}を展開し、ファイルの内容を取り込みます。詳しくはファイルを取り込むを参照してください。
  • index:README.mdという名前の章ファイルをすべてindex.mdへ変換します。つまり、すべてのREADME.mdは、生成した本ではインデックスファイルindex.htmlとして出力されます。

組み込みのプリプロセッサーは、build.use-default-preprocessors設定で無効にできます。

コミュニティは、いくつかのプリプロセッサーを開発しています。利用できるプリプロセッサーの一覧は、WikiのThird Party Pluginsページを参照してください。

新しいプリプロセッサーの作り方は、開発者向けのプリプロセッサーの章を参照してください。

独自プリプロセッサーの設定

book.tomlに、プリプロセッサー名を付けたpreprocessorテーブルを追加すると、プリプロセッサーを使えます。たとえば、mdbook-exampleというプリプロセッサーなら、次のように指定します。

[preprocessor.example]

このテーブルによって、mdBookはmdbook-exampleプリプロセッサーを実行します。

このテーブルには、プリプロセッサー固有のキーと値の組も追加できます。たとえば、例のプリプロセッサーに追加の設定が必要なら、次のように指定します。

[preprocessor.example]
some-extra-feature = true

プリプロセッサーをレンダラーに結び付ける

プリプロセッサーとレンダラーを結び付けると、そのレンダラーに対してプリプロセッサーを実行することを明示的に指定できます。

[preprocessor.example]
renderers = ["html"]  # example preprocessor only runs with the HTML renderer

独自のコマンドを指定する

既定では、book.tomlへ[preprocessor.foo]テーブルを追加すると、mdbookはmdbook-foo実行ファイルの呼び出しを試みます。別のプログラム名を使ったり、コマンドライン引数を渡したりする場合は、commandフィールドを追加して、この動作を上書きできます。

[preprocessor.random]
command = "python random.py"

任意のプリプロセッサー

有効にしたプリプロセッサーがインストールされていない場合、既定ではエラーになります。プリプロセッサーを任意と指定すると、この動作を変えられます。

[preprocessor.example]
optional = true

これによって、エラーが警告になります。

順序を指定する

プリプロセッサーの実行順序は、beforeとafterフィールドで指定できます。たとえば、linenosプリプロセッサーで、{{#include}}によって取り込まれた行を処理したい場合は、組み込みのlinksプリプロセッサーの後に実行する必要があります。beforeかafterフィールドで、この順序を指定できます。

[preprocessor.linenos]
after = [ "links" ]

または、次のように指定します。

[preprocessor.links]
before = [ "linenos" ]

冗長にはなりますが、上の両方を同じ設定ファイルに指定することもできます。

beforeとafterによる優先度が同じプリプロセッサーは、名前で並べ替えます。無限ループは検出され、エラーになります。