테이블에 두 개의 명령을 결합한 긴 텍스트가 있는데 그 사이에 공백이 있고 밑줄이 그어져 있어야 합니다. 밑줄이 그어진 상태에서 줄 바꿈하려면 어떻게 해야 합니까?
아래 예는 \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
작동합니다. 그러나 그것을 사용하는 방식에는 두 가지 문제가 있습니다.
\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