LaTeX3:实现整数堆栈

LaTeX3:实现整数堆栈

我可以看到至少 3 种不同的方法来实现整数堆栈

  1. 使用序列 (seq)
  2. 使用逗号分隔列表 (clist)
  3. 带有整数数组(intarray)

第 1 点和第 2 点非常相似

当然这取决于用途,以下是一些我自己的目的的事实:

  • 堆栈的最大大小事先并不知道,但大约为 10 到 20
  • 堆栈操作的调用频率与分段命令一样高

如何在这些设计之间做出决定?

以下是使用 clist 的 POC:

\documentclass{minimal}
\begin{document}
\ExplSyntaxOn

\int_new:N \l_my_int
\clist_new:N \l_my_stack

\int_set:Nn \l_my_int { 421 }
\clist_push:Nx \l_my_stack { \int_use:N \l_my_int } % push 421
\clist_log:N \l_my_stack
\int_set:Nn \l_my_int { 123 }
\clist_push:Nx \l_my_stack { \int_use:N \l_my_int } % push 123
\clist_log:N \l_my_stack

\int_set:Nn \l_my_int { 0 } % reset

\clist_pop:NN \l_my_stack \l_tempa_tl
\int_set:Nn \l_my_int { \l_tempa_tl }
\int_log:N \l_my_int % retrieve 123

\clist_pop:NN \l_my_stack \l_tempa_tl
\int_set:Nn \l_my_int { \l_tempa_tl }
\int_log:N \l_my_int % retrieve 421

\end{document}

日志文件内容如下

The comma list \l_my_stack contains the items (without outer braces):
>  {421}.
The comma list \l_my_stack contains the items (without outer braces):
>  {123}
>  {421}.
> \l_my_int=123.
> \l_my_int=421.

可以clist用替换seq,得到相同的结果。

相关内容