在里面官方文件,alignat
后面跟着“右列和左列”对的总数。
alignat
这是文档中的一个示例。
\begin{alignat}{2}
x& = y_1-y_2+y_3-y_5+y_8-\dots
&\quad& \text{by \eqref{eq:C}}\\
& = y’\circ y^* && \text{by \eqref{eq:D}}\\
& = y(0) y’ && \text {by Axiom 1.}
\end{alignat}
后面的数字设置大一点有问题吗alignat
?例如:
\begin{alignat}{999}
x& = y_1-y_2+y_3-y_5+y_8-\dots
&\quad& \text{by \eqref{eq:C}}\\
& = y’\circ y^* && \text{by \eqref{eq:D}}\\
& = y(0) y’ && \text {by Axiom 1.}
\end{alignat}
如果我以后添加更多列,这样做可以减少修改数字的努力。
更新
我认为 KaTex 也是用 Tex 实现的,所以我提供了一张关于 KaTex 的图片。但我真正关心的是 Tex 中的实现。
答案1
alignat
(像大多数 ams 对齐一样)构建一个\halign
对应于左右对齐的列对的模板,类似于\begin{array}{rl rl rl ...}
因此,如果您使用999
而不是1
标记列表,则构建时间将延长 1000 倍。构建此列表的循环将花费更长的时间,并且列表将占用更多内存。
如果代码是在 1990 年左右编写的,那么运行时间会更长,而且可能由于缺少令牌内存而失败。如今,它效率低下,但在实践中可能并不明显。
文档中没有过度宣传,但您可以使用 -1。这避免了构建列表并使用了原始功能,这\halign
意味着可以根据需要将前导标记为重复。
请注意,所有这些考虑仅针对alignat
用 TeX 编写的 amsmath 版本。在评论中,您表示您也对 katex 版本感兴趣。该版本是用 JavaScript 实现的,因此实现会有所不同,并且 JavaScript 运行时的内存模型与 tex 的内存模型完全不同。我不知道 katex 如何实现这个参数,JavaScript 特定问题在这里不属于主题。