Wie kann man eine unterstrichene Textumbruchzeile in einer Tabelle einfügen?

Wie kann man eine unterstrichene Textumbruchzeile in einer Tabelle einfügen?

Ich habe einen langen Text in einer Tabelle, der aus zwei Befehlen mit einem Leerzeichen dazwischen zusammengesetzt ist und unterstrichen werden soll. Wie kann ich dafür sorgen, dass der Text umgebrochen wird, während er unterstrichen ist?

Das folgende Beispiel zeigt das Verhalten mit \underline, \uline und \ul.

Beispiel:

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

Beispielausgabe mit überlaufenden Zellen

Antwort1

Der \ulBefehl aus dem soulPaket funktioniert tatsächlich. Bei der Verwendung treten jedoch zwei Probleme auf.

1) Ihr Text wird aufgrund der zusätzlichen Klammern in den Definitionen von \textaund nicht unterstrichen \textb. Entfernen Sie zunächst diese Klammern:

\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) Sie sollten das Argument von erweitern \ul:

\edef\myulcmd{\noexpand\ul{\unexpanded\expandafter{\texta}\space\unexpanded\expandafter{\textb}}}%
\myulcmd

verwandte Informationen