为什么 \big\mid 不起作用?

为什么 \big\mid 不起作用?

众所周知,\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

在此处输入图片描述

相关内容