重复标识符、子图和超引用

重复标识符、子图和超引用

为什么 LaTeX 会抱怨destination with the same identifier (name{subfigure.1.2}) has been already used, duplicate ignored这个:

\documentclass{article}

\usepackage{tikz}
\usepackage{subfig}
\usepackage{hyperref}

\begin{document}

\begin{figure}
\subfloat { tikz draw (0cm,0cm) circle(1cm); }
\subfloat { tikz draw (0cm,0cm) circle(1cm); }
\end{figure}

\begin{figure}
\subfloat { tikz draw (0cm,0cm) circle(1cm); }
\subfloat { tikz draw (0cm,0cm) circle(1cm); }
\end{figure}

\end{document}

代码运行正常,并按预期生成了四个圆圈。如果我删除,错误消息就会消失hyperref。无论如何,我想知道这里发生了什么。

答案1

使用时subfig即使包是空的,您也需要一个caption。例如,以下代码运行时不会出现警告:

% arara: pdflatex
\documentclass{article}

\usepackage{subfig}
\usepackage{hyperref}

\begin{document}

\begin{figure}
\subfloat { tikz draw (0cm,0cm) circle(1cm); }
\subfloat { tikz draw (0cm,0cm) circle(1cm); }
\caption{}
\end{figure}

\begin{figure}
\subfloat { tikz draw (0cm,0cm) circle(1cm); }
\subfloat { tikz draw (0cm,0cm) circle(1cm); }
\caption{}
\end{figure}

\end{document}

正如评论中提到的subcaption不受此影响 - 我个人更喜欢这个包,这里有一个完整的 MWE 来演示它

% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}

\usepackage{subcaption}
\usepackage{hyperref}

\begin{document}

\begin{figure}
    \begin{subfigure}{.5\textwidth}
        tikz draw (0cm,0cm) circle(1cm); 
    \end{subfigure}%
    \begin{subfigure}{.5\textwidth}
        tikz draw (0cm,0cm) circle(1cm); 
    \end{subfigure}%
\end{figure}

\begin{figure}
    \begin{subfigure}{.5\textwidth}
        tikz draw (0cm,0cm) circle(1cm); 
    \end{subfigure}%
    \begin{subfigure}{.5\textwidth}
        tikz draw (0cm,0cm) circle(1cm); 
    \end{subfigure}%
\end{figure}

\end{document}

相关内容