
Есть ли в 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)