带有自定义附录的“具有相同标识符的目的地”错误

带有自定义附录的“具有相同标识符的目的地”错误

我正在使用稍微修改过的版本答案由@StevenBSegletes 提供实现自定义附录结构。

(免责声明:我在这里省略了自己的修改,以使示例更加简洁,因为即使是 Steven 的原始代码也会出现这个问题。如果您认为我需要展示我的完整设置,我会非常乐意这样做。)

当您运行下面的 MWE 时,页码、公式编号等的所有标签都正常工作。但在后台,eq1以及eq2附录中,日志文件中会发出如下警告:

{C:/Users/user/AppData/Local/MiKTeX/2.9/pdftex/config/pdftex.map}]pdfTeX warnin
g (ext4): destination with the same identifier (name{equation.0.2.1}) has been 
already used, duplicate ignored
<to be read again> 
                   \relax 
l.56 \begin{equation}
                     \label{eq1}pdfTeX warning (ext4): destination with the sam
e identifier (name{equation.0.2.1}) has been already used, duplicate ignored
<to be read again> 
                   \relax 

单击附录 B(参见 MWE)中的超链接会将我带到正文中的“第一个”等式,而不是附录 A 和 B 中的相应等式。大概是因为上述警告。

我该如何修复 Steven 的代码,以便我的引用能够按预期工作?我在实际文档中使用了cleverefhypcap和。bookmarkhyperref

平均能量损失

\documentclass[12pt]{scrreprt}
\usepackage{hyperref}
\usepackage{cleveref}

% code taken from: https://tex.stackexchange.com/a/132988
\makeatletter
\renewcommand\appendix{\@ifstar{\loneappendix}{\anappendix}}
\newcounter{appndx}
\setcounter{appndx}{0}
\newcommand \loneappendix [1]{
  \clearpage
  \setcounter{appndx}{1}
  \setcounter{figure}{0}
  \renewcommand\thefigure{\Alph{appndx}-\@arabic\c@figure}
  \setcounter{table}{0}
  \renewcommand\thetable{\Alph{appndx}-\arabic{table}}
  \setcounter{equation}{0}
  \renewcommand\theequation {\Alph{appndx}-\arabic{equation}}
  \def\appendixtitle{\appendixname. #1}
  \addcontentsline{toc}{section}\appendixtitle
  \theappendix\appendixtitle
  \setcounter{page}{1}
  \renewcommand\thepage{\Alph{appndx}.\arabic{page}}
}
\newcommand \anappendix[1]{
  \clearpage
  \refstepcounter{appndx}
  \setcounter{equation}{0}
  \setcounter{figure}{0}
  \renewcommand\thefigure{\Alph{appndx}-\@arabic\c@figure}
  \setcounter{table}{0}
  \renewcommand\thetable{\Alph{appndx}-\arabic{table}}
  \renewcommand\theequation {\Alph{appndx}-\arabic{equation}}
  \def\appendixtitle{\appendixname~\Alph{appndx}. #1}
  \addcontentsline{toc}{section}\appendixtitle
  \theappendix\appendixtitle
  \setcounter{page}{1}
  \renewcommand\thepage{\Alph{appndx}.\arabic{page}}
}
\newcommand\theappendix[1]{
  \section*{#1}
}
\makeatother

\begin{document}
\section{First section}
Hello world
\section{Second Section}
Hello world, this is the offending equation.
\begin{equation}
 y =x^2 
\end{equation}

\appendix{First}
I will want to reference this equation later.
\begin{equation}\label{eq1}
 y =x^2 
\end{equation}

\appendix{Second}
\begin{equation}\label{eq2}
y =x^2 
\end{equation}

I want to reference first equation from appendix A: \cref{eq1}.

I also want to reference the first equation from appendix B: \cref{eq2}

But both bring me back to the ``first'' first equation (in the main text).
\end{document}

编辑:

我认为,如果我为附录引入新的自定义计数器而不是重新使用 等计数器,就可以解决这个问题equationfigure这样就不会与主文本超标签发生冲突。但我该如何实现这个想法,尤其是使用\refstepcounter

相关内容