调整 realboxes 包中 Colorbox 宏提供的填充

调整 realboxes 包中 Colorbox 宏提供的填充

我的目标是使用包Colorbox中的宏realboxes来突出显示内联代码,并使用包lstinline中的命令listings。该Colorbox命令非常适合此目的,但我发现框周围的填充量对我来说有点太大了。下面我展示了一个 MWE 并展示了编译的示例,然后展示了我希望它看起来是什么样子的比较(修改后的版本是使用图像处理软件创建的)。

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}
\usepackage{realboxes}

\begin{document}
Some inline code \Colorbox{gray!20}{\lstinline{@#$%^&*()}} here
\end{document}

实际的:

在此处输入图片描述

期望:

在此处输入图片描述

答案1

您可以局部设置不同的值\fboxsep;为了使所有这些背景的高度相同,幻影似乎是最佳解决方案。您还可以使用字距减少侧面的填充。

\documentclass{article}
\usepackage{xpatch}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{realboxes}

\definecolor{mygray}{rgb}{0.8,0.8,0.8}

\lstset{
  basicstyle=\ttfamily,
  backgroundcolor=\color{mygray},
}

\makeatletter
\xpretocmd\lstinline
  {%
   \bgroup\fboxsep=1.5pt
   \Colorbox{mygray}\bgroup\kern-\fboxsep\vphantom{\ttfamily\char`\\y}%
   \appto\lst@DeInit{\kern-\fboxsep\egroup\egroup}%
  }{}{}
\makeatother

\begin{document}

\noindent\lstinline[language=TeX]|\my code| \lstinline|axe| \lstinline|lll|

\begin{lstlisting}[language=TeX,columns=fullflexible]
\my code
\end{lstlisting}

\end{document}

在此处输入图片描述

答案2

它使用\fboxsep与标准相同的参数\colorbox

在此处输入图片描述

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}
\usepackage{realboxes}

\begin{document}
Some inline code \Colorbox{gray!20}{\lstinline{@#$%^&*()}} here

\setlength\fboxsep{0pt}
Some inline code \Colorbox{gray!20}{\lstinline{@#$%^&*()}} here
\end{document}

相关内容