![“cleveref”的当前状态](https://linux22.com/image/474160/%E2%80%9Ccleveref%E2%80%9D%E7%9A%84%E5%BD%93%E5%89%8D%E7%8A%B6%E6%80%81.png)
cleveref
是我最喜欢的软件包之一,事实上,我自己的许多软件包(cleveref-forward
,crefthe
,create-theorem
) 和类 (minimalist
,colorist
) 从根本上依赖于cleveref
。
然而,它最后一次更新是在 5 年前,从那时起,LaTeX 的世界发生了很多事情。我记得cleveref
在很多不同的地方看到过补丁(但不幸的是,我没有注意到它们;人们可以通过查看这些补丁来看到其中一些带有标签“cleveref”的问题)。作为软件包维护者,我担心这种情况(当我在 2021 年开始编写我的第一个软件包时,这似乎不是什么大问题,但现在必须面对可能cleveref
不再维护的可能性)。例如,最近我在一个软件包中添加了 Ulrike Fischer 在这个答案。
cleveref
因此,据您所知,目前是否有一份已知问题(希望还有推荐的解决方案)和已知改进的汇总列表?对于那些新用户来说,它仍然可以cleveref
在日常文档中使用吗?如果不行,目前是否有其他选择?
答案1
以下是一些已知的修复cleveref
。目前这些修复已包含在软件包中cleveref-forward
,希望有一天它们能够进入原始包装cleveref
。
% Fix for cleveref in order to work with long range of pages
% See https://tex.stackexchange.com/a/620066
\providecommand*{\@setcpagerefrange}[3]{%
\@@setcpagerefrange{#1}{#2}{cref}{#3}}
\providecommand*{\@setCpagerefrange}[3]{%
\@@setcpagerefrange{#1}{#2}{Cref}{#3}}
\providecommand*{\@setlabelcpagerefrange}[3]{%
\@@setcpagerefrange{#1}{#2}{labelcref}{#3}}
% Fix for cleveref in order to work with xr-hyper
% See https://tex.stackexchange.com/a/708445
\def\cref@getref#1#2{%
\expandafter\let\expandafter#2\csname r@#1@cref\endcsname%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter#2%
\expandafter\expandafter\expandafter{%
\expandafter\@firstoffive#2}}% <-------- five
\def\cpageref@getref#1#2{%
\expandafter\let\expandafter#2\csname r@#1@cref\endcsname%
\expandafter\expandafter\expandafter\def%
\expandafter\expandafter\expandafter#2%
\expandafter\expandafter\expandafter{%
\expandafter\@secondoffive#2}}% <----------- five
\AtBeginDocument{%
\def\label@noarg#1{%
\cref@old@label{#1}%
\@bsphack%
\edef\@tempa{{page}{\the\c@page}}%
\setcounter{page}{1}%
\edef\@tempb{\thepage}%
\expandafter\setcounter\@tempa%
\cref@constructprefix{page}{\cref@result}%
\protected@write\@auxout{}%
{\string\newlabel{#1@cref}{{\cref@currentlabel}%
{[\@tempb][\arabic{page}][\cref@result]\thepage}{}{}{}}}% <----- five
\@esphack}%
\def\label@optarg[#1]#2{%
\cref@old@label{#2}%
\@bsphack%
\edef\@tempa{{page}{\the\c@page}}%
\setcounter{page}{1}%
\edef\@tempb{\thepage}%
\expandafter\setcounter\@tempa%
\cref@constructprefix{page}{\cref@result}%
\protected@edef\cref@currentlabel{%
\expandafter\cref@override@label@type%
\cref@currentlabel\@nil{#1}}%
\protected@write\@auxout{}%
{\string\newlabel{#2@cref}{{\cref@currentlabel}%
{[\@tempb][\arabic{page}][\cref@result]\thepage}{}{}{}}}% <------- five
\@esphack}%
}