このリポジトリはRe:VIEW用の書籍テンプレートです。Re:VIEWバージョン4.0に対応します。 メンテナンスはTechBoosterが行っています。
細かい準備(TeX入れたり)は『技術書をかこう!』に準じます。
TeXの導入をしない場合でもHTMLやEPUBの出力は可能です。Dockerコンテナでビルドすることもできます。
技術書をかこう!〜はじめてのRe:VIEW〜改訂版 のリポジトリで解説しています。Re:VIEWに対応した執筆ノウハウ本です。 Re:VIEWの使い方と制作にあたっての企画〜執筆〜編集〜告知〜会場頒布までのノウハウをギュッと詰めています。
https://techbooster.booth.pm/ でPDF版の販売予定があります
本書はAtomでlanguage-reviewとlinter-redpenを導入している前提です。
内部的にRedPenを利用するため、 brew install redpen
とかしておいてください。
Atom以外の環境の場合、prhまたはreviewjs-prhとRedPenを自力でなんとか頑張って適用してください。
警告やlintのエラーを放置して編集に突入してしまうと @mhidaka が過労で死にます。 RedPenは試験的に導入したため、知見やルールについてまだ固まっていません。 意見・感想・修正案などあれば @mhidaka までご相談ください。
rbenvやnodebrewを利用してRubyやNode.jsの準備をしている前提です。 もしそうではない場合、適宜sudoを補うこと。 Node.jsは4.x系以上が必須です。
graphvizを使ったのでbrew install graphvizとかが必要かもしれません。
$ gem install bundler
$ git clone [email protected]:TechBooster/ReVIEW-Template.git
$ cd ReVIEW-Template
$ npm install
$ npm run pdf
セットアップが完了していれば npm run pdf
のかわりに
$ cd ReVIEW-Template/articles
$ rake pdf
または
$ cd ReVIEW-Template/articles
$ review-pdfmaker config.yml
でも生成できます。
PDF以外に、EPUB・Webページ・テキストを出力することもできます。
$ npm run epub
または
$ cd ReVIEW-Template/articles
$ rake epub
または
$ cd ReVIEW-Template/articles
$ review-epubmaker config.yml
$ npm run web
または
$ cd ReVIEW-Template/articles
$ rake web
または
$ cd ReVIEW-Template/articles
$ review-webmaker config.yml
$ npm run text
または
$ cd ReVIEW-Template/articles
$ rake text
または
$ cd ReVIEW-Template/articles
$ review-textmaker config.yml
TeXの環境構築が困難な場合、一式セットアップ済みのdockerイメージを用意してあるので使ってください。 Dockerがうまく動くようになっている場合、以下のコマンドで細かい準備なしにビルドを行うことができます。
$ docker pull vvakame/review:4.0
$ ./build-in-docker.sh
B5やA5といった紙面サイズ、印刷用・電子用といったメディアの切り替えは、articles/config.ymlのtexdocumentclassパラメータで設定しています。
# B5の設定(10pt 40文字×35行) - 紙版
texdocumentclass: ["review-jsbook", "media=print,paper=b5,serial_pagination=true,hiddenfolio=nikko-pc,openany,fontsize=10pt,baselineskip=15.4pt,line_length=40zw,number_of_lines=35,head_space=30mm,headsep=10mm,headheight=5mm,footskip=10mm"]
# B5の設定(10pt 40文字×35行) - 電子版
# texdocumentclass: ["review-jsbook", "media=ebook,paper=b5,serial_pagination=true,openany,fontsize=10pt,baselineskip=15.4pt,line_length=40zw,number_of_lines=35,head_space=30mm,headsep=10mm,headheight=5mm,footskip=10mm"]
# A5の設定(9pt 38文字×37行) - 紙版
# texdocumentclass: ["review-jsbook", "media=print,paper=a5,serial_pagination=true,hiddenfolio=nikko-pc,openany,fontsize=9pt,baselineskip=13pt,line_length=38zw,number_of_lines=37,head_space=15mm,headsep=3mm,headheight=5mm,footskip=10mm"]
# A5の設定(9pt 38文字×37行) - 電子版
# texdocumentclass: ["review-jsbook", "media=ebook,paper=a5,serial_pagination=true,openany,fontsize=9pt,baselineskip=13pt,line_length=38zw,number_of_lines=37,head_space=15mm,headsep=3mm,headheight=5mm,footskip=10mm"]
デフォルトはB5・印刷用の設定になっていますが、たとえばA5・印刷用にしたい場合にはB5のパラメータをコメントアウトし、A5のほうを有効にします。
# B5の設定(10pt 40文字×35行) - 紙版 ↓これをコメントアウトし…
# texdocumentclass: ["review-jsbook", "media=print,paper=b5,serial_pagination=true,hiddenfolio=nikko-pc,openany,fontsize=10pt,baselineskip=15.4pt,line_length=40zw,number_of_lines=35,head_space=30mm,headsep=10mm,headheight=5mm,footskip=10mm"]
# B5の設定(10pt 40文字×35行) - 電子版
# texdocumentclass: ["review-jsbook", "media=ebook,paper=b5,serial_pagination=true,openany,fontsize=10pt,baselineskip=15.4pt,line_length=40zw,number_of_lines=35,head_space=30mm,headsep=10mm,headheight=5mm,footskip=10mm"]
# A5の設定(9pt 38文字×37行) - 紙版 ↓こちらを有効にする
texdocumentclass: ["review-jsbook", "media=print,paper=a5,serial_pagination=true,hiddenfolio=nikko-pc,openany,fontsize=9pt,baselineskip=13pt,line_length=38zw,number_of_lines=37,head_space=15mm,headsep=3mm,headheight=5mm,footskip=10mm"]
# A5の設定(9pt 38文字×37行) - 電子版
# texdocumentclass: ["review-jsbook", "media=ebook,paper=a5,serial_pagination=true,openany,fontsize=9pt,baselineskip=13pt,line_length=38zw,number_of_lines=37,head_space=15mm,headsep=3mm,headheight=5mm,footskip=10mm"]
印刷用と電子用の両方を作りたいときには、設定ファイルの継承機能を利用できます。たとえばB5電子版の設定ファイルの例をconfig-ebook.ymlとして用意しています。この内容は次のようにシンプルに既存のconfig.ymlのtexdocumentclassパラメータを置き換えているだけです。
# 継承元設定
inherit: ["config.yml"]
# B5の設定(10pt 40文字×35行) - 電子版
texdocumentclass: ["review-jsbook", "media=ebook,paper=b5,serial_pagination=true,openany,fontsize=10pt,baselineskip=15.4pt,line_length=40zw,number_of_lines=35,head_space=30mm,headsep=10mm,headheight=5mm,footskip=10mm"]
# A5の設定(9pt 38文字×37行) - 電子版
# texdocumentclass: ["review-jsbook", "media=ebook,paper=a5,serial_pagination=true,openany,fontsize=9pt,baselineskip=13pt,line_length=38zw,number_of_lines=37,head_space=15mm,headsep=3mm,headheight=5mm,footskip=10mm"]
このconfig-ebook.ymlを使ってPDFを生成するには次のようにします。
$ REVIEW_CONFIG_FILE=config-ebook.yml npm run pdf
または
$ cd ReVIEW-Template/articles
$ REVIEW_CONFIG_FILE=config-ebook.yml rake pdf
または
$ cd ReVIEW-Template/articles
$ review-pdfmaker config-ebook.yml
Docker環境でも以下のように指定できます。
$ REVIEW_CONFIG_FILE=config-ebook.yml ./build-in-docker.sh
紙版と電子版では以下のような違いがあります。
- 紙版:印刷用に、トンボ、デジタルトンボを設置。いくつかの同人誌印刷所で要求事項となっているノドへの隠しノンブル、大扉からのアラビア数字通し。ハイパーリンクは無効化。表紙(cover)は無視。
- 電子版:電子配布用に、仕上がり紙面サイズ。大扉からのアラビア数字通し。ハイパーリンク有効。表紙(cover)を中央合わせで配置。
articles/ディレクトリ以下の各種*.scssファイルを編集し、
./rebuild-css.sh
コマンドでCSSファイルをビルドしてください。
Re:VIEW 3のプロジェクトは、review-updateコマンドで簡単に更新できます。
既存のプロジェクトフォルダ内 (本リポジトリを使っている場合はarticlesフォルダ) で、review-updateコマンドを実行してください。
$ review-update
** review-update はプロジェクトを 4.0.0 に更新します **
config.yml: 'review_version' を '4.0' に更新しますか? [y]/n
プロジェクト/sty/review-base.sty は Re:VIEW バージョンのもの (/var/lib/gems/2.5.0/gems/review-4.0.0/templates/latex/review-jsbook/review-base.sty) で置き換えられます。本当に進めますか? [y]/n
プロジェクト/sty/review-jsbook.cls は Re:VIEW バージョンのもの (/var/lib/gems/2.5.0/gems/review-4.0.0/templates/latex/review-jsbook/review-jsbook.cls) で置き換えられます。本当に進めますか? [y]/n
完了しました。
Re:VIEW 2系向けの過去のTechBoosterテンプレートは、Re:VIEW 3以降とは互換性がありません。Re:VIEWは2から3以上への移行を支援する「review-update」というコマンドを提供していますが、TechBoosterテンプレートを使用しているプロジェクトは対象外となっています。
config.ymlでreview_version: 2.0
としておけば、当面は互換モードによりRe:VIEW 3以降でも変わりなく動作します。ただし、一部のRe:VIEW 3以降固有の機能は利用できません。また、将来的に互換は破棄される可能性があります。
Re:VIEW 3以降ではTeX関連のファイルが大きく変わっているため、Re:VIEW 2系のプロジェクトの既存のファイルをいったん退避し、必要に応じて設定を書き戻すという手順になります。
- 事前にフォルダごと必ずバックアップを取っておいてください。
- layoutsフォルダをリネーム(たとえばlayouts-oldなど)します。
- styフォルダをリネーム(たとえばsty-oldなど)します。
- config.ymlファイルをリネーム(たとえばconfig.yml-oldなど)します。
- TechBoosterテンプレートのarticles/styフォルダをフォルダごとコピーします。
- TechBoosterテンプレートのarticles/config.ymlファイルをコピーします。
- TechBoosterテンプレートのlibフォルダをフォルダごとコピーします。
- TechBoosterテンプレートのRakefileファイルをコピーします。
- config.ymlに、カスタマイズしていた書名や著者名などを書き戻します。
書き戻しではなくどうしても古いconfig.ymlの書き換えで対処したいという場合は、以下の点に注意してください。
- review_versionパラメータ:値を4.0にする必要があります。
- texstyleパラメータ:値を["reviewmacro"]とします。
- texdocumentclassパラメータ:2つの引数の内容は大きく変わっています。
- texcommandパラメータ:オプションを指定していた場合、texoptionsパラメータに移設する必要があります。
- dvicommandパラメータ:オプションを指定していた場合、dvioptionsパラメータに移設する必要があります。
layouts/layouts.tex.erbやsty/techbooster-doujin.styに何らかのカスタマイズを加えていた場合は、sty/review-custom.styに類似の実装をする必要があります。Re:VIEW 2系のTechBoosterテンプレートはマクロ定義時点から書き換える手法をとっていましたが、Re:VIEW 3系から\renewcommand
・\reenvironment
・\def
などの命令を使って既存のマクロ定義を再定義するというやり方に変わっています。
Re:VIEW 3以降で変わったことの詳細については、以下を参照してください。
何らかの理由でどうしてもRe:VIEW 2系のTechBoosterテンプレートが必要なときには、以下のリリースページから「review-2.4」リリースアーカイブファイルを利用してください。
- 設定ファイル、テンプレートなど制作環境(techbooster-doujin-base.styなど)はMITライセンスです
- 再配布などMITライセンスで定める範囲で権利者表記をおねがいします
- 本設定を使って生成した書籍は現段階のRe:VIEWではソフトウェアたりえません。したがってライセンスは発生しません(あとがきなどへの表記はあると嬉しいものの生成物での表記は不要です)
- articles/styにあるファイルには以下のライセンスが適用されています。
- review-jsbook.cls, review-base.sty, review-style.sty, review-custom.sty: MIT License
- jumoline.sty: The LaTeX Project Public License
- plistings.sty: MIT License
- gentombow.sty: BSD License
- jsbook.cls: BSD License