よくあるがあまりマクロを見かけない, 集合の内包表記.
set.sty
\def\defset#1#2{%
\settoheight\@tempdima{$#1$}
\settoheight\@tempdimb{$#2$}
\ifdim \@tempdima<\@tempdimb
\@tempdimc=\@tempdimb
\else
\@tempdimc=\@tempdima
\fi
\left\{ \> #1 \left\vert \rule{0pt}{1.1\@tempdimc} \right. #2 \> \right\}
}
\def\extdefset#1{%
\settoheight\@tempdima{$#1$}
\left\{ #1\rule{0pt}{2\@tempdima} \right\}
}
\let\set\extdefset
set.tex
$ f^{-1}(y) = \defset{ x \in X }{ f(x) = y } $
$ \defset{ (f,g) \in (X^Y)^2 }{ f(x) = g(x) } $
などの様に使う. どちらかが大きくなるとそれに伴って { | } が大きくなってくれる.
然し同じ様に\setを定義しようとすると上手くいかない. 何故...