超链接无法与 cleveref (beamer) 配合使用

超链接无法与 cleveref (beamer) 配合使用

在下面的 MWE 中,您将看到\cref无法与 一起使用hyperref。此外,即使使用常规\ref命令,hyperref也会导致错误的方程式

这是输出

在此处输入图片描述

这就是\ref我们要去的地方(就在公式 1 下方,而不是公式 1 本身)

在此处输入图片描述

其中一种解决方案提到cleveref 超链接在 beamer 中不起作用重新定义\cref如下

\let\chyperref\cref % Save the orginal command under a new name
\renewcommand{\cref}[1]{{\hyperlink{#1}{\chyperref{#1}}}} % Redefine the \cref command and explictely add the hyperlink. 

上述解决方案仅适用于引用一个方程式。如果引用多个方程式,超链接将始终带我们到文档的开头。这意味着\cref使用此解决方案与\ref

\documentclass[aspectratio=169, xcolor={x11names}]{beamer}

\usecolortheme{seahorse}

\useoutertheme[]{miniframes}
\useinnertheme{inmargin}
\setbeamersize{sidebar width left=1cm, sidebar width right=1cm}
\setbeamersize{text margin left=0.5mm, text margin right=0.5mm}

\usepackage{hyperref}
\hypersetup{citecolor=SlateBlue2, citebordercolor=SlateBlue2, 
linkbordercolor=DodgerBlue3, linkcolor=DodgerBlue3, urlcolor=Blue1, colorlinks=true}

\usepackage{cleveref}

    % Single equations (non-breakable)
    \crefformat{equation}{\mbox{Eq. #2(#1)#3}}
    \crefrangeformat{equation}{\mbox{Eqs. #3(#1)#4 to #5(#2)#6}}
    \crefmultiformat{equation}{\mbox{Eqs. #2(#1)#3}}{ and #2(#1)#3}{, #2(#1)#3}{ and #2(#1)#3}
    \crefrangemultiformat{equation}{\mbox{Eqs. #3(#1)#4 to #5(#2)#6}}{ and #3(#1)#4 to #5(#2)#6}{, #3(#1)#4 to #5(#2)#6}{ and #3(#1)#4 to #5(#2)#6}

\let\chyperref\cref % Save the orginal command under a new name
\renewcommand{\cref}[1]{{\color{blue}\hyperlink{#1}{\chyperref{#1}}}} % Redefine the \cref command and explictely add the hyperlink. 

\begin{document}

\begin{frame}{Title Here}

    \begin{block}

        \begin{align}
            A  &= B
            \label{eq1}
            \\
             &= C
             \label{eq2}
             \\
             &= D
             \label{eq3}
        \end{align}

    \end{block}

\end{frame}


\begin{frame}{Title Here}

    \begin{block}

        \begin{align}
            A  &= B
            \label{eq4}
            \\
             &= C
             \label{eq5}
             \\
             &= D
             \label{eq6}
        \end{align}

    \end{block}

\end{frame}

\begin{frame}{Title Here}

\begin{block}

    \begin{align}
    A  &= B
    \label{eq7}
    \\
    &= C
    \label{eq8}
    \\
    &= D
    \label{eq9}
    \end{align}

\end{block}

\end{frame}

\begin{frame}
    contents in between
\end{frame}


\begin{frame}

    \cref{eq1} 

    \cref{eq1,,eq2}

    \cref{eq1,eq2,eq3} 

    \cref{eq1,eq2,eq3,eq7,eq8,eq9} 

    \cref{eq1,,eq2,,eq3,eq7,eq8,eq9} 

    \cref{eq6,eq7,eq9} 


    Eq. \ref{eq1} 
\end{frame}


\end{document}

答案1

不,带有 cleverref 和 beamer 的 hyperref 不起作用。您只需使用 cleverref 编译一个小型 beamer 文档,然后查看日志:

Package cleveref Warning: hyperref package loaded with implicit=false option - 
disabling cleveref's hyperref support. This situation is not supported by cleveref, 
and there's no guarantee anything will work. You're on your own! on input 
line 2370.

相关内容