在文本后面添加彩色背景而不添加空白

在文本后面添加彩色背景而不添加空白

考虑一下:

在此处输入图片描述

我希望能够像这样突出显示文本没有在其周围添加空格——这样第一行中的每个单词都应与第二行中的相应单词对齐。(我知道我可能必须摆弄突出显示的大小,以防止它溢出到其他单词上。)

该示例是用 PSTricks 生成的,尽管我更喜欢 tikz 解决方案。

\documentclass[a4paper]{article}  
\usepackage{color}
\usepackage{pstricks}
\newrgbcolor{vlgray}{0.87 0.87 0.87}
\newcommand{\highlight}[1]{\psframebox[linearc=1.4mm,cornersize=absolute,fillcolor=vlgray, fillstyle=solid,linecolor=white]{#1}}
\begin{document}
Lorem ipsum \highlight{dolor} sit amet, \highlight{consectetuer} adipiscing elit, sed diam 

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam 
\end{document}

编辑:另请参见https://tex.stackexchange.com/a/89145/17049,我特别喜欢它,因为它比下面的答案(或上面的例子)更紧密地贴合文本周围的突出显示。

答案1

既然 OP 表示他偏爱某种tikz解决方案,那么就有一个解决方案。诀窍是在背景中绘制框架,同时中断边界框的计算,这样边界框就不会考虑这个背景。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit,backgrounds}
\newcommand{\highlight}[1]{%
\begin{tikzpicture}[baseline = (text.base)]
  \node[inner sep=0pt] (text) {#1};
  \begin{pgfinterruptboundingbox}
    \begin{pgfonlayer}{background}
    \node[fit=(text), rounded corners, fill=black!20, draw=none] {};
    \end{pgfonlayer}
  \end{pgfinterruptboundingbox}
\end{tikzpicture}%
}
\begin{document}
Lorem ipsum \highlight{dolor} sit amet, \highlight{consectetuer} adipiscing elit, sed diam 

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam 
\end{document}

结果

答案2

除非您确实需要圆角,否则您只需要颜色包即可。

在此处输入图片描述

\documentclass[a4paper]{article}  
\usepackage{color}

\definecolor{vlgray}{rgb}{0.87,0.87,0.87}
\newcommand{\highlight}[1]{{\setlength\fboxsep{0pt}\colorbox{vlgray}{#1}}}
\begin{document}
Lorem ipsum \highlight{dolor} sit amet, \highlight{consectetuer} adipiscing elit, sed diam 

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam 
\end{document}

答案3

\psframebox插入一个框,其框架边框的宽度为\pslinewidth,分隔线的宽度为\psframesep。从宏的两侧删除这些内容\highlight可产生所需的结果:

在此处输入图片描述

\documentclass{article}  
\usepackage{xcolor,pstricks}% http://ctan.org/pkg/{xcolor,pstricks}
\newrgbcolor{vlgray}{0.87 0.87 0.87}
\newcommand{\highlight}[1]{%
  \kern\dimexpr-\pslinewidth-\psframesep\relax%
  \psframebox[linearc=1.4mm,cornersize=absolute,fillcolor=vlgray, fillstyle=solid,linecolor=white]{#1}%
  \kern\dimexpr-\pslinewidth-\psframesep\relax}%
\begin{document}
Lorem ipsum \highlight{dolor} sit amet, \highlight{consectetuer} adipiscing elit, sed diam 

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam 
\end{document}

相关内容