AUCTeX: Mathematikmodi umschalten

AUCTeX: Mathematikmodi umschalten

Ich verwende es $ ... $für Inline-Mathematik und \[ ... \]für Anzeige-Mathematik. Ich möchte zwischen beiden umschalten können, indem ich den Text auswähle und aufrufe TeX-insert-dollar.

Allerdings erlaubt diese Funktion, so wie ich es verstehe, nur die Zyklen

$ ... $ <-> $$ ... $$ <-> ...

Und

\( ... \) <-> \[ ... \] <-> ...

(Dieses Verhalten wird durch das Setzen der Variable gesteuert TeX-electric-math).

Gibt es eine Möglichkeit, dieses Verhalten an meine Bedürfnisse anzupassen (es wäre auch nützlich, es auf andere Gleichungsumgebungen wie equation, align, gather, usw. auszuweiten)?

Antwort1

Ich habe es endlich geschafft, dies so zu tun

(defun begin-end-regexps (env)
  (list env
        (replace-regexp-in-string "{\\([a-zA-Z]+\\)\\*}" "{\\1\\\\*}" (concat "\\\\begin{" env "}\\([^\0]*?\\)\\\\end{" env "}"))
        (concat "\\\\begin{" env "}\\1\\\\end{" env "}")))

(defun loop-math-modes (step)
  (if (texmathp)
      (let
          ((math-modes (list '("$" "\\$\\([^$\0]+?\\)\\$" "$\\1$")
                             '("\\[" "\\\\\\[\\([^\0]*?\\)\\\\\\]" "\\\\[\\1\\\\]")
                             (begin-end-regexps "equation")
                             (begin-end-regexps "equation*")
                             (begin-end-regexps "align")
                             (begin-end-regexps "align*")
                             (begin-end-regexps "gather")
                             (begin-end-regexps "gather*")))
           commands)

        (dolist (element math-modes) ;; get list of cars
          (setq commands
                (append commands (list (car element)))))
        (let
            ((math-mode-index (cl-position (car texmathp-why) commands :test 'equal))
             (current-pos (point)))
            (goto-char (cdr texmathp-why)) ;; for some reason save-excursion is not working
            (re-search-forward (nth 1 (nth math-mode-index math-modes)))
            (replace-match (nth 2 (nth (mod (+ math-mode-index step) (length math-modes)) math-modes)))
            (goto-char current-pos)))
    (message "Not inside math environment")))

(sehenHier)

verwandte Informationen