\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.tex
,file_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}
可选参数可以包含在输入文件之前和之后分别执行的代码(没有必要)。