## Sunday, September 26, 2010

### Cyrillic letters in LaTeX

Currently, I am writing a manual for a Russian Monte Carlo particle transport code SHIELD-HIT. LaTeX is just perfect for this purpose due to its vast amount of capabilities while still, say, "forcing" the user to be well structured and use a clean layout and formatting.

Unlike some years ago, most Linux distributions are now running in a UTF-8 environment, and most applications endorse UTF-8, which I think is a blessing for international minded spirits such as myself. LaTeX documents can be in UTF-8, without the use of awkward escape characters such as `\"u` for an ü.

But LaTeX and dvips still need to have the appropriate fonts installed. The aforementioned manual may contain text in Cyrillic letters, so my header is formatted this way:
``` \documentclass[a4paper,english,russian,10pt]{book} \usepackage[utf8]{inputenc} % make weird characters work \usepackage[T2A,OT1]{fontenc} % enable Cyrillic fonts \usepackage{amsmath} \usepackage{amssymb} ... ```

Most editors such as emacs or gedit will recognize the character encoding for you:
However, emacs is also sensitive to the `\usepackage[utf8]{inputenc}` line in the .tex file, presumably this is a feature coming along with the auctex package. If you specify something which is inconsistent with the character encoding of the file, you will have a terrible mess.

Compiling the .tex file, I was confronted with an error:
``` ... (/usr/share/texmf-texlive/tex/latex/base/omsenc.dfu))) (/usr/share/texmf-texlive/tex/latex/base/fontenc.sty ! Package fontenc Error: Encoding file `t2aenc.def' not found. (fontenc) You might have misspelt the name of the encoding. ... ```
Ok, so I looked into synaptic what file provides the t2aenc.def. But synaptic did not return any results. Then I searched for the "T2A" font. According to synaptic, this is provided by the "cm-super" package. But after installing the 60 MB package the error still persisted.

The trick was to install the texlive-lang-cyrillic package. Then the .tex file could be compiled. This is rather unintuitive, since there is no mentioning of the t2aenc.def file in the texlive-lang-cyrillic package.

Next step is to convert the .dvi file to a PDF file. If you do not have the cm-super package installed, you may end up with:
``` ~/Projects/shieldhit/trunk/doc/tex\$ dvipdf ShieldHIT_Manual.dvi dvips: Font tctt0800 not found, using cmr10 instead. dvips: Design size mismatch in font tctt0800 dvips: Checksum mismatch in font tctt0800 dvips: ! invalid char 246 from font tctt0800 ```

and a rather empty .pdf file. The cm-super-minimal package may be insufficient, In my case I had to install the full cm-super package.

Conclusion: UTF-8 is good for you, it makes life easier and more enjoyable. So use it whenever you can. :-)