2021年5月13日木曜日

[技術書典] Re:VIEW Starter で印刷・電子書籍版で config.yml を使い分ける

Re:VIEW Starter (もしくは Re:VIEW)を使ってると電子書籍版と印刷版で設定変えたいことがあります。

たとえば
  ## リンクのURLを脚注に埋め込む(PDFでのみ)。
  linkurl_footnote: false   # trueならリンクのURLを脚注に埋め込む(お勧め)
リンクの URL が自動的に footnote になるのでとても便利なのですが、電子書籍版はリンクで飛べるので false にしてました。
やり方
電子書籍版用の YAML ファイルを用意する
Re:VIEW では config.yml 、Re:VIEW Starter では加えて config-stater.yml がありますが、それぞれ電子書籍用の YAML を用意します。
このとき YAML はコピペではなく、電子書籍版で設定した項目だけ書けば OK です。

例:

# この設定ファイルでサポートするRe:VIEWのバージョン番号。
# major versionが違うときにはエラーを出す。
review_version: 2.0
# ほかの設定ファイルの継承を指定できる。同じパラメータに異なる値がある場合は、
# 呼び出し元の値が優先される。
# A.yml、B.ymlのパラメータを継承する例。A.ymlとB.ymlに同じパラメータがある
# 場合、B.ymlの値が優先される。さらに今このファイルに同じパラメータがあるなら、
# その値がB.ymlよりも優先される。
# 同様にA.yml、B.yml内でさらにinherit:パラメータを使うこともできる。
# inherit: ["A.yml", "B.yml"]
inherit: ["config.yml", "config-starter.yml", "config-starter-e.yml"]
###############################
# 電子書籍版でカタログを変えたい場合 #
###############################
# カタログファイル名を指定する
catalogfile: catalog-e.yml
###############################################
# contentdir はルートになる YAML ファイルに記述が必須 #
###############################################
contentdir: contents
view raw config-e.yml hosted with ❤ by GitHub
# coding: utf-8
## Starter独自設定
starter:
## 出力のターゲット。環境変数 $STARTER_TARGET で上書き可能。
## * pbook: 印刷用のモノクロPDFを出力。printing bookの略。
## * ebook: 電子用のカラーPDFを出力。electric bookの略。
## * tablet: タブレット用のカラーPDFを出力。
target: ebook
## リンクのURLを脚注に埋め込む(PDFでのみ)。
linkurl_footnote: false # trueならリンクのURLを脚注に埋め込む(お勧め)
ポイントは inherit で優先したい設定の YAML を後ろに書くことです。
また、contentdir はルートの YAML にないと rake でエラーになるので注意してください。

電子書籍版用の yml ファイルを指定してビルドする
Re:VIEW では「config」環境変数に設定した YAML ファイルを読み込んでくれるので、ビルドする際に config=config-e.yml のように指定すれば OK です。
  config=config-e.yml rake preproc pdf
  docker run --rm -e "config=config-e.yml" -v "$(pwd)":/work -w /work kauplan/review2.5 rake preproc all
まとめ
  • YAML を分ける
  • inherit を利用して共通の設定を読み込む
  • config 環境変数に YAML ファイルをセット
これで設定切り替えが簡単にできるようになりました。
宣伝
拙著発売中です。よろしくお願いします。


0 件のコメント:

コメントを投稿