mdBook を使ってみる
- mdBook
は、Markdown 形式で「本」が書けるツール
- 少し技術的な言い方をすると、入力した Markdown 形式のファイルについて、「本」としての構造をもった HTML テンプレートをもとに、ウェッブサイトの構築に必要なファイル群を生成する静的サイトジェネレーター
- よく似たツールに GitBook
や MkDocs
などがある
- mdBook は、テンプレートを編集することでデザインを手軽に編集できたり、プリプロセッサを使って機能を手軽に拡張できたりするところが面白い
インストール
準備
mdbook init
コマンドを実行して、質問(本のタイトルなど)に答えると、作業用ディレクトリ(ここではmybook
)ができる
Do you want a .gitignore to be created? (y/n)
y
What title would you like to give the book?
My Book
- 作業ディレクトリ内にある
book.toml
というファイルで、本の概要を設定する
[book]
title = "My Book"
authors = ["yamnor"]
language = "ja"
src = "src"
書く
- 作業ディレクトリ内にある
SUMMARY.md
に、各章の Markdown ファイルを指定する
# Summary
- [第1章](./chapter_1.md)
- 各章の Markdown ファイルを編集するすることで、本を書く
mdbook serve
コマンドを実行すると、作業用のディレクトリにある Markdown 形式のファイルが html 形式に変換される--open
オプションを付けると、デフォルトの Web ブラウザが立ち上がって、編集した内容をプレビューできる
カスタマイズ
- 数式を書きたいときには、
book.toml
ファイル内で MathJax
を有効にする - デザインを少し変えたいときには、
css
ファイルを指定する
[output.html]
mathjax-support = true
additional-css = ["custom.css"]
テンプレートファイル
- テーマファイルを編集することで、デザインを大幅に変えることもできる
mdbook init --theme
をすると、設定用のファイルを含むtheme
ディレクトリができる- テンプレートファイルの本体は
theme/index.hbs
- Handlebars
というテンプレート用の言語で書かれている
- Hugo などの静的サイトジェネレータを使ったことがあれば、なんとなく内容が分かると思う
プリプロセッサ & 代替バックエンド
- プリプロセッサ
はまだ試していないけれど、Rust 以外の言語、たとえば、Python でも書けるらしい
- ここ
に、プリプロセッサや代替バックエンドで実装された mdBook のプラグインがある