2009-08-20 39 views
27

我在一個lstlisting環境中有一堆代碼。如何在環境中突出顯示(顏色背景)只是特定的代碼塊?突出顯示一個lstlisting中的代碼塊

+1

未來,請通過以下網址詢問LaTeX相關問題:https://tex.stackexchange.com。 – 2017-12-30 11:47:58

+0

@IanannisFilippidis這對於瞭解...... 8年前會有幫助。 – 2017-12-31 05:57:05

回答

31

您可以使用\顏色框和您的房源內的轉義字符:

添加到您的序言

\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} 
+0

謝謝!這正是我所需要的。 – 2010-04-02 21:01:09

+0

我需要額外的東西。我正在使用Beamer軟件包進行演示,並且需要重點介紹lstlisting中的代碼。我需要的區別在於我無法更改lstlisting中的代碼,如轉義或具有特殊註釋定義。 代碼存在於無法更改的其他文件中。複製代碼並進行修改不是一種選擇,因爲它們中有很多。 我們可以從外部(即在\ begin {lstlisting})指出哪條線要突出顯示嗎? – thequark 2010-07-20 11:22:17

+7

不錯,但它不適用於多行,並且您正在丟失'colorbox'內的語法高亮顯示。 – Julian 2011-04-26 09:28:27

0

列表包提供了backgroundcolor = \ color {}作爲選項,但我確定這會使整個BG顏色,而不是一個塊。

你可以看看把它變成一個帶有顏色或colorbox軟件包的parbox。

6

這有點麻煩,但你可以將代碼分解成幾個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} 
+1

如果你有,例如,行號,或者它們會重新啓動,這個工作會嗎? – Edd 2009-08-21 19:06:34

+0

@Edd:默認情況下,它們會重新啓動,但您可以使用'firstnumber'關鍵字來解決該問題。在這個例子中,你應該在第二個和第三個'lstlisting'環境中分別使用'firstnumber = 2'和'firstnumber = 4'。使用'firstnumber = last'應該繼續前一個'lstlisting'環境中的編號,但是當我嘗試它時,它會關閉一個。 – 2009-08-21 19:52:21

+3

事實證明,編號問題有更好的解決方案:使用'name'關鍵字(例如'\ begin {lstlisting} [name = asdf,...')。該名稱不會顯示,並且具有相同名稱的「lstlisting」環境默認共享一個行計數器。 – 2009-08-21 20:11:50