行末でボックスを自動的に改行する方法 (例: \raisebox) はありますか?

行末でボックスを自動的に改行する方法 (例: \raisebox) はありますか?

私は LaTeX の初心者なので、どんな助けでもいただければ幸いです。

LaTeX で通常のテキストを入力すると、行末に達すると自動的に次の行に改行されます。ただし、行末に向かってボックス (\raisebox など) を使用すると、行末に達してもボックスは同じ行に強制されます。(私の知る限り、この結果、「Overfull \hbox」警告が表示されます。)

\documentclass{article}
\begin{document}
This is some text that automatically goes in the next line if the end of the line is reached.
\raisebox{0.1ex}{This is some text that does not automatically go in the next line if the end of the line is reached. This even goes above the edge of the paper.}
\end{document}

行末でボックスを自動的に分割し、次の行のボックスを続ける方法はありますか? そうでない場合、少なくともボックス全体を次の行に自動的に配置する方法はありますか?

背景: 私は教師で、生徒のために「空欄を埋める」タスクを作成しようとしています。通常のテキストを入力してから、次のコマンドを使用します。

\newlength{\diebox}
\newcommand{\blank}[1]{
    \settowidth{\diebox}{#1}
    \ifprintanswers
    \raisebox{0.1ex}{\parbox{2.3\diebox}{\textbf{#1}}}
    \else
    \raisebox{-0.5ex}{\parbox{2.3\diebox}{\hrulefill}}
    \fi}

(\ifprintanswers は試験パッケージから取得されます)

生徒が答えを書くスペースを広く取れるよう、係数「2.3」を使用します。

これは意図したとおりに動作しますが、行末で回答/hrulefill が次の行に分割されない点が異なります。

答え1

私は、1 つの大きな hbox を作成するのではなく、再帰を使用して回答の各単語に新しいボックスを作成することでこの問題を回避しています。また、ボックス間でも行う必要があります。さらに、2.3 乗数を使用すると余白が壊れる傾向があるため、これを回避するにはを\allowbreak使用します。\sloppy

\documentclass{exam}
\newcommand\blankit[1]{\blankitaux#1 \relax}
\def\blankitaux#1 #2\relax{%
  \blank{#1}%
  \ifx\relax#2\relax\def\next{}\else\def\next{\blankitaux#2\relax}\fi
  \next
}
\newcommand{\blank}[1]{\allowbreak
    \setbox0=\hbox{#1}%
    \ifprintanswers
    \makebox[2.3\wd0][l]{\textbf{#1}\dotfill}%
    \else
    \raisebox{-0.5ex}{\makebox[2.3\wd0]{\hrulefill}}%
    \fi
}
\begin{document}
\sloppy
This is some text that automatically goes in the next line if the end of the line is reached.
\blankit{This is some text that does not automatically go in the next line if the end of the line is reached. This even goes above and beyond the edge of the paper.}
Returning to normal text.

\printanswerstrue
This is some text that automatically goes in the next line if the end of the line is reached.
\blankit{This is some text that does not automatically go in the next line if the end of the line is reached. This even goes above and beyond the edge of the paper.}
Returning to normal text.
\end{document}

ここに画像の説明を入力してください

関連情報