从灵魂定制亮点

从灵魂定制亮点

我正在使用以下定制让灵魂凸显跨越界限为了\hl消除soul突出显示的区域之间的间隙:

\documentclass[a8paper, landscape]{scrartcl}
\usepackage{soul}

\usepackage[svgnames]{xcolor}

\sethlcolor{LightBlue}
\makeatletter
\def\SOUL@hlpreamble{%
\setul{\dp\strutbox}{\dimexpr\ht\strutbox+\dp\strutbox\relax}
\let\SOUL@stcolor\SOUL@hlcolor
\SOUL@stpreamble
}
\makeatother

\begin{document}
This is some \hl{highlighted text with a formula $q=\frac{p}{r}$. 
Notice how nicely it is highlighted.} 

Writting something more fancy, say, \hl{$|a|=\inf_{\overline{f}=a}|f|$, 
gives an obvious gap problem.}
\end{document}

产生

但是,如果符号延伸得太远,则\hl无法完全突出间隙,如上例所示。我尝试摆弄该\setul部分,但似乎没有什么好的结果。我也尝试了\smashinf 构造,但下面的线刚好与上面的线重叠。

怎样的设置才是正确的,才能凸显这一差距?

答案1

增加一些深度(和厚度),也设置\lineskip为零。请注意,这会改变行间空间,但我不知道有什么方法可以令人信服地soul覆盖\hl超出下划线规定深度的内容(背景颜色是通过非常粗的线划下划线来实现的)。

\documentclass[a8paper, landscape]{scrartcl}
\usepackage{soul}

\usepackage[svgnames]{xcolor}

\sethlcolor{LightBlue}
\makeatletter
\def\SOUL@hlpreamble{%
\setul{\dimexpr\dp\strutbox+2pt}{\dimexpr\ht\strutbox+\dp\strutbox+2pt\relax}
\let\SOUL@stcolor\SOUL@hlcolor
\SOUL@stpreamble
}
\makeatother

\begin{document}
\setlength{\lineskip}{0pt}

This is some \hl{highlighted text with a formula $q=\frac{p}{r}$.
Notice how nicely it is highlighted.}

Writting something more fancy, say, \hl{$|a|=\inf_{\overline{f}=a}|f|$,
gives an obvious gap problem.}

\end{document}

不要\hl在最终文档中使用。

enter image description here

相关内容