我有以下代码
\documentclass{scrreprt}
\usepackage{hyperref}
\begin{document}
\part{First Part}
\chapter{First Chapter}
\label{inner} Some text.
\part{Second Part}
\chapter{First Chapter}
\ref{inner}
\end{document}
1
为标签生成一个引用inner
。我如何才能将与章节相关的部分的编号包含在此引用中,即自动创建形式的交叉引用I.1
?
答案1
LaTeX 内核提供了一种巧妙的机制,用于将材料“前缀”到计数器的交叉引用中。对于通过\newcounter
名为 的宏在某处定义的每个计数器变量somecounter
,LaTeX 会自动创建一个名为 的辅助宏,并且此宏的值会自动添加到引用计数器 的命令\p@somecounter
的结果的前缀中。\ref
somecounter
默认情况下,这些辅助前缀宏是空的,但可以通过指令直接修改它们\renewcommand
。对于手头的情况,您可以通过添加指令来实现目标
\makeatletter
\renewcommand{\p@chapter}{\thepart.} % prefix "\thepart." to the number of the chapter
\makeatother
在加载之前,将其添加到序言中hyperref
。(需要\makeatletter
和\makeatother
指令是因为该宏\p@chapter
包含通常具有类别代码“其他”的字符@
。)