hyperref 指向错误的图形/表格并重置计数器

hyperref 指向错误的图形/表格并重置计数器

我尝试引用正文中的表格(和图片),修改并重置编号,如 MWE 所示,正文中的编号是正确的,但hyperref指向错误的表格。如何在重置计数器的情况下获得对表格和图片的正确超级引用?

平均能量损失

\documentclass{elsarticle}
\usepackage{lineno,hyperref}

\begin{document}

Table \ref{tb1} in main text. Table \ref{sm_tb1} in Supplementary Material.

\begin{table}
\caption{Main text table}\label{tb1}
\begin{tabular}{ |c|c|c| } 
 \hline
 cell1 & cell2 & cell3 \\ 
 cell4 & cell5 & cell6 \\ 
 cell7 & cell8 & cell9 \\ 
 \hline
\end{tabular}

\end{table}

%--------------------------------
% Supplementary Material
%--------------------------------
\pagebreak
\section*{Supplementary Material}
\pagebreak
\pagebreak


\setcounter{table}{0}
\setcounter{figure}{0}
\renewcommand{\thetable}{S\arabic{table}}
\renewcommand\thefigure{S\arabic{figure}}


\begin{table}
\caption{Supplemental table}\label{sm_tb1}
\begin{tabular}{||c c c c||} 
\hline
Col1 & Col2 & Col2 & Col3 \\ [0.5ex] 
\hline\hline
1 & 6 & 87837 & 787 \\ 
\hline
2 & 7 & 78 & 5415 \\
\hline
3 & 545 & 778 & 7507 \\
\hline
4 & 545 & 18744 & 7560 \\
\hline
5 & 88 & 788 & 6344 \\ [1ex] 
\hline
\end{tabular}
\end{table}

\end{document}

答案1

重置table或任何计数器(尤其是在未编号部分中的计数器)必定会造成混淆hyperref,因为此包通过应用命令从部分等计数器值创建“唯一”标签名称\theHtable。现在,由于表计数器具有1两次值,并且没有其他唯一值(如部分计数器值)可用,因此将创建相同的锚点。

\theHtable为补充提供一个新的实现就足够了,创建一个新的锚点名称,例如,Supplement.

\renewcommand{\theHtable}{Supplement.\thetable}

和类似的形式\theHfigure(见下面的代码)

\documentclass{elsarticle}
\usepackage{lineno}
\usepackage{hyperref}

\begin{document}

Table \ref{tb1} in main text. Table \ref{sm_tb1} in Supplementary Material.

\begin{table}
\caption{Main text table}\label{tb1}
\begin{tabular}{ |c|c|c| } 
 \hline
 cell1 & cell2 & cell3 \\ 
 cell4 & cell5 & cell6 \\ 
 cell7 & cell8 & cell9 \\ 
 \hline
\end{tabular}

\end{table}

%--------------------------------
% Supplementary Material
%--------------------------------
\clearpage
\section*{Supplementary Material}
\clearpage

\setcounter{table}{0}
\setcounter{figure}{0}
\renewcommand{\thetable}{S\arabic{table}}
\renewcommand\thefigure{S\arabic{figure}}
\renewcommand{\theHtable}{Supplement.\thetable}
\renewcommand{\theHfigure}{Supplement.\thefigure}


\begin{table}
\caption{Supplemental table}\label{sm_tb1}
\begin{tabular}{||c c c c||} 
\hline
Col1 & Col2 & Col2 & Col3 \\ [0.5ex] 
\hline\hline
1 & 6 & 87837 & 787 \\ 
\hline
2 & 7 & 78 & 5415 \\
\hline
3 & 545 & 778 & 7507 \\
\hline
4 & 545 & 18744 & 7560 \\
\hline
5 & 88 & 788 & 6344 \\ [1ex] 
\hline
\end{tabular}
\end{table}

\end{document}

相关内容