\big\mid が機能しないのはなぜですか?

\big\mid が機能しないのはなぜですか?

\big\midがエラーをスローすることはよく知られています。しかし、なぜそうなるのでしょうか? 私の知る限り、は\midと同等であり、とはそれぞれ および と同等です。 が と同等であるのと同じです。 そして、\mathrel|\lvert\rvert\mathopen|\mathclose|\vert|\lvert,\rvertする\big, \biglは との両方で機能します。したがって、対称性により、 が などでも機能する\bigrのは当然だと思います。\mid\big,\bigm

MWE:

\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との 3 つ組\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

ここに画像の説明を入力してください

関連情報