Автоматическая разбивка коробок на линии

Автоматическая разбивка коробок на линии

Я хочу автоматизировать некоторые вещи в LaTeX с помощью циклов и saveboxes, но блоки не хотят автоматически переходить на следующую строку, когда для них нет места (saveboxes необходимы). Код ниже — простой пример того, чего я пытаюсь добиться (блоки не создаются через цикл, но я делаю это таким образом для простой демонстрации). X будет некоторым текстом

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

Результатом этого кода станет что-то вроде этого: введите описание изображения здесь

решение1

Вам нужно использовать \globalbefore \setbox, потому что \foreachиз pgf делает каждый шаг цикла в группе. Локальная настройка забывается, когда группа покидается. И вы хотите использовать \penalty0для того, чтобы разрешить точку останова, потому что каждый \xsboxexectes \leavevmodeперед установкой box, поэтому вы находитесь в горизонтальном режиме.

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

Связанный контент