\int_incr:N dentro del entorno tabular

\int_incr:N dentro del entorno tabular

Empecé a aprender LaTeX3 hace unas semanas y actualmente estoy jugando con tablas. Aquí está mi código:

\documentclass{article}
\usepackage{expl3}

\ExplSyntaxOn
\cs_new_protected:Npn \juhu_tablerow:n #1
{
  \int_new:N \l_row_count_int
  \int_set:Nn \l_row_count_int { 1 }
  \prg_replicate:nn {#1}
  {
    \int_use:N \l_row_count_int .~row \\
    \int_incr:N \l_row_count_int
  }
}
\cs_new_eq:NN \tablerow \juhu_tablerow:n
\ExplSyntaxOff

\begin{document}

\begin{tabular}{c}
\tablerow{3}
\end{tabular}

\end{document}

La salida de este código es:

1. row
1. row
1. row

El resultado deseado debería ser así:

1. row
2. row
3. row

Cuando reemplazo el tabularentorno, por ejemplo, con un centerentorno, obtengo el resultado esperado.

Ahora, si reemplazo \\in \int_use:N \l_row_count_int .~row \\con ,~, \int_incr:Nparece funcionar nuevamente incluso dentro del tabularentorno, y el resultado es:

1. row, 2. row, 3. row, 

Entonces, mi pregunta es, ¿por qué aumentar el número entero no funciona dentro de un tabularentorno cuando se usan varias filas y qué puedo hacer para obtener el resultado deseado?

Respuesta1

De mi humilde comentario a una respuesta.:)

¡Estabas muy cerca de una solución! El culpable aquí es el alcance: esas asignaciones se realizan localmente; hagámoslos globales.

Antes de continuar, debemos mover la declaración de enteros fuera de su definición de comando; de lo contrario, se generará un error en llamadas posteriores a \tablerow. Ahora, una pequeña convención de codificación, de

\int_new:N \l_row_count_int

a

\int_new:N \g_row_count_int

desde que nuestro mostrador se volvió global. :)Ahora, un par de reemplazos (¡gracias a egreg por la xparsesugerencia!):

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn

\int_new:N \g_row_count_int

\cs_new_protected:Npn \juhu_tablerow:n #1
{
  \int_gset:Nn \g_row_count_int { 1 }
  \prg_replicate:nn {#1}
  {
    \int_use:N \g_row_count_int .~row \\
    \int_gincr:N \g_row_count_int
  }
}

\NewDocumentCommand{ \tablerow }{ m }{
    \juhu_tablerow:n{#1}
}
\ExplSyntaxOff

\begin{document}

\begin{tabular}{c}
\tablerow{3}
\end{tabular}

\end{document}

Y todo debería estar funcionando bien.:)

También puede optar por \g_tmpa_intun número entero cero para la asignación global y ahorrar un par de dólares.:)

información relacionada