有没有办法让一段文本的延续与多行环境的最后一行对齐,例如array
?
例如,我想定义命令
\newcommand{\setst}[2]{\{#1 \mid #2\}}
数学中的标准集合理解符号。只要第二个参数恰好适合一行,上面的代码就可以正常工作。但是,对于多行参数,它就失效了。例如,我想写类似
\documentclass{article}
\usepackage{amsmath}
\newcommand{\setst}[2]{\{#1 \mid #2\}}
\begin{document}
\begin{equation*}
S_1 \cap (S_2 \cup S_3)
=
\setst{x}{\begin{array}[t]{@{}l@{}}
x \in S_1 \land {} \\
(x \in S_2 \lor x \in S_3)
\end{array}}
\end{equation*}
\end{document}
如上所示,这会将 打印\}
在 的同一行上=
。相反,我希望输出看起来像
也就是说,\}
应该出现在第二个参数的最后一行末尾\setst
。有没有办法做到这一点,而无需手动扩展定义\setst
?
修改后的问题
Herbert 的解决方案在许多情况下效果很好,但对于可能嵌套的类似结构效果不佳。例如,
\documentclass{article}
\usepackage{amsmath}
\newcommand{\setstHerbert}[2]{\{#1 \mid \begin{array}[t]{@{}l@{}}#2\}\end{array}}
\begin{document}
\begin{equation*}
S_1 \cap (S_2 \cup S_3)
=
\setstHerbert{x}{x \in S_1 \land {} \\
x \in \setstHerbert{y}{y \in S_2 \lor {} \\
y \in S_3}}
\end{equation*}
\end{document}
为了正确排版,最外层应该与内部的\}
位于同一行。有没有办法编写一个命令,允许嵌套,并且仍将s 放在适当的行上?y \in S_3
\}
\}
(我同意嵌套集合理解在印刷上可能存在问题,但我将使用这些想法为 pi-calculus 并行组合创建一个“同构”命令,例如,(\nu x)(P | Q)
其中Q
may 本身包含一个 pi-calculus 并行组合。对于并行组合,嵌套在印刷上不存在问题。)
答案1
使用另一个定义:
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}
\pagestyle{empty}
\newcommand\setst[2]{\{#1 \mid
\begin{array}[t]{@{}l@{}}#2 \}\end{array}}
\begin{document}
\[
S_1 \cap (S_2 \cup S_3)
=
\setst{x}{ x \in S_1 \land {} \\
(x \in S_2 \lor x \in S_3) }
\]
\[
S_1 \cap (S_2 \cup S_3)
=
\setst{x}{ x \in \mathbb{R} }
\]
\end{document}