这是宏功能的一个示例,其功能如下:遍历间隔的字符串并打印每个部分的首字母。
\newcommand\text{\StrSubstitute{a b c}{ }{,}}
\foreach \i in \text{
\StrLeft{\i}{1} ,
}
但显然,\StrLeft
当迭代结束时,我无法使用或任何其他方法,而我已经对 StrSubstitute 执行了这些操作。这是为什么?错误消息:
! Paragraph ended before \reserved@a was complete.<to be read again>\par }
! Paragraph ended before \reserved@a was complete.<to be read again>\par }
! Missing control sequence inserted.<inserted text>\inaccessible }
但下面的方法确实有效:
\newcommand\text{\StrSubstitute{a b c}{ }{,}}
\foreach \i in \text{
\i
}
\newcommand\text{a,b,c}
\foreach \i in \text{
\StrLeft{\i}{1} ,
}
答案1
首先,选择\text
作为命令名并不好,因为amsmath
使用它。然而,这不是重点。
最大的问题\text
是不是列表a,b,c
,而是生成该列表的一组指令。
你比较幸运
\StrSubstitute{a b c}{ }{,}[\mytext]
\foreach\i in \mytext{%
\StrLeft{\i}{1}, %
}
现在\mytext
包含替换的结果。
完整示例,尽管不清楚用例是什么:
\documentclass{article}
\usepackage{tikz,xstring}
\begin{document}
\StrSubstitute{a b c}{ }{,}[\mytext]
\foreach\i in \mytext{%
\StrLeft{\i}{1}, %
}
\end{document}