Closed aminophen closed 6 years ago
チョット試してみたのですが
\def\<{\leavevmode\inhibitglue}
これだと\leavevmode
が\inhibitglue
の前側の効力を妨げてしまうようです。
となると、
\def\<{\ifvmode\leavevmode\fi\inhibitglue}
ですが、これだと動く引数での挙動が心配です。結局
\DeclareRobustCommand*\<{\ifvmode\leavevmode\fi\inhibitglue}
でしょうか。
どういうわけか
)\<\<(
と書いた場合,従来の \def\<{\inhibitglue}
だと両方のカッコのグルーが消えますが,これを robust にした場合や ZR さんご提案の定義にした場合に片方消えなくなりますね。なぜでしょう?
)\relax\inhibitglue(
とおなじ?
もはや LaTeX フォーマット自体が e-TeX 拡張を要求していることを考えると,
\protected\def\<{\ifvmode\leavevmode\fi\inhibitglue}
ではどうでしょうか?
)\relax\inhibitglue( とおなじ?
納得しました。それでは,e-TeX の \protected を使うことにしましょう。
cb41066 でカーネルに移しました。ただ texjporg/tex-jp-build#28 という話もあるので,しばらく open のままにしておきます。
https://twitter.com/zr_tex8r/status/896321712664461312
https://twitter.com/zr_tex8r/status/896323051071037440
今の
\<
の定義(plfonts.dtx内)はですが,TeX Live 2014 での \inhibitglue の仕様変更により垂直モードで効かなくなったこと,および
\<
は「LaTeX 的な命令」であることからがいいのでは?という話はこちらで。