bucle en entorno tabular

bucle en entorno tabular

Estoy intentando crear una tabla según el tamaño automáticamente. Hay una especie de proliferación de comandos de bucle en LaTeX, lo que dificulta determinar cuál es el adecuado. Probé el bucle TeX simple y los bucles de los paquetes forloop, pgflooppero no tuve éxito.

Aparentemente, existe un problema al ejecutar un bucle dentro de un tabularentorno. También intenté ejecutar primero el bucle y guardar la cadena de salida en un archivo tokeny luego imprimir el token dentro del archivo tabular. Esto funciona para algunos casos.

Aquí un ejemplo mínimo: Primero, lo que quiero producir:

\begin{tabular}{|*{4}{c|}}
  1&2&3&4
\end{tabular}

Aquí, lo que he probado con el bucle TeX:

\newcounter{numofcol}\setcounter{numofcol}{4}
\newcounter{tmpcol}\setcounter{tmpcol}{1}

\begin{tabular}{|*{\thenumofcol}{c|}}
  \thetmpcol
  \loop
    \ifnum\value{tmpcol}<\value{numofcol}%
    \stepcounter{tmpcol}%
    &\thetmpcol
  \repeat
\end{tabular}

Al parecer, el &símbolo provoca problemas en el bucle. Lo mismo sucede si uso un bucle de los paquetes forloopo pgfloop. El error es

ERROR: Forbidden control sequence found while scanning use of \loop.

--- TeX said ---
<inserted text> 
                \par 
l.140     &
           \thetmpcol
--- HELP ---
No help available

Por eso pensé que podía guardar la cadena de la fila en un tokenby

\newcounter{numofcol}\setcounter{numofcol}{4}
\newcounter{tmpcol}\setcounter{tmpcol}{1}
\newtoks\tmprowcontent

\tmprowcontent={x}
\loop%
\ifnum\value{tmpcol}<\value{numofcol}%
  \stepcounter{tmpcol}%
  \tmprowcontent=\expandafter{\the\expandafter\tmprowcontent & x}%
\repeat

\begin{tabular}{|*{\thenumofcol}{c|}}
  \the\tmprowcontent
\end{tabular}

Esto funciona si no incluyo ese contador en el archivo token. Si reemplazo xcon el valor del contador actual, es decir,

\newcounter{numofcol}\setcounter{numofcol}{4}
\newcounter{tmpcol}\setcounter{tmpcol}{1}
\newtoks\tmprowcontent

\tmprowcontent={\thetmpcol}
\loop%
\ifnum\value{tmpcol}<\value{numofcol}%
  \stepcounter{tmpcol}%
  \tmprowcontent=\expandafter{\the\tmprowcontent & \thetmpcol}%
\repeat

\begin{tabular}{|*{\thenumofcol}{c|}}
  \the\tmprowcontent
\end{tabular}

Entonces cada entrada es el último valor del contador, es decir, 4en ese caso. Esto se debe al uso de \expandafter. Sin embargo, si no uso \expandafter, TeX me dice que se queda sin memoria.

Por lo tanto, mi pregunta es ¿cómo puedo hacer que esto funcione?

Respuesta1

Puede simplemente iterar a través de los valores, aunque es posible que deba ocultarlos &para que no se vea demasiado pronto y finalice una celda de la tabla a mitad de la prueba.

ingrese la descripción de la imagen aquí

\documentclass{article}

\begin{document}

\newcounter{numofcol}\setcounter{numofcol}{4}
\newcounter{tmpcol}\setcounter{tmpcol}{0}

\newcommand\foo{%
  \stepcounter{tmpcol}%
  \thetmpcol
  \ifnum\value{tmpcol}<\value{numofcol}\hiddenamp\expandafter\foo\fi}
\newcommand\hiddenamp{&}

\begin{tabular}{|*{\thenumofcol}{c|}}
  \foo
\end{tabular}
\end{document}

información relacionada