![超链接无法与 cleveref (beamer) 配合使用](https://linux22.com/image/392644/%E8%B6%85%E9%93%BE%E6%8E%A5%E6%97%A0%E6%B3%95%E4%B8%8E%20cleveref%20(beamer)%20%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8.png)
在下面的 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.