Catchfile mit foreach von pgffor kompatibel machen

Catchfile mit foreach von pgffor kompatibel machen

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

Vorschau

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}

Bildbeschreibung hier eingeben

verwandte Informationen