tabularx 对 expl3 进行多次计数,但 LaTeX2 却不这样做?

tabularx 对 expl3 进行多次计数,但 LaTeX2 却不这样做?

我知道这tabularx会运行多次并导致计算不正确,因为有些计算进行了多次。

我有带计数器的 LaTeX2 代码,它在 tabularx 环境中运行良好,但与 expl3 相同的代码(但更灵活,可能有多个编号列表)会导致变量中的值错误。

这是因为计数器的行为不同吗?还是有其他原因?有没有一种简单的 expl3 解决方法?

\documentclass{article}

% this code works 

%\newcounter{numberedlistcounter}
%\newcommand{\resetnumberedlist}{%
%   \setcounter{numberedlistcounter}{0}}
%\newcommand{\numberedlistitem}{%
%   \stepcounter{numberedlistcounter}%
%   \thenumberedlistcounter}
%\newcommand{\numberitemsinlist}{%
%   \thenumberedlistcounter}

\ExplSyntaxOn

\NewDocumentCommand{\resetnumberedlist}{O{default}}
{
    \int_gzero_new:c { g__numberedlist_counter_#1_int }
}
\resetnumberedlist

\NewDocumentCommand{\numberedlistitem}{O{default}}
{
    \int_gincr:c { g__numberedlist_counter_#1_int }
    \int_use:c { g__numberedlist_counter_#1_int }
}

\NewDocumentCommand{\numberitemsinlist}{O{default}}
{
    \int_use:c { g__numberedlist_counter_#1_int }
}

\ExplSyntaxOff

\usepackage{tabularx}

\begin{document}

    \resetnumberedlist

\begin{tabularx}{\textwidth}{l}
    \numberedlistitem \\
    \numberedlistitem \\
\end{tabularx}

    number of items in list: \numberitemsinlist
    
\end{document}

答案1

tabularx\include重置所有分配有计数寄存器\newcountexpl3不参与此机制的latex 计数器(使用 的方法)。

相关内容