我有一个如下定理:
现在我想打破(A....D)数学表达式。问题是,我从解决方案中所做的一切都没有这答案很有帮助(因为可能人们会引导我找到这个答案),那就是:
- 将数学表达式拆分成两个用逗号分隔的不同数学表达式没有任何作用,如果我添加一个,
\\
它会破坏表达式,但它看起来很丑陋,因为第二行的部分没有正确对齐到右侧 \allowbreak
什么也没做添加
\makeatletter \def\old@comma{,} \catcode`\,=13 \def,{% \ifmmode% \old@comma\discretionary{}{}{}% \else% \old@comma% \fi% } \makeatother
导致错误,因为我使用的 TikZ 中的一些参数用逗号分隔。
有人知道其他解决方案吗?
答案1
因为看起来在内联数学模式中允许在“,”处换行吗?对你来说,这种方法是可行的,只是会在其他地方引起问题。你可以将逗号字符的重新定义限制在出现此问题的段落中,方法是将其括在括号组中。在这里,我仅将此重新定义应用于第二段,你可以看到此重新定义是局部的。
笔记:
- 包裹
showframe
仅用于显示边距。
代码:
\documentclass{article}
\usepackage{showframe}
\begin{document}
Here is some very long text followed by a very long equation like $a,b,c,d,e,f,g,h,i,j,k,l$ etc
{
\def\OldComma{,}
\catcode`\,=13
\def,{%
\ifmmode%
\OldComma\discretionary{}{}{}%
\else%
\OldComma%
\fi%
}%
Here is some very long text followed by a very long equation like $a,b,c,d,e,f,g,h,i,j,k,l$ etc.%
}
Here is some very long text followed by a very long equation like $a,b,c,d,e,f,g,h,i,j,k,l$ etc
\end{document}
答案2
如果没有最小示例(实际上可以自行运行),我们只能猜测,但我怀疑您使用了\left( A ... \right)
。如果是这种情况,那么无论您尝试什么都不会破坏,因为\left
/\right
构造将产生一个牢不可破的子公式。
在这种情况下,唯一的解决方案是不使用\left
/,\right
而是使用\bigl
and \bigr
(或\biggl
或您需要的括号大小)。然后\allowbreak
inside 应该可以工作。
答案3
在逗号后面添加\penalty 0
(在零后面留一个空格)您想要中断的位置。这将添加一个合适的断点。
但这确实是最后的手段。尝试修改段落以更好地适应公式。