设置如下:在 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
如果您愿意使用zref
和zref-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?