2010-08-12 13 views
5

Utilizzo Emacs in combinazione con AucTeX (con Ubuntu 10.04, se ciò è importante).Emacs/Auctex: attivazione/disattivazione automatica di LaTeX-Math-mode

Qualcuno sa se c'è un modo per attivare automaticamente LaTeX-math-mode (un modo minore di AucTeX) se il punto è in qualsiasi ambiente di matematica (cioè in un $...$, un $$...$$, begin{equation}...\end{equation}, e così via) ?

Suppongo che vi sia una risposta relativamente semplice, poiché l'evidenziazione della sintassi utilizza lo stesso criterio per colorare materiale matematico, ma non ho trovato nulla.

risposta

4

Se la risposta di andre-r non ti soddisfa, ecco un codice che imposta ` per l'autoinserimento in modalità testo e funge da prefisso in modalità matematica in modalità matematica. LaTeX-math-mode deve essere spento.

(defun LaTeX-maybe-math() 
    "If in math mode, act as a prefix key for `LaTeX-math-keymap'. 
Otherwise act as `self-insert-command'." 
    (interactive) 
    (if (texmathp) 
     (let* ((events (let ((overriding-local-map LaTeX-math-keymap)) 
         (read-key-sequence "math: "))) 
      (binding (lookup-key LaTeX-math-keymap events))) 
     (call-interactively binding)) 
    (call-interactively 'self-insert-command))) 
(define-key LaTeX-mode-map "`" 'LaTeX-maybe-math) 

i seguenti miglioramenti sono lasciati come esercizi:

  • Fai un modo minore.

  • Rende più robusto all'input inatteso (ho solo testato le operazioni di base).

  • Mostra un messaggio di errore migliore se l'utente preme una sequenza di tasti non associata.

  • Mostra guida se l'utente preme C-h o f1.

2

LaTeX-math-mode è "una modalità secondaria speciale per l'immissione di testo con molti simboli matematici." (Per coloro che non sanno come, si preme ad esempio `A e si ottiene \ perall.) Quindi immagino che non faccia male lasciarlo acceso, anche se non stai entrando in matematica.

La pagina info propone quindi di:

(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) 

IMHO l'unico aspetto negativo sarebbe che si deve premere il prefisso due volte: `` per ottenere `, almeno che funziona con il prefisso standard` personalizzato in LaTeX-math-abbrev-prefix .