在 `\foreach` 循环中转义特殊字符

在 `\foreach` 循环中转义特殊字符

\foreach在循环调用文件名时,有没有办法转义变量名中的下划线(或其他特殊字符) ?例如,\foreach \x in {file\_1, name\_2}{Here is \x.}给出正确的输出(即“这是 file_1。这是 file_2”),但\foreach \x in {file\_1, name\_2}{\input{\x}}给出无法找到文件“file_1”的错误。

答案1

你只是不需要逃避_

\documentclass{article}
\usepackage{pgffor}

\begin{document}

\foreach \x in {file_1, file_2}{\input{\x}\par}

\end{document}

我有两个文件file_1.texfile_2.tex分别包含

I'm file 1

(以及2第二个文件中)。

在此处输入图片描述

请注意,\foreach它在组内工作,因此这可能不是最佳选择。另一种方法是使用expl3

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\multiinput}{+O{}m+O{}}
 {
  \clist_map_inline:nn { #2 } { #1 \input{##1} #3 }
 }
\ExplSyntaxOff

\begin{document}

\multiinput[Here: ]{file_1,file_2}[\par]

\end{document}

可选参数可以包含在输入文件之前和之后分别执行的代码(没有必要)。

在此处输入图片描述

相关内容