Verbatim 的彩色文本和背景,不影响 `fancyvrb` 行号

Verbatim 的彩色文本和背景,不影响 `fancyvrb` 行号

下面的 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,因此在这里可能特别有用。

相关内容