Listen / pgfplotstable: Wie kann ich mehrere Listen erstellen und abspeichern?
Um aus einer Tabellenzeile aus einer externen Datei
`1 2 3
1 3 2
2 1 3
2 3 1
...`
eine kommaseparierte Liste zu machen, verwende ich eine xdef-Methode
% Kommaseparierte Permutationsliste erstellen:
\newcommand{\PermutationsListe}{}% Name reservieren
\let\PermutationsListe=\empty% Liste erstellen
\makeatletter
\foreach \i in {0,...,\cols}
{
\pgfplotstablegetelem{0}{\i}\of{\Perm}
\ifx\empty\PermutationsListe{} \protected@xdef\PermutationsListe{\pgfplotsretval}%
\else \protected@xdef\PermutationsListe{\PermutationsListe,\pgfplotsretval}%
\fi
}\makeatother
Was ich hier bräuchte wäre aber ein Befehl des Typs `\PermutationsListe{<Zeilennummer>}`, so dass mir z.B.
`\PermutationsListe{2}` die Ausgabe `2, 1, 3` liefert.
Wenn ich das oben genannte in ein newcommand oder eine foreach-Schleife stecke stecke, funktioniert es nicht mehr.
\newcommand\PermutationsListeErstellen[1]{%
% Kommaseparierte Permutationsliste erstellen:
\newcommand{\PermutationsListe}{}% Name reservieren
\let\PermutationsListe=\empty% Liste erstellen
\makeatletter
\foreach \i in {0,...,\cols}
{
\pgfplotstablegetelem{#1}{\i}\of{\Perm}
\ifx\empty\PermutationsListe{} \protected@xdef\PermutationsListe{\pgfplotsretval}%
\else \protected@xdef\PermutationsListe{\PermutationsListe,\pgfplotsretval}%
\fi
}\makeatother
}%
\PermutationsListeErstellen{0}
Ich bekomme `! You can't use a prefix with `the character @'.
<to be read again> @`
Wie könnte ich das machen?
\begin{filecontents*}{permutationen.txt}
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
\end{filecontents*}
%\documentclass[]{article}
\documentclass[border=5mm, varwidth]{standalone}
%\usepackage{sagetex}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{amsmath}
\usepackage{pgfplotstable}
\begin{document}
% Liste einlesen
\pgfplotstableread{permutationen.txt}{\Perm}
\pgfplotstablegetcolsof{\Perm}
\pgfmathsetmacro{\cols}{\pgfplotsretval-1}
% Kommaseparierte Permutationsliste erstellen:
\newcommand{\PermutationsListe}{}% Name reservieren
\let\PermutationsListe=\empty% Liste erstellen
\makeatletter
\foreach \i in {0,...,\cols}
{
\pgfplotstablegetelem{0}{\i}\of{\Perm}
\ifx\empty\PermutationsListe{} \protected@xdef\PermutationsListe{\pgfplotsretval}%
\else \protected@xdef\PermutationsListe{\PermutationsListe,\pgfplotsretval}%
\fi
}\makeatother
Anzeigen: \PermutationsListe
\end{document}