同人誌をTeXで作る

2017/12/24作成

私はここ十年くらい、同人誌を作ってコミケで頒布するということを趣味にしてます。同人誌といってもコピー誌ですし、内容もコミックやイラストなどではなくテキストなんですけどね。内容は自分の体験とか考えたこととかを適当にまとめたもので、ジャンルとしては「評論・情報」とか「技術系同人誌」とか呼ばれるようなものになります。言ってしまえば、このサイトで発表してるようなテキストのようなものです。実際、このサイトのコンテンツを加筆修正して同人誌にしたこともありますし、逆に同人誌で発表したことをサイトのコンテンツに加えたこともあります。

さて、この同人誌ですがこれまではずっと版下をLibre OfficeのWriterを使って作ってきました。機能的にはこれで十分なんですが、残念ながらいくつかの点で不満がありました。不満の一つは、長文になると非常に重くなること。数十ページとかの原稿になると非常に処理が重くなり、1文字追加するのに何秒も待たされるということが多々あります。この傾向は画像を追加すると顕著で、数枚の画像程度でも更にとてつもなく重たくなります。こんなに重くてはとても実使用には耐えられません。

もう一つの不満は、レイアウト制御が難しいこと。ここに少し空間が欲しいなと思って改行を一つ打ったら、それ以降のレイアウトがダイナミックにがちゃがちゃと崩れてしまう。これも画像を貼り付けたときに顕著です。なにか一つ編集する度に、以降のページのレイアウトを必死に調整していくというのを繰り返しているのも、大変に疲れました。多分、これは私がWriterの使い方を知らないが為に起こっていることだろうとは思うのですが、だからといってそこまでWriterの使い方を習熟したいとは思わない。なんか他にいい方法がないかなぁというのをずっと考えていました。

原稿を書くとき、最初はMarkdwnで書いてます。なので、理想はMarkdownから直接印刷用の版下が作れることです。MarkdownからPDFを生成するようなツールがいくつかありましたので少し調べたりもしたのですが、これらは大抵が直接変換するのではなく、中間的にHTMLとかTeXとかのファイルを生成し、そこからPDFを生成しているようでした。そして、微調整はその中間ファイルを直接いじってくださいというスタイル。うーん、なるほど。理屈は分かりますが、これはいくつかの点で辛いかな。

一つは、複数のアプリを経由することから、版下制作環境の構築が複雑になること。正直、私の運用スキルはあんまり高くありませんので、複雑なシステムの構築は苦手です。もう一つは、微調整を中間ファイルを修正して行うということは、原稿に戻って修正したときは中間ファイルは作り直しになって、それまでの調整内容は全てやり直しになってしまうこと。これは結構辛い。また、自動生成される中間ファイルが編集し易いとも限りませんしね。こういう自動生成されるファイルって大抵は複雑になってていじりにくいし。

ではどうするかということを考えて、結局は自力でレイアウト出来るツールで版下を作ることかなと思い至りました。あんまりいろいろ考えてめんどくさくなってきて、もういいやという思い切りがあったというのもあります。結論としてはTeXで書くということです。実際にはLaTeXですが。原稿は今まで通りMarkdownで行いますが、原稿がある程度完成した時点でTeX化し、以降の作業はTeXのみで行いMarkdownには戻らないというスタイルで制作しようと思います。

ところで、今まで適当に書いてきた用語の定義をちょこっと。私が勝手に区別して使ってるだけなんでこれが正解というわけではないと思いますが、とりあえずこの記事ではこれで通しますということで。

「原稿」はMarkdownで書いたテキスト情報を指します。レイアウトに関する情報は含みません。「版下」は印刷屋さんに入稿するPDFを指します。レイアウトも何もかも全ての情報を含みます。ちなみに私は印刷屋さんはいつも「ちょ古っ都製本工房」さんを利用させていただいています。いつも迅速に対応していただいてますし、出来上がった印刷も文字中心の同人誌としては十分なものです。以上、(特に頼まれてませんが)宣伝終了。ということで版下となるPDFもちょ古っ都製本工房さんの入稿フォーマットということになります。といっても、多分他の印刷屋さんでもそんなに変わらないとは思いますが。

唐突に印刷屋さんがでてきましたが、私は基本的には自宅のプリンタで印刷しています。でも最近はスケジュールに余裕があるときは印刷屋さんを利用することもあります。自分で印刷して製本(といってもホッチキスで留めるだけですが)の手間がないですし、それでいて見栄えはものすごく立派になりますので、コピー誌を作ってる方にはお勧めです。

閑話休題。TeXを使うことにしたわけですが、私のTeXスキルははっきりいってゼロに等しいです。学生時代に論文を書くのに使ってたのでその頃は多少は使えてましたけど、なんせ何十年も昔の話。「ひろのぶのLaTeX入門」で勉強しました、って言うといつぐらいの話か伝わりますかね。ともかく、そんな太古のスキルは全て忘れてしまってますので、初心者としてTeXに取り組むことになります。もっとも、覚えていたところでTeX自体もだいぶ変わってるでしょうから、昔の知識は通用しないでしょうけれどね。

環境構築

前置きしておきますと、私が普段使っているのはFreeBSDですので、以下の環境の話もFreeBSDに固有の話です。と言っても他の環境でも通用することも多いとは思いますが。以上、前置き終わり。

TeXといえば環境構築がとても大変なことで有名です。というか有名でした。何十年前にはとても自力では構築できるものではなくて、熟練者の方が構築した環境で使わせていただくというものでした。というか私はそうでした。とても自力で構築できるとは思えなかった。が、ここでも多くの方の努力による成果があるようで、TeXのディストリビューションが用意されているのですね。TeX Liveというものを使えば、何も考えずにインストールするだけでTeXの環境が一式構築できるそうです。すばらしい。多くの方の努力に感謝と敬意を表します。

TeX Liveにもいくつか種類があるそうなのですが、初心者としては迷うことが無いように全部入りのフルパッケージを使ってみることにしました。何が自分にとって必要で何が必要でないかの取捨選択が出来ないですからね。ということでインストール。

$ sudo pkg install texlive-full

これだけで環境構築終わってしまいました。正直びっくり。スゴいですね。ありがとうございます。

PDF生成

texファイルからpdfファイルを作る手順は以下のようにしました。dviを経由せずに一気にtexからpdfを作ることもできるようですが、dvi→pdfでのオプションとかも細かく設定できた方がいいかなと思って分けて実行するようにしました。

$ platex honbun
$ dvipdfmx honbun

dviからpdfを作るのにもいろんなコマンドがあって流派もあるようですが、とりあえずはこちらでやってみることにしました。

フォント埋め込みについて

印刷屋さんに入稿するPDFはフォントが埋め込まれてないといけません。そりゃそうですね。私が指定したフォントを印刷屋さんが持っているとは限りませんので。

なんですが、まず生成されたPDFにフォントが埋め込まれているかどうかの確認に手間取った。私は普段はPDFビューアにchromeを使っているのですが、chromeではPDFのプロパティ表示ができませんでした。PDFのプロパティが確認できるウェブサービスとかツールとか無いかなと探したのですが、結局はAdobe Acrobat Readerが確実というところに落ち着きました。PDFの本家なんで確実なのはそうなんですが、ビューアをはじめとしてPDFを操作するツールなんて山ほどあるのに、この程度の基本的なプロパティの確認がAdobeのツールでしか出来ないってのは、なんかちょっと不思議な気がします。

さて、フォントの埋め込み状況を確認したところ、以下のようになっていました。

標準の欧文フォントは埋め込まれるけど和文フォントは埋め込まれないそうです。厳密には少々違うかもしれませんが。

和文で指定されてる `GothicBBB-Medium` と `Ryumin-Light` というフォントは、商用フォントで有名なモリサワのものだそうです。そんな高いフォント持ってないし、持ってたとしてもPDFに埋め込んで印刷屋さんに提供できないし(というライセンスだと思うんだけど、その認識で合ってるかな?)、フリーの和文フォントを使おうということで、とりあえずIPAフォントをインストールしました。

$ pkg install ja-font-ipa

これだとシステムにフォントが入っただけで、TeXからは使われません。その辺を指定するのにはマップファイルというのを使って指定するそうです。以下のようにしました。

$ cp /usr/local/share/texmf-dist/fonts/map/dvipdfmx/cid-x.map .
diff -up /usr/local/share/texmf-dist/fonts/map/dvipdfmx/cid-x.map cid-x.map
--- /usr/local/share/texmf-dist/fonts/map/dvipdfmx/cid-x.map    2017-11-05 00:20:38.000000000 +0900
+++ cid-x.map   2017-12-10 06:04:15.609986000 +0900
@@ -71,10 +71,10 @@ omgbm  UniJIS-UCS2-H GothicBBB-Medium
 %%

 %% Ryumin and GothicBBB found in PostScript printers:
-rml  H Ryumin-Light
-gbm  H GothicBBB-Medium
-rmlv V Ryumin-Light
-gbmv V GothicBBB-Medium
+rml  H ipam.ttf
+gbm  H ipag.ttf
+rmlv V ipam.ttf
+gbmv V ipag.ttf

 rml-jis H Ryumin-Light
 gbm-jis H GothicBBB-Medium

あとはPDF生成時にマップファイルを指定するだけです。

$ dvipdfmx -f cid-x.map honbun

kanji-config-updmap-sysというコマンドでシステムのデフォルトのフォント設定が変更できるそうなのですが、それですと別の環境に持って行ってTeXコンパイルしたらフォントが変わってしまうことになるので、私はマップファイルをプロジェクトディレクトリに含めるようにしてみました。この辺は好きずきだと思います。

Makefile

TeXはソースを修正する度にコンパイルを実行します。そういう処理にはmakeですよねということでMakefileを以下のように用意しました。latexmkというコマンドがあって.texファイルを検索してmake相当の処理をしてくれそうなんですが、個人的にはmakeの方が打ち慣れてますので。すいませんオールドタイプで。

all:    honbun.pdf

honbun.pdf:     honbun.dvi
        dvipdfmx -f cid-x.map honbun

honbun.dvi:     honbun.tex
        platex honbun

clean:
        rm -f *.dvi *.pdf *.aux *.log

という感じで、TeXによる同人誌制作環境が構築できました。あとは原稿を書いて、TeXをひたすら頑張るだけですね。具体的に使ったTeXの命令とかマクロとかは、また気が向いたら追記します。