我正在listings
使用mathescape=true
来包含一些排版输出。但是,我希望输出周围有一些空白。目前我有
\lstset{language=,
keepspaces=true,
basicstyle=\ttfamily,
columns=flexible,
mathescape=true,
}
然而,结果是排版方程式被放在紧接在前面的代码之后的行上,并且没有垂直空格。
例如:
\begin{lstlisting}
code: Gimme the square root of two:
$\sqrt{2}$
code: Gimme a rational approximation to pi:
$\displaystyle{\frac{355}{133}}$
\end{lstlisting}
结果是
我知道我可以将方程式放在列表之外,但对于我来说,将方程式放在列表内效果更好。
我怎样才能强制缩进转义的方程式,并且在上面和下面留一点空白?
答案1
你可以使用escapebegin
和插入标记escapeend
。如果你不使用mathescape
但escapechar
你可以例如切换到 displaystyle:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings}
% #################################################################### COLORS #
\lstset{language=,
keepspaces=true,
basicstyle=\ttfamily,
columns=flexible,
%mathescape=true,
escapechar=$,
escapebegin=\[,
escapeend=\]
}
\begin{document}
\begin{lstlisting}
code: Gimme the square root of two:
$\sqrt{2}$
code: Gimme a rational approximation to pi:
$\displaystyle{\frac{355}{133}}$
\end{lstlisting}
\end{document}
您还可以插入一些支柱:
\lstset{language=,
keepspaces=true,
basicstyle=\ttfamily,
columns=flexible,
mathescape=true,
escapebegin=\quad\mbox{\rule[-1em]{0pt}{2.5em}},
}
答案2
有趣的问题!
\documentclass{article}
\usepackage{listings}
\lstset{language=,
keepspaces=true,
basicstyle=\ttfamily,
columns=fullflexible,
mathescape=true,
}
\newcommand{\PRESPACE}{\vadjust pre{\vskip\abovedisplayskip}}
\newcommand{\POSTSPACE}{\vadjust{\vskip\belowdisplayskip}}
\newcommand{\DS}{%
\aftergroup\aftergroup\aftergroup\PRESPACE
\aftergroup\aftergroup\aftergroup\POSTSPACE
\displaystyle
}
\begin{document}
\begin{lstlisting}
code: Gimme the square root of two:
$\DS\sqrt{2}$
code: Gimme a rational approximation to pi:
$\DS\frac{355}{133}$
code: OK
\end{lstlisting}
\end{document}
我们必须跳下两组才能\vadjust
行动。