\prerelpenalty, \prebinoppenalty の導入?

\prerelpenalty, \prebinoppenalty の導入?

- でび まる の投稿
返信数: 1

でびまる といいます。以前、インライン数式での改行について質問し、
https://okumuralab.org/tex/mod/forum/discuss.php?d=4033
で、LuaTeX には `\prerelpenalty`、`\prebinoppenalty` が定義されていて、二項演算子や関係記号の前での改行を設定できることを教えていただきました。

個人的にはほぼ LuaTeX のみを利用しているので、これで十分ではあるのですが、LuaTeX にこのような仕組みが用意されているということは、「演算子の前での改行」という方向も、TeX の仕組みとして考えられているのだと思います。

そこで、LuaTeX ではない通常の TeX でも、同様に `\prerelpenalty`、`\prebinoppenalty`(あるいはそれに相当する仕組み)が利用できるようになればと思っています。

少しだけ `\ifprimitive` を用いて調べてみたところ、LuaTeX では `\prerelpenalty`、`\prebinoppenalty` はプリミティブとして定義されているようです(この理解で合っているか、少し自信がありません)。

これらを LuaTeX 以外の TeX でも利用できるようにすることは可能でしょうか。あるいは、同等の機能を実現する方法があればご教示いただけると幸いです。

よろしくお願いします。

でび まる への返信

Re: \prerelpenalty, \prebinoppenalty の導入?

- しっぽ 愛好家 の投稿

>LuaTeX にこのような仕組みが用意されているということは、「演算子の前での改行」という方向も、
>TeX の仕組みとして考えられているのだと思います。

逆です.そのようなことは TeX 自身としては考えていないため,LuaTeX が独自に(あるいは勝手に)
追加しているのです.

どうしてもやりたければ,大雑把なやり方でよければ二項演算子・関係演算子を出力するコマンドを
再定義して(単一の文字の場合には \mathcode を "8000 にして,アクティブにした文字を定義),
前側に適当な penalty を追加するという手が考えられるでしょう.
# もっとも,「a\ (> 0)」なんて記述の「(」「>」の間での行分割も起こりかねないので,
# まともにやるには数式を改めて解析して penalty を挿入する位置を割り出すことになるでしょうけれども.