据说在数学环境中有多个标签

据说在数学环境中有多个标签

我基本上有以下 LaTeX 代码,它应该显示一个编号的方程和对该方程的引用:

\[ i^2 = j^2 = k^2 = -1 \]
\begin{equation} \label{eq:ijk}
  ijk = -1.
\end{equation}
Now you take \autoref{eq:ijk} and...

问题是,当使用 XeTeX 构建文件时,我收到一条错误消息,例如

! Package amsmath Error: Multiple \label's: label 'eq:ijk' will be lost.

See the amsmath package documentation for explanation.

关于如何解决此错误或如何在 tex.sx 上发布有关此问题的有用信息,有任何建议吗?

这是一个简单的例子:

\documentclass{scrreprt}
\usepackage{mathtools}
\usepackage[hidelinks]{hyperref}
\usepackage[printonlyused]{acronym}

\renewcommand{\theequation}{\ac{Gl.}~\arabic{chapter}.\arabic{equation}}

\begin{document}

\begin{equation}
  \label{eq:ijk}
  ijk = -1.
\end{equation}
Now you take \autoref{eq:ijk} and make something like\ldots

\end{document}

答案1

由于您正在使用该amsmath包(间接地,因为您正在加载该mathtools包),因此您不应该\theequation直接操作。相反,您应该修改更高级别的宏\tagform@。我真的不会在里面插入一个首字母缩略词生成宏\tagform@。你认为你的读者、你的论文委员会成员或任何其他人会不确定“Gl。”可能是什么意思吗?另外,我建议您考虑加载该cleveref包,部分原因是它具有很好的语言本地化,包括德语。额外的好处是\cref会自动用括号括住方程式编号,这就是这种情况\autoref

在此处输入图片描述

\documentclass[ngerman]{scrreprt}
\usepackage{mathtools}
\usepackage[hidelinks]{hyperref}
\usepackage[printonlyused]{acronym}
\usepackage[noabbrev]{cleveref}

%%\renewcommand{\theequation}{\ac{Gl.}~\arabic{chapter}.\arabic{equation}}
\makeatletter
\def\tagform@#1{\maketag@@@{(\ignorespaces Gl.~#1\unskip\@@italiccorr)}}
\makeatother

\begin{document}
\setcounter{chapter}{1}  % just for this example

\begin{equation}
  \label{eq:ijk}
  ijk = -1.
\end{equation}
Now you take \cref{eq:ijk} and make something like\ldots

\end{document}

相关内容