![同一文档中的双重索引](https://linux22.com/image/254963/%E5%90%8C%E4%B8%80%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%E5%8F%8C%E9%87%8D%E7%B4%A2%E5%BC%95.png)
我对我面临的一个问题有疑问。我有一份由两个不同且独立的部分组成的文档,其中第二部分仅引用第一部分的一些元素。这两个部分共享一个共同的信息,例如参考书目。
我想要生成的是一份文档,其中每个部分的编号都从 1 开始(图、表等也遵循相同的编号...)。例如:
第一部分
第1章 第 1.x 节 第 1.xy 节
第2章 第 2.x 节子第 2.xy 节 -->图 2.x.1
ETC。
第二部分
第1章 第 1.x 节 第 1.xy 节
第2章 第 2.x 节子第 2.xy 节 -->图 2.x.1
ETC。
正如我所说,第二部分以某种方式引用了第一部分中的元素。因此,在第二部分 - 第 2 章 - 第 2.x 节中,我可以引用第一部分的第 2.x 节(例如图 2.x.1)
可以做到吗?
答案1
与类相比book
,章节在新的部分开始时重置,图表和表格在新的部分开始时重置。有几种方法可以做到这一点,请参阅上面 Count Zero 注释中的链接。
问题仍然存在,编号不唯一,并且不清楚图 2.1.1 属于哪个部分。如果引用指向当前部分之外,以下示例将添加该部分:
每个引用都以 为前缀,并\p@<counter>
重新定义为\RefPart
使用当前部件号扩展为。\RefPart
使用 进行定义\DeclareRobustCommand
,因为在将标签写入文件时,它不能扩展.aux
。 这样, 将\RefPart
在 时执行,\ref
可以在两个部件中调用,从而生成不同的引用(带和不带部件前缀)。
另外,该示例还经过了测试hyperref
。
\documentclass{book}
\usepackage{hyperref}
\usepackage{bookmark}
\makeatletter
% numbering of chapters inside part:
\@addtoreset{chapter}{part}
\@ifpackageloaded{hyperref}{%
\renewcommand*{\theHchapter}{%
\theHpart.\arabic{chapter}%
}%
}{}
% numbering of figure/table inside section:
\@addtoreset{figure}{section}
\renewcommand*{\thefigure}{\thesection.\arabic{figure}}
\@addtoreset{table}{section}
\renewcommand*{\thetable}{\thesection.\arabic{table}}
\DeclareRobustCommand*{\RefPart}[1]{%
\begingroup
\def\x{#1}%
\protected@edef\y{\thepart}%
\ifx\x\y
\else
\x.%
\fi
\endgroup
}
\renewcommand*{\p@table}{\RefPart{\thepart}}
\renewcommand*{\p@figure}{\RefPart{\thepart}}
\makeatother
\begin{document}
\tableofcontents
\part{First part}
\chapter{Chapter A}
Reference inside part: \ref{figE}\\
reference to other part: \ref{figEE}
\chapter{Chapter B}
\section{Section C}
\subsection{Subsection D}
\begin{figure}
\caption{Figure E}
\label{figE}
\end{figure}
\part{Second part}
\chapter{Chapter AA}
Reference to other part: \ref{figE}\\
reference inside part: \ref{figEE}
\chapter{Chapter BB}
\section{Section CC}
\subsection{Subsection DD}
\begin{figure}
\caption{Figure EE}
\label{figEE}
\end{figure}
\end{document}