问题:
有没有办法实现\getpageref
的等价\getref
和的\getfullpageref
等价?\getfullref
expex
背景:
我有一份很长的文档,其中使用了expex
数百个示例。目前,我使用 符号expex
来表示所有示例,其中标签紧跟在尖括号后面\ex
或\pex
位于尖括号内,即<>
。这些示例均未使用\label
,因此我引用使用 的示例\getfullref
。
对于大量的例子,我在几章之后重复了这些例子,并想使用这种符号引用原文:[(EXNUM),从第 PNUM 页重复]
引用示例编号不是问题。但是,我意识到\pageref
无法识别 ExPex 的标签。例如:
\documentclass{article}
\usepackage{expex}
\begin{document}
\ex<expex item>
\gla test //
\glft test //
\xe
\getfullref{expex item}
\pageref{expex item}
\end{document}
将产生1
和??
,如图所示:
可以通过改为\ex<expex item>
来解决这个问题\ex<expex item>\label{expex item}
。例如:
\ex<expex item>\label{expex item}
\gla test //
\glft test //
\xe
然而,如果可能的话,出于某些原因,我更愿意接入 ExPex 的系统。
- 我有许多这样的交叉引用的例子。这不是一项随意添加
\label{...}
几个案例的任务,就像在较小的文档中一样 - 原则上,似乎应该有办法记录它的页码,就像
\label
++系统允许的\ref
那样。\pageref
这艾克斯包裹文档见第 60-66 页讨论了参考文献。但是,我只能在文档中找到硬编码的页码。因此,expex
如果您只使用\label
(在第 66 页下讨论Support for the LaTex \label and \ref commands
)或存在冗余问题,您将失去内置系统的一些好处。对最初未使用该方法的大型文档进行改造也是有问题的。如果您只想引用 B、C、D 等部分(当出现分页符时,这变得相关),\label
您还需要在 中使用多个标签。\pex
如果相关的话,我的实际文档使用hyperref
和cleveref
包。我没有在示例中包含这些,因为它们的行为对我来说是相同的。但是,如果其中一个包可以挂接到页码,那也会起作用。
- 编辑 -
我的例子有点不清楚,因为我只提供了\ex
,但没有提供\pex
。我希望任何方法也可以应用于多部分中的 A、B、C 等部分\pex
。这是一个示例(使用@ulrike-fischer 的答案中提供的当前补丁):
\documentclass{article}
\usepackage{expex}
\usepackage{etoolbox}
\pretocmd\deftag{\label{#2}}{}{\fail}
\begin{document}
\ex<ex item>
\gla test //
\glft test //
\xe
Reference:
\getfullref{ex item} on p. \pageref{ex item}
\pex<pex item>
\a<A> test2 //
\a<B> test3 //
\xe
General reference:
\getfullref{pex item} on p. \pageref{pex item}
A reference:
\getfullref{pex item.A} on p. \pageref{pex item.A}
B reference:
\getfullref{pex item.B} on p. \pageref{pex item.B}
\end{document}
结果是:
原始问题仍然适用,但我想澄清的是,我希望答案也可以涉及这些部分,而不仅仅是示例编号。