![修改后的 soul 的 hl 命令中突出显示的文本周围有多余的空格](https://linux22.com/image/356462/%E4%BF%AE%E6%94%B9%E5%90%8E%E7%9A%84%20soul%20%E7%9A%84%20hl%20%E5%91%BD%E4%BB%A4%E4%B8%AD%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA%E7%9A%84%E6%96%87%E6%9C%AC%E5%91%A8%E5%9B%B4%E6%9C%89%E5%A4%9A%E4%BD%99%E7%9A%84%E7%A9%BA%E6%A0%BC.png)
在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
几点:
您有多余的空间之内宏定义,尤其是在进入时、退出时以及在之前
\hl
。有时宏定义中的空格不起作用,例如在数学模式下,或者在宏名称后面就是两个明显的例子。但是,一般来说,宏定义中的空格会被翻译为输出中的空格。这就是你的虚假空格出现的地方,并且我在定义中添加了
\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}