行に `makebox` が含まれている場合、改行をどのように管理すればよいでしょうか?

行に `makebox` が含まれている場合、改行をどのように管理すればよいでしょうか?

授業で空欄補充問題をexam次のように書いたとします。

\documentclass[addpoints]{exam}

\begin{document}
\begin{questions}
\question [3] The protagonist, originally from \makebox[2in]{\dotfill}, has to travel up the \makebox[2in]{\dotfill} River to retrieve \makebox[2in]{\dotfill}.
\end{questions}
\end{document}

行は適切に分割されず、次のようにページの端まで続きます。

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

\\強制的に改行を挿入すると、許容できる結果が得られます。

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

しかし、これは不格好に思えます。この状況に対処するよりエレガントな方法はあるでしょうか?

答え1

空白スペースよりもドットを広げた方が、改行がずっと簡単になります

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

\documentclass[addpoints]{exam}

\newcommand\mydotfill[1]{{\def\hfill{\hskip #1 plus 1fill\relax}\nolinebreak\dotfill}}
\begin{document}
\begin{questions}
\question [3] The protagonist, originally from \mydotfill{2in}, has to travel up the \mydotfill{2in} River to retrieve \mydotfill{2in}.
\end{questions}
\end{document}

関連情報