更改“列表”块内某些行的背景颜色

更改“列表”块内某些行的背景颜色

我需要更改listings块内某些行的背景颜色。这是一个例子:

\documentclass{article}
\usepackage{listings}             % Include the listings-package
\usepackage{xcolor}

\newcommand{\add}{\makebox[0pt]{\color{green}\rule[-1ex]{\paperwidth}{3ex}}} 

\begin{document}

\lstset{ %
  escapechar=|,
  language=Python                       % the language of the code
}

\begin{lstlisting}

#!/usr/bin/env python

import sys
import os

class Foo:
    def __init__(self):
        x = 8
        x = 9

        |\add|# some additions
        |\add|x = 10
        |\add|if True:
        |\add|    x = 11

        x = 20
        x = 21

\end{lstlisting}
\end{document}

问题在于,它出现的不是单个绿色块,而是每条线一个绿色块的“脑筋急转弯”图案:

在此处输入图片描述

关于如何解决此问题有一些建议吗?

(我知道有几个类似的问题,但找到的答案似乎都没有适用)。

谢谢。

答案1

尝试fvextra软件包(fvextra- fancyvrb 的扩展和补丁),具体来说,就是该highlightlines功能。请注意,您可能还必须使用行编号选项来推断要突出显示的行。当然,您可以随后关闭此选项。

这是你的 MWE(注意 中的大写 V Verbatim):

\documentclass{article}
\usepackage{fvextra}
\usepackage{xcolor}

\begin{document}    
\begin{Verbatim}[numbers=left, highlightlines=12-15]

#!/usr/bin/env python

import sys
import os

class Foo:
def __init__(self):
x = 8
x = 9

# some additions
x = 10
if True:
  x = 11

x = 20
x = 21

\end{Verbatim}
\end{document}

产生

附言:对于兼容(Python)语法着色,您可能需要尝试pygments同一作者的软件包。它基本上是一个 Python 脚本,也可以输出 LaTeX 代码。支持多种编程语言。

答案2

根据他的回答使用列表创建斑马效果马丁·沙勒写道lstlinebgrd包。它有助于控制lstlistings环境的背景线条方面。

在这种特殊情况下,该选项linebackgroundcolor就足够了。

\documentclass{article}
\usepackage{listings}             % Include the listings-package
\usepackage{xcolor}

\usepackage{lstlinebgrd}

\begin{document}

\lstset{ %
  escapechar=|,
  language=Python                       % the language of the code
}

\begin{lstlisting}[
        linebackgroundcolor={%
        \ifnum\value{lstnumber}>11
            \ifnum\value{lstnumber}<16
                \color{green!35}
            \fi
        \fi},
]

#!/usr/bin/env python

import sys
import os

class Foo:
    def __init__(self):
        x = 8
        x = 9

        # some additions
        x = 10
        if True:
            x = 11

        x = 20
        x = 21

\end{lstlisting}
\end{document}

在此处输入图片描述

相关内容