-->

Highlighting a Chunk of Code within a lstlisting

2019-03-10 19:16发布

问题:

I have a bunch of code in a lstlisting environment. How can I highlight (color background) just a particular chunk of code within the environment?

回答1:

You can use \colorbox and an escape character inside your listing:

Add to your preamble

  \usepackage{color}

  \definecolor{light-gray}{gray}{0.80}

then use it like this in your document:

  \begin{lstlisting}[escapechar=!]
  def mult(m: Matrix[Int], n: Matrix[Int]) {
    val p = !\colorbox{light-gray}{new MatrixInt}!(m.rows, n.cols)
  }
  \end{lstlisting}


回答2:

It's a bit cumbersome, but you can break the code into several lstlisting environments.

\begin{lstlisting}
line
\end{lstlisting}
\vspace{-\baselineskip}
\begin{lstlisting}[backgroundcolor=\color{pink}]
very
interesting
\end{lstlisting}
\vspace{-\baselineskip}
\begin{lstlisting}
line
line
\end{lstlisting}


回答3:

the listings package provides backgroundcolor=\color{} as an option, but i'm sure that makes the whole BG color, not a chunk.

you could have a look at putting it a parbox with color, or the colorbox package.