Tengo un texto largo en una tabla que se combina a partir de dos comandos con un espacio intermedio que debe estar subrayado. ¿Cómo puedo hacer que se ajuste mientras está subrayado?
El siguiente ejemplo muestra el comportamiento con \underline, \uline y \ul.
Ejemplo:
\documentclass{article}
\usepackage{tabularx}
\usepackage{soul}
\usepackage[normalem]{ulem}
\newcommand{\texta}{{Short text from some command.}}
\newcommand{\textb} {{Long text from some other command. This text should be broken on line end and not overflow.}}
\soulregister{\texta}{0}
\soulregister{\textb}{0}
\begin{document}
\begin{tabularx}{\textwidth}{|l|X|}
\hline
nothing & \texta\ \textb \\
\hline
underline & \underline{\texta\ \textb} \\ % Overflows
\hline
uline & \uline{\texta\ \textb} \\ % Overflows
\hline
ul & \ul{\texta\ \textb} \\ % Breaks line, but does not underline. Space is ignored.
\hline
\end{tabularx}
\end{document}
Respuesta1
El \ul
comando del soul
paquete realmente funciona. Pero tienes dos problemas en la forma en que lo usas.
1) Su texto no estará subrayado debido al nivel adicional de llaves en las definiciones de \texta
y \textb
. Comience quitando estos aparatos ortopédicos:
\newcommand{\texta}{Short text from some command.}
\newcommand{\textb}{Long text from some other command. This text should be broken on line end and not overflow.}
2) Deberías ampliar el argumento de \ul
:
\edef\myulcmd{\noexpand\ul{\unexpanded\expandafter{\texta}\space\unexpanded\expandafter{\textb}}}%
\myulcmd