2019年12月10日
_ [reviewml] 技術博2公式ガイドブック記事の提示課題への実装回答をしてみる
技術博2の公式ガイドブック『技術書同人誌博覧会#2』を拝見していたところ、記事「ガイドブック編集⻑のヤクザなお仕事」にて、Re:VIEWだとどうしたらよいかわからない箇所があってひとまず手動でがんばった、ということが書かれていたので、実際どうやるのがよさそうか、ということを考えてみます。
Re:VIEWというよりは、PDFのみがターゲットであろうということで、ほぼTeX(LaTeX)でどうやるか、という話です。jlreq.clsの機能を使えるreview-jlreqのほうが簡単にできそうなこともありますが、jsbook.clsベースのreview-jsbook縛りで実装を試みます。
扉の指定
さて、Re:VIEW原稿では、扉 (部を区切るためのページ。第2部 : スポンサー原稿といった特別なページ。) をつけたりすることは案外難しいので、本文原稿だけを出力するにとどめ、扉は別に作ることをお勧めします。その辺りをRe:VIEWでやろうとすると、かなり大変になります。
「章扉」だとreview-jsbookではいくぶん面倒度が上がっていたのですが、「部扉」であればreview-jsbookでもわりと簡単です(review-jlreqだとどちらも簡単めですね)。
こういうときの手軽な手法は、「部見出しも含めたそれぞれの部扉を画像(PDFかIllustrator)で用意し、それをべたっと貼り付ける」です。なお、Illustratorファイルといっても、実際にはそのPDF互換データ部分が使われるため、隠しレイヤーなどを使って制作しているときには別途PDFを作ってそれを貼り付けましょう。
さて、Re:VIEWの電子版の表紙などでも使っているのですが、\includefullpagegraphicsというマクロをreview-jsbook・review-jlreqでは提供しています。これは、中央センター合わせで画像を配置しますが、紙面エリアからあふれても問題にしないという性質を持っています。
そこで、実寸で妥当なサイズの画像(サイズがわかりやすいのはPDFかAIです)として各部扉を用意しておきます。ここでは部扉の画像は、part1.pdf, part2.pdf, part3.pdfのようにimagesフォルダに用意されているものとします。あふれてもOKなので、塗り足し付きのリッチなものも可能です。
では、TeXで部を表す\part命令がきたときにそれを貼り付けるというようにしてみましょう。sty/review-custom.styに次のように追加します。
\renewcommand\part{% \cleardoublepage \secdef\@part\@spart} \def\@part[#1]#2{% \refstepcounter{part}% \addcontentsline{toc}{part}{% \prepartname\thepart\postpartname\hspace{1zw}#1}% \markboth{}{}% \includefullpagegraphics{images/part\the\c@part.pdf} }
部を構成する部分をsty/jsbook.clsから拝借して少し省略しつつ、文字を配置する部分や2カラム判定など使わないであろうものを削除して、代わりに画像を貼り付けます。\addcontentslineは目次に入れるものなので残しています。\the\c@partは部のカウンタがアラビア数字で返ってきます(\thepartはローマ数字化されているのでファイル名として少々不便です)。このカウンタが1であればimages/part1.pdfが\includefullpagegraphicsの引数として使われる、という仕組みです。
上記はtexdocumentclassのオプションで「media=print」が有効になっているときの例ですが、「media=ebook」にしても仕上がりサイズになるだけで、中央合わせの画像の位置がずれたりすることはありません。
部見出しを任意として背景だけ配置したいというときには、\includefullpagegraphicsだと改ページしてしまってうまくありません。このようなときには、たとえば「各ページの固定位置に画像を配置するにはどうしたらよいですか?」で紹介しているbxpgfcurpage.styを使えば実現できそうです。
ノンブルの調整
ノンブルの調整もかなり大変です。もちろんRe:VIEWのマクロをいちから読み解いて行けばどこかに書いてあるはずですが、わかりやすく設定に書いてあったりはしません。(実際本稿執筆時点では私はわかっていません)
これは位置を変えたいのか、あるいは数を変えたいのかがちょっと読み取りづらかったのですが、実際の紙面を見ると全ページ右下にノンブルが入っているので、位置を変えたいのかな?という前提で進めます。
なお、あらゆる組版ツールからの生成物においても言えますが、Acrobatで後から文字まわりを変更したり追加したりするのは基本的にお勧めしません。
review-jsbookにおいては柱およびノンブルはTeXのfancyhdrパッケージを使って管理しているので、これでノンブルの位置は簡単に変えられます。
ひとまず、奇数偶数のページを問わずノンブルを右下の定位置(版面の右端位置合わせ)にするなら、次のようにsty/review-custom.styに追加します。
\fancyfoot{} \fancyfoot[RE,RO]{\thepage}
いったん既存のフッタを解除し、それからEven(偶数)、Odd(奇数)どちらのページのフッタともR(右)にノンブル(\thepage)を置くようにします。
章扉は普通は奇数ページ始まりなので右にノンブルが置かれるはずですが、openanyで章扉が偶数からも始められるようにしていたりする場合も考えて、扉ページのほうもフッタを変更する例も示しておきます。ついでにヘッダのところも偶数ページに章、奇数ページに節というようにしておくことにしましょう。
% 通常のページのヘッダとフッタ \fancyhead{} \fancyhead[LE]{\gtfamily\sffamily\bfseries\upshape \leftmark} \fancyhead[RO]{\gtfamily\sffamily\bfseries\upshape \rightmark} \fancyfoot{} \fancyfoot[RE,RO]{\thepage} \fancypagestyle{plainhead}{% 扉ページのヘッダとフッタ \fancyhead{} \fancyfoot{} \fancyfoot[RE,RO]{\thepage} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt}}
fancyhdrパッケージの利用方法の詳細は「texdoc fancyhdr」で確認してください。
トンボ付きPDF広告の扱い
塗り足し・トンボを削除して原寸原稿に変換してしまうという手があります。これが一番楽です。楽は楽ですが、背景・テクスチャのあるページでは印刷・断裁のわずかなズレにより周囲に白い部分がわずかに出てしまうことがあります。 そのまま合体させてしまうという手もあります。原稿順が変わってしまったりするリスクもありませんが、単一のPDF内で原稿サイズが変わるなど、編集作業において若干面倒が生じることがあります。印刷所によっては嫌がられる場合もあるでしょう。 サイズ違い原稿を別ファイルのままおいておくのはどうでしょう。印刷所での作業や確認事項が増える傾向にありますが、印刷データ上のリスクは低いです。
これは先ほどの\includefullpagegraphicsで余裕ですね。塗り足し付きのPDF(およびPDF互換を持ったAI)であろうと仕上がりサイズのPDFであろうと、ともかく支給ファイルの寸法さえちゃんとしていれば、センター合わせでうまい具合に配置できます。
広告を入れたいreファイルを用意して、中身はこんなかんじで生の情報を書きます。
//embed[latex]{ \includefullpagegraphics{images/adv.ai} //}
目次にも入れたければ、章見出しを付けておきます。nodispオプション付きの場合、目次にのみ入ります。
=[nodisp] 広告ありがとう //embed[latex]{ \includefullpagegraphics{images/adv.ai} //}
おわりに
一つのソフトで完結させることができれば良いのですが、現状それはなかなか難しいのが現状です。
記事で示されていた3つの課題について回答してみました。もちろん入稿にあたってはTeX PDFをさらにグレースケール化であるとか、PDF/X-1aあるいはPDF/X-4変換などの作業もしたほうがベターであり、それにはAcrobat等の別のツールも必要になってはきますが、おおむね入稿readyなPDFを作るという観点では、Re:VIEW単体で完結できそうです。
また、review-jsbookのデフォルトスタイルは後方互換性やマクロリファレンスとしての扱いのために装飾なども乏しいのですが、review-jlreq、あるいはTechboosterのReVIEW-Templateではtcolorboxによる囲みやその他いろいろな調整をしているので、参考にしてみるとよいでしょう。Enjoy!