这个问题与如何使垂直条的长度超过有关\mid
。
然而,虽然给定的解决方案对我来说有效,但它不再表现为二元关系,因此失去了放入\middle|
其左右两侧的空间。\mid
(我知道我可以手动添加空间,但我希望正确的方法来做到这一点。
实际上,我想要一个像其亲戚\mid
一样工作的“可生长的” 。\left\{
答案1
如果您希望在所有帐户上\middle|
都表现得完全相同\mid
(间距、以表格形式堆叠\mid\mid
等),则需要\mathrel{}
在两侧使用\middle|
(手动空格(如 \; )在所有情况下都不会正确完成工作):
\newcommand{\relmiddle}[1]{\mathrel{}\middle#1\mathrel{}}
以下代码比较了两个不同公式上的\mid
新命令\relmiddle
,并显示间距相同:
\documentclass{article}
\newcommand{\relmiddle}[1]{\mathrel{}\middle#1\mathrel{}}
\begin{document}
\nulldelimiterspace=0pt% to kill the little space before \left and after \right (not a good idea in a real document)
$a \mid -b$\par
$\left. a \relmiddle| -b \right.$
$a \mid\mid -b$\par
$\left. a \relmiddle|\relmiddle| -b \right.$
\end{document}
答案2
(编辑:这个答案是基于一个错误的假设,即问题是关于二进制的操作员,不是关系。Philippe 的答案对于后者来说更好,但如果您想要一个增长的二元运算符,那就不那么容易了。另请参阅评论。)
我的回答和威尔的(现已去世)一样,只是更详细一些:
\def\binmiddle#1{\mathchoice{\mskip\medmuskip}{\mskip\medmuskip}{}{}\middle#1
\mathchoice{\mskip\medmuskip}{\mskip\medmuskip}{}{}}
\medmuskip
解释:二元运算符在显示和文本模式下被 包围,但在脚本和scriptscript模式下没有空格。