当 \middle| 缺失时,用命令来替换它?

当 \middle| 缺失时,用命令来替换它?

我正在为 Wiki(Confluence,blech)使用这个 LaTeX 插件,但它不支持该\middle|命令。我猜它没有 eTex 原语或类似的落后之处。无论如何,我想我可以写类似的东西

\newcommand{\fakemiddlebar}[2]{{\kern-\nulldelimiterspace\left.\vphantom{{#1}{#2}}\right|}}
\newcommand{\condset}[2]{\left\{ #1 \mathrel{\fakemiddlebar{#1}{#2}} #} \right\}}

(根据@egreg 的建议改进)。

编辑:但我想做得更好!我想要一个具有相同效果的无参数命令\middle|。另外,我无法\include\usepackage。这可能吗?

答案1

\condset{x\in X}{x<\frac{1}{2}}使用如下命令可获得相同的结果

\left\{x\in X\middle|x<\frac{1}{2}}

通过将宏修改为

\newcommand{\fakemiddlepipe}[2]{{\kern-\nulldelimiterspace\left.\vphantom{{#1}{#2}}\right|}}
\newcommand{\condset}[2]{\left\{ #1 \fakemiddlepipe{#1}{#2} #2 \right\}}

请注意 主体周围的额外一对括号\fakedmiddlepipe,以及\kern删除 所添加的空格的指令\left.。当然,管道周围没有空格,因此最终定义可能是

\newcommand{\condset}[2]{\left\{ #1 \mathrel{\fakemiddlepipe{#1}{#2}} #2 \right\}}

这样的结果\condset{x\in X}{x<\frac{1}{2}}将与更正确的结果相同

\left\{x\in X\;\middle|\;x<\frac{1}{2}}

(并且您甚至可以删除 ; 定义中的额外一对括号\fakemiddlepipe,但我会将它们保留用于其他可能的用途)。

在此处输入图片描述

答案2

\middle|如果您只对(而不是任何其他分隔符)感兴趣,则只需使用\vrule

$$\left\{x\in X\;\vrule\; x< {1 \over 2} \right\}$$
\bye

答案3

正如@Mico所建议的,布拉克特软件包中有解决方案:更改 的 catcode |,并使用|代替\middle|。您只需小心不要错误地将其用于组外。

相关内容