动态确定当前章节的标签

动态确定当前章节的标签

一些伪代码来说明问题:

\chapter{Another day in paradise}
\label{paradise}
...
\section{The snake appears}
\label{snake}
...
\somemacro % a macro that wants to know the chapter label

在 的定义中\somemacro,是否可以通过某种方式获取用于\label当前章节的字符串(paradise在此示例中)?

答案1

一种简单而强大的方法是定义一个宏来设置标签并记住标签的名称,例如:

\newcommand*{\CurrentChapterLabelName}{}
\newcommand*{\ChapterLabel}[1]{%
  \renewcommand*{\CurrentChapterLabelName}{#1}%
  \label{#1}%
}

然后,宏\CurrentChapterLabelName包含由以下设置的最后一个标签名称\ChapterLabel

\chapter{My chapter title}
\ChapterLabel{MyChapterLabel}

... \section{My section title}\label{MySectionLabel} ...

\SomeMacro can now use \CurrentChapterLabelName;
the latter macro contains 'MyChapterLabel'.

另外, \chapter可以\label将其合并为一个宏,其中包含章节标题、标签名称以及目录的简短标题的参数。

该解决方案适用于许多软件包,因为内部命令不会被黑客入侵。

相关内容