考虑以下代码:
\documentclass[twocolumn]{article}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{breqn}
\usepackage{amsmath} \delimitershortfall=-1pt
\usepackage{mleftright}
\usepackage{color}
\begin{document}
\lipsum[3-4]
\textcolor{red}{{\ttfamily \textbackslash mleft} and {\ttfamily \textbackslash mright} inhibits the breaking between delimiters inside {\ttfamily dmath}:}
\begin{dmath*}
\mathcal{O}(f) = \mleft\{ t \hiderel{:} \mathbb{N} \hiderel{\rightarrow} \mathbb{R}^+_0 \hiderel{\mid} \exists c \hiderel{\in} \mathbb{R}^+ \wedge \exists n_0 \hiderel{\in} \mathbb{N} \wedge \forall n \hiderel{\geq} n_0 \wedge t(n) \hiderel{\leq} c \, f(n) \mright\}
\end{dmath*}
\textcolor{blue}{{\ttfamily \textbackslash left} and {\ttfamily \textbackslash right} produce a good results but {\bf is preferable in many equations always use} the {\ttfamily \textbackslash mleft} and {\ttfamily \textbackslash mright} commands:}
\begin{dmath*}
\mathcal{O}(f) = \left\{ t \hiderel{:} \mathbb{N} \hiderel{\rightarrow} \mathbb{R}^+_0 \hiderel{\mid} \exists c \hiderel{\in} \mathbb{R}^+ \wedge \exists n_0 \hiderel{\in} \mathbb{N} \wedge \forall n \hiderel{\geq} n_0 \wedge t(n) \hiderel{\leq} c \, f(n) \right\}
\end{dmath*}
\lipsum[1-5]
\end{document}
输出:
是否有任何解决方案或修改允许在 \dmath 中正确使用 \mleft 和 \mright?
答案1
\mleft
of 包的诀窍mleftright
在于它以空开始\mathopen{}
,并将整个表达式放在 内,\mathclose{...}
包括原始分隔符\left
和\right
。因此,周围的数学会看到一个正确分隔的表达式,\left
并且\right
不会在 内设置它们的额外间距\mathclose
。
与原始的\left
and一样\right
,表达式被放入一个不能跨行的数学子公式中(\mathinner
对于\left
and \right
;\mathclose
对于\mleft
and \mright
)。但是,包breqn
重新定义了\left
and\right
以允许换行。但由于它们位于子公式内,因此换行不会产生影响。
breqn
因此,如果您想要该软件包提供的类似功能,您可以向 发出功能请求mleftright
。
但在本题中,使用\mleft
/\mright
完全没有意义。关系符号 ( =
) 和开头的栅栏\{
或数学内部公式 ( \left
/ \right
) 之间插入的空格完全相同 ( \thickmuskip
)。结尾的栅栏结束了整个等式,没有后续符号。