答案1
我有时会做一些更邪恶的事情
\documentclass[a4paper]{memoir}
\usepackage{mathtools}
\DeclarePairedDelimiterX\Set[2]{\lbrace}{\rbrace}%
{ #1 \,\delimsize| \,\mathopen{} #2 }
\begin{document}
\[
\Set*{ x }{ x>0 }
\]
\end{document}
从而隐藏结构内的符号。带星号和不带星号的符号均使用自动缩放括号和垂直线\Set
创建。\Set*
2014 年 8 月更新:我不再推荐双参数解决方案,而是推荐这个,因为我觉得它提供了一个更接近数学意义的界面
\documentclass[a4paper]{memoir}
\usepackage{mathtools}
\providecommand\given{} % so it exists
\newcommand\SetSymbol[1][]{
\nonscript\,#1\vert \allowbreak \nonscript\,\mathopen{}}
\DeclarePairedDelimiterX\Set[1]{\lbrace}{\rbrace}%
{ \renewcommand\given{\SetSymbol[\delimsize]} #1 }
\begin{document}
\[
\Set*{ x \given x>0 }
\]
\end{document}
顺便说一句:请注意添加的\mathopen{}
输入\Set{ X \given -a < x < a}
会给我们错误的结果-a
(减法减号,而不是符号减号)
2015 年 3 月更新:将 移至\allowbreak
之前插入的空格前面。如果发生换行,该空格就会消失。
答案2
您应该使用\mid
而不是|
。并在存在量词后使用\colon
而不是:
(尽管我只会放一个细空格)。
答案3
这braket
软件包中包含一个\set
可以执行您想要的操作的命令:
\set{\alpha \in \Sigma^\omega | \exists^\omega n : \alpha [0,n] \notin \Sigma^* a_1 \Sigma^* a_2 \dotsb a_n \Sigma^*}
它还定义了\Set
,其中第一个|
是可扩展的,它允许正确排版集合,例如
\Set{x| x\in\mathbb R, |x|<\frac12 }