我正在使用稍微修改过的版本答案由@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 的代码,以便我的引用能够按预期工作?我在实际文档中使用了cleveref
、hypcap
和。bookmark
hyperref
平均能量损失
\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}
编辑:
我认为,如果我为附录引入新的自定义计数器而不是重新使用 等计数器,就可以解决这个问题equation
。figure
这样就不会与主文本超标签发生冲突。但我该如何实现这个想法,尤其是使用\refstepcounter
?