使 catchfile 與 pgffor 的 foreach 一起工作

使 catchfile 與 pgffor 的 foreach 一起工作

考慮以下 MWE,摘自我的解決方案這個問題

\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}

它產生

預覽

請注意第一個清單的最後一個元素中的額外空格以及第二個清單的最後一個元素的折疊。

我無法理解為什麼每個清單的最後一個元素會被不同地對待。

知道如何解決這個問題嗎?

答案1

問題是輸入檔案末尾自動隱含的結束行。

我刪除了所有虛假空格以使輸出更清晰。

\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}

在此輸入影像描述

相關內容