我想知道如何正确使用 LaTeX3 字符串。请考虑以下代码:
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\tl_new:N \l_foo
\tl_set:Nn \l_foo {\"a}
\str_new:N \l_bar
\str_set:Nn \l_bar {\"a}
foo = \tl_use:N \l_foo \\
bar = \str_use:N \l_bar
\ExplSyntaxOff
\end{document}
我期望得到以下输出
foo=ä
bar=ä
但实际上我得到了以下
foo=ä
bar=“”a
我是否必须在 LaTeX3 字符串中对变音符号进行一些特殊处理?除此之外,何时使用 astr
和何时使用有什么建议tl
?两者有什么好处吗?我的背景是,我正在开发一个包,其中的一些变量留给用户以自定义输出。
答案1
在 TeX 中,因此在 中expl3
,字符串具有非常具体的含义。字符串是标记的集合,其中空格(字符代码 32)属于类别空间(类别代码 10),而所有其他标记都属于类别“其他”(类别代码 12)。这是标记列表这一更一般概念的一个特例,它是任意类别代码的标记的集合。
我们有 atl
和 astr
数据类型,expl3
因为后者对于“标记”字符串值很重要的程序化用途很有用。然而,从技术层面上讲,没有理由不能将它们称为tl
s。对于存储文本为了排版你总是想保留意义,所以str
不合适:你想要tl
。