在 LaTeX 中定义漂亮集合;特别是如何做条件分隔符?

在 LaTeX 中定义漂亮集合;特别是如何做条件分隔符?

例如我有以下一套:

\{ \alpha \in \Sigma^\omega | \exists^\omega n : \alpha [0,n] \notin \Sigma^* a_1 \Sigma^* a_2 \dotsb a_n \Sigma^* \}

在这里,我将其用作|条件部分的分隔符。但是 LaTeX 没有在其周围添加任何空格,因此看起来有点奇怪/错误。我可以在这里手动添加一些空格,但我想知道是否有更“正确”的方法。例如,也可以使其表现得类似于:(我实际上希望在这里表现得不同;在这种情况下,:在它前面添加了太多空间,不符合我的口味)。


相关问题:这里或者这里

答案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 }

相关内容