rtfm wanted (rus TeX howto)
Ключевые слова: rus, TeX, howto, (найти похожие документы)
From: Andrey Janishewskiy <Andrey_Janishewskiy@f509.n5030.z2.fidonet.org>
Subject: rtfm wanted
Date: Mon, 05 May 97 14:22:14 +0400
X-Comment-To: Paul Argentoff
Organization: RGPU Station, St.Petersburg, [Wt: 00:00-24:00]
Path: xtalk.msk.su!f510.n5020.z2!f79.n5020.z2!f239.n5030!f509.n5030!not-for-mail
Newsgroups: RU.TEX
Distribution: fido7
Message-ID: <862854093@f509.n5030.z2.FidoNet.ftn>
References: <862278749@p3.f7.n5021.z2.ftn>
X-FTN-AREA: RU.TEX
X-FTN-MSGID: 2:5030/509@FidoNet 336e1bcd
X-FTN-REPLY: 2:5021/7.3 3365545d
X-FTN-TID: FastEcho 1.45a 12378965
X-FTN-Tearline: GoldED 3.00.Alpha4+
X-FTN-Origin: RGPU Station, St.Petersburg, [Wt: 00:00-24:00] (2:5030/509)
X-FTN-SEEN-BY: 5005/5020 5015/4 5020/79 225 510 776 5021/11 5030/175 239 247 251 389
X-FTN-SEEN-BY: 5030/397 461 478 509 520 542 5045/6 5047/17 5100/8
X-FTN-PATH: 5030/509 239 5020/79
X-FTN-PATH: 5020/510
Lines: 394
Xref: xtalk.msk.su RU.TEX:349
*** Ответ на сообщение из эхи 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
\def\fileversion{v2.0b}
\def\filedate{96/07/05}
\typeout{Russian style for JAW Modern Fonts
by Andrey Janishewskiy.\space\fileversion\space\filedate}
\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
%%
%% Семейства
\DeclareRobustCommand\frfamily %% frfamily
{\not@math@alphabet\frfamily\mathfr
\fontfamily\frdefault\selectfont}
\DeclareRobustCommand\mifamily %% math italic
{\not@math@alphabet\mifamily\mathmi
\fontfamily\midefault\selectfont}
\DeclareRobustCommand\fibfamily %% fibonachi
{\not@math@alphabet\fibfamily\mathfib
\fontfamily\fibdefault\selectfont}
\DeclareRobustCommand\dhfamily %% Dunhill
{\not@math@alphabet\dhfamily\mathdh
\fontfamily\dhdefault\selectfont}
%% Shape
\DeclareRobustCommand\uishape %% unslanted italic
{\not@math@alphabet\uishape\mathui
\fontshape\uidefault\selectfont}
%% Series
\DeclareRobustCommand\bseries %% bold condenced
{\not@math@alphabet\bseries\mathb
\fontseries\bdefault\selectfont}
\DeclareRobustCommand\dcseries %% demibold condenced
{\not@math@alphabet\bfseries\mathdc
\fontseries\dcdefault\selectfont}
\DeclareRobustCommand\quseries %% quseries
{\not@math@alphabet\quseries\mathqu
\fontseries\qudefault\selectfont}
\DeclareRobustCommand\viseries %% viseries
{\not@math@alphabet\viseries\mathvi
\fontseries\videfault\selectfont}
\DeclareRobustCommand\exseries %% Extended
{\not@math@alphabet\exseries\mathex
\fontseries\exdefault\selectfont}
%%
%% Установки для математики
%%
\DeclareSymbolFont{operators} {OT1}{jmr} {m}{n}
\SetSymbolFont{operators} {bold}{OT1}{jmr} {bx}{n}
\DeclareMathAlphabet {\mathbf}{OT1}{jmr}{bx}{n}
\DeclareMathAlphabet {\mathsf}{OT1}{jmss}{m}{n}
\DeclareMathAlphabet {\mathit}{OT1}{jmr}{m}{it}
\DeclareMathAlphabet {\mathtt}{OT1}{jmtt}{m}{n}
\SetMathAlphabet\mathsf{bold}{OT1}{jmss}{bx}{n}
\SetMathAlphabet\mathit{bold}{OT1}{jmr}{bx}{it}
%% Определяем символы (кавычки, номер ,ёЁ)
\DeclareTextSymbol{\No}{OT1}{242}
\DeclareTextSymbol{\<} {OT1}{243}
\DeclareTextSymbol{\>} {OT1}{244}
\let\flqq\< \let\лк\< \let\номер\No \let\frqq\> \let\пк\> %% Синонимы символов
\catcode`ё=13\defё{\"е}\catcode`Ё=13\defЁ{\"Е} %% Буквы Ё,ё
=== Cut ===
При этом файлик russian.cod определяет русские символы -- буквами.
(catcode=11)
Также этот файл определяет uc и lc code.
(В случае, если кодировка соответствует стандарту T2 uc и lc коды
переопределять не требуется, также, как не требуется переопределять catcode,
если вы не будете использовать русские комманды.
По умолчанию у всех символов соответствующих русским буквам catcode=12)
=== Cut ===
\catcode`\@=11
\catcode`\А=11 \catcode`\Р=11 \catcode`\а=11 \catcode`\р=11
\catcode`\Б=11 \catcode`\С=11 \catcode`\б=11 \catcode`\с=11
\catcode`\В=11 \catcode`\Т=11 \catcode`\в=11 \catcode`\т=11
\catcode`\Г=11 \catcode`\У=11 \catcode`\г=11 \catcode`\у=11
\catcode`\Д=11 \catcode`\Ф=11 \catcode`\д=11 \catcode`\ф=11
\catcode`\Е=11 \catcode`\Х=11 \catcode`\е=11 \catcode`\х=11
\catcode`\Ж=11 \catcode`\Ц=11 \catcode`\ж=11 \catcode`\ц=11
\catcode`\З=11 \catcode`\Ч=11 \catcode`\з=11 \catcode`\ч=11
\catcode`\И=11 \catcode`\Ш=11 \catcode`\и=11 \catcode`\ш=11
\catcode`\Й=11 \catcode`\Щ=11 \catcode`\й=11 \catcode`\щ=11
\catcode`\К=11 \catcode`\Ъ=11 \catcode`\к=11 \catcode`\ъ=11
\catcode`\Л=11 \catcode`\Ы=11 \catcode`\л=11 \catcode`\ы=11
\catcode`\М=11 \catcode`\Ь=11 \catcode`\м=11 \catcode`\ь=11
\catcode`\H=11 \catcode`\Э=11 \catcode`\н=11 \catcode`\э=11
\catcode`\О=11 \catcode`\Ю=11 \catcode`\о=11 \catcode`\ю=11
\catcode`\П=11 \catcode`\Я=11 \catcode`\п=11 \catcode`\я=11
\uccode`А=`А \uccode`Р=`Р \uccode`а=`А \uccode`р=`Р
\uccode`Б=`Б \uccode`С=`С \uccode`б=`Б \uccode`с=`С
\uccode`В=`В \uccode`Т=`Т \uccode`в=`В \uccode`т=`Т
\uccode`Г=`Г \uccode`У=`У \uccode`г=`Г \uccode`у=`У
\uccode`Д=`Д \uccode`Ф=`Ф \uccode`д=`Д \uccode`ф=`Ф
\uccode`Е=`Е \uccode`Х=`Х \uccode`е=`Е \uccode`х=`Х
\uccode`Ж=`Ж \uccode`Ц=`Ц \uccode`ж=`Ж \uccode`ц=`Ц
\uccode`З=`З \uccode`Ч=`Ч \uccode`з=`З \uccode`ч=`Ч
\uccode`И=`И \uccode`Ш=`Ш \uccode`и=`И \uccode`ш=`Ш
\uccode`Й=`Й \uccode`Щ=`Щ \uccode`й=`Й \uccode`щ=`Щ
\uccode`К=`К \uccode`Ъ=`Ъ \uccode`к=`К \uccode`ъ=`Ъ
\uccode`Л=`Л \uccode`Ы=`Ы \uccode`л=`Л \uccode`ы=`Ы
\uccode`М=`М \uccode`Ь=`Ь \uccode`м=`М \uccode`ь=`Ь
\uccode`H=`H \uccode`Э=`Э \uccode`н=`H \uccode`э=`Э
\uccode`О=`О \uccode`Ю=`Ю \uccode`о=`О \uccode`ю=`Ю
\uccode`П=`П \uccode`Я=`Я \uccode`п=`П \uccode`я=`Я
\lccode`А=`а \lccode`Р=`р \lccode`а=`а \lccode`р=`р
\lccode`Б=`б \lccode`С=`с \lccode`б=`б \lccode`с=`с
\lccode`В=`в \lccode`Т=`т \lccode`в=`в \lccode`т=`т
\lccode`Г=`г \lccode`У=`у \lccode`г=`г \lccode`у=`у
\lccode`Д=`д \lccode`Ф=`ф \lccode`д=`д \lccode`ф=`ф
\lccode`Е=`е \lccode`Х=`х \lccode`е=`е \lccode`х=`х
\lccode`Ж=`ж \lccode`Ц=`ц \lccode`ж=`ж \lccode`ц=`ц
\lccode`З=`з \lccode`Ч=`ч \lccode`з=`з \lccode`ч=`ч
\lccode`И=`и \lccode`Ш=`ш \lccode`и=`и \lccode`ш=`ш
\lccode`Й=`й \lccode`Щ=`щ \lccode`й=`й \lccode`щ=`щ
\lccode`К=`к \lccode`Ъ=`ъ \lccode`к=`к \lccode`ъ=`ъ
\lccode`Л=`л \lccode`Ы=`ы \lccode`л=`л \lccode`ы=`ы
\lccode`М=`м \lccode`Ь=`ь \lccode`м=`м \lccode`ь=`ь
\lccode`H=`н \lccode`Э=`э \lccode`н=`н \lccode`э=`э
\lccode`О=`о \lccode`Ю=`ю \lccode`о=`о \lccode`ю=`ю
\lccode`П=`п \lccode`Я=`я \lccode`п=`п \lccode`я=`я
\sfcode`А=999 \sfcode`Р=999 \sfcode`а=1000 \sfcode`р=1000
\sfcode`Б=999 \sfcode`С=999 \sfcode`б=1000 \sfcode`с=1000
\sfcode`В=999 \sfcode`Т=999 \sfcode`в=1000 \sfcode`т=1000
\sfcode`Г=999 \sfcode`У=999 \sfcode`г=1000 \sfcode`у=1000
\sfcode`Д=999 \sfcode`Ф=999 \sfcode`д=1000 \sfcode`ф=1000
\sfcode`Е=999 \sfcode`Х=999 \sfcode`е=1000 \sfcode`х=1000
\sfcode`Ж=999 \sfcode`Ц=999 \sfcode`ж=1000 \sfcode`ц=1000
\sfcode`З=999 \sfcode`Ч=999 \sfcode`з=1000 \sfcode`ч=1000
\sfcode`И=999 \sfcode`Ш=999 \sfcode`и=1000 \sfcode`ш=1000
\sfcode`Й=999 \sfcode`Щ=999 \sfcode`й=1000 \sfcode`щ=1000
\sfcode`К=999 \sfcode`Ъ=999 \sfcode`к=1000 \sfcode`ъ=1000
\sfcode`Л=999 \sfcode`Ы=999 \sfcode`л=1000 \sfcode`ы=1000
\sfcode`М=999 \sfcode`Ь=999 \sfcode`м=1000 \sfcode`ь=1000
\sfcode`H=999 \sfcode`Э=999 \sfcode`н=1000 \sfcode`э=1000
\sfcode`О=999 \sfcode`Ю=999 \sfcode`о=1000 \sfcode`ю=1000
\sfcode`П=999 \sfcode`Я=999 \sfcode`п=1000 \sfcode`я=1000
\def\reserved@a#1{\count@ =`#1\advance\count@ "7100
\mathcode`#1\count@}
\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
=== Cut ===
%%%%%%%%%%%%%%%%%%% JAW LaTeX Font definitions %%%%%%%%%%%%%%%%%%%%
% Family: Roman
% =============
% Medium(m): Normal(n),Slanted(sl),Italic(it),smallcaps(sc),
% Unslanted Italic(ui)
% BoldExtended(bx):Normal,Slanted,Italic,UnslantedItalic*,SmallCaps*
% Bold(b): Normal
%
\ProvidesFile{OT1jmr.fd}
[1996/06/26 v1.0a JAW LaTeX font definitions]
\DeclareFontFamily{OT1}{jmr}{}
\DeclareFontShape {OT1}{jmr}{m}{n}
{<5><6><7><8><9><10><12> sgen * jmr
<10.95> jmr10
<14.4> jmr12
<17.28><20.74><24.88> jmr17}{}
\DeclareFontShape{OT1}{jmr}{m}{sl}
{<5><6><7> jmsl8
<8><9> sgen * jmsl
<10><10.95> jmsl10
<12><14.4><17.28><20.74><24.88> jmsl12}{}
\DeclareFontShape{OT1}{jmr}{m}{it}
{<5><6><7> jmti7
<8><9><10> sgen * jmti
<10.95> jmti10
<12><14.4><17.28><20.74><24.88> jmti12}{}
\DeclareFontShape{OT1}{jmr}{m}{sc}
{<10> jmcsc10}{}
\DeclareFontShape{OT1}{jmr}{bx}{sc}
{<-> ssub * jmr/m/sc}{}
\DeclareFontShape{OT1}{jmr}{m}{ui}
{<10> jmu10}{}
\DeclareFontShape{OT1}{jmr}{b}{n}
{<10> jmb10}{}
\DeclareFontShape{OT1}{jmr}{bx}{n}
{<5><6><7><8><9> sgen * jmbx
<10><10.95> jmbx10
<12><14.4><17.28><20.74><24.88> jmbx12}{}
\DeclareFontShape{OT1}{jmr}{bx}{sl}
{<10> jmbxsl10}{}
\DeclareFontShape{OT1}{jmr}{bx}{it}
{<10> jmbxti10}{}
\DeclareFontShape{OT1}{jmr}{bx}{ui}
{<-> ssub * jmr/m/ui}{}
\DeclareFontShape{OT1}{jmr}{m}{ex}
{<5><6><7> jmtex8
<8><9><10> sgen * jmtex
<10.95><12><14.4><17.28><20.74><24.88> jmtex10}{}
\endinput
%----------------------------------------------------------------------------
=== Cut ===
Если мы имеем дело с TeX'ми не поддерживающими tcp и внешняя кодировка
не совпадает с внутренней, то русским буквам нужно присвоить catcode=\active
и определить их через \chardef.
В этом случае невозможно использовать их в коммандах, но остальное будет
работать. Вот пример:
\catcode'0321 = \active % ya
\chardef ^^d1 = '0357
Естественно на второй стадии генерации формата можно подключить и 90% файла
mycyr.sty, а еще лучше посмотреть внимательно на документацию к 2e и сделать
подключение шрифтов так, как там рекомендуется.
Что касается latex2.09, plain'а и прочих, то опять-таки подключаете переносы,
через hyphen.tex, но input'е еще и russian.cod из него-же.
И переопределяете шрифты:
\font\tenrm=cmr10 % roman text
\font\preloaded=cmr9
\font\preloaded=cmr8
\font\sevenrm=cmr7
\font\preloaded=cmr6
\font\fiverm=cmr5
Впрочем стоит посмотреть внимательнее на latex2.09 и plain ;)
====-------------------------------------------------------------------====
С нетерпением жду ответа, Андрей [Fido : 2:5030/209, 2:5030/509 ]
[E-Mail: AJAN@ivt.rgpu.spb.ru ]