引用 ExPex 示例的页码(不带 \label)

引用 ExPex 示例的页码(不带 \label)

问题: 有没有办法实现\getpageref的等价\getref和的\getfullpageref等价?\getfullrefexpex

背景: 我有一份很长的文档,其中使用了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??,如图所示:

ExPex 示例与 \getfullref 和 \pageref 的比较

可以通过改为\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

如果相关的话,我的实际文档使用hyperrefcleveref包。我没有在示例中包含这些,因为它们的行为对我来说是相同的。但是,如果其中一个包可以挂接到页码,那也会起作用。

- 编辑 -

我的例子有点不清楚,因为我只提供了\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}

结果是:

\pex 中未解析对 A 部分和 B 部分的引用

原始问题仍然适用,但我想澄清的是,我希望答案也可以涉及这些部分,而不仅仅是示例编号。

答案1

\documentclass{article}

\usepackage{expex}
\usepackage{etoolbox}
\pretocmd\deftag{\label{#2}}{}{\fail}

\begin{document}

\ex<expex item>
\begingl
    \gla test //
    \glft blub //
\endgl
\xe

\getfullref{expex item}

\pageref{expex item}
\end{document}

在此处输入图片描述

相关内容