자체 정의된 환경에 BODY 포함

자체 정의된 환경에 BODY 포함

에 대한 후속 질문입니다.특정 카운터 값의 배열 생성그리고NewEnviron에서 자체 정의 필드 사용.

열 사이에 선을 만드는 환경 내부에서 값에 따라 mtadd배열을 채우는 함수를 사용하고 싶습니다 . 그러기 위해서는 외부에 정의된 본문을 포함해야 합니다. 그러나 이로 인해 10번째 줄에서 시작하는 것을 재정의하는 것과 관련된 오류가 발생하는데 , 이는 제가 완전히 이해하지 못하는 것입니다(Claudio Fiandrino의 in.mtarrlinesmyenv! Misplaced alignment tab character &.&수직 타임라인을 어떻게 만들 수 있나요?). 주석 처리하면 \BODY올바른 줄로 연결되지만 함수가 mtadd작동하지 않아 myarr빈 상태로 유지됩니다.

코드는 다음과 같습니다.

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

관련 정보