为什么在 lstlisting 内部的 mathescape 中使用 lstinline 不起作用?

为什么在 lstlisting 内部的 mathescape 中使用 lstinline 不起作用?

我正在尝试排版一些代码。该代码包含一些嵌入的数学运算,但在嵌入的数学运算中,我需要引用代码中的变量。我希望数学运算中引用的变量像实际代码一样排版(所以我不想使用 mathtt 环境)。不幸的是,当我尝试执行此操作时出现错误。以下是示例:

\documentclass[11pt]{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[mathescape]
@pre: $ \langle \lstinline!a! \rangle $
\end{lstlisting}
\end{document}

我收到以下错误消息:

ERROR: Extra }, or forgotten \endgroup.

--- TeX said ---
<recently read> \egroup 

l.6 @pre: $ \langle \lstinline!a!
                                  \rangle $

我也尝试过使用\lstinline{a}。我也尝试过将其嵌入到和中\mbox\parbox我也尝试过使用并在数学公式周围\begin{lstlisting}[escapechar=^]添加一个额外的。^

我无法简单地离开转义环境,因为我将这些内联字符包裹在像\left(和 这样的大符号中\right)

答案1

我认为你想要一个保存箱。

\documentclass[11pt]{article}

\usepackage{listings}

\begin{document}

\newsavebox\boxa
\savebox\boxa{\lstinline{a}}

\begin{lstlisting}[mathescape]
@pre: $ \langle \usebox{\boxa} \rangle $
\end{lstlisting}

\end{document}

相关内容