Me gustaría hacer algo muy similar a esta pregunta aquí: Agregar filas a la tabla con macro
Sin embargo, no puedo hacer que funcione en mi caso de una tabla de registro de versiones creada con el tabularray
paquete y xparse
los comandos.
Mi MNWE actual (ejemplo mínimo que no funciona...) es este:
\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}
que cuando se compila usando LuaLaTeX (o PDFLaTeX para el caso) da como resultado este 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
?
¡Cualquier ayuda en esto sería apreciada!
El mismo código funciona cuando se utiliza un estándar \begin{tabular}{l l l}
en lugar de \begin{tblr}{colspec={l l l}}
.
Respuesta1
Debe indicarle tabularray
que primero expanda la \@history
macro antes de componer la tabla. Puede hacer esto usando la expand
opción (consulte la sección 3.2.3 "Expandir macros primero" del tabularray
manual del paquete):
\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}