动态标题(csvsimple-l3 和 tabularray 包)

动态标题(csvsimple-l3 和 tabularray 包)

输入的 CSV 文件的列数是可变的。数据将添加到第二行的第 2、3、4 和 5 列。输入的 SCV 文件可以有 3 或 4 列,因此上面的数据将分布在不同数量的列上,这是一个根据输入的 CSV 文件在标题中变化的变量。

需要定义一个与输入的 CSV 数据匹配的动态标题。

我创建了一个 Latex 代码示例,其中除动态标题外,所有内容都适用于输入 CSV 文件。我的尝试产生了一个无法修复的错误。

我的乳胶代码:

\documentclass{article}

\begin{filecontents*}{file3.csv}
 a,b,c
\end{filecontents*}

\begin{filecontents*}{file4.csv}
a,b,c,d
\end{filecontents*}

\usepackage{csvsimple-l3}
\usepackage{tabularray}
\usepackage{xcolor}
\usepackage{ifthen}
\usepackage{readarray}
\readarraysepchar{,}
\usepackage{etoolbox}

\ExplSyntaxOn
\NewExpandableDocumentCommand{\GenerateHeader}{m}
 {
  \prg_replicate:nn {#1} { & }
 }
\ExplSyntaxOff  

\begin{document}

\newcommand{\InputCSV}[1]{%
\readdef{#1}\filedata%
\csvreader[%
no head,
tabularray={colspec={X[1,c,m]
*{\ncols}{X[1,c,m]} X[1,c,m]X[1,c,m]},
hlines,vlines,
width=\textwidth,
colsep=2.5pt,
rowsep=4.5pt,
row{1-2}={c,m,fg=black,bg=black!10,font=\bfseries\small},
cell{1}{1}={r=2}{c,m,font=\small\bfseries,bg=black!10},
cell{1}{2}={c=\ncols}{c,m,font=\small\bfseries,bg=black!10},
cell{1}{\ncols+2}={c=2}{c,m,font=\small\bfseries,bg=black!10},
expand=\expanded,
},
table head=Sample&Span over 3 or 4 columns 
%&&&
\expanded{\GenerateHeader{\ncols}}
Last& \\
]{#1}
{}{%
\ifnumequal{\ncols}{4}{%
       Name  &\csvcoli&\csvcolii&\csvcoliii&\csvcoliv&Result & Erros 
                            }{%
\ifnumequal{\ncols}{3}{%
       Name  &\csvcoli&\csvcolii&\csvcoliii&Result & Erros
                            }{}%                              
                            }
  }%
}

\InputCSV{file3.csv}

\bigskip

The file consists of \ncols{} columns. 

\end{document}

根据输入的 SCV 文件,输出表的外观应如下所示。

在此处输入图片描述

在此处输入图片描述

如果有人知道如何解决这个问题,并能提供一个例子,那将非常有帮助。重要的是,在给定的示例中使用了 csvsimple-l3 和 tabularray 包。

相关内容