Einbinden von BODY in selbstdefinierte Umgebung

Einbinden von BODY in selbstdefinierte Umgebung

Dies ist eine Folgefrage zuErstellen Sie ein Array mit bestimmten ZählerwertenUndSelbstdefinierte Felder in NewEnviron verwenden.

Ich möchte die Funktion mtadd, die das Array mtarrabhängig vom Wert von füllt lines, innerhalb der Umgebung verwenden myenv, die die Linie zwischen den Spalten erstellt. Dazu muss ich den außerhalb definierten Körper einschließen. Dies erzeugt jedoch den Fehler ! Misplaced alignment tab character &., der anscheinend mit der Neudefinition von ab Zeile 10 zusammenhängt &, die ich nicht ganz verstehe (entnommen von Claudio Fiandrino inWie können Sie eine vertikale Zeitleiste erstellen?). Das Auskommentieren \BODYführt zwar zur richtigen Zeile, die Funktion mtaddfunktioniert jedoch nicht und myarrbleibt somit leer.

Hier ist der Code:

\documentclass{article}
\usepackage{pgfmath,pgffor}
\usepackage{environ}
\usepackage{tikz}
\usetikzlibrary{calc,matrix}
\usepackage{charter}

\makeatletter
\let\matamp=&
\catcode`\&=13
\makeatletter
\def&{\iftikz@is@matrix
  \pgfmatrixnextcell
  \else
  \matamp
  \fi}
\makeatother

\newcounter{lines}
\def\endlr{\stepcounter{lines}\\}

\newcounter{envcount}
\setcounter{envcount}{0}

\newcommand*\myarr{}
\newcommand{\mtadd}{
\ifx\myarr\empty
\edef\myarr{\arabic{lines}}
\else\edef\myarr{\myarr,\arabic{lines}}
\fi}

\tikzset{description/.style={
  column 2/.append style={#1}
 },
 line color/.store in=\lcolor,
 line color=white!80!black,
 line color st/.style={fill=\lcolor,draw=\lcolor},
}

\NewEnviron{myenv}[1][]{%
\def\myarr{}
\setcounter{lines}{1}
\stepcounter{envcount}%
\BODY
\begin{tikzpicture}[column 1/.style={anchor=east},
 column 2/.style={anchor=west},
 #1
]
\matrix(myenv\theenvcount)[matrix of nodes]{\BODY};
\pgfmathtruncatemacro\endmtx{\thelines-1}
\path [line color st]
($(myenv\theenvcount-1-1.north east)!0.5!(myenv\theenvcount-1-2.north west)$)--
($(myenv\theenvcount-\endmtx-1.south east)!0.5!(myenv\theenvcount-\endmtx-2.south west)$);
\end{tikzpicture}
}

\def\names{{"Katie","Frank","Laura","Joe","Peter","Jens","Carolin","Anna","Steph","Stef"}}
\begin{document}
\begin{myenv}
test &  now\mtadd\endlr
test &  \foreach \i in \myarr {%
     Name \i: \pgfmathparse{\names[\i]}\pgfmathresult, }\endlr
\end{myenv}

\end{document}

verwandte Informationen