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

  1. Newsgroups: comp.sources.misc
  2. From: jeff@joyce.cs.su.oz.au (Jeff Kingston)
  3. Subject: v38i101:  lout - Lout document formatting system, v2.05, Part33/35
  4. Message-ID: <1993Aug10.132454.19425@sparky.sterling.com>
  5. X-Md4-Signature: 65f537c679ed9f818f89203b800281c7
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Sterling Software
  8. Date: Tue, 10 Aug 1993 13:24:54 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 101
  13. Archive-name: lout/part33
  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.begin/s04 doc/tr.begin/s05 doc/tr.begin/s11
  22. #   doc/tr.begin/s12 doc/tr.begin/s13 doc/tr.eq/s3 doc/tr.impl/s2.2
  23. #   doc/tr.impl/s3.1 doc/tr.impl/s3.4 doc/tr.lout/ch0.00
  24. #   doc/tr.lout/ch2.02 doc/tr.lout/ch2.03 doc/tr.lout/ch2.04
  25. #   doc/tr.over/s6 doc/tr.over/setup doc/tr.tab/s1 doc/tr.tab/s3
  26. #   evec/LoutLatin1.CEV evec/README evec/Symb.CEV evec/null.dec
  27. #   evec/null.oct hyph.install news.blurb
  28. # Wrapped by kent@sparky on Sun Aug  8 12:29:34 1993
  29. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  30. echo If this archive is complete, you will see the following message:
  31. echo '          "shar: End of archive 33 (of 35)."'
  32. if test -f 'doc/tr.begin/s04' -a "${1}" != "-c" ; then 
  33.   echo shar: Will not clobber existing file \"'doc/tr.begin/s04'\"
  34. else
  35.   echo shar: Extracting \"'doc/tr.begin/s04'\" \(3184 characters\)
  36.   sed "s/^X//" >'doc/tr.begin/s04' <<'END_OF_FILE'
  37. X@Section
  38. X   @Tag { fonts }
  39. X   @Title { Fonts and unusual characters }
  40. X@Begin
  41. X@PP
  42. XThis section explains how to gain access to the many different fonts and
  43. Xunusual characters available with Lout.  We have already seen the
  44. X@Code "@I" symbol, which changes the font of the following thing to
  45. X{@I Italic}.  Similarly, there is @Code "@B" for {@B Bold}, @Code "@S"
  46. Xfor @S SMALL {@S CAPITALS},
  47. X@FootNote {
  48. XOwing to problems behind the scenes, if several words are grouped within one
  49. X@Code "@S" symbol they will be kept together on one line, so to get small
  50. Xcapitals over several lines it is necessary to apply @Code "@S" to each
  51. Xword individually.  This does not happen with other font symbols.
  52. X}
  53. Xand @Code "@R" for Roman.
  54. X@PP
  55. XThe @Code "@Font" symbol can be used to get many other fonts (a local
  56. Xexpert should be able to supply the full list):
  57. X@ID @Code {
  58. X"{ Helvetica Slope } @Font { Hi there }" &0io
  59. X}
  60. Xhas result
  61. X@ID {
  62. X{ Helvetica Slope } @Font { Hi there }
  63. X}
  64. XEach font has a family name, such as Times, Helvetica, or Courier, and a
  65. Xface name, generally Base, Slope, or Bold.  The fonts that were
  66. Xcalled Roman, Italic, and Bold above are Times Base, Times Slope, and
  67. XTimes Bold.  When changing families the new family and a face must be
  68. Xspecified, but when changing face within a family just the face name is
  69. Xenough.
  70. X@PP
  71. XThe @Code "@Font" symbol also changes sizes:
  72. X@ID @Code {
  73. X"+5p @Font Hello"
  74. X"-3p @Font Hello"
  75. X"12p @Font Hello"
  76. X}
  77. Xhas result
  78. X@ID {
  79. X+5p @Font Hello  -3p @Font Hello  12p @Font Hello
  80. X}
  81. Xwith the first Hello 5 points larger than it would have been otherwise,
  82. Xthe second 3 points smaller, and the third in a 12 point font.  There are
  83. X72 points to one inch, and most documents are set in 10 or 12 point.
  84. X@PP
  85. XThere are symbols for some unusual characters that do not appear
  86. Xon keyboards:
  87. X@ID @Tab
  88. X    vmargin { 0.5vx }
  89. X    @Fmta { @Col @Code A ! @Col B }
  90. X{
  91. X    @Rowa A { "``"        }  B {    ``        }
  92. X    @Rowa A { "''"        }  B {    ''        }
  93. X    @Rowa A { "--"        }  B {    --        }
  94. X    @Rowa A { "---"        }  B {    ---        }
  95. X    @Rowa A { "@Bullet"        }  B {    @Bullet        }
  96. X    @Rowa A { "@Star"        }  B {    @Star        }
  97. X    @Rowa A { "@ParSym"        }  B {    @ParSym        }
  98. X    @Rowa A { "@SectSym"    }  B {    @SectSym    }
  99. X    @Rowa A { "@Dagger"        }  B {    @Dagger        }
  100. X    @Rowa A { "@DaggerDbl"    }  B {    @DaggerDbl    }
  101. X    @Rowa A { "@CDot"        }  B {    @CDot        }
  102. X    @Rowa A { "@Sterling"    }  B {    @Sterling    }
  103. X    @Rowa A { "@Yen"        }  B {    @Yen        }
  104. X    @Rowa A { "@Florin"        }  B {    @Florin        }
  105. X    @Rowa A { "@Degree"        }  B {    @Degree        }
  106. X    @Rowa A { "@Minute"        }  B {    @Minute        }
  107. X    @Rowa A { "@Second"        }  B {    @Second        }
  108. X    @Rowa A { "@Lozenge"    }  B {    @Lozenge    }
  109. X    @Rowa A { "@Multiply"    }  B {    @Multiply    }
  110. X    @Rowa A { "@Divide"        }  B {    @Divide        }
  111. X    @Rowa A { "@CopyRight"    }  B {    @CopyRight    }
  112. X    @Rowa A { "@Register"    }  B {    @Register    }
  113. X    @Rowa A { "@TradeMark"    }  B {    @TradeMark    }
  114. X    @Rowa A { "@Date"        }  B {    @Date        }
  115. X}
  116. XThese may be used anywhere.  The Adobe Systems Symbol font has many more such
  117. Xcharacters; the Eq equation formatting package [{@Ref kingston92eq}] has
  118. Xthe complete list.  For example, @Code "@Eq { heart }" will give
  119. X@Eq { heart }.  Accented characters are also available (see Appendix
  120. X{@NumberOf accented}).
  121. X@End @Section
  122. END_OF_FILE
  123.   if test 3184 -ne `wc -c <'doc/tr.begin/s04'`; then
  124.     echo shar: \"'doc/tr.begin/s04'\" unpacked with wrong size!
  125.   fi
  126.   # end of 'doc/tr.begin/s04'
  127. fi
  128. if test -f 'doc/tr.begin/s05' -a "${1}" != "-c" ; then 
  129.   echo shar: Will not clobber existing file \"'doc/tr.begin/s05'\"
  130. else
  131.   echo shar: Extracting \"'doc/tr.begin/s05'\" \(2787 characters\)
  132.   sed "s/^X//" >'doc/tr.begin/s05' <<'END_OF_FILE'
  133. X@Section
  134. X   @Tag { paras }
  135. X   @Title { Paragraph breaking }
  136. X@Begin
  137. X@PP
  138. XLout takes the words or other things making up a paragraph and fills
  139. Xlines with them.  If two words are separated by one space in the input,
  140. Xthey will be separated by one space in the output; two spaces in, two
  141. Xspaces out, and so on.  The end of a line counts as one space, and a tab
  142. Xcharacter as eight.  These spaces are then enlarged to remove ragged line ends.
  143. X@PP
  144. XThis process is called @I paragraph {@I breaking}, and the enlargement
  145. Xof spaces is @I {line adjustment.}  The @Code "@Break" symbol, which is
  146. Xmost commonly used with displays and list items, affects paragraph
  147. Xbreaking:
  148. X@ID @Code {
  149. X"@IndentedDisplay ragged @Break {"
  150. X"This little paragraph will appear with"
  151. X"ragged ends to its lines. }"
  152. X}
  153. Xhas result
  154. X@IndentedDisplay 4c @Wide ragged @Break {
  155. XThis little paragraph will appear with
  156. Xragged ends to its lines.
  157. X}
  158. Xwhen placed in a four centimetre column; line adjustment is turned
  159. Xoff.  Also available are @Code "cragged @Break" and {@Code "rragged @Break"},
  160. Xwhich centre or right-justify each line respectively after breaking.
  161. X@PP
  162. XIt is also possible to have paragraphs broken in the output at the same
  163. Xplaces they are broken in the input, using { @Code "lines @Break" }:
  164. X@ID @Code {
  165. X"@CenteredDisplay lines @Break @I {"
  166. X"Teach me to hear Mermaides singing,"
  167. X"Or to keep off envies stinging,"
  168. X"     And finde"
  169. X"     What winde"
  170. X"Serves to'advance an honest minde."
  171. X"}"
  172. X}
  173. Xhas result
  174. X@CenteredDisplay lines @Break @I {
  175. XTeach me to hear Mermaides singing,
  176. XOr to keep off envies stinging,
  177. X     And finde
  178. X     What winde
  179. XServes to'advance an honest minde.
  180. X}
  181. XWith @Code "lines @Break" it makes sense to indent individual lines in the
  182. Xinput (except the first), as shown.  To centre or right-justify each line, use
  183. X{@Code "clines @Break"} or {@PageMark clines} {@Code "rlines @Break"}.
  184. X@PP
  185. XThe usual method, where Lout fills and adjusts lines, is called
  186. X{@Code "adjust @Break"}.  It has a variant called {@Code "outdent @Break"}
  187. Xwhich inserts a small space at the beginning of each line except the first.
  188. X@PP
  189. XThe @Code "@Break" symbol also controls hyphenation:  @Code "hyphen"
  190. X@Code "@Break" turns it on, @Code "nohyphen" @Code "@Break" turns it
  191. Xoff.  For example, ragged breaking is often done without hyphenation,
  192. Xlike this:
  193. X@ID @Code {
  194. X"@ID { ragged nohyphen } @Break {"
  195. X"This little paragraph will appear with"
  196. X"ragged ends to its lines."
  197. X"}"
  198. X}
  199. XTo prevent hyphenation in the entire document, see Section
  200. X{@NumberOf changes}.  To tell Lout where you would prefer a hyphen to be 
  201. Xinserted (rarely necessary), use the @Code "&-" symbol:
  202. X@ID @Code {
  203. X"incent&-iv&-ate"
  204. X}
  205. XIf @Code "&-" occurs directly after a hyphen character, hyphenation will
  206. Xbe permitted but no extra hyphen will be inserted.
  207. X@End @Section
  208. END_OF_FILE
  209.   if test 2787 -ne `wc -c <'doc/tr.begin/s05'`; then
  210.     echo shar: \"'doc/tr.begin/s05'\" unpacked with wrong size!
  211.   fi
  212.   # end of 'doc/tr.begin/s05'
  213. fi
  214. if test -f 'doc/tr.begin/s11' -a "${1}" != "-c" ; then 
  215.   echo shar: Will not clobber existing file \"'doc/tr.begin/s11'\"
  216. else
  217.   echo shar: Extracting \"'doc/tr.begin/s11'\" \(953 characters\)
  218.   sed "s/^X//" >'doc/tr.begin/s11' <<'END_OF_FILE'
  219. X@Section
  220. X   @Tag { cols }
  221. X   @Title { Multiple columns }
  222. X@Begin
  223. X@PP
  224. XDocumentLayout normally produces pages with a single column of text occupying
  225. Xthe full width.  To get multiple columns, enclose the document in
  226. X@ID @Code {
  227. X"@Doc @ColText @Begin"
  228. X"..."
  229. X"@End @ColText"
  230. X}
  231. XThis will ordinarily produce two columns per page, although we will see
  232. Xin the next section how to produce three or more.
  233. X@PP
  234. XIt is possible to start off a document with single columns and switch to
  235. Xmultiple columns later, using the following arrangement:
  236. X@ID @Code {
  237. X"@Doc @Text @Begin"
  238. X"single column part"
  239. X"@ColText @Begin"
  240. X"multiple column part"
  241. X"@End @ColText"
  242. X"@End @Text"
  243. X}
  244. XThis is the most useful combination, because switching from multiple back to
  245. Xsingle causes a new page to be begun, which generally looks poor.  Tables
  246. Xand figures are always full width, but the width of footnotes depends on
  247. Xwhether they occur within @Code "@Text" or {@Code "@ColText"}.
  248. X@End @Section
  249. END_OF_FILE
  250.   if test 953 -ne `wc -c <'doc/tr.begin/s11'`; then
  251.     echo shar: \"'doc/tr.begin/s11'\" unpacked with wrong size!
  252.   fi
  253.   # end of 'doc/tr.begin/s11'
  254. fi
  255. if test -f 'doc/tr.begin/s12' -a "${1}" != "-c" ; then 
  256.   echo shar: Will not clobber existing file \"'doc/tr.begin/s12'\"
  257. else
  258.   echo shar: Extracting \"'doc/tr.begin/s12'\" \(2068 characters\)
  259.   sed "s/^X//" >'doc/tr.begin/s12' <<'END_OF_FILE'
  260. X@Section
  261. X   @Tag { changes }
  262. X   @Title { Changing the overall appearance }
  263. X@Begin
  264. X@PP
  265. XA few aspects of the overall appearance of the document may be changed
  266. Xby beginning with a @Code "@Document" symbol, as in the following
  267. Xexample:
  268. X@ID @Code {
  269. X"@Document"
  270. X"    @InitialFont { Times Base 12p }"
  271. X"    @InitialBreak { adjust 1.2fx }"
  272. X"    @Hyphenate { Yes }"
  273. X"    @PageNumbers { Yes }"
  274. X"    @FirstPageNumber { 1 }"
  275. X"    @Columns { Double }"
  276. X"//"
  277. X"@Text @Begin"
  278. X"..."
  279. X"@End @Text"
  280. X}
  281. XThis shows the six options available with {@Code "@Document"}, and their
  282. Xdefault values.
  283. X@PP
  284. X@Code "@InitialFont" and @Code "@InitialBreak" determine
  285. Xthe overall font and paragraph breaking style; @Code "1.2fx" means that
  286. Xthe inter-line spacing is to be 1.2 times the current font size, measured
  287. Xfrom baseline to baseline.  To get double spacing, use {@Code "2.4fx"},
  288. Xetc.  @Code "@Hyphenate" determines whether hyphenation is permitted or
  289. Xnot, and may be @Code Yes or {@Code No}.
  290. X@PP
  291. X@Code "@PageNumbers" determines whether or not page numbers will be
  292. Xprinted (but not their format), and also may be @Code Yes or {@Code No};
  293. X@Code "@FirstPageNumber" is the number given to the first page; and
  294. X@Code "@Columns" determines the number of columns that @Code "@ColText"
  295. Xproduces, and may be {@Code Single}, {@Code Double}, or {@Code Multi},
  296. Xthe last usually meaning triple.
  297. X@PP
  298. XSince there are default values for the options, it is only necessary to
  299. Xmention those options that are to be changed.  For example, to produce a
  300. Xdocument in Helvetica 10 point font with no page numbers, begin with
  301. X@ID @Code {
  302. X"@Document"
  303. X"    @InitialFont { Helvetica Base 10p }"
  304. X"    @PageNumbers { No }"
  305. X"//"
  306. X}
  307. XDisaster will ensue if the @Code "//" symbol is forgotten.  The
  308. X@Code "@Doc" symbol used previously is just an abbreviation for
  309. X{@Code "@Document //"}.
  310. X@PP
  311. XOf course, these five options only scratch the surface of the possible
  312. Xchanges that could be made.  Section {@NumberOf big.changes} explains
  313. Xhow to make many other and more radical changes to the overall appearance
  314. Xof the document.
  315. X@End @Section
  316. END_OF_FILE
  317.   if test 2068 -ne `wc -c <'doc/tr.begin/s12'`; then
  318.     echo shar: \"'doc/tr.begin/s12'\" unpacked with wrong size!
  319.   fi
  320.   # end of 'doc/tr.begin/s12'
  321. fi
  322. if test -f 'doc/tr.begin/s13' -a "${1}" != "-c" ; then 
  323.   echo shar: Will not clobber existing file \"'doc/tr.begin/s13'\"
  324. else
  325.   echo shar: Extracting \"'doc/tr.begin/s13'\" \(2988 characters\)
  326.   sed "s/^X//" >'doc/tr.begin/s13' <<'END_OF_FILE'
  327. X@Section
  328. X   @Tag { reportlayout }
  329. X   @Title { Technical reports }
  330. X@Begin
  331. X@PP
  332. XThis section describes how to use the DocumentLayout package to produce
  333. Xtechnical reports like the present document.  Type @Code "-ireport" in
  334. Xthe Unix command instead of @Code "-idoc" to use the package in this
  335. Xway.  We present only the differences here; everything else works as
  336. Xbefore.
  337. X@PP
  338. XA technical report begins with a @Code "@Report" symbol analogous to the
  339. X@Code "@Document" symbol described in the previous section.  Here it is,
  340. Xwith its nine options and their default values:
  341. X@ID @Code {
  342. X"@Report"
  343. X"    @Title {}"
  344. X"    @Author {}"
  345. X"    @Institution {}"
  346. X"    @DateLine { @Date }"
  347. X"    @InitialFont { Times Base 12p }"
  348. X"    @InitialBreak { adjust 1.2fx }"
  349. X"    @Hyphenate { Yes }"
  350. X"    @PageNumbers { Yes }"
  351. X"    @Columns { Single }"
  352. X"//"
  353. X}
  354. XThe {@Code "@Title"}, {@Code "@Author"}, and {@Code "@Institution"} options
  355. Xwill be printed on the cover sheet and on the first page; they are formatted
  356. Xusing {@Code "clines @Break"} (see page {@PageOf clines}).  Multiple authors
  357. Xshould be given on separate lines within the @Code "@Author"
  358. Xoption.  {@Code "@DateLine"} appears below the abstract on the cover sheet,
  359. Xand its default value is the current date as shown.  {@Code "@InitialFont"},
  360. X{@Code "@InitialBreak"}, {@Code "@Hyphenate"}, {@Code "@PageNumbers"} and
  361. X{@Code "@Columns"} are as described in the last section, except that there
  362. Xis nothing analogous to @Code "@Text" and {@Code "@ColText"}:  if
  363. X@Code "@Columns" is set to {@Code Double}, the entire document after the
  364. Xtitle will be set in two columns.  There is no @Code "@FirstPageNumber"
  365. Xoption.  As for {@Code "@Document"}, the symbol @Code "//" must follow
  366. Xafter, and disaster will ensue if it is omitted.
  367. X@PP
  368. XIf the technical report has an abstract, it comes next:
  369. X@ID @Code {
  370. X"@Abstract @Begin"
  371. X"..."
  372. X"..."
  373. X"@End @Abstract"
  374. X}
  375. XThe cover sheet of the present report shows how this will
  376. Xappear.  @Code "@Abstract" has a @Code "@Title" option like the ones
  377. Xbelow; its default value is {@I ABSTRACT}.
  378. X@PP
  379. XNext come the sections of the report, each enclosed in a @Code
  380. X"@Section" symbol:
  381. X@ID @Code {
  382. X"@Section"
  383. X"    @Title { Introduction }"
  384. X"@Begin"
  385. X"@PP"
  386. X"..."
  387. X"..."
  388. X"@End @Section"
  389. X}
  390. XNo @Code "@BeginSections" or @Code "@EndSections" symbols are needed.
  391. X The sections may contain subsections, preceded as usual by
  392. X@Code "@BeginSubSections" and followed by {@Code "@EndSubSections"}.
  393. X After the sections there is opportunity for a sequence of appendices,
  394. Xeach of the form
  395. X@ID @Code {
  396. X"@Appendix"
  397. X"    @Title { ... }"
  398. X"@Begin"
  399. X"@PP"
  400. X"..."
  401. X"..."
  402. X"@End @Appendix"
  403. X}
  404. Xbut these are quite optional.  No @Code "@BeginAppendices" and
  405. X@Code "@EndAppendices" symbols are needed.  An appendix may contain
  406. Xsub-appendices via the usual symbols {@Code "@BeginSubAppendices"},
  407. X{@Code "@SubAppendix"}, and {@Code "@BeginSubAppendices"}.  This ends
  408. Xthe input; there is no {@Code "@End @Text"}, and any reference section
  409. Xwill be added automatically.
  410. X@End @Section
  411. END_OF_FILE
  412.   if test 2988 -ne `wc -c <'doc/tr.begin/s13'`; then
  413.     echo shar: \"'doc/tr.begin/s13'\" unpacked with wrong size!
  414.   fi
  415.   # end of 'doc/tr.begin/s13'
  416. fi
  417. if test -f 'doc/tr.eq/s3' -a "${1}" != "-c" ; then 
  418.   echo shar: Will not clobber existing file \"'doc/tr.eq/s3'\"
  419. else
  420.   echo shar: Extracting \"'doc/tr.eq/s3'\" \(3398 characters\)
  421.   sed "s/^X//" >'doc/tr.eq/s3' <<'END_OF_FILE'
  422. X@Section
  423. X   @Title { Spacing }
  424. X@Begin
  425. X@PP
  426. XThere is a basic rule governing the use of white space characters
  427. X(space, tab, and newline) in the input to Lout:  white space between two
  428. Xobjects affects the result; white space between a symbol and its
  429. Xparameter does not.
  430. X@PP
  431. XAlthough this rule is just right most of the time, it is not adequate
  432. Xfor equation formatting.  Getting the horizontal spacing right in
  433. Xequations is a very fiddly business, involving four different sizes of
  434. Xspace (zero, thin, medium, and thick), and different rules for spacing
  435. Xwithin superscripts and subscripts to those applying outside, according
  436. Xto a leading authority [{@Ref knuth84}].  Eq therefore takes the spacing
  437. Xdecisions upon itself, and con&-sequently chooses to ignore all white
  438. Xspace in its input, even between two objects.
  439. X@FootNote {
  440. XThis effect is produced by enclosing the entire equation in
  441. X{@Code "0c @Space"}.  The simplest way to restore the effect of white
  442. Xspace to part of an equation is to enclose that part in a @Code "@Font"
  443. Xsymbol.  Eq also changes the value of the @Code v unit, so if a paragraph
  444. Xof filled text is desired within an equation, it may be necessary to
  445. Xenclose it in a @Code "@Break" symbol. }
  446. X@PP
  447. XEvery symbol provided by Eq has a {@I {full name}}, which denotes the
  448. Xsymbol without any space attached.  Many symbols also
  449. Xhave a {@I {short name}}, which denotes the same symbol with what Eq
  450. Xconsiders to be an appropriate amount of space for that symbol attached
  451. Xto it.  For example, @Eq { lessequal } has full name @Code lessequal
  452. Xand short name {@Code "<="}:
  453. X@IL
  454. X@LI {
  455. X@Code "a lessequal b"
  456. X|7ct
  457. X@Eq { a lessequal b }
  458. X}
  459. X@LI {
  460. X@Code "a <= b"
  461. X|7ct
  462. X@Eq { a <= b }
  463. X}
  464. X@EL
  465. XEq puts a thick space around relation symbols like {@Code "<="}, a
  466. Xmedium space around binary operator symbols like {@Code "+"}, and a thin
  467. Xspace after punctuation symbols (@Code ";" and {@Code ","}); except
  468. Xthat in places where the symbols appear in a smaller size (superscripts,
  469. Xsubscripts, etc.), these spaces are omitted.  No other horizontal space
  470. Xis ever inserted.
  471. X@PP
  472. XThe short names have been carefully designed to produce good-looking
  473. Xmathematics most of the time.  It is best to rely
  474. Xon them in the first instance and only think about spacing when the result
  475. Xis not pleasing.  In that case, Eq's space can be removed by using the
  476. Xfull names, and thin, medium and thick space can be added using the
  477. Xfollowing symbols:
  478. X@ID @Tab
  479. X    vmargin { 0.5vx }
  480. X    @Fmta { @Col A ! @Col B }
  481. X{
  482. X@Rowa
  483. X  A { @Code "`" }
  484. X  B { {@Code "0.18f"}  ({@Code "0.018f"} in subscripts, etc.) }
  485. X@Rowa
  486. X  A { @Code "``" }
  487. X  B { {@Code "0.24f"}  ({@Code "0.024f"} in subscripts, etc.) }
  488. X@Rowa
  489. X  A { @Code "```" }
  490. X  B { {@Code "0.30f"}  ({@Code "0.030f"} in subscripts, etc.) }
  491. X}
  492. Xwhere @Code "1f" is the current font size.  These symbols have low
  493. Xprecedence.  The @Code "&" symbol from standard Lout is also available;
  494. Xthe @Code "s" unit has value 0 and so is not very useful, but one can
  495. Xwrite @Code "&2m" for example for a two em space.  The full names are
  496. Xtedious to remember, so Eq provides a @Code "non" symbol which removes
  497. Xspaces from its right parameter; thus @Code "non <=" is equivalent to
  498. X{@Code "lessequal"}.  There are also {@Code "rel"}, {@Code "bin"}, and
  499. X{@Code "punct"} symbols for telling Eq to add space to the following symbol as
  500. Xthough it was a relation symbol, binary operator, or punctuation symbol.
  501. X@End @Section
  502. END_OF_FILE
  503.   if test 3398 -ne `wc -c <'doc/tr.eq/s3'`; then
  504.     echo shar: \"'doc/tr.eq/s3'\" unpacked with wrong size!
  505.   fi
  506.   # end of 'doc/tr.eq/s3'
  507. fi
  508. if test -f 'doc/tr.impl/s2.2' -a "${1}" != "-c" ; then 
  509.   echo shar: Will not clobber existing file \"'doc/tr.impl/s2.2'\"
  510. else
  511.   echo shar: Extracting \"'doc/tr.impl/s2.2'\" \(3349 characters\)
  512.   sed "s/^X//" >'doc/tr.impl/s2.2' <<'END_OF_FILE'
  513. X@SubSection
  514. X    @Tag { lexical }
  515. X    @Title { Grammatical and lexical structure }
  516. X@Begin
  517. X@PP
  518. XIf objects are to be constructed like mathematical expressions, the
  519. Xnatural notation is a functional language based on operators, as in
  520. XEqn.  The grammar of Lout objects is accordingly
  521. X@ID @Eq {
  522. Xmatrix {
  523. Xobject
  524. Xnextcol
  525. X--> above --> above --> above --> above --> above --> above --> above -->
  526. Xnextcol
  527. X{ object ``` infixop ``` object }
  528. Xlabove gap { "1fx" }
  529. X{ prefixop ``` object }
  530. Xlabove gap { "1fx" }
  531. X{ object ``` postfixop }
  532. Xlabove gap { "1fx" }
  533. X{ noparsop }
  534. Xlabove gap { "1fx" }
  535. X{ literalword }
  536. Xlabove gap { "1fx" }
  537. X{ @Code "{" ``` object ``` @Code "}" }
  538. Xlabove gap { "1fx" }
  539. X{ object ``` object }
  540. Xlabove gap { "1fx" }
  541. X}
  542. X}
  543. Xwhere {@Eq {infixop}}, {@Eq {prefixop}}, {@Eq {postfixop}}, and
  544. X{@Eq {noparsop}} are identifiers naming operators which take 0, 1
  545. Xor 2 parameters, as shown, and @Eq {literalword} is a sequence of
  546. Xnon-space characters, or an arbitrary sequence of characters
  547. Xenclosed in double quotes.  Ambiguities are resolved by precedence
  548. Xand associativity.
  549. X@PP
  550. XThe last production allows a meaning for expressions such as
  551. X{@Code "{}"}, in which an object is missing.  The value of this
  552. X@I {empty object} is a rectangle of size 0 by 0, with one column
  553. Xmark and one row mark, that prints as nothing.
  554. X@PP
  555. XThe second-last production generates sequences of arbitrary objects
  556. Xseparated by white space, called {@I paragraphs}.  Ignoring
  557. Xparagraph breaking for now, the natural meaning is that the two
  558. Xobjects should appear side by side, and Lout's parser accordingly
  559. Xinterpolates an infix horizontal concatenation operator (see below)
  560. Xbetween them.  This operator is associative, so the grammatical
  561. Xambiguity does no harm.  However, the Algol-60 rule that white space
  562. Xshould be significant only as a separator is necessarily broken by
  563. XLout in just this one place.
  564. X@PP
  565. XAlgol-like languages distinguish literal strings from identifiers by
  566. Xenclosing them in quotes, but literals are far too frequent in document
  567. Xformatting for this to be viable.  The conventional solution is to
  568. Xbegin identifiers with a special character, and Lout follows Scribe
  569. X[7] in using "`@'" rather than the "`\\'" of troff
  570. X[8] and @TeX [9].
  571. X@PP
  572. XHowever, Lout takes the unusual step of making an initial "`@'"
  573. Xoptional.  The designers of Eqn apparently considered such
  574. Xcharacters disfiguring in fine-grained input like equations, and
  575. Xthis author agrees.  The implementation is straightforward:  "`@'" is
  576. Xclassed as just another letter, and every word is searched for in
  577. Xthe symbol table.  If it is found, it is an identifier, otherwise it
  578. Xis a literal.  A warning message is printed when a literal beginning
  579. Xwith "`@'" is found, since it is probably a mis-spelt identifier.  No
  580. Xsuch safety net is possible for identifiers without "`@'".
  581. X@PP
  582. XEquation formatting also demands symbols made from punctuation
  583. Xcharacters, such as @Code "+" and {@Code "<="}.  It is traditional to
  584. Xallow such symbols to be juxtaposed, which means that the input
  585. X@ID @Code "<=++"
  586. Xfor example must be interpreted within the lexical analyser by searching
  587. Xthe symbol table for its prefixes in the order {@Code "<=++"},
  588. X{@Code "<=+"}, {@Code "<="}.  Although this takes quadratic time, in
  589. Xpractice such sequences are too short to make a more sophisticated
  590. Xlinear method like tries worthwhile.
  591. X@End @SubSection
  592. END_OF_FILE
  593.   if test 3349 -ne `wc -c <'doc/tr.impl/s2.2'`; then
  594.     echo shar: \"'doc/tr.impl/s2.2'\" unpacked with wrong size!
  595.   fi
  596.   # end of 'doc/tr.impl/s2.2'
  597. fi
  598. if test -f 'doc/tr.impl/s3.1' -a "${1}" != "-c" ; then 
  599.   echo shar: Will not clobber existing file \"'doc/tr.impl/s3.1'\"
  600. else
  601.   echo shar: Extracting \"'doc/tr.impl/s3.1'\" \(2778 characters\)
  602.   sed "s/^X//" >'doc/tr.impl/s3.1' <<'END_OF_FILE'
  603. X@SubSection
  604. X    @Tag { operators }
  605. X    @Title { Operators }
  606. X@Begin
  607. X@PP
  608. XIt is evident from the example of Eqn that user-defined operators are
  609. Xneeded that mimic the primitive ones in taking objects as parameters
  610. Xand returning objects as results.  For example, to define a superscript
  611. Xoperator so that
  612. X@ID @Code "2 sup n"
  613. Xappears as {@Eq {2 sup @R n}}, the following operator definition may
  614. Xbe used:
  615. X@ID @Code {
  616. X"def sup"
  617. X"    precedence 50"
  618. X"    associativity right"
  619. X"    left x"
  620. X"    right y"
  621. X"{"
  622. X"    @OneRow {  |  {-2p @Font y}  ^/0.5fk  x  }"
  623. X"}"
  624. X}
  625. XThe @Code "sup" operator has precedence 50, is right associative, takes
  626. Xtwo objects as parameters passed on the left and right, and returns the
  627. Xobject between braces as result.  This object has the structure
  628. X@ID @I +2p @Font {
  629. X| @ShowMarks @Code y / @ShowMarks @Code x
  630. X}
  631. Xbut with the first row mark hidden by the @Code "@OneRow" operator,
  632. Xand @Code y two points smaller than it would otherwise have been.  The
  633. Xlength @Code "0.5f" specifies half the current font size;  Figure
  634. X{@NumberOf gapmodes} describes the @Code k gap mode.  In the Eq equation
  635. Xformatting package [10] the equation as a whole is
  636. Xset in italic font, and @Code 2 is an identifier whose body contains
  637. Xa font change back to Roman.  The digits @Code 0 to @Code 9 are classed
  638. Xas punctuation characters, permitting @Code 234 for example to be
  639. Xinterpreted as a sequence of three identifiers.
  640. X@PP
  641. XThese definitions are easily implemented by a standard symbol table
  642. Xand an operator precedence parser.  Algol block structure with the
  643. Xusual scope rules was adopted as a matter of course.
  644. X@PP
  645. XOperators are limited to at most two parameters, left and
  646. Xright, and the parameters cannot be given default values.  @I Named
  647. Xparameters solve both problems:
  648. X@ID @Code {
  649. X"def @Preface"
  650. X"    named @Tag {}"
  651. X"    named @Title { Preface }"
  652. X"    right @Body"
  653. X"{"
  654. X"    Bold @Font @Title"
  655. X"    //0.3v  @Body"
  656. X"}"
  657. X}
  658. XThe default value appears just after the parameter's declaration,
  659. Xbetween braces.  Invocations have a natural syntax:
  660. X@ID @Code {
  661. X"@Preface"
  662. X"    @Title { About this book }"
  663. X"{"
  664. X"    Few observers would have supposed in 1984, that ..."
  665. X"}"
  666. X}
  667. Xwith the actual named parameters following directly after the
  668. Xoperator, before any right parameter.  In this example, @Code "@Tag"
  669. Xwill receive its default value, and a less expert user could safely
  670. Xomit the @Code "@Title" parameter as well.
  671. X@PP
  672. XLout permits named parameters to have parameters, a feature with
  673. Xapplications to bibliographic databases, running headers, and other
  674. Xplaces where a format has to be supplied before content is
  675. Xknown.  One could go further and provide a complete lambda calculus,
  676. Xwith functions as first-class objects, provided care was taken not
  677. Xto intimidate the non-expert user.
  678. X@End @SubSection
  679. END_OF_FILE
  680.   if test 2778 -ne `wc -c <'doc/tr.impl/s3.1'`; then
  681.     echo shar: \"'doc/tr.impl/s3.1'\" unpacked with wrong size!
  682.   fi
  683.   # end of 'doc/tr.impl/s3.1'
  684. fi
  685. if test -f 'doc/tr.impl/s3.4' -a "${1}" != "-c" ; then 
  686.   echo shar: Will not clobber existing file \"'doc/tr.impl/s3.4'\"
  687. else
  688.   echo shar: Extracting \"'doc/tr.impl/s3.4'\" \(2778 characters\)
  689.   sed "s/^X//" >'doc/tr.impl/s3.4' <<'END_OF_FILE'
  690. X@SubSection
  691. X    @Tag { defs.impl }
  692. X    @Title { Implementation of definitions }
  693. X@Begin
  694. X@PP
  695. XInput is processed by a hybrid parser which employs operator precedence
  696. Xfor objects and simple recursive descent for the headers of
  697. Xdefinitions.  A symbol table stores the body of each definition as a
  698. Xparse tree, except for macros which are lists of tokens, and manages the
  699. Xusual stack of static scopes, accepting @I PushScope and @I PopScope
  700. Xoperations as the parser enters and leaves scope regions, including
  701. Xactual body parameters and the right parameter of the @Code "@Open"
  702. Xoperator.
  703. X@PP
  704. XAs the parse proceeds, a complete call graph is constructed, recording,
  705. Xfor each symbol, which symbols are invoked within its body.  Immediately
  706. Xafter the last definition is read, the transitive closure of the call
  707. Xgraph is computed, and used to determine whether each non-parameter
  708. Xsymbol is recursive or receptive (Section {@NumberOf galleys}), and
  709. Xwhether each parameter is invoked exactly once or not.
  710. X@PP
  711. XPurely functional systems may evaluate symbol invocations in applicative
  712. Xorder (where parameters are evaluated before substitution into bodies),
  713. Xor in normal order (substitution before evaluation), and they may also
  714. Xshare the value of a parameter among all uses of it.  But in Basser
  715. XLout, the presence of context-sensitive style information (Section
  716. X{@NumberOf style}) forces normal order evaluation and prevents sharing
  717. Xof parameter values.
  718. X@PP
  719. XTo evaluate an unsized object (pure parse tree), its {@I environment},
  720. Xthe equivalent of the stack frames in Algol-like languages, must be
  721. Xavailable, containing the actual values of all formal parameters
  722. Xthat are visible within the unsized object.  Environment handling is
  723. Xa well-known implementation technique, so it will be discussed
  724. Xonly briefly here.
  725. X@PP
  726. XEnvironments are extra subtrees hung from the objects they refer
  727. Xto.  This organization makes excellent use of the ordered dag to
  728. Xpermit environments to be shared, and deleted when the last
  729. Xreference to them is removed.  Several optimizations have been
  730. Ximplemented.  Actual parameters known to be invoked only once are moved
  731. Xin from the environment, not copied; copying could lead to quadratic time
  732. Xcomplexity.  Actual parameters of the form @Code "@Next" @I object
  733. Xreceive an applicative pre-evaluation which prevents long chains of
  734. X@Code "@Next" symbols from forming during the generation of large page
  735. Xnumbers.  Some environments which provably contribute nothing are
  736. Xdeleted, most notably when a symbol invocation has no symbols within its
  737. Xactual parameters and no import list, so that only the environment of its
  738. Xbody need be kept; this saves a great deal of space when objects with
  739. Xenvironments are written to auxiliary files (Section {@NumberOf cross}).
  740. X@End @SubSection
  741. END_OF_FILE
  742.   if test 2778 -ne `wc -c <'doc/tr.impl/s3.4'`; then
  743.     echo shar: \"'doc/tr.impl/s3.4'\" unpacked with wrong size!
  744.   fi
  745.   # end of 'doc/tr.impl/s3.4'
  746. fi
  747. if test -f 'doc/tr.lout/ch0.00' -a "${1}" != "-c" ; then 
  748.   echo shar: Will not clobber existing file \"'doc/tr.lout/ch0.00'\"
  749. else
  750.   echo shar: Extracting \"'doc/tr.lout/ch0.00'\" \(2458 characters\)
  751.   sed "s/^X//" >'doc/tr.lout/ch0.00' <<'END_OF_FILE'
  752. X
  753. X######################################################
  754. X#                                                    #
  755. X#  Start main document off                           #
  756. X#                                                    #
  757. X######################################################
  758. X
  759. X@Book
  760. X   @Title { Document Formatting
  761. X
  762. Xwith Lout }
  763. X   @Author { JEFFREY H. KINGSTON }
  764. X   @Edition { SECOND EDITION
  765. X
  766. X22 June, 1993}
  767. X   @Publisher { @I { @CopyRight Copyright 1991 and 1993, Jeffrey H. Kingston,
  768. XBasser Department of Computer Science, The University
  769. Xof Sydney 2006, Australia.} }
  770. X//
  771. X
  772. X@Preface
  773. X   @Tag { preface }
  774. X@Begin
  775. X@LP
  776. X@IndexBlanks
  777. XThis manual is addressed to those who wish to become
  778. Xexpert users of the document formatting language Lout.  An expert user
  779. Xis someone who understands the principles of document formatting
  780. Xthat Lout embodies, and is able to apply them, for example to design
  781. Xa document format or a special-purpose package.  In contrast, a non-expert
  782. Xuser is someone who simply uses Lout to format documents.
  783. X@PP
  784. XChapter {@NumberOf principles} explains these principles, and it
  785. Xshould be read carefully and in sequence.  Chapters {@NumberOf details}
  786. Xand {@NumberOf symbols} are for reference; respectively, they
  787. Xcontain descriptions of the detailed operation of Lout's major
  788. Xcomponents, and a complete description of each predefined symbol.  The
  789. Xfinal chapter presents a collection of advanced examples.
  790. X@PP
  791. XThis manual presents Version 2.05 of Basser Lout, publicly released in
  792. XJuly 1993 [{@Ref kingston93basser}].  Those familiar
  793. Xwith Version 1 will notice many enhancements, including PostScript
  794. X@FootNote { PostScript is a trademark of Adobe Systems, Inc. }
  795. XEPS file inclusion, optimal paragraph breaking, automatic hyphenation,
  796. Xligatures, and support for the ISO-LATIN-1 character set.
  797. X@PP
  798. XThis manual was printed on an Apple LaserWriter
  799. Xapple.laserwriter @Index { Apple LaserWriter }
  800. X@FootNote { Apple and LaserWriter are trademarks of Apple Computer, Inc. }
  801. Xlaser printer from a PostScript
  802. Xpostscript @Index { PostScript }
  803. Xfile generated by Version 2.05 of the Basser Lout interpreter, using the
  804. XDocumentLayout package [{@Ref kingston92begin}].
  805. X@DP
  806. X@Heading { Acknowledgment. }  Version 2.05 has benefited from hundreds of
  807. Xcomments received since the release of Version 1 in October 1991 and
  808. XVersion 2.01 in early 1993.  Not every suggestion could be followed,
  809. Xbut many have been, and the encouragement was greatly appreciated.
  810. X@End @Preface
  811. END_OF_FILE
  812.   if test 2458 -ne `wc -c <'doc/tr.lout/ch0.00'`; then
  813.     echo shar: \"'doc/tr.lout/ch0.00'\" unpacked with wrong size!
  814.   fi
  815.   # end of 'doc/tr.lout/ch0.00'
  816. fi
  817. if test -f 'doc/tr.lout/ch2.02' -a "${1}" != "-c" ; then 
  818.   echo shar: Will not clobber existing file \"'doc/tr.lout/ch2.02'\"
  819. else
  820.   echo shar: Extracting \"'doc/tr.lout/ch2.02'\" \(3082 characters\)
  821.   sed "s/^X//" >'doc/tr.lout/ch2.02' <<'END_OF_FILE'
  822. X@Section
  823. X  @Tag { visibility }
  824. X  @Title { Nested definitions, body parameters, and import and export }
  825. X@Begin
  826. X@PP
  827. XA definition may contain
  828. Xnested.def @Index { Nested definitions }
  829. Xother definitions at the beginning of its body:
  830. X@ID @Code {
  831. X"def @NineSquare"
  832. X"   right x"
  833. X"{"
  834. X"   def @Three { x |0.2i x |0.2i x }"
  835. X""
  836. X"   @Three /0.2i @Three /0.2i @Three"
  837. X"}"
  838. X}
  839. XA parameter like @Code x may be invoked anywhere within the body of the
  840. Xsymbol it is a parameter of, including within nested definitions.  A
  841. Xnested symbol like @Code "@Three" may be invoked anywhere from the
  842. Xbeginning of its own body to the end of the body of the symbol it is
  843. Xdefined within.  So, assuming an appropriate definition of
  844. X{@Code "@Box"},
  845. X@ID @Code {
  846. X"@NineSquare @Box"
  847. X}
  848. Xhas result
  849. X@ID @Fig {
  850. X@NineSquare @Box { 0.2i @Wide 0.2i @High }
  851. X}
  852. XNested definitions may themselves contain nested definitions, to
  853. Xarbitrary depth.
  854. X@PP
  855. XThere are three special features which permit a nested symbol or
  856. Xparameter to be invoked outside its normal range; that is, outside the
  857. Xbody of the enclosing symbol.  The first and simplest of these features
  858. Xis the {@I {body parameter}},
  859. Xparameter.body @SubIndex { @Code body parameter }
  860. Xbody.par @Index { @Code body parameter }
  861. Xan alternative form of right parameter.  The Eq equation formatting
  862. Xpackage [{@Ref kingston92eq}] is a classic example of the use of a body
  863. Xparameter.  In outline, it looks like this:
  864. X@ID @Code {
  865. X"export \"+\" sup over"
  866. X""
  867. X"def @Eq"
  868. X"    body x"
  869. X"{"
  870. X"    def \"+\" ..."
  871. X"    def sup ..."
  872. X"    def over ..."
  873. X"    ..."
  874. X""
  875. X"    Slope @Font x"
  876. X"}"
  877. X}
  878. XFirst we list those nested symbols and parameters that we intend to
  879. Xrefer to outside the body of @Code "@Eq" in an @Code export clause,
  880. Xexport @Index { @Code export clause }
  881. Xpreceding the definition as shown.  Only exported symbols may be
  882. Xinvoked outside the body of {@Code "@Eq"}.  A body parameter may not be
  883. Xexported.  The body parameter is like a right parameter except that the
  884. Xexported symbols are visible within it:
  885. X@ID @Code {
  886. X"@Eq { {x sup 2 + y sup 2} over 2 }"
  887. X}
  888. Xcalls on the nested definitions of @Code "@Eq" to produce the result
  889. X@ID {
  890. X@Eq { {x sup 2 + y sup 2} over 2 }
  891. X}
  892. XThe body parameter's value must be enclosed in braces.  The term `body
  893. Xparameter' is a reminder that the value is interpreted as if it was
  894. Xwithin the body of the symbol.
  895. X@PP
  896. XThe second place where exported symbols may be used is in the right
  897. Xparameter of the @@Open symbol, and following its alternative form,
  898. X@@Use (Section {@NumberOf open}).
  899. X@PP
  900. XFinally, exported nested symbols and parameters may be made visible within
  901. Xa subsequent definition or macro by preceding it with an @Code import
  902. Ximport @Index { @Code import clause }
  903. Xclause, like this:
  904. X@ID @Code {
  905. X"import @Eq"
  906. X"def pythag { sqrt { x sup 2 + y sup 2 } }"
  907. X}
  908. XNote however that @Code pythag can only be used with some invocation of
  909. X{@Code "@Eq"}:  within the body parameter of an invocation of {@Code "@Eq"},
  910. Xwithin the right parameter of an {@Code "@Eq&&tag @Open"}, or following
  911. Xa @@Use.  There may be several symbols in the @Code import clause.
  912. X@End @Section
  913. END_OF_FILE
  914.   if test 3082 -ne `wc -c <'doc/tr.lout/ch2.02'`; then
  915.     echo shar: \"'doc/tr.lout/ch2.02'\" unpacked with wrong size!
  916.   fi
  917.   # end of 'doc/tr.lout/ch2.02'
  918. fi
  919. if test -f 'doc/tr.lout/ch2.03' -a "${1}" != "-c" ; then 
  920.   echo shar: Will not clobber existing file \"'doc/tr.lout/ch2.03'\"
  921. else
  922.   echo shar: Extracting \"'doc/tr.lout/ch2.03'\" \(2556 characters\)
  923.   sed "s/^X//" >'doc/tr.lout/ch2.03' <<'END_OF_FILE'
  924. X@Section
  925. X  @Tag { named }
  926. X  @Title { Named parameters }
  927. X@Begin
  928. X@PP
  929. XIn addition to left and right (or body) parameters, a symbol may have
  930. Xany number of {@I {named parameters}}:
  931. Xparameter.named @SubIndex { @Code named parameter }
  932. Xnamed.par @Index { @Code named parameter }
  933. X@ID @Code  {
  934. X"def @Chapter"
  935. X"    named @Tag {}"
  936. X"    named @Title {}"
  937. X"    right x"
  938. X"{"
  939. X"    ..."
  940. X"}"
  941. X}
  942. XTheir definitions appear in between those of any left and right
  943. Xparameters, and each is followed by a @I {default value} between
  944. Xdefault @Index { Default value of parameter }
  945. Xbraces.  When @Code "@Chapter" is invoked, its named parameters are
  946. Xgiven values in the following way:
  947. X@ID @Code  {
  948. X"@Chapter"
  949. X"    @Tag { intro }"
  950. X"    @Title { Introduction }"
  951. X"{"
  952. X"    ..."
  953. X"}"
  954. X}
  955. XThat is, a list of named parameters appears immediately following the
  956. Xsymbol, each with its value enclosed in braces.  Any right parameter
  957. Xfollows after them.  They do not have to appear in the order they were
  958. Xdefined, and they can even be omitted altogether, in which case the
  959. Xdefault value from the definition is used instead.
  960. X@PP
  961. XA named @Code "@Tag" parameter
  962. Xtag.par @Index { @Code "@Tag" parameter, default value of }
  963. Xdoes not take its default value from the definition; instead, if a default
  964. Xvalue is needed, Lout invents a simple word which differs from every other
  965. Xtag.  This is important, for example, in the production of numbered
  966. Xchapters and sections (Section {@NumberOf chapters}).
  967. X@PP
  968. XNamed parameters may have parameters, {@PageMark strange} as in the
  969. Xfollowing definition:
  970. X@ID @Code {
  971. X"def @Strange"
  972. X"    named @Format right @Val { [@Val] }"
  973. X"    right x"
  974. X"{"
  975. X"    @Format x"
  976. X"}"
  977. X}
  978. XThe named parameter @Code "@Format" has right parameter {@Code "@Val"},
  979. Xand the default value of @Code "@Format" is this parameter enclosed in
  980. Xbrackets.  When @Code "@Format" is invoked it must be supplied with
  981. Xa right parameter, which will replace {@Code "@Val"}.  Thus,
  982. X@ID @Code {
  983. X"@Strange 27"
  984. X}
  985. Xequals @Code "@Format 27" and so has result
  986. X@ID {
  987. X@Strange 27
  988. X}
  989. XThe @Code "@Format" symbol is like a definition with parameters whose
  990. Xbody can be changed:
  991. X@ID @Code {
  992. X"@Strange"
  993. X"    @Format { Slope @Font @Val. }"
  994. X"27"
  995. X}
  996. Xstill equals {@Code "@Format 27"}, but this time the result is
  997. X@ID {
  998. X@Strange
  999. X    @Format { Slope @Font @Val. }
  1000. X27
  1001. X}
  1002. XIn practice, examples of named parameters with parameters all have this
  1003. Xflavour of format being separated from content; running headers (Section
  1004. X{@NumberOf pagelayout}) and printing styles for bibliographies
  1005. X(Section {@NumberOf biblio}) are two major ones.
  1006. X@End @Section
  1007. END_OF_FILE
  1008.   if test 2556 -ne `wc -c <'doc/tr.lout/ch2.03'`; then
  1009.     echo shar: \"'doc/tr.lout/ch2.03'\" unpacked with wrong size!
  1010.   fi
  1011.   # end of 'doc/tr.lout/ch2.03'
  1012. fi
  1013. if test -f 'doc/tr.lout/ch2.04' -a "${1}" != "-c" ; then 
  1014.   echo shar: Will not clobber existing file \"'doc/tr.lout/ch2.04'\"
  1015. else
  1016.   echo shar: Extracting \"'doc/tr.lout/ch2.04'\" \(2850 characters\)
  1017.   sed "s/^X//" >'doc/tr.lout/ch2.04' <<'END_OF_FILE'
  1018. X@Section
  1019. X   @Title { Precedence and associativity of symbols }
  1020. X   @Tag { precedence }
  1021. X@Begin
  1022. X@PP
  1023. XEvery symbol in Lout has a {@I precedence},
  1024. Xpreceden @Index { Precedence }
  1025. Xwhich is a positive whole number.  When two symbols compete for an object,
  1026. Xthe one with the higher precedence wins it.  For example,
  1027. X@ID @Code {
  1028. X"a  |  b  /  c"
  1029. X}
  1030. Xis equivalent to @OneCol @Code { "{" a "|" b "}" "/" c } rather than
  1031. X{@OneCol @Code { a "|" "{" b "/" c "}"} }, because @Code "|" has higher
  1032. Xprecedence than @Code "/" and thus wins the {@Code b}.
  1033. X@PP
  1034. XWhen the two competing symbols have equal precedence, Lout applies a
  1035. Xsecond rule.  Each symbol is either @I left-associative or
  1036. Xassociativity @Index { Associativity }
  1037. X{@I right-associative}.  The value of @OneCol @Code { a op1 b op2 c} is taken
  1038. Xto be @OneCol @Code { "{" a op1 b "}" op2 c } if the symbols are both
  1039. Xleft-associative, and @OneCol @Code "a op1 { b op2 c }" if they are
  1040. Xright-associative.  In cases not covered by these two rules, use braces.
  1041. X@PP
  1042. XIt sometimes happens that the result is the same regardless of how the
  1043. Xexpression is grouped.  For example, @OneCol @Code { "{" a "|" b "}" "|" c }
  1044. Xand @OneCol @Code { a "|" "{" b "|" c "}" } are always the same, for any
  1045. Xcombination of objects, gaps, and variants of {@Code "|"}.  In such cases
  1046. Xthe symbols are said to be {@I associative}, and we can confidently omit
  1047. Xthe braces.
  1048. X@PP
  1049. XUser-defined symbols may be given a precedence and associativity:
  1050. X@ID @Code {
  1051. X"def @Super"
  1052. X"   precedence 50"
  1053. X"   associativity right"
  1054. X"   left x"
  1055. X"   right y"
  1056. X"{"
  1057. X"   @OneRow { | -2p @Font y ^/0.5fk x }"
  1058. X"}"
  1059. X}
  1060. XThey come just after any @Code into clause and before any parameter
  1061. Xdefinitions.  The precedence may be
  1062. Xany whole number between 10 and 100, and if omitted is assigned the
  1063. Xvalue 100.  The higher the number, the higher the precedence.  The
  1064. Xassociativity may be @Code left or {@Code right}, and if omitted
  1065. Xdefaults to {@Code right}.  Lout's symbols have the following
  1066. Xprecedences and associativities:
  1067. X@ID @Tab
  1068. X   vmargin { 0.5vx }
  1069. X   @Fmta { @Col @CC A ! @Col @CC B ! @Col C }
  1070. X{
  1071. X@Rowa
  1072. X   A { Precedence }
  1073. X   B { Associativity }
  1074. X   C { Symbols }
  1075. X@Rowa
  1076. X@Rowa
  1077. X   A { 5 }
  1078. X   B { associative }
  1079. X   C { @Code "/  ^/  //  ^//" }
  1080. X@Rowa
  1081. X   A { 6 }
  1082. X   B { associative }
  1083. X   C { @Code "|  ^|  ||  ^||" }
  1084. X@Rowa
  1085. X   A { 7 }
  1086. X   B { associative }
  1087. X   C { @Code "&  ^&" }
  1088. X@Rowa
  1089. X   A { 7 }
  1090. X   B { associative }
  1091. X   C { @Code "&" in the form of one or more white space characters }
  1092. X@Rowa
  1093. X   A { 10-100 }
  1094. X   B { @Code left or @Code right }
  1095. X   C { user-defined symbols }
  1096. X@Rowa
  1097. X   A { 100 }
  1098. X   B { @Code right }
  1099. X   C { @@Wide, @@High, @@Graphic, etc. }
  1100. X@Rowa
  1101. X   A { 101 }
  1102. X   B { - }
  1103. X   C { @Code "&&" }
  1104. X@Rowa
  1105. X   A { 102 }
  1106. X   B { associative }
  1107. X   C { @Code "&" in the form of 0 spaces }
  1108. X@Rowa
  1109. X   A { 103 }
  1110. X   B { - }
  1111. X   C { Body parameters and right parameters of @@Open }
  1112. X}
  1113. X@End @Section
  1114. END_OF_FILE
  1115.   if test 2850 -ne `wc -c <'doc/tr.lout/ch2.04'`; then
  1116.     echo shar: \"'doc/tr.lout/ch2.04'\" unpacked with wrong size!
  1117.   fi
  1118.   # end of 'doc/tr.lout/ch2.04'
  1119. fi
  1120. if test -f 'doc/tr.over/s6' -a "${1}" != "-c" ; then 
  1121.   echo shar: Will not clobber existing file \"'doc/tr.over/s6'\"
  1122. else
  1123.   echo shar: Extracting \"'doc/tr.over/s6'\" \(2574 characters\)
  1124.   sed "s/^X//" >'doc/tr.over/s6' <<'END_OF_FILE'
  1125. X@Section
  1126. X   @Title { Cross references }
  1127. X@Begin
  1128. X@PP
  1129. XThe terms @Code "@TextPlace&&preceding" and @Code "@FootPlace&&following"
  1130. Xused above can be thought of as arrows in the final printed document,
  1131. Xpointing from themselves to the place they name.  Expressed in this way,
  1132. Xfree of any reference to the internal action of the document formatter,
  1133. Xthey are easy to comprehend and work with.  These arrows are called
  1134. Xcross references in Lout.
  1135. X@PP
  1136. XA galley is transported forwards along its arrow, but it turns out that
  1137. Xa reverse flow of information can also be very useful.  For example,
  1138. Xlarge documents often have cross references such as `see Table 6 on page
  1139. X57.'  If the numbers are replaced by arrows pointing to the table in
  1140. Xquestion, it should be possible to have their values filled in
  1141. Xautomatically (an idea introduced by Scribe [{@Ref reid80}]).  An arrow
  1142. Xpointing outside the docu&-ment could retrieve an entry from a database of
  1143. Xreferences, Roman numerals, etc.  And a running page header like
  1144. X`Chapter 8:  Sorting' might obtain its value from an arrow pointing from
  1145. Xthe page header line down into the body text of the page, where the
  1146. Xcurrent chapter is known.
  1147. X@PP
  1148. XAll these ideas are realized in Lout, but here we will just sketch a
  1149. Xsimplified version of the running page header definitions found in the
  1150. XBookLayout package [{@Ref kingston92begin}].  A symbol called
  1151. X@Code "@Runner" is first defined:
  1152. X@ID @Code {
  1153. X"def @Runner"
  1154. X"    right @Val"
  1155. X"{}"
  1156. X}
  1157. X@Code "@Runner" produces nothing at all, which means that we may place
  1158. Xthe invocation
  1159. X@ID @Code {
  1160. X"@Runner { Chapter"
  1161. X"8:  Sorting }"
  1162. X}
  1163. Xat the end of a chapter without harm.  This invisible invocation will be
  1164. Xcarried along with the chapter and will end up on some page of the final
  1165. Xprinted document.
  1166. X@PP
  1167. XBy modifying the definition of {@Code "@PageList"}, we can add to each
  1168. Xpage a header line containing the expression
  1169. X@ID @Code {
  1170. X"@Runner&&following"
  1171. X"@Open { @Val }"
  1172. X}
  1173. XThis means `find the nearest following invocation of @Code "@Runner" in the
  1174. Xfinal printed document and retrieve its @Code "@Val" parameter.' Every page
  1175. Xof Chapter 8 will find the correct running header, since @Code "@Runner"
  1176. Xwas placed at the end of the chapter.  The invocation @Code "@Runner {}"
  1177. Xplaced at the beginning of the chapter will suppress the header on the
  1178. Xfirst page of the chapter, as it is conventional to do.
  1179. X@PP
  1180. XThese invocations of @Code "@Runner" are hidden from the non-expert user
  1181. Xwithin the definition of the @Code "@Chapter" operator.  The result is a
  1182. Xreliable implementation of a notoriously difficult feature.
  1183. X@End @Section
  1184. END_OF_FILE
  1185.   if test 2574 -ne `wc -c <'doc/tr.over/s6'`; then
  1186.     echo shar: \"'doc/tr.over/s6'\" unpacked with wrong size!
  1187.   fi
  1188.   # end of 'doc/tr.over/s6'
  1189. fi
  1190. if test -f 'doc/tr.over/setup' -a "${1}" != "-c" ; then 
  1191.   echo shar: Will not clobber existing file \"'doc/tr.over/setup'\"
  1192. else
  1193.   echo shar: Extracting \"'doc/tr.over/setup'\" \(2864 characters\)
  1194.   sed "s/^X//" >'doc/tr.over/setup' <<'END_OF_FILE'
  1195. X
  1196. X######################################################
  1197. X#                                                    #
  1198. X#  Lout setup file for Overview paper.               #
  1199. X#                                                    #
  1200. X#  Jeffrey H. Kingston                               #
  1201. X#  8 June 1991                                       #
  1202. X#  23 December 1991                                  #
  1203. X#                                                    #
  1204. X######################################################
  1205. X
  1206. X@SysInclude { ft  }
  1207. X@SysInclude { dl  }
  1208. X@SysInclude { eq  }
  1209. X@SysInclude { fig }
  1210. X
  1211. X   def @Code
  1212. X      right x
  1213. X   { { Helvetica Base -1p } @Font lines @Break x
  1214. X   }
  1215. X
  1216. X   def @ShowMarks
  1217. X      named linewidth  { 0.015 cm }
  1218. X      named linestyle  { dashed   }
  1219. X      named dashlength { 0.15 cm  }
  1220. X      named paint      { light    }
  1221. X      right x
  1222. X   {
  1223. X      @Fig
  1224. X      {   @Box margin { 0c } linewidth { linewidth } paint { paint }
  1225. X      {   @Figure
  1226. X         shape { -0.3 cm ymark
  1227. X             {xsize ymark} ++ {0.3 cm 0}  []
  1228. X             xmark -0.3 cm
  1229. X             {xmark ysize} ++ {0 0.3 cm}
  1230. X               }
  1231. X         linewidth { linewidth }
  1232. X         linestyle { linestyle }
  1233. X         dashlength { dashlength }
  1234. X          x
  1235. X      }
  1236. X
  1237. X      }
  1238. X   }
  1239. X
  1240. X   def @TeX { T{ /0.2fo E}X }
  1241. X
  1242. X   def @Leaders { ..   @Leaders }
  1243. X
  1244. X   ###################################################
  1245. X   #                                                 #
  1246. X   #  Interpolated example documents.                #
  1247. X   #                                                 #
  1248. X   ###################################################
  1249. X
  1250. X   def @HLine
  1251. X   { 
  1252. X         { 0 0 moveto xsize 0 lineto stroke } @Graphic {}
  1253. X   }
  1254. X
  1255. X   def @LittleEndRunPlace { @Galley }
  1256. X   def @LittleEndRun
  1257. X      force into { @LittleEndRunPlace&&preceding }
  1258. X   {}
  1259. X
  1260. X   def @LittleTextPlace { @Galley }
  1261. X   def @LittleText into { @LittleTextPlace&&preceding }
  1262. X      right x
  1263. X   { x
  1264. X   }
  1265. X
  1266. X   def @LittleFootPlace { @Galley }
  1267. X   def @LittleFootNote into { @LittleFootPlace&&following }
  1268. X      right x
  1269. X   { x
  1270. X   }
  1271. X
  1272. X   def @LittlePageColumn
  1273. X      right x
  1274. X   {
  1275. X        9px @Break 8p @Font
  1276. X        2.8c @Wide x
  1277. X   }
  1278. X
  1279. X   def @LittlePage
  1280. X      right x
  1281. X   {
  1282. X      @HContract @VContract
  1283. X      { 0 0 moveto xsize 0 lineto xsize ysize lineto
  1284. X    0 ysize lineto closepath stroke } @Graphic
  1285. X      {  //0.3c ||0.3c
  1286. X         9px @Break 8p @Font
  1287. X         2.8c @Wide 3.8c @High x
  1288. X         ||0.3c //0.3c
  1289. X      }
  1290. X   }
  1291. X
  1292. X   def @LittleFootSect
  1293. X   {  1c @Wide @HLine
  1294. X      //0.3v @LittleFootPlace ||0.5c
  1295. X   }
  1296. X
  1297. X   def @LittlePageList
  1298. X     right @PageNum
  1299. X   {
  1300. X      @LittlePage { |0.5rt - @PageNum - //0.8v
  1301. X        //0.3v @LittleTextPlace
  1302. X        //1rt @LittleFootSect
  1303. X         }
  1304. X      //
  1305. X      @LittlePageList @Next @PageNum
  1306. X   }
  1307. X
  1308. X   def @LittleDocument
  1309. X   {  @LittlePage
  1310. X      {  @LittleTextPlace
  1311. X         //1rt @LittleFootSect
  1312. X      }
  1313. X      // @LittlePageList 2
  1314. X      // @LittleEndRunPlace
  1315. X   }
  1316. X        
  1317. X@Use { @DocumentLayout }
  1318. X
  1319. X@SysDatabase @Reference { loutrefs }
  1320. END_OF_FILE
  1321.   if test 2864 -ne `wc -c <'doc/tr.over/setup'`; then
  1322.     echo shar: \"'doc/tr.over/setup'\" unpacked with wrong size!
  1323.   fi
  1324.   # end of 'doc/tr.over/setup'
  1325. fi
  1326. if test -f 'doc/tr.tab/s1' -a "${1}" != "-c" ; then 
  1327.   echo shar: Will not clobber existing file \"'doc/tr.tab/s1'\"
  1328. else
  1329.   echo shar: Extracting \"'doc/tr.tab/s1'\" \(2564 characters\)
  1330.   sed "s/^X//" >'doc/tr.tab/s1' <<'END_OF_FILE'
  1331. X@Section
  1332. X   @Title { Introduction }
  1333. X@Begin
  1334. X@PP
  1335. XThe Tab table formatting package is designed to simplify the production
  1336. Xof tables in documents produced with the Lout document formatting system
  1337. X[{@Ref kingston92}].  Tab aligns entries in columns, draws boxes and
  1338. Xrules, and so on.  To use Tab, either place @Code "-itab" on the Unix
  1339. X@FootNote { Unix is a trademark of "AT&T" Bell Laboratories. }
  1340. Xcommand line, or @Code "@SysInclude { tab }" in the setup file.
  1341. X@PP
  1342. XTo begin with a very simple example, the table
  1343. X@CD
  1344. X@Tab
  1345. X    @Fmta { @Col A  !  @Col B  !  @Col C }
  1346. X{
  1347. X    @Rowa A { Austen } B { Chaucer } C { Donne }
  1348. X    @Rowa A { Balzac } B { Darwin } C { Goethe }
  1349. X    @Rowa A { Byron } B { Dickens } C { Homer }
  1350. X}
  1351. Xis the result of the following Lout input:
  1352. X@ID @Code {
  1353. X"@Tab"
  1354. X"    @Fmta { @Col A  !  @Col B  !  @Col C }"
  1355. X"{"
  1356. X"    @Rowa A { Austen } B { Chaucer } C { Donne }"
  1357. X"    @Rowa A { Balzac } B { Darwin } C { Goethe }"
  1358. X"    @Rowa A { Byron } B { Dickens } C { Homer }"
  1359. X"}"
  1360. X}
  1361. XImmediately after the @Code "@Tab" symbol, which introduces the table,
  1362. Xcomes a @I { format option } & , {@Code "@Fmta"}, describing the format
  1363. Xof each row.  It says that each row contains three columns:
  1364. X{@Code "@Col A"}, {@Code "@Col B"}, and {@Code "@Col C"}.  The format
  1365. Xoption may have up to 26 columns, with names chosen freely
  1366. Xfrom the upper-&-case letters from @Code A to {@Code Z}.  The symbol
  1367. X@Code "!" separates each pair of columns.
  1368. X@PP
  1369. XAfter the format option comes the body of the table, enclosed in
  1370. Xbraces.  It consists entirely of a sequence of rows, each introduced by
  1371. Xthe @Code "@Rowa" symbol and containing one entry for each column of the
  1372. Xformat option, as shown (the row may occupy any number of lines of the
  1373. Xinput file).  The entries may be arbitrary Lout objects, such as words,
  1374. Xparagraphs, equations, figures, and so on without restriction.  An entry
  1375. Xmay be omitted altogether if it is empty.  Lout will choose suitable widths
  1376. Xfor the columns, and break paragraphs in the entries to the right widths.
  1377. X@PP
  1378. XTab neither knows nor cares what happens to the table it produces; it
  1379. Xcould appear at any point in the document, even within a paragraph of
  1380. Xtext.  Most commonly, though, tables are displayed using the 
  1381. X@Code "@IndentedDisplay" and @Code "@CentredDisplay" symbols from the
  1382. XDocumentLayout package [{@Ref kingston92begin}]:
  1383. X@ID @Code "@CentredDisplay @Tab ..."
  1384. Xor else they go into the @Code "@Table" symbol:
  1385. X@ID @Code {
  1386. X"@Table"
  1387. X"    @Caption { ... }"
  1388. X"@Tab"
  1389. X"{ ..."
  1390. X"}"
  1391. X}
  1392. Xwhich centres them at the top of the following page and adds a caption.
  1393. X@End @Section
  1394. END_OF_FILE
  1395.   if test 2564 -ne `wc -c <'doc/tr.tab/s1'`; then
  1396.     echo shar: \"'doc/tr.tab/s1'\" unpacked with wrong size!
  1397.   fi
  1398.   # end of 'doc/tr.tab/s1'
  1399. fi
  1400. if test -f 'doc/tr.tab/s3' -a "${1}" != "-c" ; then 
  1401.   echo shar: Will not clobber existing file \"'doc/tr.tab/s3'\"
  1402. else
  1403.   echo shar: Extracting \"'doc/tr.tab/s3'\" \(2783 characters\)
  1404.   sed "s/^X//" >'doc/tr.tab/s3' <<'END_OF_FILE'
  1405. X@Section
  1406. X   @Title { Changing the style of rows }
  1407. X@Begin
  1408. X@PP
  1409. XSometimes different rows need different formats, usually because they
  1410. Xare headings.  Although this can be done with style-changing symbols in
  1411. Xthe entries, it is probably better to use multiple format options:
  1412. X@ID @Code {
  1413. X"@Tab"
  1414. X"    @Fmta { @Col @Heading A  !  @Col @Heading B }"
  1415. X"    @Fmtb { @Col @A  !  @Col @CC B }"
  1416. X"{"
  1417. X"    @Rowa A { Course } B { Enrolment }"
  1418. X"    @Rowb A { Software Engineering } B { 174 }"
  1419. X"    @Rowb A { Complexity Theory } B { 37 }"
  1420. X"}"
  1421. X}
  1422. Xhas result
  1423. X@CD {
  1424. X@Tab
  1425. X    @Fmta { @Col @Heading A  !  @Col @Heading B }
  1426. X    @Fmtb { @Col A  !  @Col @CC B }
  1427. X{
  1428. X    @Rowa A { Course } B { Enrolment }
  1429. X    @Rowb A { Software Engineering } B { 174 }
  1430. X    @Rowb A { Complexity Theory } B { 37 }
  1431. X}
  1432. X}
  1433. XWe have used the @Code "@Heading" symbol from the DocumentLayout package
  1434. Xjust to prove that it can be done.  Each row appears in the format of
  1435. Xthe corresponding format option:  @Code "@Rowa" rows in the format of
  1436. X{@Code "@Fmta"}, @Code "@Rowb" rows in the format of {@Code "@Fmtb"},
  1437. Xand so on.  There may be up to ten different format options, from
  1438. X@Code "@Fmta" to {@Code "@Fmtj"}, and they may be used repeatedly and
  1439. Xin any order.
  1440. X@PP
  1441. XThere is an @Code "@Over" symbol for constructing
  1442. X{@I{spanning columns}}:  columns that spread over two or more following
  1443. Xcolumns.  For example, the Lout input
  1444. X@ID @Code {
  1445. X"@I @Tab"
  1446. X"    @Fmta { @Col @CC X @Over A,B  !  @Col C }"
  1447. X"    @Fmtb { @Col A  !  @Col B  !  @Col C }"
  1448. X"{"
  1449. X"    @Rowa X { X } C { C }"
  1450. X"    @Rowb A { A } B { B } C { C }"
  1451. X"}"
  1452. X}
  1453. Xproduces the table
  1454. X@CD {
  1455. X@I @Tab
  1456. X    side { single }
  1457. X    @Fmta { @Col @CC X @Over A,B !! @Col C }
  1458. X    @Fmtb { @Col A !! @Col B !! @Col C }
  1459. X{
  1460. X    @Rowa X { X } C { C }
  1461. X       above { single }
  1462. X       below { single }
  1463. X    @Rowb A { A } B { B } C { C }
  1464. X       below { single }
  1465. X}
  1466. X}
  1467. X(We will see how to get the lines later.)  The @Code "@Over" symbol
  1468. Xalways comes directly after the column letter, and it is followed by one
  1469. Xor more letters separated by commas indicating which columns in the
  1470. Xfollowing row this column is to span over.
  1471. X@PP
  1472. XWith multiple row formats, especially those with spanning columns, it is
  1473. Ximportant to take care that each row is compatible with the one
  1474. Xpreceding it, in the sense of having the same number of columns, taking
  1475. X@Code "@Over" symbols into account.  For example, two successive
  1476. X@Code "@Rowa" rows would not be compatible in the example above, since
  1477. Xthe second has only two columns but the first prepares the way for three.
  1478. X@PP
  1479. XTab does not provide a way to have spanning columns underneath the columns
  1480. Xthey span, so spanning columns are useful only for headings.  This
  1481. Xrestriction was made necessary by inadequacies in the
  1482. Xway that the Basser Lout interpreter handles spanning columns.
  1483. X@End @Section
  1484. END_OF_FILE
  1485.   if test 2783 -ne `wc -c <'doc/tr.tab/s3'`; then
  1486.     echo shar: \"'doc/tr.tab/s3'\" unpacked with wrong size!
  1487.   fi
  1488.   # end of 'doc/tr.tab/s3'
  1489. fi
  1490. if test -f 'evec/LoutLatin1.CEV' -a "${1}" != "-c" ; then 
  1491.   echo shar: Will not clobber existing file \"'evec/LoutLatin1.CEV'\"
  1492. else
  1493.   echo shar: Extracting \"'evec/LoutLatin1.CEV'\" \(1953 characters\)
  1494.   sed "s/^X//" >'evec/LoutLatin1.CEV' <<'END_OF_FILE'
  1495. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1496. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1497. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1498. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1499. Xspace        exclam        quotedbl    numbersign    dollar        percent        ampersand    quoteright
  1500. Xparenleft    parenright    asterisk    plus        comma        hyphen        period        slash
  1501. Xzero        one        two        three        four        five        six        seven
  1502. Xeight        nine        colon        semicolon    less        equal        greater        question
  1503. Xat        A        B        C        D        E        F        G
  1504. XH        I        J        K        L        M        N        O
  1505. XP        Q        R        S        T        U        V        W
  1506. XX        Y        Z        bracketleft    backslash    bracketright    asciicircum    underscore
  1507. Xquoteleft    a        b        c        d        e        f        g
  1508. Xh        i        j        k        l        m        n        o
  1509. Xp        q        r        s        t        u        v        w
  1510. Xx        y        z        braceleft    bar        braceright    asciitilde    .notdef
  1511. X.notdef        .notdef        .notdef        .notdef        .notdef        quotedblleft    quotedblright    fi
  1512. Xfl        endash        emdash        bullet        dagger        daggerdbl    florin        fraction
  1513. Xdotlessi    grave        acute        circumflex    tilde        macron        breve        dotaccent
  1514. Xdieresis    .notdef        ring        cedilla        .notdef        hungarumlaut    ogonek        caron
  1515. Xspace        exclamdown    cent        sterling    currency    yen        brokenbar    section
  1516. Xdieresis    copyright    ordfeminine    guillemotleft    logicalnot    hyphen        registered    macron
  1517. Xdegree        plusminus    twosuperior    threesuperior    acute        mu        paragraph    periodcentered
  1518. Xcedilla        onesuperior    ordmasculine    guillemotright    onequarter    onehalf        threequarters    questiondown
  1519. XAgrave        Aacute        Acircumflex    Atilde        Adieresis    Aring        AE        Ccedilla
  1520. XEgrave        Eacute        Ecircumflex    Edieresis    Igrave        Iacute        Icircumflex    Idieresis
  1521. XEth        Ntilde        Ograve        Oacute        Ocircumflex    Otilde        Odieresis    multiply
  1522. XOslash        Ugrave        Uacute        Ucircumflex    Udieresis    Yacute        Thorn        germandbls
  1523. Xagrave        aacute        acircumflex    atilde        adieresis    aring        ae        ccedilla
  1524. Xegrave        eacute        ecircumflex    edieresis    igrave        iacute        icircumflex    idieresis
  1525. Xeth        ntilde        ograve        oacute        ocircumflex    otilde        odieresis    divide
  1526. Xoslash        ugrave        uacute        ucircumflex    udieresis    yacute        thorn        ydieresis
  1527. END_OF_FILE
  1528.   if test 1953 -ne `wc -c <'evec/LoutLatin1.CEV'`; then
  1529.     echo shar: \"'evec/LoutLatin1.CEV'\" unpacked with wrong size!
  1530.   fi
  1531.   # end of 'evec/LoutLatin1.CEV'
  1532. fi
  1533. if test -f 'evec/README' -a "${1}" != "-c" ; then 
  1534.   echo shar: Will not clobber existing file \"'evec/README'\"
  1535. else
  1536.   echo shar: Extracting \"'evec/README'\" \(2146 characters\)
  1537.   sed "s/^X//" >'evec/README' <<'END_OF_FILE'
  1538. XDirectory lout/evec - character encoding vector (CEV) files
  1539. X
  1540. XThis directory contains character encoding vector (CEV) files,
  1541. Xdescribing mappings from 8-bit character codes to the character
  1542. Xnames found in AFM files.  The CEV format is hereby defined as
  1543. X256 character names, separated by arbitrary blank spaces and
  1544. Xnewlines.  Comments and other matter are not permitted.  See
  1545. Xthe accompanying files for examples.
  1546. X
  1547. X  Std.CEV        The StandardEncoding encoding vector, exactly
  1548. X                 as on page 598 of the PostScript LRM 2nd Ed.
  1549. X
  1550. X  Latin1.CEV     The ISOLatin1Encoding encoding vector, exactly
  1551. X                 as on page 599 of the PostScript LRM 2nd Ed.
  1552. X                 This is not usable with Lout as it stands
  1553. X                 because the ligature characters fi and fl have
  1554. X                 no encoding, and because the standard packages
  1555. X         use characters that are not in this encoding.
  1556. X
  1557. X  LoutLatin1.CEV Equal to Latin1.CEV augmented with the following
  1558. X                 characters used by Lout and its standard packages:
  1559. X
  1560. X           quotedblleft      \205  used in DocumentLayout
  1561. X           quotedblright  \206  used in DocumentLayout
  1562. X           fi          \207    must encode all ligatures
  1563. X           fl          \210    must encode all ligatures
  1564. X           endash      \211    used in DocumentLayout
  1565. X           emdash      \212    used in DocumentLayout
  1566. X           bullet      \213    used in DocumentLayout
  1567. X           dagger      \214    used in DocumentLayout
  1568. X           daggerdbl      \215    used in DocumentLayout
  1569. X           florin      \216    used in DocumentLayout
  1570. X           fraction      \217    used in Pas
  1571. X
  1572. X         Also the character at position \055 has been
  1573. X         changed from minus to hyphen; the minus character
  1574. X         is not encoded in this vector.
  1575. X
  1576. X  Symb.CEV       The Symbol encoding vector, exactly as on page
  1577. X                 606 of the PostScript LRM 2nd Ed.
  1578. X
  1579. X  Ding.CEV       The Zapf Dingbats encoding vector, taken from
  1580. X                 the Zapf Dingbats AFM file.
  1581. X
  1582. X  null.oct       Useful skeleton files for building encoding
  1583. X  null.dec       vectors, given octal or decimal character code
  1584. X                 info.  Don't forget to delete the leftmost
  1585. X                 column, which is just a construction guide.
  1586. X
  1587. XJeffrey H. Kingston
  1588. X6 June 1993
  1589. END_OF_FILE
  1590.   if test 2146 -ne `wc -c <'evec/README'`; then
  1591.     echo shar: \"'evec/README'\" unpacked with wrong size!
  1592.   fi
  1593.   # end of 'evec/README'
  1594. fi
  1595. if test -f 'evec/Symb.CEV' -a "${1}" != "-c" ; then 
  1596.   echo shar: Will not clobber existing file \"'evec/Symb.CEV'\"
  1597. else
  1598.   echo shar: Extracting \"'evec/Symb.CEV'\" \(2319 characters\)
  1599.   sed "s/^X//" >'evec/Symb.CEV' <<'END_OF_FILE'
  1600. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1601. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1602. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1603. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1604. Xspace        exclam        universal    numbersign    existential    percent        ampersand    suchthat
  1605. Xparenleft    parenright    asteriskmath    plus        comma        minus        period        slash
  1606. Xzero        one        two        three        four        five        six        seven
  1607. Xeight        nine        colon        semicolon    less        equal        greater        question
  1608. Xcongruent    Alpha        Beta        Chi        Delta        Epsilon        Phi        Gamma
  1609. XEta        Iota        theta1        Kappa        Lambda        Mu        Nu        Omicron
  1610. XPi        Theta        Rho        Sigma        Tau        Upsilon        sigma1        Omega
  1611. XXi        Psi        Zeta        bracketleft    therefore    bracketright    perpendicular    underscore
  1612. Xradicalex    alpha        beta        chi        delta        epsilon        phi        gamma
  1613. Xeta        iota        phi1        kappa        lambda        mu        nu        omicron
  1614. Xpi        theta        rho        sigma        tau        upsilon        omega1        omega
  1615. Xxi        psi        zeta        braceleft    bar        braceright    similar        .notdef
  1616. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1617. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1618. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1619. X.notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1620. X.notdef        Upsilon1    minute        lessequal    fraction    infinity    florin        club
  1621. Xdiamond        heart        spade        arrowboth    arrowleft    arrowup        arrowright    arrowdown
  1622. Xdegree        plusminus    second        greaterequal    multiply    proportional    partialdiff    bullet
  1623. Xdivide        notequal    equivalence    approxequal    ellipsis    arrowvertex    arrowhorizex    carriagereturn
  1624. Xaleph        Ifraktur    Rfraktur    weierstrass    circlemultiply    circleplus    emptyset    intersection
  1625. Xunion        propersuperset    reflexsuperset    notsubset    propersubset    reflexsubset    element        notelement
  1626. Xangle        gradient    registerserif    copyrightserif    trademarkserif    product        radical        dotmath
  1627. Xlogicalnot    logicaland    logicalor    arrowdblboth    arrowdblleft    arrowdblup    arrowdblright    arrowdbldown
  1628. Xlozenge        angleleft    registersans    copyrightsans    trademarksans    summation    parenlefttp    parenleftex
  1629. Xparenleftbt    bracketlefttp    bracketleftex    bracketleftbt    bracelefttp    braceleftmid    braceleftbt    braceex
  1630. X.notdef        angleright    integral    integraltp    integralex    integralbt    parenrighttp    parenrightex
  1631. Xparenrightbt    bracketrighttp    bracketrightex    bracketrightbt    bracerighttp    bracerightmid    bracerightbt    .notdef
  1632. END_OF_FILE
  1633.   if test 2319 -ne `wc -c <'evec/Symb.CEV'`; then
  1634.     echo shar: \"'evec/Symb.CEV'\" unpacked with wrong size!
  1635.   fi
  1636.   # end of 'evec/Symb.CEV'
  1637. fi
  1638. if test -f 'evec/null.dec' -a "${1}" != "-c" ; then 
  1639.   echo shar: Will not clobber existing file \"'evec/null.dec'\"
  1640. else
  1641.   echo shar: Extracting \"'evec/null.dec'\" \(2460 characters\)
  1642.   sed "s/^X//" >'evec/null.dec' <<'END_OF_FILE'
  1643. X000    .notdef        .notdef        .notdef        .notdef        .notdef
  1644. X005    .notdef        .notdef        .notdef        .notdef        .notdef
  1645. X010    .notdef        .notdef        .notdef        .notdef        .notdef
  1646. X015    .notdef        .notdef        .notdef        .notdef        .notdef
  1647. X020    .notdef        .notdef        .notdef        .notdef        .notdef
  1648. X025    .notdef        .notdef        .notdef        .notdef        .notdef
  1649. X030    .notdef        .notdef        .notdef        .notdef        .notdef
  1650. X035    .notdef        .notdef        .notdef        .notdef        .notdef
  1651. X040    .notdef        .notdef        .notdef        .notdef        .notdef
  1652. X045    .notdef        .notdef        .notdef        .notdef        .notdef
  1653. X050    .notdef        .notdef        .notdef        .notdef        .notdef
  1654. X055    .notdef        .notdef        .notdef        .notdef        .notdef
  1655. X060    .notdef        .notdef        .notdef        .notdef        .notdef
  1656. X065    .notdef        .notdef        .notdef        .notdef        .notdef
  1657. X070    .notdef        .notdef        .notdef        .notdef        .notdef
  1658. X075    .notdef        .notdef        .notdef        .notdef        .notdef
  1659. X080    .notdef        .notdef        .notdef        .notdef        .notdef
  1660. X085    .notdef        .notdef        .notdef        .notdef        .notdef
  1661. X090    .notdef        .notdef        .notdef        .notdef        .notdef
  1662. X095    .notdef        .notdef        .notdef        .notdef        .notdef
  1663. X100    .notdef        .notdef        .notdef        .notdef        .notdef
  1664. X105    .notdef        .notdef        .notdef        .notdef        .notdef
  1665. X110    .notdef        .notdef        .notdef        .notdef        .notdef
  1666. X115    .notdef        .notdef        .notdef        .notdef        .notdef
  1667. X120    .notdef        .notdef        .notdef        .notdef        .notdef
  1668. X125    .notdef        .notdef        .notdef        .notdef        .notdef
  1669. X130    .notdef        .notdef        .notdef        .notdef        .notdef
  1670. X135    .notdef        .notdef        .notdef        .notdef        .notdef
  1671. X140    .notdef        .notdef        .notdef        .notdef        .notdef
  1672. X145    .notdef        .notdef        .notdef        .notdef        .notdef
  1673. X150    .notdef        .notdef        .notdef        .notdef        .notdef
  1674. X155    .notdef        .notdef        .notdef        .notdef        .notdef
  1675. X160    .notdef        .notdef        .notdef        .notdef        .notdef
  1676. X165    .notdef        .notdef        .notdef        .notdef        .notdef
  1677. X170    .notdef        .notdef        .notdef        .notdef        .notdef
  1678. X175    .notdef        .notdef        .notdef        .notdef        .notdef
  1679. X180    .notdef        .notdef        .notdef        .notdef        .notdef
  1680. X185    .notdef        .notdef        .notdef        .notdef        .notdef
  1681. X190    .notdef        .notdef        .notdef        .notdef        .notdef
  1682. X195    .notdef        .notdef        .notdef        .notdef        .notdef
  1683. X200    .notdef        .notdef        .notdef        .notdef        .notdef
  1684. X205    .notdef        .notdef        .notdef        .notdef        .notdef
  1685. X210    .notdef        .notdef        .notdef        .notdef        .notdef
  1686. X215    .notdef        .notdef        .notdef        .notdef        .notdef
  1687. X220    .notdef        .notdef        .notdef        .notdef        .notdef
  1688. X225    .notdef        .notdef        .notdef        .notdef        .notdef
  1689. X230    .notdef        .notdef        .notdef        .notdef        .notdef
  1690. X235    .notdef        .notdef        .notdef        .notdef        .notdef
  1691. X240    .notdef        .notdef        .notdef        .notdef        .notdef
  1692. X245    .notdef        .notdef        .notdef        .notdef        .notdef
  1693. X250    .notdef        .notdef        .notdef        .notdef        .notdef
  1694. X255    .notdef
  1695. END_OF_FILE
  1696.   if test 2460 -ne `wc -c <'evec/null.dec'`; then
  1697.     echo shar: \"'evec/null.dec'\" unpacked with wrong size!
  1698.   fi
  1699.   # end of 'evec/null.dec'
  1700. fi
  1701. if test -f 'evec/null.oct' -a "${1}" != "-c" ; then 
  1702.   echo shar: Will not clobber existing file \"'evec/null.oct'\"
  1703. else
  1704.   echo shar: Extracting \"'evec/null.oct'\" \(2400 characters\)
  1705.   sed "s/^X//" >'evec/null.oct' <<'END_OF_FILE'
  1706. X000    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1707. X010    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1708. X020    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1709. X030    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1710. X040    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1711. X050    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1712. X060    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1713. X070    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1714. X100    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1715. X110    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1716. X120    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1717. X130    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1718. X140    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1719. X150    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1720. X160    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1721. X170    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1722. X200    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1723. X210    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1724. X220    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1725. X230    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1726. X240    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1727. X250    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1728. X260    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1729. X270    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1730. X300    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1731. X310    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1732. X320    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1733. X330    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1734. X340    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1735. X350    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1736. X360    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1737. X370    .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef        .notdef
  1738. END_OF_FILE
  1739.   if test 2400 -ne `wc -c <'evec/null.oct'`; then
  1740.     echo shar: \"'evec/null.oct'\" unpacked with wrong size!
  1741.   fi
  1742.   # end of 'evec/null.oct'
  1743. fi
  1744. if test -f 'hyph.install' -a "${1}" != "-c" ; then 
  1745.   echo shar: Will not clobber existing file \"'hyph.install'\"
  1746. else
  1747.   echo shar: Extracting \"'hyph.install'\" \(2281 characters\)
  1748.   sed "s/^X//" >'hyph.install' <<'END_OF_FILE'
  1749. XInstallation of hyphenation patterns
  1750. X
  1751. XJeffrey H. Kingston
  1752. X22 December 1992
  1753. X
  1754. XBasser Lout Version 2.05 incorporates automatic hyphenation using the method
  1755. Xintroduced by TeX (see Appendix H of the TeXBook by D. E. Knuth).  No special
  1756. Xaction is required to install hyphenation unless it is desired to change the
  1757. Xhyphenation patterns that control it.
  1758. X
  1759. XThe first time on any run that hyphenation is required, Lout will search the
  1760. X@SysInclude directories for a binary file called lout.hyph.pk, which
  1761. Xcontains a memory image of the TeX hyphenation patterns, modified so that
  1762. Xthe file may be safely shared by big-endian and little-endian machines.  If
  1763. Xthis file cannot be found, Lout then searches for the text file lout.hyph
  1764. Xinstead, and uses it to construct lout.hyph.pk.  To change the hyphenation
  1765. Xpatterns, delete lout.hyph.pk and modify lout.hyph; the rest is automatic.
  1766. X
  1767. XFile lout.hyph mainly contains the long list of TeX hyphenation patterns,
  1768. Xbut it begins with a sequence of character classes, one class per line,
  1769. Xterminated by a blank line:
  1770. X
  1771. X    @!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
  1772. X    aA
  1773. X    bB
  1774. X    cC
  1775. X    ...
  1776. X    yY
  1777. X    zZ
  1778. X
  1779. XBriefly, hyphenation of a word works like this.  If the word contains a
  1780. Xcharacter not found in any of these classes, it will not be hyphenated.
  1781. XOtherwise the word is analysed into sequences of letters separated by
  1782. Xsequences of non-letters (the characters in the first class are by
  1783. Xdefinition the non-letters, and the remaining characters are the letters).
  1784. XEach sequence of five or more letters is then matched with the hyphenation
  1785. Xpatterns and hyphenated.  The matching process treats the members of each
  1786. Xclass as identical (so the classes above ensure that the distinction
  1787. Xbetween upper and lower case is ignored).  The hyphen character "-" is
  1788. Xtreated specially.  Apart from the weighting digits, the patterns should
  1789. Xcontain only letters.
  1790. X
  1791. XExtreme lengths were resorted to to compress the .pk file as much as
  1792. Xpossible, and attempts to increase the number of classes or patterns
  1793. Xsignificantly are likely to fail.  Some words are not hyphenated well by
  1794. Xthe standard patterns and must be treated as exceptions; see the
  1795. XDocumentLayout package implementation (file dl in lout/include) for
  1796. Xthe standard list of these exceptions and how to deal with them.
  1797. END_OF_FILE
  1798.   if test 2281 -ne `wc -c <'hyph.install'`; then
  1799.     echo shar: \"'hyph.install'\" unpacked with wrong size!
  1800.   fi
  1801.   # end of 'hyph.install'
  1802. fi
  1803. if test -f 'news.blurb' -a "${1}" != "-c" ; then 
  1804.   echo shar: Will not clobber existing file \"'news.blurb'\"
  1805. else
  1806.   echo shar: Extracting \"'news.blurb'\" \(2426 characters\)
  1807.   sed "s/^X//" >'news.blurb' <<'END_OF_FILE'
  1808. XSubject: Version 2.05 of Lout document formatting system
  1809. XDate: Tue, 27 Jul 1993 17:09:23 +1000
  1810. XNewsgroups: comp.text,comp.sources.d,aus.sources
  1811. XKeywords: document formatting typesetting lout
  1812. X
  1813. XVersion 2.05 of the Lout document formatting system is now available
  1814. X(free of charge).  The system reads a high-level description of a
  1815. Xdocument similar in style to LaTeX and produces a PostScript file which
  1816. Xcan be printed on many laser printers and graphic display devices.
  1817. X
  1818. XLout offers an unprecedented range of advanced features, including
  1819. Xoptimal paragraph breaking, automatic hyphenation, PostScript EPS file
  1820. Xinclusion, equation formatting, tables, diagrams, rotation and scaling,
  1821. Xsorted indexes, bibliographic databases, running headers and odd-even
  1822. Xpages, automatic cross referencing, and much more, all ready to go.
  1823. XFurthermore, Lout is easily extended with definitions which are very
  1824. Xmuch easier to write than troff of TeX macros because Lout is a
  1825. Xhigh-level language, the outcome of an eight-year research project that
  1826. Xwent back to the beginning.
  1827. X
  1828. XNew features just introduced in Version 2.05 include full support for the
  1829. XISO-LATIN-1 character set and arbitrary PostScript encoding vectors, small
  1830. Xchanges to the DocumentLayout package to simplify porting it to non-English
  1831. Xlanguages, source code which compiles cleanly on type-fussy compilers and
  1832. Xat least one 64-bit architecture (the DEC Alpha) but is not yet ANSI, and
  1833. Xa few small enhancements and bug fixes.
  1834. X
  1835. XLout is written in C, is highly portable to Unix systems, and produces
  1836. XPostScript output (used by many laser printers).  It is distributed under
  1837. Xthe GNU public licence as a compressed tar file called lout.2.05.tar.Z
  1838. Xin the "jeff" subdirectory of the home directory you land in when running
  1839. X"ftp ftp.cs.su.oz.au" with login name "ftp" or "anonymous" (enter any
  1840. Xnon-empty password).  The comp.sources.misc newsgroup is an alternative
  1841. Xsource of Lout distributions.  The distribution contains
  1842. X
  1843. X  *  Complete C source code
  1844. X
  1845. X  *  Standard packages of definitions for tech reports, books, equations,
  1846. X     tables, diagrams, and Pascal prettyprinting (all written in Lout)
  1847. X
  1848. X  *  Complete user documentation in the form of seven technical reports
  1849. X     and a Unix manual page
  1850. X
  1851. X  *  A makefile and installation instructions
  1852. X
  1853. XLout was designed and implemented by Jeffrey H. Kingston (jeff@cs.su.oz.au)
  1854. Xof the Basser Department of Computer Science at the University of Sydney.
  1855. END_OF_FILE
  1856.   if test 2426 -ne `wc -c <'news.blurb'`; then
  1857.     echo shar: \"'news.blurb'\" unpacked with wrong size!
  1858.   fi
  1859.   # end of 'news.blurb'
  1860. fi
  1861. echo shar: End of archive 33 \(of 35\).
  1862. cp /dev/null ark33isdone
  1863. MISSING=""
  1864. 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
  1865.     if test ! -f ark${I}isdone ; then
  1866.     MISSING="${MISSING} ${I}"
  1867.     fi
  1868. done
  1869. if test "${MISSING}" = "" ; then
  1870.     echo You have unpacked all 35 archives.
  1871.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1872. else
  1873.     echo You still must unpack the following archives:
  1874.     echo "        " ${MISSING}
  1875. fi
  1876. exit 0
  1877. exit 0 # Just in case...
  1878.