删除颜色框前的空格

删除颜色框前的空格

我已经下达命令

\newcommand{\pink}[1]{\colorbox{red!20}{#1}}

以粉红色突出显示。它适用于单词和句子,但如果我想突出显示单词的子部分,例如

laugh\pink{ing}

它在 ing 之前添加了一个空格(这是用于语言学讲座)

有没有什么办法可以解决这个问题?

答案1

首先,TeX 语言不是“自由形式”,因此

\newcommand{\pink}[1]{
\colorbox{red!20}{#1}
}

\newcommand{\pink}[1]{\colorbox{red!20}{#1}}

在第一种情况下,在 之前和之后添加了两个空格\colorbox,因为行尾被转换为空格,并且它们成为替换文本的一部分。因此,您的第一次尝试相当于执行

\newcommand{\pink}[1]{ \colorbox{red!20}{#1} }

并且间距的来源现在已经很明显了。

但是,还有另一个问题:\colorbox在文本周围添加填充;其厚度由参数控制\fboxsep

下面是一个更复杂的定义,用于考虑一个问题,从上一个例子可以清楚地看出:

\documentclass{article}
\usepackage{xcolor}
\newcommand{\reducedstrut}{\vrule width 0pt height .9\ht\strutbox depth .9\dp\strutbox\relax}
\newcommand{\pink}[1]{%
  \begingroup
  \setlength{\fboxsep}{0pt}%  
  \colorbox{red!20}{\reducedstrut#1\/}%
  \endgroup
}

\begin{document}
laugh\pink{ing}

laugh\pink{ing}

lau\pink{f}ing

lau\begingroup\fboxsep=0pt\colorbox{red!20}{\reducedstrut f}\endgroup ing
\end{document}

我使用了\reducedstrut,以便彩色框不会碰到上面或下面行中可能的其他彩色框。使用\strut,而不是\reducedstrut,前两行中的彩色框将合并。最后,“斜体校正”\/确保所有内容都被粉红色背景覆盖,从最后两行可以清楚地看出(最后一行具有相同的结构,但没有\/)。

在此处输入图片描述

答案2

好的,我已经回答了自己的问题。在原始代码中,我使用了一些新行来使宏更具可读性;

\newcommand{\pink}[1]{
\colorbox{red!20}{#1}
}

我没有意识到这些会影响最终的格式。

新版本;

\newcommand{\pink}[1]{\colorbox{red!20}{#1}}

消除了颜色框前的间隙。但是,第一个字母前的颜色框内仍然有一些额外的空间,我很想修剪一下。

相关内容