¿Hay alguna manera de dividir automáticamente los cuadros (por ejemplo, \raisebox) al final de la línea?

¿Hay alguna manera de dividir automáticamente los cuadros (por ejemplo, \raisebox) al final de la línea?

Soy nuevo en LaTeX, así que agradezco cualquier ayuda:

Cada vez que escribe texto normal en LaTeX, automáticamente pasa a la siguiente línea si se llega al final de la línea. Sin embargo, si utiliza un cuadro (como \raisebox) hacia el final de la línea, fuerza al cuadro a entrar en la misma línea, incluso si se llega al final de la línea. (Hasta donde yo sé, esto da como resultado una advertencia "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}

¿Hay alguna manera de dividir automáticamente el cuadro al final de la línea y continuar con el cuadro en la línea siguiente? Si no, ¿es al menos una forma de colocar automáticamente todo el cuadro en la siguiente línea?

Antecedentes: Soy profesor y estoy tratando de crear tareas de "completar los espacios en blanco" para mis alumnos. Hago esto escribiendo texto normal y luego uso el siguiente comando:

\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 viene del paquete del examen)

Utilizo el factor "2,3" para que mis alumnos tengan más espacio para escribir sus respuestas.

Esto funciona según lo previsto, excepto al final de la línea donde mis respuestas/hrulefill no pasan a la siguiente línea.

Respuesta1

Soluciono el problema usando recursividad para crear un nuevo cuadro para cada palabra en la respuesta, en lugar de crear solo un hbox grande. También tengo que hacerlo \allowbreakentre cajas. Además, el uso del multiplicador 2,3 tenderá a romper los márgenes, por lo que lo uso \sloppypara evitarlo.

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

ingrese la descripción de la imagen aquí

información relacionada