今日は印刷用と電書用でソースを分離した話について。
印刷用と電書用での要件の違い
印刷用のPDFと電子書籍用のPDFでは、必要な要件が異なってくる:
- 印刷用
- トンボが必要
- 隠しノンブルが必要
- 電子書籍用
- 表紙/裏表紙の画像が必要
- ページ間のリンクが必要
なお、一方で必要となっているものは、他方では不要なことに注意。
例えば電子書籍用のPDFにトンボが出ていたりするととても煩わしい。
そこで、どちら用のPDFなのかにあわせて設定などを変える必要がある。
一つの方法はCプロプロセッサを使うこと。
-E
オプションを使えばプリプロセスだけ実行することが出来る。
それで#ifdef
などを使ってコンパイルスイッチすれば切り替えられそう。
ただのソースでプリプロセスが問題なく動くかはちょっと怪しい・・・
自分がとった方法は印刷用のソースと電子書籍用のソースを分けて、共通するソースはインクルードして利用し、違う部分だけそれぞれのソースで定義する(あるいは定義の上書きをする)という方法。
これについては後述。
なお、Re:VIEWの場合は設定ファイルを複数用意し、それぞれの設定ファイルに対してビルドを実行することで、印刷用と電子書籍用の出力を分けているみたい。
ファイル構成
共通する部分は印刷用と電書用とで二度書きたくないから独立したファイルに書き出してインクルードして利用するようにした。
なので以下のようなファイル構成になった:
共通/独立 | ファイル名 | 説明 |
---|---|---|
独立 | book.tex | 印刷用のソース |
独立 | ebook.tex | 電書用のソース |
共通 | metadeta.tex | タイトル、著者名 |
共通 | settings.tex | 共通の設定 |
共通 | contents.tex | 本文の内容 |
共通 | chapter1.tex | 第1章 |
共通 | ... | ... |
Makefileについては以下も参照:
印刷用のソース
そして印刷用のソース(book.tex)は以下のようにした:
\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard,a5paper]{bxjsbook} % メタデータ \input{metadata} % 各種設定 \input{settings} % トンボの設定 ... % 隠しノンブルの設定 ... \begin{document} % 本文 \input{contents} \end{document}
共通設定を読み込んで、それに追加するようにトンボと隠しノンブルの設定を行なっている。
(chapter1.texなどはcontents.texからincludeされている)
電書用のソース
\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard,a5paper]{bxjsbook} % メタデータ \input{metadata} % 各種設定 \input{settings} % ページいっぱいの画像を入れるための設定 ... % 目次や索引、参照にリンクをつけるための設定 ... \begin{document} % 表紙 1, 2を出力 ... % 本文 \input{contents} % 表紙 3, 4を出力 ... \end{document}
こちらは共通設定を読み込んだあとに表紙を出力するための設定やリンクの設定をして、それと本文の前後で表紙の出力を行なっている。
印刷用と電書用の分離については以上で、...
で省略した部分については明日以降で。
宣伝!
『Math Poker Girl』はBOOTHで販売しているのでよろしくお願いします!
今日はここまで!