我无法理解该soul
软件包的部分文档。我想知道通过命令突出显示文本时生成的彩色矩形的确切下限和上限位置\hl
。文档指出,突出显示“只不过是用非常粗的线条进行加粗”,显然框高为 2.5ex。我一直在查看文档的第 8.7-8.8 节。
https://ctan.mirrors.hoobly.com/macros/generic/soul/soul.pdf
当我比较突出显示通孔soul
和遮蔽通孔封装时censor
,censor
封装遮蔽了文本,默认高度和深度分别为 2.1 ex 和 -0.3ex,总框高度为 2.4 ex。
https://mirrors.mit.edu/CTAN/macros/latex/contrib/censor/censor.pdf
我觉得应该有一种方法可以用自定义的彩色矩形的上下限来突出显示文本,类似于通过 设置黑框的高度和深度censor
。例如 \highlight{depth}{height}{要突出显示的文本}。
编辑:我正在测试以下内容:
\begingroup
\sbox0{\heightof{\hl{abcdefghijklmnopqrstuvwxyz}}}
%width=\the\wd0\linebreak
height=\the\ht0\linebreak
depth=\the\dp0
\endgroup
答案1
如果你追溯源代码,你就会发现它\SOUL@hlpreamble
使用了\SOUL@stpreamble
,而这又通过以下方式计算深度:
\def\SOUL@stpreamble{%
\dimen@\SOUL@ulthickness
\dimen@i=-.5ex
\advance\[email protected]\dimen@
\edef\SOUL@uldepth{\the\dimen@i}%
\let\SOUL@ulcolor\SOUL@stcolor
\SOUL@ulpreamble
}
这意味着盒子的制作方式是中心是 0.5ex多于基线。假设框高度为 2.5ex,这意味着顶部位于基线上方 0.5ex+1.25ex,底部位于基线下方 1.25ex-0.5ex。
至于自定义高度,你可以这样做
%! TEX program = lualatex
\documentclass{article}
\usepackage{xcolor}
\usepackage{soul}
\begin{document}
\begingroup
\setul{-2ex}{2ex}
\setulcolor{red}
\ul{test test test}
\endgroup
\ul{test test test}
\end{document}
其中第一个 -2ex 是深度(框顶部高于基线 2ex),第二个 2ex 是高度。
或者如果你只是想改变盒子的高度,你可以使用如何用灵魂定制高亮高度或者数学模式 - 从灵魂自定义突出显示