pTeX では和文組版に関する処理を行うために文字間にグルーを挿入している。このグルーの挿入の規則の詳細については非常に複雑で理解困難であるため、それに関する誤解をよく見かける。ここでは和文を \hbox
に入れる処理に関する間違いを紹介する。
次のコードは間違い(或いは極めて奇怪)である。
\hbox to 1zw{。}
\hbox
に寸法に指定されているので、これを書いた人は、この箱の中に伸縮するグルーがあると想定している。((箱の中に伸縮するグルーがないと、そもそも箱の中身を「ある寸法に合わせて」組むことは不可能である。もっと自明な例でいうと、\hbox to 20pt{A}
が成功するには文字〈A〉の字幅が 20pt でなければならず、もしそうであるならそもそも to 20pt
を指定する意味がない。だから(欧文の場合に)こんなコードは絶対に書かれない。))つまり、箱の中において〈。〉の後にグルーがあって中身の幅を 1zw に調節することができて、ゆえに幅指定をすることで中身の幅を(伸縮無しの)1zw に固定することができる……と意図していることは容易に想像できる。
しかし実際には、この状況ではグルーの自動挿入は行われない。何故なら、pTeX の仕様では、箱の(内側の)両端に調整用のグルーが自動挿入されることは決してない。(箱の外側の端には入る可能性がある。)従って、これを実行すると次のように無残に失敗することになる。
Underfull \hbox (badness 10000) detected at line 10 \JY1/mc/m/n/10 。 []
失敗しないためには、〈。〉の直後に入って欲しかった約物調整用のグルー((JIS メトリックの場合は \hskip0.5zw
。句点の後の空白は伸縮しない。))を入れる……でもよいが、この場合は伸縮自在のグルー \hss
でも同じ結果になる。
\hbox to 1zw{。\hss}
しかしよく考えてみると実現したいのは「1zw の幅に〈。〉を左寄せで入れる」ことと一致するので、実は
\makebox[1zw][l]{。}
で十分である。結局 TeX で悩む必要すらなかった訳である。