获取 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
那么引用实际上将变成一个链接。