Incluir BODY en un entorno autodefinido

Incluir BODY en un entorno autodefinido

Esta es una pregunta de seguimiento paraCrear una matriz de valores de contador específicosyUsando campos autodefinidos en NewEnviron.

Quiero usar la función mtaddque llena el array mtarrdependiendo del valor de lines, dentro del entorno myenvque crea la línea entre las columnas. Para hacerlo, tengo que incluir el cuerpo definido afuera. Pero esto produce el error ! Misplaced alignment tab character &., aparentemente relacionado con la redefinición de &comenzar en la línea 10, que no entiendo del todo (tomado de Claudio Fiandrino en¿Cómo se puede crear una línea de tiempo vertical?). Comentar \BODYconduce a la línea correcta, pero la función mtaddno funciona y, por lo tanto, myarrpermanece vacía.

Aquí está el código:

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

información relacionada