home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume38 / lout / part16 < prev    next >
Encoding:
Text File  |  1993-08-11  |  74.2 KB  |  2,470 lines

  1. Newsgroups: comp.sources.misc
  2. From: jeff@joyce.cs.su.oz.au (Jeff Kingston)
  3. Subject: v38i084:  lout - Lout document formatting system, v2.05, Part16/35
  4. Message-ID: <1993Aug10.032741.17287@sparky.sterling.com>
  5. X-Md4-Signature: cbea226b7c49571ddd5826ccd22be155
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Sterling Software
  8. Date: Tue, 10 Aug 1993 03:27:41 GMT
  9. Approved: kent@sparky.sterling.com
  10.  
  11. Submitted-by: jeff@joyce.cs.su.oz.au (Jeff Kingston)
  12. Posting-number: Volume 38, Issue 84
  13. Archive-name: lout/part16
  14. Environment: UNIX
  15. Supersedes: lout: Volume 37, Issue 99-128
  16.  
  17. #! /bin/sh
  18. # This is a shell archive.  Remove anything before this line, then feed it
  19. # into a shell via "sh file" or similar.  To overwrite existing files,
  20. # type "sh file -c".
  21. # Contents:  doc/tr.eq/s5 doc/tr.impl/s5.3 font/NewCenSchBolIta.AFM
  22. #   include/fig z16.c
  23. # Wrapped by kent@sparky on Sun Aug  8 12:29:26 1993
  24. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  25. echo If this archive is complete, you will see the following message:
  26. echo '          "shar: End of archive 16 (of 35)."'
  27. if test -f 'doc/tr.eq/s5' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'doc/tr.eq/s5'\"
  29. else
  30.   echo shar: Extracting \"'doc/tr.eq/s5'\" \(16617 characters\)
  31.   sed "s/^X//" >'doc/tr.eq/s5' <<'END_OF_FILE'
  32. X@Section
  33. X   @Title { Summary }
  34. X@Begin
  35. X@PP
  36. XThis section is a complete list of the symbols provided by Eq.  We
  37. Xdivide them into auxiliary, parameterized, short names (further divided
  38. Xinto relations, binary operators, and punctuation), and full names.  The
  39. Xauxiliary symbols are:
  40. X@ID @Tab
  41. X     vmargin { 0.5vx }
  42. X     @Fmta { @Col A ! @Col B }
  43. X{
  44. X@Rowa
  45. X    A { @Code "`" }
  46. X    B { Thin space }
  47. X@Rowa
  48. X    A { @Code "``" }
  49. X    B { Medium space }
  50. X@Rowa
  51. X    A { @Code "```" }
  52. X    B { Thick space }
  53. X@Rowa
  54. X    A { @Code "bin x" }
  55. X    B { Treat @Code x as a binary operator }
  56. X@Rowa
  57. X    A { @Code "rel x" }
  58. X    B { Treat @Code x as a relation }
  59. X@Rowa
  60. X    A { @Code "punct x" }
  61. X    B { Treat @Code x as a punctuation symbol }
  62. X@Rowa
  63. X    A { @Code "non x" }
  64. X    B { Remove spaces normally put into @Code x }
  65. X@Rowa
  66. X    A { @Code "vctr x" }
  67. X    B { Centre @Code x vertically }
  68. X@Rowa
  69. X    A { @Code "big x" }
  70. X    B { Make @Code x larger }
  71. X}
  72. XHere are all the parameterized symbols, shown in groups of equal
  73. Xprecedence, with the precedence itself at right:
  74. X@ID lines @Break {
  75. X@Code "matrix not" (100)
  76. X@Code "dot dotdot hat tilde vec dyad overbar underbar" (62)
  77. X@Code "sup sub supp" (60)   "on" (61)
  78. X@Code "from to widefrom wideto" (58)
  79. X@Code "sqrt root" (56)
  80. X@Code "over" "frac" (54)
  81. X@Code "above labove cabove rabove mabove" (52)
  82. X@Code "nextcol" (50)
  83. X}
  84. XSee page {@PageOf matrix} for examples of matrices.  Here are some
  85. Xexamples of the other symbols:
  86. X@IL
  87. X
  88. X@LI {
  89. X@Code "x dot"
  90. X|7ct
  91. X@Eq { x dot }
  92. X}
  93. X
  94. X@LI {
  95. X@Code "x dotdot"
  96. X|7ct
  97. X@Eq { x dotdot }
  98. X}
  99. X
  100. X@LI {
  101. X@Code "x hat"
  102. X|7ct
  103. X@Eq { x hat }
  104. X}
  105. X
  106. X@LI {
  107. X@Code "x tilde"
  108. X|7ct
  109. X@Eq { x tilde }
  110. X}
  111. X
  112. X@LI {
  113. X@Code "x vec"
  114. X|7ct
  115. X@Eq { x vec }
  116. X}
  117. X
  118. X@LI {
  119. X@Code "x dyad"
  120. X|7ct
  121. X@Eq { x dyad }
  122. X}
  123. X
  124. X@LI {
  125. X@Code "x+y overbar"
  126. X|7ct
  127. X@Eq { x+y overbar }
  128. X}
  129. X
  130. X@LI {
  131. X@Code "x+y underbar"
  132. X|7ct
  133. X@Eq { x+y underbar }
  134. X}
  135. X
  136. X@EL
  137. XThese marks are centred over the left parameter, except the last two which are
  138. Xextended to the width of the object.
  139. X@IL
  140. X
  141. X@LI {
  142. X@Code "a sup b"
  143. X|7ct
  144. X@Eq {a sup b}
  145. X}
  146. X
  147. X@LI {
  148. X@Code "a sub b"
  149. X|7ct
  150. X@Eq {a sub b}
  151. X}
  152. X
  153. X@LI {
  154. X@Code "a supp b on c"
  155. X|7ct
  156. X@Eq {a supp b on c}
  157. X}
  158. X
  159. X@EL
  160. XNote that @Code "supp" and @Code "on" must be used together as shown.
  161. X@IL
  162. X
  163. X@LI {
  164. X@Code "big sum from i"
  165. X|7ct
  166. X@Eq {big sum from i}
  167. X}
  168. X
  169. X@LI {
  170. X@Code "big prod to j"
  171. X|7ct
  172. X@Eq {big prod to j}
  173. X}
  174. X
  175. X@LI {
  176. X@Code { "{a, ... , z} widefrom"
  177. X"{90d @Rotate blbrace}" }
  178. X|7ct
  179. X@Eq { {a, ... , z} widefrom {90d @Rotate blbrace} }
  180. X}
  181. X
  182. X@LI {
  183. X@Code "{a, ... , z} wideto minus"
  184. X|7ct
  185. X@Eq { {a, ... , z} wideto minus }
  186. X}
  187. X
  188. X@EL
  189. X@Code "widefrom" and @Code "wideto" are like @Code "from" and
  190. X@Code "to" except that they horizontally scale the right parameter
  191. Xto the width of the left.
  192. X@IL
  193. X
  194. X@LI {
  195. X@Code "sqrt {x over y}"
  196. X|7ct
  197. X@Eq { sqrt {x over y} }
  198. X}
  199. X
  200. X@LI {
  201. X@Code "3 root {x over y}"
  202. X|7ct
  203. X@Eq { 3 root {x over y} }
  204. X}
  205. X
  206. X@EL
  207. XThe left parameter of @Code "root" may be any object.
  208. X@IL
  209. X
  210. X@LI {
  211. X@Code "2 over 3"
  212. X|7ct
  213. X@Eq { 2 over 3 }
  214. X}
  215. X
  216. X@LI {
  217. X@Code "2 frac 3"
  218. X|7ct
  219. X@Eq { 2 frac 3 }
  220. X}
  221. X
  222. X@EL
  223. XThe following short names define relations (that is, they have a thick
  224. Xspace on each side):
  225. X@DP
  226. Xragged @Break {
  227. X"<"        @Dbl @Eq {  <            }
  228. X">"        @Dbl @Eq {  >            }
  229. X"="        @Dbl @Eq {  =            }
  230. X"<="        @Dbl @Eq {  <=            }
  231. X"prec"        @Dbl @Eq {  prec        }
  232. X"preceq"    @Dbl @Eq {  preceq        }
  233. X"<<"        @Dbl @Eq {  <<            }
  234. X"subset"    @Dbl @Eq {  subset        }
  235. X"subseteq"    @Dbl @Eq {  subseteq        }
  236. X"sqsubseteq"    @Dbl @Eq {  sqsubseteq        }
  237. X"in"        @Dbl @Eq {  in            }
  238. X"vdash"        @Dbl @Eq {  vdash        }
  239. X"smile"        @Dbl @Eq {  smile        }
  240. X"frown"        @Dbl @Eq {  frown        }
  241. X">="        @Dbl @Eq {  >=            }
  242. X"succ"        @Dbl @Eq {  succ        }
  243. X"succeq"    @Dbl @Eq {  succeq        }
  244. X">>"        @Dbl @Eq {  >>            }
  245. X"supset"    @Dbl @Eq {  supset        }
  246. X"supseteq"    @Dbl @Eq {  supseteq        }
  247. X"sqsupseteq"    @Dbl @Eq {  sqsupseteq        }
  248. X"ni"        @Dbl @Eq {  ni            }
  249. X"dashv"        @Dbl @Eq {  dashv        }
  250. X"mid"        @Dbl @Eq {  mid            }
  251. X"parallel"    @Dbl @Eq {  parallel        }
  252. X"=="        @Dbl @Eq {  ==            }
  253. X"~"        @Dbl @Eq {  ~            }
  254. X"-~"        @Dbl @Eq {  -~            }
  255. X"asymp"        @Dbl @Eq {  asymp        }
  256. X"~~"        @Dbl @Eq {  ~~            }
  257. X"=~"        @Dbl @Eq {  =~            }
  258. X"bowtie"    @Dbl @Eq {  bowtie        }
  259. X"propto"    @Dbl @Eq {  propto        }
  260. X"models"    @Dbl @Eq {  models        }
  261. X"doteq"        @Dbl @Eq {  doteq        }
  262. X"perp"        @Dbl @Eq {  perp        }
  263. X"notsub"    @Dbl @Eq {  notsub        }
  264. X"notin"        @Dbl @Eq {  notin        }
  265. X"!="        @Dbl @Eq {  !=            }
  266. X"<->"        @Dbl @Eq {  <->            }
  267. X"<--"        @Dbl @Eq {  <--            }
  268. X"-->"        @Dbl @Eq {  -->            }
  269. X"up"        @Dbl @Eq {  up            }
  270. X"down"        @Dbl @Eq {  down        }
  271. X"<=>"        @Dbl @Eq {  <=>            }
  272. X"<=="        @Dbl @Eq {  <==            }
  273. X"==>"        @Dbl @Eq {  ==>            }
  274. X"dblup"        @Dbl @Eq {  dblup        }
  275. X"dbldown"    @Dbl @Eq {  dbldown        }
  276. X":"        @Dbl @Eq {  :            }
  277. X"::"        @Dbl @Eq {  ::            }
  278. X":="        @Dbl @Eq {  :=            }
  279. X}
  280. X@DP
  281. XThese can be negated by preceding them with {@Code "not"}, as in
  282. X{@Code "not =="}, for example, which yields {@Eq { not == }}.  The
  283. Xfollowing short names define binary operators (medium space on each side):
  284. X@DP
  285. Xragged @Break {
  286. X"+"        @Dbl @Eq {  +            }
  287. X"-"        @Dbl @Eq {  -            }
  288. X"+-"        @Dbl @Eq {  +-            }
  289. X"-+"        @Dbl @Eq {  -+            }
  290. X"setminus"    @Dbl @Eq {  setminus        }
  291. X"cdot"        @Dbl @Eq {  cdot        }
  292. X"times"        @Dbl @Eq {  times        }
  293. X"*"        @Dbl @Eq {  *            }
  294. X"circ"        @Dbl @Eq {  circ        }
  295. X"div"        @Dbl @Eq {  div            }
  296. X"cap"        @Dbl @Eq {  cap            }
  297. X"cup"        @Dbl @Eq {  cup            }
  298. X"uplus"        @Dbl @Eq {  uplus        }
  299. X"sqcap"        @Dbl @Eq {  sqcap        }
  300. X"sqcup"        @Dbl @Eq {  sqcup        }
  301. X"triangleleft"    @Dbl @Eq {  triangleleft    }
  302. X"triangleright"    @Dbl @Eq {  triangleright    }
  303. X"wr"        @Dbl @Eq {  wr            }
  304. X"bigcirc"    @Dbl @Eq {  bigcirc        }
  305. X"bigtriangleup"    @Dbl @Eq {  bigtriangleup    }
  306. X"bigtriangledown"@Dbl @Eq {  bigtriangledown    }
  307. X"vee"        @Dbl @Eq {  vee            }
  308. X"wedge"        @Dbl @Eq {  wedge        }
  309. X"oplus"        @Dbl @Eq {  oplus        }
  310. X"ominus"    @Dbl @Eq {  ominus        }
  311. X"otimes"    @Dbl @Eq {  otimes        }
  312. X"oslash"    @Dbl @Eq {  oslash        }
  313. X"odot"        @Dbl @Eq {  odot        }
  314. X"dagger"    @Dbl @Eq {  dagger        }
  315. X"daggerdbl"    @Dbl @Eq {  daggerdbl        }
  316. X"amalg"        @Dbl @Eq {  amalg        }
  317. X}
  318. X@DP
  319. XThe following names define punctuation symbols (thin space on the
  320. Xright-hand side):
  321. X@DP
  322. Xragged @Break {
  323. X";"        @Dbl @Eq {  ;            }
  324. X","        @Dbl @Eq {  ,            }
  325. X"col"        @Dbl @Eq {  col            }
  326. X}
  327. X@DP
  328. XThe following symbols are used in ways typified by the large sum and
  329. Xproduct symbols.  In display equations they should be preceded by the
  330. X@Code "big" symbol:
  331. X@DP
  332. Xragged @Break {
  333. X"sum"        @Dbl @Eq {  sum            }
  334. X"prod"        @Dbl @Eq {  prod        }
  335. X"coprod"    @Dbl @Eq {  coprod        }
  336. X@LP
  337. X"int"        @Dbl @Eq {  int            }
  338. X"oint"        @Dbl @Eq {  oint        }
  339. X"bcap"        @Dbl @Eq {  bcap        }
  340. X@LP
  341. X"bcup"        @Dbl @Eq {  bcup        }
  342. X"bvee"        @Dbl @Eq {  bvee        }
  343. X"bwedge"    @Dbl @Eq {  bwedge        }
  344. X@LP
  345. X"bodot"        @Dbl @Eq {  bodot        }
  346. X"botimes"    @Dbl @Eq {  botimes        }
  347. X"boplus"    @Dbl @Eq {  boplus        }
  348. X@LP
  349. X"buplus"    @Dbl @Eq {  buplus        }
  350. X}
  351. X@DP
  352. XThe following symbols are defined so that they will appear in Roman,
  353. Xas is con&-vent&-ional for them in equations:
  354. X@DP
  355. Xragged @Break {
  356. X"arccos"    @Dbl @Eq {  arccos        }
  357. X"arcsin"    @Dbl @Eq {  arcsin        }
  358. X"arctan"    @Dbl @Eq {  arctan        }
  359. X"arg"        @Dbl @Eq {  arg            }
  360. X"cos"        @Dbl @Eq {  cos            }
  361. X"cosh"        @Dbl @Eq {  cosh        }
  362. X"cot"        @Dbl @Eq {  cot            }
  363. X"coth"        @Dbl @Eq {  coth        }
  364. X"csc"        @Dbl @Eq {  csc            }
  365. X"deg"        @Dbl @Eq {  deg            }
  366. X"det"        @Dbl @Eq {  det            }
  367. X"dim"        @Dbl @Eq {  dim            }
  368. X"exp"        @Dbl @Eq {  exp            }
  369. X"gcd"        @Dbl @Eq {  gcd            }
  370. X"hom"        @Dbl @Eq {  hom            }
  371. X"inf"        @Dbl @Eq {  inf            }
  372. X"ker"        @Dbl @Eq {  ker            }
  373. X"lg"        @Dbl @Eq {  lg            }
  374. X"lim"        @Dbl @Eq {  lim            }
  375. X"liminf"    @Dbl @Eq {  liminf        }
  376. X"limsup"    @Dbl @Eq {  limsup        }
  377. X"ln"        @Dbl @Eq {  ln            }
  378. X"log"        @Dbl @Eq {  log            }
  379. X"max"        @Dbl @Eq {  max            }
  380. X"min"        @Dbl @Eq {  min            }
  381. X"Pr"        @Dbl @Eq {  Pr            }
  382. X"sec"        @Dbl @Eq {  sec            }
  383. X"sin"        @Dbl @Eq {  sin            }
  384. X"sinh"        @Dbl @Eq {  sinh        }
  385. X"supr"        @Dbl @Eq {  supr        }
  386. X"tan"        @Dbl @Eq {  tan            }
  387. X"tanh"        @Dbl @Eq {  tanh        }
  388. X"mod"        @Dbl @Eq {  mod            }
  389. X}
  390. X@DP
  391. XThe following symbols are also defined to ensure that they will appear
  392. Xin Roman:
  393. X@DP
  394. Xragged @Break {
  395. X"0"        @Dbl @Eq {  0            }
  396. X"1"        @Dbl @Eq {  1            }
  397. X"2"        @Dbl @Eq {  2            }
  398. X"3"        @Dbl @Eq {  3            }
  399. X"4"        @Dbl @Eq {  4            }
  400. X"5"        @Dbl @Eq {  5            }
  401. X"6"        @Dbl @Eq {  6            }
  402. X"7"        @Dbl @Eq {  7            }
  403. X"8"        @Dbl @Eq {  8            }
  404. X"9"        @Dbl @Eq {  9            }
  405. X"!"        @Dbl @Eq {  !            }
  406. X"?"        @Dbl @Eq {  ?            }
  407. X"%"        @Dbl @Eq {  %            }
  408. X"("        @Dbl @Eq {  (            }
  409. X")"        @Dbl @Eq {  )            }
  410. X"["        @Dbl @Eq {  [            }
  411. X"]"        @Dbl @Eq {  ]            }
  412. X}
  413. X@DP
  414. XThe following symbols make good @Code atleft and
  415. X@Code atright parameters of the @Code matrix symbol:
  416. X@LP
  417. X@LP
  418. Xragged @Break {
  419. X"lpar"        @Dbl @Eq {  lpar        }
  420. X"blpar"        @Dbl @Eq {  blpar        }
  421. X"rpar"        @Dbl @Eq {  rpar        }
  422. X"brpar"        @Dbl @Eq {  brpar        }
  423. X"lbrack"    @Dbl @Eq {  lbrack        }
  424. X"blbrack"    @Dbl @Eq {  blbrack        }
  425. X"rbrack"    @Dbl @Eq {  rbrack        }
  426. X"brbrack"    @Dbl @Eq {  brbrack        }
  427. X"lbrace"    @Dbl @Eq {  lbrace        }
  428. X"blbrace"    @Dbl @Eq {  blbrace        }
  429. X"rbrace"    @Dbl @Eq {  rbrace        }
  430. X"brbrace"    @Dbl @Eq {  brbrace        }
  431. X"lfloor"    @Dbl @Eq {  lfloor        }
  432. X"blfloor"    @Dbl @Eq {  blfloor        }
  433. X"rfloor"    @Dbl @Eq {  rfloor        }
  434. X"brfloor"    @Dbl @Eq {  brfloor        }
  435. X"lceil"        @Dbl @Eq {  lceil        }
  436. X"blceil"    @Dbl @Eq {  blceil        }
  437. X"rceil"        @Dbl @Eq {  rceil        }
  438. X"brceil"    @Dbl @Eq {  brceil        }
  439. X"langle"    @Dbl @Eq {  langle        }
  440. X"blangle"    @Dbl @Eq {  blangle        }
  441. X"rangle"    @Dbl @Eq {  rangle        }
  442. X"brangle"    @Dbl @Eq {  brangle        }
  443. X}
  444. X@LP
  445. X@LP
  446. XHere are some miscellaneous symbols:
  447. X@DP
  448. Xragged @Break {
  449. X"hbar"        @Dbl @Eq {  hbar        }
  450. X"Re"        @Dbl @Eq {  Re            }
  451. X"Im"        @Dbl @Eq {  Im            }
  452. X"partial"    @Dbl @Eq {  partial        }
  453. X"infty"        @Dbl @Eq {  infty        }
  454. X"prime"        @Dbl @Eq {  prime        }
  455. X"nabla"        @Dbl @Eq {  nabla        }
  456. X"surd"        @Dbl @Eq {  surd        }
  457. X"top"        @Dbl @Eq {  top            }
  458. X"bot"        @Dbl @Eq {  bot            }
  459. X"dbar"        @Dbl @Eq {  dbar        }
  460. X"triangle"    @Dbl @Eq {  triangle        }
  461. X"backslash"    @Dbl @Eq {  backslash        }
  462. X"forall"    @Dbl @Eq {  forall        }
  463. X"exists"    @Dbl @Eq {  exists        }
  464. X"neg"        @Dbl @Eq {  neg            }
  465. X"circle"    @Dbl @Eq {  circle        }
  466. X"square"    @Dbl @Eq {  square        }
  467. X"ldots"        @Dbl @Eq {  ldots        }
  468. X"cdots"        @Dbl @Eq {  cdots        }
  469. X"vdots"        @Dbl @Eq {  vdots        }
  470. X"ddots"        @Dbl @Eq {  ddots        }
  471. X"del"        @Dbl @Eq {  del            }
  472. X"grad"        @Dbl @Eq {  grad        }
  473. X"..."        @Dbl @Eq {  ...            }
  474. X",...,"        @Dbl @Eq {  ,...,        }
  475. X"half"        @Dbl @Eq {  half        }
  476. X"third"        @Dbl @Eq {  third        }
  477. X"'"        @Dbl @Eq {  '            }
  478. X"empty"        @Dbl @Eq {  empty        }
  479. X}
  480. X@DP
  481. XFinally, here is the long list of full names from the Adobe Symbol font:
  482. X@DP
  483. Xragged @Break {
  484. X"space"        @Dbl @Eq {  space        }
  485. X"exclam"    @Dbl @Eq {  exclam        }
  486. X"universal"    @Dbl @Eq {  universal        }
  487. X"numbersign"    @Dbl @Eq {  numbersign        }
  488. X"existential"    @Dbl @Eq {  existential        }
  489. X"percent"    @Dbl @Eq {  percent        }
  490. X"ampersand"    @Dbl @Eq {  ampersand        }
  491. X"suchthat"    @Dbl @Eq {  suchthat        }
  492. X"parenleft"    @Dbl @Eq {  parenleft        }
  493. X"parenright"    @Dbl @Eq {  parenright        }
  494. X"asteriskmath"    @Dbl @Eq {  asteriskmath    }
  495. X"plus"        @Dbl @Eq {  plus        }
  496. X"comma"        @Dbl @Eq {  comma        }
  497. X"minus"        @Dbl @Eq {  minus        }
  498. X"period"    @Dbl @Eq {  period        }
  499. X"slash"        @Dbl @Eq {  slash        }
  500. X"zero"        @Dbl @Eq {  zero        }
  501. X"one"        @Dbl @Eq {  one            }
  502. X"two"        @Dbl @Eq {  two            }
  503. X"three"        @Dbl @Eq {  three        }
  504. X"four"        @Dbl @Eq {  four        }
  505. X"five"        @Dbl @Eq {  five        }
  506. X"six"        @Dbl @Eq {  six            }
  507. X"seven"        @Dbl @Eq {  seven        }
  508. X"eight"        @Dbl @Eq {  eight        }
  509. X"nine"        @Dbl @Eq {  nine        }
  510. X"colon"        @Dbl @Eq {  colon        }
  511. X"semicolon"    @Dbl @Eq {  semicolon        }
  512. X"less"        @Dbl @Eq {  less        }
  513. X"equal"        @Dbl @Eq {  equal        }
  514. X"greater"    @Dbl @Eq {  greater        }
  515. X"question"    @Dbl @Eq {  question        }
  516. X"congruent"    @Dbl @Eq {  congruent        }
  517. X"Alpha"        @Dbl @Eq {  Alpha        }
  518. X"Beta"        @Dbl @Eq {  Beta        }
  519. X"Chi"        @Dbl @Eq {  Chi            }
  520. X"Delta"        @Dbl @Eq {  Delta        }
  521. X"Epsilon"    @Dbl @Eq {  Epsilon        }
  522. X"Phi"        @Dbl @Eq {  Phi            }
  523. X"Gamma"        @Dbl @Eq {  Gamma        }
  524. X"Eta"        @Dbl @Eq {  Eta            }
  525. X"Iota"        @Dbl @Eq {  Iota        }
  526. X"thetaone"    @Dbl @Eq {  thetaone        }
  527. X"Kappa"        @Dbl @Eq {  Kappa        }
  528. X"Lambda"    @Dbl @Eq {  Lambda        }
  529. X"Mu"        @Dbl @Eq {  Mu            }
  530. X"Nu"        @Dbl @Eq {  Nu            }
  531. X"Omicron"    @Dbl @Eq {  Omicron        }
  532. X"Pi"        @Dbl @Eq {  Pi            }
  533. X"Theta"        @Dbl @Eq {  Theta        }
  534. X"Rho"        @Dbl @Eq {  Rho            }
  535. X"Sigma"        @Dbl @Eq {  Sigma        }
  536. X"Tau"        @Dbl @Eq {  Tau            }
  537. X"Upsilon"    @Dbl @Eq {  Upsilon        }
  538. X"sigmaone"    @Dbl @Eq {  sigmaone        }
  539. X"Omega"        @Dbl @Eq {  Omega        }
  540. X"Xi"        @Dbl @Eq {  Xi            }
  541. X"Psi"        @Dbl @Eq {  Psi            }
  542. X"Zeta"        @Dbl @Eq {  Zeta        }
  543. X"bracketleft"    @Dbl @Eq {  bracketleft        }
  544. X"therefore"    @Dbl @Eq {  therefore        }
  545. X"bracketright"    @Dbl @Eq {  bracketright    }
  546. X"perpendicular"    @Dbl @Eq {  perpendicular    }
  547. X"underscore"    @Dbl @Eq {  underscore        }
  548. X"radicalex"    @Dbl @Eq {  radicalex        }
  549. X"alpha"        @Dbl @Eq {  alpha        }
  550. X"beta"        @Dbl @Eq {  beta        }
  551. X"chi"        @Dbl @Eq {  chi            }
  552. X"delta"        @Dbl @Eq {  delta        }
  553. X"epsilon"    @Dbl @Eq {  epsilon        }
  554. X"phi"        @Dbl @Eq {  phi            }
  555. X"gamma"        @Dbl @Eq {  gamma        }
  556. X"eta"        @Dbl @Eq {  eta            }
  557. X"iota"        @Dbl @Eq {  iota        }
  558. X"phione"    @Dbl @Eq {  phione        }
  559. X"kappa"        @Dbl @Eq {  kappa        }
  560. X"lambda"    @Dbl @Eq {  lambda        }
  561. X"mu"        @Dbl @Eq {  mu            }
  562. X"nu"        @Dbl @Eq {  nu            }
  563. X"omicron"    @Dbl @Eq {  omicron        }
  564. X"pi"        @Dbl @Eq {  pi            }
  565. X"theta"        @Dbl @Eq {  theta        }
  566. X"rho"        @Dbl @Eq {  rho            }
  567. X"sigma"        @Dbl @Eq {  sigma        }
  568. X"tau"        @Dbl @Eq {  tau            }
  569. X"upsilon"    @Dbl @Eq {  upsilon        }
  570. X"omegaone"    @Dbl @Eq {  omegaone        }
  571. X"omega"        @Dbl @Eq {  omega        }
  572. X"xi"        @Dbl @Eq {  xi            }
  573. X"psi"        @Dbl @Eq {  psi            }
  574. X"zeta"        @Dbl @Eq {  zeta        }
  575. X"braceleft"    @Dbl @Eq {  braceleft        }
  576. X"bar"        @Dbl @Eq {  bar            }
  577. X"braceright"    @Dbl @Eq {  braceright        }
  578. X"similar"    @Dbl @Eq {  similar        }
  579. X"Upsilonone"    @Dbl @Eq {  Upsilonone        }
  580. X"minute"    @Dbl @Eq {  minute        }
  581. X"lessequal"    @Dbl @Eq {  lessequal        }
  582. X"fraction"    @Dbl @Eq {  fraction        }
  583. X"infinity"    @Dbl @Eq {  infinity        }
  584. X"florin"    @Dbl @Eq {  florin        }
  585. X"club"        @Dbl @Eq {  club        }
  586. X"diamond"    @Dbl @Eq {  diamond        }
  587. X"heart"        @Dbl @Eq {  heart        }
  588. X"spade"        @Dbl @Eq {  spade        }
  589. X"arrowboth"    @Dbl @Eq {  arrowboth        }
  590. X"arrowleft"    @Dbl @Eq {  arrowleft        }
  591. X"arrowup"    @Dbl @Eq {  arrowup        }
  592. X"arrowright"    @Dbl @Eq {  arrowright        }
  593. X"arrowdown"    @Dbl @Eq {  arrowdown        }
  594. X"degree"    @Dbl @Eq {  degree        }
  595. X"plusminus"    @Dbl @Eq {  plusminus        }
  596. X"second"    @Dbl @Eq {  second        }
  597. X"greaterequal"    @Dbl @Eq {  greaterequal    }
  598. X"multiply"    @Dbl @Eq {  multiply        }
  599. X"proportional"    @Dbl @Eq {  proportional    }
  600. X"partialdiff"    @Dbl @Eq {  partialdiff        }
  601. X"bullet"    @Dbl @Eq {  bullet        }
  602. X"divide"    @Dbl @Eq {  divide        }
  603. X"notequal"    @Dbl @Eq {  notequal        }
  604. X"equivalence"    @Dbl @Eq {  equivalence        }
  605. X"approxequal"    @Dbl @Eq {  approxequal        }
  606. X"ellipsis"    @Dbl @Eq {  ellipsis        }
  607. X"arrowvertex"    @Dbl @Eq {  arrowvertex        }
  608. X"arrowhorizex"    @Dbl @Eq {  arrowhorizex    }
  609. X"carriagereturn"@Dbl @Eq {  carriagereturn    }
  610. X"aleph"        @Dbl @Eq {  aleph        }
  611. X"Ifraktur"    @Dbl @Eq {  Ifraktur        }
  612. X"Rfraktur"    @Dbl @Eq {  Rfraktur        }
  613. X"weierstrass"    @Dbl @Eq {  weierstrass        }
  614. X"circlemultiply"@Dbl @Eq {  circlemultiply    }
  615. X"circleplus"    @Dbl @Eq {  circleplus        }
  616. X"emptyset"    @Dbl @Eq {  emptyset        }
  617. X"intersection"    @Dbl @Eq {  intersection    }
  618. X"union"        @Dbl @Eq {  union        }
  619. X"propersuperset"@Dbl @Eq {  propersuperset    }
  620. X"reflexsuperset"@Dbl @Eq {  reflexsuperset    }
  621. X"notsubset"    @Dbl @Eq {  notsubset        }
  622. X"propersubset"    @Dbl @Eq {  propersubset    }
  623. X"reflexsubset"    @Dbl @Eq {  reflexsubset    }
  624. X"element"    @Dbl @Eq {  element        }
  625. X"notelement"    @Dbl @Eq {  notelement        }
  626. X"angle"        @Dbl @Eq {  angle        }
  627. X"gradient"    @Dbl @Eq {  gradient        }
  628. X"registerserif"    @Dbl @Eq {  registerserif    }
  629. X"copyrightserif"@Dbl @Eq {  copyrightserif    }
  630. X"trademarkserif"@Dbl @Eq {  trademarkserif    }
  631. X"product"    @Dbl @Eq {  product        }
  632. X"radical"    @Dbl @Eq {  radical        }
  633. X"dotmath"    @Dbl @Eq {  dotmath        }
  634. X"logicalnot"    @Dbl @Eq {  logicalnot        }
  635. X"logicaland"    @Dbl @Eq {  logicaland        }
  636. X"logicalor"    @Dbl @Eq {  logicalor        }
  637. X"arrowdblboth"    @Dbl @Eq {  arrowdblboth    }
  638. X"arrowdblleft"    @Dbl @Eq {  arrowdblleft    }
  639. X"arrowdblup"    @Dbl @Eq {  arrowdblup        }
  640. X"arrowdblright"    @Dbl @Eq {  arrowdblright    }
  641. X"arrowdbldown"    @Dbl @Eq {  arrowdbldown    }
  642. X"lozenge"    @Dbl @Eq {  lozenge        }
  643. X"angleleft"    @Dbl @Eq {  angleleft        }
  644. X"registersans"    @Dbl @Eq {  registersans    }
  645. X"copyrightsans"    @Dbl @Eq {  copyrightsans    }
  646. X"trademarksans"    @Dbl @Eq {  trademarksans    }
  647. X"summation"    @Dbl @Eq {  summation        }
  648. X"parenlefttp"    @Dbl @Eq {  parenlefttp        }
  649. X"parenleftex"    @Dbl @Eq {  parenleftex        }
  650. X"parenleftbt"    @Dbl @Eq {  parenleftbt        }
  651. X"bracketlefttp"    @Dbl @Eq {  bracketlefttp    }
  652. X"bracketleftex"    @Dbl @Eq {  bracketleftex    }
  653. X"bracketleftbt"    @Dbl @Eq {  bracketleftbt    }
  654. X"bracelefttp"    @Dbl @Eq {  bracelefttp        }
  655. X"braceleftmid"    @Dbl @Eq {  braceleftmid    }
  656. X"braceleftbt"    @Dbl @Eq {  braceleftbt        }
  657. X"braceex"    @Dbl @Eq {  braceex        }
  658. X"angleright"    @Dbl @Eq {  angleright        }
  659. X"integral"    @Dbl @Eq {  integral        }
  660. X"integraltp"    @Dbl @Eq {  integraltp        }
  661. X"integralex"    @Dbl @Eq {  integralex        }
  662. X"integralbt"    @Dbl @Eq {  integralbt        }
  663. X"parenrighttp"    @Dbl @Eq {  parenrighttp    }
  664. X"parenrightex"    @Dbl @Eq {  parenrightex    }
  665. X"parenrightbt"    @Dbl @Eq {  parenrightbt    }
  666. X"bracketrighttp"@Dbl @Eq {  bracketrighttp    }
  667. X"bracketrightex"@Dbl @Eq {  bracketrightex    }
  668. X"bracketrightbt"@Dbl @Eq {  bracketrightbt    }
  669. X"bracerighttp"    @Dbl @Eq {  bracerighttp    }
  670. X"bracerightmid"    @Dbl @Eq {  bracerightmid    }
  671. X"bracerightbt"    @Dbl @Eq {  bracerightbt    }
  672. X}
  673. X@DP
  674. XThe names given are the same as Adobe's except in a few places where
  675. Xthe Adobe name contains a digit, which is not possible in Lout.
  676. X@End @Section
  677. END_OF_FILE
  678.   if test 16617 -ne `wc -c <'doc/tr.eq/s5'`; then
  679.     echo shar: \"'doc/tr.eq/s5'\" unpacked with wrong size!
  680.   fi
  681.   # end of 'doc/tr.eq/s5'
  682. fi
  683. if test -f 'doc/tr.impl/s5.3' -a "${1}" != "-c" ; then 
  684.   echo shar: Will not clobber existing file \"'doc/tr.impl/s5.3'\"
  685. else
  686.   echo shar: Extracting \"'doc/tr.impl/s5.3'\" \(4681 characters\)
  687.   sed "s/^X//" >'doc/tr.impl/s5.3' <<'END_OF_FILE'
  688. X@SubSection
  689. X    @Tag { constraints }
  690. X    @Title { Size constraints and size adjustments }
  691. X@Begin
  692. X@PP
  693. XThe galley flushing algorithm needs to know the available width and
  694. Xheight at each receptive symbol.  These symbols may lie within
  695. Xarbitrarily complex objects, and they may compete with each other for
  696. Xavailable space (as body text and footnote targets do), so this
  697. Xinformation must be extracted from the tree structure when required.
  698. X@PP
  699. XFor example, consider the object
  700. X@ID @Code "5i  @Wide  {  a  /  b  }"
  701. Xand suppose that the width of @Code { a } is @Eq { 1i, 2i } (@Eq {1i} to
  702. Xthe left of the mark, @Eq { 2i } to the right).  What then is the
  703. Xavailable width at {@Code { b }}?  If we let the width of @Code b be
  704. X@Eq {l,r}, we must have
  705. X@ID @Eq { (1i up l) + (2i up r) <= 5i }
  706. Xwith the @Eq {non up } (i.e. max) operations arising from mark
  707. Xalignment.  Eliminating them gives
  708. X@ID @Eq {
  709. Xmatrix {
  710. X    { 1i + 2i ^<= 5i }
  711. Xmabove    { l  + 2i ^<= 5i }
  712. Xmabove    { 1i + r  ^<= 5i }
  713. Xmabove    { l  + r  ^<= 5i }
  714. X}
  715. X}
  716. Xand since we assume that @Code a fits into the available space, the
  717. Xfirst inequality may be dropped, leaving
  718. X@ID @Eq {
  719. Xmatrix {
  720. X    { l     ^<= 3i }
  721. Xmabove    { l + r ^<= 5i }
  722. Xmabove    { r     ^<= 4i }
  723. X}
  724. X}
  725. XObject @Code b may have width @Eq {l, r} for any @Eq { l } and
  726. X@Eq { r } satisfying these inequalities, and no others.
  727. X@PP
  728. XHere is another example:
  729. X@ID @Code "5i  @High  {  a  /2ix  b  }"
  730. XAssuming that @Code a has height @Eq {1i,1i}, the height @Eq {l, r} of
  731. X@Code b must satisfy
  732. X@ID @Eq { 1i + ((1i + l) up 2i) + r <= 5i }
  733. XThis time the @Eq { non up } operation arises from the mark-to-mark gap
  734. Xmode, which will widen the @Eq { 2i } gap if necessary to prevent
  735. X@Code a and @Code b from overlapping.  This inequality can be rewritten as
  736. X@ID @Eq {
  737. Xmatrix {
  738. X    { l     ^<= infinity }
  739. Xmabove    { l + r ^<= 3i       }
  740. Xmabove    { r     ^<= 2i       }
  741. X}
  742. X}
  743. XIn general, Lout is designed so that the available width or height at
  744. Xany point can be expressed by three inequalities of the form
  745. X@ID @Eq {
  746. Xmatrix {
  747. X    { l     ^<= x }
  748. Xmabove    { l + r ^<= y }
  749. Xmabove    { r     ^<= z }
  750. X}
  751. X}
  752. Xwhere @Eq {x }, @Eq {y} and @Eq {z} may be @Eq { infinity }.  We
  753. Xabbreviate these three inequalities to @Eq { l, r <= x, y, z }, and we
  754. Xcall @Eq {x, y, z} a {@I{size constraint}}.
  755. X@PP
  756. XThe two examples above showed how to propagate the size constraint
  757. X@Eq { infinity, 5i, infinity } for
  758. X@Code "a / b" down one level to the child {@Code b}.  Basser Lout
  759. Xcontains a complete set of general rules for all node types, too
  760. Xcomplicated to give here.  Instead, we give just one example of how
  761. Xthese rules are derived, using the object
  762. X@ID {
  763. X@Eq {x sub 1}  @Code "/"  @Eq {x sub 2}  @Code "/"  @Eq {ldots}  @Code
  764. X"/"  @Eq {x sub n}
  765. X}
  766. Xwhere @Eq { x sub j } has width @Eq { l sub j , r sub j } for all @Eq {j}.
  767. X@PP
  768. XSuppose the whole object has width constraint @OneCol @Eq {X,Y,Z}, and we
  769. Xrequire the width constraint of {@Eq { x sub i }}.  Let
  770. X@Eq { L = max sub j ` l sub j } and @Eq { R = max sub j ` r sub j },
  771. Xso that @OneCol @Eq {L, R} is the width of the whole object.  We assume
  772. X@Eq {L, R <= X,Y,Z}.  Then @Eq { x sub i } can be enlarged to any size
  773. X@Eq { l sub i ` , r sub i } satisfying
  774. X@ID @Eq { ( l sub i up L), ( r sub i up R) <= X, Y, Z }
  775. Xwhich expands to eight inequalities:
  776. X@ID @Eq {
  777. Xmatrix {
  778. X         { l sub i           ^<= X }
  779. Xmabove   { L                 ^<= X }
  780. Xmabove   { l sub i + r sub i ^<= Y }
  781. Xmabove   { l sub i + R       ^<= Y }
  782. Xmabove   { L + r sub i       ^<= Y }
  783. Xmabove   { L + R             ^<= Y }
  784. Xmabove   { r sub i           ^<= Z }
  785. Xmabove   { R                 ^<= Z }
  786. X}
  787. X}
  788. XThree are already known, and slightly rearranging the others gives
  789. X@ID @Eq {
  790. Xmatrix {
  791. X         { l sub i           ^<= X     }
  792. Xmabove   { l sub i           ^<= Y - R }
  793. Xmabove   { l sub i + r sub i ^<= Y     }
  794. Xmabove   { r sub i           ^<= Z     }
  795. Xmabove   { r sub i           ^<= Y - L }
  796. X}
  797. X}
  798. XTherefore the width constraint of @Eq { x sub i } is
  799. X@ID @Eq { min(X, Y-R), Y, min(Z, Y-L) }
  800. XThe size constraint of any node can be found by climbing the tree to a
  801. X@I WIDE or @I HIGH node where the constraint is trivial, then propagating
  802. Xit back down to the node, and this is the function of procedure
  803. X{@I Constrained} in Basser Lout.
  804. X@PP
  805. XAfter some components have been promoted into a target, the sizes stored
  806. Xin its parent and higher ancestors must be adjusted to reflect the
  807. Xincreased size.  This is done by yet another set of recursive rules,
  808. Xupward-moving this time, which cease as soon as some ancestor's size
  809. Xdoes not change.  These rules are embodied in procedure @I AdjustSize
  810. Xof Basser Lout.  The adjustment must be done before relinquishing
  811. Xcontrol to any other galley, but not after every component.
  812. X@End @SubSection
  813. END_OF_FILE
  814.   if test 4681 -ne `wc -c <'doc/tr.impl/s5.3'`; then
  815.     echo shar: \"'doc/tr.impl/s5.3'\" unpacked with wrong size!
  816.   fi
  817.   # end of 'doc/tr.impl/s5.3'
  818. fi
  819. if test -f 'font/NewCenSchBolIta.AFM' -a "${1}" != "-c" ; then 
  820.   echo shar: Will not clobber existing file \"'font/NewCenSchBolIta.AFM'\"
  821. else
  822.   echo shar: Extracting \"'font/NewCenSchBolIta.AFM'\" \(15704 characters\)
  823.   sed "s/^X//" >'font/NewCenSchBolIta.AFM' <<'END_OF_FILE'
  824. XStartFontMetrics 2.0
  825. XComment  Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved.
  826. XComment Creation Date:Fri Jul 17 18:25:22 PDT 1987
  827. XFontName NewCenturySchlbk-BoldItalic
  828. XEncodingScheme AdobeStandardEncoding
  829. XFullName New Century Schoolbook Bold Italic
  830. XFamilyName New Century Schoolbook
  831. XWeight Bold
  832. XItalicAngle -16.0
  833. XIsFixedPitch false
  834. XUnderlinePosition -102
  835. XUnderlineThickness 54
  836. XVersion 001.004
  837. XNotice Copyright (c) 1985, 1987 Adobe Systems Incorporated.  All rights reserved. New Century Schoolbook is a trademark of Linotype Company.
  838. XFontBBox -170 -220 1151 990
  839. XCapHeight 722
  840. XXHeight 477
  841. XDescender -205
  842. XAscender 737
  843. XStartCharMetrics 228
  844. XC 32 ; WX 287 ; N space ; B 0 0 0 0 ;
  845. XC 33 ; WX 333 ; N exclam ; B 3 -15 336 737 ;
  846. XC 34 ; WX 400 ; N quotedbl ; B 100 410 507 736 ;
  847. XC 35 ; WX 574 ; N numbersign ; B 41 0 533 705 ;
  848. XC 36 ; WX 574 ; N dollar ; B 3 -143 559 799 ;
  849. XC 37 ; WX 889 ; N percent ; B 51 -34 836 721 ;
  850. XC 38 ; WX 889 ; N ampersand ; B 31 -15 823 737 ;
  851. XC 39 ; WX 259 ; N quoteright ; B 70 389 301 739 ;
  852. XC 40 ; WX 407 ; N parenleft ; B 71 -123 452 740 ;
  853. XC 41 ; WX 407 ; N parenright ; B -70 -123 308 740 ;
  854. XC 42 ; WX 500 ; N asterisk ; B 32 268 472 704 ;
  855. XC 43 ; WX 606 ; N plus ; B 41 0 545 505 ;
  856. XC 44 ; WX 287 ; N comma ; B -48 -190 180 159 ;
  857. XC 45 ; WX 333 ; N hyphen ; B 10 178 272 297 ;
  858. XC 46 ; WX 287 ; N period ; B 12 -15 186 159 ;
  859. XC 47 ; WX 278 ; N slash ; B -25 -15 311 737 ;
  860. XC 48 ; WX 574 ; N zero ; B 21 -15 553 705 ;
  861. XC 49 ; WX 574 ; N one ; B 25 0 489 705 ;
  862. XC 50 ; WX 574 ; N two ; B -40 0 538 705 ;
  863. XC 51 ; WX 574 ; N three ; B -5 -15 538 705 ;
  864. XC 52 ; WX 574 ; N four ; B -13 0 544 705 ;
  865. XC 53 ; WX 574 ; N five ; B 0 -15 573 705 ;
  866. XC 54 ; WX 574 ; N six ; B 30 -15 573 705 ;
  867. XC 55 ; WX 574 ; N seven ; B 64 -15 593 705 ;
  868. XC 56 ; WX 574 ; N eight ; B 0 -15 551 705 ;
  869. XC 57 ; WX 574 ; N nine ; B 1 -15 544 705 ;
  870. XC 58 ; WX 287 ; N colon ; B -2 -15 257 477 ;
  871. XC 59 ; WX 287 ; N semicolon ; B -39 -190 257 477 ;
  872. XC 60 ; WX 606 ; N less ; B 14 -15 523 524 ;
  873. XC 61 ; WX 606 ; N equal ; B 41 109 545 402 ;
  874. XC 62 ; WX 606 ; N greater ; B 38 -15 547 524 ;
  875. XC 63 ; WX 481 ; N question ; B 79 -15 452 737 ;
  876. XC 64 ; WX 747 ; N at ; B 22 -15 722 737 ;
  877. XC 65 ; WX 741 ; N A ; B -75 0 716 737 ;
  878. XC 66 ; WX 759 ; N B ; B -50 0 720 722 ;
  879. XC 67 ; WX 759 ; N C ; B 35 -15 759 737 ;
  880. XC 68 ; WX 833 ; N D ; B -49 0 796 722 ;
  881. XC 69 ; WX 741 ; N E ; B -41 0 728 722 ;
  882. XC 70 ; WX 704 ; N F ; B -41 0 726 722 ;
  883. XC 71 ; WX 815 ; N G ; B 34 -15 802 737 ;
  884. XC 72 ; WX 870 ; N H ; B -41 0 912 722 ;
  885. XC 73 ; WX 444 ; N I ; B -41 0 486 722 ;
  886. XC 74 ; WX 667 ; N J ; B -9 -15 718 722 ;
  887. XC 75 ; WX 778 ; N K ; B -41 0 832 722 ;
  888. XC 76 ; WX 704 ; N L ; B -41 0 670 722 ;
  889. XC 77 ; WX 944 ; N M ; B -24 0 988 722 ;
  890. XC 78 ; WX 852 ; N N ; B -57 -16 912 722 ;
  891. XC 79 ; WX 833 ; N O ; B 36 -15 797 737 ;
  892. XC 80 ; WX 741 ; N P ; B -38 0 731 722 ;
  893. XC 81 ; WX 833 ; N Q ; B 35 -186 796 737 ;
  894. XC 82 ; WX 796 ; N R ; B -41 -15 751 722 ;
  895. XC 83 ; WX 685 ; N S ; B 1 -15 666 737 ;
  896. XC 84 ; WX 722 ; N T ; B 44 0 762 722 ;
  897. XC 85 ; WX 833 ; N U ; B 88 -15 895 722 ;
  898. XC 86 ; WX 741 ; N V ; B 32 -15 802 722 ;
  899. XC 87 ; WX 944 ; N W ; B 40 -15 994 722 ;
  900. XC 88 ; WX 741 ; N X ; B -72 0 811 722 ;
  901. XC 89 ; WX 704 ; N Y ; B 15 0 777 722 ;
  902. XC 90 ; WX 704 ; N Z ; B -29 0 715 722 ;
  903. XC 91 ; WX 407 ; N bracketleft ; B -31 -110 432 737 ;
  904. XC 92 ; WX 606 ; N backslash ; B 81 0 545 737 ;
  905. XC 93 ; WX 407 ; N bracketright ; B -49 -110 414 737 ;
  906. XC 94 ; WX 606 ; N asciicircum ; B 52 319 554 722 ;
  907. XC 95 ; WX 500 ; N underscore ; B 0 -129 500 -75 ;
  908. XC 96 ; WX 259 ; N quoteleft ; B 39 397 270 747 ;
  909. XC 97 ; WX 667 ; N a ; B 15 -15 646 477 ;
  910. XC 98 ; WX 611 ; N b ; B 28 -15 557 737 ;
  911. XC 99 ; WX 537 ; N c ; B 3 -15 487 477 ;
  912. XC 100 ; WX 667 ; N d ; B 0 -15 663 737 ;
  913. XC 101 ; WX 519 ; N e ; B -2 -15 478 477 ;
  914. XC 102 ; WX 389 ; N f ; B -48 -205 550 737 ; L i fi ; L l fl ;
  915. XC 103 ; WX 611 ; N g ; B -66 -205 602 529 ;
  916. XC 104 ; WX 685 ; N h ; B 0 -15 637 737 ;
  917. XC 105 ; WX 389 ; N i ; B 28 -15 343 737 ;
  918. XC 106 ; WX 370 ; N j ; B -170 -205 381 737 ;
  919. XC 107 ; WX 648 ; N k ; B -5 -15 584 737 ;
  920. XC 108 ; WX 389 ; N l ; B 26 -15 370 737 ;
  921. XC 109 ; WX 944 ; N m ; B 9 -15 920 477 ;
  922. XC 110 ; WX 685 ; N n ; B 3 -15 642 477 ;
  923. XC 111 ; WX 574 ; N o ; B 10 -15 540 477 ;
  924. XC 112 ; WX 648 ; N p ; B -118 -205 590 477 ;
  925. XC 113 ; WX 630 ; N q ; B 0 -205 587 477 ;
  926. XC 114 ; WX 519 ; N r ; B 3 0 524 486 ;
  927. XC 115 ; WX 481 ; N s ; B 2 -15 437 477 ;
  928. XC 116 ; WX 407 ; N t ; B 24 -15 404 650 ;
  929. XC 117 ; WX 685 ; N u ; B 38 -15 639 477 ;
  930. XC 118 ; WX 556 ; N v ; B 32 -15 500 477 ;
  931. XC 119 ; WX 833 ; N w ; B 22 -15 788 477 ;
  932. XC 120 ; WX 574 ; N x ; B -49 -15 571 477 ;
  933. XC 121 ; WX 519 ; N y ; B -66 -205 492 477 ;
  934. XC 122 ; WX 519 ; N z ; B -18 -15 472 477 ;
  935. XC 123 ; WX 407 ; N braceleft ; B 51 -115 401 738 ;
  936. XC 124 ; WX 606 ; N bar ; B 262 0 343 737 ;
  937. XC 125 ; WX 407 ; N braceright ; B -30 -115 322 738 ;
  938. XC 126 ; WX 606 ; N asciitilde ; B 51 158 555 353 ;
  939. XC 161 ; WX 333 ; N exclamdown ; B -39 -205 289 544 ;
  940. XC 162 ; WX 574 ; N cent ; B 30 -124 514 600 ;
  941. XC 163 ; WX 574 ; N sterling ; B -18 -15 566 705 ;
  942. XC 164 ; WX 167 ; N fraction ; B -166 -15 333 705 ;
  943. XC 165 ; WX 574 ; N yen ; B 23 0 635 705 ;
  944. XC 166 ; WX 574 ; N florin ; B -27 -205 588 737 ;
  945. XC 167 ; WX 500 ; N section ; B -40 -145 505 737 ;
  946. XC 168 ; WX 574 ; N currency ; B 40 110 546 612 ;
  947. XC 169 ; WX 287 ; N quotesingle ; B 100 409 269 735 ;
  948. XC 170 ; WX 481 ; N quotedblleft ; B 52 397 522 747 ;
  949. XC 171 ; WX 481 ; N guillemotleft ; B -35 68 427 409 ;
  950. XC 172 ; WX 278 ; N guilsinglleft ; B -35 68 224 409 ;
  951. XC 173 ; WX 278 ; N guilsinglright ; B -5 67 254 408 ;
  952. XC 174 ; WX 685 ; N fi ; B -70 -205 646 737 ;
  953. XC 175 ; WX 685 ; N fl ; B -70 -205 681 737 ;
  954. XC 177 ; WX 500 ; N endash ; B -18 189 518 286 ;
  955. XC 178 ; WX 500 ; N dagger ; B 50 -146 510 737 ;
  956. XC 179 ; WX 500 ; N daggerdbl ; B -48 -147 514 737 ;
  957. XC 180 ; WX 287 ; N periodcentered ; B 41 168 215 342 ;
  958. XC 182 ; WX 650 ; N paragraph ; B 67 0 661 737 ;
  959. XC 183 ; WX 606 ; N bullet ; B 109 200 446 537 ;
  960. XC 184 ; WX 259 ; N quotesinglbase ; B -43 -191 188 159 ;
  961. XC 185 ; WX 481 ; N quotedblbase ; B -70 -191 402 159 ;
  962. XC 186 ; WX 481 ; N quotedblright ; B 61 389 533 739 ;
  963. XC 187 ; WX 481 ; N guillemotright ; B -5 67 457 408 ;
  964. XC 188 ; WX 1000 ; N ellipsis ; B 20 -15 860 159 ;
  965. XC 189 ; WX 1167 ; N perthousand ; B 26 -34 1151 721 ;
  966. XC 191 ; WX 481 ; N questiondown ; B 1 -205 368 544 ;
  967. XC 193 ; WX 333 ; N grave ; B 74 535 294 719 ;
  968. XC 194 ; WX 333 ; N acute ; B 123 535 371 719 ;
  969. XC 195 ; WX 333 ; N circumflex ; B 23 535 365 709 ;
  970. XC 196 ; WX 333 ; N tilde ; B 34 557 404 683 ;
  971. XC 197 ; WX 333 ; N macron ; B 32 573 387 649 ;
  972. XC 198 ; WX 333 ; N breve ; B 67 534 390 698 ;
  973. XC 199 ; WX 333 ; N dotaccent ; B 145 542 288 685 ;
  974. XC 200 ; WX 333 ; N dieresis ; B 34 542 392 685 ;
  975. XC 202 ; WX 333 ; N ring ; B 217 530 432 745 ;
  976. XC 203 ; WX 333 ; N cedilla ; B -87 -220 157 3 ;
  977. XC 205 ; WX 333 ; N hungarumlaut ; B 23 535 472 719 ;
  978. XC 206 ; WX 333 ; N ogonek ; B 68 -155 245 -10 ;
  979. XC 207 ; WX 333 ; N caron ; B 60 535 403 709 ;
  980. XC 208 ; WX 1000 ; N emdash ; B -18 189 1018 286 ;
  981. XC 225 ; WX 889 ; N AE ; B -81 0 906 722 ;
  982. XC 227 ; WX 412 ; N ordfeminine ; B 29 327 449 737 ;
  983. XC 232 ; WX 704 ; N Lslash ; B -41 0 670 722 ;
  984. XC 233 ; WX 833 ; N Oslash ; B 17 -82 797 775 ;
  985. XC 234 ; WX 963 ; N OE ; B 19 0 980 722 ;
  986. XC 235 ; WX 356 ; N ordmasculine ; B 29 327 383 737 ;
  987. XC 241 ; WX 815 ; N ae ; B -19 -15 774 477 ;
  988. XC 245 ; WX 389 ; N dotlessi ; B 38 -15 353 477 ;
  989. XC 248 ; WX 389 ; N lslash ; B 26 -15 397 737 ;
  990. XC 249 ; WX 574 ; N oslash ; B 10 -126 540 578 ;
  991. XC 250 ; WX 852 ; N oe ; B -5 -15 810 477 ;
  992. XC 251 ; WX 574 ; N germandbls ; B -66 -205 523 737 ;
  993. XC -1 ; WX 741 ; N Aacute ; B -75 0 716 964 ;
  994. XC -1 ; WX 741 ; N Acircumflex ; B -75 0 716 954 ;
  995. XC -1 ; WX 741 ; N Adieresis ; B -75 0 716 930 ;
  996. XC -1 ; WX 741 ; N Agrave ; B -75 0 716 964 ;
  997. XC -1 ; WX 741 ; N Aring ; B -75 0 716 990 ;
  998. XC -1 ; WX 741 ; N Atilde ; B -75 0 716 928 ;
  999. XC -1 ; WX 759 ; N Ccedilla ; B 35 -220 759 737 ;
  1000. XC -1 ; WX 741 ; N Eacute ; B -41 0 728 964 ;
  1001. XC -1 ; WX 741 ; N Ecircumflex ; B -41 0 728 954 ;
  1002. XC -1 ; WX 741 ; N Edieresis ; B -41 0 728 930 ;
  1003. XC -1 ; WX 741 ; N Egrave ; B -41 0 728 964 ;
  1004. XC -1 ; WX 833 ; N Eth ; B -49 0 796 722 ;
  1005. XC -1 ; WX 444 ; N Iacute ; B -41 0 486 964 ;
  1006. XC -1 ; WX 444 ; N Icircumflex ; B -41 0 486 954 ;
  1007. XC -1 ; WX 444 ; N Idieresis ; B -41 0 498 930 ;
  1008. XC -1 ; WX 444 ; N Igrave ; B -41 0 486 964 ;
  1009. XC -1 ; WX 852 ; N Ntilde ; B -57 -16 912 928 ;
  1010. XC -1 ; WX 833 ; N Oacute ; B 36 -15 797 964 ;
  1011. XC -1 ; WX 833 ; N Ocircumflex ; B 36 -15 797 954 ;
  1012. XC -1 ; WX 833 ; N Odieresis ; B 36 -15 797 930 ;
  1013. XC -1 ; WX 833 ; N Ograve ; B 36 -15 797 964 ;
  1014. XC -1 ; WX 833 ; N Otilde ; B 36 -15 797 928 ;
  1015. XC -1 ; WX 685 ; N Scaron ; B 1 -15 666 954 ;
  1016. XC -1 ; WX 741 ; N Thorn ; B -38 0 690 722 ;
  1017. XC -1 ; WX 833 ; N Uacute ; B 88 -15 895 964 ;
  1018. XC -1 ; WX 833 ; N Ucircumflex ; B 88 -15 895 954 ;
  1019. XC -1 ; WX 833 ; N Udieresis ; B 88 -15 895 930 ;
  1020. XC -1 ; WX 833 ; N Ugrave ; B 88 -15 895 964 ;
  1021. XC -1 ; WX 704 ; N Yacute ; B 15 0 777 964 ;
  1022. XC -1 ; WX 704 ; N Ydieresis ; B 15 0 777 930 ;
  1023. XC -1 ; WX 704 ; N Zcaron ; B -29 0 715 954 ;
  1024. XC -1 ; WX 667 ; N aacute ; B 15 -15 646 719 ;
  1025. XC -1 ; WX 667 ; N acircumflex ; B 15 -15 646 709 ;
  1026. XC -1 ; WX 667 ; N adieresis ; B 15 -15 646 685 ;
  1027. XC -1 ; WX 667 ; N agrave ; B 15 -15 646 719 ;
  1028. XC -1 ; WX 667 ; N aring ; B 15 -15 646 745 ;
  1029. XC -1 ; WX 667 ; N atilde ; B 15 -15 646 683 ;
  1030. XC -1 ; WX 606 ; N brokenbar ; B 262 0 343 737 ;
  1031. XC -1 ; WX 537 ; N ccedilla ; B 3 -220 487 477 ;
  1032. XC -1 ; WX 747 ; N copyright ; B 23 -15 723 737 ;
  1033. XC -1 ; WX 400 ; N degree ; B 70 405 370 705 ;
  1034. XC -1 ; WX 606 ; N divide ; B 41 0 545 505 ;
  1035. XC -1 ; WX 519 ; N eacute ; B -2 -15 478 719 ;
  1036. XC -1 ; WX 519 ; N ecircumflex ; B -2 -15 478 709 ;
  1037. XC -1 ; WX 519 ; N edieresis ; B -2 -15 495 685 ;
  1038. XC -1 ; WX 519 ; N egrave ; B -2 -15 478 719 ;
  1039. XC -1 ; WX 574 ; N eth ; B 10 -15 540 737 ;
  1040. XC -1 ; WX 389 ; N iacute ; B 38 -15 399 719 ;
  1041. XC -1 ; WX 389 ; N icircumflex ; B 38 -15 383 709 ;
  1042. XC -1 ; WX 389 ; N idieresis ; B 38 -15 410 685 ;
  1043. XC -1 ; WX 389 ; N igrave ; B 38 -15 353 719 ;
  1044. XC -1 ; WX 606 ; N logicalnot ; B 41 120 545 402 ;
  1045. XC -1 ; WX 606 ; N minus ; B 41 206 545 304 ;
  1046. XC -1 ; WX 685 ; N mu ; B -90 -205 639 477 ;
  1047. XC -1 ; WX 606 ; N multiply ; B 41 0 547 506 ;
  1048. XC -1 ; WX 685 ; N ntilde ; B 3 -15 642 683 ;
  1049. XC -1 ; WX 574 ; N oacute ; B 10 -15 540 719 ;
  1050. XC -1 ; WX 574 ; N ocircumflex ; B 10 -15 540 709 ;
  1051. XC -1 ; WX 574 ; N odieresis ; B 10 -15 540 685 ;
  1052. XC -1 ; WX 574 ; N ograve ; B 10 -15 540 719 ;
  1053. XC -1 ; WX 861 ; N onehalf ; B 21 -15 857 705 ;
  1054. XC -1 ; WX 861 ; N onequarter ; B 21 -15 826 705 ;
  1055. XC -1 ; WX 344 ; N onesuperior ; B 21 282 323 705 ;
  1056. XC -1 ; WX 574 ; N otilde ; B 10 -15 540 683 ;
  1057. XC -1 ; WX 606 ; N plusminus ; B 41 0 545 505 ;
  1058. XC -1 ; WX 747 ; N registered ; B 23 -15 723 737 ;
  1059. XC -1 ; WX 481 ; N scaron ; B 2 -15 477 709 ;
  1060. XC -1 ; WX 648 ; N thorn ; B -118 -205 590 650 ;
  1061. XC -1 ; WX 861 ; N threequarters ; B -4 -15 826 705 ;
  1062. XC -1 ; WX 344 ; N threesuperior ; B -4 273 348 705 ;
  1063. XC -1 ; WX 950 ; N trademark ; B 42 318 982 722 ;
  1064. XC -1 ; WX 344 ; N twosuperior ; B -16 282 360 705 ;
  1065. XC -1 ; WX 685 ; N uacute ; B 38 -15 639 719 ;
  1066. XC -1 ; WX 685 ; N ucircumflex ; B 38 -15 639 709 ;
  1067. XC -1 ; WX 685 ; N udieresis ; B 38 -15 639 685 ;
  1068. XC -1 ; WX 685 ; N ugrave ; B 38 -15 639 719 ;
  1069. XC -1 ; WX 519 ; N yacute ; B -66 -205 492 719 ;
  1070. XC -1 ; WX 519 ; N ydieresis ; B -66 -205 492 685 ;
  1071. XC -1 ; WX 519 ; N zcaron ; B -18 -15 496 709 ;
  1072. XEndCharMetrics
  1073. XStartKernData
  1074. XStartKernPairs 102
  1075. X
  1076. XKPX A y -50
  1077. XKPX A w -20
  1078. XKPX A v -20
  1079. XKPX A space -18
  1080. XKPX A quoteright -74
  1081. XKPX A Y -74
  1082. XKPX A W -92
  1083. XKPX A V -111
  1084. XKPX A T -74
  1085. X
  1086. XKPX F period -129
  1087. XKPX F f -18
  1088. XKPX F comma -129
  1089. XKPX F A -74
  1090. X
  1091. XKPX L y -55
  1092. XKPX L space -18
  1093. XKPX L quoteright -55
  1094. XKPX L Y -55
  1095. XKPX L W -55
  1096. XKPX L V -74
  1097. XKPX L T -55
  1098. X
  1099. XKPX P space -18
  1100. XKPX P period -129
  1101. XKPX P comma -129
  1102. XKPX P A -92
  1103. X
  1104. XKPX R y -50
  1105. XKPX R Y -20
  1106. XKPX R W -20
  1107. XKPX R V -20
  1108. XKPX R T -20
  1109. X
  1110. XKPX T y -89
  1111. XKPX T w -89
  1112. XKPX T u -89
  1113. XKPX T semicolon -72
  1114. XKPX T s -89
  1115. XKPX T r -89
  1116. XKPX T period -111
  1117. XKPX T o -109
  1118. XKPX T i -71
  1119. XKPX T hyphen -129
  1120. XKPX T e -109
  1121. XKPX T comma -111
  1122. XKPX T colon -62
  1123. XKPX T c -89
  1124. XKPX T a -74
  1125. XKPX T A -50
  1126. X
  1127. XKPX V y -89
  1128. XKPX V u -89
  1129. XKPX V semicolon -74
  1130. XKPX V r -109
  1131. XKPX V period -111
  1132. XKPX V o -129
  1133. XKPX V i -72
  1134. XKPX V hyphen -74
  1135. XKPX V e -129
  1136. XKPX V comma -111
  1137. XKPX V colon -74
  1138. XKPX V a -129
  1139. XKPX V A -129
  1140. X
  1141. XKPX W y -74
  1142. XKPX W u -74
  1143. XKPX W semicolon -37
  1144. XKPX W r -74
  1145. XKPX W period -55
  1146. XKPX W o -74
  1147. XKPX W i -74
  1148. XKPX W hyphen -37
  1149. XKPX W e -74
  1150. XKPX W comma -55
  1151. XKPX W colon -37
  1152. XKPX W a -74
  1153. XKPX W A -89
  1154. X
  1155. XKPX Y v -129
  1156. XKPX Y u -129
  1157. XKPX Y semicolon -111
  1158. XKPX Y q -129
  1159. XKPX Y period -129
  1160. XKPX Y p -129
  1161. XKPX Y o -129
  1162. XKPX Y i -90
  1163. XKPX Y hyphen -129
  1164. XKPX Y e -129
  1165. XKPX Y comma -129
  1166. XKPX Y colon -111
  1167. XKPX Y a -129
  1168. XKPX Y A -111
  1169. X
  1170. XKPX f quoteright 74
  1171. X
  1172. XKPX one one -74
  1173. X
  1174. XKPX quoteleft quoteleft -18
  1175. X
  1176. XKPX quoteright t -37
  1177. XKPX quoteright space -55
  1178. XKPX quoteright s -37
  1179. XKPX quoteright quoteright -18
  1180. X
  1181. XKPX r quoteright 55
  1182. XKPX r period -129
  1183. XKPX r hyphen 0
  1184. XKPX r comma -129
  1185. X
  1186. XKPX v period -37
  1187. XKPX v comma -37
  1188. X
  1189. XKPX w period -37
  1190. XKPX w comma -37
  1191. X
  1192. XKPX y period -55
  1193. XKPX y comma -55
  1194. XEndKernPairs
  1195. XEndKernData
  1196. XStartComposites 58
  1197. XCC Zcaron 2 ; PCC Z 0 0 ; PCC caron 205 245 ;
  1198. XCC zcaron 2 ; PCC z 0 0 ; PCC caron 93 0 ;
  1199. XCC Scaron 2 ; PCC S 0 0 ; PCC caron 196 245 ;
  1200. XCC scaron 2 ; PCC s 0 0 ; PCC caron 74 0 ;
  1201. XCC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 293 0 ;
  1202. XCC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 142 0 ;
  1203. XCC Yacute 2 ; PCC Y 0 0 ; PCC acute 185 245 ;
  1204. XCC yacute 2 ; PCC y 0 0 ; PCC acute 93 0 ;
  1205. XCC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 215 245 ;
  1206. XCC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ;
  1207. XCC Uacute 2 ; PCC U 0 0 ; PCC acute 290 245 ;
  1208. XCC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 310 245 ;
  1209. XCC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 320 245 ;
  1210. XCC Ugrave 2 ; PCC U 0 0 ; PCC grave 280 245 ;
  1211. XCC uacute 2 ; PCC u 0 0 ; PCC acute 176 0 ;
  1212. XCC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 176 0 ;
  1213. XCC udieresis 2 ; PCC u 0 0 ; PCC dieresis 166 0 ;
  1214. XCC ugrave 2 ; PCC u 0 0 ; PCC grave 176 0 ;
  1215. XCC Iacute 2 ; PCC I 0 0 ; PCC acute 75 245 ;
  1216. XCC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 95 245 ;
  1217. XCC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 105 245 ;
  1218. XCC Igrave 2 ; PCC I 0 0 ; PCC grave 85 245 ;
  1219. XCC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 28 0 ;
  1220. XCC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 18 0 ;
  1221. XCC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 18 0 ;
  1222. XCC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 28 0 ;
  1223. XCC Eacute 2 ; PCC E 0 0 ; PCC acute 234 245 ;
  1224. XCC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 244 245 ;
  1225. XCC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 244 245 ;
  1226. XCC Egrave 2 ; PCC E 0 0 ; PCC grave 234 245 ;
  1227. XCC eacute 2 ; PCC e 0 0 ; PCC acute 93 0 ;
  1228. XCC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 103 0 ;
  1229. XCC edieresis 2 ; PCC e 0 0 ; PCC dieresis 103 0 ;
  1230. XCC egrave 2 ; PCC e 0 0 ; PCC grave 103 0 ;
  1231. XCC Aacute 2 ; PCC A 0 0 ; PCC acute 204 245 ;
  1232. XCC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 244 245 ;
  1233. XCC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 224 245 ;
  1234. XCC Agrave 2 ; PCC A 0 0 ; PCC grave 234 245 ;
  1235. XCC aacute 2 ; PCC a 0 0 ; PCC acute 167 0 ;
  1236. XCC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 167 0 ;
  1237. XCC adieresis 2 ; PCC a 0 0 ; PCC dieresis 157 0 ;
  1238. XCC agrave 2 ; PCC a 0 0 ; PCC grave 167 0 ;
  1239. XCC Oacute 2 ; PCC O 0 0 ; PCC acute 270 245 ;
  1240. XCC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 290 245 ;
  1241. XCC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 300 245 ;
  1242. XCC Ograve 2 ; PCC O 0 0 ; PCC grave 280 245 ;
  1243. XCC oacute 2 ; PCC o 0 0 ; PCC acute 120 0 ;
  1244. XCC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 110 0 ;
  1245. XCC odieresis 2 ; PCC o 0 0 ; PCC dieresis 110 0 ;
  1246. XCC ograve 2 ; PCC o 0 0 ; PCC grave 120 0 ;
  1247. XCC Atilde 2 ; PCC A 0 0 ; PCC tilde 244 245 ;
  1248. XCC atilde 2 ; PCC a 0 0 ; PCC tilde 167 0 ;
  1249. XCC Ntilde 2 ; PCC N 0 0 ; PCC tilde 299 245 ;
  1250. XCC ntilde 2 ; PCC n 0 0 ; PCC tilde 156 0 ;
  1251. XCC Otilde 2 ; PCC O 0 0 ; PCC tilde 270 245 ;
  1252. XCC otilde 2 ; PCC o 0 0 ; PCC tilde 120 0 ;
  1253. XCC Aring 2 ; PCC A 0 0 ; PCC ring 124 245 ;
  1254. XCC aring 2 ; PCC a 0 0 ; PCC ring 57 0 ;
  1255. XEndComposites
  1256. XEndFontMetrics
  1257. END_OF_FILE
  1258.   if test 15704 -ne `wc -c <'font/NewCenSchBolIta.AFM'`; then
  1259.     echo shar: \"'font/NewCenSchBolIta.AFM'\" unpacked with wrong size!
  1260.   fi
  1261.   # end of 'font/NewCenSchBolIta.AFM'
  1262. fi
  1263. if test -f 'include/fig' -a "${1}" != "-c" ; then 
  1264.   echo shar: Will not clobber existing file \"'include/fig'\"
  1265. else
  1266.   echo shar: Extracting \"'include/fig'\" \(16471 characters\)
  1267.   sed "s/^X//" >'include/fig' <<'END_OF_FILE'
  1268. X
  1269. X###############################################################################
  1270. X#                                                                             #
  1271. X#  Lout @Fig package for drawing figures (Version 2.0)                        #
  1272. X#                                                                             #
  1273. X#  Version 1.0 by Jeffrey H. Kingston, October 1991.                          #
  1274. X#  Version 2.0 by Jeffrey H. Kingston, 22 December 1992.                      #
  1275. X#  Symbol names changed by JHK 5 March 1993 to avoid clashes with EPS files.  #
  1276. X#                                                                             #
  1277. X#  See "Fig - a Lout package for drawing figures" for user information.       #
  1278. X#                                                                             #
  1279. X###############################################################################
  1280. X
  1281. X@SysPrependGraphic { "fig_prepend" }
  1282. X
  1283. Xexport in cm pt em sp vs ft dg
  1284. X       "<<" "**" "++" "--" @Max @Min
  1285. X       @Distance @XDistance @YDistance @Angle
  1286. X       @Prev "::" @Label @BaseOf @MarkOf @ShowLabels
  1287. X       @Colour @Color @RGBColour @RGBColor @HSBColour @HSBColor
  1288. X       @Figure @Frame @Box @Square @Diamond @Polygon @Ellipse
  1289. X       @Circle @HLine @VLine @Line @HArrow @VArrow @Arrow @Arc
  1290. X
  1291. Xdef @Fig                  
  1292. X    named maxlabels  { 200     }
  1293. X    named linestyle  { solid   }
  1294. X    named linewidth  { 0.5 pt  }
  1295. X    named linecap    { round   }
  1296. X    named dashlength { 0.15 cm }
  1297. X    named paint      { nopaint }
  1298. X    named margin     { 0.4c    }
  1299. X    named arrow      { noarrow }
  1300. X    named headstyle  { open    }
  1301. X    named headwidth  { 0.05 cm }
  1302. X    named headlength { 0.15 cm }
  1303. X    body @Body
  1304. X@Begin
  1305. X
  1306. X    # Like @Graphic, but affects the graphics state of right parameter
  1307. X    def @InnerGraphic
  1308. X    left ps
  1309. X    right x
  1310. X    {
  1311. X    { ps gsave // grestore } @Graphic x
  1312. X    }
  1313. X
  1314. X    def in precedence 39 left x { x "in" }
  1315. X    def cm precedence 39 left x { x "cm" }
  1316. X    def pt precedence 39 left x { x "pt" }
  1317. X    def em precedence 39 left x { x "em" }
  1318. X    def sp precedence 39 left x { x "sp" }
  1319. X    def vs precedence 39 left x { x "vs" }
  1320. X    def ft precedence 39 left x { x "ft" }
  1321. X    def dg precedence 39 left x { x "dg" }
  1322. X
  1323. X    def "<<"
  1324. X    precedence 38
  1325. X    left length
  1326. X    right angle
  1327. X    {
  1328. X    0 0 length angle "lfigatangle"
  1329. X    }
  1330. X
  1331. X    def "**"
  1332. X    precedence 37
  1333. X    left point
  1334. X    right length
  1335. X    {
  1336. X    point length "lfigpmul"
  1337. X    }
  1338. X
  1339. X    def "++"
  1340. X    precedence 36
  1341. X    associativity left
  1342. X    left x
  1343. X    right y
  1344. X    {
  1345. X    x y "lfigpadd"
  1346. X    }
  1347. X
  1348. X    def "--"
  1349. X    precedence 36
  1350. X    associativity left
  1351. X    left x
  1352. X    right y
  1353. X    {
  1354. X    y x "lfigpsub"
  1355. X    }
  1356. X
  1357. X    def @Max
  1358. X    precedence 36
  1359. X    left x
  1360. X    right y
  1361. X    {
  1362. X    x y "lfigpmax"
  1363. X    }
  1364. X
  1365. X    def @Min
  1366. X    precedence 36
  1367. X    left x
  1368. X    right y
  1369. X    {
  1370. X    x y "lfigpmin"
  1371. X    }
  1372. X
  1373. X    def @Distance
  1374. X    precedence 35
  1375. X    left x
  1376. X    right y
  1377. X    {
  1378. X    x y "lfigdistance"
  1379. X    }
  1380. X
  1381. X    def @XDistance
  1382. X    precedence 35
  1383. X    left x
  1384. X    right y
  1385. X    {
  1386. X    x y "lfigxdistance"
  1387. X    }
  1388. X
  1389. X    def @YDistance
  1390. X    precedence 35
  1391. X    left x
  1392. X    right y
  1393. X    {
  1394. X    x y "lfigydistance"
  1395. X    }
  1396. X
  1397. X    def @Angle
  1398. X    precedence 35
  1399. X    left x
  1400. X    right y
  1401. X    {
  1402. X    x y "lfigangle"
  1403. X    }
  1404. X
  1405. X    def @Prev
  1406. X    {
  1407. X    "lfigprevious"
  1408. X    }
  1409. X
  1410. X    def "::"
  1411. X    precedence 33
  1412. X    left name
  1413. X    right x
  1414. X    {
  1415. X    { "currentdict end" maxlabels "dict begin begin"
  1416. X      // "("name") lfigpromotelabels" } @Graphic x
  1417. X    }
  1418. X
  1419. X    def @Label
  1420. X    right name
  1421. X    {
  1422. X    "/"name "lfigpointdef"
  1423. X    }
  1424. X
  1425. X    def @MarkOf
  1426. X    precedence 32
  1427. X    left point
  1428. X    right x
  1429. X    {
  1430. X    { point "translate" } @InnerGraphic
  1431. X    {
  1432. X        /0io |0io @OneCol @OneRow x |0io /0io
  1433. X    }
  1434. X    }
  1435. X
  1436. X    def @BaseOf
  1437. X    precedence 32
  1438. X    left point
  1439. X    right x
  1440. X    {
  1441. X    { point "translate" } @InnerGraphic
  1442. X    {
  1443. X        /0io |0io @OneRow @OneCol {
  1444. X        | @OneCol @OneRow x ^/
  1445. X        } |0io /0io
  1446. X    }
  1447. X    }
  1448. X
  1449. X    def @ShowLabels
  1450. X    {
  1451. X    "lfigshowlabels" @Graphic
  1452. X    }
  1453. X
  1454. X    def @Colour
  1455. X    left col
  1456. X    right x
  1457. X    {
  1458. X    {
  1459. X        col @Case
  1460. X        {
  1461. X        black @Yield "0.00 0.0 0.0"
  1462. X        grey  @Yield "0.00 0.0 0.9"
  1463. X        white @Yield "0.00 0.0 1.0"
  1464. X        red   @Yield "0.00 1.0 1.0"
  1465. X        green @Yield "0.33 1.0 1.0"
  1466. X        blue  @Yield "0.66 1.0 1.0"
  1467. X        } sethsbcolor
  1468. X    } @InnerGraphic x
  1469. X    }
  1470. X
  1471. X    def @Color
  1472. X    left col
  1473. X    right x
  1474. X    {
  1475. X    col @Colour x
  1476. X    }
  1477. X
  1478. X    def @RGBColour
  1479. X    left col
  1480. X    right x
  1481. X    {
  1482. X    { col setrgbcolor } @InnerGraphic x
  1483. X    }
  1484. X
  1485. X    def @RGBColor
  1486. X    left col
  1487. X    right x
  1488. X    {
  1489. X    col @RGBColour x
  1490. X    }
  1491. X
  1492. X    def @HSBColour
  1493. X    left col
  1494. X    right x
  1495. X    {
  1496. X    { col sethsbcolor } @InnerGraphic x
  1497. X    }
  1498. X
  1499. X    def @HSBColor
  1500. X    left col
  1501. X    right x
  1502. X    {
  1503. X    col @HSBColour x
  1504. X    }
  1505. X
  1506. X    def @Figure
  1507. X    named shape      {            }
  1508. X    named linestyle  { linestyle  }
  1509. X    named linewidth  { linewidth  }
  1510. X    named linecap    { linecap    }
  1511. X    named dashlength { dashlength }
  1512. X    named arrow      { arrow      }
  1513. X    named headstyle  { headstyle  }
  1514. X    named headwidth  { headwidth  }
  1515. X    named headlength { headlength }
  1516. X    named paint      { paint      }
  1517. X    named margin     { 0c         }
  1518. X    right x
  1519. X    {
  1520. X    @HContract @VContract
  1521. X    {
  1522. X        #fill the shape
  1523. X        paint @Case
  1524. X        {
  1525. X        nopaint @Yield {}
  1526. X
  1527. X        { white light grey gray dark black } @Yield
  1528. X        { "/lfig"paint "[" shape "] gsave lfigpaintpath grestore" }
  1529. X        }
  1530. X
  1531. X        # stroke the path and add any arrowheads
  1532. X        linestyle @Case
  1533. X        {
  1534. X        { solid dashed cdashed dotted noline } @Yield
  1535. X        {
  1536. X            linewidth "setlinewidth" "lfig"linecap "setlinecap"
  1537. X            dashlength "/lfig"linestyle "[" shape "] lfigdopath"
  1538. X            arrow @Case
  1539. X            {
  1540. X            noarrow @Yield { pop pop }
  1541. X            { forward back both } @Yield
  1542. X            {  dashlength "/lfig"linestyle "/"lfigblack
  1543. X               headstyle @Case
  1544. X               { { open halfopen closed } @Yield "lfig"headstyle }
  1545. X               headlength headwidth "lfig"arrow
  1546. X            }
  1547. X            }
  1548. X        }
  1549. X        }
  1550. X    }
  1551. X    @Graphic
  1552. X    {
  1553. X        ^/margin ^|margin @OneCol @OneRow x |margin
  1554. X         /margin
  1555. X    }
  1556. X    }
  1557. X
  1558. X    def @Frame
  1559. X    right x
  1560. X    {
  1561. X    @Figure
  1562. X        shape {xsize 0 @Label X 0 ysize @Label Y}
  1563. X    { x }
  1564. X    }
  1565. X
  1566. X    def @Box
  1567. X    named linestyle  { linestyle  }
  1568. X    named linewidth  { linewidth  }
  1569. X    named linecap    { linecap    }
  1570. X    named dashlength { dashlength }
  1571. X    named paint      { paint      }
  1572. X    named margin     { margin     }
  1573. X    right x
  1574. X    {
  1575. X    @Figure
  1576. X        shape {
  1577. X        # 0     0      @Label SW
  1578. X        # xsize 0      @Label SE
  1579. X        # xsize ysize  @Label NE
  1580. X        # 0     ysize  @Label NW
  1581. X        # SE ** 0.5    @Label S
  1582. X        # NW ** 0.5    @Label W
  1583. X        # W ++ SE      @Label E
  1584. X        # S ++ NW      @Label N
  1585. X        # NE ** 0.5    @Label CTR
  1586. X        # SW SE NE NW SW
  1587. X        lfigbox
  1588. X        }
  1589. X        linestyle  { linestyle }
  1590. X        linewidth  { linewidth  }
  1591. X        linecap    { linecap    }
  1592. X        dashlength { dashlength }
  1593. X        paint      { paint      }
  1594. X        margin     { margin     }
  1595. X    x
  1596. X    }
  1597. X
  1598. X    def @Square
  1599. X    named linestyle  { linestyle  }
  1600. X    named linewidth  { linewidth  }
  1601. X    named linecap    { linecap    }
  1602. X    named dashlength { dashlength }
  1603. X    named paint      { paint      }
  1604. X    named margin     { margin     }
  1605. X    right x
  1606. X    {
  1607. X    @Figure
  1608. X        shape {
  1609. X        # {xsize ysize} ** 0.5                           @Label CTR
  1610. X        # CTR ++ {{xsize xsize} @Max {ysize ysize}}**0.5 @Label NE
  1611. X        # CTR ++ { {CTR @Distance NE} << 135 }           @Label NW
  1612. X        # CTR ++ { {CTR @Distance NE} << 225 }           @Label SW
  1613. X        # CTR ++ { {CTR @Distance NE} << 315 }           @Label SE
  1614. X        # SW ** 0.5 ++ SE ** 0.5                         @Label S
  1615. X        # NW ** 0.5 ++ NE ** 0.5                         @Label N
  1616. X        # SW ** 0.5 ++ NW ** 0.5                         @Label W
  1617. X        # SE ** 0.5 ++ NE ** 0.5                         @Label E
  1618. X        # SW SE NE NW SW
  1619. X        lfigsquare
  1620. X        }
  1621. X        linestyle  { linestyle  }
  1622. X        linewidth  { linewidth  }
  1623. X        linecap    { linecap    }
  1624. X        dashlength { dashlength }
  1625. X        paint      { paint      }
  1626. X        margin     { margin     }
  1627. X    x
  1628. X    }
  1629. X
  1630. X    def @Diamond
  1631. X    named linestyle  { linestyle  }
  1632. X    named linewidth  { linewidth  }
  1633. X    named linecap    { linecap    }
  1634. X    named dashlength { dashlength }
  1635. X    named paint      { paint      }
  1636. X    named margin     { margin     }
  1637. X    right x
  1638. X    {
  1639. X    @Figure
  1640. X        shape {
  1641. X        # {xsize 0} ** 0.5  @Label S
  1642. X        # {0 ysize} ** 0.5  @Label W
  1643. X        # S ++ W            @Label CTR
  1644. X        # CTR ++ W          @Label N
  1645. X        # CTR ++ S          @Label E
  1646. X        # S E N W S
  1647. X        lfigdiamond
  1648. X        }
  1649. X        linestyle  { linestyle  }
  1650. X        linewidth  { linewidth  }
  1651. X        linecap    { linecap    }
  1652. X        dashlength { dashlength }
  1653. X        paint      { paint      }
  1654. X        margin     { margin     }
  1655. X    x
  1656. X    }
  1657. X
  1658. X    def @Polygon
  1659. X    named linestyle  { linestyle  }
  1660. X    named linewidth  { linewidth  }
  1661. X    named linecap    { linecap    }
  1662. X    named dashlength { dashlength }
  1663. X    named paint      { paint      }
  1664. X    named margin     { margin     }
  1665. X    named sides      { 3          }
  1666. X    named angle      { "dup 180 exch div" }
  1667. X    right x
  1668. X    {
  1669. X    @Figure
  1670. X        shape      { sides angle lfigpolygon }
  1671. X        linestyle  { linestyle  }
  1672. X        linewidth  { linewidth  }
  1673. X        linecap    { linecap    }
  1674. X        dashlength { dashlength }
  1675. X        paint      { paint      }
  1676. X        margin     { margin     }
  1677. X    x
  1678. X    }
  1679. X
  1680. X    def @Ellipse
  1681. X    named linestyle  { linestyle  }
  1682. X    named linewidth  { linewidth  }
  1683. X    named linecap    { linecap    }
  1684. X    named dashlength { dashlength }
  1685. X    named paint      { paint      }
  1686. X    named margin     { margin     }
  1687. X    right x
  1688. X    {
  1689. X    @Figure
  1690. X        shape {
  1691. X        # {xsize 0} ** 0.5  @Label S
  1692. X        # {0 ysize} ** 0.5  @Label W
  1693. X        # S ++ W            @Label CTR
  1694. X        # CTR ++ W          @Label N
  1695. X        # CTR ++ S          @Label E
  1696. X        # CTR ++ {xsize 0} ** 0.3536 ++ {0 ysize} ** 0.3536  @Label NE
  1697. X        # CTR ++ {xsize 0} ** 0.3536 -- {0 ysize} ** 0.3536  @Label SE
  1698. X        # CTR -- {xsize 0} ** 0.3536 ++ {0 ysize} ** 0.3536  @Label NW
  1699. X        # CTR -- {xsize 0} ** 0.3536 -- {0 ysize} ** 0.3536  @Label SW
  1700. X        # S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
  1701. X        lfigellipse
  1702. X        }
  1703. X        linestyle  { linestyle  }
  1704. X        linewidth  { linewidth  }
  1705. X        linecap    { linecap    }
  1706. X        dashlength { dashlength }
  1707. X        paint      { paint      }
  1708. X        margin     { margin     }
  1709. X    x
  1710. X    }
  1711. X
  1712. X    def @Circle
  1713. X    named linestyle  { linestyle  }
  1714. X    named linewidth  { linewidth  }
  1715. X    named linecap    { linecap    }
  1716. X    named dashlength { dashlength }
  1717. X    named paint      { paint      }
  1718. X    named margin     { margin     }
  1719. X    right x
  1720. X    {
  1721. X    @Figure
  1722. X        shape {
  1723. X        # {xsize ysize} **0.5                    @Label CTR
  1724. X        # CTR ++ {{xsize 0} @Max {ysize 0}}**0.5 @Label E
  1725. X        # CTR ++ { {CTR @Distance E} << 45  }    @Label NE
  1726. X        # CTR ++ { {CTR @Distance E} << 90  }    @Label N
  1727. X        # CTR ++ { {CTR @Distance E} << 135 }    @Label NW
  1728. X        # CTR ++ { {CTR @Distance E} << 180 }    @Label W
  1729. X        # CTR ++ { {CTR @Distance E} << 225 }    @Label SW
  1730. X        # CTR ++ { {CTR @Distance E} << 270 }    @Label S
  1731. X        # CTR ++ { {CTR @Distance E} << 315 }    @Label SE
  1732. X        # S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
  1733. X        lfigcircle
  1734. X        }
  1735. X        linestyle  { linestyle  }
  1736. X        linewidth  { linewidth  }
  1737. X        linecap    { linecap    }
  1738. X        dashlength { dashlength }
  1739. X        paint      { paint      }
  1740. X        margin     { margin     }
  1741. X    x
  1742. X    }
  1743. X
  1744. X    def @HLine
  1745. X    named linestyle  { linestyle  }
  1746. X    named linewidth  { linewidth  }
  1747. X    named linecap    { linecap    }
  1748. X    named dashlength { dashlength }
  1749. X    named paint      { paint      }
  1750. X    named margin     { 0c         }
  1751. X    named arrow      { arrow      }
  1752. X    named headstyle  { headstyle  }
  1753. X    named headwidth  { headwidth  }
  1754. X    named headlength { headlength }
  1755. X    right x
  1756. X    {
  1757. X    @Figure
  1758. X        shape {
  1759. X        # 0     ymark @Prev @Label FROM
  1760. X        # xsize ymark @Prev @Label TO
  1761. X        lfighline
  1762. X        }
  1763. X        linestyle  { linestyle  }
  1764. X        linewidth  { linewidth  }
  1765. X        linecap    { linecap    }
  1766. X        dashlength { dashlength }
  1767. X        paint      { paint      }
  1768. X        margin     { margin     }
  1769. X        arrow      { arrow      }
  1770. X        headstyle  { headstyle  }
  1771. X        headwidth  { headwidth  }
  1772. X        headlength { headlength }
  1773. X    x
  1774. X    }
  1775. X
  1776. X    def @VLine
  1777. X    named linestyle  { linestyle  }
  1778. X    named linewidth  { linewidth  }
  1779. X    named linecap    { linecap    }
  1780. X    named dashlength { dashlength }
  1781. X    named paint      { paint      }
  1782. X    named margin     { 0c         }
  1783. X    named arrow      { arrow      }
  1784. X    named headstyle  { headstyle  }
  1785. X    named headwidth  { headwidth  }
  1786. X    named headlength { headlength }
  1787. X    right x
  1788. X    {
  1789. X    @Figure
  1790. X        shape {
  1791. X        # xmark ysize @Prev @Label FROM
  1792. X        # xmark 0     @Prev @Label TO
  1793. X        lfigvline
  1794. X        }
  1795. X        linestyle  { linestyle }
  1796. X        linewidth  { linewidth  }
  1797. X        linecap    { linecap    }
  1798. X        dashlength { dashlength }
  1799. X        paint      { paint      }
  1800. X        margin     { margin     }
  1801. X        arrow      { arrow      }
  1802. X        headstyle  { headstyle  }
  1803. X        headwidth  { headwidth  }
  1804. X        headlength { headlength }
  1805. X    x
  1806. X    }
  1807. X
  1808. X    def @HArrow
  1809. X    named linestyle  { linestyle  }
  1810. X    named linewidth  { linewidth  }
  1811. X    named linecap    { linecap    }
  1812. X    named dashlength { dashlength }
  1813. X    named paint      { paint      }
  1814. X    named margin     { 0c         }
  1815. X    named arrow      { forward    }
  1816. X    named headstyle  { headstyle  }
  1817. X    named headwidth  { headwidth  }
  1818. X    named headlength { headlength }
  1819. X    right x
  1820. X    {
  1821. X    @Figure
  1822. X        shape {
  1823. X        # 0     ymark @Prev @Label FROM
  1824. X        # xsize ymark @Prev @Label TO
  1825. X        lfighline
  1826. X        }
  1827. X        linestyle  { linestyle  }
  1828. X        linewidth  { linewidth  }
  1829. X        linecap    { linecap    }
  1830. X        dashlength { dashlength }
  1831. X        paint      { paint      }
  1832. X        margin     { margin     }
  1833. X        arrow      { arrow      }
  1834. X        headstyle  { headstyle  }
  1835. X        headwidth  { headwidth  }
  1836. X        headlength { headlength }
  1837. X    x
  1838. X    }
  1839. X
  1840. X    def @VArrow
  1841. X    named linestyle  { linestyle  }
  1842. X    named linewidth  { linewidth  }
  1843. X    named linecap    { linecap    }
  1844. X    named dashlength { dashlength }
  1845. X    named paint      { paint      }
  1846. X    named margin     { 0c         }
  1847. X    named arrow      { forward    }
  1848. X    named headstyle  { headstyle  }
  1849. X    named headwidth  { headwidth  }
  1850. X    named headlength { headlength }
  1851. X    right x
  1852. X    {
  1853. X    @Figure
  1854. X        shape {
  1855. X        # xmark ysize @Prev @Label FROM
  1856. X        # xmark 0     @Prev @Label TO
  1857. X        lfigvline
  1858. X        }
  1859. X        linestyle  { linestyle  }
  1860. X        linewidth  { linewidth  }
  1861. X        linecap    { linecap    }
  1862. X        dashlength { dashlength }
  1863. X        paint      { paint      }
  1864. X        margin     { margin     }
  1865. X        arrow      { arrow      }
  1866. X        headstyle  { headstyle  }
  1867. X        headwidth  { headwidth  }
  1868. X        headlength { headlength }
  1869. X    x
  1870. X    }
  1871. X
  1872. X    def @Line
  1873. X    named from       { 0 ysize    }
  1874. X    named to         { xsize 0    }
  1875. X    named linestyle  { linestyle  }
  1876. X    named linewidth  { linewidth  }
  1877. X    named linecap    { linecap    }
  1878. X    named dashlength { dashlength }
  1879. X    named paint      { paint      }
  1880. X    named margin     { 0c         }
  1881. X    named arrow      { arrow      }
  1882. X    named headstyle  { headstyle  }
  1883. X    named headwidth  { headwidth  }
  1884. X    named headlength { headlength }
  1885. X    right x
  1886. X    {
  1887. X    @Figure
  1888. X        shape {
  1889. X        from @Prev @Label FROM
  1890. X        to   @Prev @Label TO
  1891. X        }
  1892. X        linestyle  { linestyle  }
  1893. X        linewidth  { linewidth  }
  1894. X        linecap    { linecap    }
  1895. X        dashlength { dashlength }
  1896. X        paint      { paint      }
  1897. X        margin     { margin     }
  1898. X        arrow      { arrow      }
  1899. X        headstyle  { headstyle  }
  1900. X        headwidth  { headwidth  }
  1901. X        headlength { headlength }
  1902. X    x
  1903. X    }
  1904. X
  1905. X    def @Arrow
  1906. X    named from       { 0 ysize    }
  1907. X    named to         { xsize 0    }
  1908. X    named linestyle  { linestyle  }
  1909. X    named linewidth  { linewidth  }
  1910. X    named linecap    { linecap    }
  1911. X    named dashlength { dashlength }
  1912. X    named paint      { paint      }
  1913. X    named margin     { 0c         }
  1914. X    named arrow      { forward    }
  1915. X    named headstyle  { headstyle  }
  1916. X    named headwidth  { headwidth  }
  1917. X    named headlength { headlength }
  1918. X    right x
  1919. X    {
  1920. X    @Figure
  1921. X        shape {
  1922. X        from @Prev @Label FROM
  1923. X        to   @Prev @Label TO
  1924. X        }
  1925. X        linestyle  { linestyle  }
  1926. X        linewidth  { linewidth  }
  1927. X        linecap    { linecap    }
  1928. X        dashlength { dashlength }
  1929. X        paint      { paint      }
  1930. X        margin     { margin     }
  1931. X        arrow      { arrow      }
  1932. X        headstyle  { headstyle  }
  1933. X        headwidth  { headwidth  }
  1934. X        headlength { headlength }
  1935. X    x
  1936. X    }
  1937. X
  1938. X    def @Arc
  1939. X    named from       { 0 ysize    }
  1940. X    named to         { xsize 0    }
  1941. X    named ctr        { 0 0        }
  1942. X    named direction  { clockwise  }
  1943. X    named linestyle  { linestyle  }
  1944. X    named linewidth  { linewidth  }
  1945. X    named linecap    { linecap    }
  1946. X    named dashlength { dashlength }
  1947. X    named paint      { paint      }
  1948. X    named margin     { 0c         }
  1949. X    named arrow      { noarrow    }
  1950. X    named headstyle  { headstyle  }
  1951. X    named headwidth  { headwidth  }
  1952. X    named headlength { headlength }
  1953. X    right x
  1954. X    {
  1955. X    @Figure
  1956. X        shape {
  1957. X        from @Label FROM
  1958. X        to   @Label TO
  1959. X        ctr  @Label CTR
  1960. X        FROM [ CTR
  1961. X        direction @Case { {clockwise anticlockwise} @Yield direction }
  1962. X        ] TO
  1963. X        }
  1964. X        linestyle  { linestyle  }
  1965. X        linewidth  { linewidth  }
  1966. X        linecap    { linecap    }
  1967. X        dashlength { dashlength }
  1968. X        paint      { paint      }
  1969. X        margin     { margin     }
  1970. X        arrow      { arrow      }
  1971. X        headstyle  { headstyle  }
  1972. X        headwidth  { headwidth  }
  1973. X        headlength { headlength }
  1974. X    x
  1975. X    }
  1976. X
  1977. X    { "grestore save gsave" maxlabels "dict begin lfigdict begin"
  1978. X      // "end end restore"
  1979. X    } @Graphic @Body
  1980. X
  1981. X@End @Fig                  
  1982. END_OF_FILE
  1983.   if test 16471 -ne `wc -c <'include/fig'`; then
  1984.     echo shar: \"'include/fig'\" unpacked with wrong size!
  1985.   fi
  1986.   # end of 'include/fig'
  1987. fi
  1988. if test -f 'z16.c' -a "${1}" != "-c" ; then 
  1989.   echo shar: Will not clobber existing file \"'z16.c'\"
  1990. else
  1991.   echo shar: Extracting \"'z16.c'\" \(16533 characters\)
  1992.   sed "s/^X//" >'z16.c' <<'END_OF_FILE'
  1993. X/*@z16.c:Size Adjustment:SetNeighbours(), CatAdjustSize()@********************/
  1994. X/*                                                                           */
  1995. X/*  LOUT: A HIGH-LEVEL LANGUAGE FOR DOCUMENT FORMATTING (VERSION 2.05)       */
  1996. X/*  COPYRIGHT (C) 1993 Jeffrey H. Kingston                                   */
  1997. X/*                                                                           */
  1998. X/*  Jeffrey H. Kingston (jeff@cs.su.oz.au)                                   */
  1999. X/*  Basser Department of Computer Science                                    */
  2000. X/*  The University of Sydney 2006                                            */
  2001. X/*  AUSTRALIA                                                                */
  2002. X/*                                                                           */
  2003. X/*  This program is free software; you can redistribute it and/or modify     */
  2004. X/*  it under the terms of the GNU General Public License as published by     */
  2005. X/*  the Free Software Foundation; either version 1, or (at your option)      */
  2006. X/*  any later version.                                                       */
  2007. X/*                                                                           */
  2008. X/*  This program is distributed in the hope that it will be useful,          */
  2009. X/*  but WITHOUT ANY WARRANTY; without even the implied warranty of           */
  2010. X/*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            */
  2011. X/*  GNU General Public License for more details.                             */
  2012. X/*                                                                           */
  2013. X/*  You should have received a copy of the GNU General Public License        */
  2014. X/*  along with this program; if not, write to the Free Software              */
  2015. X/*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                */
  2016. X/*                                                                           */
  2017. X/*  FILE:         z16.c                                                      */
  2018. X/*  MODULE:       Size Adjustment                                            */
  2019. X/*  EXTERNS:      SetNeighbours(), AdjustSize()                              */
  2020. X/*                                                                           */
  2021. X/*****************************************************************************/
  2022. X#include "externs"
  2023. X
  2024. X
  2025. X/*****************************************************************************/
  2026. X/*                                                                           */
  2027. X/*  SetNeighbours(link, ratm, pg, pdef, sg, sdef, side)                      */
  2028. X/*                                                                           */
  2029. X/*  This is a utility routine used by CatConstrained(), AdjustSize(),        */
  2030. X/*  BreakTable() and FlushGalley() for calculating size updates in objects.  */
  2031. X/*  Assuming that link is the link of a component of a VCAT etc., and that   */
  2032. X/*  ratm is TRUE if there is a marked component to the right of link, set    */
  2033. X/*                                                                           */
  2034. X/*     pg    to the gap separating link from the first definite object       */
  2035. X/*           to the left, or nil if none.  If pg != nil, set pdef to         */
  2036. X/*           the preceding definite object;  else pdef is undefined.         */
  2037. X/*                                                                           */
  2038. X/*     sg    to the gap separating link from the first definite object       */
  2039. X/*           to the right, or nil if none.  if sg != nil, set sdef to        */
  2040. X/*           the succeeding definite object;  else sdef is undefined.        */
  2041. X/*                                                                           */
  2042. X/*     side  to the side of the mark link is on; either BACK, ON or FWD.     */
  2043. X/*                                                                           */
  2044. X/*****************************************************************************/
  2045. X
  2046. XSetNeighbours(link, ratm, pg, pdef, sg, sdef, side)
  2047. XOBJECT link;  BOOLEAN ratm;
  2048. XOBJECT *pg, *pdef, *sg, *sdef;  int *side;
  2049. X{ OBJECT plink, slink;
  2050. X
  2051. X  /* find preceding definite; if it exists, set *pg */
  2052. X  *pg = nil;
  2053. X  for( plink = PrevDown(link);  type(plink) == LINK;  plink = PrevDown(plink) )
  2054. X  { Child(*pdef, plink);
  2055. X    if( type(*pdef) == SPLIT ? SplitIsDefinite(*pdef) : is_definite(type(*pdef)) )
  2056. X    { Child(*pg, PrevDown(link));
  2057. X      while( is_index(type(*pg)) )
  2058. X      {    link = PrevDown(link);
  2059. X    Child(*pg, PrevDown(link));
  2060. X      }
  2061. X      assert( type(*pg) == GAP_OBJ, "SetNeighbours: type(*pg)!" );
  2062. X      break;
  2063. X    }
  2064. X  }
  2065. X
  2066. X  /* find succeeding definite; if it exists, set *sg */
  2067. X  *sg = nil;
  2068. X  for( slink = NextDown(link);  type(slink) == LINK;  slink = NextDown(slink) )
  2069. X  { Child(*sdef, slink);
  2070. X    if( type(*sdef) == SPLIT ? SplitIsDefinite(*sdef) : is_definite(type(*sdef)) )
  2071. X    { Child(*sg, PrevDown(slink));
  2072. X      while( is_index(type(*sg)) )
  2073. X      {    slink = PrevDown(slink);
  2074. X    Child(*sg, PrevDown(slink));
  2075. X      }
  2076. X      assert( type(*sg) == GAP_OBJ, "SetNeighbours: type(*sg)!" );
  2077. X      break;
  2078. X    }
  2079. X  }
  2080. X
  2081. X  *side = ratm ? BACK : *pg == nil || mark(gap(*pg)) ? ON : FWD;
  2082. X  debug4(DSA,DD, "SetNeighbours: ratm == %s, pg %s nil, sg %s nil, side == %s",
  2083. X    bool(ratm), *pg == nil ? "==" : "!=", *sg == nil ? "==" : "!=", 
  2084. X    *side == BACK ? "BACK" : *side == ON ? "ON" : "FWD");
  2085. X} /* end SetNeighbours */
  2086. X
  2087. X
  2088. X/*****************************************************************************/
  2089. X/*                                                                           */
  2090. X/*  static CatAdjustSize(x, b, f, ratm, y, dim)                              */
  2091. X/*                                                                           */
  2092. X/*  Adjust the size of x to be *b, *f.  Object x is known to lie in add-set  */
  2093. X/*  y;  ratm is TRUE iff there is a mark to the right of x.  Return the      */
  2094. X/*  new size of y in *b, *f.                                                 */
  2095. X/*                                                                           */
  2096. X/*****************************************************************************/
  2097. X
  2098. Xstatic CatAdjustSize(x, b, f, ratm, y, dim)
  2099. XOBJECT x;  LENGTH *b, *f;  BOOLEAN ratm;  OBJECT y;  int dim;
  2100. X{ OBJECT link;
  2101. X  OBJECT pg, prec_def, sg, sd;
  2102. X  LENGTH beffect, feffect, seffect;  int side;
  2103. X  int bb, ff;
  2104. X
  2105. X  debug6(DSA, D, "CatAdjustSize(%s x, %s, %s, %s, %s y, %s)", Image(type(x)),
  2106. X    EchoLength(*b), EchoLength(*f), bool(ratm), Image(type(y)), dimen(dim));
  2107. X  debug2(DSA,DD, "x(%s,%s) =", EchoLength(back(x,dim)), EchoLength(fwd(x,dim)));
  2108. X  ifdebug(DSA, DD, DebugObject(x));
  2109. X  debug2(DSA,DD, "y(%s,%s) =", EchoLength(back(y,dim)), EchoLength(fwd(y,dim)));
  2110. X  ifdebug(DSA, DD, DebugObject(y));
  2111. X
  2112. X  /* DO_ADJUST ACAT is a special case because adjustment affects its size */
  2113. X  if( dim==COL && type(y)==ACAT && display_style(save_style(y)) == DO_ADJUST )
  2114. X  { back(x, dim) = *b;  fwd(x, dim) = *f;
  2115. X    *b = back(y, dim);  *f = fwd(y, dim);
  2116. X    debug2(DSA, D, "CatAdjustSize ACAT %s,%s", EchoLength(*b), EchoLength(*f));
  2117. X    return;
  2118. X  }
  2119. X
  2120. X  link = UpDim(x, dim);
  2121. X  SetNeighbours(link, ratm, &pg, &prec_def, &sg, &sd, &side);
  2122. X  { ifdebug(DSA, D,
  2123. X    if( pg != nil && mode(gap(pg)) == NO_MODE )
  2124. X    { debug1(DSA, D, "NO_MODE gap pg, is_indefinite(x) == %s, y =",
  2125. X    bool(is_indefinite(type(x))) );
  2126. X      ifdebug(DSA, D, DebugObject(y));
  2127. X    }
  2128. X    if( sg != nil && mode(gap(sg)) == NO_MODE )
  2129. X    { debug1(DSA, D, "NO_MODE gap sg, is_indefinite(x) == %s, y =",
  2130. X    bool(is_indefinite(type(x))) );
  2131. X      ifdebug(DSA, D, DebugObject(y));
  2132. X    }
  2133. X  ); }
  2134. X  if( is_indefinite(type(x)) )
  2135. X  {
  2136. X    beffect = pg == nil ? *b :
  2137. X      MinGap(fwd(prec_def, dim), *b, *f, &gap(pg));
  2138. X
  2139. X    feffect = sg == nil ? *f :
  2140. X      MinGap(*f, back(sd, dim), fwd(sd, dim), &gap(sg));
  2141. X
  2142. X    seffect = pg == nil ? sg == nil ? 0 : back(sd, dim) :
  2143. X      sg == nil ? fwd(prec_def, dim) :
  2144. X      MinGap(fwd(prec_def, dim), back(sd,dim), fwd(sd,dim), &gap(sg));
  2145. X  }
  2146. X  else /* !is_indefinite(type(x)) */
  2147. X  {
  2148. X    beffect = pg == nil ?  *b - back(x, dim) :
  2149. X      MinGap(fwd(prec_def, dim), *b,           *f,          &gap(pg)) -
  2150. X      MinGap(fwd(prec_def, dim), back(x, dim), fwd(x, dim), &gap(pg));
  2151. X
  2152. X    feffect = sg == nil ? *f - fwd(x, dim) :
  2153. X      MinGap(*f,          back(sd, dim), fwd(sd, dim), &gap(sg)) -
  2154. X      MinGap(fwd(x, dim), back(sd, dim), fwd(sd, dim), &gap(sg));
  2155. X    
  2156. X    seffect = 0;
  2157. X  }
  2158. X
  2159. X  back(x, dim) = *b;  fwd(x, dim) = *f;
  2160. X  switch( side )
  2161. X  {
  2162. X    case BACK:    bb = back(y, dim) + beffect + feffect - seffect;
  2163. X        ff = fwd(y, dim);
  2164. X        break;
  2165. X
  2166. X    case ON:    bb = back(y, dim) + beffect - seffect;
  2167. X        ff = fwd(y, dim) + feffect;
  2168. X        break;
  2169. X
  2170. X    case FWD:    bb = back(y, dim);
  2171. X        ff = fwd(y, dim) + beffect + feffect - seffect;
  2172. X        break;
  2173. X  }
  2174. X  if( bb > MAX_LEN || ff > MAX_LEN )
  2175. X  { debug2(DSA, D, "bb = %s, ff = %s, y =", EchoLength(bb), EchoLength(ff));
  2176. X    ifdebug(DSA, D, DebugObject(y));
  2177. X    debug0(DSA, D, "x was");
  2178. X    ifdebug(DSA, D, DebugObject(x));
  2179. X    Error(FATAL,&fpos(y),"maximum size (%s) exceeded", EchoLength(MAX_LEN));
  2180. X  }
  2181. X  *b = bb;  *f = ff;
  2182. X  debug2(DSA, D, "CatAdjustSize returning %s,%s", EchoLength(*b), EchoLength(*f));
  2183. X} /* end CatAdjustSize */
  2184. X
  2185. X
  2186. X/*@::AdjustSize()@************************************************************/
  2187. X/*                                                                           */
  2188. X/*  AdjustSize(x, b, f, dim)                                                 */
  2189. X/*                                                                           */
  2190. X/*  Adjust the size of object x, in dimension dim, to be b, f.  If x is a    */
  2191. X/*  CLOSURE, the adjustment is from a CLOSURE to a definite object of size   */
  2192. X/*  b, f.                                                                    */
  2193. X/*                                                                           */
  2194. X/*****************************************************************************/
  2195. X
  2196. XAdjustSize(x, b, f, dim)
  2197. XOBJECT x;  LENGTH b, f;  int dim;
  2198. X{ OBJECT y, link, tlink, lp, rp, z, index;
  2199. X  BOOLEAN ratm;  LENGTH tb, tf, cby, cfy, rby, rfy;
  2200. X
  2201. X  debug6(DSA, D, "[ AdjustSize( %s(%s,%s), %s, %s, %s ), x =",
  2202. X    Image(type(x)), EchoLength(back(x, dim)), EchoLength(fwd(x, dim)),
  2203. X    EchoLength(b), EchoLength(f), dimen(dim));
  2204. X  ifdebug(DSA, DD, DebugObject(x) );
  2205. X
  2206. X  while( b != back(x, dim) || f != fwd(x, dim) || is_indefinite(type(x)) )
  2207. X  { assert( Up(x) != x, "AdjustSize: Up(x) == x!" );
  2208. X    assert( b >= 0, "AdjustSize: b < 0!" );
  2209. X    assert( f >= 0, "AdjustSize: f < 0!" );
  2210. X
  2211. X    /* these cases are unique because they have multiple parents */
  2212. X    if( type(x) == COL_THR || type(x) == ROW_THR )
  2213. X    { assert( (type(x)==COL_THR) == (dim==COL), "AdjustSize: COL_THR!" );
  2214. X      back(x, dim) = b;  fwd(x, dim) = f;
  2215. X      for( link = Up(x);  link != x;  link = NextUp(link) )
  2216. X      { Parent(y, link);
  2217. X    assert( type(y) == SPLIT, "AdjustSize: type(y) != SPLIT!") ;
  2218. X    AdjustSize(y, b, f, dim);
  2219. X      }
  2220. X      debug0(DSA, D, "[ AdjustSize (thread case) returning.");
  2221. X      return;
  2222. X    }
  2223. X
  2224. X    link = UpDim(x, dim);  ratm = FALSE;
  2225. X    for( tlink=NextDown(link);  type(tlink) == LINK;  tlink=NextDown(tlink) )
  2226. X    { Child(y, tlink);
  2227. X      if( type(y) == GAP_OBJ && mark(gap(y)) )  ratm = TRUE;
  2228. X    }
  2229. X    y = tlink;
  2230. X
  2231. X    debug5(DSA, DD, "  b = %s, f = %s, y = %s(%s,%s), x =",
  2232. X    EchoLength(b), EchoLength(f), Image(type(y)),
  2233. X    EchoLength(back(y, dim)), EchoLength(fwd(y, dim)));
  2234. X    ifdebug(DSA, DD, DebugObject(x) );
  2235. X
  2236. X    switch( type(y) )
  2237. X    {
  2238. X
  2239. X      case HEAD:
  2240. X      
  2241. X    if( dim == ROW )
  2242. X    { back(x, dim) = b, fwd(x, dim) = f;
  2243. X      debug0(DSA, D, "] AdjustSize ROW returning at HEAD");
  2244. X      return;
  2245. X    }
  2246. X    else
  2247. X    {
  2248. X      /* let lp and rp be the gaps delimiting the          */
  2249. X      /* components joined to x                            */
  2250. X      for( lp = PrevDown(link);  lp != y;  lp = PrevDown(lp) )
  2251. X      { Child(z, lp);
  2252. X        if( type(z) == GAP_OBJ && !join(gap(z)) )  break;
  2253. X      }
  2254. X      for( rp = NextDown(link);  rp != y;  rp = NextDown(rp) )
  2255. X      { Child(z, rp);
  2256. X        if( type(z) == GAP_OBJ && !join(gap(z)) )  break;
  2257. X      }
  2258. X
  2259. X      back(x, dim) = b;  fwd(x, dim) = f;
  2260. X      if( lp == y && rp == y && !seen_nojoin(y) )
  2261. X      {    
  2262. X        /* if whole object is joined, do this */
  2263. X        b = max(b, back(y, dim));
  2264. X        f = max(f, fwd(y, dim));
  2265. X      }
  2266. X      else
  2267. X      {
  2268. X        /* if // or || is present, do this */
  2269. X        tb = tf = 0;
  2270. X        for( link = NextDown(lp);  link != rp;  link = NextDown(link) )
  2271. X        { Child(z, link);
  2272. X          if( type(z) == GAP_OBJ || is_index(type(z)) )  continue;
  2273. X          tb = max(tb, back(z, dim));
  2274. X          tf = max(tf, fwd(z, dim));
  2275. X        }
  2276. X        b = 0;  f = max(tb + tf, fwd(y, dim));
  2277. X      }
  2278. X      if( back(y, dim) == b && fwd(y, dim) == f )
  2279. X      {
  2280. X        debug0(DSA, D, "] AdjustSize (COL) returning at HEAD (no wider)");
  2281. X        return;
  2282. X      }
  2283. X      debug3(DGF, D, "AdjustSize widening %s to %s,%s",
  2284. X           SymName(actual(y)), EchoLength(b), EchoLength(f));
  2285. X      back(y, dim) = b;  fwd(y, dim) = f;
  2286. X      if( Up(y) == y )
  2287. X      {
  2288. X        debug0(DSA, D, "] AdjustSize ret. at HEAD (no parent)" );
  2289. X        return;
  2290. X      }
  2291. X      Parent(index, Up(y));
  2292. X      if( type(index) != RECEIVING )
  2293. X      {
  2294. X        debug1(DSA,D, "] AdjustSize ret. at HEAD (%s)", Image(type(index)));
  2295. X        return;
  2296. X      }
  2297. X      assert( actual(index) != nil, "AdjustSize: actual(index) == nil!" );
  2298. X      assert( type(actual(index)) == CLOSURE, "AdjustSize: index non-C!" );
  2299. X      if( actual(actual(index)) != GalleySym )
  2300. X      {
  2301. X        debug0(DSA, D, "] AdjustSize ret. at HEAD (not @Galley, so root)" );
  2302. X        return;
  2303. X      }
  2304. X      y = actual(index);
  2305. X    }
  2306. X    break;
  2307. X
  2308. X
  2309. X      case SPLIT:
  2310. X      case HCONTRACT:
  2311. X      case VCONTRACT:
  2312. X      case HEXPAND:
  2313. X      case VEXPAND:
  2314. X      case PADJUST:
  2315. X      case HADJUST:
  2316. X      case VADJUST:
  2317. X      case ONE_COL:
  2318. X      case ONE_ROW:
  2319. X      case GRAPHIC:
  2320. X
  2321. X    back(x, dim) = b;  fwd(x, dim) = f;
  2322. X    break;
  2323. X
  2324. X
  2325. X      case HSCALE:
  2326. X      case VSCALE:
  2327. X
  2328. X    back(x, dim) = b;  fwd(x, dim) = f;
  2329. X    if( (dim==COL) == (type(y)==HSCALE) )
  2330. X    { debug0(DSA, D, "] AdjustSize returning at HSCALE or VSCALE");
  2331. X      return;
  2332. X    }
  2333. X    break;
  2334. X
  2335. X
  2336. X      case SCALE:
  2337. X
  2338. X    back(x, dim) = b;  fwd(x, dim) = f;
  2339. X    if( dim == COL )
  2340. X    { b *= bc(constraint(y)) / SF;
  2341. X      f *= bc(constraint(y)) / SF;
  2342. X    }
  2343. X    else
  2344. X    { b *= fc(constraint(y)) / SF;
  2345. X      f *= fc(constraint(y)) / SF;
  2346. X    }
  2347. X    break;
  2348. X
  2349. X
  2350. X      case ROTATE:
  2351. X      
  2352. X    back(x, dim) = b;  fwd(x, dim) = f;
  2353. X    RotateSize(&cby, &cfy, &rby, &rfy, x, sparec(constraint(y)));
  2354. X    if( cby != back(y, COL) || cfy != fwd(y, COL) )
  2355. X      AdjustSize(y, cby, cfy, COL);
  2356. X    if( rby != back(y, ROW) || rfy != fwd(y, ROW) )
  2357. X      AdjustSize(y, rby, rfy, ROW);
  2358. X    debug1(DSA, D, "] AdjustSize returning at %s.", Image(type(y)));
  2359. X    return;
  2360. X
  2361. X
  2362. X      case WIDE:
  2363. X      case HIGH:
  2364. X      
  2365. X    if( (type(y) == WIDE) == (dim == COL) )
  2366. X    { if( !FitsConstraint(b, f, constraint(y)) )
  2367. X      { Error(WARN, &fpos(y), "size constraint %s,%s,%s broken by %s,%s",
  2368. X          EchoLength(bc(constraint(y))), EchoLength(bfc(constraint(y))),
  2369. X          EchoLength(fc(constraint(y))), EchoLength(b), EchoLength(f));
  2370. X        SetConstraint(constraint(y), MAX_LEN, b+f, MAX_LEN);
  2371. X      }
  2372. X      back(x, dim) = b;  fwd(x, dim) = f;
  2373. X      EnlargeToConstraint(&b, &f, &constraint(y));
  2374. X    }
  2375. X    else
  2376. X    { back(x, dim) = b;
  2377. X      fwd(x, dim) = f;
  2378. X    }
  2379. X    break;
  2380. X
  2381. X
  2382. X      case COL_THR:
  2383. X      case ROW_THR:
  2384. X
  2385. X    assert( (type(y)==COL_THR) == (dim==COL), "AdjustSize: COL_THR!" );
  2386. X    back(x, dim) = b;  fwd(x, dim) = f;
  2387. X    b = max(b, back(y, dim));
  2388. X    f = max(f, fwd(y, dim));
  2389. X    break;
  2390. X
  2391. X
  2392. X      case VCAT:
  2393. X      case HCAT:
  2394. X      case ACAT:
  2395. X
  2396. X    if( (type(y) == VCAT) == (dim == ROW) )
  2397. X      CatAdjustSize(x, &b, &f, ratm, y, dim);
  2398. X    else
  2399. X    {
  2400. X      /* let lp and rp be the gaps bracketing the components joined to x */
  2401. X      for( lp = PrevDown(link);  lp != y;  lp = PrevDown(lp) )
  2402. X      { Child(z, lp);
  2403. X        if( type(z) == GAP_OBJ && !join(gap(z)) )  break;
  2404. X      }
  2405. X      for( rp = NextDown(link);  rp != y;  rp = NextDown(rp) )
  2406. X      { Child(z, rp);
  2407. X        if( type(z) == GAP_OBJ && !join(gap(z)) )  break;
  2408. X      }
  2409. X
  2410. X      back(x, dim) = b;  fwd(x, dim) = f;
  2411. X      if( lp == y && rp == y )
  2412. X      {
  2413. X        /* if whole object is joined, do this */
  2414. X        b = max(b, back(y, dim));
  2415. X        f = max(f, fwd(y, dim));
  2416. X      }
  2417. X      else
  2418. X      { /* if // or || is present, do this */
  2419. X        tb = tf = 0;
  2420. X        for( link = NextDown(lp); link != rp;  link = NextDown(link) )
  2421. X        { Child(z, link);
  2422. X          if( type(z) == GAP_OBJ || is_index(type(z)) )  continue;
  2423. X          tb = max(tb, back(z, dim));
  2424. X          tf = max(tf, fwd(z, dim));
  2425. X        }
  2426. X        b = 0;  f = max(tb + tf, fwd(y, dim));
  2427. X      }
  2428. X    }
  2429. X    break;
  2430. X
  2431. X
  2432. X      case WORD:
  2433. X      case QWORD:
  2434. X      case CLOSURE:
  2435. X      case NULL_CLOS:
  2436. X      case CROSS:
  2437. X      default:
  2438. X      
  2439. X    Error(INTERN, &fpos(y), "AdjustSize: %s", Image(type(y)));
  2440. X    break;
  2441. X
  2442. X    } /* end switch */
  2443. X    x = y;
  2444. X  } /* end while */
  2445. X  debug0(DSA, D, "] AdjustSize returning.");
  2446. X} /* end AdjustSize */
  2447. END_OF_FILE
  2448.   if test 16533 -ne `wc -c <'z16.c'`; then
  2449.     echo shar: \"'z16.c'\" unpacked with wrong size!
  2450.   fi
  2451.   # end of 'z16.c'
  2452. fi
  2453. echo shar: End of archive 16 \(of 35\).
  2454. cp /dev/null ark16isdone
  2455. MISSING=""
  2456. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 ; do
  2457.     if test ! -f ark${I}isdone ; then
  2458.     MISSING="${MISSING} ${I}"
  2459.     fi
  2460. done
  2461. if test "${MISSING}" = "" ; then
  2462.     echo You have unpacked all 35 archives.
  2463.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2464. else
  2465.     echo You still must unpack the following archives:
  2466.     echo "        " ${MISSING}
  2467. fi
  2468. exit 0
  2469. exit 0 # Just in case...
  2470.