表の中に、2 つのコマンドをスペースで結合した長いテキストがあり、下線を引く必要があります。下線を引きながら折り返すにはどうすればよいですか?
以下の例は、\underline、\uline、\ul の動作を示しています。
例:
\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}
答え1
\ul
パッケージからのコマンドはsoul
実際に機能します。ただし、その使用方法には 2 つの問題があります。
\texta
1)との定義に中括弧のレベルが追加されているため、テキストに下線が引かれません\textb
。まず、これらの中括弧を削除します。
\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) 次の議論を展開する必要があります\ul
:
\edef\myulcmd{\noexpand\ul{\unexpanded\expandafter{\texta}\space\unexpanded\expandafter{\textb}}}%
\myulcmd