我尝试使用列表中的颜色框突出显示某些代码行。
\documentclass[12pt,a4paper]{report}
\usepackage{xcolor}
\usepackage{listings}
\begin{document}
\lstdefinestyle{data}{
backgroundcolor=\color{yellow},
basicstyle=\ttfamily\small,
escapechar=\%
}
\lstset{style=data}
\begin{lstlisting}
1 2 3 4
%\colorbox{gray}{1 2 3 4}%
5 6 7 8
\end{lstlisting}
\end{document}
从示例中可以看出,似乎存在四个问题:
- 忽略所有间距;
- 上面有一行细细的空白;
- 字体稍微小了一点;
- 有一些缩进。
我可以轻松解决第四个问题(添加负空间),但其余的问题就没办法了。在中间添加 \hspace 可以解决第一个问题,但非常麻烦。
答案1
\documentclass{article}
\usepackage{listings,mdframed,xcolor}
\NewDocumentCommand{\hl}{v}{\hspace{-\fboxsep}\colorbox{gray}{#1}}
\lstset{
basicstyle=\ttfamily\small,
escapechar=\%,
columns=fullflexible,
keepspaces,
}
\mdfsetup{backgroundcolor=yellow,linewidth=0pt}
\begin{document}
\begin{mdframed}
\begin{lstlisting}
1 2 3 4
%\hl{1 2 3 4}%
5 6 7 8
\end{lstlisting}
\end{mdframed}
\end{document}