Genera una tabla dinámica basada en TikZ

Genera una tabla dinámica basada en TikZ

Estoy buscando crear una tabla de 3*x basada en la cantidad de preguntas que usan TikZ, como se muestra en la siguiente ilustración.

Ingrese la descripción de la imagen aquí

He definido un método y el código es el siguiente:

\newcounter{colnumber}
% Define Chinese numbers
    \newcommand{\chinesenumber}[1]{%
      \ifcase#1\or 一\or 二\or 三\or 四\or 五\or 六\or 七\or 八\or 九\or 十\fi
    }

    % Define the command to create the table
    \newcommand{\createtable}[1]{%
      \setcounter{colnumber}{#1} % Set the number of columns
      % \pgfmathsetmacro{\cellwidth}{\textwidth/\thecolnumber} % Calculate the width of each cell
      \begin{tikzpicture}[every node/.style={font=\fontsize{14}{18}\selectfont}]
        \tikzset{cell/.style={rectangle, draw=black, minimum height=1.5cm, minimum width=2.8cm, align=center, inner sep=0pt}}
        % Draw the column titles
        \node[cell] at (2.8,0) {Num}; % First column title
        \foreach \x in {2,...,\thecolnumber}
        \node[cell] at (\x*2.8,0) {\chinesenumber{\numexpr\x-1}}; % Chinese number column titles
        \node[cell] at (\thecolnumber*2.8+2.8,0) {Total score}; % Last column title
        % Draw the rows
        \node[cell] at (2.8,-1.5) {Score}; % First column second row
        \node[cell] at (2.8,-3) {Teacher}; % First column third row
        \foreach \y in {1,...,3}
        \foreach \x in {2,...,\thecolnumber}
        \node[cell] at (\x*2.8,-\y*1.5) {}; % Fill other cells
        \foreach \y in {2,...,3}
        \node[cell] at (\thecolnumber*2.8+2.8,-\y*1.5) {}; % Fill the last column's other cells
        % Draw the outer frame
        \draw (1.4,0.75) rectangle (\thecolnumber*2.8+4.2,-4.5); % Adjust size based on rows and columns
      \end{tikzpicture}
    }

Cuando uso el comando ( \createtable{4}) en main.tex, puedo generar la tabla como se muestra a continuación.

Ingrese la descripción de la imagen aquí

Sin embargo, parece tener dos filas adicionales. Además, cuando hay demasiadas preguntas, la tabla se extiende más allá de la página. ¿Cómo puedo resolver esto?

Respuesta1

Una macro \tblrbodyse inicializa con \tl_new:N \tblrbody.

El contenido se recopila con \tl_build_put_right:Nn. Este proceso se inicia \tl_build_begin:Ny finaliza con \tl_build_end:N. Posteriormente expand=\tblrbodyse da la opción al tblrambiente donde \tblrbodyse ubica.

El número de filas depende del número posterior \int_step_inline:nn.

ingrese la descripción de la imagen aquí

\documentclass[border=6pt]{standalone}
\usepackage{tabularray}
\begin{document}
\ExplSyntaxOn
\tl_new:N \tblrbody
\tl_build_begin:N \tblrbody
\int_step_inline:nn { 4 }
  {
    \tl_build_put_right:Nn \tblrbody { #1 & & \\ }
  }
\tl_build_end:N \tblrbody
\ExplSyntaxOff
\begin{tblr}[expand=\tblrbody]{
  hlines,
  vlines
}
Number & Score & Teacher\\
\tblrbody
Total score & & \\
\end{tblr}
\end{document}

información relacionada