这个问题与背景颜色和 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}