我尝试使用“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}
如果您没有包裹,很抱歉给您带来不便中转站定义一个文档类特克萨特用于排版中文。你可以用 替换documentclass
,article
警告仍然存在。
答案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
)。