修改后的 soul 的 hl 命令中突出显示的文本周围有多余的空格

修改后的 soul 的 hl 命令中突出显示的文本周围有多余的空格

LaTeX 中的酷炫文本突出显示在对 Caramdir 的回答的评论中,Gumbo 提出了对 的\hlc修改,以允许动态选择突出显示颜色。soul\hl

\hlc但是,在突出显示的文本周围留下了多余的空间,特别是之前和之后。

以下是 MWE:

\documentclass[11pt]{book}
\usepackage{xcolor} 
\usepackage{soul}
\newcommand{\hlc}[2][yellow]{ {\sethlcolor{#1} \hl{#2}} }
\begin{document}
In the source there is\hlc[yellow]{no space}between highlighted-surrounding text.
\end{document}

输出如下:

剩余空间

答案1

几点:

  1. 您有多余的空间之内宏定义,尤其是在进入时、退出时以及在之前\hl。有时宏定义中的空格不起作用,例如在数学模式下,或者在宏名称后面就是两个明显的例子。但是,一般来说,宏定义中的空格会被翻译为输出中的空格。这就是你的虚假空格出现的地方,并且

  2. 我在定义中添加了\unskip和,以删除调用周围的空格。你可能不希望在实际定义中使用它们,但这是为了展示宏如何能够超越自身来删除\ignorespaces\hlc外部的周围空间。

妇女权利委员会:

\documentclass[11pt]{book}
\usepackage{xcolor} 
\usepackage{soul}
\newcommand{\hlc}[2][yellow]{\unskip{\sethlcolor{#1}\hl{#2}}\ignorespaces}
\begin{document}
In the source there is \hlc[yellow]{no space} between highlighted-surrounding text.
\end{document}

在此处输入图片描述

相关内容