使用背景颜色突出显示文本

使用背景颜色突出显示文本

我试图突出显示文本使用\texttt字体和一个背景颜色(非常像StackExchange 上的突出显示this我已经尝试过了用一个colorbox, 它不支持换行但结果是:

在此处输入图片描述

或者,我找到了一个包名为soul来强调,但在我看来视觉上不太吸引人作为颜色框,因为缺少填充,它将看起来像这样:

在此处输入图片描述

左边是彩盒,右边是包装soul

我的编码:

\usepackage{color}
\usepackage{soul}

\definecolor{lightgrey}{rgb}{0.925, 0.925, 0.925}
\sethlcolor{lightgrey}

\newcommand{\codebox}[1]{\texttt{\colorbox{lightgrey}{#1}}}
\newcommand{\codebox2}[1]{\texttt{\hl{#1}}}

有什么想法可以克服这些问题吗?

更新:正如下面的评论中提到的那样\texttt,不支持换行符,这使得问题更加严重。

答案1

Soul 不支持调整确定其高亮框位置的尺寸。

通过查看其代码,我重新定义了其内部宏之一。我还使用了这个答案

\documentclass{article}
\usepackage{color}
\usepackage{soul}
\usepackage{tikz} % only to get \foreach

\definecolor{lightgrey}{rgb}{0.925, 0.925, 0.925}
\sethlcolor{lightgrey}

\makeatletter
\def\SOUL@hlpreamble{%
    \setul{}{3.5ex}% increased by 1ex
    \let\SOUL@stcolor\SOUL@hlcolor
    \dimen@\SOUL@ulthickness
    \dimen@i=-.75ex % increased by -0.25ex
    \advance\[email protected]\dimen@
    \edef\SOUL@uldepth{\the\dimen@i}%
    \let\SOUL@ulcolor\SOUL@stcolor
    \SOUL@ulpreamble
}
\makeatother

\newcommand*{\codebox}[1]{{\ttfamily\hyphenchar\font=45\relax\hl{~#1~}}}

\begin{document}
    \foreach \i in {1,...,10} {
        text text text text text \codebox{extracalifragilisticexpealidocious}
    }
\end{document}

输出

请注意,如果作者soul改变其数据包的内部结构并且大框改变行高,则这可能会中断。

相关内容