
Quiero automatizar algunas cosas en LaTeX usando bucles y cuadros de guardado, pero los cuadros no quieren pasar automáticamente a la siguiente línea cuando no hay espacio para ellos (los cuadros de guardado son necesarios). El siguiente código es un ejemplo simple de lo que estoy tratando de lograr (los cuadros no se crean mediante un bucle, pero lo hago de esta manera con el propósito de una demostración simple). X será algún texto
\usepackage{xsavebox}
\usepackage{pgffor}
\foreach \n in {3,...,11}{\xsbox{R.1.\n}{\textbf{R.1.\n}~X\hspace{2em}}}
...
\foreach \n in {3,...,11}{\xusebox{R.1.\n}}
Respuesta1
Debes usarlo \global
before \setbox
, porque \foreach
desde pgf realiza cada paso de bucle en un grupo. El entorno local se olvida cuando se abandona el grupo. Y quieres usarlo \penalty0
para permitir un punto de ruptura, porque cada uno \xsbox
se ejecuta \leavevmode
antes de poner la caja, por lo que estás en modo horizontal.
\foreach \n in {3,...,11}
{\global\setbox\n=\hbox{\textbf{R.1.\n}~X\hskip2em}%
\leavevmode\copy\n\hfil\penalty0 }
...
\foreach \n in {3,...,11}{\leavevmode\box\n\hfil\penalty0 }