Encabezado dinámico (paquetes csvsimple-l3 y tabularray)

Encabezado dinámico (paquetes csvsimple-l3 y tabularray)

El archivo CSV de entrada tiene un número variable de columnas. Los datos se agregan a la segunda fila en las columnas 2.ª, 3.ª, 4.ª y 5.ª. El archivo SCV de entrada puede tener 3 o 4 columnas, por lo que los datos anteriores se distribuirán en un número diferente de columnas, que es una variable que cambia en el encabezado según el archivo CSV de entrada.

Es necesario definir un encabezado dinámico que coincida con los datos CSV de entrada.

He creado un ejemplo de código Latex, donde todo se adapta al archivo CSV de entrada excepto el encabezado dinámico. Mi intento generó un error que no pude solucionar.

Mi código de látex:

\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}

Así es como debería verse la tabla de salida dependiendo del archivo SCV de entrada.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Si alguien tiene una idea de cómo resolver este problema y puede dar un ejemplo, sería de gran ayuda. Es importante que en el ejemplo dado se utilicen los paquetes csvsimple-l3 y tabularray.

información relacionada