マクロツイーター

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

platex が latex の代わりにならない例

一週間ほど前に Twitter に書いた問題。

ASCII 文字のみからなるパッケージ読込無しで article クラスの純 LaTeX 文書ソースで、latexplatex のどちらでもコンパイルが通るが、両者の組版結果が明確に異なる外観となるものを挙げよ。 ただし欧文 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 での組版結果]


つまり、欧文 LaTeXpLaTeX では「脚注」と「b 配置のフロート」の配置の順序が異なるのである。この差異は意図的なもので、pLaTeX では日本の組版の慣習に合わせて元の LaTeX の実装に変更を加えたからである。

従って、提出先によって指定された文書クラスを用いて(つまり書式が指定されている)文書を作成する場合には、間違って latex の代わりに platexコンパイルすることがないように気をつける必要がある。(統合環境を使っている人は特に注意。)

【2012-04-06追記】 私は単純に「欧米では LaTeX の方式(上の図)の方が正しい」と思っていたのだが、実際にはそうではないようである。(少なくとも footmisc パッケージの作者 Thorsten Donig はこの挙動を「不適切」だと述べている。)

*1:つまりユーザ定義命令を新たに定義するのは構わない。