如何创建具有对齐元素的集合?示例:
我尝试使用对齐,但它没有像示例中那样对齐。
\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
环境所插入的额外空间,因此您需要在对齐点之间插入所需的空间。 - 双重
&&
确保后续列也左对齐。
参考:
- 简要讨论了
align
和之间的区别alignat
之间根据第一个字符而不是最后一个字符对齐环境。 - 讨论alignedat 的强制参数是什么?也适用于 for 的强制参数
alignat
。 - 为什么这么叫 \mid ?
代码:
\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}