昨日、ついに成人向け新刊 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 \epTeXInputencoding

pTeX/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.dvi

text

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(特に日本語組版)で同人誌を作ってる技術者の方、ぜひコメントで地獄話シェアしてください。
「俺はここで死んだ」「このパッケージの組み合わせが最強」みたいな情報交換、大歓迎です!