我正在编写一个文档,其中很少有方程式需要标签。因此,我更愿意将带星号的环境与不带星号的环境交换,而不是使用带星号的环境。我不介意我需要指定每个要执行此操作的环境,这样我的 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 在评论中所建议的,您可以使用mathtools
with\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
。