tabularray:通过 catchfile 读取存储在宏中的表

tabularray:通过 catchfile 读取存储在宏中的表

如何修复以下错误,以便\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}

在此处输入图片描述

相关内容