eplain 访问 \li 号码

eplain 访问 \li 号码

获取 eplain 格式列表中当前项目的“标记”的最佳方法是什么?

\numberedlist
  \li Here's an item
  \li And this is another and it's marker is: \marker
\endnumberedlist

我尝试使用“\marker”,但据我所知,在展开时,项目编号已经增加。我尝试阅读 eplain.tex 源代码,但我不够熟练,无法理解它。

答案1

eplain手动的在“4.6 列表”部分中说:

您可以给出\li一个可选参数,即交叉引用标签。它被定义为当前项的“标记”。如果列表项有编号,这将很有用。您可以使用 生成标签的值 \xrefn。请参阅第 4.9 节 [交叉引用],第 15 页。

应用于示例:

\numberedlist
  \li Here's an item
  \li[this] And this is another and it's marker is: \xrefn{this}
  \li A third item
\endnumberedlist
\bye

两次运行后的结果eplain

结果

有了\enablehyperlinks引用实际上就会变成链接。

答案2

我想到了两个替代解决方案。

使用 e-tex 的 \numexpr:

\def\currentitemnum{\the\numexpr \number\itemnumber-1 \relax}

\numberedlist
  \li Here's an item
  \li And this is another and it's marker is: \currentitemnum
  \li A third item
\endnumberedlist

\bye

...还有一个使用 xint 包:

\input xint.sty \relax

\def\currentitemnum{\xintDec{\number\itemnumber}}

\numberedlist
  \li Here's an item
  \li And this is another and it's marker is: \currentitemnum
  \li A third item
\endnumberedlist

\bye

答案3

我知道这个帖子被标记为 eplain,但我的意思是展示在 OPmac 中解决的相同问题只是为了比较会很有用。OPmac 是另一个基于纯 TeX 的简单宏包,就像 eplain 一样。

首先。上述问题不会发生,因为\itemnum它有其当前值:

\input opmac

\begitems \style n
* This is first item.
* This second item has a number \the\itemnum.
* This is the last item.
\enditems

\bye

项目

当然,您也可以在列表中添加该项目的参考内容:

\input opmac

\begitems \style n
* This is first item.
* \label[this]\wlabel{\the\itemnum}This second item has its number.
* This is the last item.
\enditems

The item \ref[this] is mentioned at the page \pgref[this].
% prints as: The item 2 is mentioned at the page 1.

\bye

如果您声明,\hyperlinks\Blue\Blue那么引用实际上将变成一个链接。

相关内容