token-lists

在 LaTeX3 中,哪种数据类型最适合存储、解析和输出自由用户输入?
token-lists

在 LaTeX3 中,哪种数据类型最适合存储、解析和输出自由用户输入?

我正在开发一个小型解析器,它接受免费的用户输入并将某些输入解释为命令。例如,解析器将其解释+为\oplus或[为“以括号作为分隔符启动预配置数组”。解析器最终将能够方便地插入语言学中使用的某种数据结构(称为 AVM),而 CTAN 上目前没有这种数据结构的软件包。 解析器目前基于循环遍历输入标记列表 (wit \tl_map_inline:nn)。但循环遍历用户输入中的空格和控制序列让我头疼。例如,用户输入可能包含: Hello World \textit{Hello World} 由于\tl_map_inline:nn循环遍历标记列表的项目,输出将...

Admin

计算具有特定值的条目数
token-lists

计算具有特定值的条目数

假设我有一个包含相当多条目的列表(所有整数值,如果相关的话),例如, 1 2 4 0 3 1 0 0 2 1 7 1 4 2 3 0 0 6 5 2 1 2 3 0 LaTeX 能否以某种方式计算出上面列表中0's、1's、...、 's的数量?7 PS 所有解决方案均可接受,但最好使用 LaTeX 3 版本。 更新 使用egreg 的代码,为什么以下只返回 ,0以及我怎样(如果可能的话)仍然使用所有的\defs 并获得正确的结果? \documentclass{article} \usepackage{ xparse, l3rege...

Admin

Latex3:将空标记列表传递给另一个命令并将其检测为空标记列表
token-lists

Latex3:将空标记列表传递给另一个命令并将其检测为空标记列表

我正在对一些 token 进行排序代币列表使用 latex3 的优秀功能(参见下面的命令\nom)。这些标记有时可能为空,当它们为空时,它们将触发另一个命令中的不同条件,下面称为 \amc。问题是,当接收中的参数时,\amc它们不会被检测为空。因此,条件永远不会被触发。 我已经尝试过通过\clist_if_empty:NTF \l__wdsgn_notation_subscript_clist {**HERE**} { \clist_use:Nn \l__wdsgn_notation_subscript_clist {,} } 一片空旷的田野{} 空常数...

Admin

了解 tblr 环境中的扩展
token-lists

了解 tblr 环境中的扩展

我试图理解标记和扩展在以下问题中的工作方式。我想通过一个命令tblr从包中创建一个环境,该命令以编程方式执行一些格式化。不幸的是,环境不喜欢这样。下面显示了一个最小的工作示例。如果我手动将单元格 (1, 2) 和 (1, 3) 涂成橙色,则不会出现任何问题:tabularraytblr \documentclass{article} % Packages \usepackage{tabularray} \usepackage{xcolor} % Commands \newcommand{\someRow}{1} \newcommand{\someColu...

Admin

替换标记列表中的占位符标记
token-lists

替换标记列表中的占位符标记

我正在尝试编写一些代码来替换标记列表中的几个占位符标记,但由于我对 latex3 还很陌生,所以遇到了障碍。 目前,我没有得到任何结果,也没有错误,所以我怀疑我应该使用除标记列表之外的其他东西作为占位符标记...... \documentclass{article} \begin{document} \ExplSyntaxOn % placeholder tokens \tl_new:N \VALUE \tl_new:N \SYMBOL \cs_set:Npn \test:nnnn #1#2#3#4 { \tl_clear:N #4 ...

Admin

最小工作示例
token-lists

最小工作示例

expl3又一次打败了我,所以我又要依赖陌生人的善意。 我认为根本问题更多在于分割输入而不是文件读取。 语境: 我想将参数加载到geometry包裹\geometry{}使用 从文件中执行 命令。expl3我尝试了至少 4 种读取文件的方法。但无论我如何加载文件,整个内容都会\geometry{}作为单个标记/字符串/块/事物传递,因为geometry包抱怨整个事物top=2cm,bottom=2cm不是有效的密钥Package keyval Error: top=2cm,bottom=2cm undefined.,但如果我将其放入\geometry{top...

Admin

再次出现扩展问题
token-lists

再次出现扩展问题

我似乎一直遇到同样的问题。为了更多地了解扩展,我编写了一个程序,该程序以 1 的序列开始,然后在每一步之后将其递增以生成 2 的序列,等等。然后,生成的所有不同序列必须tikz以以下格式显示在矩阵中: 我使用了以下代码: \documentclass[11pt]{article} \usepackage{tikz} \usetikzlibrary{matrix} \ExplSyntaxOn \NewDocumentCommand{\indexprod}{ m } % indices { \seq_set_from_clist:Nn \l_...

Admin

TeXbook 练习 8.6
token-lists

TeXbook 练习 8.6

练习 8.6。假设纯 TEX 的类别代码有效,但字符^^A、^^B、^^C分别^^M属于类别 0、7、10 和 11。从(相当荒谬的)输入行 产生了哪些标记^^B^^BM^^A^^B^^C^^M^^@\M␣?(请记住,此行后面跟着 ⟨return⟩,即^^M;并回想一下^^@表示 ⟨null⟩ 字符,当 INITEX 开始时,它的类别为 9。) 回想一下,0代表转义,7代表上标,10代表空格,11代表字母。 给出的答案是: ^^B7 ^^B7 M11 |^^B| ␣10 ^^M7 |M^^M| . (我习惯用|cs|“cs”来表示控制序列名称。...

Admin

LaTeX3 如何在标记列表/字符串中使用预定义命令的内容/值?
token-lists

LaTeX3 如何在标记列表/字符串中使用预定义命令的内容/值?

首先,我想对于有经验的人来说,这将是一个非常简单的答案expl3。但对我来说,这是新的,我非常愿意学习这些东西以更好地理解 Latex3。所以我希望在这里得到一些专业的帮助。 我想要实现的目标如下: 首先是一个用户定义的命令,内容是一个简单的句子。假设\NewDocumentCommand{\testcommand}{}{A Test Sentence for expl3} 现在我想存储内容命令的标记列表或字符串。这样就可以打印/使用或计数。后者是必需的,因为我想在 if 条件中使用字符数,该条件根据总计数激活不同的命令。 我的 MWE 如下所示: \doc...

Admin

提供给 TikZ 范围的令牌列表失败
token-lists

提供给 TikZ 范围的令牌列表失败

我想动态构建一个链表,然后在中使用它tikzpicture,如下所示: \documentclass{article} \usepackage{tikz} \usepackage{xstring} \usetikzlibrary{chains} \newtoks\stch \ExplSyntaxOn \NewDocumentCommand \ForEach { O{1} m O{1} +m } { \int_step_inline:nnnn {#1} {#3} {#2} {#4} } \ExplSyntaxOff \parindent0pt ...

Admin

将标记列表结果与字符串进行比较
token-lists

将标记列表结果与字符串进行比较

我有一个命令(超出了我的控制范围)评估为一个标记列表,并且我想将它与给定的字符串进行比较,我尝试遵循这回答并创建一个变体\tl_if_eq: \ExplSyntaxOn \NewDocumentCommand{\cmp}{mm} { \tl_set:Nn \l_r_tl { #1 } \cs_generate_variant:Nn \tl_if_eq:nnTF { o } \tl_if_eq:onTF { \l_r_tl } { #2 } { True } { False } %% I also tried: % \...

Admin

令牌读/写将#变成##
token-lists

令牌读/写将#变成##

当我尝试将用户在标记列表中给出的输入写入文件时,它会变成#,##因此如果用户想要写入\def\hello#1{Hello #1!},而不是写入: \def\hello#1{Hello #1!} 正如预期的那样我得到: \def \hello ##1{Hello ##1!} 知道如何让它工作吗?理想情况下,我想避免要求用户更改他们的输入。 平均能量损失 \documentclass{article} \newtoks\mytokens \newwrite\myWrite \NewDocumentCommand{\writeInFile}{m}{% ...

Admin

操作列表然后将其作为可选参数传递
token-lists

操作列表然后将其作为可选参数传递

我想删除 给出的一个键#1,然后将修改后的列表传递给\lstinline[<modified list>]$#2$。我可以删除元素,但不知道将其余元素传递给 的语法\lstinline。 \documentclass{article} \usepackage{listings} \ExplSyntaxOn \tl_new:N \l__aljumaily_target_tl \clist_new:N \l__aljumaily_elements_tl \NewExpandableDocumentCommand{\inline}{O{}m}{ ...

Admin

自动列出文档中的作者
token-lists

自动列出文档中的作者

我有一个命令\by{ }可以让我列出这样的文章的作者: \by{ {author 1}{tagline} \\ {author 2}{tagline} \\ {author 3}{tagline} \\ <etc.> } 我想将、、等存储author 1在author 2某种author 3列表中,并像这样打印该列表: author 1 \\ author 2 \\ author 3 \\ <etc.> 我还希望能够手动添加名称(即未使用的名称\by)。例如,名称Jane。 重要的是,每个名字只出现一次在列表中。如果author...

Admin

如何停止将 ^^M 转换为空格?
token-lists

如何停止将 ^^M 转换为空格?

是否可以^^M在 token 列表中显示?现在它只是转换为空格,但我需要它在 token 中可见。这是代码: \documentclass{article} \usepackage{iexec} \usepackage{environ} \newtoks\tempnotetoks \NewEnviron{note}{% \catcode`\\=12% \tempnotetoks=\expandafter{\BODY}% \iexec{echo '\the\tempnotetoks'}% } \begin{document} \begin{note...

Admin