home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1999 April / VPR9904A.BIN / Wintex / Ams / jamstex.lzh / AMSFONTS / CYRACC.DEF < prev    next >
Text File  |  1993-02-25  |  10KB  |  274 lines

  1. %% @texfile{
  2. %%     filename="cyracc.def",
  3. %%     version="2.1",
  4. %%     date="31-MAY-1991",
  5. %%     filetype="TeX: option",
  6. %%     copyright="Copyright (C) American Mathematical Society,
  7. %%            all rights reserved.  Copying of this file is
  8. %%            authorized only if either:
  9. %%            (1) you make absolutely no changes to your copy
  10. %%                including name; OR
  11. %%            (2) if you do make changes, you first rename it to some
  12. %%                other name.",
  13. %%     author="American Mathematical Society",
  14. %%     address="American Mathematical Society,
  15. %%            Technical Support Department,
  16. %%            P. O. Box 6248,
  17. %%            Providence, RI 02940,
  18. %%            USA",
  19. %%     telephone="401-455-4080 or (in the USA) 800-321-4AMS",
  20. %%     email="Internet: Tech-Support@Math.AMS.org",
  21. %%     codetable="ISO/ASCII",
  22. %%     checksumtype="line count",
  23. %%     checksum="273",
  24. %%     keywords="amsfonts, tex, cyrillic",
  25. %%     abstract="This file contains definitions of accents and 
  26. %%         special characters required for use of cyrillic fonts 
  27. %%         arranged according to the AMS scheme.
  28. %%      The \font specification(s) should be made elsewhere, and should include
  29. %%              \newfam\cyrfam
  30. %%              \font\...cyr=wncyr...   (e.g. \font\tencyr=wncyr10 )
  31. %%      An appropriate definition for cyrillic, usable in math and text, is
  32. %%              \def\cyr{\fam\cyrfam\...cyr\cyracc}
  33. %%      More extensive instructions for using cyrillic fonts are included in
  34. %%      the AMSFonts 2.0 User's Guide."
  35. %%     }
  36. %
  37. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  38.  
  39. \chardef\tempcat=\the\catcode`\@
  40. \catcode`\@=11
  41.  
  42. %  The first set of definitions is what will be in effect outside of cyrillic,
  43. %  i.e., in transliterated text.
  44.  
  45. %  Definition of \cydot is not ideal; real dot should be in an accent font.
  46. \def\cydot{{\mathsurround=0pt$\cdot$}}
  47.  
  48. %  \ubar is the definition of \b from PLAIN; it may not work in math mode.
  49. \def\ubar#1{\oalign{#1\crcr\hidewidth
  50.     \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
  51.  
  52. %  Soft and hard signs are represented in transliteration by prime and
  53. %  double prime respectively.
  54. \def\cprime{\/{\mathsurround=0pt$'$}}
  55. \def\Cprime{{\mathsurround=0pt$'$}}
  56. \def\cdprime{\/{\mathsurround=0pt$''$}}
  57. \def\Cdprime{{\mathsurround=0pt$\ubar{\hbox{$''$}}$}}
  58.  
  59. \def\dbar{dj}           % make real barred d when accent font available
  60. \def\Dbar{Dj}           %  ""
  61.  
  62. %  It would be nice to make these control sequences unnecessary; that will
  63. %  probably require d to become active.
  64. \def\dz{dz}
  65. \def\Dz{Dz}
  66. \def\dzh{dzh\cydot }
  67. \def\Dzh{Dzh\cydot }
  68.  
  69.  
  70. %  Stress marks are sometimes used in cyrillic text, mainly for pedagogic
  71. %  reasons.  These definitions support stress marks within {\cyr ...};
  72. %  in transliteration, they are suppressed.  Stress is indicated in
  73. %  input by \! preceding a letter on which a stress mark is to appear;
  74. %  an acute accent will appear in the output.  Since \! is also a plain
  75. %  command, for negative thin space in math mode, test for math mode and
  76. %  include the plain definition as appropriate.
  77.  
  78. \def\@gobble#1{}
  79. \def\@testgrave{\`}
  80. \def\@stressit{\futurelet\chartest\@stresschar }
  81.  
  82. \def\@stresschar#1{%
  83.   \ifx #1y\def\result{\futurelet\chartest\@yligature}%
  84.   \else \ifx #1Y\def\result{\futurelet\chartest\@Yligature}%
  85.   \else \ifx\chartest\@testgrave \def\result{\accent"26 }%
  86.   \else \def\result{\accent"26 #1}%
  87.   \fi \fi \fi
  88.   \result }
  89.  
  90. \def\@yligature{%
  91.   \ifx a\chartest \def\result{\accent"26 \char"1F \@gobble}%
  92.   \else \ifx u\chartest \def\result{\accent"26 \char"18 \@gobble}%
  93.   \else \def\result{\accent"26 y}%
  94.   \fi \fi
  95.   \result }
  96.  
  97. \def\@Yligature{%
  98.   \ifx a\chartest \def\result{\accent"26 \char"17 \@gobble}%
  99.   \else \ifx A\chartest \def\result{\accent"26 \char"17 \@gobble}%
  100.   \else \ifx u\chartest \def\result{\accent"26 \char"10 \@gobble}%
  101.   \else \ifx U\chartest \def\result{\accent"26 \char"10 \@gobble}%
  102.   \else \def\result{\accent"26 Y}%
  103.   \fi \fi \fi \fi
  104.   \result }
  105.  
  106. \def\!{\ifmmode \mskip-\thinmuskip \fi}
  107.  
  108.  
  109. %  These are the definitions that will produce cyrillic letters within
  110. %  {\cyr ...} for letters represented in input by control sequences and
  111. %  accented latin letters.
  112.  
  113. \def\cyracc{%
  114.   \def\cydot{{\kern0pt}}%
  115.   \def\cprime{\char"7E }\def\Cprime{\char"5E }%
  116.   \def\cdprime{\char"7F }\def\Cdprime{\char"5F }%
  117.   \def\dbar{dj}\def\Dbar{Dj}%
  118.   \def\dz{\char"1E }\def\Dz{\char"16 }%
  119.   \def\dzh{\char"0A }\def\Dzh{\char"02 }%
  120.   \def\'##1{\if c##1\char"0F %
  121.     \else \if C##1\char"07 %
  122.     \else \accent"26 ##1\fi \fi }%
  123.   \def\`##1{\if e##1\char"0B %
  124.     \else \if E##1\char"03 %
  125.     \else \errmessage{accent \string\` not defined in cyrillic}%
  126.         ##1\fi \fi }%
  127.   \def\=##1{\if e##1\char"0D %
  128.     \else \if E##1\char"05 %
  129.     \else \if \i##1\char"0C %
  130.     \else \if I##1\char"04 %
  131.     \else \errmessage{accent \string\= not defined in cyrillic}%
  132.         ##1\fi \fi \fi \fi }%
  133.   \def\u##1{\if \i##1\accent"24 i%
  134.     \else \accent"24 ##1\fi }%
  135.   \def\"##1{\if \i##1\accent"20 \char"3D %
  136.     \else \if I##1\accent"20 \char"04 %
  137.     \else \accent"20 ##1\fi \fi }%
  138.   \def\!{\ifmmode \def\result{\mskip-\thinmuskip}%
  139.     \else \def\result{\@stressit}\fi \result}}
  140.  
  141.  
  142. %       If cyrillic strings are to be included in \mark's, the accents need
  143. %       to be kept in unexpanded form until the \mark's are interpreted.
  144. %       See note on \mark below for details.
  145.  
  146. \def\keep@cyracc{\let\cyr=\relax \let\i=\relax
  147.         \let\ubar=\relax \let\cydot=\relax
  148.         \let\cprime=\relax \let\Cprime=\relax
  149.         \let\cdprime=\relax \let\Cdprime=\relax
  150.         \let\dbar=\relax \let\Dbar=\relax
  151.         \let\dz=\relax \let\Dz=\relax
  152.         \let\dzh=\relax \let\Dzh=\relax
  153.         \let\'=\relax \let\`=\relax \let\==\relax
  154.         \let\u=\relax \let\"=\relax \let\!=\relax }
  155.  
  156.  
  157. \catcode`\@=\tempcat
  158. \endinput
  159.  
  160. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  161. %
  162. %                       *****   CYRACC.DEF      *****
  163. %
  164. %  Access to the cyrillic is through the MR 1980 transliteration scheme,
  165. %  using TeX/Metafont ligature capability.  (An alternate set of ligatures
  166. %  exists, for accessing letters beyond the 26 located in the font positions
  167. %  of the 26 roman letters.  An authoritative list of the ligature rules is
  168. %  given below, under the heading Ligatures.)  Successful use of this file
  169. %  requires appropriate cyrillic and accent fonts, arranged according to
  170. %  the AMS/MR scheme.
  171. %
  172. %  There are some weaknesses in this ligaturing and accent system.
  173. %  The following are known to be less than satisfactory:
  174. %
  175. %       the intermediate `ligatures' for shch access numerals;
  176. %       primes (transliteration of hard/soft signs) use math mode;
  177. %       underbar on `cap' double prime is too low (hard sign);
  178. %       thorn d's don't yet exist;
  179. %       \cydot uses math mode;
  180. %       this scheme is not compatible with automatic Russian hyphenation.
  181. %
  182. %
  183. %  Notes on the macros:
  184. %
  185. %       The single space following each hex character code is necessary
  186. %       to prevent the next input character from being gobbled.
  187. %
  188. %
  189. %  Note on \mark :
  190. %
  191. %       Control sequences such as these cyrillic accents should remain
  192. %       unexpanded when generating \mark's; otherwise, the definition of
  193. %       the expanded strings in effect when the \mark is used may be
  194. %       inappropriate.  By \let\...=\relax , the \... takes on the important
  195. %       characteristic of a primitive that it will not be expanded further.
  196. %       The following code has been shown to generate correct \mark entries
  197. %       that can be used successfully in running heads:
  198. %
  199. %       \newtoks\marktoks
  200. %       \def\domark{\keep@cyracc \mark{\the\marktoks}}
  201. %
  202. %       In running heads, the marks should be accessed using \the to expand
  203. %       the tokens strings properly.
  204. %
  205. %
  206. %  Ligatures
  207. %
  208. %  This is a list of all the letter ligatures in the AMS cyrillic fonts,
  209. %  and in other cyrillic fonts (such as those developed at the University
  210. %  of Washington that use the AMS arrangement).
  211. %
  212. %  LOWER CASE LIGATURES
  213. %
  214. %    A.  All-letter ligatures
  215. %
  216. %  ch = `q
  217. %  dj = '016
  218. %  kh = `h
  219. %  lj = '011
  220. %  nj = '010
  221. %  sh = `x; xc = `7 (shc); 7h = `w (shch)
  222. %  ts = `c
  223. %  ya = '037
  224. %  yu = '030
  225. %  zh = '031
  226. %
  227. %    B.  Ligatures with keyed numerals
  228. %
  229. %  c1 = '017
  230. %  d1 = '016 (dj); d2 = '012 (dzh); d3 = '036 (dz)
  231. %  e1 = '013; e2 = '015
  232. %  i1 = '014
  233. %  j1 = '037 (ya); j2 = '030 (yu)
  234. %  l1 = '011 (lj)
  235. %  n1 = '010 (nj)
  236. %  p1 = '176; p2 = '177
  237. %  z1 = '031 (zh)
  238. %
  239. %  UPPER CASE LIGATURES
  240. %    A.  All-letter ligatures
  241. %
  242. %  CH, Ch = `Q
  243. %  KH, Kh = `H
  244. %  LJ, Lj = '001
  245. %  NJ, Nj = '000
  246. %  SH, Sh = `X; XH, Xh = `6 (SHC, SHc, Shc);
  247. %            6H, 6h = `W (SHCH, SHCh, SHch, Shch)
  248. %  TS, Ts = `C
  249. %  YA, Ya = '027
  250. %  YU, Yu = '020
  251. %  ZH, Zh = '021
  252. %
  253. %    B.  Ligatures with keyed numerals
  254. %
  255. %  C1 = '007
  256. %  D1 = '006 (DJ); D2 = '002 (DZH); D3 = '026 (DZ)
  257. %  E1 = '003; E2 = '005
  258. %  I1 = '004
  259. %  J1 = '027 (YA); J2 = '020 (YU)
  260. %  L1 = '001 (LJ)
  261. %  N0 = '175 (Number sign); N1 = '000 (NJ)
  262. %  P1 = '136; P2 = '137
  263. %  Z1 = '021 (ZH)
  264. %
  265. %  DEACTIVATED LIGATURES
  266. %
  267. %  The dzh and DZH ligatures were originally built in the following manner,
  268. %  but the results were not compatible with desired keyboarding schemes.
  269. %
  270. %  dz = '036; '036(roman s)h = '012 (dzh)
  271. %  DZ = '026; '026(roman S)H = '002 (DZH)
  272. %
  273. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  274.