我正在尝试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
环境。对于下标,您还必须重置的类别代码_
。