2018年10月16日
_ [reviewml] Re:VIEW Version 3.0.0 preview3
Re:VIEW 3.0.0preview3 を本日10月16日にリリースしました。
前回のpreview2に引き続き、preview3の新機能や注意点を解説します。
gem版のインストールについては、preview 版のため「gem install review --pre」を使います。
PDFMaker: これまでの jsbook.cls クラスファイルをそのまま使用する方法に代わり、紙・電子双方の書籍制作に適するよう拡張した review-jsbook.cls (jsbook.cls 基盤、デフォルト)、および review-jlreq.cls (jlreq.cls 基盤) を導入しました
今回の最も大きな変更です。
これまでreview-pdfmakerからのTeXによるPDF生成に使われていたjsbookクラスには、印刷に使うにはいくつかの問題がありました(実際、私の制作業務においてはjsbookクラスは使っていません)。
技術書典などを通して技術書制作に興味を持ち、Re:VIEWを使ってくださる方が増えたのはよいのですが、そのjsbookを使い、家庭用プリンタの感覚で入稿仕様に合わないPDFを印刷所に入稿してしまうといった話を見聞きし、印刷業界から懸念と苦言が呈されつつある現状は憂慮すべき事態です。
Re:VIEWは、LuaLaTeXへの対応やカスタマイズ性の観点でjlreq.clsベースのものにデフォルトを移行するという目標を立てていますが、jlreq.clsの機能確定やLinuxディストリビューションへの収録を考えると、まだ年単位の時間を要すると思われます。
このような状況での対策として今回導入したのが、「ひとめで印刷用とわかり、印刷所の入稿仕様の最低限のところは守ったものをデフォルトの状態で提供する」クラスファイルです。
- review-jsbook.cls:jsbook.clsを拡張しています。デフォルトではこちらが使われます。
- review-jlreq.cls:jlreq.clsを拡張しています。
これらのクラスファイルは、以下のような機能を提供します。
- 紙用PDF、電子PDFの1オプションでの切り替え(cameraready=print | ebook)
- 級数・文字数・行数・行送り・天・ノドからなる版面設計指定
- 塗り足し幅も設定可能なデジタルトンボ(review-jsbook.clsはgentombowパッケージを利用)
- 紙面サイズ、トンボ付き紙面サイズの設定
- 大扉からのアラビア数字ページ通しや最初のページの設定
- 隠しノンブル(同人誌向けにノド部分に小さくページ番号を入れる)。preview3ではreview-jsbook.clsのみ(正式リリースまでにreview-jlreq.clsも対応予定)
- 塗り足し領域まで含めた紙面全体への図版貼り付け
具体的にはconfig.ymlのデフォルトは以下のようになります。
# デフォルト texdocumentclass: ["review-jsbook", "cameraready=print,paper=a5"] # または texdocumentclass: ["review-jsbook", ""]
紙面モードは紙用PDF(print)で、デフォルトの仕上がり紙面はA5です。cameraready=printの場合、
- トンボおよびデジタルトンボが設置される
- 表紙(cover)は付かない
- ハイパーリンク設定の箇所は、色付け・装飾・ハイパーリンクをしない
となります。以下のようにするだけで、今度は電子版になります。
# 電子版化 texdocumentclass: ["review-jsbook", "cameraready=ebook,paper=a5"]
- トンボは付かない
- 表紙が付く(実寸で全体に貼り付け)
- ハイパーリンクの色付け、装飾、ハイパーリンクジャンプが有効
このほか、cover=<true|false>で表紙の使用有無、tombopaper=<紙サイズ>でトンボ付き用紙のサイズ、Q=<級数>, W=<字詰>, L=<行数>, H=<行送り>, head=<天>, gutter=<ノド>で基本版面設計、startpage=<ページ番号>で開始ページ、serial_pagination=<true|false>で通しノンブル、hiddenfolio=<プリセット>で隠しノンブルを設定できます。
# JIS B5仕上がり、トンボ用紙はA4、アラビア数字3ページ目から始まり、日光企画の隠しノンブル仕様に準拠 texdocumentclass: ["review-jsbook", "cameraready=print,paper=b5,tombopaper=a4,startpage=3,serial_pagination=true,hiddenfolio=nikko-pc"]
review-initコマンドを実行して新規プロジェクトを作ると、デフォルトでreview-jsbookが使われます(review-init --latex-template review-jlreq <プロジェクト名> とすればreview-jlreqになります)。 詳細については、プロジェクトのstyフォルダのREADME.mdを参照してください。
なお、config.ymlでreview_version: 2.0としている場合には、従来の仕組みが使われます。もし2.0のプロジェクトそのままの状態でビルドを実行して変なエラーが出たら、教えてください。
review-jsbook.clsは、TeXのスペシャリストGreenCherryの@munepixyzさんに大半を実装していただきました。
また、preview3のreview-jsbook.clsでは文字サイズなどがjsbook.clsといくぶん違うこと、無効オプションのエラー表示がわかりにくいことといった問題があり、リリースまでにいくらかこの改善を図る予定です。
EPUBMaker/WEBMaker: @<m> や //texequation で入れた数式を画像化する imgmath 機能を追加しました
駆け込みで入れた機能ですが、これまでも隠し機能的に存在したEPUB/WebMakerの数式画像化のロジックを見直し、汎用化しました。「imgmath: true」とすると有効になります。
デフォルトではpdfcrop + pdftocairo(poppler-utils内)を使うようになっていますが、別のツールに変更することも可能です。詳細についてはformat.ja.mdの「TeX式 - 画像化の場合」を参照してください。
PDFMaker: 前付の開始を宣言する LaTeX 命令 \frontmatter を、大扉(titlepage)の後ろから大扉の前に移動しました
あまり気にした人はいなかったかもしれませんが、これまでのバージョンだとページ番号は表紙〜大扉がアラビア数字、そこからPREDEFに入れている前付がローマ数字で始まり、CHAPSの章が始まってアラビア数字、となっていました。実際には大扉は前付として数えるのが正しいです。
この変更により、表紙はアラビア数字(cameraready=printだと表紙は出ないので問題ない)、大扉からローマ数字が始まり、CHAPSの章でアラビア数字、となります。なお上記のとおり、serial_pagination=trueにすれば大扉からCHAPSまで通しのアラビア数字になりますし、startpage=<ページ番号>を指定すれば大扉の開始ページ番号を変えられます。
PDFMaker: coverimage の表紙の貼り付けは、実寸で中央に配置されるようになりました
Re:VIEW 2まではcoverに指定していたものを紙面に合わせて拡縮していたのですが、デジタルトンボの対応に合わせて塗り足し領域まで正確に配置できることのほうを優先しました。
PNGファイルなどはDPIの関係でたいていは大きくはみ出すことになるので調整が必要でしょう。一方で、紙面いっぱい、あるいは塗り足しを含めた領域へ貼り付けるというのは、特にデザイナーには聞き慣れたやり方であり、塗り足し込みのサイズで画像を作ってもらえば、フチのない表現が可能となります。
EPUBと使い分けたいときには以下のようになります(review-initのデフォルトでこうなるはずです)。
coverimage: cover.jpg ... pdfmaker: coverimage: cover-a5.ai ...
画像はPDFまたはIllustrator AIファイルを推奨します。ただし、AIファイルはその「PDF互換表示」部分を使っており、レイヤーのOFFは無効で表示されてしまうことには注意が必要です。 全面貼り付けは表紙に限らず利用可能です。挿絵などに利用できるでしょう。ただ、この表現はLaTeX以外で適用しづらいため、Re:VIEWのタグには割り当てていません。入れたい箇所で以下のようにembedタグを使います。全面に貼り付ける都合でページ番号も入らないので、指定があるときには隠しノンブルを有効化してください。
//embed[latex]{ \includefullpagegraphics{images/sashie.pdf} //}
PDFMaker: coverパラメータの扱いの誤りを修正しました
preview2でちょっとしくじっていて、coverパラメータを指定しても効果がありませんでした。
PDFMaker: 新しいクラスファイルで、preview 2で発生していた紙面の偏りを修正しました
preview2を使っていた人がどのくらいいたのだろう……というところですが、当時geometry.styでの紙面設計をやめた都合で、A4紙面上の左上に全体が寄るというページ割り付けになっていました。
冒頭のreview-jsbook.clsの導入で別の紙面設計にしたので、この問題は解消されました。
PDFMaker: LaTeX に渡す config.yml の設定パラメータを増やしました
前のpreviewのとおりconfig.ymlのパラメータを一旦LaTeXのマクロにしているのですが、全部を完全に表現するのは難しいですし、使わないものを並べてもあまり意味がないので、ある程度限っていました。
ただ特に書籍のメタ情報(rightsなど)については渡したほうがよさそうと考え、いくつか追加しています。ほかにこれも渡しておいたほうがいいのでは、というのがあればご報告ください。
PDFMaker: LaTeX 命令 \begin{document} の直後に実行されるフックマクロ \reviewbegindocumenthook、\end{document} の直前に実行されるフックマクロ \reviewenddocumenthook を追加しました
あまりLaTeX流儀っぽくないらしいのですが、フック追加時のわかりやすさを考えました。デフォルトでは空ですが、凝ったものを作ろうとすると必要になることもあろうかと思います。
PDFMaker: 新しいクラスファイルでは版面設計をドキュメントオプションで指定するようになったため、geometry.sty は不要になりました
これは先ほど書いたとおりです。前回のpreview2のときにも書いたとおり、もともとのjsbookの12ptなどのオプションは、magnificationという単位の拡縮率自体をいじるという手法で擬似的に文字サイズを変えており、それがgeometry.styを狂わせます。本質的に問題の種となる方法であり、正確な12ptでもないので推奨されません(今のところreview-jsbook.clsでは指定してもエラーになります)。
PDFMaker: 新しいクラスファイルで、大扉からの通しノンブルをサポートしました
serial_paginationのことです。
review-init コマンドにネットワークダウンロードの機能を追加しました。-p オプションで zip ファイルの URL を指定すると、生成したプロジェクトフォルダに zip ファイルを展開して上書きします
Techboosterなどのサードパーティスタイルを作成しているところ向けの配布手段の提供です。いちいちgit cloneしてコピーしてうんぬんとか言わなくても、zipを用意しておけば「review-init -p https://〜/archive.zip プロジェクト名」のようにして展開してもらえるという仕組みです。ぜひ活用してほしいです。
texstyleなども書き換えてほしいときにはconfig.ymlも入れちゃえば?ということになっています(まぁ初期生成時だし……)。いちおうプロジェクトよりも上位のフォルダには展開できないようにはしているつもりです。
PDFMaker: デジタルトンボや隠しノンブルを表現するために外部 TeX パッケージの gentombow パッケージを取り込み、プロジェクトフォルダの sty フォルダにコピーするようにしました
review-jsbookのトンボ機能は自前ではなくgentombowパッケージに委ねることにしましたが、このパッケージは新しめのTeXLiveにしか収録されていないのと、デジタルトンボ対応はまたさらに新しめなので、ひとまず数年はRe:VIEWのソース側のvendorフォルダにコピーしておき、そこからreview-init時にコピーするようにしています。
システムにちゃんとgentombowパッケージが入っている場合にはそちらを使います。
Kindle 用の電子書籍ファイルを作る方法を doc/customize_epub.ja.md に追記しました
私もたまに忘れてrejectされるのでメモ代わりに。epubcheck通ってるんだからいいじゃんといかないのが電子書籍の世界です。特にKindleはエラーから判断できる原因情報に乏しいです。
サンプルファイルなどにある PDFMaker のデフォルトのドキュメントオプションの例示を新しいクラスファイルに合わせました
とりあえずconfig.yml.sampleなどを合わせましたが、もう少し改善していく予定です。config.yml.sampleはちょっと長くて見辛くなってきましたね。
review-init コマンドで展開されるファイルなど、扱いが明示されていなかったファイルについてライセンスを明記しました
基本的に、プログラムコードはGPL2、プロジェクトにコピーされて自由に改変される可能性のあるテンプレート類はMITと明記しました。当然ながらユーザ各自が作るコンテンツはユーザが自由にライセンスを決められ、Re:VIEWチームが関与するところではありません。
数式を画像化する imgmath について、doc/format.ja.md に追記しました
上記のimgmathの説明を追加しました。業務でもよく使うことなので便利ですが、TeXの数式に対してなぜこういうことをしないといけないのか……という気持ちもあります。WebやCSS組版ならMathJAXを使うロジックを組み込んでもいいのかも。
ということで
3.0.0preview3のリリースノートを解説してみました。
月末か来月頭にはいよいよRe:VIEW 3.0正式リリースにしたいと思いますので、使ってみて今のうちにいろいろとご報告いただければ幸いです。
Re:VIEWナレッジベースにもRe:VIEWのカスタマイズなどをまとめていきます。