先ほど,pTeX に \inhibitglue の挙動変更が入りました。例えば
漢字\inhibitglue\relax (ああああ
のカッコの前の空白を見ると,
・TeX Live 2018 ではグルーが入る(= \inhibitglue 無効)
・TeX Live 2019 ではグルーが消える(= \inhibitglue 有効)
というように結果に差が出ます。
(ちなみに TeX Live 2013 以前も後者だったので,この例に限って言えば「昔に戻った」といえます。)
現時点では完全に確定したわけではありませんが,pTeX のコミット r49958 です。
https://www.tug.org/svn/texlive?view=revision&revision=49958
【背景】
原作者であるアスキーのドキュメントには,
===================================================================
\inhibitglue
和文フォントのメトリック情報から、自動的に挿入されるグルーの挿入を禁止します。
このプリミティブを挿入した箇所にのみ有効です。
===================================================================
と書かれていますが,
この「プリミティブを挿入した箇所のみ有効」という記述が大雑把であり,
「いったん発行した \inhibitglue が後ろのどこまで有効なのか」
がわかりにくいという問題がありました。
【過去の挙動】
(1) アスキーによる初期 〜 TeX Live 2013 以前
・いったん \inhibitglue を発行すると,次に和文文字が現れるまではずっと有効である。
(2) TeX Live 2014 〜 TeX Live 2018(pTeX 3.8.1 まで)
・\inhibitglue は,次に文字や展開不能トークンが現れると(後述の"穴"を除けば)無効化する。
ここでいう展開不能トークンには,\hbox{} や \hskip や \kern や \vrule といった
「ノードを挿入する処理」だけでなく,\relax や \let や数値代入といった
「ノードを挿入しない処理」も含まれます。それらが一つ以上挟まることで
\inhibitglue が無効化されるので,これぞまさに
> 「このプリミティブを挿入した箇所にのみ」
を実現したと思われてきました。参考:
http://doratex.hatenablog.jp/entry/20140714/1405302796
ところが,この時の修正にもまだ"穴"があることがわかってきました。
[穴1つ目] \hbox{} という展開不能トークン(しかも box ノードを挿入するもの)が
挟まったにもかかわらず,\inhibitglue が無効化されずにグルーが消えてしまう。
例→あ\relax \inhibitglue \hbox{}(このカッコの直前
※直前の \relax を削除すれば,想定通りグルーが消えます。
[穴2つ目] 別の \hbox{} の中で発行した \inhibitglue が外側に漏れ出して,
グルーが消えてしまう。
例→あ\setbox0=\hbox{\inhibitglue}(このカッコの直前
これらの穴をふさぐ修正のついでに,今回の \inhibitglue の挙動変更となりました。
【新しい挙動】
(3) TeX Live 2019 以降(予定)
1. \inhibitglue は,その後にノードが挿入されると無効化する。
つまり,\null や \hskip や \kern や \vrule といったノード挿入では必ず無効化され,
上述の [穴1つ目] のようなことは起こらない。
2. \inhibitglue は,ノードを挿入しない処理であれば透過する(無効化しない)。
つまり,\relax や \let\A\B や数値代入では無効化されない。
3. \inhibitglue の効果はリスト内に閉じる。
つまり,上述の [穴2つ目] のようなことは起こらない。
4. \inhibitglue を無効化する \disinhibitglue という新プリミティブの追加。
これは,上記 2. により \relax などが \inhibitglue を無効化しなくなったので,
「効きすぎて困った」という場合の対策として使えることを想定。
参考:GitHub issue 28
https://github.com/texjporg/tex-jp-build/issues/28
この新挙動が入った pTeX は,バージョンが p3.8.2 と表示されますので区別可能です。
(cf. TeX Live 2018 の最新版は p3.8.1)