First you will need a way to write non-ASCII characters. You can either use macros, or teach TeX about the ISO character sets. I prefer the later, it has the advantage that the usual the standard emacs word movement and case change commands will work.
To be able to display non-ASCII characters you will need an appropriate font and a version of GNU Emacs capable of displaying 8-bit characters. I believe all emacs versions except plain Emacs 18 are capable of this. For GNU Emacs 19, see section `European Display' in The GNU Emacs Editor. Other relevant packages are:
(require 'remap) (defvar all-dead-keys "~'`^" "Dead keys used by remap") (remap-define-map "Dead Key" (apply 'append (mapcar 'remap-dead-map all-dead-keys))) (remap-define-map "TeX Dead Key" (remap-map "Dead Key" (remap-add "Ascii" "~TeX"))) (setq remap-setup-alist '(("7-bit" "Raw" "L1" "US" "Ctrl" "~TeX") ("8-bit" "Raw" "L1" "L1" "Ctrl" "Raw") ("Dead/7" "Dead Key" "L1" "US" "Ctrl" "~TeX") ("Dead/8" "Dead Key" "L1" "L1" "Ctrl" "Raw") ("TeX" "TeX Dead Key" "L1" "US" "Ctrl" "Raw")))You can now enable TeX dead keys with
M-x remap-setup-choose RET TeX RET
A compromise is to use use an European character set when editing the file, and convert to TeX macros when reading and writing the files.
AUC TeX supports style files for several languages. Each style file may modify some AUC TeX to better support the language, and will run a language specific hook that will allow you to for example change ispell dictionary, or run code to change the keyboard remapping. The following will for example choose a Danish dictionary for documents including the `dk.sty' file. This requires parsing to be enabled, see section Automatic Parsing of TeX files..
(add-hook 'TeX-language-dk-hook (function (lambda () (ispell-change-dictionary "danish"))))
The following style files are recognized.
TeX-language-dk-hook
.
TeX-language-nl-hook
.
TeX-language-de-hook
.
Gives `"' word syntax and makes the " key insert a literal
`"'.
TeX-language-pl-hook
.
Gives `"' word syntax and makes the " key insert a literal
`"'. Pressing " twice will insert `"<' or `">'
depending on context.