您想要在某个短语下划线,或删除它以将其标记为已删除 - 此页面整理了用于此目的的工具。 LaTeX 的内置 \underline{...} 适用于任何文档,但它实际上是一个数学命令:它不能跨行并且看起来很粗糙。对于长文本,请使用 ulem 包的换行下划线和删除线;对于字母间距和记号笔突出显示,请使用 soul 包。请注意,在西方排版中通常避免使用下划线作为强调的方式 - 要强调,请使用\emph(请参阅单独的页面)。
内置\underline 及其限制
写下 \underline{the phrase to underline},参数下方就会画出一条线。它不需要额外宏包,在文本和数学中都能使用。事实上,这个命令原本的适用场景是 数学模式——它正是用来给变量加下划线的工具,例如 $\underline{x}$。在文本中使用它时,可以把它理解为 LaTeX 正在给一个 内容已经按数学处理的盒子 加下划线;这样它的行为就容易解释了。
This word is \underline{underlined} in running text.由此产生两个弱点。首先,\underline 生成一个牢不可破的盒子,因此它不能在行尾处中断:如果带下划线的短语不适合行宽,它会溢出到右边距而不是换行。一个简短的单词很好,但如果在一个长短语或整个句子下划线,它就会崩溃。其次,它不会根据字形调整规则的粗细或位置(尤其是像g和p这样的下行字母),因此线可能会看起来切入字母,看起来很粗糙。
简而言之,\underline 足以“在数学符号下画一条线”和“快速在一个非常短的单词下划线”,但它不适合为运行文本添加下划线。对于正文中必须跨行的下划线和删除线,或者您希望看起来整洁,请参阅下面的ulem 或soul。
ulem — 断行下划线和删除线
Donald Arseneau 的 ulem 包提供了在行尾正确断开的下划线。它还提供双波浪下划线、删除线(水平线)、划线(对角线阴影线)、虚线和点线下划线——用于删除和校对的全套线条。使用 \usepackage{ulem} 加载它,并将每个命令用作带有一个参数的命令。
| 命令 | 效果 |
|---|---|
\uline | 下划线(跨行分隔) |
\uuline | 双下划线 |
\uwave | 波浪下划线 |
\sout | 删除线(穿过单词的线) |
\xout | 划掉(文本上的对角线阴影) |
\dashuline | 虚线下划线 |
\dotuline | 点下划线 |
\uline{important} \uuline{urgent} \uwave{boat}
\sout{wrong} \xout{removed}
\dashuline{dashing} \dotuline{dotty}您可以使用两个参数调整线路。深度(从文本基线到标线的距离)为长度\ULdepth,厚度为\ULthickness。请注意,\ULthickness 是宏,而不是长度,因此您可以使用\renewcommand 设置它,而不是\setlength (\renewcommand{\ULthickness}{1pt})。 \ULdepth为普通长度,用\setlength设置;默认情况下,它会自行调整为当前字体。
该包也是可扩展的。使用\markoverwith,您可以通过使用任何形状重复重划来定义新类型的线条,并且\useunder{underline-command}{font-declaration}{font-command} 声明用下划线替代给定的字体选择命令。
关键问题 — ulem 使 \emph 下划线
这个让所有不知道的人都被绊倒了。当您加载ulem时,\emph(以及在某种程度上\em)默认情况下会加下划线而不是斜体。用该包自己的话来说,“ulem 通常会在 \emph 强调的文本中用下划线替换斜体。”每次你标记强调时,你的文本下面就会画出一条规则,你会惊讶地发现手稿里充满了下划线。更糟糕的是,嵌套\emph不再提供\emph通常在斜体和直立之间的交替——它只是堆积更多下划线。
补救措施是标准的:使用[normalem]选项加载它。然后\emph保持其正确的斜体行为,并且仅在您明确写入\uline和朋友的地方才会出现下划线。要切换中间文档,您还可以使用声明\normalem(和\ULforem来恢复默认值)。除非您有特殊原因,否则每次都使用 [normalem] 加载 ulem 是最安全的。
\usepackage[normalem]{ulem}
% \emph stays italic; underline only where you ask:
This is \emph{emphasis}, and this is \uline{underlined}.soul — 字母间距和荧光笔
Melchior Franz 的 soul 软件包是一个不同的工具系列。使用 TeX 的连字符机制,它可以逐个字符地分离文本并在它们之间进行操作,因此它可以执行 字母间距(间隔)、下划线、删除线 和 标记笔突出显示 - 所有这些都可以跨行结束。它的名字是两个中心命令的组合:\so(空格)和\ul(下划线)。它按用途提供了五个命令:
| 命令 | 效果 |
|---|---|
\so | Letterspacing(将字母间隔开) |
\caps | 大写字母和小写字母的间距 |
\ul | 下划线 |
\st | 三振(重击) |
\hl | 突出显示(记号笔) |
对于颜色,用\setulcolor 设置下划线,用\setstcolor 设置删除线,用\sethlcolor 设置突出显示。默认情况下,突出显示为黄色,下划线和删除线为黑色。重要的一点:\hl 仅在加载了 color(或 xcolor)包时才显示颜色 — 如果没有它,\hl 将回退到下划线而不是填充。您可以使用\definecolor构建自己的颜色并将其传递进去。
\usepackage{color,soul}
\definecolor{lightblue}{rgb}{.90,.95,1}
\sethlcolor{lightblue}
% ...
\so{letterspacing} \ul{underlining} \st{overstriking}
\hl{this is highlighted in light blue color}要处理非拉丁文字(例如日语)或重音字符,您需要 UTF-8 支持。它曾经存在于一个单独的包soulutf8中,但是当前的soul(v3及更高版本)合并了soulutf8并支持UTF-8输入(旧核心被重命名为soul-ori并在内部加载)。因此,在最近的 TeX Live 或 MiKTeX 上,只需加载 soul 就可以让它处理 UTF-8 字符。
因为它的命令每次分析一个字符的参数,但是, 里面可能包含的内容有 的限制。主要规则是:
- 数学 包在
$...$中可以使用,但 LaTeX 形式\(...\)不能 使用。 - 无嵌套。 不要将一个
soul命令嵌套在另一个命令中。如果您确实需要它,请先将内部材料放入盒子中(例如\mbox)并传递。 - 要将文本视为一个单元, 将其包装在
{...}中 — 但它必须 不包含连字符点。要将包含连字符的单词分组,请使用\mbox{...},这让soul将其视为单个项目,即使内部有连字符也是如此。 - 要分解
\ul、\st或\hl内的连字,请插入{}或\null(例如\ul{Auf{}lage})。 \verb、LaTeX 环境和命令定义以及其他“奇特的东西”可能不会出现在参数中。为了安全起见,请使用纯水平文本。
选择哪个 - 以及关于下划线本身的一句话
粗略指南:对于数学中符号下的一行,内置\underline。对于正文中的换行下划线、删除线和校对标记,ulem(始终与[normalem])。对于记号笔突出显示或字母间距,soul。 ulem 的 \uline 和 soul 的 \ul 都是可破坏的下划线,看起来很相似,但 soul ——位于其字母间距引擎之上 ——更多地限制了它的参数,而作为回报,它也在一个地方处理突出显示和字母间距。
下划线日语正文带有额外的警告。 ulem 和 soul 是为西方文本设计的,在含有大量日语的段落中,众所周知,下划线不会在行尾处干净地断开(奥村晴彦论坛上反复出现的话题)。对于跨越多行日语的下划线,存在 jumoline 和 udline 等专用软件包(默认情况下它们可能不会提供,并且可能需要单独安装)。
最后一张印刷注释。下划线是打字机和手写的遗留物,在西方正文中,它通常不被视为强调的方式。排版传统通过斜体、(受限的)字母间距或粗体来强调。如果您只想强调某些内容,请使用 \emph 而不是下划线,并在该行本身带有含义的情况下保留下划线和删除线 - 在校样中标记删除,或显示链接或填写空白。
修订工作流程
下划线和删除线通常是校对和协作的工具,而不是完成的正文文本的工具。如果最终版本和标记修订共享同一个源,则在散文和行命令之间放置校对宏会更安全。在提交的版本中,该宏可以变空或切换到不同的显示。
\usepackage[normalem]{ulem}
\newcommand{\deleted}[1]{\sout{#1}}
\newcommand{\added}[1]{\uline{#1}}
結果は \deleted{古い値} \added{新しい値} とした。- 不要将其与散文强调混合在一起。 将强调保留为
\emph,并将校对行放在单独的宏后面,例如\deleted和\added。 - 在最终版本中将其可移除。 在提交之前可以切换到
\renewcommand{\deleted}[1]{}的设计可以防止修订标记泄漏到最终的 PDF 中。 - 小心长日语段落。 断行和避头尾可能会受到影响,因此必要时请考虑日语特定的下划线包或 PDF 注释。
- 检查打印中的彩色突出显示。
soul突出显示在屏幕上可能看起来不错,但在单色打印中难以阅读或难以访问。
使修订标记可切换
如果你直接在散文中写\sout{...},你必须在最终提交之前找到每一个标记。当稿件将在修订模式和最终模式之间切换时,请从头开始定义带有切换的显示宏。然后审阅的 PDF 可以显示删除和添加的内容,而最终的 PDF 可以删除已删除的文本并保留添加的内容,所有这些都通过更改一个位置来完成。将最终模式 PDF 检查放入提交清单中,这样就不会忘记切换。
\usepackage[normalem]{ulem}
\newif\ifshowrevisions
\showrevisionstrue % final: \showrevisionsfalse
\newcommand{\deleted}[1]{\ifshowrevisions\sout{#1}\fi}
\newcommand{\added}[1]{\ifshowrevisions\uline{#1}\else #1\fi}使用此形状,主体保留\deleted{old text} 和\added{new text} 的含义。在协作工作中,还要决定原因和名称是存在于 PDF 注释中还是仅存在于源代码差异中。线条在修改过程中很有用,但它们在完成的散文中是强烈的视觉噪音,因此请将最终模式切换作为手稿工作流程的一部分。