표에 밑줄이 그어진 텍스트 구분선을 표시하는 방법은 무엇입니까?

표에 밑줄이 그어진 텍스트 구분선을 표시하는 방법은 무엇입니까?

테이블에 두 개의 명령을 결합한 긴 텍스트가 있는데 그 사이에 공백이 있고 밑줄이 그어져 있어야 합니다. 밑줄이 그어진 상태에서 줄 바꿈하려면 어떻게 해야 합니까?

아래 예는 \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작동합니다. 그러나 그것을 사용하는 방식에는 두 가지 문제가 있습니다.

\texta1) 및 정의에 중괄호가 추가되었기 때문에 텍스트에 밑줄이 그어지지 않습니다 \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

관련 정보