명령을 통해 테이블에 행을 추가하는 방법

명령을 통해 테이블에 행을 추가하는 방법

나는 여기서 이 질문과 매우 유사한 것을 하고 싶습니다: 매크로를 사용하여 테이블에 행 추가

tabularray그러나 패키지와 xparse명령 으로 생성된 버전 로그 테이블의 경우에는 작동하지 않습니다 .

내 현재 MNWE(최소 작동하지 않는 예 ...)는 다음과 같습니다.

\documentclass{article}

\usepackage{xparse}
\usepackage{tabularray}

\makeatletter

\let\@history\@empty
\NewDocumentCommand \historyentry {m m m} {%
  \g@addto@macro\@history{#1 & #2 & #2\\}
}

\NewDocumentCommand \history {} {%
  \begin{tblr}{colspec={l l l}}
    Version & Date & Comment \\ 
    \@history{}
  \end{tblr}
}
\makeatother

\historyentry{1.0}{2023-03-01}{First release}
\historyentry{2.0}{2023-03-15}{Second release}

\begin{document}
\history
\end{document}

LuaLaTeX(또는 PDFLaTeX)를 사용하여 컴파일하면 다음 오류가 발생합니다.

This is LuaHBTeX, Version 1.15.0 (TeX Live 2022) 
 restricted system commands enabled.
(./test.tex
LaTeX2e <2022-11-01> patch level 1
 L3 programming layer <2023-01-24> (/home/mnoethe/.local/texlive/2022/texmf-dist/tex/latex/base/article.cls
Document Class: article 2022/07/02 v1.4n Standard LaTeX document class
(/home/mnoethe/.local/texlive/2022/texmf-dist/tex/latex/base/size10.clo)) (/home/mnoethe/.local/texlive/2022/texmf-dist/tex/latex/l3packages/xparse/xparse.sty (/home/mnoethe/.local/texlive/2022/texmf-dist/tex/latex/l3kernel/expl3.sty (/home/mnoethe/.local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-luatex.def))) (/home/mnoethe/.local/texlive/2022/texmf-dist/tex/latex/tabularray/tabularray.sty) (./test.aux) (/home/mnoethe/.local/texlive/2022/texmf-dist/tex/latex/base/ts1cmr.fd)
! Misplaced alignment tab character &.
\@history ->1.0 &
                  2023-03-01 & 2023-03-01\\2.0 & 2023-03-15 & 2023-03-15\\
l.25 \history
           
? 

이에 대한 도움을 주시면 감사하겠습니다!

\begin{tabular}{l l l}.NET 대신 표준을 사용할 때도 동일한 코드가 작동합니다 \begin{tblr}{colspec={l l l}}.

답변1

tabularray표 형식을 조판하기 전에 먼저 매크로를 확장하도록 지시해야 합니다 \@history. 옵션 을 사용하여 이 작업을 수행할 수 있습니다 expand(패키지 매뉴얼의 3.2.3 "매크로 먼저 확장" 섹션 참조 tabularray).

\documentclass{article}
\usepackage{tabularray}

\makeatletter
\let\@history\@empty
\NewDocumentCommand \historyentry {m m m} {%
  \g@addto@macro\@history{#1 & #2 & #3 \\}
}

\NewDocumentCommand \history {} {%
  \begin{tblr}[expand=\@history]{colspec={l l l}}
    Version & Date & Comment \\ 
    \@history{}
  \end{tblr}
}
\makeatother

\historyentry{1.0}{2023-03-01}{First release}
\historyentry{2.0}{2023-03-15}{Second release}

\begin{document}
\history
\end{document}

여기에 이미지 설명을 입력하세요

관련 정보