使用数学模式转义并启用列表 fancyvrb

使用数学模式转义并启用列表 fancyvrb

我正在尝试Verbatim使用退出数学模式这个答案。这很好,直到我使用 listings 包fancyvrb=true

\documentclass{article}
\usepackage{fancyvrb}
\usepackage{listings}
\lstset{
% fancyvrb=true,%
}

\begin{document}

\begin{Verbatim}[commandchars=\\\{\},codes={\catcode`$=3\catcode`^=7}]
x=1/sqrt(z**2) ! $\frac{1}{\sqrt{z^2}}$
\end{Verbatim}

\end{document}

如果我启用fancyvrb=true,我会出现以下错误:Missing $ inserted.然后什么都不起作用。


编辑mathescape=true:借鉴这个答案,在某些情况下它似乎有效,但在其他情况下则无效:

\documentclass{article}
\usepackage{fancyvrb}
\usepackage{listings}
\lstset{
fancyvrb=true,%
mathescape=true,%
}

\begin{document}

Outside of verbatim: $\mathsf{lb}_\mathsf{pre}$:

\begin{Verbatim}[commandchars=\\\{\},codes={\catcode`$=3\catcode`^=7}]
x=1/sqrt(z**2) ! $\frac{1}{\sqrt{z^2}}$
Vertex = ($\mathsf{lb}_\mathsf{pre}$: Label, $\mathsf{lb}_\mathsf{post}$: Label)
\end{Verbatim}

\end{document}

下标在逐字内仍然不起作用:

在此处输入图片描述


如果没有解决方案,我该如何暂时禁用某个特定Verbatim区块的列表?

答案1

使用以下命令本地更改设置formatcom

\documentclass{article}
\usepackage{fancyvrb}
\usepackage{listings}
\lstset{
 fancyvrb=true,%
}

\begin{document}

\begin{Verbatim}[commandchars=\\\{\},
  codes={\catcode`$=3\catcode`^=7},
  formatcom={\lstset{fancyvrb=false}}]
x=1/sqrt(z**2) ! $\frac{1}{\sqrt{z^2}}$
\end{Verbatim}

\begin{Verbatim}[commandchars=\\\{\},
  codes={\catcode`$=3\catcode`^=7\catcode`_=8},
  formatcom={\lstset{fancyvrb=false}}]
x=1/sqrt(z**2) ! $\frac{1}{\sqrt{z^2}}$
Vertex = ($\mathsf{lb}_\mathsf{pre}$: Label, $\mathsf{lb}_\mathsf{post}$: Label)
\end{Verbatim}

\end{document}

\lstset本地的,因此不会传播到以下listings环境。对于下标,您还必须重置的类别代码_

在此处输入图片描述

相关内容