我使用 electric-pair 模式使括号自动闭合,这样当我输入(
或{
时[
,闭合括号也会自动输入到缓冲区中,光标会放在它们之间。但是,我似乎无法让它以相同的方式处理。也许这与绑定到 的$
事实有关,并且可能 electric-pair 不会以与 相同的方式处理。我试过按照这些思路操作,但我无法获得我想要的行为。TeX-insert-dollar
$
$
(
答案1
最后它比我想象的要简单。
(electric-pair-mode)
(add-hook 'LaTeX-mode-hook
'(lambda ()
(define-key LaTeX-mode-map (kbd "$") 'self-insert-command)))
这只是删除了TeX-insert-dollar
绑定$
并以某种方式(electric-pair-mode)
接管并意识到这$
是该上下文中的括号。
答案2
为了在 LaTeX 模式下插入内容,我在 .emacs 中使用以下代码:
(defun brf-TeX-Inserting (sta stb stc num)
" after entering stb insert stc and go back with the cursor by num positions.
With prefix nothings gets replaced. If the previous char was sta nothing will be
replaces as well."
(if (null current-prefix-arg)
(progn
(if (= (preceding-char) sta )
(insert stb)
(progn (insert stc) (backward-char num))))
(insert stb)))
(defun brf-TeX-dollarm () (interactive) (brf-TeX-Inserting ?\\ "$" "$$" 1))
(add-hook 'LaTeX-mode-hook
(function (lambda ()
(local-set-key (kbd "$") 'brf-TeX-dollarm))))
然后键入$
插入对$$
并将光标放在中间。
答案3
答案4
我正在使用这个。它的优点是您可以标记某些内容,然后输入 $ 也会将其括在美元符号中。但是它没有输入另一个 $ 应覆盖自动创建的结束 $ 的功能。
(defun D-active-mark ()
(and transient-mark-mode mark-active))
(defun LaTeX-insert-dollar(arg)
(interactive "P")
(if (D-active-mark)
(progn
(if (< (point) (mark))
(exchange-point-and-mark))
(insert "$")
(save-excursion
(goto-char (mark))
(insert "$")))
(insert "$")
(save-excursion
(if arg (forward-sexp (prefix-numeric-value arg)))
(insert "$"))))
(add-hook 'LaTeX-mode-hook
'(lambda ()
(define-key LaTeX-mode-map "$" 'LaTeX-insert-dollar) ))