ExPex:多部分示例中子部分的连续标签

ExPex:多部分示例中子部分的连续标签

我严重依赖 ExPex,在自动标记多部分示例的子部分时遇到问题:

Consider the following construction:

\pex<like>
\a[label=0] I like X
\xe

Some folks might say something like:

\pex[exno=\getref{like}]
\a I like food
\a I like pens
\xe

Observe the similarity to the construction:

\pex<wantz>
\a[label=0] Me wantz X
\a Me wantz food
\a Me wantz pens
\xe

But there’s more!

\pex[exno=\getref{like}]
\a I like LaTeX
\a I like ExPex
\xe

我得到了左侧的结果但想要右侧的结果:

换句话说,我希望给定多部分示例的子部分数量不断增加。我可以每次都使用 \a[label=] 并自行跟踪,但这似乎很乏味且不可靠。

我怀疑有某种方法可以使用 \pexcnt 来实现这个效果,但是即使读了手册几次,我仍然不知道该怎么做。

答案1

我想到的是这些想法:

  • 创建一个命令 \saveseries{<name>}其中<name>定义了(因此它的语法应该是宏,即只有字母)以保存当前\pexcnt以供以后使用。这命令应放在结构的末尾\pex(之前\xe)。

  • 创建一个命令 \resumeseries{<name>}用于继续其他的标签\pex。此命令必须放在其他\pex结构的开头(您希望继续标记的位置),并且不要忘记放置nopreamble避免换行的选项。

警告

  • \saveseries{...}如果要打破其他块中的标签,则必须重新放置。
  • 您必须使用已经定义的<name>in来避免类似以下错误\resumeseries\saveseries
`! Undefined control sequence.`

`<recently read> \<name>`

完整代码

\documentclass{article}
\usepackage{expex}
\newcommand{\saveseries}[1]{\expandafter\xdef\csname #1\endcsname{\noexpand\pexcnt\the\pexcnt\relax}}
\newcommand{\resumeseries}[1]{\expandafter\csname#1\endcsname\ignorespaces}
\begin{document}
Consider the following construction:

\pex<like>
\a[label=0] I like X
\xe

Some folks might say something like:

\pex[exno=\getref{like}]
\a I like food
\a I like pens
\a I don't know
\saveseries{myserie}
\xe

Observe the similarity to the construction: 

\pex<wantz>
\a[label=0] Me wantz X
\a Me wantz food
\a Me wantz pens
\xe

But there’s more!

\pex[exno=\getref{like},nopreamble]  \resumeseries{myserie} 
\a I like LaTeX
\a I like ExPex
\xe
\end{document}

虽然这还没有经过充分的测试但我认为已经获得了预期的结果。

在此处输入图片描述

相关内容