修改后的问题

修改后的问题

有没有办法让一段文本的延续与多行环境的最后一行对齐,例如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)其中Qmay 本身包含一个 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} 

相关内容