![扫描字符串中的字符](https://linux22.com/image/411629/%E6%89%AB%E6%8F%8F%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6.png)
我想要做的是获取一些输入字符串,单独处理每个字符或“标记”,并根据所述字符/标记输出一些内容。有办法做到这一点吗?也许看起来像这样:
\for\char\in#1
\ifx\char\textbackslash
...
\fi
...
\fi
答案1
该tokcycle
包旨在循环输入标记,并根据标记是“字符”、组、宏/命令序列还是空格采取行动。
这些指令允许对标记应用条件测试以实现所需的输出。在这里,我在每个字符标记周围都加上了括号,除了e
,我将 加粗。如果宏是\today
,则将其设置为斜体,如果是\textbackslash
,则为\fbox
ed---否则,它只是回显到输出。空格将转换为\textvisiblespace
s,同时还允许换行。
值得注意的是,除非有人希望故意排除这种情况,否则标记循环可以进入组内容。它以伪环境形式显示如下,但也有宏形式。
\documentclass{article}
\usepackage{tokcycle}
\begin{document}
\tokencycle
{\ifx e#1\addcytoks{\textbf{#1}}\else\addcytoks{(#1)}\fi}%
{\processtoks{#1}}%
{\ifx\today#1\addcytoks{\textit{#1}}\else
\ifx\textbackslash#1\addcytoks{\fbox{#1}}\else\addcytoks{#1}\fi\fi}%
{\addcytoks{\textvisiblespace\allowbreak}}%
These are \underline{difficult times}, \today{} of all days!
Note that I seek out instances of \textbackslash today in order to make
it italic. Paragraphs are not a problem.
\endtokencycle
\end{document}