我在一个列表环境中有一堆代码。如何在环境中仅突出显示(彩色背景)特定的代码块?
发布于 2010-02-24 22:44:51
您可以在清单中使用\colorbox和转义字符:
添加到您的前言
\usepackage{color}
\definecolor{light-gray}{gray}{0.80}然后在你的文档中这样使用它:
\begin{lstlisting}[escapechar=!]
def mult(m: Matrix[Int], n: Matrix[Int]) {
val p = !\colorbox{light-gray}{new MatrixInt}!(m.rows, n.cols)
}
\end{lstlisting}发布于 2009-08-21 19:03:07
这有点麻烦,但是您可以将代码分解到几个lstlisting环境中。
\begin{lstlisting}
line
\end{lstlisting}
\vspace{-\baselineskip}
\begin{lstlisting}[backgroundcolor=\color{pink}]
very
interesting
\end{lstlisting}
\vspace{-\baselineskip}
\begin{lstlisting}
line
line
\end{lstlisting}发布于 2021-04-14 16:33:24
下面是一个使用tikz突出显示(部分)单行的解决方案
\documentclass[pdftex,11pt,a4paper]{article}
\usepackage{listings}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
% Command to place a TikZ anchor at the current position
\newcommand{\mytikzmark}[1]{%
\tikz[overlay,remember picture,baseline] \coordinate (#1) at (0,0) {};}
\newcommand{\highlight}[2]{%
\draw[yellow,line width=14pt,opacity=0.3]%
([yshift=4pt]#1) -- ([yshift=4pt]#2);%
}
\begin{document}
\begin{lstlisting}[escapechar=@, language=C]
@\mytikzmark{hl1Start}@struct@\mytikzmark{hl1End}@ S {
double @\mytikzmark{hl2Start}@salary_@\mytikzmark{hl2End}@;
};
\end{lstlisting}
\begin{tikzpicture}[remember picture, overlay]
\highlight{hl1Start}{hl1End}
\highlight{hl2Start}{hl2End}
\end{tikzpicture}
\end{document}然后你就会得到

因此,保留了lstlisting的语法突出显示。
https://stackoverflow.com/questions/1304315
复制相似问题