自定义图片计数器:链接跳转到错误的图片

自定义图片计数器:链接跳转到错误的图片

由于外部软件生成的图形没有标签,类似于示例中的图形,因此我无法引用它们。但是,我需要在我的文本中使用例如来引用它们\ref{fig:1}。ChatGPT 为我提出了一个如下所示的解决方案,它将自动从标签中的单独计数器中添加一个带有递增数字的标签,并跨我的图形编号所在的部分进行计数。因此,链接可以正常工作并显示正确的图号,但是单击它们时,您将始终在第一部分中找到具有正确编号的图(例如,单击图 2.2 将转到 1.2,单击 2.1 将转到 1.1)。

我认为我的计数器出了问题。非常乐意提供任何建议。MWE 如下:

\documentclass{article}


\usepackage[english]{babel}
\usepackage[letterpaper,
            top=2cm,
            bottom=2cm,
            left=3cm,
            right=3cm,
            marginparwidth=1.75cm
            ]{geometry}
\usepackage{amsmath}
\numberwithin{figure}{section}

\newcounter{figcounter}
\let\oldfigure\figure
\let\oldendfigure\endfigure
\renewenvironment{figure}{
    \oldfigure
    \stepcounter{figcounter}
}{
    \label{fig:\thefigcounter}
    \oldendfigure
}


\usepackage[colorlinks=true, allcolors=blue]{hyperref}

\title{Your Paper}
\author{You}
\begin{document}
\maketitle

\section{Introduction}

Link to Figure \ref{fig:1}\\
Link to Figure \ref{fig:2}\\
Link to Figure \ref{fig:3}\\
Link to Figure \ref{fig:4}

\begin{figure}
    \centering
    first figure in section 1
    \caption{Caption}
\end{figure}

\begin{figure}
    \centering
    second figure but still section 1
    \caption{Caption}
\end{figure}

\clearpage
\section{Another Section}

\begin{figure}
    \centering
    second section's first figure
    \caption{Caption}
\end{figure}

\begin{figure}
    \centering
    second section's second figure
    \caption{Caption}
\end{figure}

\clearpage
\listoffigures

\end{document}

答案1

您需要重新定义 \theHfigure 以使链接目标唯一。我还会按部分对标签进行编号,这样可以更轻松地跟踪正确的数字:

\documentclass{article}


\usepackage[english]{babel}
\usepackage[letterpaper,
            top=2cm,
            bottom=2cm,
            left=3cm,
            right=3cm,
            marginparwidth=1.75cm
            ]{geometry}
\usepackage{amsmath}
\numberwithin{figure}{section}

\usepackage[colorlinks=true, allcolors=blue]{hyperref}

\renewcommand\theHfigure{\arabic{section}.\arabic{figure}}
\AddToHook{env/figure/end}{\label{fig:\theHfigure}}


\title{Your Paper}
\author{You}
\begin{document}
\maketitle

\section{Introduction}

Link to Figure \ref{fig:1.1}\\
Link to Figure \ref{fig:1.2}\\
Link to Figure \ref{fig:2.1}\\
Link to Figure \ref{fig:2.2}

\begin{figure}
    \centering
    first figure in section 1
    \caption{Caption}
\end{figure}

\begin{figure}
    \centering
    second figure but still section 1
    \caption{Caption}
\end{figure}

\clearpage
\section{Another Section}

\begin{figure}
    \centering
    second section's first figure
    \caption{Caption}
\end{figure}

\begin{figure}
    \centering
    second section's second figure
    \caption{Caption}
\end{figure}

\clearpage
\listoffigures

\end{document}

相关内容