我需要更改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}