
Ich möchte einige Dinge in LaTeX mithilfe von Schleifen und Saveboxen automatisieren, aber die Boxen möchten nicht automatisch zur nächsten Zeile springen, wenn kein Platz für sie vorhanden ist (Saveboxen sind erforderlich). Der folgende Code ist ein einfaches Beispiel für das, was ich erreichen möchte (Boxen werden nicht über Schleifen erstellt, aber ich mache es so, um es einfach zu demonstrieren). X wird ein Text sein
\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}}
Antwort1
Sie müssen \global
before verwenden \setbox
, da \foreach
von pgf aus jeder Loop-Schritt in einer Gruppe ausgeführt wird. Die lokale Einstellung wird vergessen, wenn die Gruppe verlassen wird. Und Sie möchten , \penalty0
um einen Haltepunkt zuzulassen, da jeder vor dem Platzieren der Box \xsbox
ausgeführt wird \leavevmode
, sodass Sie sich im horizontalen Modus befinden.
\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 }