![tabularray:通过 catchfile 读取存储在宏中的表](https://linux22.com/image/436471/tabularray%EF%BC%9A%E9%80%9A%E8%BF%87%20catchfile%20%E8%AF%BB%E5%8F%96%E5%AD%98%E5%82%A8%E5%9C%A8%E5%AE%8F%E4%B8%AD%E7%9A%84%E8%A1%A8.png)
如何修复以下错误,以便\MyTable
可以读取保存的表格tabularray
?
./tabularrayfilecatch.tex:29: 对齐制表符 & 放错位置。\MyTable ->1 & 2 \ 3 & 4 \ 5 & 6 \ 7 & 8 \ 9 & 10 \ 11 & 12 \ 13 & 14 ... l.29 \end {tblr}
\begin{filecontents*}{mytable.tex}
1 & 2 \\
3 & 4 \\
5 & 6 \\
7 & 8 \\
9 & 10 \\
11 & 12 \\
13 & 14 \\
15 & 16 \\
17 & 18 \\
19 & 20 \\
\end{filecontents*}
\documentclass{article}
\usepackage[paperheight=75mm]{geometry}
\usepackage{xcolor, catchfile}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx}
\begin{document}
\CatchFileDef{\MyTable}{mytable.tex}{}
\begin{tblr}[ long ]{ colspec = {X S} }
\toprule[1.5pt]
One & {{{Two}}} \\
\midrule
\MyTable
\bottomrule[1.5pt]
\end{tblr}
\end{document}
答案1
使用软件包的 2021M 版本(2021-08-01)tabularray
,您可以使用expand
选项将指定宏的每次出现都展开一次:
\begin{longtblr}[expand=\MyTable]{ colspec = {X S} }
\toprule[1.5pt]
One & {{{Two}}} \\
\midrule
\MyTable
\bottomrule[1.5pt]
\end{longtblr}
答案2
希望tblr
看到\MyTable
扩大(为了看制表&
符和\\
换行符)。因此,我将环境的介绍保存tblr
在\tmp
,然后\expandafter\tmp\MyTable...
\begin{filecontents*}{mytable.tex}
1 & 2 \\
3 & 4 \\
5 & 6 \\
7 & 8 \\
9 & 10 \\
11 & 12 \\
13 & 14 \\
15 & 16 \\
17 & 18 \\
19 & 20 \\
\end{filecontents*}
\documentclass{article}
\usepackage[paperheight=75mm]{geometry}
\usepackage{xcolor, catchfile}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx}
\begin{document}
\CatchFileDef{\MyTable}{mytable.tex}{}
\def\tmp{\begin{tblr}[ long ]{ colspec = {X S} }
\toprule[1.5pt]
One & {{{Two}}} \\
\midrule}
\expandafter\tmp\MyTable
\bottomrule[1.5pt]
\end{tblr}
\end{document}
答案3
正如 Steven B. Segletes 所说:
环境tblr
想要“看到”\MyTable
扩展。
您可以通过临时宏实现这一点,正如 Steven B. Segletes 所展示的那样。
另一种方法是有两个宏观参数,并扩展第一个宏观参数,然后再将其与第二个宏观参数交换:
\begin{filecontents*}{mytable.tex}
1 & 2 \\
3 & 4 \\
5 & 6 \\
7 & 8 \\
9 & 10 \\
11 & 12 \\
13 & 14 \\
15 & 16 \\
17 & 18 \\
19 & 20 \\
\end{filecontents*}
\documentclass{article}
\usepackage[paperheight=75mm]{geometry}
\usepackage{xcolor, catchfile}
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx}
\newcommand\Exchange[2]{#2#1}
\begin{document}
\CatchFileDef{\MyTable}{mytable.tex}{}
\expandafter\Exchange\expandafter{\MyTable}{%
\begin{tblr}[ long ]{ colspec = {X S} }%
\toprule[1.5pt]%
One & {{{Two}}} \\%
\midrule
}%
\bottomrule[1.5pt]
\end{tblr}
\end{document}