expl3

为什么这个 \regex_split:nnN 会导致错误并插入“{”?
expl3

为什么这个 \regex_split:nnN 会导致错误并插入“{”?

我正在expl3尝试一些高阶编程。在此示例中,我定义了一个环境,然后对该环境执行了一项操作: \documentclass{article} \usepackage[T1]{fontenc} \usepackage{expl3} \usepackage{amsmath, amssymb} \begin{document} \ExplSyntaxOn \prop_new:N \l_files_prop \newcommand{\addConfig}[2]{ \prop_put:Nnn \l_files_prop {#1} {{#2}} } \new...

Admin

expl3 - 迭代不重叠的对并对每个项目应用宏
expl3

expl3 - 迭代不重叠的对并对每个项目应用宏

这个问题类似于这个但并不完全相同。 以下“没有做我需要的事情” MWE 来自这个答案。 我还没有找到如何让它发展,比如对不重叠的夫妇进行迭代。 重要的 !用竖线分隔的参数数量始终是奇数。 \documentclass{article} \usepackage{xparse} \ExplSyntaxOn \NewExpandableDocumentCommand \multiapplycouple { m +m } { \mbc_multiapply_pair:Nn #1 {#2} } \cs_new:Npn \mbc_mult...

Admin

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

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

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

Admin

newcommand、pgfplotsinvokeforeach、expl3:如何处理多个‘#…’类型的参数
expl3

newcommand、pgfplotsinvokeforeach、expl3:如何处理多个‘#…’类型的参数

我有#1我的 newcommand。 我有##1我的 pgfplotsinvokeforeach-loop。 现在我需要类似###1我的比较方法“ \fpcompareTF{##1<0}{333}{##1}”的东西。 这里正确的方法是什么? \documentclass[a4paper, landscape=false]{article} \usepackage{amsmath, amssymb, amsfonts} \usepackage{pgfplotstable} \pgfplotsset{compat=1.16} % fp-comp...

Admin

LaTeX3 相当于 C 枚举类型
expl3

LaTeX3 相当于 C 枚举类型

我必须存储非二进制状态,哪种 LaTeX3 方式更符合习惯?例如,假设有 3 种可能的格式手稿:长/短/中。在 LaTeX3 中最好的方法是什么? 我能想到多种可能性: 定义一堆int_const常量(固定为 1、2、3 等)来命名可能的状态,然后使用全局整数int_new来存储当前状态。 这看起来很简单,但也非常昂贵。如果我的理解正确的话,在当前的 LaTeX3 设计中,每个整数常量都占用一个计数器寄存器。 使用标记来表示可能的状态。在这种情况下,为了便于阅读,我希望在代码中使用之前声明用于可能状态的标记。因此,可以有一个tl_const(对于每个...

Admin

命令以逗号分隔命令
expl3

命令以逗号分隔命令

我正在尝试创建一个名为的命令\newcscommand,它允许我定义用逗号分隔的值的命令。 以下是我目前所掌握的信息 \documentclass{article} \usepackage{xparse} \newcommand{\newcscommand}[3]{ \NewDocumentCommand{ #1 }{ >{\SplitArgument{#2 - 1}{,}}m }{\csname aux\endcsname##1} % the auxiliary command should be named 'auxtest' inste...

Admin

LyX 在使用 mhchem 的 expl3 中给出未定义的控制序列
expl3

LyX 在使用 mhchem 的 expl3 中给出未定义的控制序列

我最近开始使用 LyX 和 mhchem 来排版化学式,从命令行使用时一切正常pdflatex,但不知何故 LyX 会报错,提示控制序列错误expl3-code.tex。有趣的是,如果我按“仍然显示输出”,它仍然可以正常呈现。 我以为我的 MacTeX 安装可能不正确,所以我重新安装了它,然后我注意到 mhchem 和 LyX 运行正常。仅在 TeX Live 中将所有软件包更新到最新版本后才会出现此问题。我认为这可能是 expl3 中向后不兼容的变化。 mhchem:v4.08 l3kernal:发布日期 2019-09-05 LyX:2.3.3(我...

Admin

xparse 扩展的问题
expl3

xparse 扩展的问题

我正在尝试使用函数这个答案 \documentclass{article} \usepackage{xparse} \ExplSyntaxOn \NewExpandableDocumentCommand{\switchcondition}{ O{string} m m m } { \use:c { fraiman_#1_switch:nnn } { #2 } { #3 } { #4 } } \cs_new:Nn \fraiman_string_switch:nnn { \str_...

Admin

如何创建 dims 数组?
expl3

如何创建 dims 数组?

expl3 支持 int 数组。但是 dims 数组呢? 我需要一个整数索引数组变量,用于保存 dim 值。数组大小应该能够随时增长,而不是提前知道(我不知道它将保存多少 dim 值,大小取决于自定义环境的嵌套级别)。例如,如果计数器为 1,则数组大小为 1;如果计数器增长到 3,则数组应该增长到 3 个索引。 我需要类似下面的索引变量myDim。 myDim[1]=5.0pt myDim[2]=7.35pt ... 编辑: % \myDim = 0 here \begin{myEnv} % myDim[1] = 5.0pt; current i...

Admin

l3doc 中 @@ 替换的微妙之处
expl3

l3doc 中 @@ 替换的微妙之处

我正在尝试了解类@@中替换的确切语义l3doc。到目前为止,我从文档中收集到的信息如下: %<@@=name>在文档中出现声明之前没有发生替换。 当发生替换时,将按照字符序列(从左到右)的顺序尝试并替换以下模式: "@@@@" -> "@@" "__@@" -> "__" + name "_@@" -> "__" + name "@@" -> "__" + name \cmd替换发生在和的参数中\cs,除非replace=false在这些命令的可选参数中定义了。 function替换发生在和环境的第一个参数中...

Admin

LaTeX3 clist 可以包含夸克吗?
expl3

LaTeX3 clist 可以包含夸克吗?

介绍l3clist​interface3.pdf状态 此外,逗号列表不能存储夸克\q_mark或\q_stop。 但是,该部分的其他地方都没有提到这一点(与前一句中关于“ {,},或#(假设适用通常的 TEX 类别代码)”的警告相反,该警告在相关函数的描述中重复出现)。 我尝试将提到的夸克放入一个列表中并进行一些基本测试,一切似乎都运行良好: \documentclass{article} \usepackage[T1]{fontenc} \usepackage{expl3} \begin{document} \ExplSyntaxOn...

Admin

夸克是否必须被定义为向自身扩展的宏?
expl3

夸克是否必须被定义为向自身扩展的宏?

当我使用 expl3 的递归函数时,我曾多次遇到夸克被无意扩展的情况,在这种情况下,TeX 将进入无限扩展循环。(更烦人的是,在这种情况下,我的控制台对 Ctrl+C 没有反应,所以我必须手动终止该进程。) 所以我想知道夸克是否必须以这种自膨胀的方式定义。它们似乎有两种用例: 作为具有分隔参数的各种函数的分隔符,例如\q_recursion_stop。在这种情况下,夸克的定义甚至不重要,因为 TeX 的扩展机制只扫描具有该名称的标记,无论它是否被定义。 当比较一个 token 是否等于一个 quark 时,例如\quark_if_recursion_t...

Admin

\fp_eval 的输入清理
expl3

\fp_eval 的输入清理

是否有命令询问参数是否\fp_eval是解析错误?例如: \fp_if_valid:nTF { 1+2.3*2 } { yes } { no } % yes \fp_if_valid:nTF { 1+2.3* } { yes } { no } % no 我希望能够清理用户输入,如果他们的输入无效,则抛出我自己的错误。无论如何,我只是好奇是否有内置命令可以执行此操作,或者 latex3 团队是否打算添加此功能。我编写了以下代码,它似乎有效(感谢 Rob Hall 修复了一些错误): \documentclass{article} \usepackag...

Admin

为什么对于空的 l3seq 序列会出现“Missing = inserted for \ifnum”错误?
expl3

为什么对于空的 l3seq 序列会出现“Missing = inserted for \ifnum”错误?

我尝试使用expl3序列来存储datatool数据库中存储的 0、1 或多个作者的从属关系。以下 MWE 效果很好: \documentclass{article} \usepackage{xparse} \usepackage{datatool} \ExplSyntaxOn \DTLnewdb{_mymodule_authors} \seq_new:N \g_mymodule_author_affiliations_seq \keys_define:nn { mymodule/authors } { affiliation .code:n =...

Admin

\c_empty_box 是否可以代替 \mbox{}
expl3

\c_empty_box 是否可以代替 \mbox{}

乍一看,我理解\c_empty_box为的替代品\mbox{},但以下 MWE(指出的奇怪行为\c_empty_box:它被“æ”取代)让我产生了严重的怀疑。 \documentclass{article} \usepackage{xparse} \ExplSyntaxOn \tl_new:N \l_foo_tl% \tl_new:N \l_bar_tl% \tl_set:Nn \l_foo_tl {% \mbox{} \hfill Foo } \tl_set:Nn \l_bar_tl {% \c_empty_box \hfill Bar }...

Admin