我需要使用\sout{}
该ulem
包中的较长文本段落并结合其他宏。但是,这会删除所有换行符,并且文本将保留在一行上。有什么方法可以恢复正确的换行符吗?(也许是替代方案\sout{}
?)
以下是一个例子:
\documentclass{article}
\usepackage{ulem}
\textwidth=5cm
\setlength{\parindent}{0em}
\setlength{\parskip}{1em}
\newcommand{\dialogue}[2]{\hangindent=5.2em\makebox[5em][l]{#1:}\hspace{0.2em}#2}
\begin{document}
\sout{This is a long text. This is a long text. This is a long text. This is a long text. This is a long text. }
\dialogue{Person}{This is a long text. This is a long text. This is a long text. This is a long text. This is a long text.}
\sout{\dialogue{Person}{This is a long text. This is a long text. This is a long text. This is a long text. This is a long text.}}
\end{document}
不使用任何宏,sout{}
运行良好,但使用任何宏(包括我\dialogue{}
上面的例子)都会中断。有没有办法让底部字母换行?
答案1
第 3 章ulem
文档
并不能解决您的问题,但可以解释原因。其中有如下内容(除其他外):
括号和宏替换的一个重要不兼容性:括号内或来自宏的所有文本都排版在一个框中(就像在 中一样
\mbox
)。因此,括号将抑制其所括文本的拉伸和换行。此外,如果特殊处理的命令\-
、\\
和出现在额外的括号内,\newline
它们\linebreak
通常会被忽略。它们仅在括号界定命令参数而不引入分组级别时才起作用。
Ivan 的解决方案确实有效,但对于唇膏的“盒子”来说却无效。