我如何定义一个类似于 alignat 的环境,但像 align 一样自动计算列数?

我如何定义一个类似于 alignat 的环境,但像 align 一样自动计算列数?

我读过几篇解释align和之间的区别的文章,alignat比如这个 TeX SE 答案。 我想创建一个新的环境,它具有以下功能align(可以根据环境的内容创建任意数量的环境,而无需输入参数<number>),但具有“无水平空格”属性alignat

这可能吗?如果可以,我该如何定义这样的环境呢?(比方说altalign

谢谢。

答案1

一个简单的方法是创建一个新的环境,然后将其转发99alignat:(注意,这是重新定义环境的“标准”方法;尽管如此,它对某些对环境名称进行硬编码的特定环境不起作用。幸运的是,它可以与这个一起使用)

\newenvironment{alignatz}{\alignat{99}}{\endalignat}

\catcode`*=11
\newenvironment{alignatz*}{\alignat*{99}}{\endalignat*}
\catcode`*=12

用法:

%! TEX program = pdflatex
\documentclass{article}
\usepackage{amsmath}
\begin{document}


\newenvironment{alignatz}{\alignat{99}}{\endalignat}

\catcode`*=11
\newenvironment{alignatz*}{\alignat*{99}}{\endalignat*}
\catcode`*=12

\begin{alignatz}
    a &= b \quad & c &= d \\
    a &= b & c &= d
\end{alignatz}

\begin{alignatz*}
    a &= b \quad & c &= d \\
    a &= b & c &= d
\end{alignatz*}

\end{document}

相关内容