图表引用的超链接不正确

图表引用的超链接不正确

在我的 LaTeX 文档中,我有一些图表。例如,它们使用它们所在的章节自动编号。图 1.1、图 2.3 等。我正在使用 mwart 文档类。我的问题是,为某些图表创建的超链接(使用\ref\listoffigures)是错误的。例如,如果我单击应该指向图 2.1 的超链接,它会将我引导到图 1.1。2.2 -> 1.2 等也是一样。这里可能是什么问题?仅出于测试目的,我在第 2 章中创建了一些额外的虚拟图表,因此那里的图表比第 1 章中的多。当我单击图 2.7 时,它会将我带到 2.7,因为第 1 章中数字最高的图表只有 1.6……我真的非常感谢这里的所有帮助。请让我知道解决此问题需要哪些其他信息,我会提供它们。

这是显示该问题的测试文档:

%% Clear sans, courier

% Klasa:
\documentclass[12pt]{mwart}

% Kodowanie:
\usepackage[utf8]{inputenc}

% Czcionki:
\usepackage[sfdefault]{ClearSans} %% option 'sfdefault' activates Clear Sans as the default text font
\usepackage[T1]{fontenc}
\usepackage{courier}
\usepackage[T1]{polski}

% Geometria i style
%\usepackage{showframe} % debug
\usepackage{geometry}
\geometry{a4paper,twoside=true,top=20mm,bottom=30mm,inner=35mm,outer=20mm}
\pagestyle{plain}
\usepackage{float}
\usepackage{afterpage}

% Grafika
\usepackage{graphicx}

% kody
\usepackage{listings}

% matma
\usepackage{amssymb,amsmath}

% theoremy
\usepackage{amsthm}

% Numerowanie obiektow wedlug rozdzialow
\usepackage{chngcntr}
\counterwithin{figure}{section}
\numberwithin{equation}{section}

% Linki
\usepackage{url}

% Listy
\usepackage[ampersand]{easylist}
\ListProperties(Hide=100, Hang=true, Progressive=3ex, Style*=-- ,
Style2*=$\bullet$ ,Style3*=$\circ$ ,Style4*=\tiny$\blacksquare$ )

% Zmienne srodowiskowe:
\newcommand{\insertImg}[3]{
\begin{figure}[h]
    \centering
    \includegraphics[height=50mm]{#1}
    \caption{#2} \flushleft{Źródło: Na podstawie \cite{#3}}
    \label{#1}
\end{figure}
}
\newcommand{\insertImgSetSize}[4]{
\begin{figure}[h]
    \centering
    \includegraphics[height=#2mm]{#1}
    \caption{#3} \flushleft{Źródło: Na podstawie \cite{#4}}
    \label{#1}
\end{figure}
}

% Indeksowanie w pdfie wyjsciowym
\usepackage{hyperref}

% START:
\begin{document}
\thispagestyle{empty} % usun nr strony ze strony tytulowej

\section{test 1}

\insertImg{cat1.png}
    {caption 1}
    {nothing}

\section{test 2}

\insertImg{cat2.png}
    {caption 2}
    {nothing}

link should lead to 2.1 but will lead to 1.1 \ref{cat2.png}.


\afterpage{\null \thispagestyle{empty} \newpage}
\clearpage

\end{document}

链接到输出 pdf 因为我无法在此处添加附件:https://dl.dropboxusercontent.com/u/14154631/test.pdf

答案1

其内部结构\theH<counter>已由 Christian Hupfer 的回答。答案还显示了如何以一般方式修复它。

在这种情况下,还有另一种方法。 hyperrefrefines \@addtoreset,它由\counterwithin\numberwithin用来支持\theH<counter>。但是,如果使用这些命令 hyperref加载后,支撑来得太晚。因此,一个简单的解决方法是移动\counterwithin\numberwithin之后hyperref

\usepackage{hyperref}
\counterwithin{figure}{section}
\numberwithin{equation}{section}

答案2

常见的错误:section重置图形计数器,在这种情况下figure\theHfigure会产生错误的锚点。

使用类似

\renewcommand{\theHfigure}{figure.section.\thesection.\thefigure}

为了解决这个问题,即使用section数字依赖锚点。

此外, .宏%中还缺少一些内容\InsertImg{...}

%% Clear sans, courier

% Klasa:
\documentclass[12pt]{mwart}

% Kodowanie:
\usepackage[utf8]{inputenc}

% Czcionki:
\usepackage[sfdefault]{ClearSans} %% option 'sfdefault' activates Clear Sans as the default text font
\usepackage[T1]{fontenc}
\usepackage{courier}
\usepackage[T1]{polski}

% Geometria i style
%\usepackage{showframe} % debug
\usepackage{geometry}
\geometry{a4paper,twoside=true,top=20mm,bottom=30mm,inner=35mm,outer=20mm}
\pagestyle{plain}
\usepackage{float}
\usepackage{afterpage}

% Grafika
\usepackage{graphicx}

% kody
\usepackage{listings}

% matma
\usepackage{amssymb,amsmath}

% theoremy
\usepackage{amsthm}

% Numerowanie obiektow wedlug rozdzialow
\usepackage{chngcntr}
\counterwithin{figure}{section}
\numberwithin{equation}{section}


% Linki
\usepackage{url}

% Listy
\usepackage[ampersand]{easylist}
\ListProperties(Hide=100, Hang=true, Progressive=3ex, Style*=-- ,
Style2*=$\bullet$ ,Style3*=$\circ$ ,Style4*=\tiny$\blacksquare$ )

% Zmienne srodowiskowe:
\newcommand{\insertImg}[3]{%
\begin{figure}[h]
    \centering
    \includegraphics[height=50mm]{#1}
    \caption{#2} \flushleft{Źródło: Na podstawie \cite{#3}}
    \label{#1}
\end{figure}
}
\newcommand{\insertImgSetSize}[4]{%
\begin{figure}[h]
    \centering
    \includegraphics[height=#2mm]{#1}
    \caption{#3} \flushleft{Źródło: Na podstawie \cite{#4}}
    \label{#1}
\end{figure}
}

% Indeksowanie w pdfie wyjsciowym
\usepackage{hyperref}

\renewcommand{\theHfigure}{figure.section.\thesection.\thefigure}


% START:
\begin{document}
\thispagestyle{empty} % usun nr strony ze strony tytulowej

\section{test 1}

\insertImg{ente1.jpg}
    {caption 1}
    {nothing}

\section{test 2}

\clearpage

\insertImg{ente2.jpg}
{caption 2}
{nothing}

link should lead to 2.1 but will lead to 1.1 \ref{ente2.jpg}.


\afterpage{\null \thispagestyle{empty} \newpage}
\clearpage

\end{document}

相关内容