答案1
答案2
答案3
您可以使用alignat
,但如果我们不必计算必要的数量&
并让 TeX 来做的话会更方便。
主要的左侧作为环境的参数给出,其余部分在环境中,各行用 分隔\\
。
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentEnvironment{staircase}{mb}
{
\procyonic_staircase:nnn { } { #1 } { #2 }
}
{}
\NewDocumentEnvironment{staircase*}{mb}
{
\procyonic_staircase:nnn { * } { #1 } { #2 }
}
{}
\cs_new_protected:Nn \procyonic_staircase:nnn
{
\seq_set_split:Nnn \l__procyonic_staircase_seq { \\ } { #3 }
\begin{alignat#1}{ \int_eval:n { \seq_count:N \l__procyonic_staircase_seq + 1 } }
#2 ={} &
\seq_map_indexed_function:NN \l__procyonic_staircase_seq \__procyonic_staircase:nn
\end{alignat#1}
}
\seq_new:N \l__procyonic_staircase_seq
\cs_new_protected:Nn \__procyonic_staircase:nn
{
\prg_replicate:nn { #1*2 } { & }
\int_compare:nF { #1 = 1 } { \negthickspace = }
#2
\int_compare:nF { #1 = \seq_count:N \l__procyonic_staircase_seq } { \\ }
}
\ExplSyntaxOff
\begin{document}
\begin{staircase}{a}
b \\ c \\ d
\end{staircase}
\begin{staircase*}{a}
b \\ c \\ d
\end{staircase*}
\end{document}