我正在使用以下定制让灵魂凸显跨越界限为了\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
部分,但似乎没有什么好的结果。我也尝试了\smash
inf 构造,但下面的线刚好与上面的线重叠。
怎样的设置才是正确的,才能凸显这一差距?
答案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
在最终文档中使用。