关于emacs的AucTeX是非常了不起的工具,但是当我写一个单独的'$'时,所有的颜色都被打破了.
通常一个'$'伴随着另一个'$'表示数学方程式,但对于源列表,经常使用单个'$'.
\begin{Verbatim}
(let ((buffer (url-retrieve-synchronously
...
(re-search-forward "^$" nil 'move) <-- It breaks the coloring
...
\end{Verbatim}
Run Code Online (Sandbox Code Playgroud)
简单的解决方案如下匹配'$'.
(re-search-forward "^$" nil 'move) ;; $
Run Code Online (Sandbox Code Playgroud)
AucTeX中有任何选项可以防止出现这个单一的'$'问题吗?
AUCTeX知道$在逐字环境中并不特别,但你必须Verbatim通过安排它出现来告诉它这是一个逐字的环境LaTeX-verbatim-environments-local.
如果AUCTeX以最佳方式安装,它已经知道了,因为AUCTeX为你加载的每个文件\usepackage和朋友加载一个样式挂钩.您可能需要告诉它使用C-c C-n(TeX-normal-mode)解析头文件.
如果这还不够,则意味着Verbatim在样式文件中定义了AUCTeX没有足够的信息.您可以告诉AUCTeX解析您安装的部分或全部样式文件; 请参阅AUCTeX手册中的"自动"章节.
有时AUCTeX无法解析样式文件; 然后你可以手工完成这部分.下面的代码假设您Verbatim从fancyvrb包中获取环境; 否则改编名称.使用以下内容创建一个fancyvrb.el在其中一个目录中调用的文件TeX-style-path(可能还有其他值得投入的内容,我刚刚进行了调整alltt.el):
(TeX-add-style-hook
"fancyvrb"
(lambda ()
(LaTeX-add-environments "BVerbatim" "LVerbatim" "SaveVerbatim" "Verbatim")
(make-local-variable 'LaTeX-indent-environment-list)
(add-to-list 'LaTeX-indent-environment-list '("BVerbatim" current-indentation))
(add-to-list 'LaTeX-indent-environment-list '("LVerbatim" current-indentation))
(add-to-list 'LaTeX-indent-environment-list '("SaveVerbatim" current-indentation))
(add-to-list 'LaTeX-indent-environment-list '("Verbatim" current-indentation))
(make-local-variable 'LaTeX-verbatim-regexp)
(setq LaTeX-verbatim-regexp (concat LaTeX-verbatim-regexp "\\|\\([BL]?\\|Save\\)Verbatim"))
(add-to-list 'LaTeX-verbatim-environments-local "BVerbatim")
(add-to-list 'LaTeX-verbatim-environments-local "LVerbatim")
(add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim")
(add-to-list 'LaTeX-verbatim-environments-local "Verbatim")
(when (and (featurep 'font-latex)
(eq TeX-install-font-lock 'font-latex-setup))
(font-latex-set-syntactic-keywords)
(setq font-lock-set-defaults nil)
(font-lock-set-defaults))))
(我认为你也可以通过文件变量手动完成,但事实证明这不起作用,因为字体锁设置是在文件局部变量初始化之前构建的,我没有看到解决方法.)