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