删除线和换行符

删除线和换行符

我需要使用\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 的解决方案确实有效,但对于唇膏的“盒子”来说却无效。

相关内容