更改 creflabelformat

更改 creflabelformat

我正在使用该cleveref包并将更改labelenumiiroman,但我不知道如何更改creflabelformat(希望是正确的命令)

\documentclass{article}
\usepackage{cleveref}

\renewcommand{\labelenumii}{\roman{enumii})}

\creflabelformat{enumii}{#2\roman{#1}#3}

\begin{document}

\begin{enumerate}
\item t
\begin{enumerate}
\item s \label{s}
\end{enumerate}
\end{enumerate}

s is \cref{s}

\end{document}

答案1

我认为没有必要使用\creflabelformat指令。看起来您想将 2 级枚举项的“外观”从 更改为(\alph{<counter>})\roman(<counter>)如果是这样,您应该将指令替换为

\renewcommand{\labelenumii}{\roman{enumii})}

\renewcommand{\theenumii}{\roman{enumii}}
\renewcommand{\labelenumii}{\theenumii)}

此外,如果您希望对 2 级项目的交叉引用不显示为 ,1i而只显示为i,即,如果您想省略 1 级“前缀”,则应提供说明

\makeatletter
\renewcommand\p@enumii{} % remove the cross-referencing prefix for level-2 items
\makeatother

也一样。

MWE --hyperrefnameinlink选项用于直观地阐明产生的内容\cref

在此处输入图片描述

\documentclass{article}
\usepackage[colorlinks]{hyperref} % just for this example
\usepackage[nameinlink]{cleveref}

\renewcommand{\theenumii}{\roman{enumii}}
\renewcommand{\labelenumii}{\theenumii)}
\makeatletter
\renewcommand\p@enumii{}
\makeatother

\begin{document}
\begin{enumerate}
\item t
\begin{enumerate}
\item s \label{s}
\end{enumerate}
\end{enumerate}
s is \cref{s}.
\end{document}

附录:仅供好奇,article文档类设置了以下\theenumii\labelenumii和的定义\p@enumii

\renewcommand\theenumii{\alph{enumii}}
\newcommand\labelenumii{(\theenumii)}
\renewcommand\p@enumii{\theenumi}

相关内容