
LaTeXでループとセーブボックスを使っていくつかのことを自動化したいのですが、ボックスのためのスペースがないとボックスは自動的に次の行に移動しません(セーブボックスは必要です)。以下のコードは私が実現しようとしていることの簡単な例です(ボックスはループで作成されませんが、簡単なデモンストレーションのためにこのようにしています)。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
\global
beforeを使用する必要があります\setbox
。これは、 \foreach
pgf が各ループ ステップをグループ内で実行するためです。グループを離れると、ローカル設定は忘れられます。また、各はボックスを配置する前に実行される\penalty0
ため、ブレーク ポイントを許可するにはを使用する必要があります。そのため、水平モードになります。\xsbox
\leavevmode
\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 }