
Известно, что \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
.