Есть ли в AUCTEX/emacs сочетание клавиш, которое генерирует эти экранированные скобки:

Есть ли в AUCTEX/emacs сочетание клавиш, которое генерирует эти экранированные скобки:

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

Связанный контент