LaTeX插入索引及精确控制

一般索引

交叉引用是 LaTeX 强大的自动排版功能之一。在能够被交叉引用的地方,如章节、公式、图表、定理等位置使用 \label 命令:\label{label-name}。

之后可以在需要设置索引处使用 \ref 或 \pageref 命令,分别生成交叉引用的编号和页码:
\ref{label-name}
\pageref{label-name}

但是\label命令默认情况下只能精确到subsubsection级别,如果我们要在一个subsubsection内部设置多个索引,引用时只会定位到第一个索引的位置,无法实现精确的定位。

插入精确定位的索引

如果你需要更加精确定位,可以考虑使用\phantomsection和\addcontentsline命令来手动添加标签。

例如,你可以在需要的位置使用\phantomsection创建一个“假”的section或subsection,并使用\addcontentsline将其添加到目录中,然后再使用\label进行标记。

\phantomsection
\addcontentsline{toc}{subsubsection}{Your Sub-subsection Title}
\label{your-label-1}

这样就可以更加精确地定位标签了。当你想要引用这个标签时,直接使用\ref{your-label-1}即可。

但是,这会有个缺点,创建的“假”的section或subsection,会真实的出现在目录中,但有时我们不希望它出现在目录中,就需要额外的命令控制目录深度。

插入精确定位的索引,并控制其目录深度

如果你不希望手动添加的标签出现在目录中,可以考虑使用\addtocontents命令来控制特定级别的目录项。

例如,假设你要创建一个subsubsection级别的标签,并且不希望它出现在目录中,可以这样操作:

\phantomsection
\addtocontents{toc}{\protect\setcounter{tocdepth}{2}} % 限制目录深度
\subsubsection*{Your Sub-subsection Title}
\label{your-label-2}

这里使用了\addtocontents命令来暂时修改了tocdepth计数器以限制目录深度,然后用*形式的section命令创建不编号、不加入目录项的子标题,并在其后面添加label。当你想引用这个标签时,直接使用\ref{your-label}即可。

如果你不希望文章中出现该label的子标题,也可以删去第三行,改为:

\phantomsection
\addtocontents{toc}{\protect\setcounter{tocdepth}{2}} % 限制目录深度
\label{your-label-2}

当你想要引用这个标签时,直接使用\ref{your-label-2}即可。
此时看到目录中就不会出现额外的目录项了。

恢复默认目录深度

请注意,在需要恢复默认深度之前(例如在新页面或者新章节之前),需要使用 \addtocontents 命令将 tocdepth 计数器重新设置到所需深度。

在后面的章节中恢复目录深度可以通过以下方式实现:

\addtocontents{toc}{\protect\setcounter{tocdepth}{3}} % 恢复目录深度为原始值

将这行代码放在新页面或者新章节的开头即可,再添加正常的章节时,目录中标题顺序也是正常的。

由此,我们就实现了索引的精确定位以及控制其在目录中的显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值