
\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
。