
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)