CLI
前提: Getting Started、Export profiles。
Install と build
Section titled “Install と build”npm install --global @illusions-lab/mdi-climdi novel.mdimdi build novel.mdi --to epub --config novel.export.json -o dist/novel.epubmdi check novel.mdimdi update --checkmdi <input.mdi> [--to <format>] [--config export.json] [-o <output>]mdi build <input.mdi> [--to <format>] [--config export.json] [-o <output>]mdi check <input.mdi>mdi update [--check] [--yes]input は UTF-8 です。--to は省略でき、既定は HTML です。-o の
拡張子(.html、.json、.pdf、.epub、.docx、.txt)も format を
推定します。明示した format と拡張子が衝突する場合は reject されます。
txt-all は -o と併用できません。--config は export profile JSON です。成功は Written <path> と status 0、argument/input/profile/renderer/output の failure は stderr 一行と status 1 です。
mdi check は parser diagnostics を表示します。warning は status 0、error
diagnostic は status 1 です。mdi --version/--help は version/help を表示し、
mdi update --check は確認だけ、mdi update --yes は確認なしの更新です。
通常の実行時も一日一回だけ npm registry を確認しますが、失敗しても本来の
command には影響しません。CI では MDI_NO_UPDATE_CHECK=1 で無効化できます。
format ごとの設定
Section titled “format ごとの設定”--to | default | renderer と profile |
|---|---|---|
json | novel.json | parser diagnostics を含む versioned MDI IR envelope を pretty print する。 |
html | novel.html | Rust semantic standalone HTML。page profile は使わない。 |
pdf | novel.pdf | Rust HTML + local Chromium。print profile を使う。 |
epub | novel.epub | config なしは Rust baseline。config があれば metadata/type/chapter/cover を使う。 |
docx | novel.docx | config なしは Rust baseline。config があれば metadata/page/type/numbering を使う。 |
| text 6 形式 | 各 .txt | Rust text。note は UTF-8 の editor input(note 書き出し)。profile は indent を決める。aozora は Shift_JIS・CRLF で、範囲外文字は ? にせずエラー。 |
txt-all | 6 files | 全 text を書き、-o を reject。 |
epub.coverPath は profile file からの相対 path として読み、PNG/JPEG でなければ error です。cover bytes は EPUB にのみ入り parser には渡りません。EPUB/DOCX で --config が静かに無視されることはもうありません。
--config なしでは、CLI は front matter から built-in layout を選びます。writing-mode: vertical は japanese-publisher の A4 landscape・右綴じ 40×30 小説原稿 grid、それ以外は word の flowing A4 layout です。明示した --config にだけ layout.system が必須です。
profile 例
Section titled “profile 例”{ "layout": { "system": "japanese-publisher" }, "metadata": { "title": "雨の東京", "author": "Illusions", "language": "ja" }, "typesetting": { "writingMode": "vertical", "fontFamily": "Yu Mincho", "fontSize": 10, "textIndentEm": 1 }, "pagination": { "pageSize": "A4", "landscape": true, "gridMode": "strict", "pageNumbers": { "enabled": true, "position": "bottom-center", "format": "simple" } }, "epub": { "chapterSplitLevel": "h1", "coverPath": "cover.png" }}明示した --config には layout.system が必須で、ない profile は reject されます。"japanese-publisher" は book 用の system です。横書きは Shirokuban・10 pt 明朝体・mirror 付き左綴じ 27×26 strict grid、縦書きは A4 landscape 小説原稿・mirror 付き右綴じ 40×30 strict grid が default です。"word" は別の flowing system で、A4、四辺 25.4 mm、mirror なし、gridMode: "typographic" です。strict grid は使えません。
MDI parsing、diagnostic、span、profile validation、紙面 catalogue、設定付き EPUB/DOCX generation は Rust の責務です。PDF でも print HTML と geometry は Rust が準備し、host は machine 固有の Chromium process を提供します。Chromium は .mdi ではなく完成 HTML を受け取ります。DOCX は page/type/numbering を設定できますが、ruby、tate-chu-yoko、禁則/改行禁止、kern、blank paragraph が browser と pixel-identical である保証はありません。対象 reader で確認してください。