标签溢出解决方法不再有效

标签溢出解决方法不再有效

LaTeX 显然具有 13 个制表位寄存器。

2009 年左右发布的一个解决方法建议

\makeatletter
\countdef\@maxtab=30
\makeatother

这会占用 LaTeX 中为制表位分配的 13 个寄存器以外的寄存器。它工作了一段时间,但现在不行了,所以我猜它现在占用的寄存器比现在使用的寄存器更重要。

是否可以通过其他方式增加制表位寄存器的数量?

我有一个文档需要 15 个制表位。以前可以,但从 texlive/2022 开始就不行了。

texlive/2022 是随 Debian 10 分发的。我还没有尝试从 ctan 下载更新的 texlive(有吗?)而且我还没准备好升级到 Debian 12。

答案1

这从来就不安全,它践踏了制表、表格、数组等使用的内部寄存器……

我使用 latex 已有 30 多年,但从未发现它的用途tabbing,但如果您想扩展它,只需复制原始代码,但要添加更多内容。这会丢失当前分配的寄存器,但由于现在有 32,000 个 dimen 寄存器,所以这不是问题所在。

\makeatletter
\chardef\@firsttab=\the\allocationnumber
%13 
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa
%26
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa
%39 
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
\newdimen\@gtempa
% .....
\chardef\@maxtab=\the\allocationnumber
\dimen\@firsttab=0pt
\makeatletter

实际上您需要检查它们是否连续,因此全部小于 256 或全部大于 256。

另一种方案是,假设你从未分配 2000 dimen,那么使用该范围内的寄存器

\makeatletter
\chardef\@firsttab=2000
\chardef\@maxtab=2040 % or however many you need.
\dimen\@firsttab=0pt
\makeatletter

相关内容