列表的背景颜色与数学方程式不符

列表的背景颜色与数学方程式不符

这个问题与背景颜色和 mathescape 损坏的列表

这是我的代码:

\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\usepackage{listings}
\usepackage[dvipsnames]{xcolor}

\definecolor{MyGray}{gray}{0.9}

\title{test}

\begin{document}

\maketitle

\section{Example}


\begin{lstlisting}[   % 进行参数设置
         basicstyle=\ttfamily,
         backgroundcolor = \color{MyGray},
         breaklines=true, % 自动换行
         frame=tb,
         mathescape=true
    ]
    It is testing.
    $f(x)=\sum\limits_{n=0}^{\infty}$
    Testing is over.
    
\end{lstlisting}

\end{document}

显示的内容如下:

在此处输入图片描述

我们可以看到,背景颜色被破坏了。

根据背景颜色和 mathescape 损坏的列表,这是因为listings期望行高为常数。但是,它的解决方案仅适用于其问题。有没有通用的解决方案?我试过了\resizebox,它有效,但数学公式变得非常小。

更新:

通过使用包framed,它可以在某些情况下工作。但是,它仍然不能很好地工作。例如,如果我使用如下代码:

\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\usepackage{listings}
\usepackage[dvipsnames]{xcolor}
\usepackage{framed}

\definecolor{shadecolor}{gray}{0.9}

\setlength{\FrameSep}{0pt}
\setlength{\FrameRule}{0pt}

\title{test}

\begin{document}

\maketitle

\section{Example}

\begin{shaded}
\begin{lstlisting}[   % 进行参数设置
         basicstyle=\ttfamily\large,
         breaklines=true, % 自动换行
         frame=single,
         mathescape=true,
         belowskip=0pt
    ]
    It is testing.
    $f(x)=\sum\limits_{n=0}^{\infty}$
    Testing is over.
    
\end{lstlisting}
\end{shaded}

\end{document}

还是会出错,像这样:

在此处输入图片描述

答案1

我相信,这是一个已知问题,您可以尝试使用framed.sty和的组合listings.sty,并且MWE是:

\documentclass{article}
\usepackage{xcolor} 
\usepackage{listings}
\usepackage{framed}
\definecolor{shadecolor}{gray}{0.9}

\title{test}

\lstset{%
  mathescape=true,basicstyle=\ttfamily,
         breaklines=true,belowskip=0pt
}
\begin{document}

\setlength{\FrameSep}{0pt}
\setlength{\FrameRule}{0pt}
\maketitle

\section{Example}

\begin{shaded}
\begin{lstlisting}[frame=tb]
    It is testing.
    $f(x)=\sum\limits_{n=0}^{\infty}$
    Testing is over.
    
\end{lstlisting}
\end{shaded}

\end{document}

在此处输入图片描述

相关内容