pdfTeX 警告(ext4):具有相同标识符(name{figure.1})的目标已被使用,重复项被忽略

pdfTeX 警告(ext4):具有相同标识符(name{figure.1})的目标已被使用,重复项被忽略

我尝试使用“ccaption”包制作双语字幕,并使用 pdfLaTeX 进行编译。

它工作正常但有一个警告:

pdfTeX 警告(ext4):具有相同标识符(name{figure.1})的目标已被使用,重复项被忽略。

以下是一个小例子:

\documentclass[UTF8]{ctexart}                 
\usepackage{graphicx}               
\usepackage{ccaption}
\usepackage{hyperref}

\begin{document}
Figure \ref{fig1}
\begin{figure}
\bicaption[fig1]{}{中文标题}{Fig.}{English caption}
\end{figure}
\end{document}

如果您没有包裹,很抱歉给您带来不便中转站定义一个文档类特克萨特用于排版中文。你可以用 替换documentclassarticle警告仍然存在。

答案1

ccaption使用一种基本(且最可行)的方法为同一浮点数生成重复的标题。这里使用的主要函数是\contcaption

\newcommand{\contcaption}{%
  \addtocounter{\@captype}{\m@ne}%
  \refstepcounter{\@captype}%
  \@contcaption\@captype}

它将常规浮点计数器往后退一格,设置一个引用,然后继续调用以设置实际的标题文本。在.aux文件端,这会导致两个交叉引用条目具有相同的超链接锚点名称……hyperref不喜欢。没错,如果没有hyperref,这个问题就不会引人注目。

解决这个问题的方法是使用别名计数器,由aliascnt包裹,并将其用作\contcaption

在此处输入图片描述

\documentclass[UTF8]{ctexart}
\usepackage{aliascnt,ccaption}% http://ctan.org/pkg/{aliascnt,ccaption}
\usepackage{hyperref}% http://ctan.org/pkg/hyperref

\newaliascnt{figurealt}{figure}% New alias counter for figure float
\aliascntresetthe{figurealt}
\makeatletter
\renewcommand{\contcaption}{%
  \expandafter\addtocounter\expandafter{\@captype alt}{\m@ne}% Step alias cntr back
  \expandafter\refstepcounter\expandafter{\@captype alt}% Make reference
  \@contcaption\@captype}
\makeatother
\begin{document}
Figures~\ref{fig1} and~\ref{fig2}.
\begin{figure}
\bicaption[fig1]{}{abc}{Fig.}{English caption}
\end{figure}
\begin{figure}
\bicaption[fig2]{}{xyz}{Fig.}{English caption}
\end{figure}
\end{document}

上述 MWE 提供了figurealt应与 协同工作的别名figure,使用作为第二个(连续)标题的替换参考,而不是传统的浮动计数器。

可以为其他浮点数创建类似的别名(例如table,使用tablealt)。

相关内容