¿Existe un acceso directo en AUCTEX/emacs que genere estos paréntesis de escape?

¿Existe un acceso directo en AUCTEX/emacs que genere estos paréntesis de escape?

¿Existe un acceso directo en AUCTEX/emacs que genere estos paréntesis de escape?

abreviatura de "entorno matemático en línea"

\(  <cursor here>  \)

Eso coloca el cursor en medio de este "miniambiente".

para poder escribir Matemáticas en medio de una oración.

He probado las hojas de trucos y las macros pero no consigo que deje el cursor en el medio.

Se aceptan alternativas/consejos (soy un estudiante universitario que intenta aprender AUCTEX en mi tiempo libre)

Respuesta1

AUCTeX le ofrece un par de opciones listas para usar, sin necesidad de definir una función por su cuenta. Ambos se describen en el manual y no son mutuamente excluyentes, puedes activar ambos y usarlos al mismo tiempo.

Primero: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 "\\(" "\\)"))))

Con este código, puedes simplemente presionar $y \(...\)entrar.LaTeX-mode

Segundo:LaTeX-electric-left-right-brace

(setq LaTeX-electric-left-right-brace t)

Con esto, puedes escribir \(y el cierre \)se agregará después del punto.

Respuesta2

Para todas mis necesidades de emparejamiento utilizo el gran paquete.paréntesis inteligente. Para incluir los pares que requieres, haz lo siguiente:

Primero, instálelo (usando Melpa o lo que sea) smartparenthesisy luego cárguelo. Lo uso usepackagepara eso, pero la forma sugerida por el autor del paquete es simplemente ejecutar esto:

(require 'smartparens-config)

El código importante viene ahora:

(sp-with-modes '(tex-mode plain-tex-mode latex-mode)
  (sp-local-pair "\\\(" "\\\)"))

Tenga en cuenta que primero escapa la inicial \, por lo tanto:, \\y luego el paréntesis de apertura, por lo tanto:, \(lo que da como resultado la secuencia completa \\\(:. Lo mismo ocurre con los de cierre.

Puedes agregar todos tus amados LaTeXpares. Esta es mi propia configuración completa (copiada parcialmente de la de otra persona):

(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))
  )

Respuesta3

Usando los excelentes ejemplos de @Phil Hirschhorn, hice una función que inserta "paréntesis de escape" cuando presionas Alt-m

agrégalo a tu.emacs

M-mActivar

(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)

información relacionada