expl3 表达式和返回

expl3 表达式和返回

在我尝试去理解时,expl3我遇到了瓶颈,我无法弄清楚如何存储函数的结果。

例如,在伪代码中我想要做的是这样的,将的第二个字符tempstring(即字符b)存储在otherstring不改变的情况下tempstring

string tempstring = abcde
string otherstring = tempstring[2]

print tempstring
print otherstring

这将导致输出abcde b

在下面的expl3代码中我相信我已经正确声明了我的变量,但是我执行操作的第 4 行不起作用。

\tl_new:N \templist
\tl_new:N \otherlist

\tl_set:Nn \templist {abcde}
\tl_set:Nn \otherlist {\tl_item:Nn \templist {2}}
\templist
\otherlist

我原本期望这abcde b也能输出,但是没有。

但不幸的是,\otherlist = \templist它似乎也不符合我的需要。

我也尝试过,\tl_set_eq:Nn \otherlist {\tl_item:Nn \templist {2}}但也没有用。


我已经编辑了代码来显示一个最小的错误示例,显然我上面写的内容运行良好。

再次编辑后,我发现了我的错误。David 是正确的。在我的主代码中,我忘记了:Nn后面的内容\tl_item

答案1

代码按照您描述的运行(最好提供显示错误的完整文档?)

在此处输入图片描述

\documentclass{article}
\usepackage{expl3}
\begin{document}

\ExplSyntaxOn

\tl_new:N \templist
\tl_new:N \otherlist

\tl_set:Nn \templist {abcde}
\tl_set:Nn \otherlist {\tl_item:Nn \templist {2}}

\ExplSyntaxOff

\templist

\otherlist

\end{document}

请注意,这定义\otherlist为提取第二个标记。如果您希望它是该结果,请使用

\tl_set:Nx \otherlist {\tl_item:Nn \templist {2}}

b两种情况下的视觉输出是相同的。

相关内容