Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LaTeX2e 2024-11-01: 对 cleveref 的 patch 部分失效 #725

Open
muzimuzhi opened this issue Nov 9, 2024 · 0 comments
Open

LaTeX2e 2024-11-01: 对 cleveref 的 patch 部分失效 #725

muzimuzhi opened this issue Nov 9, 2024 · 0 comments

Comments

@muzimuzhi
Copy link
Contributor

从失败的每周 CI 运行出发,我发现 ctexcleveref 的 patch 已部分失效。

背景

为了兼容 \labelformatctex.dtx patch 了 cleveref:替换

\csname p@<counter>\endcsname\csname the<counter>\endcsname

为(加了一个 \expandafter

\csname p@<counter>\expandfter\endcsname\csname the<counter>\endcsname

这是因为 \labelformat 会把 \p@<counter> 定义为接受一个参数的宏,这个参数通常为同名计数器的 \the<counter>

从 LaTeX2e 2024-11-01 起,\theHcounter 的定义和 \@currentHref 的更新从由 hyperref 提供改为由 LaTeX 直接提供。hyperref 随之做了相应改动,如不再重定义 \refstepcounter

这些改动带来了蝴蝶效应,使 cleveref(最近更新于 2018-03-27)和 LaTeX2e 2024-11-01、hyperref 部分不兼容。一部分不兼容已在 LaTeX2e firstaid(已打包到格式里) 和 hyperref 中处理,但还遗留了一些,见我报告的

问题

ctex 来说,上述变化使 patch 部分失效。章节标题设置功能开启时,ctexcleveref 不兼容。

沿用 latex3/latex2e#1544 里的例子

\documentclass{article}
\usepackage[fontset=none, heading]{ctex}
\usepackage{hyperref,cleveref}

\begin{document}
\section{title}

\makeatletter
\show\cref@currentlabel
\makeatother
\end{document}
  • 预期
    > \cref@currentlabel=macro:
    ->[section][1][]1.
  • 实际
    > \cref@currentlabel=macro:
    ->[section][1][]1thesection\endcsname .

尝试和解决方案

muzimuzhi@5b786a4 是一个尝试。它让 CI 通过了,但我担心新 patch 之一不够好(来自 latex3/hyperref#361 (comment) 里 Ulrike Fischer 的建议,见后面的代码片段),patch 可能频繁改动的 firstaid 也不是好的做法(ctex 会跟不上变化)。

\ExplSyntaxOn
\AddToHook{package/cleveref/before}{\clist_put_right:cn {[email protected]}{implicit=false}}
\ExplSyntaxOff

最好是在 cleveref 那头解决和更新。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant