在使用该tabularray
包时,我尝试使用操作表内计数器的宏,如下所示:
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\newcounter{dbg}
\newcommand{\ctr}{\refstepcounter{dbg}\arabic{dbg}}
\ctr
\ctr
\ctr
\begin{tabular}{ccc}
\ctr & \ctr & \ctr \\
\ctr & \ctr & \ctr \\
\end{tabular}
\begin{tblr}{ccc}
\ctr & \ctr & \ctr \\
\ctr & \ctr & \ctr \\
\end{tblr}
\end{document}
该\ctr
宏在表格外部和常规范围内运行良好tabular
,但在内部tabularray
,结果却……大得惊人。
它看起来像是tabularray
内部多次扩展了宏。
这\NewTableCommand
机制不允许生成单元格文本,因此它似乎对我没有帮助。有(有点有限)expand
选项,但我没有看到它对此有任何影响,也没有找到一种方法来偷偷地加入\protect
或\noexpand
使其工作。将计数和打印拆分为两个命令,一个\NewTableCommand
定义命令用于步进计数器,一个常规命令用于打印它几乎可以工作,但是所有步骤都是在设置表格之前完成的,因此所有单元格都会显示计数器的最终值。
有没有什么方法可以tabularray
按预期扩增我的细胞?
答案1
该包多次评估正文以进行试排版,其 github 中有一个关于此问题的问题。添加了代码以允许根据 tabularx 用于保留计数器的机制保留计数器
https://github.com/lvjr/tabularray/discussions/83以及相关问题
如图所示,在最新版本中,您可以使用
\UseTblrLibrary{counter}
它加载修复此问题的代码(通过存储和恢复计数器值)。