众所周知,\big\mid
会抛出一个错误。但为什么会这样呢?据我所知,\mid
相当于\mathrel|
,而\lvert
和分别\rvert
相当于\mathopen|
和\mathclose|
——就像\vert
相当于 一样|
。而\lvert,\rvert
,做\big, \bigl
和都可以使用。因此,从对称性上讲,我认为 和 等一起使用也是\bigr
合理的。\mid
\big,\bigm
梅威瑟:
\documentclass{article}
\begin{document}
$\bigl\rvert ... \bigr\lvert$ works fine.
$\big\mid$ does not.
\end{document}
请注意,我不是在寻找解决方案打印更高的\mid
;我知道我可以使用\big|
或\bigm|
。我只是好奇。
答案1
命令
\bigl\vert
、\bigm\vert
和在语义上是对称的。顺便说一句,命令和\bigr\vert
的三元组分别产生相同的输出。\bigl\lvert \bigl\vert \big\lvert
\bigr\rvert \bigr\vert \big\rvert
从语义上讲,这个命令
\mid
有点离群。正如 @egreg 在评论中指出的那样,\mid
它被构造为关系符号,并且不设置为采用大小修改前缀。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\dots\ $\bigl\lvert \ldots \bigm| \ldots \bigr\rvert$ \dots\ works fine.
\dots\ $\bigl\vert \ldots \bigm\vert \ldots \bigr\vert$ \dots\ works just the same.
\dots\ $\bigl\vert \ldots \big| \ldots \bigr\vert$ \dots\ works too, but it isn't the same.
\end{document}
答案2
使用\big
通常是错误的,因为它会产生普通原子。因此,最好使用\bigl
打开围栏、\bigr
关闭围栏和\bigm
建立关系。
\bigX
无论如何,最终的定义都会这样做\big
,但首先要添加正确的类型。并且\big<token>
简单地这样做
\left<token>
所以我们必须确保参数\bigX
是一个分隔符,但事实\mid
并非如此。
原则上,我们可以解除我们知道建立在分隔符上的关系的这一限制:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\let\amsmath@bigm\bigm
\renewcommand{\bigm}[1]{%
\ifcsname fenced@\string#1\endcsname
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\expandafter\amsmath@bigm\csname fenced@\string#1\endcsname}%
{\amsmath@bigm#1}%
}
\newcommand{\DeclareFence}[2]{\@namedef{fenced@\string#1}{#2}}
\makeatother
\DeclareFence{\mid}{|}
\begin{document}
$\bigl\{\, x\in X \bigm\mid x\notin X \,\bigr\}$
\smallskip
$\bigl\{\, x\in X \bigm| x\notin X \,\bigr\}$
\end{document}
这只是一个概念证明,所以我没有尝试将其推广到\bigm
兄弟姐妹\Bigm
、\biggm
和\Biggm
。