昨日、ついに成人向け新刊 hypnobath の本文PDFが完成しました。
……正直、死ぬかと思いました(笑)
私は普段、技術ライターとしてドキュメントを書いたり、FOSSソフトウェアのチュートリアルを作ったりしています。
そんな私が、自前の同人誌まで全部LaTeXで組版しようとした結果がこれです。
環境はいつもの Arch Linux(rolling releaseで常に最新のTeX Liveをpacmanでキープ)、エディタは Emacs(evil-mode + AUCTeXで快適に)。
すべてコマンドラインで完結させるのが私の流儀です。
使っているのは jlreq クラス。W3Cの「日本語組版処理の要件(JLReq)」を忠実に実装した神クラスで、縦書き・傍点・圏点・縦中横などが綺麗に決まります。ただ、エンジン選択を間違えると地獄を見ます。
最初は軽い気持ちでこう打っただけでした。
Bash
latexmk -pdf -pdflatex="uplatex" hypnobath.tex……即死。
text
! Undefined control sequence.
l.493 \epTeXInputencodingpTeX/upTeX由来のプリミティブが飛び出してきて、pdflatexでは当然対応できません。
そこから本格的な試行錯誤が始まりました。
地獄の試行錯誤ログ(技術者向け・詳細版)
- pdflatex → 即 \epTeXInputencoding 未定義で死亡
- lualatex に切り替え → luatexbase.sty が見つからない → texlive-luatex インストール
- さらに pLaTeX2e フォーマットが必要と怒られ、[lualatex] オプションをjlreqに渡してみるも別エラー連発
- 結局 uplatex + dvipdfmx に逃げ帰る(これが2026年現在もjlreqの安定ルートだと実感)
その後も細かい死が続きました:
- sfkanbun.sty(漢文傍注用)を ~/texmf/tex/latex/local/ に正しくインストールし忘れて3往復
- \usepackage[dvipdfmx, hiresbb]{graphicx, xcolor} でxcolorがdvipdfmxドライバを正しく認識せずエラー → plautopatchを先に読み込む必要あり
- 目次(TOC)でページ番号が横倒しになる問題 → \contentsline の再定義と \renewcommand{\contentsname}{目次} 周りの調整
- \rensuji(縦中横)コマンドがTOC生成時に未定義 → \AtBeginDocument で明示的に定義
- geometryパッケージとの組み合わせでページサイズがdvipdfmxに正しく渡らない → [pass,dvipdfmx] オプションで解決
EmacsのAUCTeXでコンパイルしながら、エラーログを *LaTeX errors* バッファで睨み、
M-x latexmk を連打する日々……。
途中「もうLuaLaTeX + luatexjaに戻るか」と何度も心が折れかけましたが、FOSSの精神で粘りました(笑)。
そして昨日、ついに……
Bash
uplatex hypnobath.tex
dvipdfmx -o hypnobath.pdf hypnobath.dvitext
Output written on hypnobath.dvi (6 pages, 17448 bytes).
dvipdfmx: ... [PDF output successful]震える手でPDFを開いた瞬間、縦書きの行間、傍点の位置、数字の縦中横(\rensuji)、圏点まで完璧に出ていました。
「これ、本だ……」と本気で感動しました。
今回の教訓(同人誌・技術者向け)
- jlreqを使うなら 最初から uplatex + dvipdfmx + plautopatch を強く推奨(2026年現在もこれが最も安定)
- 古いテンプレートは信用しすぎない。特に graphicx / xcolor のドライバ指定と geometry の pass オプションは要注意
- 自作スタイルやパッケージは ~/texmf/tex/latex/ 以下に正しく配置(texhash 忘れずに)
- Emacs + Arch Linux勢は、TeX Liveを pacman -Syu texlive-most texlive-langjapanese で常に最新に保つと幸せ
- 詰まったら遠慮なくAI(Grok含む)に聞く。マジで生産性が段違い
成人向け同人誌だからこそ、組版で妥協したくないんですよね。
読者がページをめくった瞬間に「この本、丁寧に作られてるな」と感じてほしい。
FOSSの力と少しの執念で、そこまで到達できました。
というわけで、hypnobath 本文組版完了。
次は表紙の調整と印刷所向けデータ作成です。
同じくLaTeX(特に日本語組版)で同人誌を作ってる技術者の方、ぜひコメントで地獄話シェアしてください。
「俺はここで死んだ」「このパッケージの組み合わせが最強」みたいな情報交換、大歓迎です!