ispell under emacs - særligt for LaTeX

Jeg har fået min Thinkpad tilbage fra reparation med ny blæser. Det betyder, at mit windows-eventyr er slut for denne gang, og at jeg er tilbage på Linux.

I dag har jeg brugt lidt tid på at få ispell under emacs til at fungere lidt bedre - især i forbindelse med LaTeX-dokumenter. ispell er LaTeX-aware til en hvis grad, men særligt tre ting har generet mig.

  1. Kommentarer kontrolleres for stavning
  2. Nogle LaTeX kommandoer som \label, \eqref understøttes ikke, så ispell kontrollerer også stavning her
  3. Nogle af mine egne kommandoer, som eks. \notes of \margnotes går heller ikke fri.

Ad. 1. Tilsyneladende nemt: vælg “customize” i tools>spell checking menuen og sæt “Ispell Check Comments” to off. Ellers kan du bruge følgende i din .emacs:
(ispell-check-comments nil)

Bemærk at hvis du bruger emacs til at skrive mere decideret source code, så kan det at lave en stavekontrol på netop kommentarerne være det du ønsker. Sådan er det sjældent i LaTeX dokumenter.

Ad. 2+3. ispell.el som er LISP-forlængelsen til ispell definerer variablen ispell-tex-skip-alists. Her får ispell at vide, at den skal springe visse ting over, når den er TeX-mode. En mulighed er at tilføje noget direkte i denne fil. Find den ved i emacs med

M-x locate-library
ispell.el

Alternativt kan du tilføje følgende eder i din .emacs:

(setq ispell-tex-skip-alists
(list
(append
(car ispell-tex-skip-alists) ;tell ispell to ignore:
'(("\\\\cite" ispell-tex-arg-end)
("\\\\nocite" ispell-tex-arg-end)
("\\\\includegraphics" ispell-tex-arg-end)
("\\\\bibliography" ispell-tex-arg-end)
("\\\\ref" ispell-tex-arg-end)
("\\\\notes" ispell-tex-arg-end) ;personal
("\\\\margnotes" ispell-tex-arg-end) ;personal
("\\\\label" ispell-tex-arg-end)))
(cadr ispell-tex-skip-alists)))

Du kan vælge en bestemt ordbog (dansk/english/american) med

M-x-ispell-change-dictionary
american

Ønsker du at tvinge brugen af en bestemt ordbog i en bestemt fil, så kan du tilføj følgende nederst i dit dokument:
%%% Local IspellDict: "american"
IspellDict er en ispell.el-variabel - der er et alternativ.

Se mere på ispell.el-siden.

2 kommentarer til “ispell under emacs - særligt for LaTeX”

  1. Ebbe siger:

    Lækkert med 1. Tak. Min LaTeX-dist gør dog ikke de irriterende ting i 2+3 ovenfor. Enten er den nyere end din, eller også har jeg selv gjort noget for at fikse det engang og har siden glemt det. :-)

  2. Jesper siger:

    Selv tak. Jeg har en ispell 3.1.20 10/10/95, patch 1, samt en ispell.el 3.6 (fra 2003), men ja det kan da være. Dog overrasker det mig lidt med 3. Jeg bruger eksempelvis \margnotes{et eller andet} til at smide en note i margin; de består ofte af obskure forkortelser og blanding af dansk og engelsk og jeg ønsker dem ikke stavekontrolleret, men det er jeg nød til at fortælle ispell. Hvis nu jeg havde lavet en \mycite-kommando, så ville jeg gerne have at den blev stavekontolleret - bare for at sige at det ikke er oplagt at ispell skulle ignorere alle indholdet i alle kommandoer.

    Og tak for kommentaren i øvrigt :-)

Skriv en kommentar