自动对标记方程进行编号

自动对标记方程进行编号

由于autonum无法很好地配合cleveref(自动编号选项也不mathtools适合我),我正在寻找一个更简单的解决方案。如果方程式中有标签,我希望方程式会自动编号,否则则不会。我该如何实现这一点?

在此处输入链接描述看看autonum和的问题是什么cleveref

\documentclass{amsart}


\usepackage{cleveref}


\begin{document}

\begin{multline} \label{eq:one} % must have a number
 z=a+b+c+d+e+f+g\\
 + h+i+j+k+\ell+m+n+o+p+q+r+s+t+u+v+w+x+y.
 \end{multline}







 \begin{multline} % must not have a number
 z=a+b+c+d+e+f+g\\
 + h+i+j+k+\ell+m+n+o+p+q+r+s+t+u+v+w+x+y.
 \end{multline}




\begin{gather} \label{eq:two} % must have a number
 x=y 
\end{gather}

\begin{gather} % must not have a number
 x=y
 \end{gather}
 \end{document}

答案1

您误解了 的用途autonum。确定方程式是否编号的不是它是否有\label{},而是它是否在任何一点被引用,换句话说 - 文档是否包含\ref{}引用该方程式的 。如果加载 ,则还支持
该命令。\cref{}cleveref

例如:

\documentclass{article}
\usepackage{amsmath,cleveref,autonum}
\begin{document}
\begin{multline}\label{eq:a}
 z=a+b+c+d+e+f+g\\
 + h+i+j+k+\ell+m+n+o+p+q+r+s+t+u+v+w+x+y.
\end{multline}
\begin{multline}\label{eq:b}
 z=a+b+c+d+e+f+g\\
 + h+i+j+k+\ell+m+n+o+p+q+r+s+t+u+v+w+x+y.
\end{multline}
\begin{gather}\label{eq:c}
 x=y
\end{gather}
\begin{gather}\label{eq:d}
 x=y
\end{gather}
We reference the first \verb|multline| environment, but not the second,
  and the second \verb|gather| environment, but not the first.
Hence. only \cref{eq:a} and \cref{eq:d} will be numbered,
  even though all equations are labelled.
\end{document}

仅引用方程式编号

如果您不想对方程式进行编号,并且知道自己永远不会引用它,那么您可以尽快使用带星号的环境形式。该autonum包专门用于避免根据是否引用方程式而更改方程式本身。如果它依赖于添加或删除\label{},则该包将失去意义,因为添加或删除星号至少同样容易,而且可以说更容易。

相关内容