いものやま。

雑多な知識の寄せ集め

TeXで同人誌を作ってみた。(印刷用/電書用の分離)

f:id:yamaimo0625:20190918075457j:plain

今日は印刷用と電書用でソースを分離した話について。

印刷用と電書用での要件の違い

印刷用のPDFと電子書籍用のPDFでは、必要な要件が異なってくる:

  • 印刷用
    • トンボが必要
    • 隠しノンブルが必要
  • 電子書籍
    • 表紙/裏表紙の画像が必要
    • ページ間のリンクが必要

なお、一方で必要となっているものは、他方では不要なことに注意。
例えば電子書籍用のPDFにトンボが出ていたりするととても煩わしい。

そこで、どちら用のPDFなのかにあわせて設定などを変える必要がある。

一つの方法はCプロプロセッサを使うこと。
-Eオプションを使えばプリプロセスだけ実行することが出来る。
それで#ifdefなどを使ってコンパイルスイッチすれば切り替えられそう。
ただ \TeXのソースでプリプロセスが問題なく動くかはちょっと怪しい・・・

自分がとった方法は印刷用の \TeXソースと電子書籍用の \TeXソースを分けて、共通するソースはインクルードして利用し、違う部分だけそれぞれのソースで定義する(あるいは定義の上書きをする)という方法。
これについては後述。

なお、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されている)

電書用のソース

これに対して電書用のソース(ebook.tex)は以下:

\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で販売しているのでよろしくお願いします!

今日はここまで!