如果您使用的是 xemacs,则可以使用 mmmmode 来突出显示语法。我将 ESS 与 statweave 一起使用,因此第一人称回答为什么不使用 ESS 来突出显示并使用 statweave 来完成工作。然而,我不使用 SAS,但在同一个文件中使用了 stata 和 R,它们都使用自己的语法突出显示。(需要'mmm-mode)(需要'mmm-vars)(setq mmm-global-mode'也许)(setq mmm-submode-decoration-level 1)
(mmm-add-group 'latex-stats'((r-tag :submode r-mode :face mmm-code-submode-face :delimiter-mode nil :front "begin{Rcode}" :back "end{Rcode} " :back-offset (backward-char -1) :insert ((?R R-tag nil @ "\begin{Rcode}" @ "\n" _ "\n" @ "\end{Rcode}" @) ) ) (sta-tag :submode STA-mode :face mmm-code-submode-face :delimiter-mode nil :front "begin{Statacode}" :back "end{Statacode}" :back-offset (backward-char - 1) :insert ((?S STATA-tag nil @ "\begin{Statacode}" @ "\n" _ "\n" @ "\end{Statacode}" @)) )))
(添加到列表'mmm-mode-ext-classes-alist'(无“-swv.tex”乳胶统计))
您只需要更改为 SAS 模式(我想如果这就是所谓的),我在我的 latex.el 文件(在 init.el 中加载了一个 lambda)中有以下(local-set-key [(控制 f1)]
'(lambda () (interactive) (if (string-match "\.tex" buffer-file-name) (progn (let (file-name file-name1 file-name-wihoutswv) (setq file-name (buffer- file-name)) (setq file-name1 (file-name-nondirectory file-name)) (setq file-name-wihoutswv (replace-regexp-in-string "-swv" "" file-name1)) (setq file -name-wihoutswv (replace-regexp-in-string "\.tex" "" file-name-wihoutswv)) (if (string-match "-swv\.tex" buffer-file-name) (find-file- other-window (concat file-name-wihoutswv ".tex")) (find-file-other-window (concat file-name-wihoutswv "-swv.tex")) ) ) (消息“你在 Latex-模式,这既不是 swv 也不是 TeX 文件。无法打开相应的 tex 或 sweave 文件“))))
和
(global-set-key [f1]
'(lambda () (interactive) (save-buffer) (if (string-match "-swv\.tex" buffer-file-name) (progn (interactive) (latex-mode ) ;;(font-lock-fontify-buffer) (balance-windows) (mylatex-delete-indent) (save-buffer) (save-window-excursion (run-current-statweave-file)) ; (mylatex-clean ) ) (if (string-match "\.tex" buffer-file-name) (progn (interactive) (latex-mode) ;(font-lock-fontify-buffer) (balance-windows) (do-pdf) ; (mylatex-clean))(消息“这既不是 TeX 也不是 SWV 文件,除了将缓冲区保存到文件之外,我不知道该怎么做。所以我做了”))))
)
) (save-window-excursion (setq status (shell-command cmd1-str output-buffer))) ;;(消息状态) ;; (let (status) ((shell-command cmd1-str output-buffer)))))))
它看起来很糟糕,而且我不是 lisp 专家,所以我确信它有很多效率低下的地方,但它确实有效。