我重新命令了附录中表格和图片的编号。但是当我在正文中使用 ref 命令时,它不会跳转到附录中的正确图片。例如,我的平均部分中有图 1,附录中有图 A.Abb.1,我想在平均部分中使用 \ref{test123},它会跳转到平均部分的图 1,而不是附录中的图 A.Abb.1。我该如何修复它?
\documentclass[a4paper, 12pt]{article}
\usepackage{hyperref}
\usepackage{amsmath,amssymb,slashbox,graphicx}
\usepackage{float}
\begin{document}
\begin{figure}[h]
\includegraphics[width=1\textwidth,height=180px]{test1234}
\caption{test1234}\label{test1234}
\end{figure}
blabla \ref{test1234}
blabla \ref{test123}
\section*{Appendix}
\setcounter{table}{0}
\renewcommand{\thetable}{A.Tab.\arabic{table}}
\setcounter{figure}{0}
\renewcommand{\thefigure}{A.Abb.\arabic{figure}}
\setcounter{figure}{0}
\begin{figure}[H]
\includegraphics[width=1.0\textwidth]{test}
\caption{test}\label{test123}
\end{figure}
\end{document}
答案1
这超链接包会自动为超链接的锚点创建名称。为了创建这些名称,它为每个 ⟨counter⟩ 定义了一个宏\theH⟨counter⟩
。
当将 ⟨counter⟩ 重置为 0 或任何先前的值时,除非您还调整以下内容,否则不再能确保锚点名称的唯一性\theH⟨counter⟩
:
\documentclass[a4paper, 12pt]{article}
\usepackage{hyperref}
\usepackage{amsmath,amssymb,slashbox,graphicx}
\usepackage{float}
\begin{document}
\begin{figure}[h]
\includegraphics[width=1\textwidth,height=180px]{example-image-a}
\caption{test1234}\label{test1234}
\end{figure}
blabla \ref{test1234}
blabla \ref{test123}
\section*{Appendix}
\renewcommand{\thetable}{A.Tab.\arabic{table}}
\renewcommand{\thefigure}{A.Abb.\arabic{figure}}
\renewcommand{\theHtable}{A.Tab.\arabic{table}}%<---!!!!---
\renewcommand{\theHfigure}{A.Abb.\arabic{figure}}%<---!!!!---
\setcounter{table}{0}
\setcounter{figure}{0}
\begin{figure}[H]
\includegraphics[width=1.0\textwidth]{example-image-b}
\caption{test}\label{test123}
\end{figure}
\end{document}
经过这种调整,超链接可以引导至正确的位置。
但是我在评论中提到的问题,即pdfTeX warning (ext4): destination with the same identifier (name{...}) has been already used, duplicate ignored.
.log 文件中的问题仍未解决。该警告仅在以下情况下出现:漂浮包已加载。我猜想这是该包中的一个错误,与它的使用方式有关\AtBeginShipoutBox
。