Betrachten Sie das folgende MWE, extrahiert aus meiner Lösung fürdiese Frage:
\begin{filecontents*}{demolist1.dat}
1,2,3
\end{filecontents*}
\begin{filecontents*}{demolist2.dat}
{1,0,2},{0,3},{1,1}
\end{filecontents*}
\documentclass{article}
\usepackage{catchfile}
\usepackage{pgffor}
\CatchFileDef{\mylist}{demolist1.dat}{}
\CatchFileDef{\mynestedlist}{demolist2.dat}{}
\begin{document}
\foreach \x in \mylist {
``\x'' \quad
}
\hrulefill
\foreach \x in \mynestedlist {
\foreach \y in \x {
``\y'' \quad
}
\par
}
\end{document}
es produziert
Beachten Sie den zusätzlichen Platz im letzten Element der ersten Liste und den Zusammenbruch des letzten Elements der zweiten Liste.
Ich kann nicht verstehen, warum das letzte Element jeder Liste anders behandelt wird.
Irgendeine Idee, wie man das beheben kann?
Antwort1
Das Problem ist die Endzeile, die automatisch am Ende der Eingabedateien gesetzt wird.
Ich habe alle störenden Leerzeichen entfernt, um die Ausgabe klarer zu gestalten.
\begin{filecontents*}{\jobname1.dat}
1,2,3
\end{filecontents*}
\begin{filecontents*}{\jobname2.dat}
{1,0,2},{0,3},{1,1}
\end{filecontents*}
\documentclass{article}
\usepackage{catchfile}
\usepackage{pgffor}
\CatchFileDef{\mylist}{\jobname1.dat}{\endlinechar=-1 }
\CatchFileDef{\mynestedlist}{\jobname2.dat}{\endlinechar=-1 }
\begin{document}
\foreach \x in \mylist {``\x''\quad}
\hrulefill
\foreach \x in \mynestedlist {\foreach \y in \x {``\y''\quad}\par}
\end{document}