使用 cref 完整引用下属章节

使用 cref 完整引用下属章节

当引用下级章节时,cleveref 默认显示引用章节的标识符,因为它实际上是以全文显示的。我重新定义了\part\chapter、 ... 命令以仅显示实际章节的标识符。有没有办法同时显示上级章节、章节、部分 ... 的标识符?Cleveref 似乎没有这个选项,不幸的是我无法自己寻找解决方案。

下面是我的 MWE,用于演示我所寻找的内容:

\documentclass[fontsize=12pt, a4paper]{scrreprt}

\usepackage{cleveref}

\renewcommand*\thepart{\Alph{part}} 
\renewcommand*\thechapter{\Roman{chapter}} 
\renewcommand*\thesection{\arabic{section}} 
\renewcommand*\thesubsection{\alph{subsection}}
\renewcommand*\thesubsubsection{\roman{subsubsection}}

\begin{document}

\part{First Part}

\chapter{First Chapter}
\label{first_chapter}
Is: For further information see \cref{first_subsection}.

Should be: For further information see section B.II.1.a.

\section{First Section}

\part{Second Part}

\chapter{Second Chapter}

\section{Second Section}

\subsection{First Subsection}
\label{first_subsection}
Is: As noticed in \cref{first_chapter} ...

Should be: As noticed in A.I. ...

\end{document}

答案1

LaTeX 提供了一种内置机制,用于将下属单位的“前缀”添加到交叉引用调用中。如果mycounter创建了一个名为 的计数器,LaTeX 会自动创建一个名为 的宏\p@mycounter,其中包含要在 实例的交叉引用中添加前缀的材料mycounter

默认情况下,此“前缀宏”为空,即不插入任何材料。但是,如果您添加指令

\makeatletter
\renewcommand{\p@chapter}{\thepart.} % prefix for chapter-level cross-refs
\renewcommand{\p@section}{\p@chapter\thechapter.} % prefix for section-level cross-refs
\renewcommand{\p@subsection}{\p@section\thesection.} % for cross-refs to subsections
\renewcommand{\p@subsubsection}{\p@subsection\thesubsection.} % for cross-refs to subsubsections
\makeatother

对于文档的序言,由章节、节、小节和小小\cref节生成的所有交叉引用(以及\ref对章节、节、小节和小小节的交叉引用)都将使用完整的复合数字。

相关内容