一些伪代码来说明问题:
\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
将其合并为一个宏,其中包含章节标题、标签名称以及目录的简短标题的参数。
该解决方案适用于许多软件包,因为内部命令不会被黑客入侵。