Automatischer Zeilenumbruch von Boxen

Automatischer Zeilenumbruch von Boxen

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}}

Das Ergebnis dieses Codes sieht ungefähr so ​​aus: Bildbeschreibung hier eingeben

Antwort1

Sie müssen \globalbefore verwenden \setbox, da \foreachvon 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 , \penalty0um einen Haltepunkt zuzulassen, da jeder vor dem Platzieren der Box \xsboxausgefü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 }

verwandte Informationen