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)
不是必需的,它只是一个很好的额外功能。