我试图突出显示文本使用\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
改变其数据包的内部结构并且大框改变行高,则这可能会中断。