下面的 MWE 旨在为Verbatim
环境的文本和背景着色。
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{color}
\usepackage{calc}
\definecolor{PYtxt}{rgb}{0.97,0.97,0.95}
\definecolor{PYbgc}{rgb}{0.15,0.16,0.13}
\newsavebox{\PYbgbox}
\newenvironment{PYcolorbox}%
{\noindent%
\begin{lrbox}{\PYbgbox}%
\begin{minipage}{\linewidth-2\fboxsep}%
\color{PYtxt}}%
{\ignorespacesafterend%
\end{minipage}%
\end{lrbox}%
\colorbox{PYbgc}{\usebox{\PYbgbox}}}
\begin{document}
\begin{PYcolorbox}
\begin{Verbatim}[commandchars=\\\{\},numbers=left,firstnumber=1,stepnumber=1]
File "<stdin>", line 1
1+
^
SyntaxError: invalid syntax
\end{Verbatim}
\end{PYcolorbox}
\end{document}
上面代码的问题是产生的行号fancyvrb
也是白色的,编译时看不到。
我怎样才能同时完成以下两项操作(但不能同时完成):
- 独立改变文本颜色和行号颜色?
PYcolorbox
向左扩展以包含(白色)线号?
替代代码方法:添加formatcom=\color{white}
到Verbatim
参数会产生白色文本(包括行号),但也会影响彩色背景的底部边距。
目标是将其与一起使用Pygments
。
任何帮助,将不胜感激。
答案1
通过重新定义,\theFancyVerbLine
您可以独立更改数字的颜色;一个小例子:
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{xcolor}
\usepackage{calc}
\definecolor{PYtxt}{rgb}{0.97,0.97,0.95}
\definecolor{PYbgc}{rgb}{0.15,0.16,0.13}
\newsavebox{\PYbgbox}
\newenvironment{PYcolorbox}%
{\noindent%
\renewcommand\theFancyVerbLine{%
\textcolor{red!80!black}{\small\arabic{FancyVerbLine}}}%
\begin{lrbox}{\PYbgbox}%
\begin{minipage}{\linewidth-2\fboxsep}%
\color{PYtxt}}%
{\ignorespacesafterend%
\end{minipage}%
\end{lrbox}%
\colorbox{PYbgc}{\usebox{\PYbgbox}}}
\begin{document}
\begin{PYcolorbox}
\begin{Verbatim}[commandchars=\\\{\},numbers=left,firstnumber=1,stepnumber=1]
File "<stdin>", line 1
1+
^
SyntaxError: invalid syntax
\end{Verbatim}
\end{PYcolorbox}
\end{document}
不过,我想知道,如果你使用这样的包会不会更好minted
或者listings
它为您提供开箱即用的彩色背景。minted
由于它使用 Pygments,因此在这里可能特别有用。