コンテンツにスキップ

CLI

前提: Getting StartedExport profiles

Terminal window
npm install --global @illusions-lab/mdi-cli
mdi novel.mdi
mdi build novel.mdi --to epub --config novel.export.json -o dist/novel.epub
mdi check novel.mdi
mdi update --check
mdi <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 と併用できません。--configexport 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 で無効化できます。

--todefaultrenderer と profile
jsonnovel.jsonparser diagnostics を含む versioned MDI IR envelope を pretty print する。
htmlnovel.htmlRust semantic standalone HTML。page profile は使わない。
pdfnovel.pdfRust HTML + local Chromium。print profile を使う。
epubnovel.epubconfig なしは Rust baseline。config があれば metadata/type/chapter/cover を使う。
docxnovel.docxconfig なしは Rust baseline。config があれば metadata/page/type/numbering を使う。
text 6 形式.txtRust text。note は UTF-8 の editor input(note 書き出し)。profile は indent を決める。aozora は Shift_JIS・CRLF で、範囲外文字は ? にせずエラー。
txt-all6 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: verticaljapanese-publisher の A4 landscape・右綴じ 40×30 小説原稿 grid、それ以外は word の flowing A4 layout です。明示した --config にだけ layout.system が必須です。

{
"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 で確認してください。