我正在尝试从 cleveref 迁移到 zref-clever,因为之前与 pdfmanagement phase-III 不兼容。
是否有可能有一个 zref-clever 和 zref-vario 的变体,输出“Section 2”而不是“section 2”?
\documentclass[a4paper,10pt]{article}
\usepackage{zref-vario}
\usepackage{hyperref}
\usepackage{kantlipsum}
\title{Kant nonsense}
\author{Me}
\let\oldlabel\label
\renewcommand{\label}[1]{\oldlabel{#1}\zlabel{#1}}
\begin{document}
% zref: "2"
% zcref: "section 2"
% zvref: "section 2 on page 3"
% nameref: "Kant"
I like \zcref{end}.\\
\zcref{end} is my favorite. % <--- here I would like a \zCref variant
\section{Kant}
\kant
\section{End}
\label{end}
\end{document}
答案1
\Cref
与in等价的zref-clever
是S
选项(表示“句子”),它是 的别名capfirst=true,noabbrevfirst=true
,这意味着它确保在给定 调用 时,第一个类型块的名称大写而不是缩写\zcref
。因此,您所需要的只是\zcref[S]{<label>}
。 也是一样\zvref[S]{<label>}
。
关于:
\let\oldlabel\label
\renewcommand{\label}[1]{\oldlabel{#1}\zlabel{#1}}
你不应该这样做。在某些情况下,这可能会导致麻烦,而且实际上没有必要。如果你拥有最新版本的,它已经使用内核提供的zref-clever
新钩子,并为给定的调用设置 a和 a 。所以你可以直接使用。label
\label
\zlabel
\label
\label
现在,如果您在实际文档中执行此操作并且没有收到重复标签警告,则可能是您使用的是旧版本的zref-clever
。理想情况下,如果可以,您应该更新。另一方面,您报告正在使用,因此您似乎拥有最新的 TeX 安装,并且可能收到重复标签警告。无论哪种方式,您都不应该那样\DocumentMetadata{testphase=phase-III}
重新定义。\label
在全:
\documentclass[a4paper,10pt]{article}
\usepackage{zref-clever}
\usepackage{zref-vario}
\usepackage{varioref}
\usepackage{hyperref}
\usepackage{kantlipsum}
\title{Kant nonsense}
\author{Me}
\begin{document}
% zref: "2"
% zcref: "section 2"
% zvref: "section 2 on page 3"
% nameref: "Kant"
I like \zcref{end}.\\
\zcref[S]{end} is my favorite. % <--- For a "\zCref" variant, use the "S" option.
\zvref[S]{end} too.
\section{Kant}
\kant
\section{End}
\label{end}
\end{document}