2009-08-20 4 views
27

lstlisting環境にはたくさんのコードがあります。環境内の特定のコードだけを強調表示(色の背景)するにはどうすればよいですか?lstlisting内でコードのチャンクを強調表示

+1

を将来、LaTeX関連の質問はhttps://tex.stackexchange.comで尋ねてください。 –

+0

@IoannisFilippidisそれは... 8年前に知っておくと便利だったでしょう。 –

答えて

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

ありがとう!このixは私が必要としていたものです。 –

+0

私は何か特別なものが必要です。私は私のプレゼンテーションにBeamerパッケージを使用しており、lstlistingにあるコードを強調表示する必要があります。私の必要性の違いは、エスケープや特別なコメント定義のような、lstlisting内のコードを変更できないということです。 コードは変更できない別のファイル内にあります。コードをコピーして変更を加えることは、それらの多くがあるのでオプションではありません。 外部から(つまり\ begin {lstlisting}に)どの行を強調表示することができますか? – thequark

+7

いいですが、複数行では機能せず、 'colorbox'の中で構文ハイライトを失っています。 – Julian

0

リスティングパッケージはオプションとしてbackgroundcolor = \ color {}を提供していますが、それはチャンクではなくBGカラー全体を作成すると確信しています。

あなたはそれを色付きの箱、またはcolorboxパッケージにすることができます。

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

+0

@Edd:デフォルトでは、再起動されますが、 'firstnumber'キーワードを使って修正することができます。この例では、 'firstnumber = 2'と' firstnumber = 4'を2番目と3番目の 'lstlisting'環境でそれぞれ使用します。 'firstnumber = last'を使うのは、以前の' lstlisting'環境からの番号付けを続けることになっていますが、試してみると、それは1つだけです。 –

+3

ナンバリングの問題を解決するには、 'name'キーワードを使用する方が良い方法があります(例えば、' \ begin {lstlisting} [name = asdf、... ')。名前は表示されず、同じ名前の 'lstlisting'環境はデフォルトで行カウンタを共有します。 –

関連する問題