新环境中的 AucTeX 与 BVerbatim 问题

新环境中的 AucTeX 与 BVerbatim 问题

我有以下newenvironment命令:

\newenvironment{code}
{ \VerbatimEnvironment
  \begin{mdframed}[
    backgroundcolor=black!70,
    leftmargin=1, rightmargin=1,
    innerleftmargin=4, innertopmargin=4, innerbottommargin=4,
    leftline=false, topline=false, rightline=false,·bottomline=false
  ]\color{white}\footnotesize\begin{BVerbatim}[commandchars=\\\{\}] }
{ \end{BVerbatim} \end{mdframed} }

此后,我的 emacs 中的语法颜色完全被破坏了,一切都像我在一个verbatim环境中一样(黄色)。“修复”颜色的唯一方法是执行以下操作:

\end{ BVerbatim}

...但显然这会使代码无法编译。

有没有什么办法可以正确修复这个问题?

答案1

AUCTeX 的语法高亮系统要求\begin{verbatim-env-name}在其自己的一行中。您可以通过稍微重新排列代码来轻松解决问题:

\newenvironment{code}{%
  \VerbatimEnvironment
  \begin{mdframed}[
    backgroundcolor   = black!70 ,
    leftmargin        = 1        ,
    rightmargin       = 1        ,
    innerleftmargin   = 4        ,
    innertopmargin    = 4        ,
    innerbottommargin = 4        ,
    leftline          = false    ,
    topline           = false    ,
    rightline         = false    ,
    bottomline        = false ]
    \color{white}
%%% Relevant rearrangement here:
\begin{BVerbatim}[commandchars=\\\{\}]
  }{
\end{BVerbatim}%
  \end{mdframed}%
}

对我来说它是这样的:

在此处输入图片描述

注意的颜色}{

fancyvrb需要注意的是,我认为如果您使用和手册中描述的功能会更好mdframed。代码:

\documentclass[a4paper,draft]{article}

\usepackage[T1]{fontenc}
\usepackage{lmodern,fancyvrb}

\DefineVerbatimEnvironment{code}{BVerbatim}{%
  commandchars = \\\{\}        ,
  formatcom    = \color{white} ,
  fontsize     = \footnotesize ,
}

\usepackage{mdframed,xcolor}
\surroundwithmdframed[%
backgroundcolor   = black!70 ,
leftmargin        = 1        ,
rightmargin       = 1        ,
innerleftmargin   = 4        ,
innertopmargin    = 4        ,
innerbottommargin = 4        ,
leftline          = false    ,
topline           = false    ,
rightline         = false    ,
bottomline        = false
]{code}

\begin{document}

\begin{code}
{\color{cyan}\textbackslash{}surroundwithmdframed[%}
backgroundcolor   = black!70 ,
\textcolor{red}{leftmargin        = 1        ,}
bottomline        = false
\fcolorbox{green}{black}{]{code}}
\end{code}

\end{document}

结果如下: 在此处输入图片描述

AUCTeX 能够解析此版本并更新其内部变量,以便了解这个新的逐字环境。

答案2

尝试这个:

\newenvironment{code}
{ \VerbatimEnvironment
  \begin{mdframed}[
    backgroundcolor=black!70,
    leftmargin=1, rightmargin=1,
    innerleftmargin=4, innertopmargin=4, innerbottommargin=4,
    leftline=false, topline=false, rightline=false,·bottomline=false
  ]\color{white}%
  \begin{BVerbatim}[commandchars=\\\{\}] }
{ \end{BVerbatim}
  \end{mdframed} }

(我听从了 OP 里的各种空间标记)

相关内容