Problem mit ampersand in automatisierter Tabelle
Ich habe ein Problem mit der Verbindung von keys, makros und dem ampersandzeichen in einer Tabelle.
Motivation: Es sollen Spalteninhalte in einer Liste über keys aus dem xkeyval Paket übergeben werden, die in Makros umgewandelt werden und anschließend wieder automatisch ausgegeben werden.
Folgendes MB läuft fehlerfrei (die Komplexität ist notwendig um den Effekt zu erzielen). Problematisch ist aber, dass die jeweiligen Spalteninhalte nicht ausgegeben werden, wenn das "&"-Zeichen im Befehl \printrow eingefügt. Wird es auskommentiert, werden zwar alle INhalte ausgegeben (nur eben allein in der ersten Spalte).
Code:
\documentclass{scrartcl}
\usepackage{xkeyval,forloop}
\newcounter{colloop}\newcounter{maxflcol}
\makeatletter
\define@key{fltable}{columns}{%key mit einer Liste, die den Spalten zugeordnet wird
\def\vara{#1}%liste abspeichern
\setcounter{colloop}{0}
\@for\mycolumn:=\vara\do{%gehe die Liste durch und setze in \mycolumn1,\mycolumn2 usw. die Inhalte
\stepcounter{colloop}%
\expandafter\edef\csname mycolumn\the\value{colloop}\endcsname{\mycolumn}
}
\setcounter{maxflcol}{\value{colloop}}%merke die maximale Spaltenzahl
}
\makeatother
\newcommand{\printrow}[1]{%zeile ausgeben
\setkeys{fltable}{#1}%
\forloop{colloop}{1}{\value{colloop} < \value{maxflcol}}%
{%%gehe durch jede Spalte und gebe den Inhalt aus
\csname mycolumn\the\value{colloop}\endcsname%
%%%%%%%%%dieses Ampersand macht Probleme, wird es weggelassen, werden alle Inhalte ausgegeben
&%
%%%%%%%%%%%%%%, mit ihm fehlen die Inhalte
}%
%%das letzte Stück mit Inhalt
\csname mycolumn\the\value{colloop}\endcsname%
\\%
}%
%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{tabular}{|l|l|l|l|}
\printrow{columns={erste,zweite,dritte,vierte}}
\end{tabular}
\end{document}