使用 cleveref 引用 beamer 中的 amsthm 对象

使用 cleveref 引用 beamer 中的 amsthm 对象

我是 amsthm 的初学者,我使用 cleveref 来引用定理/定义/引理。顺便说一句,所有这些都发生在 beamer 中。在使用 \Cref{label} 进行定义、引理和其他一切时,我得到了以下形式定理<number>一切都不是定理!我想要定义<编号>引理 <number>我也一样。我该如何修复这个问题?

我也收到此错误:

警告:hyperref 包加载了 implied=false 选项 - 禁用 cleveref 的 hyperref 支持。cleveref 不支持这种情况,并且不能保证任何事情都能正常工作。您只能靠自己了!输入行 2370。

\documentclass[aspectratio=169,xcolor=dvipsnames]{beamer}
\setbeamercovered{transparent}
\setbeamertemplate{theorems}[numbered] 
\usetheme{CambridgeUS}

\usepackage{amsmath,amssymb,amsthm,amsfonts,amscd}
\usepackage{cleveref}
\usepackage{tikz}
\usepackage{parskip}
\usepackage{graphicx} % Allows including images
\usepackage{booktabs} % Allows the use of \toprule, \midrule and \bottomrule in tables
\usepackage{hyperref}

\theoremstyle{definition}
\numberwithin{theorem}{section}
\newtheorem{exercise}{Exercise}

\begin{definition}[Program]
\label{prog}
A program is a set of states in a labeled transition system.
\end{definition}

\begin{theorem}
Euler is the best mathematician.
\end{theorem}

\begin{lemma}
\label{xyz}
beamer is amazing.
\end{lemma}

We just saw \Cref{xyz} and \Cref{prog}.

答案1

默认情况下,beamer 将定义与定理共享一个计数器,如下所示:

\newtheorem{definition}[theorem]{\translate{Definition}}

如果您希望 cleveref 区分两种环境,您可以在不使用共享计数器的情况下重新定义它:

\documentclass[aspectratio=169,xcolor=dvipsnames]{beamer}
\setbeamercovered{transparent}
\setbeamertemplate{theorems}[numbered] 
\usetheme{CambridgeUS}

\usepackage{cleveref}

\makeatletter
\let\definition\@undefined
\makeatother
\newtheorem{definition}{Definition}

\makeatletter
\let\lemma\@undefined
\makeatother
\newtheorem{lemma}{Lemma}

\begin{document}

\begin{frame}

\begin{definition}[Program]
\label{prog}
A program is a set of states in a labeled transition system.
\end{definition}

\begin{theorem}
Euler is the best mathematician.
\end{theorem}

\begin{lemma}
\label{xyz}
beamer is amazing.
\end{lemma}

We just saw \Cref{xyz} and \Cref{prog}.

\end{frame}

\end{document}

在此处输入图片描述

相关内容