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
符号之后),但我现在无法重建一个例子。
我怎样才能自动允许周围出现换行符mathbin
和mathrel
符号?当然,我总是可以手动插入\allowbreak
或将其包含在我自己的宏中,定义这样的运算符以及\let
重新定义我的文档中出现的现有这样的符号,但这似乎是错误的方法。
我知道自己在风格上做了什么;我排版的不是普通的数学公式,也不是普通的方程式,而且我真的很喜欢在开始下一行。无论如何,我认为,例如,在a = b = c⋅d
第二个等号之前的换行符看起来完全没问题。基本上,从某种意义上说,我想摆脱 LaTeX 的偏好。
我正在寻找一种方法来 (1) 使此类符号的左侧具有与其右侧相同的状态,或 (2) 基本上\allowbreak
在这些符号周围插入自动 s。 (请注意,这两个选项并不相同。)请注意,理想情况下,这不应该搞砸使用现有或自定义mathbin
/mathrel
符号构建的更复杂的数学符号。
答案1
该flexisym
包允许将任意命令插入到数学字符定义中。它通常与breqn
编写它的目的一起使用,但在这里我直接使用它。二进制和关系函数的定义有点不透明,但只是直接从现有定义中复制,并在您的示例中添加了\allowbreak
as,但应用于这些类的所有字符(只要它们是通过标准 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}