如何像 \Cref 一样将 \zcref 大写?

如何像 \Cref 一样将 \zcref 大写?

我正在尝试从 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-cleverS选项(表示“句子”),它是 的别名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}

在此处输入图片描述

相关内容