我正在使用该cleveref
包并将更改labelenumii
为roman
,但我不知道如何更改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 --hyperref
和nameinlink
选项用于直观地阐明产生的内容\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}