我想在字符串变量中包含一些括号:
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\str_new:N \l_example_var
\int_new:N \l_example_int
\str_set:Nn \l_example_var {\{}
\str_put_right:NV \l_example_var {\l_example_int}
\str_put_right:Nn \l_example_var {\}~some~text}
\str_show:N \l_example_var
\ExplSyntaxOff
\end{document}
不幸的是,这会导致括号前面出现令人讨厌的反斜杠:
> \l_example_var=\{0\} some text.
<recently read> }
l.13 ^^I\str_show:N \l_example_var
我怎样才能去掉括号前面的反斜杠?例如\l_example_var={0} some text.
答案1
我不确定这样的字符串有什么好处{42}
,也许你需要一个标记列表。然而,
\str_set:Nx \l_example_str { \c_left_brace_str \int_use:N \l_example_int \c_right_brace_str }
就行了。对于令牌列表,它类似
\tl_set:Nx \l_example_tl { { \int_use:N \l_example_int } }
答案2
显然,{
和}
“字符串”应在字符串中按字面意思出现,因此添加它们的一种方法是使用\c_left_brace_str
和\c_right_brace_str
以及宏V
的修饰符\str_set:Nn
还有其他文字字符串常量,例如\c_hash_str
或\c_dollar_str
,它们实际上是带有 catcode 12 的常量标记列表。请参阅当前interface3
手册第 75 页(截至 2018/12/27)。
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\str_new:N \l_example_var
\int_new:N \l_example_int
\str_set:NV \l_example_var \c_left_brace_str
\str_put_right:NV \l_example_var \l_example_int
\str_put_right:NV \l_example_var \c_right_brace_str
\str_put_right:Nn \l_example_var {~some~text}
\str_show:N \l_example_var
\ExplSyntaxOff
\end{document}
输出为
这是 pdfTeX,版本 3.14159265-2.6-1.40.19(TeX Live 2018)
(预加载格式=pdflatex)\write18 已启用。进入扩展模式
(./stringwith.tex LaTeX2e <2018-12-01>
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/article.cls
文档类别:文章 2018/09/03 v1.4i 标准 LaTeX 文档类别
(/usr/local/texlive/2018/texmf-dist/tex/latex/base/size10.clo)
(/usr/local/texlive/2018/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2018/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2018/texmf-dist/tex/latex/l3kernel/l3pdfmode.def)
(./stringwith.aux)
\l_example_var={0} 一些文本。}
l.16 \str_show:N \l_example_var
? x 没有输出页面。记录写在 stringwith.log 上。