2

I'd like to do something very similar to this question here: Add Rows to Table With Macro

However, I cannot get it to work with my case of a version log table created with the tabularray package and xparse commands.

My current MNWE (minimum not working example ...) is this:

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

which when compiled using LuaLaTeX (or PDFLaTeX for that matter) results in this error:

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

?

Any help on this would be appreciated!

The same code works when using a standard \begin{tabular}{l l l} instead of the \begin{tblr}{colspec={l l l}}.

MaxNoe
  • 6,136

1 Answers1

1

You need to tell tabularray to first expand the \@history macro before typesetting the tabular. You can do this using the expand option (see section 3.2.3 "Expand Macros First" of the tabularray package manual):

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

enter image description here