マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

非 e-TeX で hyperref を使うと……

hyperref が非 e-TeX では動かないという話があるらしい。

やってみた。

% test.tex
\documentclass[a4paper]{article}
\usepackage[bookmarks=true]{hyperref}
\begin{document}
\section{Test}
\end{document}

これを W32TeXlplatexコンパイルすると……。

This is pTeX, Version 3.1415926-p3.2 (sjis) (TeX Live 2012/dev/W32TeX)
 restricted \write18 enabled.
……(略)……
(c:/usr/local/share/texmf/tex/generic/oberdiek/gettitlestring.sty)) (./test.out
) (./test.out) [1] (./test.aux) )
(\end occurred inside a group at level 1)
Output written on test.dvi (1 page, 728 bytes).
Transcript written on test.log.

なんだ、何事もなく動くじゃないか………………ん?

(\end occurred inside a group at level 1)

ああああああああーーー!!

*  *  *

一応、対処療法は可能だけど、原因は本質的には非 e-TeX 対策のコードのバグなので、Oberdiek さんに報告したほうがいいんだろうな。



[2012/06/10 追記] この現象は hopatch というパッケージ(oberdiek バンドルに含まれる)のバグに因るものだが、実はこのバグは既に 2012/05/28(v1.2)に修正されていた。ただこのパッケージの特有の理由があり、このパッケージだけ単純にアップデートしても hyperref の現象は解決しない。oberdiek バンドル全体をアップデートするのが確実だが、最低限の操作で済ませたい場合は次のようにする。

  • CTAN の oberdiek ディレクトリから hopatch.dtx を(適当なディレクトリに)ダウンロードする。*1
  • tex hopatch.dtx を実行する。hopatch.sty が生成されることを確認。
  • tex hobsub.dtx を実行する。hobsub.sty、hobsub-generic.sty、hobsub-hyperref.sty が生成されることを確認。
  • 前項までに挙げた 4 つの sty ファイルについて、元のファイルを生成したファイルで置き換える。*2

*1:なお、ZIP アーカイブ(oberdiek.zip)の内容は 06/10 時点では最新になっていない。

*2:元のファイルの場所は kpsewhich で確認する。