一週間ほど前に Twitter に書いた問題。
ASCII 文字のみからなるパッケージ読込無しで article クラスの純 LaTeX 文書ソースで、latex と platex のどちらでもコンパイルが通るが、両者の組版結果が明確に異なる外観となるものを挙げよ。 ただし欧文 LaTeX + article クラスが提供する命令以外の(定義済の*1)制御綴を用いてはならない。
補足条件は、「エンジンチェック((例えば \ifx\kanjiskip\undefined...\fi
のようなこと。))を無理やり LaTeX 内でやろうという話を考えるのではない」という意図で付けている。要するに、pLaTeX のカーネルで「拡張部分以外で」LaTeX と仕様が異なる部分は何かということを問うている。
答えを例を示す。
\documentclass{article} \begin{document} Hello, \TeX\ chaos!\footnote{And dear my footnote.} \begin{figure}[b]\centering \fbox{\sffamily \LARGE Figure} \caption{Something meaningful and beneficial.} \end{figure} \end{document}
この文書は「脚注」と「b 配置のフロート(figure)」を含んでいる。これをコンパイルした版面の下部は以下のようになる。
つまり、欧文 LaTeX と pLaTeX では「脚注」と「b 配置のフロート」の配置の順序が異なるのである。この差異は意図的なもので、pLaTeX では日本の組版の慣習に合わせて元の LaTeX の実装に変更を加えたからである。
従って、提出先によって指定された文書クラスを用いて(つまり書式が指定されている)文書を作成する場合には、間違って latex の代わりに platex でコンパイルすることがないように気をつける必要がある。(統合環境を使っている人は特に注意。)
【2012-04-06追記】 私は単純に「欧米では LaTeX の方式(上の図)の方が正しい」と思っていたのだが、実際にはそうではないようである。(少なくとも footmisc パッケージの作者 Thorsten Donig はこの挙動を「不適切」だと述べている。)
*1:つまりユーザ定義命令を新たに定義するのは構わない。