*** Ответ на сообщение из эхи JAW_ECHO (=JAW Echo =========).
Добрый день, Paul:
Вторн. Апрель 29 1997 01:46, Paul Argentoff писал(а,о,и) к Andrey Janishewskiy:
AJ>> Hа самом-то деле нужны:
AJ>> 1) шрифты
AJ>> 2) словарь переносов
AJ>> 3) переопределение русских букв в либо "активные" символы, либо в
AJ>> буквы. 4) Переопределение в стилях шрифтов по умолчанию.
AJ>> И все -- телемаркет ;)
PA> 1,2 есть. Пpо 3 и 4 pасскажи поподpобнее.
Попытаюсь:
Типичный руссификатор для Latex2e может выглядеть следующим образом:
Формат генерируется в 2 прохода (это объясняется некоторыми особенностями
latex2e)
1-й проход:
Создается файл hyphen.cfg следующего содержания:
=== Cut ===
catcode`@=11
language=0
lefthyphenmin=2
righthyphenmin=3
input hyphen.tex
input rhyphen.tex
endinput
=== Cut ===
(Этим мы подключаем русские переносы)
и генерируется latex.fmt, коммандой:
tex386 -i -mt16000 -c866_t2 latex.ltx
файл 866_t2, это tcp файл (только для emtex'а)
определяющий правила перекодировки внешних файлов во внутренний формат.
2-й проход:
Hа втором проходе подклучаем файл: rlatex.fmt из latex.fmt
при помощи комманды:
tex386 -i -mt16000 &latex rlatex.ltx
Файл rlatex.ltx содержит следующие строки:
=== Cut ===
input russian.cod
everyjob{%
typeout{%
This is Russified LaTeX2e, based on LaTeX2e fmtversion%
}%
}
dump
=== Cut ===
После этого при работе пользуемся форматом rlatex и стилевым файлом mycyr.sty
приведенным ниже...
=== Cut ===
%% Данный файл содержит стиль для подключения LH шрифтов
%% к пакету LaTex2e.
%% Стиль создан Андреем Янишевским
%% 2:5030/209@fidonet.org
%% jaw@ivt.rgpu.spb.ru
%%------------------------------------------------------------------------
%% 1) Переопределены шрифты по умолчанию для текстового и математического
%% режимов.
%% Семейства: 1) Roman rmfamily
%% 2) Sans Serif ssfamily
%% 3) Typewriter ttfamily
%% 4)*Funny Roman frfamily
%% 5)*Fibonacci fibfamily
%% 6) Dunhill dhfamily
deffileversion{v2.0b}
deffiledate{96/07/05}
typeout{Russian style for JAW Modern Fonts
by Andrey Janishewskiy.spacefileversionspacefiledate}
if@compatibility %% В режиме совместимости подгружаем
typeout{LaTeX 2.09 Russification.} %% русские коды.
input russian.cod %% (Иначе не работаю русские комманды)
fi
renewcommand{rmdefault}{jmr} %% Переопределяем семейства
renewcommand{sfdefault}{jmss} %% по умолчанию
renewcommand{ttdefault}{jmtt}
%%
%% Определяем новые имена семейства
%%
newcommand{frdefault}{jmfr} %% "Забавный"
newcommand{dhdefault}{jmdh} %% Dunhill Roman
newcommand{fibdefault}{jmfib} %% "Фиббоначи"
newcommand{indefault}{jmin} %% "Дюймовочка"
newcommand{midefault}{jmmi} %% "Math Italic"
%%
%% Определяем новые имена shape
%%
newcommand{uidefault}{ui} %% Прямой курсив, определен для jmR
%%
%% Определяем новые имена series
%%
newcommand{bdefault}{b} %% узкий полужирный (jmR)
newcommand{dcdefault}{dc} %% узкий полужирный (jmSS)
newcommand{qudefault}{qu} %% широкий (jmSS)
newcommand{videfault}{vi} %% пропорциональный (TT)
newcommand{exdefault}{ex} %% Text Extended(Rm)
%%
%% Другие переопределения для текстового режима
%%
DeclareFontSubstitution{OT1}{jmr}{m}{n} %% Переопределяем шрифт подмены
DeclareErrorFont{OT1}{jmr}{m}{n}{10} %% Переопределяем Error Font
%%
%% Определяем собственно family, shape, series
%%
%% Семейства
%% Определяем символы (кавычки, номер ,ёЁ)
DeclareTextSymbol{No}{OT1}{242}
DeclareTextSymbol{<} {OT1}{243}
DeclareTextSymbol{>} {OT1}{244}
letflqq< letлк< letномерNo letfrqq> letпк> %% Синонимы символов
catcode`ё=13defё{"е}catcode`Ё=13defЁ{"Е} %% Буквы Ё,ё
=== Cut ===
При этом файлик russian.cod определяет русские символы -- буквами.
(catcode=11)
Также этот файл определяет uc и lc code.
(В случае, если кодировка соответствует стандарту T2 uc и lc коды
переопределять не требуется, также, как не требуется переопределять catcode,
если вы не будете использовать русские комманды.
По умолчанию у всех символов соответствующих русским буквам catcode=12)
defreserved@a#1{count@ =`#1advancecount@ "7100
mathcode`#1count@}
reserved@a А reserved@a а
reserved@a Б reserved@a б
reserved@a В reserved@a в
reserved@a Г reserved@a г
reserved@a Д reserved@a д
reserved@a Е reserved@a е
reserved@a Ж reserved@a ж
reserved@a З reserved@a з
reserved@a И reserved@a и
reserved@a Й reserved@a й
reserved@a К reserved@a к
reserved@a Л reserved@a л
reserved@a М reserved@a м
reserved@a H reserved@a н
reserved@a О reserved@a о
reserved@a П reserved@a п
reserved@a Р reserved@a р
reserved@a С reserved@a с
reserved@a Т reserved@a т
reserved@a У reserved@a у
reserved@a Ф reserved@a ф
reserved@a Х reserved@a х
reserved@a Ц reserved@a ц
reserved@a Ч reserved@a ч
reserved@a Ш reserved@a ш
reserved@a Щ reserved@a щ
reserved@a Ъ reserved@a ъ
reserved@a Ы reserved@a ы
reserved@a Ь reserved@a ь
reserved@a Э reserved@a э
reserved@a Ю reserved@a ю
reserved@a Я reserved@a я
catcode`@=12
endinput
=== Cut ===
Кроме того, для руссификации требуются .fd файлы
Hапример следующий: (Ot1jmr.fd)
Делаются они по аналогии с ot1cm???.fd
Если мы имеем дело с TeX'ми не поддерживающими tcp и внешняя кодировка
не совпадает с внутренней, то русским буквам нужно присвоить catcode=active
и определить их через chardef.
В этом случае невозможно использовать их в коммандах, но остальное будет
работать. Вот пример:
catcode'0321 = active % ya
chardef ^^d1 = '0357
Естественно на второй стадии генерации формата можно подключить и 90% файла
mycyr.sty, а еще лучше посмотреть внимательно на документацию к 2e и сделать
подключение шрифтов так, как там рекомендуется.
Что касается latex2.09, plain'а и прочих, то опять-таки подключаете переносы,
через hyphen.tex, но input'е еще и russian.cod из него-же.
И переопределяете шрифты:
fonttenrm=cmr10 % roman text
fontpreloaded=cmr9
fontpreloaded=cmr8
fontsevenrm=cmr7
fontpreloaded=cmr6
fontfiverm=cmr5
Впрочем стоит посмотреть внимательнее на latex2.09 и plain ;)
====-------------------------------------------------------------------====
С нетерпением жду ответа, Андрей [Fido : 2:5030/209, 2:5030/509 ]
[E-Mail: AJAN@ivt.rgpu.spb.ru ]