我想给出一个定理的两个版本,并将它们编号为定理 1 和定理 1',就像问题一样定理编号后加破折号:例如定理 1'和定理编号如定理 $1'$。
我稍后想使用 cleveref 引用定理 1',并认识到它是一个定理,因此能够说例如“定理 1' 和 3”。我无法使它工作,无论是使用引用的答案还是其他方式。我尝试的代码和输出的屏幕截图如下。任何关于我做错什么的建议(或只是解决问题的另一种方法)都将不胜感激。我注意到的一件事是,例如更改为根本不会\Crefname{manualtheorem}{Test}{Tests}
改变第三行输出,所以那里发生了一些有趣的事情。
\documentclass{article}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{theorem}{Theorem}
\newtheorem{manualtheoreminner}{Theorem}
\newenvironment{manualtheorem}[1]{%
\renewcommand\themanualtheoreminner{#1}%
\manualtheoreminner
}{\endmanualtheoreminner}
\Crefname{manualtheorem}{Theorem}{Theorems}
\crefname{manualtheorem}{theorem}{theorems}
\begin{document}
\begin{theorem}\label{foo}
This is a theorem.
\end{theorem}
\begin{theorem}\label{foo2}
This is another theorem
\end{theorem}
\begin{manualtheorem}{\ref{foo}'}\label{baz}
This is a theorem'.
\end{manualtheorem}
\begin{manualtheorem}{\ref{foo2}'}\label{baz2}
This is another theorem'.
\end{manualtheorem}
\Cref{foo,foo2}, as desired, gives ``Theorems 1 and 2.''
\Cref{baz,baz2}, does not give the desired ``Theorems 1' and 2'.''
\Cref{foo,baz} does not give the desired ``Theorems 1 and 1'.''
\end{document}
答案1
Cleveref 调整了标签命令以包含一个可选的额外参数,该参数描述了要为对象赋予哪个名称。因此,只需将 替换
\label{baz}
为\label[theorem]{baz}
和\label{baz2}
即可\label[theorem]{baz2}
。