\prerelpenalty, \prebinoppenalty の導入?

Re: \prerelpenalty, \prebinoppenalty の導入?

- 林 かぐら の投稿
返信数: 1

本田さんのアイデアで自動化できそうですが,
・コードが少し長くなりそう
・あまりおこらなそう(?????)
なのでチェックをやめ,手動でおこなってもよいような気がします。

たとえば > の前で改行可能なモードにしているとき
(具体的には > の前に \allowbreak を入れて > を再定義します)
$a\ (> 0)$ は ( の後ろで改行する場合があります。
そのときは $a\ {(>}\; 0)$ と { } でくくればそこでの改行を抑制
できます。空きが抜けてしまったら自力で空きを入れなければならず,
ちょっと面倒ですが。もっともこの例だと $a\ {(> 0)}$ で大丈夫です。

なおついでに \* も再定義しておくとよいかもしれません。
オリジナルの定義で第1引数と第2引数を入れ替えてもうまくいきません。
\* は組んだ後に書き込むと思われるので,私は単純に
(オリジナルの定義を無視して)

\let\@times\times
\def\*{%
通常モードなら \@times\break
演算子の前で改行可能なモードなら \break\@times
}

としています。普通に書いてもよいのですが \* は2文字なので
楽に入力できるというメリットがあります。

なお

\let\@times\cdot

とできるようにしています。
\cdot だと見た目のインパクトは弱いですが。

林 かぐら への返信

Re: \prerelpenalty, \prebinoppenalty の導入?

- でび まる の投稿
反応する立場でない気もしますが、

> $a\ (> 0)$ は ( の後ろで改行する場合があります。

上の様な多少の不具合(?)は対応できそうと言うことですね。
個人的には「演算子の前での改行」が概ね実現できれば十分です。

> なおついでに \* も再定義しておくとよいかもしれません。

同じ様に改行を制御してそうですが、特別に扱う意図などがちょっと読み切れてません。