自动在 mathbin 和 mathrel 字符周围使用 \allowbreak

自动在 mathbin 和 mathrel 字符周围使用 \allowbreak

mathbin我希望数学公式中和字符类的任何字符两侧都允许换行mathrel。似乎默认情况下只允许在以下字符后换行:

\documentclass{article}

\begin{document}

text text text text text text text text text text text text \(x + x + x + x + x + x + x + x + x\)

i text text text text text text text text text text text text \(x + x + x + x + x + x + x + x + x\)

text text text text text text text text text text text text \(x + x + x + x + x \allowbreak+ x + x + x + x\)

text text text text text text text text text text text text \(x = x = x = x = x = x = x = x = x\)

text text text text text text text text text text text text \(x = x = x = x = x \allowbreak= x = x = x = x\)

\end{document}

奇怪的是,我也看到过\allowbreak事后产生影响的情况(那是在\cong符号之后),但我现在无法重建一个例子。

我怎样才能自动允许周围出现换行符mathbinmathrel符号?当然,我总是可以手动插入\allowbreak或将其包含在我自己的宏中,定义这样的运算符以及\let重新定义我的文档中出现的现有这样的符号,但这似乎是错误的方法。

我知道自己在风格上做了什么;我排版的不是普通的数学公式,也不是普通的方程式,而且我真的很喜欢在开始下一行。无论如何,我认为,例如,在a = b = c⋅d 第二个等号之前的换行符看起来完全没问题。基本上,从某种意义上说,我想摆脱 LaTeX 的偏好。

我正在寻找一种方法来 (1) 使此类符号的左侧具有与其右侧相同的状态,或 (2) 基本上\allowbreak在这些符号周围插入自动 s。 (请注意,这两个选项并不相同。)请注意,理想情况下,这不应该搞砸使用现有或自定义mathbin/mathrel符号构建的更复杂的数学符号。

答案1

flexisym包允许将任意命令插入到数学字符定义中。它通常与breqn编写它的目的一起使用,但在这里我直接使用它。二进制和关系函数的定义有点不透明,但只是直接从现有定义中复制,并在您的示例中添加了\allowbreakas,但应用于这些类的所有字符(只要它们是通过标准 LaTeX 声明定义的)。

在此处输入图片描述

\documentclass{article}

\usepackage{flexisym}

\begingroup
\catcode`\_11
\catcode`\:11
\gdef\math_bsym_Bin:Nn#1#2{%
 \allowbreak\math_char:NNn 2#1{#2}\allowbreak}
\gdef\math_bsym_Rel:Nn#1#2{%
 \allowbreak\math_char:NNn 3#1{#2}\allowbreak}
\endgroup

\begin{document}


text text text text text text text text text text text text \(x + x + x + x + x + x + x + x + x\)

i text text text text text text text text text text text text \(x + x + x + x + x + x + x + x + x\)

text text text text text text text text text text text text \(x + x + x + x + x + x + x + x + x\)

text text text text text text text text text text text text \(x = x = x = x = x = x = x = x = x\)

text text text text text text text text text text text text \(x = x = x = x = x = x = x = x = x\)

\end{document}

相关内容