tabularray:表内的宏和计数器

tabularray:表内的宏和计数器

在使用该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,结果却……大得惊人。

上面显示的 LaTeX 代码的屏幕截图,其中显示一行包含 1 2 3,一个包含数字 4 至 9 的表格,以及一个包含数字 29、32、35、38、41、44 的表格

它看起来像是tabularray内部多次扩展了宏。

\NewTableCommand机制不允许生成单元格文本,因此它似乎对我没有帮助。有(有点有限)expand选项,但我没有看到它对此有任何影响,也没有找到一种方法来偷偷地加入\protect\noexpand使其工作。将计数和打印拆分为两个命令,一个\NewTableCommand定义命令用于步进计数器,一个常规命令用于打印它几乎可以工作,但是所有步骤都是在设置表格之前完成的,因此所有单元格都会显示计数器的最终值。

有没有什么方法可以tabularray按预期扩增我的细胞?

答案1

该包多次评估正文以进行试排版,其 github 中有一个关于此问题的问题。添加了代码以允许根据 tabularx 用于保留计数器的机制保留计数器

https://github.com/lvjr/tabularray/discussions/83以及相关问题

如图所示,在最新版本中,您可以使用

\UseTblrLibrary{counter} 

它加载修复此问题的代码(通过存储和恢复计数器值)。

相关内容