Strikeout - 何时哪个包裹?(ulem vs soul vs ...)

Strikeout - 何时哪个包裹?(ulem vs soul vs ...)

何时使用哪个包进行删除?

我看到了答案:

\usepackage{ulem}
\sout{Hello World}

或者

\usepackage{soul}
\st{Hello world}

或者

\usepackage{cancel}
\cancel{Hello world}

在什么情况下最好使用哪一个?

也许还有其他我不知道的包裹?

难道不应该有一种标准的三振出局方式吗?

答案1

cancel用于指示数学取消,因此仅在数学模式下有效;它也能进行对角线删除。

soululem看起来非常相似。它们之间的一个基本语义差异是,ulem默认情况下,将 的定义更改为在\emph{...}其参数下划线,而不是将其置于斜体中。这似乎旨在复制打字机排版,当时下划线通常是表示强调的唯一方式。由于现在使用下划线来强调已经基本被弃用,因此soul当我确实需要为某些内容加下划线时,我总是使用它。

唯一的那个大原因支持soul然而,它能够处理换行符和连字符:

\documentclass{article}

\textwidth=1cm % just to force hyphenation to happen

\usepackage[T1]{fontenc}

\usepackage{cancel,soul,ulem}

\begin{document}
\[
\frac{\cancel{5}*17}{\cancel{5}*23}
\]

X \sout{supercalifragilisticexpialidocious}

X \st{supercalifragilisticexpialidocious}

X \emph{supercalifragilisticexpialidocious}

X \ul{supercalifragilisticexpialidocious}
\end{document}

(这X是必需的,因为 LaTeX 不会将段落中的第一个单词连字符连接起来。)

输出

相关内容