Gibt es eine Verknüpfung in AUCTEX/Emacs, die diese Escape-Klammern erzeugt:

Gibt es eine Verknüpfung in AUCTEX/Emacs, die diese Escape-Klammern erzeugt:

Gibt es eine Verknüpfung in AUCTEX/Emacs, die diese Escape-Klammern erzeugt:

Abkürzung für „Inline-Mathematikumgebung“

\(  <cursor here>  \)

Das platziert den Cursor in der Mitte dieses "Mini-Umgebungsdings"

damit ich „Mathe“ mitten in einen Satz schreiben kann.

Ich habe es mit den Spickzettel und Makros versucht, aber ich schaffe es nicht, den Cursor in der Mitte zu lassen.

Alternativen/Tipps sind willkommen (ich bin Student und versuche in meiner Freizeit, AUCTEX zu lernen)

Antwort1

AUCTeX bietet Ihnen einige sofort einsatzbereite Optionen, ohne dass Sie eine Funktion selbst definieren müssen. Beide sind im Handbuch beschrieben und schließen sich nicht gegenseitig aus. Sie können beide aktivieren und gleichzeitig verwenden.

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

Mit diesem Code können Sie einfach drücken $und \(...\)einsteigenLaTeX-mode

Zweite:LaTeX-electric-left-right-brace

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

Damit können Sie etwas eintippen \(und der Schluss \)wird nach dem Punkt hinzugefügt.

Antwort2

Für alle meine Pairing-Anforderungen verwende ich das großartige Paketintelligente KlammerUm die gewünschten Paare einzuschließen, gehen Sie wie folgt vor:

Installieren Sie es zunächst (mit Melpa oder einem anderen Programm) smartparenthesisund laden Sie es dann. Ich verwende usepackagedafür, aber der Autor des Pakets schlägt vor, einfach Folgendes auszuführen:

(require 'smartparens-config)

Jetzt kommt der wichtige Code:

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

Beachten Sie, dass Sie zuerst die anfängliche Klammer escapen \, also: \\, und dann die öffnende Klammer, also: \(, wodurch sich die vollständige Sequenz ergibt: \\\(. Das Gleiche gilt für die schließenden Klammern.

Sie können alle Ihre Lieblingspaare hinzufügen LaTeX. Dies ist meine eigene vollständige Konfiguration (teilweise von jemand anderem kopiert):

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

Antwort3

Anhand der hervorragenden Beispiele von @Phil Hirschhorn habe ich eine Funktion erstellt, die "Escape-Klammern" einfügt, wenn Sie Alt-m drücken

füge es zu deinem.emacs

M-maktivieren

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

verwandte Informationen