AUCTEX/emacs 中是否有生成以下转义括号的快捷方式:
“内联数学环境”的简写
\( <cursor here> \)
这样就将光标置于这个“微环境”的中间
这样我就可以在句子中间写数学。
我已尝试过备忘单和宏,但仍无法让光标停留在中间。
欢迎提供替代方案/提示(我是一名本科生,正在业余时间学习 AUCTEX)
答案1
AUCTeX 为您提供了几个现成的选项,无需自行定义函数。它们都在手册中进行了描述,并且并不相互排斥,您可以同时激活和使用它们
第一的:TeX-electric-math
(add-hook 'plain-TeX-mode-hook
(lambda () (set (make-local-variable 'TeX-electric-math)
(cons "$" "$"))))
(add-hook 'LaTeX-mode-hook
(lambda () (set (make-local-variable 'TeX-electric-math)
(cons "\\(" "\\)"))))
有了此代码,您只需按下即可$进入\(...\)
LaTeX-mode
第二:LaTeX-electric-left-right-brace
(setq LaTeX-electric-left-right-brace t)
有了它,您就可以打字,并且在点之后会添加\(
结束语。\)
答案2
对于我的所有配对需求,我都使用很棒的套餐智能括号。要包含您需要的货币对,请执行以下操作:
首先,安装(使用 Melpa 或其他工具)smartparenthesis
然后加载它。我使用usepackage
它,但是包的作者建议的方法是简单地运行这个:
(require 'smartparens-config)
重要的代码来了:
(sp-with-modes '(tex-mode plain-tex-mode latex-mode)
(sp-local-pair "\\\(" "\\\)"))
请注意,您首先要转义初始的\
,因此:\\
,然后是左括号 ,因此:\(
,从而得到完整的序列:\\\(
。 结尾的 也是如此。
你可以添加所有你喜欢的LaTeX
配对。这是我自己的完整配置(部分内容是从别人的配置中复制而来的):
(sp-with-modes '(tex-mode
plain-tex-mode
latex-mode
)
;; math modes, yay. The :actions are provided automatically if
; these pairs do not have global definition.
(sp-local-pair "$" "$")
(sp-local-pair "\[" "\]")
(sp-local-pair "\{" "\}")
(sp-local-pair "‘" "’")
(sp-local-pair "“" "”")
(sp-local-pair "\\begin" "\\end")
;;; tex-mode latex-mode
(sp-local-tag "i" "\"<" "\">")
(sp-local-pair "\\[" nil :unless '(sp-point-before-word-p))
(sp-local-pair "$" nil :unless '(sp-point-before-word-p))
)
答案3
使用@Phil Hirschhorn 的优秀示例,我创建了一个函数,当您按下 Alt-m 时会插入“转义括号”
将其添加到您的
.emacs
M-m
激活
(defun escape-parentheses ()
"we insert escape parenthesis for math-mode
and move the cursor to the center"
(interactive)
(progn
(insert "\\( \\)")
(backward-char 4)
)
)
(global-set-key "\em" 'escape-parentheses)