如何默认关闭方程标签?

如何默认关闭方程标签?

我正在编写一个文档,其中很少有方程式需要标签。因此,我更愿意将带星号的环境与不带星号的环境交换,而不是使用带星号的环境。我不介意我需要指定每个要执行此操作的环境,这样我的 preable 中就会有类似以下内容:

\makeatletter
%some TEX-fu magic that defines \exchangest@renv goes here
\exchangest@renv{equation}
\exchangest@renv{align}
\exchangest@renv{gather}
\exchangest@renv{alignat} %this might be a hard one as it takes an agument!
\makeatother

然后使用时\begin{equation}我会得到无星号版本,而带星号版本\begin{equation*}会有一个标签。


PS. 不确定我应该为此使用什么标签....

答案1

\documentclass{article}

\usepackage{amsmath}
\makeatletter
\def\newIF{%
  \count@\escapechar \escapechar\m@ne
    \let\ifst@rred\iffalse
    \def\st@rredtrue{\let\ifst@rred\iffalse}
    \def\st@rredfalse{\let\ifst@rred\iftrue}
  \escapechar\count@}
\def\ChangeStar{\newIF
 \renewenvironment{equation}{%
  \incr@eqnum
  \mathdisplay@push
  \st@rredfalse \global\@eqnswfalse
  \mathdisplay{equation}%
 }{%
  \endmathdisplay{equation}%
  \mathdisplay@pop
  \ignorespacesafterend
 }
 \renewenvironment{equation*}{%
  \mathdisplay@push
  \st@rredtrue \global\@eqnswtrue
  \mathdisplay{equation*}%
 }{%
  \endmathdisplay{equation*}%
  \mathdisplay@pop
  \ignorespacesafterend
 }}
\def\OldStar{\newif\ifst@rred
  \renewenvironment{equation}{%
  \incr@eqnum
  \mathdisplay@push
  \st@rredfalse \global\@eqnswtrue
  \mathdisplay{equation}%
}{%
  \endmathdisplay{equation}%
  \mathdisplay@pop
  \ignorespacesafterend
}
\renewenvironment{equation*}{%
  \mathdisplay@push
  \st@rredtrue \global\@eqnswfalse
  \mathdisplay{equation*}%
}{%
  \endmathdisplay{equation*}%
  \mathdisplay@pop
  \ignorespacesafterend
}}
\makeatother


\ChangeStar
\begin{document}

\begin{equation}
 y=x
\end{equation}

\begin{equation*}
 y=x
\end{equation*}

\begin{align}
 y=x
\end{align}

\begin{align*}
 y=x
\end{align*}

\OldStar

\begin{align}
 y=x
\end{align}


\begin{align*}
 y=x
\end{align*}

\end{document} 

答案2

正如 Hendrik 在评论中所建议的,您可以使用mathtoolswith\mathtoolsset{showonlyrefs}来标记您实际引用的方程式。对于您想要编号但不想引用的其他方程式,您可以使用\noeqref。例如,

\documentclass{article}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
\begin{document}
\begin{equation}\label{eq:asdf}
adsf
\end{equation}
\noeqref{eq:asdf}
\end{document}

这需要最少的额外工作,但请确保您mathtools仔细阅读文档以确保您了解与之的交互amsmath

相关内容