“cleveref”的当前状态

“cleveref”的当前状态

cleveref是我最喜欢的软件包之一,事实上,我自己的许多软件包(cleveref-forwardcrefthecreate-theorem) 和类 (minimalistcolorist) 从根本上依赖于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}%
}

相关内容