Ich habe einen Code von @DavidCarlisle, der Ausgabe-txt-Dateien generiert, und ich möchte alle Ausgabedateien in einer pgfplots-Tabelle zusammenfassen.
Also versuche ich hinzuzufügen
\ifnum\the\filecount=1 \pgfplotstableread[col sep=comma]{data1.txt}{\main} \else {.........} \fi
Dies ergibt jedoch nur einige seltsame Omegas und \pgfplotstabletypeset[col sep=comma]{\main}
funktioniert nicht.
Was muss ich tun?
\documentclass[a4paper]{article}
\usepackage{pgfplotstable}
\newcount\filecount
\newwrite\cisout
\begin{document}
{
\endlinechar=\newlinechar%
\filecount=1 %
\def\aaa{file number \the\filecount}%
\loop%
\immediate\openout\cisout=data\the\filecount.txt %
\immediate\write\cisout{%
111, 222, \aaa
}%
\immediate\closeout\cisout %
\advance\filecount by 1 %
\ifnum\filecount<5 %
\ifnum\the\filecount=1 \pgfplotstableread[col sep=comma]{data1.txt}{\main} \else\fi
\repeat %
}%
\section{pgfplotstable Test - bad}
%\pgfplotstabletypeset[col sep=comma]{\main}
\dots and some bad Omegas above\dots
\section{input Test - good}
\input{data1.txt}
\input{data3.txt}
\end{document}
Antwort1
Sie tun dies \ifnum\filecount=1
, wenn der Zähler bereits erhöht wurde, sodass der Code dafür \pgfplotstableread
nie ausgeführt wird.
Außerdem, selbst wenn Sie es ausführen können, \loop
ist das Ganze in einer Gruppe und \main
wird daher am Ende der Gruppe vergessen.
Die Omegas wurden hergestellt, weil \fi
nicht gefolgt wurde %
.
Hier ist ein funktionierender Code, obwohl Ihr Ziel nicht klar ist.
\documentclass[a4paper]{article}
\usepackage{pgfplotstable}
\newcount\filecount
\newwrite\cisout
\begin{document}
\filecount=1
\def\aaa{file number \the\filecount}%
\loop
\immediate\openout\cisout=data\the\filecount.txt
\immediate\write\cisout{%
111, 222, \aaa
}
\immediate\closeout\cisout
\ifnum\the\filecount=1 \pgfplotstableread[col sep=comma]{data1.txt}{\main}\fi
\advance\filecount by 1
\ifnum\filecount<5
\repeat
\section{pgfplotstable Test - bad}
\pgfplotstabletypeset[col sep=comma]{\main}
\section{input Test - good}
\input{data1.txt}
\input{data3.txt}
\end{document}
Antwort2
Ist es letztendlich das, was Sie erreichen möchten?
\documentclass[a4paper]{article}
\usepackage{pgfplotstable}
\newcount\filecount
\newwrite\cisout
\begin{document}
{
\filecount=0
\immediate\openout\cisout=data1.txt
\immediate\write\cisout{a, b, c}% write header
\loop\ifnum\filecount<5
\advance\filecount by 1
\immediate\write\cisout{111, 222, \the\filecount }%
\repeat% no \fi needed
\immediate\closeout\cisout
\pgfplotstableread[col sep=comma]{data1.txt}{\main}%
\pgfplotstabletypeset\main
\end{document}
Diese Version verwendet \foreach
.
\documentclass[a4paper]{article}
\usepackage{pgfplotstable}
\newwrite\cisout
\begin{document}
\immediate\openout\cisout=data1.txt
\immediate\write\cisout{a, b, c}% write header
\foreach \i in {1,..., 5}%
{\immediate\write\cisout{111, 222, \i }}%
\immediate\closeout\cisout
\pgfplotstableread[col sep=comma]{data1.txt}{\main}%
\pgfplotstabletypeset\main
\end{document}