在自定义对齐环境中,增加计数器的好方法是什么?我定义了regalign
下面的环境,但为了让计数器随着每一行增加,我必须定义一个新命令 ( \regline
) 来添加新行并更改计数器。这基本上没问题,但似乎是一个糟糕的选择,因为语法与类似环境不同(使得读取和编写代码变得困难),并且编辑器突出显示会将第一行之后的对齐字符(例如 in &
)标记z &= xy^2
为错误。
\documentclass{article}
\usepackage{amsmath}
% Set the counter for the regression environment
\newcounter{regcounter}
% Define the regression environment
\newenvironment{regalign}{%
\addtocounter{equation}{-1}
\stepcounter{regcounter}
\renewcommand\theequation{Regression \theregcounter}
\align
}{
\endalign
}
% Define a command for new lines that advances the counter
\newcommand{\regline}{\\[1em] \stepcounter{regcounter}}
\begin{document}
\begin{regalign}
x & = y \regline
z &= xy^2
\end{regalign}
\end{document}
答案1
我建议采用类似于amsmath
的方法subequations
:使用计数器存储的当前值equation
,然后重新定义它以使用所需的格式。
\documentclass{article}
\usepackage{amsmath}
\newcounter{tempcounter}
% Define the regression environment
\newcounter{regcounter}
\newenvironment{regalign}
{%
\setcounter{tempcounter}{\value{equation}}%
\setcounter{equation}{\value{regcounter}}%
\def\theequation{Regression \arabic{equation}}%
\align
}
{%
\endalign
\setcounter{equation}{\value{tempcounter}}%
\setcounter{regcounter}{\value{equation}}%
\stepcounter{regcounter}
}
\begin{document}
\begin{equation}
1=1
\end{equation}
\begin{regalign}
x & = y \\
z &= xy^2
\end{regalign}
\begin{equation}
1=1
\end{equation}
\begin{regalign}
x & = y \\
z &= xy^2
\end{regalign}
\begin{equation}
1=1
\end{equation}
\end{document}
环境equation
是为了表明主方程计数器不受regalign
其间环境的影响。