我有以下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 里的各种空间标记)