LaTeX3 中的标记列表与序列

LaTeX3 中的标记列表与序列

想知道标记列表是否可用于管理属性列表集合,并从中创建序列,或者是否seq需要使用属性列表集合。也就是说,似乎 seq 的功能封装在标记列表中,但目前我还不能确定。

例如,和seq都有tlseq_put_lefttl_put_left以及其他类似的方法。

不确定从阅读文档如果您实际上可以将属性列表作为项目存储在标记列表中。查看有关如何从头开始从标记列表构建 seq 或 prop 列表的伪代码将很有帮助,以便更好地处理实现。

答案1

您提到了三种数据类型:

  1. 代币列表;
  2. 序列;
  3. 财产清单。

请注意,“标记列表”也用于更广义的用途,即传递给 TeX 进行后续处理的任何东西。因此,在指代狭义时,最好说“标记列表变量”。

类型 (标记列表) 的变量tl保存单个对象,但可以以各种方式处理该对象(通过拆分或在任一端扩充它)。

类型 (序列) 的变量seq是一组线性排序的项目(广义上每个项目都是一个标记列表),可以在任一端进行扩充,但每个项目都构成一个单元并由整数索引。

类型 (属性列表) 的变量prop是按键索引的无序项目集。

选择哪种变量类型取决于应用程序。 类型的变量tl比其他两种类型的变量要严格得多。 例如,如果你这样做

\seq_put_right:Nn \l_tmpa_seq {abc}
\seq_put_right:Nn \l_tmpa_seq {def}

这两个项目abcdef被分开存储;

\tl_put_right:Nn \l_tmpa_tl {abc}
\tl_put_right:Nn \l_tmpa_tl {def}

您无法再从变量中检索abc或作为一个单位。def

将 a 转换seq为 atl很容易:

\tl_set:Nx \l_tmpa_tl { \seq_use:Nn \l_tmpa_seq { } }

相关内容