[comp.text.tex] Russian TeX?

walter@hpsadle.HP.COM (Walter Coole) (10/04/90)

Is there a TeX package for typing Russian?  I have a Cyrillic font,
but I haven't figured out quite how to translate typed characters into
Cyrillic characters.  Failing a full TeX setup, does anyone have a
suggestion about how to type Russian on an ASCII keyboard?

nspit@ruunsa.fys.ruu.nl (Werenfried Spit) (10/05/90)

In <13590020@hpsadle.HP.COM> walter@hpsadle.HP.COM (Walter Coole) writes:

>Is there a TeX package for typing Russian?  I have a Cyrillic font,
>but I haven't figured out quite how to translate typed characters into
>Cyrillic characters.  Failing a full TeX setup, does anyone have a
>suggestion about how to type Russian on an ASCII keyboard?



I have a style file defining a transliteration: 
you type in the transliteration and get either
russian characters or the transliteration.
It is designed for JL Braams' babel.sty but 
can be used separately.
The .sty-file is following; the comments
are mostly in Dutch, but I hope it's clear
how to use it.


Werenfried Spit                            
   R.J. v.d. Graafflaboratorium            +31-(0)30-53-2330                   
   Postbus 80.000                          
   3508 TA  Utrecht                        nspit@fys.ruu.nl      
   The Netherlands                         spit@hutruu51.bitnet    


following: 2 style files and an example
---------------------cut here-------------------------------------
% This style is an adaptation of Dmitri Vulis' rmacro.sty (WS)
%% This code was written by Dimitri Vulis and placed into public domain.
%% There is no copyright associated with this code. Use it as you wish.
%% changed 30-05-89  Werenfried Spit
\typeout{Document Style `cyrillic' <1.0> <30 05 90>.}


\gdef\cdefRussian{
%
%    definities als bij Tsjechische transcriptie
%    
\chardef\Z='021    \chardef\z='031   % Zje
\chardef\Cz='121   \chardef\cz='161  % Tsje
\chardef\Ch='110   \chardef\ch='150  % Cha
\chardef\S='130    \chardef\s='170   % Sja
\chardef\Scz='127  \chardef\scz='167 % Sjtsja
\chardef\E='003    \chardef\e='013   % `E
\chardef\Ju='020   \chardef\ju='030  % Joe
\chardef\Ja='027   \chardef\ja='037  % Ja
% \def\Jo{\"E}       \def\jo{\"e}      % Jo
\def\mz{|}         \def\Mz{<}        % mjachkyj zjnak
\def\tz{"}         \def\Tz{>}        % tvordyj zjnak

\def\cem{\ifdim \fontdimen\@ne\font >\z@ \pcyr \else \pcit \fi}
\def\cyr{\protect\pcyr}
\def\cit{\protect\pcit}
}

\gdef\cdefTranscript{
\def\Z{\v{Z}}             \def\z{\v{z}}            % Zje
\def\Cz{\v{C}}            \def\cz{\v{c}}           % Tsje
\def\Ch{\t{C}{h}}         \def\ch{\t{c}{h}}        % Cha
\def\S{\v{S}}             \def\s{\v{s}}            % Sja
\def\Scz{{\v{S}}{\v{c}}}  \def\scz{{\v{s}}{\v{c}}} % Sjtsj
\def\E{\`{E}}             \def\e{\`{e}}            % `E
\def\Ju{\t{J}{u}}         \def\ju{\t{\j}{u}}       % Joe
\def\Ja{\t{J}{a}}         \def\ja{\t{\j}{a}}       % Ja
% \def\Jo{\"E}              \def\jo{\"e}             % Jo
\def\mz{$^\prime$}        \def\Mz{$^\prime$}        % machkyj zjnak
\def\tz{$^{\prime\prime}$}\def\Tz{$^{\prime\prime}$}% tvordyj zjnak

\def\cem{\em}
\def\cyr{\rm}           % redefine fontchanging commands
\def\cit{\it}
}


\def\Jo{\"E}             % Jo  
\def\jo{\"e}             %  is the same in transcript and cyrillic      



%
% fontdefinities, (gejat van bsf.sty)
%
\expandafter\ifx\csname cyr\endcsname\relax		%Once only, please
\typeout{Document Option `cyr': 20 May 90}
\def\cyr{\protect\pcyr}
\newfam\cyrfam
\@addfontinfo\@vpt{\@prtct\cyrv@}
  \def\cyrv@{\def\pcyr{\@getfont\pcyr\cyrfam\@vpt{cmcyr5}}}
\@addfontinfo\@vipt{\@prtct\cyrvi@}
  \def\cyrvi@{\def\pcyr{\@getfont\pcyr\cyrfam\@vipt{cmcyr6}}}
\@addfontinfo\@viipt{\@prtct\cyrvii@}
  \def\cyrvii@{\def\pcyr{\@getfont\pcyr\cyrfam\@viipt{cmcyr7}}}
\@addfontinfo\@viiipt{\@prtct\cyrviii@}
  \def\cyrviii@{\def\pcyr{\@getfont\pcyr\cyrfam\@viiipt{cmcyr8}}}
\@addfontinfo\@ixpt{\@prtct\cyrix@}
  \def\cyrix@{\def\pcyr{\@getfont\pcyr\cyrfam\@ixpt{cmcyr9}}}
\@addfontinfo\@xpt{\@prtct\cyrx@}
  \def\cyrx@{\def\pcyr{\@getfont\pcyr\cyrfam\@xpt{cmcyr10}}}
\@addfontinfo\@xipt{\@prtct\cyrxi@}
  \def\cyrxi@{\def\pcyr{\@getfont\pcyr\cyrfam\@xipt{cmcyr10\@halfmag}}}
\@addfontinfo\@xiipt{\@prtct\cyrxii@}
  \def\cyrxii@{\def\pcyr{\@getfont\pcyr\cyrfam\@xiipt{cmcyr12}}}
\@addfontinfo\@xivpt{\@prtct\cyrxiv@}
  \def\cyrxiv@{\def\pcyr{\@getfont\pcyr\cyrfam\@xivpt{cmcyr10\@magscale2}}}
\@addfontinfo\@xviipt{\@prtct\cyrxvii@}
  \def\cyrxvii@{\def\pcyr{\@getfont\pcyr\cyrfam\@xviipt{cmcyr17}}}
\@addfontinfo\@xxpt{\@prtct\cyrxx@}
  \def\cyrxx@{\def\pcyr{\@getfont\pcyr\cyrfam\@xxpt{cmcyr10\@magscale4}}}
\@addfontinfo\@xxvpt{\@prtct\cyrxxv@}
  \def\cyrxxv@{\def\pcyr{\@getfont\pcyr\cyrfam\@xxvpt{cmcyr10\@magscale5}}}
\fi

\expandafter\ifx\csname cit\endcsname\relax		%Once only, please
\typeout{Document Option `cit': 20 May 90}
\def\cit{\protect\pcit}
\newfam\citfam
\@addfontinfo\@vpt{\@prtct\citv@}
  \def\citv@{\def\pcit{\@getfont\pcit\citfam\@vpt{cmcti5}}}
\@addfontinfo\@vipt{\@prtct\citvi@}
  \def\citvi@{\def\pcit{\@getfont\pcit\citfam\@vipt{cmcti6}}}
\@addfontinfo\@viipt{\@prtct\citvii@}
  \def\citvii@{\def\pcit{\@getfont\pcit\citfam\@viipt{cmcti7}}}
\@addfontinfo\@viiipt{\@prtct\citviii@}
  \def\citviii@{\def\pcit{\@getfont\pcit\citfam\@viiipt{cmcti8}}}
\@addfontinfo\@ixpt{\@prtct\citix@}
  \def\citix@{\def\pcit{\@getfont\pcit\citfam\@ixpt{cmcti9}}}
\@addfontinfo\@xpt{\@prtct\citx@}
  \def\citx@{\def\pcit{\@getfont\pcit\citfam\@xpt{cmcti10}}}
\@addfontinfo\@xipt{\@prtct\citxi@}
  \def\citxi@{\def\pcit{\@getfont\pcit\citfam\@xipt{cmcti10\@halfmag}}}
\@addfontinfo\@xiipt{\@prtct\citxii@}
  \def\citxii@{\def\pcit{\@getfont\pcit\citfam\@xiipt{cmcti12}}}
\@addfontinfo\@xivpt{\@prtct\citxiv@}
  \def\citxiv@{\def\pcit{\@getfont\pcit\citfam\@xivpt{cmcti10\@magscale2}}}
\@addfontinfo\@xviipt{\@prtct\citxvii@}
  \def\citxvii@{\def\pcit{\@getfont\pcit\citfam\@xviipt{cmcti17}}}
\@addfontinfo\@xxpt{\@prtct\citxx@}
  \def\citxx@{\def\pcit{\@getfont\pcit\citfam\@xxpt{cmcti10\@magscale4}}}
\@addfontinfo\@xxvpt{\@prtct\citxxv@}
  \def\citxxv@{\def\pcit{\@getfont\pcit\citfam\@xxvpt{cmcti10\@magscale5}}}
\fi









% possible default-definitons
%
%  \gdef\Z{$\backslash$Z}       \gdef\z{$\backslash$z}
%  \gdef\Cz{$\backslash$Cz}     \gdef\cz{$\backslash$cz}
%  \gdef\Ch{$\backslash$Ch}     \gdef\ch{$\backslash$ch}
%  \gdef\S{$\backslash$S}       \gdef\s{$\backslash$s}
%  \gdef\Scz{$\backslash$Scz}   \gdef\scz{$\backslash$scz}
%  \gdef\E{$\backslash$E}       \gdef\e{$\backslash$e}
%  \gdef\Ju{$\backslash$Ju}     \gdef\ju{$\backslash$ju}
%  \gdef\Ja{$\backslash$Ja}     \gdef\ja{$\backslash$ja}
%  \gdef\Jo{$\backslash$Jo}     \gdef\jo{$\backslash$jo}
%  \gdef\mz{$\backslash$mz}     \gdef\tz{$\backslash$tz}
%  \gdef\Mz{$\backslash$Mz}     \gdef\Tz{$\backslash$Tz}

% alternative transliterations (Vulis' original ones)
%
% \def\cdefTranslitX{
% \def\Zh{\t{Z}{h}}           % \def\zh{\t{z}{h}}           % \def\Ui{\u{I}}
% \def\ui{\u{\i}}             % \def\Kh{\t{K}{h}}           % \def\kh{\t{k}{h}}
% \def\Ts{\t{T}{s}}           % \def\ts{\t{t}{s}}           % \def\Ch{\t{C}{h}}
% \def\ch{\t{c}{h}}           % \def\Sh{\t{S}{h}}           % \def\sh{\t{s}{h}}
% \def\Shch{\t{S}{h}\t{c}{h}} % \def\shch{\t{s}{h}\t{c}{h}} % \def\cprime{$^\prime$}
% \def\cPrime{$\underline{^\prime}$}
% \def\cdprime{$^{\prime\prime}$}
% \def\cDprime{$\underline{^{\prime\prime}}$}
% \def\Ee{\`{E}}              % \def\ee{\`{e}}              % \def\Yu{\t{Y}{u}}
% \def\yu{\t{y}{u}}           % \def\Ya{\t{Y}{a}}           % \def\ya{\t{y}{a}}
% \def\Yo{\t{Y}{o}}           % \def\yo{\t{y}{o}}           % \def\Izhitsa{\'{Y}}
% \def\izhitsa{\'{y}}         % \def\Fita{\t{T}{h}}         % \def\fita{\t{t}{h}}
% \def\Yat{\'{E}}             % \def\yat{\'{e}}
% }

% \def\cdefTranslitY{
% \def\Zh{\v{Z}}              % \def\zh{\v{z}}
% \def\Ui{J}                  % \def\ui{j}
% \def\Kh{Ch}                 % \def\kh{ch}
% \def\Ts{C}                  % \def\ts{c}
% \def\Ch{\v{C}}              % \def\ch{\v{c}}
% \def\Sh{\v{S}}              % \def\sh{\v{s}}
% \def\Shch{\v{S}\v{c}}       % \def\shch{\v{s}\v{c}}
% \def\cprime{\kern0pt'\kern0pt\relax}
% \def\cPrime{\kern0pt'\kern0pt\relax}
% \def\cdprime{\kern0pt'\kern0pt'\kern0pt\relax}
% \def\cDprime{\kern0pt'\kern0pt'\kern0pt\relax}
% \def\Ee{\`{E}}              % \def\ee{\`{e}}
% \def\Yu{\t{J}{u}}           % \def\yu{\t{\j}{u}}
% \def\Ya{\t{J}{a}}           % \def\ya{\t{\j}{a}}
% \def\Yo{\t{J}{o}}           % \def\yo{\t{j}{o}}
% \def\Izhitsa{\'{Y}}         % \def\izhitsa{\'{y}}
% \def\Fita{\t{T}{h}}         % \def\fita{\t{t}{h}}
% \def\Yat{\'{E}}             % \def\yat{\'{e}}
%}

% alternatieve fontdefinitie (Vulis' originelen)
%
%\def\cdefRussian{
% \chardef\Zh='021                  % \chardef\zh='031 
% \chardef\Ui='022 %uwash           % \chardef\ui='032 %uwash
% \def\Ui{{\accent"24I}} %Old AMS  % %\def\ui{{\accent"24i}} %Old AMS
% \chardef\Kh='110                  % \chardef\kh='150
% \chardef\Ts='103                  % \chardef\ts='143
% \chardef\Ch='121                  % \chardef\ch='161
% \chardef\Sh='130                  % \chardef\sh='170
% \chardef\Shch='127                % \chardef\shch='167
% \chardef\cDprime='137             % \chardef\cdprime='177
% \chardef\cPrime='136              % \chardef\cprime='176
% \chardef\Ee='003                  % \chardef\ee='013
% \chardef\Yu='020                  % \chardef\yu='030
% \chardef\Ya='027                  % \chardef\ya='037
% \chardef\Yo='023 %start uwash only% \chardef\yo='033
% \chardef\Izhitsa='024             % \chardef\izhitsa='034
% \chardef\Fita='025                % \chardef\fita='035
% \chardef\Yat='043                 % \chardef\yat='053 %end uwash only
%}

---------------------cut here-------------------------------------
% This is Russian.sty adapted to babel.sty (version 1)
% with features from various other styles loads cyrillic.sty
%   Werenfried Spit   may 1990
\def\fileversion{2.0}
\def\filedate{30 may 1990}
{\def\format{plain}
\ifx\fmtname\format
    \expandafter\ifx\csname @ifundefined\endcsname\relax
      \gdef\next{latexhax.sty}
      \aftergroup\input\aftergroup\next
    \fi
\fi}

\ifcat/@ \makeatletter\let\resetat\makeatother
  \else\let\resetat\relax\fi

\@ifundefined{captionsrussian}{}{\endinput}
\typeout{Style option `Russian' version \fileversion\space<\filedate>}
\@ifundefined{selectlanguage}{\input babel.sty\relax}{\relax}
\input cyrillic.sty



\def\daterussian{%
\gdef\today{\number\day~\ifcase\month\or
  {\ja}nvar\ja\or fevral\ja\or marta\or aprel\ja\or ma\ja\or i{\ju}n\ja\or i{\ju}l\ja\or
  avgusta\or sent{\ja}br\ja\or okt{\ja}br\ja\or no{\ja}br\ja\or dekabr\ja\fi
  \space \number\year~goda}}


\def\captionsrussian{%  
\gdef\refname{Ssylki}%
\gdef\abstractname{Referat}%
\gdef\bibname{Literatura}%
\gdef\chaptername{Glava }%
\gdef\appendixname{Prilo{\z}enie }%
\gdef\contentsname{Oglavlenie}%
\gdef\listfigurename{Pere{\cz}en{\mz} risunkov}%
\gdef\listtablename{Pere{\cz}en{\mz} tablic}%
\gdef\indexname{Ukazatel{\mz}}%
\gdef\figurename{Risunok}% ili Ris.
\gdef\tablename{Tablica}% ili Tabl.
\gdef\partname{{\Cz}ast{\mz}}%
\gdef\enclname{Vlo{\z}.}%
\gdef\ccnamec{Kop.}%
\gdef\headpagename{Stranica}%
\gdef\headtoname{K}}                 %???
 
% More stuff that should have been in these macros but is not:
%  
% Abbreviations     {\cyr Sokra{\shch}eni{\ya} }
% Acknowledgements  {\cyr Blagodarnosti }
% Algorithm         {\cyr Algoritm }
% Answers           {\cyr Otvety }
% Chart             {\cyr Diagramma }
% Conclusion        {\cyr Zakl{\yu}{\ch}enie }
% Conjecture        {\cyr Predpolo{\zh}enie }
% Corollary         {\cyr Sledstvie }
% Dedication        {\cyr Posv{\ya}{\shch}enie }
% Definition        {\cyr Opredelenie }
% Drawing           {\cyr {\Ch}erte{\zh}, {\Ch}ert. }
% Errata            {\cyr Popravki }
% Example           {\cyr Primer }
% Exercise          {\cyr Upra{\zh}nenie }
% Exhibit           {\cyr Eksponat }
% Flowchart         {\cyr Blok-s{\kh}ema }
% Footnote          {\cyr Snoska }
% From:             {\cyr Ot: }
% Glossary          {\cyr Slovar{\cprime} }
% Hypothesis        {\cyr Gipoteza }
% Introduction      {\cyr Vvedenie }
% Legend            {\cyr Legenda }
% Lemma             {\cyr Lemma }
% List of Drawings  {\cyr Pere{\ch}en{\cprime} {\ch}erte{\zh}e{\ui} }
% List of Maps      {\cyr Pere{\ch}en{\cprime} kart }
% List of Symbols   {\cyr Spisok obozna{\ch}eni{\ui} }
% Map               {\cyr Karta }
% Name Index        {\cyr Imenno{\ui} ukazatel{\cprime} }
% Notes             {\cyr Prime{\ch}ani{\ya} }
% Plate             {\cyr Vkle{\ui}ka }
% Preface           {\cyr Predislovie }
% Problem           {\cyr Zada{\ch}a }
% Program Listing   {\cyr Raspe{\ch}atka }
% Proof             {\cyr Dokazatel{\cprime}stvo }
% Proposition       {\cyr Predlo{\zh}enie }
% Quotation         {\cyr {\Ts}itata }
% Remark            {\cyr Zame{\ch}anie }
% Sheet             {\cyr List }
% Solution          {\cyr Re{\sh}enie }
% Subject Index     {\cyr Predmetny{\ui} uk{\ya}zatel{\cprime} }
% Summary           {\cyr Rez{\yu}me }
% Supplement        {\cyr Dopolnenie }
% Theorem           {\cyr Teorema }
% Volume            {\cyr Tom }

\begingroup \catcode`\"\active
\gdef\extrasrussian{%
    \global\let\dospecials\russian@dospecials
    \global\let\@sanitize\russian@sanitize
    \catcode`\"\active
    \gdef"{\protect\russian@active@dq}
}
\endgroup
\def\noextrasrussian{%
    \catcode`\"12
    \global\let\dospecials\original@dospecials
    \global\let\@sanitize\original@sanitize
}
\begingroup
\def\do{\noexpand\do\noexpand}%
\xdef\russian@dospecials{\dospecials\do\"}%
\expandafter\ifx\csname @sanitize\endcsname\relax \else
  \def\@makeother{\noexpand\@makeother\noexpand}%
  \xdef\russian@sanitize{\@sanitize\@makeother\"}%
\fi
\endgroup
\global\let\original@dospecials\dospecials
\global\let\original@sanitize\@sanitize
\gdef\allowhyphens{\penalty\@M \hskip\z@skip}
\gdef\set@low@box#1{\setbox\tw@\hbox{,}\setbox\z@\hbox{#1}
    \dimen\z@\ht\z@ \advance\dimen\z@ -\ht\tw@
    \setbox\z@\hbox{\lower\dimen\z@ \box\z@}\ht\z@\ht\tw@ \dp\z@\dp\tw@}
\gdef\dlqq{\protect\@dlqq}
\gdef\@dlqq{{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
  \let\@SF\empty \fi \leavevmode
   \set@low@box{''}\box\z@\kern-.04em\allowhyphens\@SF\relax}}
\gdef\drqq{\protect\@drqq}
\gdef\@drqq{{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
  \let\@SF\empty \fi ''\@SF\relax}}
\begingroup \catcode`\"12
  \gdef\dq{"}
\gdef\frqq{\protect\@frqq}
\gdef\@frqq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
     \let\@SF\empty \fi
     \ifmmode \gg \else \leavevmode
     \raise .2ex \hbox{$\scriptscriptstyle \gg $}\fi \@SF\relax}
\gdef\flq{\protect\@flq}
\gdef\@flq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
     \let\@SF\empty \fi
     \ifmmode < \else \leavevmode
     \raise .2ex \hbox{$\scriptscriptstyle < $}\fi \@SF\relax}
\gdef\frq{\protect\@frq}
\gdef\@frq{\ifhmode \edef\@SF{\spacefactor\the\spacefactor}\else
     \let\@SF\empty \fi
     \ifmmode > \else \leavevmode
     \raise .2ex \hbox{$\scriptscriptstyle > $}\fi \@SF\relax}
\endgroup
\def\@umlaut#1{\allowhyphens\discretionary{-}{#1}{\accent127 #1}\allowhyphens}
\gdef\russian@active@dq#1{%
     \if\string#1`\dlqq{}%
\else\if\string#1'\drqq{}%
\else\if\string#1-\allowhyphens-\allowhyphens%
\else\if\string#1|\discretionary{-}{}{\kern.03em}%
\else\if\string#1i\@umlaut{\i}%
\else\if\string#1>\frq{}%
\else\if\string#1<\flq{}%
\else \@umlaut{#1}\fi\fi\fi\fi\fi\fi\fi}
\def\-{\allowhyphens\discretionary{-}{}{}\allowhyphens}
\@ifundefined{l@russian}{\global\advance\n@lang by 1
                       \chardef\l@russian=\n@lang}{}
\@ifundefined{originalTeX}{\let\originalTeX\relax}{}
\selectlanguage{russian}
\resetat


---------------------cut here-------------------------------------
\documentstyle[a4,cyrillic]{article}
\load{\normalsize}{\cyr}
\load{\normalsize}{\cit}


\begin{document}
\cdefRussian
Het Russische alfabet: \\
\cyr Russkij alfavit: \\
abvgde\jo\z zijklmnoprstuf\ch c\cz\s\scz\tz y\mz \e\ju\ja \\ 
ABVGDE\Jo\Z ZIJKLMNOPRSTUF\Ch C\Cz\S\Scz\Tz Y\Mz \E\Ju\Ja \\ 
abvgde\jo\z zijklmnoprstuf\ch c\cz\s\scz"y|\e\ju\ja \\ 
ABVGDE\Jo\Z ZIJKLMNOPRSTUF\Ch C\Cz\S\Scz>Y<\E\Ju\Ja \\ 
\cem Russkij alfavit: \\
abvgde\jo\z zijklmnoprstuf\ch c\cz\s\scz\tz y\mz \e\ju\ja \\ 
ABVGDE\Jo\Z ZIJKLMNOPRSTUF\Ch C\Cz\S\Scz\Tz Y\Mz \E\Ju\Ja \\ 
abvgde\jo\z zijklmnoprstuf\ch c\cz\s\scz"y|\e\ju\ja \\ 
ABVGDE\Jo\Z ZIJKLMNOPRSTUF\Ch C\Cz\S\Scz>Y<\E\Ju\Ja \\ 

\cdefTranscript
\rm Het Russische alfabet: \\
\cyr Russkij alfavit: \\
abvgde\jo\z zijklmnoprstuf\ch c\cz\s\scz\tz y\mz \e\ju\ja \\ 
ABVGDE\Jo\Z ZIJKLMNOPRSTUF\Ch C\Cz\S\Scz\Tz Y\Mz \E\Ju\Ja \\ 

\cem Russkij alfavit: \\
abvgde\jo\z zijklmnoprstuf\ch c\cz\s\scz\tz y\mz \e\ju\ja \\ 
ABVGDE\Jo\Z ZIJKLMNOPRSTUF\Ch C\Cz\S\Scz\Tz Y\Mz \E\Ju\Ja \\ 

\end{document}



---------------------cut here-------------------------------------