2025年,可以不用cleveref而改用zref-clever:
\documentclass{beamer}
\usepackage{hyperref}
% \usepackage{cleveref}
% \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}
\usepackage{zref-clever}
\zcRefTypeSetup{equation}{
name-sg={eq.},
name-pl={eqs.},
Name-sg={Eq.},
Name-pl={Eqs.},
}
\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}
\zcref[S]{eq1}
\zcref[S]{eq1,,eq2}
\zcref[S]{eq1,eq2,eq3}
\zcref[S]{eq1,eq2,eq3,eq7,eq8,eq9}
\zcref[S]{eq1,,eq2,,eq3,eq7,eq8,eq9} % I want "Eqs. (1),(2),(3) and (7) to (9)"
\zcref[S]{eq6,eq7,eq9}
Eq. \zref{eq1}
\end{frame}
\end{document}这样不会报任何警告,虽然「编号形式受到\seq_set_from_clist:Nn对clist的解析小问题」,但是很少会用到\cref{eq1,,eq2,,eq3,eq7,eq8,eq9}这样故意空格的需求...


















问 如何在不手动更改`beamer.cls`第·376·行代码的情况下消除`hyperref`和`cleveref`之间的冲突?