使用 cleveref 自定义交叉引用

使用 cleveref 自定义交叉引用

我迷失在cleveref软件包中众多自定义选项中。MWE 说明了我想做的事情,也是我迄今为止最好的尝试。

我正在运行 TeXLive 2013,编译时使用latexmk -pdf MWE.tex

注意:我不需要memoir比的扩展更复杂的包enumerate,除非它有助于解决问题。

\documentclass{memoir}
\usepackage{hyperref}
\usepackage{cleveref}
\setsecnumdepth{subsubsection}

\begin{document}
\mainmatter
\chapter{one}
\label{chap:one}
\section{uno}
\label{sec:uno}
\subsection{ein}
\label{subsec:ein}

\begin{enumerate}[(a)]
\item
aaa
\item
\label[subsection]{enum:bbb}
bbb
\end{enumerate}

\subsection{zwei}

What I want is a cross reference that looks like ``section 1.1.1(b)''

But \verb|\cref{enum:bbb}| gives ``\cref{enum:bbb}''

\end{document}

注意:建议更改的评论和答案并未enumerate解决subsubsection我希望交叉引用的格式与文档中的章节编号不同的事实 - 如 MWE 中所示,文档中的编号应该只是“(b)”,但引用应该是“1.1.1(b)”。

答案1

也许使用带有选项键enumitem的包是一种绕过解决方案。shortlabelsref=....

\documentclass{memoir}
\usepackage[shortlabels]{enumitem}
\usepackage{hyperref}
\usepackage{cleveref}
\setsecnumdepth{subsubsection}

\begin{document}
\mainmatter
\chapter{one}
\label{chap:one}
\section{uno}
\label{sec:uno}
\subsection{ein}
\label{subsec:ein}

\begin{enumerate}[(a),ref={\thesubsection(\alph*)}]
\item
  aaa \label{foo}
\item 
  \label[subsection]{enum:bbb}
  bbb
\end{enumerate}


\subsection{zwei}

What I want is a cross reference that looks like ``section 1.1.1(b)''

But \verb|\cref{enum:bbb}| gives ``\cref{enum:bbb}''

\end{document}

在此处输入图片描述

答案2

在序言中使用:

\renewcommand{\thesubsubsection}{\thesubsection.\alph{subsubsection}}

\subsubsection{aaa}
%       \item
        aaa
\subsubsection{bbb}
        \label[subsection]{enum:bbb}
        bbb
%   \end{enumerate}

你或多或少会得到你想要的东西。

在此处输入图片描述

相关内容