나는 여기서 이 질문과 매우 유사한 것을 하고 싶습니다: 매크로를 사용하여 테이블에 행 추가
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}