用于枚举的 Cleveref 格式

用于枚举的 Cleveref 格式

我使用以下句子修改了我的枚举环境:

\renewcommand{\labelenumi}{\textbf{\arabic{enumi}.}}
\renewcommand{\labelenumii}{\textbf{(\alph{enumii})}}
\renewcommand{\labelenumiii}{\textbf{(\roman{enumiii})}}

但是,如果我这样写

\begin{enumerate}
  \item
  \begin{enumerate}
    \item \label{refme}
  \end{enumerate}
\end{enumerate}

然后使用 来引用它according to \cref{refme},我得到的是“根据 1a”而不是“根据 1.(a)”。

是否可以采取一些措施使其遵循我修改后的格式?

答案1

我建议您不要直接操作低级宏\labelenumi\labelenumii和,而是(a)加载包,(b)创建一个名为的自定义枚举列表,并定义此类列表项 1 到 3 级的和属性。\labelenumiiienumitemmyenumlabelref

在此处输入图片描述

就我个人而言,我不得不说,引用标注看起来既丑陋又让人分心。至少,请考虑不要使用粗体字体以供交叉引用。

\documentclass{article}
\usepackage{enumitem,cleveref}

\newlist{myenum}{enumerate}{3}
\setlist[myenum,1]{label=\textbf{\arabic*.},
                   ref  =\textbf{\arabic*.}}
\setlist[myenum,2]{label=\textbf{(\alph*)},
                   ref  =\themyenumi\textbf{(\alph*)}}
\setlist[myenum,3]{label=\bfseries(\roman*),
                   ref  =\themyenumii\textbf{.(\roman*)}}

\crefname{myenumi}{item}{items}
\crefname{myenumii}{item}{items}
\crefname{myenumiii}{item}{items}

\begin{document}

\begin{myenum}
\item \label{refone}
  \begin{myenum}
    \item \label{reftwo} bla bla
    \begin{myenum}
      \item \label{refthree} bleep bleep
    \end{myenum}
  \end{myenum}
\item \label{reffour}
  \begin{myenum}
    \item xxx
    \item \label{reffive} bli bli
    \begin{myenum}
      \item yyy
      \item \label{refsix} bloop bloop
    \end{myenum}
  \end{myenum}
\end{myenum}

\noindent
Cross-references to \cref{refone,reffour}, \cref{reftwo,reffive}, and \cref{refthree,refsix}.  
\end{document}

附录:如果您坚持使用低级宏\labelenumi\labelenumii\labelenumiii,我认为您应该在序言中使用以下代码。请注意,此代码还修改了\theenumi\theenumii\theenumiiii以及“前缀宏”\p@enumi\p@enumiii。(请注意,此代码将不是在排版交叉引用标注时使用粗体。这是因为我认为创建粗体交叉引用标注非常丑陋。)

\renewcommand{\theenumi}{\arabic{enumi}}
\renewcommand{\theenumii}{(\alph{enumii})}
\renewcommand{\theenumiii}{(\roman{enumiii})}
\renewcommand{\labelenumi}{\textbf{\theenumi.}}
\renewcommand{\labelenumii}{\textbf{\theenumii}}
\renewcommand{\labelenumiii}{\textbf{\theenumiii}}
\makeatletter
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi\theenumii}
\makeatother

相关内容