使用 Cleveref 停用外部文档的超链接

使用 Cleveref 停用外部文档的超链接

我的问题与所问的问题非常相似这里。此外,我找到了一个解决方案\ref 这里。但是我找不到解决方案\cref

设置:我有一个包含许多章节的大文件,其中章节、环境和方程式之间有许多引用。引用是通过包创建的\cref,通常包含超链接hyperref

问题:大多数时候,我只想在我的 pdf 中包含某些章节,但仍希望参考资料能够起作用。

我的想法:我将.aux完整版本的文件存储在文件中full.aux。然后我使用xr包将其包含进去。到目前为止,这种方法效果很好,我的参考资料可以正确显示。但是(当然)没有地方引用超链接,所以它们只是跳转到文档的开头。

我的问题是:是否可以完全停用这些外部超链接,同时保留内部超链接?对我来说,使用\cref*没有意义,因为这也意味着更改整个文档。

这是一个简单的例子。这是一份完整的文档。

全文
\documentclass{文章}

\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{xr}
\externaldocument{完整}

\开始{文档}
    首页\新页
    第二页:
    \开始{方程}
    a=b \label{eq:第一个方程}
    \end{方程}
    \开始{方程}
    c=d\label{eq:第二个方程}
    \end{方程}
    \新一页
    \cref{eq:第一个方程}
    \cref{eq:第二个方程}
\结束{文档}

这就是我的主要文档。

主文本
\documentclass{文章}

\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{xr}
\externaldocument{完整}

\开始{文档}
    首页\新页
    第二页:
    \开始{方程}
    a=b \label{eq:第一个方程}
    \end{方程}
    \新一页
    \cref{eq:第一个方程}
    \cref{eq:第二个方程}
\结束{文档}

这就是我想要的工作方式,但没有明确使用\cref*

全文
\documentclass{文章}

\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{xr}
\externaldocument{完整}

\开始{文档}
    首页\新页
    第二页:
    \开始{方程}
    a=b \label{eq:第一个方程}
    \end{方程}
    \新一页
    \cref*{eq:第一个方程}
    \cref{eq:第二个方程}
\结束{文档}

答案1

经过进一步的研究,我发现,上述问题的任何可能解决方案都意味着重新定义 和 中的标准命令xrcleveref这似乎不是解决问题的优雅方法。

因此,我想出了以下解决方案:我\externaldocument{full}用替换\externaldocument[ext:]{full}并创建了我自己的引用命令\myref,它的作用相当于\cref内部引用和\cref*{ext:#referencename}内部找不到的引用。

这不是对我的问题的明确回答,但可能是解决问题更优雅的方法。

这是我的最小示例的完整解决方案。

\documentclass{文章}

\usepackage{xr}
\usepackage{hyperref}
\usepackage{cleveref}

\externaldocument[ext:]{完整}

\制作字母
\newcommand\myref[1]{
    \@ifundefined{r@#1}{
        \cref*{ext:#1}
    }{
        \cref{#1}
    }
}
\makeatother

\开始{文档}
    首页\新页
    第二页:
    \开始{方程}
    a=b \label{eq:第一个方程}
    \end{方程}
    \新一页
    \myref{eq:第一个方程}\quad
    \myref{eq:第二个方程}
\结束{文档}

相关内容