auctex,挂接到包装特定环境

auctex,挂接到包装特定环境

Emacs我使用和进行了很多编辑auctex,其中一些涉及将手稿的某些部分包裹在特定环境中。使用transient-mark-mode和非常容易C-c C-e

但我想Emacs对文本以及包装环境进行一些清理。

据我所知,LaTeX-add-environments主要用于空环境,界面会询问信息。

有人知道是否也可以添加处理挂钩,或者我是否需要采取不同的路线?

答案1

回答我自己的问题

(add-hook 'LaTeX-after-insert-env-hooks 'LaTeX-after-insert-hint  nil t)

我已经定义了LaTeX-after-insert-hint,只需记住给出了钩子env(环境名称,应该测试它是否是钩子应该作用于的环境),start(插入之前的位置\begin)和end(插入之前的位置\end

编辑:在本例中,我正在编辑一本书,作者有时会在练习中写提示。我希望它们具有一致的外观,因此我将环境包裹起来hint。提示通常以 开头Hint:,我希望环境能够提供这一点,因此我想要一个钩子,hint在我hint使用 包裹它之后,它可以清理环境的内容C-c C-e。这很管用

;; remember start is just before inserted \begin
(defun LaTeX-after-insert-hint (env start end)
  "Do some cleanup of the hint env"
  (when (string-equal env "hint")
    (save-excursion
      (goto-char start)
      (forward-line 1)
      ;; only clean if there is a match
      (when (looking-at "[ \t\n]*Hint\: *")
    (delete-region (match-beginning 0) (match-end 0))
    )
      (LaTeX-fill-environment 'left)
     )
   )
  )
  (add-hook 'LaTeX-after-insert-env-hooks 'LaTeX-after-insert-hint  nil t)

(LaTeX-fill-environment 'left)不是必需的,它只是一个很好的额外功能。

相关内容