
Quero automatizar algumas coisas no LaTeX usando loops e saveboxes, mas as caixas não querem ir automaticamente para a próxima linha quando não há espaço para elas (são necessárias saveboxes). O código abaixo é um exemplo simples do que estou tentando alcançar (as caixas não são criadas via loop, mas estou fazendo desta forma para fins de demonstração simples). X será algum 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}}
Responder1
Você precisa usar \global
before \setbox
, porque \foreach
from pgf faz cada loop-step em um grupo. O cenário local é esquecido quando o grupo sai. E você quer usar \penalty0
para permitir um ponto de quebra, pois cada um \xsbox
executa \leavevmode
antes de colocar a caixa, então você fica no 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 }