我想使用\cref
、外部文档和超链接。获取以下文件,对其进行标记main1.tex
并编译:
\documentclass{article}
\usepackage[capitalise,noabbrev]{cleveref}
\crefname{equation}{}{}
\begin{document}
\section{MyTitle}\label{sec:mytitle}
\begin{equation}
A = b\label{eq:ab}
\end{equation}
\end{document}
现在,获取另一个引用它的文件:
\documentclass{article}
\usepackage{xr-hyper}
%\usepackage{hyperref} %Want to turn this on!!!!!
\usepackage[capitalise,noabbrev]{cleveref}
\externaldocument[main:]{main1} %If you comment this off, can turn on the hyperref
\begin{document}
\section{My section}\label{sec:mysection}
\begin{equation}
B = C\label{eq:bc}
\end{equation}
local ref: \cref{sec:mysection}, external ref: \cref{main:sec:mytitle}\\
local eq ref: \cref{eq:bc}, external ref: \cref{main:eq:ab}\\
\end{document}
如果您编译上述代码,它将正常工作并生成对本地和外部文件的正确引用。但是,如果您打开hyperref
,它不会编译。相反。如果您注释掉\externaldocument
并打开hyperref
,它就可以正常工作(当然,它找不到删除引用)。
问题:
我想将所有这些一起使用,以便我可以在我的 PDF 中获取超链接,用于\cref
引用,并加载外部文档。我该如何实现它?还是我遗漏了一些显而易见的东西?
我不需要文档本身之间的超链接,所以如果这是问题的根源并且我可以关闭它,那么就没问题。
答案1
所有这些包都改变了文件中引用的写入方式.aux
。正确的加载顺序是
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage{cleveref}
但主文档和外部文档都需要这个。因此
外部文件main1.tex
:
\documentclass{article}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage[capitalise,noabbrev]{cleveref}
\crefname{equation}{}{}
\begin{document}
\section{MyTitle}\label{sec:mytitle}
\begin{equation}
A = b\label{eq:ab}
\end{equation}
\end{document}
和主要文件
\documentclass{article}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage[capitalise,noabbrev]{cleveref}
\externaldocument[main:]{main1}
\begin{document}
\section{My section}\label{sec:mysection}
\begin{equation}
B = C\label{eq:bc}
\end{equation}
Local ref: \cref{sec:mysection}, external ref: \cref{main:sec:mytitle}
Local eq ref: \cref{eq:bc}, external ref: \cref{main:eq:ab}
\end{document}
将在任何地方提供超链接。