对齐集合中的元素

对齐集合中的元素

如何创建具有对齐元素的集合?示例:

在此处输入图片描述

我尝试使用对齐,但它没有像示例中那样对齐。

\begin{align*}
    &P = \set{ &A &\rightarrow &a | &b | &c | &d | &e,
    \\& &B &\rightarrow &a | &b | &c}
\end{align*}

答案1

您可能只想array为此使用自定义。

代码

\documentclass[varwidth]{standalone}
\usepackage{amsmath,array}
\newcommand*\extraBar{\hspace{\tabcolsep}|\hspace{\tabcolsep}}
\begin{document}
\begin{equation*}
 P =
 \begin{array}[t]{@{} l @{} r@{} >{{}\to}l !{|} l@{}  l@{}}
    \{ & S & aX & bY & \extraBar  c  \\
       & X & bX & bS,                \\
       & Y & bS & cZ,                \\
       & Z & aS & b & \extraBar  c \}
 \end{array}
\end{equation*}
\end{document}

输出

在此处输入图片描述

答案2

对于多个对齐点,我通常只使用环境alignat

在此处输入图片描述

笔记:

  • 环境alignat*=会生成与第一个参数中指定的一样多的rl对,并且不会插入align环境所插入的额外空间,因此您需要在对齐点之间插入所需的空间。
  • 双重&&确保后续列也左对齐。

参考:

代码:

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\begin{alignat*}{4}
    P = \{ && S &\to aX && \mid bY && \mid c  \\
           && X &\to bX && \mid bS,                \\
           && Y &\to bS && \mid cZ,                \\
           && Z &\to aS && \mid b  && \mid c \}
\end{alignat*}
\end{document}

答案3

水平间距似乎非常大。因此我选择了一些值,在我看来,给出了类似的结果。有一些手动工作,但不需要额外的软件包。

\documentclass{article}

\begin{document}

\[
\begin{array}{l@{\kern1pt}l@{\kern4pt|\kern4pt}l@{\kern4pt|\kern4pt}l}
P=\{&S\to{aX}  & bY  & c,\\
& X\to{bX}  & \multicolumn{2}{l}{\kern-\arraycolsep bS, } \\
& Y\to{bS}  & \multicolumn{2}{l}{\kern-\arraycolsep cZ, }\\
& Z\to{aS}  & b   &  c\}
\end{array}
\]

\end{document}

在此处输入图片描述

相关内容