ispell under emacs - særligt for LaTeX
fredag, 24. oktober 2008Jeg 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.
- Kommentarer kontrolleres for stavning
- Nogle LaTeX kommandoer som \label, \eqref understøttes ikke, så ispell kontrollerer også stavning her
- 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.