Emacs для начинающих



         

Гримасы русификации - часть 2


Но ведь такой подход не только идеологически неверен, но и весьма наивен. Ну хорошо, cp1251 совпадает с T2A в русской части (и то кроме буквы - не зря же для ее печати понадобилось переопределять поведение клавиатуры), но ведь это уже не будет соответствовать истине для символов других славянских алфавитов. А что, если мы пожелаем сделать украинскую или сербскую локализацию? Неужели напрямую писать текст в T2A? Текст, который нельзя будет прочесть никаким , ибо внутренние кодировки TeX вообще-то предназначаются только для откомпилированных файлов .dvi. Никто и никогда не допускал мысли о возможности использовать их напрямую для набора текстов. Главная причина этого достаточно очевидна: в таких кодировках активно используются те ячейки кодовой таблицы, которые вне системы TeX зарезервированы за управляющими кодами и, соответственно, не должны применяться в текстовых файлах.

Увы, похоже, что данное соображение нисколько не смущает автора TeXmacs. Так, в файле $TEXMACS_PATH/progs/keyboard/accents.scm (он отвечает за некоторые общие параметры клавиатуры) встречаем несколько строчек приблизительно следующего вида:

("- - -" " ")

Приведенная строка задает клавиатурную комбинацию для печати символа . А вот то, что мы обозначили как пробел в кавычках - это на самом деле символ с десятичным кодом 22, который соответствует этому самому длинному тире в латинской кодировке для TeX T1 (равно как и в кириллической T2A). И дело даже не в том, что вносить изменения в подобный файл будет сложно без шестнадцатеричного редактора. Но интересно знать, как бы автор выкручивался из положения, если бы ему понадобился символ с кодом 12 (прогон страницы)? Или с кодом 13 (перенос строки)? А ведь на привязку символов к данным кодам в TeX нет никакого запрета.

Еще одна любопытная вещь обнаружится, если мы попробуем преобразовать подготовленный в TeXmacs документ в формат LaTeX. TeXmacs предусматривает такую возможность, хотя автор честно признается, что качество конвертера пока оставляет желать лучшего. Открываем полученный файл в текстовом редакторе, и: первым делом обнаруживаем, что строчная буква всюду превратилась в заглавную. Заглавное же вообще стало двойным латинским S. Речь, естественно, идет о тексте в cp1251, в противном случае проблема возникла бы с твердым знаком. В чем тут дело? Оказывается, мы опять расплачиваемся за неуклюжую попытку учесть различия между кодировками, на сей раз латинскими: TeX'овской T1 и общепринятой iso-8859-1. Лечится такое поведение путем истребления из файла $TEXMACS_PATH/progs/convert/tmtex.scm следующих двух строчек:

((equal? c #\337) (tmtex-text-sub "SS" l)) ((equal? c #\377) (tmtex-text-sub "Я" l))

Но не забавно ли, что, ради того, чтобы сделать документ понятным для LaTeX, приходится перегонять его из внутренней TeX'овской же кодировки в общепринятую? И, как видим, проблема вовсе не ограничивается русификацией, ибо различия между двумя западноевропейскими кодировками - приблизительно такого же порядка, как между cp1251 и T2A.




Содержание  Назад  Вперед