我正在为 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|
。您只需小心不要错误地将其用于组外。