我想指定两个非常相似的方程式,并使用环境将它们对齐到某些点alignat
。到目前为止,我的代码如下:
\begin{alignat}{3}
D_s &= \{ (s_1, s_2)\quad & \forall\ &s_1, s_2\neq s_1 \quad &&
\begin{array}{|l}
G_{s_1} \cap G_{s_2} \neq \{\} \\
s_1 \notin \mathbb{D}(s_2) \wedge s_2 \notin \mathbb{D}(s_1)
\end{array} \}\\
D_p &= \{ (p_1, p_2) & \forall\ &p_1, p_2\neq p_1 &&
\begin{array}{|l}
G_{p_1} \cap G_{p_2} \neq \{\} \\
p_1 \notin \mathbb{D}(p_2) \wedge p_2 \notin \mathbb{D}(p_1)
\end{array}\}
\end{alignat}
给出了以下方程式:
对齐效果很好。我只想增加外括号的大小,使其看起来更像这样:
\left\{
但是,和似乎\right\}
不能跨越多alignat
列。如何更改上述代码,以使第一张图片与第二张图片中的大括号对齐?
答案1
\DeclarePairedDelimiter
使用来自的命令mathtools
和包的解决方案 eqparbox
:
\documentclass{article}
\usepackage{mathtools,amssymb}
\usepackage{eqparbox}
\newcommand{\eqmathbox}[2][M]{\eqmakebox[#1]{$\displaystyle#2$}}
\DeclarePairedDelimiterX{\set}[1]\{\}{\setargs{#1}}
\NewDocumentCommand{\setargs}{>{\SplitArgument{1}{;}}m}
{\setargsaux#1}
\NewDocumentCommand{\setargsaux}{mm}
{\IfNoValueTF{#2}{#1}{\nonscript\,#1\nonscript\;\delimsize\vert\nonscript\:\allowbreak #2\nonscript\,}}
\begin{document}
\begin{align}
D_s &= \set[\bigg]{\eqmathbox{(s_1, s_2)\quad \forall s_1, s_2\neq s_1};
\begin{aligned}
&G_{s_1} \cap G_{s_2} \neq \{\} \\
&s_1 \notin \mathbb{D}(s_2) \wedge s_2 \notin \mathbb{D}(s_1)
\end{aligned}}
\\[1.5ex]
D_p &= \set*{\eqmathbox{(p_1, p_2) \forall p_1, p_2\neq p_1} ;
\begin{aligned}
& G_{p_1} \cap G_{p_2} \neq \{\} \\
& p_1 \notin \mathbb{D}(p_2) \wedge p_2 \notin \mathbb{D}(p_1)
\end{aligned}}
\end{align}
\end{document}
答案2
我将使用一个简单的align
环境并使用\biggl\lbrace
、\biggm\vert
和\biggr\rbrace
来创建“栅栏”符号。请注意,\biggm\vert
在竖线的两边会自动插入一些空格(适合关系运算符)。
如果您希望内容以数学形式排版,则可以将array
环境替换为环境。不过,对于当前的情况,这不会有什么区别。aligned
\displaystyle
\textstyle
\documentclass{article}
\usepackage{amsmath,amssymb}
\begin{document}
\begin{align}
D_s &= \biggl\lbrace
(s_1, s_2)\quad \forall\ s_1, s_2\neq s_1 \,
\biggm\vert
\begin{array}{@{}l@{}}
G_{s_1} \cap G_{s_2} \neq \emptyset \\
s_1 \notin \mathbb{D}(s_2) \wedge s_2 \notin \mathbb{D}(s_1)
\end{array}
\biggr\rbrace \\[1ex]
D_p &= \biggl\lbrace
(p_1, p_2) \quad\forall\ p_1, p_2\neq p_1
\biggm\vert
\begin{array}{@{}l@{}}
G_{p_1} \cap G_{p_2} \neq \emptyset \\
p_1 \notin \mathbb{D}(p_2) \wedge p_2 \notin \mathbb{D}(p_1)
\end{array}
\biggr\rbrace
\end{align}
\end{document}
附录回应 OP 的后续评论:由于建议的解决方案使用\biggl
、\biggm
和\biggr
而不是\left
、\middle
和\right
来调整栅栏符号的大小,因此确实可以将该方法与环境结合起来alignat
,如下所示(没有发布屏幕截图,因为结果看起来与上面的非常相似):
\documentclass{article}
\usepackage{amsmath,amssymb}
\begin{document}
\begin{alignat}{4}
D_s &= \biggl\lbrace (s_1, s_2)\quad
&&\forall\ s_1, s_2\neq s_1
&&\biggm\vert
\begin{array}{@{}l@{}}
G_{s_1} \cap G_{s_2} \neq \emptyset \\
s_1 \notin \mathbb{D}(s_2) \wedge s_2 \notin \mathbb{D}(s_1)
\end{array}
&&\biggr\rbrace \\[1ex]
D_p &= \biggl\lbrace (p_1, p_2)
&&\forall\ p_1, p_2\neq p_1
&&\biggm\vert
\begin{array}{@{}l@{}}
G_{p_1} \cap G_{p_2} \neq \emptyset \\
p_1 \notin \mathbb{D}(p_2) \wedge p_2 \notin \mathbb{D}(p_1)
\end{array}
&&\biggr\rbrace
\end{alignat}
\end{document}