PDF 中指向图表(参考)的超链接指向了错误的图表

PDF 中指向图表(参考)的超链接指向了错误的图表

我有一个包含几个部分的文档,我是 LaTeX 新手,所以我只是使用该类article。我希望图形编号在每个部分重新开始。我在\setcounter{figure}{0}每个部分的开头都这样做了,我认为这与我的问题有某种关联(导致),但我就是想不出解决办法。

问题是,当我单击图形引用中的超链接(比如说第 2 节中的图 1)时,它会将您带回到第一个图形(在本例中是回到第 1 节),即使引用通过名称/标签指定了正确的图形。

我正在使用 XeLaTeX 和multicols环境,因此我已将其包含在我的 MWE 中,但我认为它们与问题无关。我还使用了自定义,\Figure以便图形可以很好地适合列。

以下是 MWE:

\documentclass[10pt, letterpaper]{article} 
\usepackage{geometry} 
\geometry{letterpaper, hmargin=1.5in, vmargin=1in, marginparsep=7pt, marginparwidth=.6in}
\usepackage{multicol}
\usepackage[small,bf,hypcap=false]{caption}
\usepackage{graphicx}
\usepackage[unicode, bookmarks, colorlinks, breaklinks]{hyperref}  
\newenvironment{Figure}
  {\par\medskip\noindent\minipage{\linewidth}}
  {\endminipage\par\medskip}
\begin{document}

\begin{multicols}{2}[\section*{section1}]
(Figure~\ref{fig:fig1}
\begin{Figure}
\centering
\includegraphics[width=\textwidth]{apple.jpg}
\captionof{figure}{caption}
\label{fig:fig1}
\end{Figure}
\end{multicols}

\newpage
\setcounter{figure}{0}
\begin{multicols}{2}[\section*{section2}]
(Figure~\ref{fig:fig2}
\begin{Figure}
\centering
\includegraphics[width=\textwidth]{apple.jpg}
\captionof{figure}{caption}
\label{fig:fig2}
\end{Figure}
\end{multicols}

\end{document}

为了方便您使用,这里有一个编译好的 PDF:http://dl.dropbox.com/u/3730003/mwe6.pdf

为了轻松地查看问题,请转到第二页并单击图中引用的超链接,它将带您返回到第一页。

我一直在尝试使用:

\renewcommand*{\theHfigure}{\arabic{section}.\arabic{figure}} 

在每个部分开始之后,如果我使用section{}而不是section*{}但是使用'section*','section'数字保持为 0 并且\arabic{section},则此方法有效\thesection

注意:我不完全确定发生了什么,但是我从默认包hypcap=false中得到了错误,所以我将其切换为,但它似乎没有改变任何东西。captionhypcap=truefalse

答案1

您当前的方法存在一个问题,那就是超链接被重复了 - 正如您在日志文件中看到的那样,

destination with the same identifier (name{figure.1}) has been already used, duplicate ignored

\setcounter{figure}{0}您可以通过删除并添加来解决这个问题

\makeatletter
     \@addtoreset{figure}{section}
\makeatother

到您的序言 - 这会重置每个部分的图号,并使超链接按您想要的方式工作。此方法适用于 的使用,\section但不适用于\section*... 也许有人知道如何实现 的重置\section*

完整的 MWE 如下

\documentclass{article} 
\usepackage{geometry} 
\usepackage{multicol}
\usepackage[small,bf,hypcap=false]{caption}
\usepackage[demo]{graphicx}
\usepackage{hyperref}  
\newenvironment{Figure}
  {\par\medskip\noindent\minipage{\linewidth}}
  {\endminipage\par\medskip}

\makeatletter
    \@addtoreset{figure}{section}
\makeatother

\begin{document}

\begin{multicols}{2}[\section{section1}]
(Figure~\ref{fig:fig1}
\begin{Figure}
\centering
\includegraphics[width=\textwidth]{apple.jpg}
\captionof{figure}{caption}
\label{fig:fig1}
\end{Figure}
\end{multicols}

\newpage
\begin{multicols}{2}[\section{section2}]
(Figure~\ref{fig:fig2}
\begin{Figure}
\centering
\includegraphics[width=\textwidth]{apple.jpg}
\captionof{figure}{another caption}
\label{fig:fig2}
\end{Figure}
\end{multicols}

\end{document}

答案2

谢谢两个表计数器和超链接隐藏章节编号但继续添加感谢@cmhughes 的回答提供的想法和帮助。我现在正在使用这种组合,效果似乎不错。

我输入了一条新section命令unnumsec,该命令section*在增加section计数器的同时进行复制:

\newcommand{\unnumsec}[1]{\refstepcounter{section}\section*{#1}}

现在来自@cmhughes 的代码将正常工作以重置图形计数器:

\makeatletter
     \@addtoreset{figure}{section}
\makeatother

为了确保超链接正确指向不同部分中具有相同编号的图片,我将其放在\begin{document}

\renewcommand*{\theHfigure}{\arabic{section}.\arabic{figure}}

相关内容