Das mit `expl3` definierte `\inputloop` kann zwei Sachen:
- Es kann Namen in einer Schleife konstruieren: `\inputloop{test0}[1-10]` wird die Dateien `test01.tex`, `test02.tex`, usw. bis `test010.tex` einbinden.
- Mit `\inputloop{test01.tex,test05.tex}` werden `test01.tex` und `test05.tex` eingebunden. Enthält der Dateiname ein Komma muss man natürlich `\inputloop{test01.tex,{file,with,comma.tex},test05.tex}` machen.
---
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\cs_new_protected:Npn \giovario_inputfile:n #1
{
\file_if_exist:nTF { #1 }
{
\msg_term:n { Inputting ~ #1 }
\file_input:n { #1 }
}
{
\msg_term:n { File ~ #1 ~ not ~ found! }
}
}
\cs_new_protected:Npn \giovario_intloop:nn \giovario_intloop:nww #1#2-#3\scan_stop:
{
\int_step_inline:nnnn { #2 } { 1 } { #3 }
{
\giovario_inputfile:n { #1 ##1 .tex }
}
}
\cs_new_protected:Npn \giovario_fileloop:n #1
{
\clist_map_inline:nn { #1 }
{
\giovario_inputfile:n { ##1 }
}
}
\NewDocumentCommand \inputloop { m o }
{
\IfNoValueTF { #2 }
{
\giovario_fileloop:n { #1 }
}
{
\giovario_intloop:nn \giovario_intloop:nww { #1 } #2 \scan_stop:
}
}
\ExplSyntaxOff
\begin{document}
\inputloop{test0}[1-10]
\inputloop{test01.tex,test05.tex}
\end{document}