在阅读了 egreg 的回答后没有空间容纳新的\dimen我有这个问题:
这etex 软件包当某种寄存器类型的正常寄存器池耗尽时,切换到扩展寄存器池。
对于一\newinsert
,\count
需要\dimen
、\skip
、 和\box
每一个,并且它们应该具有相同的“数字”。
\reserveinserts{...}
可以保留一些插入并强制使用\count
、、和寄存器进入扩展寄存器池。\dimen
\skip
\box
是否可以重新定义\newinsert
使用扩展寄存器池中的\count
、\dimen
、\skip
和\box
寄存器?(以及:为什么不行或如何做?)这将增加可能插入的数量(无论是通过更多浮点数,大脚/曼尼福特或手动)增加约 100 倍(!)(\et@xins
从 32768 开始并分配插入 32767、32766,...)。
答案1
答案是肯定的“不”,不是因为宏限制(可以解决),而是因为即使使用较新的引擎,最大\insert
数量仍为 255,至少对于 pdfTeX 和 XeTeX 而言。因此,如果您尝试
\insert256{}
使用其中一个引擎,你会得到错误
! Bad register code (256).
<to be read again>
{
l.1 \insert256{
e-TeX 手册明确指出插入类不由 e-TeX 扩展,因此这是定义的行为。
LuaTeX 的情况似乎有所不同:这不会在插入更高编号时产生错误。LuaTeX 文档解释说寄存器扩展到 16 位数字,并列出了受影响的寄存器,但未在此列表中提及。因此,使用 LuaTeX 可能可以超越寄存器 255,但目前没有记录。要允许 LuaTeX 访问更高的寄存器编号进行插入,只需在加载后\insert
更改 的值,例如\et@xins
etex.sty
\csname et@xins\endcsname=65535 %
将从最高可能的寄存器号开始向下工作。