cleveref 引用当前和外部文档中的图表

cleveref 引用当前和外部文档中的图表

设置如下:在 doc2.tex 中,我有:

\documentclass{article}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage{cleveref}

\begin{document}

\begin{figure}
\caption{figure there}
\label{fig:there}

\end{figure}
\end{document}

在 doc1.tex 中我有:

\documentclass{article}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage{cleveref}

\externaldocument[otherdoc-]{doc2}

\begin{document}


\cref{fig:here,otherdoc-fig:there} \cref{fig:here} \cref{otherdoc-fig:there}

\newpage

\begin{figure}

\caption{figure doc1}
\label{fig:here}

\end{figure}
\end{document}

但是,该命令\cref{fig:here,otherdoc-fig:there}并没有像我期望的那样引用这两个数字。我得到的输出如下:

fig. 1 fig. 1 fig. 1

但我期望:

figs. 1 and 1 fig. 1 fig. 1

如果您知道如何纠正此问题,或者为什么cref会出现此问题,请告诉我。谢谢!

答案1

如果您愿意使用zrefzref-clever,后者会注意不要压缩来自不同文档的标签,即使它们具有相同的打印表示。但实际上,在这样的框架中组合来自不同文档的引用时,您必须小心谨慎,因为它可能会让读者感到困惑。

doc1.tex:

\documentclass{article}
\usepackage{zref-clever}
\usepackage{zref-xr}
\usepackage{hyperref}

\zexternaldocument[otherdoc-]{doc2}

\begin{document}

\zcref{fig:here,otherdoc-fig:there}

\zcref{fig:here}

\zcref{otherdoc-fig:there}

\newpage

\begin{figure}

\caption{figure doc1}
\zlabel{fig:here}
\end{figure}

\end{document}

doc2.tex:

\documentclass{article}
\usepackage{zref-clever}
\usepackage{zref-xr}
\usepackage{hyperref}

\begin{document}

\begin{figure}
\caption{figure there}
\zlabel{fig:there}
\end{figure}

\end{document}

结果:

在此处输入图片描述

答案2

我发现避免该问题的一种方法是在 doc2.tex 的序言中添加以下行:

\renewcommand{\thefigure}{S\arabic{figure}}

然后我得到输出:

figs. S1 and 1 fig. 1 fig. S1

因此,当 cleveref 看到具有相同标签的图形时,它会认为这是相同的图形,尽管它来自不同的文档。

这不是一个理想的解决方案,但总比没有好。也许是 cleveref 的一个 bug?

相关内容