home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-08-11 | 73.5 KB | 1,770 lines |
- Newsgroups: comp.sources.misc
- From: jeff@joyce.cs.su.oz.au (Jeff Kingston)
- Subject: v38i100: lout - Lout document formatting system, v2.05, Part32/35
- Message-ID: <1993Aug10.132429.19340@sparky.sterling.com>
- X-Md4-Signature: 50a49c88125ce98195fce9ad67113ef9
- Sender: kent@sparky.sterling.com (Kent Landfield)
- Organization: Sterling Software
- Date: Tue, 10 Aug 1993 13:24:29 GMT
- Approved: kent@sparky.sterling.com
-
- Submitted-by: jeff@joyce.cs.su.oz.au (Jeff Kingston)
- Posting-number: Volume 38, Issue 100
- Archive-name: lout/part32
- Environment: UNIX
- Supersedes: lout: Volume 37, Issue 99-128
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # Contents: doc/tr.begin/s15 doc/tr.impl/s2.1 doc/tr.impl/s3.2
- # doc/tr.impl/s6.1 doc/tr.impl/s7.0 doc/tr.lout/ch1.03
- # doc/tr.lout/ch3.04 doc/tr.over/s1 doc/tr.over/s3 doc/tr.tab/s2
- # doc/tr.tab/s7 include/doc include/fontdefs0 include/fontdefs1
- # include/pas include/report man/lout.1
- # Wrapped by kent@sparky on Sun Aug 8 12:29:33 1993
- PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
- echo If this archive is complete, you will see the following message:
- echo ' "shar: End of archive 32 (of 35)."'
- if test -f 'doc/tr.begin/s15' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.begin/s15'\"
- else
- echo shar: Extracting \"'doc/tr.begin/s15'\" \(3933 characters\)
- sed "s/^X//" >'doc/tr.begin/s15' <<'END_OF_FILE'
- X@Section
- X @Tag { big.changes }
- X @Title { Making more radical changes }
- X@Begin
- X@PP
- XThe DocumentLayout package makes a large number
- Xof decisions, about how large the pages will be, which fonts will
- Xordinarily be used, and so on. The more complex decisions, such as the
- Xappearance of tables of contents in books, can only be changed by
- Xmodifying the packages, but many of the simpler decisions can be changed
- Xquite easily by setting options in the setup file.
- X@PP
- XThe first step is to obtain a private copy of the setup file. A local
- Xexpert will know where these files are kept; for example, in directory
- X{ @Code "/usr/lout/include"}. Suppose the @Code report setup file is
- Xcopied into a file called { @Code myrep }; then typing
- X@ID @Code "lout myrep myfile"
- Xinstead of
- X@ID @Code "lout -ireport myfile"
- Xruns Lout with the private copy of the setup file, {@Code "myrep"}.
- X@PP
- XExactly what the setup file contains will depend upon the local
- Xsituation, but it will be something like this:
- X@ID @Code {
- X"# Setup file for reports."
- X"# J. H. Kingston, July 1991"
- X""
- X"@SysInclude { ft }"
- X"@SysInclude { dl }"
- X"# @SysInclude { eq }"
- X"# @SysInclude { pas }"
- X"# @SysInclude { fig }"
- X"# @SysInclude { tab }"
- X""
- X"@Use { @DocumentLayout"
- X" # @InitialFont { Times Base 12p }"
- X" # @InitialBreak { adjust 1.2fx }"
- X" # @Hyphenate { Yes }"
- X" # @PageNumbers { Yes }"
- X" # @Columns { Single }"
- X" # @HeadingFont { Bold }"
- X" # @ParaIndent { 2.0f }"
- X" # @PageTop { |0.5rt - @PageNum - }" &0io ""
- X" # @PageFoot { @Null }"
- X"}"
- X}
- XWhenever Lout encounters a @Code "#" character not enclosed in quotes,
- Xit ignores it and everything following it up to the end of the line. The
- Xfirst two lines of the setup file, then, are comments for the human
- Xreader. After them come lines which cause Lout to read the file
- X@Code "ft" of font definitions and the file @Code "dl" which contains
- Xthe definition of the DocumentLayout package.
- X@PP
- XThe next four lines are comments and will be ignored, but if the initial
- X@Code "#" is deleted they cause Lout to read the definitions of the Eq
- Xequation formatting package and the Pas Pascal program formatting package
- X[{@Ref kingston92eq}], the Fig diagram drawing package [{@Ref kingston92fig}],
- Xand the Tab table formatting package [{@Ref kingston92tab}].
- X@PP
- XNext comes a @Code "@DocumentLayout" symbol within a @Code "@Use"
- Xclause. It is this symbol whose options may
- Xbe changed so as to affect the overall layout. These options are listed
- Xas comments on the following lines, together with the default value
- Xof each. To change an option, delete the @Code "#" and change the
- Xvalue. For example, the normal paragraph indent produced by @Code "@PP" is
- X@Code "2.0f" (twice the current font size). To change it, say to
- X{@Code "3.0f"}, change the line to
- X@ID @Code "@ParaIndent { 3.0f }"
- XThe display indent option (not shown here) should probably be changed as well.
- X@PP
- XThe first five options have the same name as five of the @Code "@Document"
- Xsymbol's options, and they determine the default value of those
- Xoptions. The @Code "@PageTop" and @Code "@PageFoot" options determine
- Xthe appearance of the page header and footer lines (where the page
- Xnumbers appear), and are best left to experts; but, for example,
- X@ID @Code "@PageTop { |1rt @PageNum }"
- Xwill make the page number appear at the top right of each page, without
- Xthe @Code "-" characters.
- X@PP
- XThe setup file is also the place to add your own definitions. They should
- Xbe placed just before the @Code "@Use" clause, as shown for example in
- XSection 4 of the report describing the Eq equation formatting package
- X[{@Ref kingston92eq}].
- X@PP
- XThose who wish to make more radical changes will have to copy the @Code dl
- Xfile and change the definition of the DocumentLayout package. This requires
- Xknowledge of the principles of Lout, and the primitive features from which
- Xothers are built, as described in the Lout user manual [{@Ref kingston92}].
- X@End @Section
- END_OF_FILE
- if test 3933 -ne `wc -c <'doc/tr.begin/s15'`; then
- echo shar: \"'doc/tr.begin/s15'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.begin/s15'
- fi
- if test -f 'doc/tr.impl/s2.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.impl/s2.1'\"
- else
- echo shar: Extracting \"'doc/tr.impl/s2.1'\" \(4030 characters\)
- sed "s/^X//" >'doc/tr.impl/s2.1' <<'END_OF_FILE'
- X@SubSection
- X @Tag { genesis }
- X @Title { The genesis of the object abstraction }
- X@Begin
- X@PP
- XWhen one examines previous document formatting systems [4]
- Xlooking for ideas for abstractions, as the author did in 1984, the Eqn
- Xformatting language [5] stands out like a beacon. In
- XEqn, a mathematical formula such as
- X@ID @Eq { { x sup 2 + 1 } over 4 }
- Xis produced by typing
- X@ID @Code "{ x sup 2 + 1 } over 4"
- Xin the input file; @Code sup and @Code over are binary operators, and
- Xbraces are used for grouping. This is document formatting at a very
- Xhigh level, close to the language of mathematics itself, with all
- Xreference to font changes and spacing suppressed.
- X@PP
- XEqn provides a single data type (let us call it the {@I expression}),
- Xbuilt up recursively in context-free style: where one expression may appear,
- Xany expression may appear. This approach is common in algebra and
- Xprogramming languages, where its simplicity and expressiveness have long
- Xbeen appreciated; but Eqn was the first language to demonstrate its
- Xutility in document formatting.
- X@PP
- XEach expression is treated by Eqn as a rectangle with a
- X{@I {horizontal axis}}, used for alignment with adjacent expressions:
- X@ID @ShowMarks marks { horizontal } @Eq { { x sup 2 + 1 } over 4 }
- XThe size and rendering of the expression on the printed page are
- Xknown only to the implementation, never explicitly calculated or
- Xaccessed by the user. This prohibition is
- Xcrucial to the maintenance of the context-free property in practice. In
- XLout, for example, equations, figures, tables, and arbitrary objects may
- Xbe mixed together freely. This would be impossible if size information
- Xwas hidden from the implementation in user calculations.
- X@PP
- XThe object abstraction of Lout is a direct descendant of the Eqn
- Xexpression. It employs the same context-free recursive style of construction,
- Xand each object is treated by Lout as a rectangle:
- X@ID @Fig {
- X@ShowMarks { 1c @Wide ^| 2c @Wide 0.45c @High ^/ 0.35c @High }
- X}
- XThe horizontal axis, called a @I { row mark } in Lout, has a
- Xvertical analogue called a {@I {column mark}}, creating a valuable
- Xsymmetry between horizontal and vertical. Multiple column and row marks
- Xare permitted:
- X@ID @Fig {
- XA:: @Box margin { 0c } paint { grey } { 1.2c @Wide 0.8c @High }
- X|1c
- XB:: @Box margin { 0c } paint { grey } { 1c @Wide 0.8c @High }
- X/0.5c
- XC:: @Box margin { 0c } paint { grey } { 0.7c @Wide 0.8c @High }
- X|1c
- XD:: @Box margin { 0c } paint { grey } { 1.3c @Wide 0.8c @High }
- X// @Line linestyle { dashed }
- X from { A@W -- { 0.3 cm 0 } }
- X to { B@W ++ { 1.6 cm 0 } }
- X// @Line linestyle { dashed }
- X from { C@W -- { 0.3 cm 0 } }
- X to { D@W ++ { 1.6 cm 0 } }
- X// @Line linestyle { dashed }
- X from { A@NW ++ { 0 0.3 cm } }
- X to { C@SW -- { 0 0.3 cm } }
- X// @Line linestyle { dashed }
- X from { B@NW ++ { 0.3 cm 0.3 cm } }
- X to { D@SW ++ { 0.3 cm -0.3 cm } }
- X}
- Xso that objects are able to represent tables.
- X@PP
- XThis abstraction has some limitations, the most obvious being the restriction
- Xof size calculations to rectangular bounding boxes. Non-rectangular and
- Xdisconnected shapes arise naturally in figures and in the characters of
- Xfonts; the extension to them is conceptually straightforward and might
- Xhelp to explain some fine points of layout such as kerning. However,
- Xthere are implementation and language design problems, particularly
- Xwhen filling non-rectangular shapes with text, and so the author chose
- Xto keep to Eqn's rectangles.
- X@PP
- XA more fundamental limitation of the object abstraction arises from the
- Xinability of recursive data types to describe cross-linked structures,
- Xwhich seem to require some means of naming the multiply referenced
- Xparts. Lout is obliged to introduce additional abstractions to cope
- Xwith cross linking: galleys for inserting text into pages
- X(Section {@NumberOf galleys}), cross references (Section {@NumberOf cross}),
- Xand labelled points in figure drawing [6]. An
- Xabstraction closer to hypertext might form a more unified basis for
- Xthese features.
- X@End @SubSection
- END_OF_FILE
- if test 4030 -ne `wc -c <'doc/tr.impl/s2.1'`; then
- echo shar: \"'doc/tr.impl/s2.1'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.impl/s2.1'
- fi
- if test -f 'doc/tr.impl/s3.2' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.impl/s3.2'\"
- else
- echo shar: Extracting \"'doc/tr.impl/s3.2'\" \(3408 characters\)
- sed "s/^X//" >'doc/tr.impl/s3.2' <<'END_OF_FILE'
- X@SubSection
- X @Tag { recursion }
- X @Title { Recursion and page layout }
- X@Begin
- X@PP
- XDesign and implementation should proceed together in exploratory projects,
- Xsince otherwise the design too easily becomes unrealistic. Sometimes the
- Ximplementation does more than its designer intended. The author wrote the
- Xfollowing purely as a testing scaffold:
- X@ID @Code {
- X"def @Page right x"
- X"{"
- X" 8i @Wide 11i @High"
- X" {"
- X" //1i ||1i x ||1i"
- X" //1i"
- X" }"
- X"}"
- X}
- XOnly afterwards did he realize its significance: the concept of a page
- Xhad been defined outside the implementation, removing the need for
- Xcommands for setting page width and height, margins, and so on.
- X@PP
- XDefining a sequence of pages is harder, since their number is not known
- Xin advance. A simple version of this same problem is afforded by the
- Xleaders found in tables of contents:
- X@ID {
- X4i @Wide { Chapter 7 @Leaders 53 }
- X}
- XThis seemed to require recursion, specifically the definition
- X@ID @Code {
- X"def @Leaders { .. @Leaders }"
- X}
- XNote that both @Code ".." and @Code "@Leaders" are objects, so the two
- Xspaces separating them are significant. No base case is given, and indeed
- Xwe have no boolean or conditional operators with which to express it;
- Xbut we can adopt the implicit base `if space is not sufficient, delete
- X{@Code "@Leaders"} and any preceding space'. Then the expression
- X@ID @Code "4i @Wide { Chapter 7 @Leaders 53 }"
- Xwill produce the object shown above. It is hard to see how this base
- Xcould be made explicit, without violating the general principle of
- Xkeeping all size information internal. In the implementation,
- X@Code "@Leaders" remains unexpanded while sizes are being
- Xcalculated; then it is treated similarly to a receptive symbol, with
- Xits body as an incoming galley (Section {@NumberOf flushing}).
- X@PP
- XWith this settled, it is now clear how to define a document which is a
- Xnumbered sequence of pages. Let @Code "@Next" be a prefix operator
- Xwhich returns its parameter plus one. Then
- X@ID @Code {
- X"def @PageList"
- X" right @PageNum"
- X"{"
- X" @Page {"
- X" |0.5rt - @PageNum -"
- X" //1v @TextPlace"
- X" //1rt @FootSect"
- X" }"
- X" //"
- X" @PageList @Next @PageNum"
- X"}"
- X}
- Xwhen invoked in the expression {@Code "@PageList 1"}, has for its result
- Xthe potentially infinite object
- X@ID {
- X@LittlePage {
- X|0.5rt - 1 -
- X//1.2vx @Code "@TextPlace"
- X//1rt @Code "@FootSect"
- X}
- X//
- X@LittlePage {
- X|0.5rt - 2 -
- X//1.2vx @Code "@TextPlace"
- X//1rt @Code "@FootSect"
- X}
- X//0.2c
- X8p @Font @Code "@PageList 3"
- X}
- XSimilarly, we may define @Code "@FootSect" like this:
- X@ID @Code {
- X"def @FootSect"
- X"{"
- X" def @FootList"
- X" right @Num"
- X" {"
- X" @FootPlace"
- X" //1v"
- X" @FootList @Next @Num"
- X" }"
- X""
- X" 1i @Wide @HLine"
- X" //1v"
- X" @FootList 1"
- X"}"
- X}
- Xso that an invocation of @Code "@FootSect" produces
- X@ID @Code {
- X1i @Wide @HLine
- X"@FootPlace"
- X"@FootPlace"
- X"@FootPlace"
- X"..."
- X}
- XThe expansion process is very similar to a BNF derivation, and would be
- Xattempted only on demand.
- X@PP
- XClearly, deciding which expansions to take and replacing @Code "@TextPlace"
- Xand {@Code "@FootPlace"} by the appropriate actual text will not be easy;
- Xthis is the subject of Section {@NumberOf galleys}. The important point
- Xfor now is that we have here a very simple and flexible method of specifying
- Xthe layout of pages, which requires no specialized language features.
- X@End @SubSection
- END_OF_FILE
- if test 3408 -ne `wc -c <'doc/tr.impl/s3.2'`; then
- echo shar: \"'doc/tr.impl/s3.2'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.impl/s3.2'
- fi
- if test -f 'doc/tr.impl/s6.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.impl/s6.1'\"
- else
- echo shar: Extracting \"'doc/tr.impl/s6.1'\" \(3774 characters\)
- sed "s/^X//" >'doc/tr.impl/s6.1' <<'END_OF_FILE'
- X@SubSection
- X @Tag { cross }
- X @Title { The cross reference abstraction }
- X@Begin
- X@PP
- XIn developing the cross reference abstraction, it seemed best to begin
- Xwith the database application, since it is the simplest. Database
- Xrelations are naturally mapped into Lout definitions:
- X@ID @Code {
- X"def @Reference"
- X" named @Tag {}"
- X" named @Author {}"
- X" named @Title {}"
- X" named @Journal {}"
- X"{}"
- X}
- XThe set of all invocations of @Code "@Reference" is a relation whose
- Xattributes are the parameters, and whose tuples are the invocations. To
- Xcomplete the correspondence, we need only declare that the @Code "@Tag"
- Xparameter is special, serving as the key attribute.
- X@PP
- XFollowing the database model, we next need a notation for retrieving the
- Xinvocation with a given tag:
- X@ID @Code "@Reference&&kingston91"
- XThis @I {cross reference} is like an arrow pointing to the invocation. To
- Xaccess its attributes, we write
- X@ID @Code "@Reference&&kingston91 @Open { @Author, @Title }"
- XThe @Code "@Open" operator evaluates its right parameter in an
- Xenvironment which includes the exported parameters of its left.
- X@PP
- XAn invocation is chosen to be a running header because of its proximity
- Xto the place where it is used, rather than by its tag. Such proximity
- Xis naturally expressed by two special tags, {@Code preceding} and
- X{@Code following}; for example, @Code "@Sym&&following" will point to
- Xthe closest following invocation of @Code "@Sym" in the final printed
- Xdocument. This is much simpler conceptually than reference to the
- Xinternal state of the document formatter at a critical moment, the usual
- Xapproach to running headers.
- X@PP
- XIt turns out that the above design solves all the cross referencing
- Xproblems encountered in practice except one, which may be typified by
- Xthe problem of finding the number of the page on which the chapter whose
- Xtag is @Code "intro" begins. Two cross referencing steps are needed,
- Xfirst to {@Code "@Chapter&&intro"}, then from there to
- X{@Code "@Page&&preceding"}, where the page number is known.
- X@PP
- XGiven the success of the design so far, this last problem proves to be
- Xsurprisingly difficult. We first try
- X@ID @Code {
- X"@Chapter&&intro @Open {"
- X" @Page&&preceding @Open { @PageNum }"
- X"}"
- X}
- Xbut this fails because @Code "@Page&&preceding" is evaluated in the
- Xpresent context, not in the context of @Code "@Chapter&&intro" as
- Xrequired. So our next attempt is
- X@ID @Code {
- X"def @Chapter"
- X" named @PageNum { @Page&&preceding @Open { @PageNum } }"
- X" ..."
- X}
- Xwith the @Code "@Page&&preceding" cross reference attached to the
- Xchapter; we write
- X@ID @Code "@Chapter&&intro @Open { @PageNum }"
- XThis also fails, because parameters are evaluated after substitution, so
- Xonce again @Code "@Page&&preceding" is evaluated in the wrong context. We
- Xcould of course define a new operator specifically for this case:
- X@ID @Code "@Page&&{ @Preceding @Chapter&&intro }"
- Xor some such. This is free of the annoying context-sensitivity, but it
- Xseems quite complex, and the expected cross reference @Code "@Page&&preceding"
- Xdoes not appear.
- X@PP
- XThe author was lost in these obscurities for some time, and ultimately
- Xrescued himself by looking ahead to the implementation of the
- X@Code preceding and @Code following tags, to see if a simple extension
- Xof it would solve the problem. This led to the @Code "@Tagged" operator:
- X@ID @Code "@Page&&preceding @Tagged intro"
- Xplaced at the beginning of the body of the chapter will attach @Code intro
- Xas an extra tag to the closest preceding invocation of {@Code "@Page"},
- Xso that
- X@ID @Code "@Page&&intro @Open { @PageNum }"
- Xyields the desired page number. There is something low-level and ad hoc
- Xabout the @Code "@Tagged" operator, but the two cross references do
- Xappear naturally, and it works.
- X@End @SubSection
- END_OF_FILE
- if test 3774 -ne `wc -c <'doc/tr.impl/s6.1'`; then
- echo shar: \"'doc/tr.impl/s6.1'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.impl/s6.1'
- fi
- if test -f 'doc/tr.impl/s7.0' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.impl/s7.0'\"
- else
- echo shar: Extracting \"'doc/tr.impl/s7.0'\" \(3895 characters\)
- sed "s/^X//" >'doc/tr.impl/s7.0' <<'END_OF_FILE'
- X@Section
- X @Title { Conclusion }
- X@Begin
- X@PP
- XSince its public release in October 1991, the Basser Lout interpreter
- Xhas been ported without incident to a wide variety of Unix systems and
- Xhardware. It was tested extensively before release on its own
- Xdocumentation, and the few minor bugs which have emerged since then have
- Xall been fixed in the second release, scheduled to appear in mid-1992.
- X@PP
- XSeven substantial packages of definitions are distributed with Basser
- XLout. The DocumentLayout package, and its variants ReportLayout and
- XBookLayout, provide the standard features that all documents
- Xrequire: pages, columns, paragraphs, headings, footnotes, floating
- Xfigures and tables, chapters and sections, displays and lists, access
- Xto bibliographic databases, cross references, and so on
- X[11]. The BookLayout package has extra features
- Xneeded by books, including an automatically generated table of contents,
- XRoman page numbers for the prefatory material, running page headers,
- Xodd and even page layouts, and a sorted index. The Eq package formats
- Xequations, and Pas formats Pascal programs [10]; Tab
- Xformats tables [12]; and Fig draws figures
- X[6].
- X@PP
- XThe non-expert user who uses these packages perceives a system of a
- Xstandard quite similar to other fully developed batch formatters,
- Xalthough the interface is considerably more coherent than, say, the troff
- Xfamily's [8]. The expert user perceives a system which
- Xis radically different from previous ones, in which a great deal can be
- Xachieved very quickly. To take an extreme example, Pas was designed,
- Ximplemented, tested, and documented in one afternoon. Eq took about
- Xa week, but most of that time was spent in marshalling the vast
- Xrepertoire of mathematical symbols, and fine-tuning the spacing. Most
- Xof the effort seems to go into designing a good interface; most symbols
- Xare implemented in just one or a few lines of Lout.
- X@PP
- XA group of about 20 satisfied non-expert users has grown up within
- Xthe author's department, mainly Honours students with no investment
- Xin older systems to hold them back. Basser Lout has been advertised
- Xon the Internet news as available via anonymous {@I ftp}, so the
- Xextent of its outside user community is hard to gauge. About 50
- Xpeople have mailed comments or questions to the author; many
- Xof these people have ported the program, written small definitions,
- Xand modified the standard packages.
- X@PP
- XFuture work could usefully begin with the improvements suggested in this
- Xpaper: overlapping spanning columns, better semantics for available
- Xspace, and especially horizontal galleys. Support for non-European
- Xlanguages is also needed. However, the main task is the development of
- Xan interactive document editor based on Lout. A structure editor similar
- Xto Lilac [13], which already has objects and user-defined
- Xsymbols, is envisaged; since cross references are easy when the whole
- Xdocument is available, the only major new problem is the treatment of
- Xgalleys, including the expansion and retraction of receptive symbols.
- X@LP
- X@LP
- X@B { Note. } Since the above was written the author has completed a
- Xrevised version of Basser Lout, in which the problem concerning
- Xavailable space mentioned in Section {@NumberOf style} has been resolved.
- X@LP
- X@LP
- X@B { Acknowledgment. } The author gratefully acknowledges many
- Xvaluable discussions with Douglas W. Jones, especially during the
- Xdevelopment of the galley abstraction; and also many helpful comments on
- Xpresentation by the anonymous referee.
- X@DP
- X@DP
- X@Heading { References }
- X@NumberedList
- X@LI @RefPrint kingston91
- X@LI @RefPrint kingston91over
- X@LI @RefPrint kingston91basser
- X@LI @RefPrint furuta82
- X@LI @RefPrint kernighan75
- X@LI @RefPrint kingston91fig
- X@LI @RefPrint reid80
- X@LI @RefPrint ossanna76
- X@LI @RefPrint knuth84
- X@LI @RefPrint kingston91eq
- X@LI @RefPrint kingston91begin
- X@LI @RefPrint kingston91tab
- X@LI @RefPrint brooks91
- X@EndList
- X@End @Section
- END_OF_FILE
- if test 3895 -ne `wc -c <'doc/tr.impl/s7.0'`; then
- echo shar: \"'doc/tr.impl/s7.0'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.impl/s7.0'
- fi
- if test -f 'doc/tr.lout/ch1.03' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.lout/ch1.03'\"
- else
- echo shar: Extracting \"'doc/tr.lout/ch1.03'\" \(3701 characters\)
- sed "s/^X//" >'doc/tr.lout/ch1.03' <<'END_OF_FILE'
- X@Section
- X @Tag { cross }
- X @Title { Cross references }
- X@Begin
- X@PP
- XA cross reference
- Xcross.ref @Index { Cross reference }
- Xin common terminology is something like `see Table 6'
- Xor `see page 57' -- a reference within a document to some other part of
- Xthe document. Readers find them very useful, but they are a major
- Xbookkeeping problem for authors. As the document is revised, Table 6
- Xbecomes Table 7, the thing on page 57 moves to page 63, and all the
- Xcross references must be changed.
- X@PP
- XThe Scribe
- Xscribe @Index { Scribe }
- Xdocument formatter, developed by Brian K. Reid [{@Ref reid80}],
- Xreid.brian @Index { Reid, Brian K. }
- Xintroduced a scheme for keeping track of cross
- Xreferences. It allows you to give names to tables, figures, etc., and to
- Xrefer to them by name. The formatter inserts the appropriate numbers in
- Xplace of the names, so that as the document is revised, the
- Xcross references are kept up to date automatically. Lout has adopted
- Xand extended this scheme.
- X@PP
- XIn Lout, automatic cross referencing works in the following way. First
- Xdefine a symbol with a parameter with the special name @Code "@Tag":
- X@ID @Code {
- X"def @Table"
- X" left @Tag"
- X" right @Value"
- X"{"
- X" ||1i @Value"
- X"}"
- X}
- XWhen this symbol is invoked, the value given to @Code "@Tag" should be a
- Xsimple word like {@Code "cities"}, or several simple words juxtaposed
- Xlike {@Code "cities.compare"}; it serves to name the invocation:
- X@ID @Code {
- X"cities @Table"
- X"{"
- X" Washington |0.5i Canberra"
- X"}"
- X}
- XWe may now refer to this invocation elsewhere in the document, using the
- X@I {cross reference} @Code "@Table&&cities". Here @Code "&&" is the
- X{@I {cross reference symbol}}; its left parameter is a symbol and its right
- Xparameter is the value of the @Code "@Tag" parameter of some invocation
- Xof that symbol.
- X@PP
- XA cross reference is not an object; the reader should think of it as
- Xan arrow in the final printed document, beginning at the cross reference
- Xsymbol and ending at the top of the target
- Xtarget @Index { Target of cross reference }
- Xinvocation, like this:
- X@ID 8p @Font {
- X { @LittlePage // @LittlePage }
- X ||0io ||0.7c
- X { //2c
- X { @Code "@Table&&cities" }
- X //0.1c
- X ||0.5c 90d @Rotate @Arrow 2.5c
- X //0.05c
- X @HContract @VContract
- X @Fig { @Box margin { 0c } paint { grey } { 1.5c @Wide 1c @High } }
- X }
- X}
- X@PP
- XTwo special values may be given to the right parameter of
- X{@Code "&&"}: @Code preceding
- Xpreceding. @Index { @Code preceding }
- Xfollowing. @Index { @Code following }
- Xand
- X@Code following. The cross
- Xreference @Code "@Table&&preceding" points to some table
- Xappearing earlier in the final printed document than itself; that is, the
- Xarrow is guaranteed to point backwards through the document. Usually it
- Xpoints to the nearest preceding invocation. Similarly,
- X@Code "@Table&&following" points forwards, usually to the
- Xnearest following invocation of @Code "@Table".
- X@PP
- XThis section has been concerned with what a cross reference is -- an
- Xarrow from one point in a document to another -- but not with how it is
- Xused. One simple way to use a cross reference is to put it where an
- Xobject is expected, like this:
- X@ID @Code {
- X"a | @Table&&cities | c"
- X}
- XIn this case the cross reference will be replaced by a copy of the
- Xinvocation it points to: in the example just given, a table will appear
- Xbetween @Code a and @Code c. Other applications of cross references may be
- Xfound in Chapter {@NumberOf examples}, including finding the number of
- Xthe page where something appears, producing running page headers and footers,
- Xand accessing databases of Roman numerals, references, etc. Cross
- Xreferences are also used by galleys, as will be explained in the next section.
- X@End @Section
- END_OF_FILE
- if test 3701 -ne `wc -c <'doc/tr.lout/ch1.03'`; then
- echo shar: \"'doc/tr.lout/ch1.03'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.lout/ch1.03'
- fi
- if test -f 'doc/tr.lout/ch3.04' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.lout/ch3.04'\"
- else
- echo shar: Extracting \"'doc/tr.lout/ch3.04'\" \(3886 characters\)
- sed "s/^X//" >'doc/tr.lout/ch3.04' <<'END_OF_FILE'
- X@Section
- X @Title { "@Break" }
- X @Tag { break }
- X@Begin
- X@PP
- XThe @@Break symbol influences the appearance of paragraphs (Section
- X{@NumberOf concatenation}), offering a fixed set of eight styles:
- X@IL
- X
- X@LI {
- X2i @Wide { |1rt @Code adjust @@Break @I object }
- Xadjust.break @Index { @Code adjust @@Break }
- X|2m Break the paragraphs of {@I object} into lines, and apply @@PAdjust
- X(Section {@NumberOf hadjust}) to every line except the last in
- Xeach paragraph;
- X}
- X
- X@LI {
- X2i @Wide { |1rt @Code outdent @@Break @I object }
- Xoutdent.break @Index { @Code outdent @@Break }
- X|2m Like {@Code adjust}, except that @Code "2.0f @Wide {} &0i" is
- Xinserted at the beginning of every line except the first, creating
- Xan outdented paragraph;
- X}
- X
- X@LI {
- X2i @Wide { |1rt @Code ragged @@Break @I object }
- Xragged.break @Index { @Code ragged @@Break }
- X|2m Break the paragraphs of {@I object} into lines, but do not adjust
- Xthe lines (`ragged right');
- X}
- X
- X@LI {
- X2i @Wide { |1rt @Code cragged @@Break @I object }
- Xcragged.break @Index { @Code cragged @@Break }
- X|2m Like {@Code ragged}, except that each line will be centred with
- Xrespect to the others;
- X}
- X
- X@LI {
- X2i @Wide { |1rt @Code rragged @@Break @I object }
- Xrragged.break @Index { @Code rragged @@Break }
- X|2m Like {@Code ragged}, except that each line will be right-justified with
- Xrespect to the others (`ragged left');
- X}
- X
- X@LI {
- X2i @Wide { |1rt @Code lines @@Break @I object }
- Xlines.break @Index { @Code lines @@Break }
- X|2m Break the paragraphs of {@I object} into lines at the same points
- Xthat they are broken into lines in the input; do not adjust the lines. Any
- Xspaces at the start of a line other than the first will appear in the output;
- X}
- X
- X@LI {
- X2i @Wide { |1rt @Code clines @@Break @I object }
- Xclines.break @Index { @Code clines @@Break }
- X|2m Break the paragraphs of {@I object} into lines at the same points
- Xthat they are broken into lines in the input file, then centre each line with
- Xrespect to the others;
- X}
- X
- X@LI {
- X2i @Wide { |1rt @Code rlines @@Break @I object }
- Xrlines.break @Index { @Code rlines @@Break }
- X|2m Break the paragraphs of {@I object} into lines at the same points
- Xthat they are broken into lines in the input file, then right-justify
- Xeach line with respect to the others.
- X}
- X
- X@EL
- XIf the paragraph was an entire component of a galley, so will each of
- Xits lines be; otherwise the lines are enclosed in a {@Code "@OneRow"}
- Xsymbol after breaking.
- X@PP
- XThe length of the gap used to separate the lines produced by paragraph
- Xbreaking is always {@Code 1v}. However, the @Code v unit itself and the
- Xv.unit.effect @SubIndex { effect on paragraph breaking }
- Xgap mode may be changed:
- X@IL
- X
- X@LI {
- X2i @Wide { |1rt @I gap @Code "@Break" @I object }
- X|2m Within {@I object}, take the value of the @Code "v" unit to be the
- Xlength of {@I gap};
- X}
- X
- X@LI {
- X2i @Wide { |1rt + & @I gap @Code "@Break" @I object }
- X|2m Within {@I object}, take the value of the @Code "v" unit to be
- Xlarger by the length of @I gap than it would otherwise have been;
- X}
- X
- X@LI {
- X2i @Wide { |1rt -- & @I gap @Code "@Break" @I object }
- X|2m Within {@I object}, take the value of the @Code "v" unit to be
- Xsmaller by the length of @I gap than it would otherwise have been.
- X}
- X
- X@EL
- XIn each case, the mode of @I gap is adopted within {@I object}.
- X@PP
- XFinally, the @@Break symbol influences hyphenation:
- X@IL
- X
- X@LI {
- X2i @Wide { |1rt @Code "hyphen @Break" @I object }
- Xhyphen.break @Index { @Code hyphen @@Break }
- X|2m Permit hyphenation within the paragraphs of {@I object};
- X}
- X
- X@LI {
- X2i @Wide { |1rt @Code "nohyphen @Break" @I object }
- Xnohyphen.break @Index { @Code nohyphen @@Break }
- X|2m Prohibit hyphenation within the paragraphs of {@I object}; all
- Xhyphenation gaps without exception revert to edge-to-edge mode.
- X}
- X
- X@EL
- XSeveral options may be given to the @@Break symbol simultaneously, in
- Xany order. For example,
- X@ID @Code "{ adjust 1.2fx hyphen } @Break ..."
- Xis a typical initial value.
- X@End @Section
- END_OF_FILE
- if test 3886 -ne `wc -c <'doc/tr.lout/ch3.04'`; then
- echo shar: \"'doc/tr.lout/ch3.04'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.lout/ch3.04'
- fi
- if test -f 'doc/tr.over/s1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.over/s1'\"
- else
- echo shar: Extracting \"'doc/tr.over/s1'\" \(3752 characters\)
- sed "s/^X//" >'doc/tr.over/s1' <<'END_OF_FILE'
- X@Section
- X @Title { Introduction }
- X@Begin
- X@PP
- XThe personal computer and the laser printer have sparked a revolution in
- Xthe production of documents. Many authors now routinely take their work
- Xfrom conception to camera-ready copy, many publishers are using desktop
- Xpublishing systems, and it is probable that manual assembly of documents
- Xwill become uncommon in the near future.
- X@PP
- XAs control moves into the hands of an ever-increasing number of
- Xnon-technical people, the stresses on document formatting software
- Xincrease. On the one hand, this software must be so simple that anyone
- Xcan use it; on the other, it must supply a bewildering array of
- Xfeatures. A book, for example, demands fonts, paragraph and page
- Xbreaking, floating figures and tables, footnotes, chapters and sections,
- Xrunning page headers and footers, an automatically generated table of
- Xcontents, and a sorted index. Add to this an open-ended list of
- Xspecialized features, beginning with mathematical typesetting, diagrams,
- Xand access to bibliographic databases, and the result is a nightmare for
- Xthe software developer.
- X@PP
- XOne solution to this feature explosion problem is to implement as a
- Xsystem primitive every feature that will ever be required. Although all
- Xof the successful interactive document editors known to the author take
- Xthis approach (admittedly with some attempt to generalize and unify
- Xtheir features), it has clearly reached its limit. Few such systems
- Xprovide equation formatting, fewer still will format a Pascal program,
- Xand other specialized features will simply never be implemented.
- X@PP
- XA second solution is to provide a relatively small system equipped with
- Xa means of defining new features, as in programming languages. This
- Xapproach has been taken by the batch formatters (those which do not
- Xdisplay a continuously updated image of the printed document while
- Xediting) found in academia, notably troff [{@Ref ossanna76}], @TeX
- X[{@Ref knuth84}], and Scribe [{@Ref reid80}]. Features such as
- Xfootnotes and automatic tables of contents have been added to these
- Xsystems using macro definitions. Unfortunately, such extensions are
- Xvery difficult and error-prone in practice: @TeX's footnote macro alone
- Xcontains half a page of dense, obscure code, while those who have
- Xextended troff have abandoned the language itself and taken refuge in
- Xpreprocessors. A more productive basis for developing new features is needed.
- X@PP
- XThis article presents a high-level language for document formatting,
- Xcalled Lout, which is intended to form such a basis. Lout is quite
- Xaccessible to non-expert users, but its unique property is the ease with
- Xwhich expert users can add new features. We begin with a presentation
- Xof Lout as it appears to the non-expert user who employs the standard
- Xpackages without under&-standing Lout's principles. Later sections switch
- Xto the expert's view, showing by examples the principles of Lout and how
- Xadvanced features are defined.
- X@PP
- XA Unix-compatible
- X@FootNote { Unix is a trademark of "AT&T" Bell Laboratories. }
- Xbatch formatter for Lout (called Basser Lout) has been written which
- Xproduces PostScript
- X@FootNote { PostScript is a trademark of Adobe Systems, Incorporated. }
- Xoutput suitable for printing on most laser printers and many other
- Xdevices. A library of standard packages written in Lout provides all of
- Xthe features listed above and many others. This system is not an
- Xexperimental prototype, it is a fully operational prod&-uct&-ion
- Ximplementation. The software and its supporting documentation
- X[{@Ref kingston92}, {@Ref kingston93basser}, {@Ref kingston92begin},
- X{@Ref kingston92design}, {@Ref kingston92eq}, {@Ref kingston92fig},
- X{@Ref kingston92tab}] are available free of charge from the author.
- X@End @Section
- END_OF_FILE
- if test 3752 -ne `wc -c <'doc/tr.over/s1'`; then
- echo shar: \"'doc/tr.over/s1'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.over/s1'
- fi
- if test -f 'doc/tr.over/s3' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.over/s3'\"
- else
- echo shar: Extracting \"'doc/tr.over/s3'\" \(4009 characters\)
- sed "s/^X//" >'doc/tr.over/s3' <<'END_OF_FILE'
- X@Section
- X @Title { Objects }
- X@Begin
- X@PP
- XTo the expert user, Lout is a high-level functional language with a
- Xrelatively small repertoire of primitive features organized around four
- Xkey concepts: {@I objects}, {@I definitions}, {@I cross @I references},
- Xand {@I galleys}. An object is a rectangle with at least one horizontal
- Xand one vertical mark protruding from it. For example,
- X@ID @Code "Australia"
- Xis an object which is viewed by Lout like this:
- X@ID @ShowMarks Australia
- XHorizontal and vertical concatenation operators, denoted by the symbols
- X@Code "|" and {@Code "/"}, are used to assemble larger objects:
- X@ID @Code { "USA |0.2i Australia" }
- Xis the object
- X@ID { @ShowMarks USA |0.2i @ShowMarks Australia }
- XThe parameters are separated by the length given after the concatenation
- Xsymbol (0.2 inches in this example), and their horizontal marks are
- Xaligned.
- X@PP
- XTables are made by combining the two operators, with @Code "|" having
- Xthe higher precedence:
- X@ID @Code {
- X |1m USA |1m "|0.2i" |1m Australia
- X/1vx "/0.1i" | Washington | "|" | Canberra
- X}
- Xis the object
- X@ID {
- X @ShowMarks USA &0.4c @Fig { @Line from { 0 0 } to { xsize 0 }
- X linestyle { dashed } linewidth { 0.015 cm } 0.8c @Wide {} }
- X #{ 0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke }
- X #@Graphic {1c @Wide }
- X |0.2i @ShowMarks Australia
- X/0.1i @ShowMarks Washington | @ShowMarks Canberra
- X}
- XThe second horizontal concatenation symbol needs no length, since the
- Xfirst one determines the separation between the two columns created by
- Xthe alignment of the vertical marks. Objects of arbitrary complexity
- Xmay be assembled using these and other operators, and braces used for
- Xgrouping, in a manner analogous to the assembly of expressions in
- Xprogramming languages.
- X@PP
- XThe lengths attached to concatenation symbols have features which permit
- Xobjects to be positioned very precisely. In addition to the usual units
- Xof measurement (inches, centimetres, points, and ems), lengths may be
- Xmeasured in units of the current font size, space width, inter-line
- Xspace, and available width (for centering and right justification).
- X@PP
- XThere are also six @I gap {@I modes}, which determine where the lengths
- Xare measured from. Previous examples have used edge-to-edge mode:
- X@ID @Fig margin { 0c } headstyle { closed } {
- X@ShowMarks { 0.3c @Wide ^| 0.9c @Wide 0.3c @High ^/ 0.2c @High }
- X|0.5c
- X@ShowMarks { 0.3c @Wide ^| 0.9c @Wide 0.3c @High ^/ 0.2c @High }
- X//0.2c
- X|1.2c @Arrow arrow { both } { 0.5c @Wide }
- X}
- XLout also provides a mark-to-mark mode, obtained by appending
- X@Code x to the length:
- X@ID @Fig margin { 0c } headstyle { closed } {
- X@ShowMarks { 0.3c @Wide ^| 0.9c @Wide 0.3c @High ^/ 0.2c @High }
- X|0.5c
- X@ShowMarks { 0.3c @Wide ^| 0.9c @Wide 0.3c @High ^/ 0.2c @High }
- X//0.2c
- X|0.3c @Arrow arrow { both } { 1.7c @Wide }
- X}
- XThe length will be widened if necessary to prevent the parameters from
- Xoverlapping, thus implementing the baseline-to-baseline spacing used
- Xbetween lines of text. Other modes provide tabulation from the left
- Xmargin, overstriking, and hyphenation.
- X@PP
- XThe final appearance of an object is affected by a limited amount of
- Xinformation inherited from the context, principally the font and the
- Xwidth available for the object to occupy. There are operators for
- Xsetting these attributes:
- X@ID @Code {
- X"Slope @Font {"
- X"Hello, world"
- X"}"
- X}
- Xproduces
- X@ID {
- XSlope @Font { Hello, world }
- X}
- Xand in a similar way
- X@ID @Code {
- X"1.5i @Wide {"
- X"(1) |0.1i A small"
- X"indented paragraph"
- X"of text."
- X"}"
- X}
- Xproduces
- X@ID {
- X1.5i @Wide {
- X(1) |0.1i A small
- Xindented paragraph
- Xof text.
- X}
- X}
- Xwith the paragraph inheriting and being broken to an available width of
- X1.4 inches minus the width of (1). This size inheritance remains secure
- Xthrough all the complexities of gap modes, mark align&-ment, the @Code
- X"@Wide" and other operators, and so on, providing a high-level service
- Xcomparable in value with strong typing in programming languages.
- X@End @Section
- END_OF_FILE
- if test 4009 -ne `wc -c <'doc/tr.over/s3'`; then
- echo shar: \"'doc/tr.over/s3'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.over/s3'
- fi
- if test -f 'doc/tr.tab/s2' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.tab/s2'\"
- else
- echo shar: Extracting \"'doc/tr.tab/s2'\" \(3628 characters\)
- sed "s/^X//" >'doc/tr.tab/s2' <<'END_OF_FILE'
- X@Section
- X @Title { Changing the style of entries and columns }
- X@Begin
- X@PP
- XThe style of an entry is mainly determined by four symbols from standard
- XLout: {@Code "@Font"}, {@Code "@Break"}, {@Code "@Wide"}, and
- X{@Code "@High"}. We will review them only briefly here, since they are
- Xtreated elsewhere [{@Ref kingston92}, {@Ref kingston92begin}],
- Xthen explain how they are used within tables.
- X@PP
- XThe @Code "@Font" symbol changes the font and font size of an object. For
- Xexample,
- X@ID @Code "Slope @Font { hello world }"
- Xproduces {Slope @Font { hello world }}, and
- X@ID @Code "{ Bold +2p } @Font { hello world }"
- Xproduces
- X@ID {{ Bold +2p } @Font { hello world }}
- Xwhich is two points larger than it otherwise would have been, as well
- Xas set in bold. The DocumentLayout package provides the abbreviations
- X@Code "@I" and @Code "@B" for @Code "Slope @Font" and {@Code "Bold @Font"}.
- X@PP
- XThe @Code "@Break" symbol affects paragraph breaking. Most relevant
- Xhere are @Code "clines @Break" and {@Code "rlines @Break"}, which will
- Xcentre or right-justify one or more lines in the given column:
- X@ID @Code {
- X"clines @Break {"
- X"A small centred"
- X"paragraph."
- X"}"
- X}
- Xproduces
- X@ID {
- Xclines @Break {
- XA small centred
- Xparagraph.
- X}
- X}
- Xfor example. Actually, there is a small problem with these symbols: they
- Xonly work on paragraphs of at least two words, so they will fail to
- Xcentre or right-justify a solitary word. Tab provides two symbols,
- X{@Code "@CC"} and {@Code "@RR"}, which do essentially the same thing,
- Xbut which work on single words as well.
- X@PP
- XThe @Code "@Wide" symbol forces an object to have a given width, by
- Xpadding it with white space on the right if it is too small, or breaking
- Xits paragraphs if it is too wide:
- X@ID @Code {
- X"1.5i @Wide {"
- X"This small paragraph will"
- X"be broken to a width of"
- X"one and one half inches."
- X"}"
- X}
- Xproduces
- X@ID {
- X1.5i @Wide {
- XThis small paragraph will
- Xbe broken to a width of
- Xone and one half inches.
- X}
- X}
- XWidths may be specified in centimetres, points or ems using the letters
- X{@Code "c"}, {@Code "p"} and {@Code "e"} instead of {@Code "i"}. The
- X@Code "@High" symbol is very similar, forcing an object to have a given
- Xheight by adding white space beneath it.
- X@PP
- XAlthough we will use only these four symbols in the following, more
- Xexotic symbols may be used, for example @Code "90d @Rotate" which
- Xrotates any object (the entire table, for example, or one entry) ninety
- Xdegrees, or any other positive or negative angle. Symbols defined by
- Xthe user or taken from other packages may also be used.
- X@PP
- XTo change the style of an individual entry, enclose it in the symbols
- Xrequired:
- X@ID @Code {
- X"@Rowa"
- X" A { @CC { one entry of the table } }"
- X}
- XMore commonly, the same style is to be applied to every entry in a
- Xparticular column, and this is done by placing the symbols for the style
- Xinside the format option, between @Code "@Col" and the column letter:
- X@ID @Code {
- X"@Tab"
- X" @Fmta { @Col 3c @Wide @CC A ! ... }"
- X}
- XAny @Code "@CC" or @Code "@RR" symbol should appear last, immediately
- Xbefore the column letter. Now every entry in column @Code A will be
- Xcentred in a three centimetre space, which means that the column as
- Xa whole will be three centimetres wide (excluding margins) and its
- Xentries will be centred.
- X@PP
- XIt is best not to use the @Code "@Wide" symbol at first, since Lout is
- Xquite good at choosing appropriate column widths. If the result is not
- Xsatisfactory, and the table is wide enough to require paragraph breaking
- Xwithin its entries, @Code "@Wide" should be used only to reduce the width
- Xof the wider columns, not to increase the width of the narrower ones.
- X@End @Section
- END_OF_FILE
- if test 3628 -ne `wc -c <'doc/tr.tab/s2'`; then
- echo shar: \"'doc/tr.tab/s2'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.tab/s2'
- fi
- if test -f 'doc/tr.tab/s7' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'doc/tr.tab/s7'\"
- else
- echo shar: Extracting \"'doc/tr.tab/s7'\" \(3508 characters\)
- sed "s/^X//" >'doc/tr.tab/s7' <<'END_OF_FILE'
- X@Section
- X @Title { A final example }
- X@Begin
- X@PP
- XIn conclusion, here is the input for a relatively large table:
- X@ID 10p @Font @Code 1.18fx @Break {
- X"@OneRow 10p @Font 1.15fx @Break @Tab"
- X" linewidth { 1.0 pt }"
- X" vmargin { 0.4v }"
- X" @Fmta { @Col @B A ! @Col @B B ! @Col @B C ! @Col @B D }"
- X" @Fmtb { @Col outdent @Break A ! @Col 1.8c @Wide ragged @Break B !"
- X" @Col C ! @Col outdent @Break D }"
- X"{"
- X""
- X"@Rowa above { single } below { single }"
- X" A { Scholarship }"
- X" B { Value $ }"
- X" C { Closing date }"
- X" D { Qualifications }"
- X""
- X"@Rowa"
- X" A { 1. Tenable at the University of Sydney }"
- X""
- X"@Rowb"
- X" A { Commonwealth and University Postgraduate Research Awards }"
- X" B { 10,415 (12,724 to 16,433 from 1 January 1990) }"
- X" C { 31 October }"
- X" D { Graduates with Hons I or Hons II Div. 1. For research in any field }"
- X""
- X"@Rowb"
- X" A { Commonwealth Postgraduate Course Awards }"
- X" B { 10,415 }"
- X" C { 30 September }"
- X" D { Graduates with honours degrees or very good pass degrees. For"
- X"Master's degrees undertaken by coursework }"
- X""
- X"@Rowb"
- X" A { R. and M. Bentwich Scholarship }"
- X" D { Graduate who holds a postgraduate research scholarship and who"
- X"requires a supplementary grant }"
- X""
- X"@Rowa"
- X" A { 2. Awarded by external bodies }"
- X""
- X"@Rowb"
- X" A { Caltex }"
- X" B { 24,000 }"
- X" C { 30 September }"
- X" D { Female graduates completing degree or diploma in year of application }"
- X""
- X"@Rowb"
- X" A { Rhodes Scholarship }"
- X" B { @Sterling3500 + return air-fare }"
- X" C { 1 October }"
- X" D { Age limit 25. For tenure at the University of Oxford }"
- X" below { single }"
- X"}"
- X"@DP"
- X"10p @Font { *Additional benefits include cost of travel and payment of fees. }"
- X}
- XThe most interesting things about it are the use of outdented paragraphs,
- Xand the @Code "@Wide" symbol which restricts the width of the second column,
- Xwhich would otherwise be as wide as the first and last. Here is the result:
- X@DP
- X@OneRow 10p @Font 1.15fx @Break @Tab
- X linewidth { 1.0 pt }
- X vmargin { 0.4v }
- X @Fmta { @Col @B A ! @Col @B B ! @Col @B C ! @Col @B D }
- X @Fmtb { @Col outdent @Break A ! @Col 1.8c @Wide ragged @Break B !
- X @Col C ! @Col outdent @Break D }
- X{
- X@Rowa above { single } below { single }
- X A { Scholarship }
- X B { Value $ }
- X C { Closing date }
- X D { Qualifications }
- X
- X@Rowa
- X A { 1. Tenable at the University of Sydney }
- X
- X@Rowb
- X A { Commonwealth and University Postgraduate Research Awards }
- X B { 10,415 (12,724 to 16,433 from 1 January 1990) }
- X C { 31 October }
- X D { Graduates with Hons I or Hons II Div. 1. For research in any field }
- X
- X@Rowb
- X A { Commonwealth Postgraduate Course Awards }
- X B { 10,415 }
- X C { 30 September }
- X D { Graduates with honours degrees or very good pass degrees. For
- XMaster's degrees undertaken by coursework }
- X
- X@Rowb
- X A { R. and M. Bentwich Scholarship }
- X D { Graduate who holds a postgraduate research scholarship and who
- Xrequires a supplementary grant }
- X
- X@Rowa
- X A { 2. Awarded by external bodies }
- X
- X@Rowb
- X A { Caltex }
- X B { 24,000 }
- X C { 30 September }
- X D { Female graduates completing degree or diploma in year of application }
- X
- X@Rowb
- X A { Rhodes Scholarship }
- X B { @Sterling3500 + return air-fare }
- X C { 1 October }
- X D { Age limit 25. For tenure at the University of Oxford }
- X below { single }
- X}
- X@DP
- X10p @Font { *Additional benefits include cost of travel and payment of fees. }
- X@End @Section
- END_OF_FILE
- if test 3508 -ne `wc -c <'doc/tr.tab/s7'`; then
- echo shar: \"'doc/tr.tab/s7'\" unpacked with wrong size!
- fi
- # end of 'doc/tr.tab/s7'
- fi
- if test -f 'include/doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/doc'\"
- else
- echo shar: Extracting \"'include/doc'\" \(4110 characters\)
- sed "s/^X//" >'include/doc' <<'END_OF_FILE'
- X
- X###############################################################################
- X# #
- X# Setup file for invoking @DocumentLayout for simple documents #
- X# #
- X# Jeffrey H. Kingston #
- X# 22 December 1992 #
- X# #
- X###############################################################################
- X
- X@SysInclude { ft }
- X@SysInclude { dl }
- X# @SysInclude { eq }
- X# @SysInclude { tab }
- X# @SysInclude { pas }
- X# @SysInclude { fig }
- X
- X@Use { @DocumentLayout
- X # @InitialFont { Times Base 12p } # initial font
- X # @InitialBreak { adjust 1.20fx } # initial break
- X # @Hyphenate { Yes } # Want hyphenation? Yes or No
- X # @MajorHeadingFont { Bold 2.0f } # font for major headings
- X # @HeadingFont { Bold } # font for ordinary headings
- X # @MinorHeadingFont { Bold } # font for minor headings
- X # @BookCoverFont { Helvetica Base } # font for book cover
- X
- X # @ParaGap { 1.30vx } # gap between paragraphs
- X # @ParaIndent { 2.00f } # paragraph first-line indent
- X
- X # @DispGap { 1.00v } # gap above and below displays
- X # @DispIndent { 2.00f } # @IndentedDisplay indent
- X # @DefaultIndent { 0.5rt } # @Display indent
- X # @WideIndent { 4.00f } # @WideTaggedList indent
- X # @VeryWideIndent { 8.00f } # @VeryWideTaggedList indent
- X
- X # @PageWidth { 21.00c } # width of page
- X # @PageHeight { 29.70c } # height of page
- X # @PageMargin { 2.50c } # size of all four margins
- X # @Columns { Single } # Single, Double, Multi
- X # @DoubleColWidth { 7.50c } # column width used by Double
- X # @MultiColWidth { 4.67c } # column width used by Multi
- X # @ColGap { 1.00c } # gap between columns
- X # @TopGap { 0.75c } # gap between figures
- X # @MidGap { 0.75c } # gap above and below body text
- X
- X # @FootNoteFont { 0.80f } # font for footnotes
- X # @FootNoteBreak { 1.20fx } # break for footnotes
- X # @FootLen { 2.00c } # footnote line and indent size
- X # @ColFootLen { 1.20c } # @FootLen when Double, Multi
- X # @FootGap { 0.20c } # gap between footnotes
- X
- X # @MakeIndex { No } # Want index? Yes or No
- X # @IndexColumns { Double } # Single, Double, Multi
- X
- X # @TableOfContents { No } # Want contents? Yes or No
- X # @MajorContentsGap { 1.30v } # gap above major entry
- X # @ContentsGap { 1.00v } # gap above ordinary entry
- X
- X # @ChapterNumbers { Yes } # Yes or No
- X # @SectionNumbers { Yes } # Yes or No
- X # @SubSectionNumbers { Yes } # Yes or No
- X # @AppendixNumbers { Yes } # Yes or No
- X # @SubAppendixNumbers{ Yes } # Yes or No
- X # @ChapterGap { 1.10b } # gap before each chapter
- X # @SectionGap { 2.00v } # gap before each section
- X # @SubSectionGap { 1.50v } # gap before each subsection
- X # @AppendixGap { 2.00v } # gap before each appendix
- X # @SubAppendixGap { 2.00v } # gap before each subappendix
- X
- X # @PageNumbers { Yes } # Want page numbers? Yes or No
- X # @FirstPageNumber { 1 } # Number of first page
- X # @PageOneTopFormat { @Null }
- X # @PageOneFootFormat { @Null }
- X # @PageTopFormat { |0.5rt - @PageNum - }
- X # @PageFootFormat { @Null }
- X # @BookTitleFormat { Bold @Font @Title }
- X}
- END_OF_FILE
- if test 4110 -ne `wc -c <'include/doc'`; then
- echo shar: \"'include/doc'\" unpacked with wrong size!
- fi
- # end of 'include/doc'
- fi
- if test -f 'include/fontdefs0' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/fontdefs0'\"
- else
- echo shar: Extracting \"'include/fontdefs0'\" \(3856 characters\)
- sed "s/^X//" >'include/fontdefs0' <<'END_OF_FILE'
- X
- X##################################################################################################################
- X# #
- X# Font definitions (English language version). Use a very wide window to see them clearly. #
- X# #
- X##################################################################################################################
- X
- Xfontdef AvantGarde Base { AvantGarde-Book AvantGarBoo.AFM Std.CEV NoRecode }
- Xfontdef AvantGarde Slope { AvantGarde-BookOblique AvantGarBooObl.AFM Std.CEV NoRecode }
- Xfontdef AvantGarde Demi { AvantGarde-Demi AvantGarDem.AFM Std.CEV NoRecode }
- Xfontdef AvantGarde DemiSlope { AvantGarde-DemiOblique AvantGarDemObl.AFM Std.CEV NoRecode }
- X
- Xfontdef Bookman Base { Bookman-Demi BookmDem.AFM Std.CEV NoRecode }
- Xfontdef Bookman Slope { Bookman-DemiItalic BookmDemIta.AFM Std.CEV NoRecode }
- Xfontdef Bookman Light { Bookman-Light BookmLig.AFM Std.CEV NoRecode }
- Xfontdef Bookman LightSlope { Bookman-LightItalic BookmLigIta.AFM Std.CEV NoRecode }
- X
- Xfontdef Courier Base { Courier Couri.AFM Std.CEV NoRecode }
- Xfontdef Courier Slope { Courier-Oblique CouriObl.AFM Std.CEV NoRecode }
- Xfontdef Courier Bold { Courier-Bold CouriBol.AFM Std.CEV NoRecode }
- Xfontdef Courier BoldSlope { Courier-BoldOblique CouriBolObl.AFM Std.CEV NoRecode }
- X
- Xfontdef Helvetica Base { Helvetica Helve.AFM Std.CEV NoRecode }
- Xfontdef Helvetica Slope { Helvetica-Oblique HelveObl.AFM Std.CEV NoRecode }
- Xfontdef Helvetica Bold { Helvetica-Bold HelveBol.AFM Std.CEV NoRecode }
- Xfontdef Helvetica BoldSlope { Helvetica-BoldOblique HelveBolObl.AFM Std.CEV NoRecode }
- Xfontdef Helvetica Cond { Helvetica-Condensed HelveCon.AFM Std.CEV NoRecode }
- Xfontdef Helvetica CondSlope { Helvetica-Condensed-Bold HelveConObl.AFM Std.CEV NoRecode }
- Xfontdef Helvetica CondBold { Helvetica-Condensed-Oblique HelveConBol.AFM Std.CEV NoRecode }
- Xfontdef Helvetica CondBoldSlope { Helvetica-Condensed-BoldObl HelveConBolObl.AFM Std.CEV NoRecode }
- Xfontdef Helvetica Narrow { Helvetica-Narrow HelveNar.AFM Std.CEV NoRecode }
- Xfontdef Helvetica NarrowSlope { Helvetica-Narrow-Oblique HelveNarObl.AFM Std.CEV NoRecode }
- Xfontdef Helvetica NarrowBold { Helvetica-Narrow-Bold HelveNarBol.AFM Std.CEV NoRecode }
- Xfontdef Helvetica NarrowBoldSlope {Helvetica-Narrow-BoldOblique HelveNarBolObl.AFM Std.CEV NoRecode }
- X
- Xfontdef Schoolbook Base { NewCenturySchlbk-Roman NewCenSchRom.AFM Std.CEV NoRecode }
- Xfontdef Schoolbook Slope { NewCenturySchlbk-Italic NewCenSchIta.AFM Std.CEV NoRecode }
- Xfontdef Schoolbook Bold { NewCenturySchlbk-Bold NewCenSchBol.AFM Std.CEV NoRecode }
- Xfontdef Schoolbook BoldSlope { NewCenturySchlbk-BoldItalic NewCenSchBolIta.AFM Std.CEV NoRecode }
- X
- Xfontdef Palatino Base { Palatino-Roman PalatRom.AFM Std.CEV NoRecode }
- Xfontdef Palatino Slope { Palatino-Italic PalatIta.AFM Std.CEV NoRecode }
- Xfontdef Palatino Bold { Palatino-Bold PalatBol.AFM Std.CEV NoRecode }
- Xfontdef Palatino BoldSlope { Palatino-BoldItalic PalatBolIta.AFM Std.CEV NoRecode }
- X
- Xfontdef Symbol Base { Symbol Symbo.AFM Symb.CEV NoRecode }
- X
- Xfontdef Times Base { Times-Roman TimesRom.AFM Std.CEV NoRecode }
- Xfontdef Times Slope { Times-Italic TimesIta.AFM Std.CEV NoRecode }
- Xfontdef Times Bold { Times-Bold TimesBol.AFM Std.CEV NoRecode }
- Xfontdef Times BoldSlope { Times-BoldItalic TimesBolIta.AFM Std.CEV NoRecode }
- X
- Xfontdef Chancery Base { ZapfChancery-MediumItalic ZapfChaMedIta.AFM Std.CEV NoRecode }
- Xfontdef Dingbats Base { ZapfDingbats ZapfDin.AFM Ding.CEV NoRecode }
- END_OF_FILE
- if test 3856 -ne `wc -c <'include/fontdefs0'`; then
- echo shar: \"'include/fontdefs0'\" unpacked with wrong size!
- fi
- # end of 'include/fontdefs0'
- fi
- if test -f 'include/fontdefs1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/fontdefs1'\"
- else
- echo shar: Extracting \"'include/fontdefs1'\" \(4078 characters\)
- sed "s/^X//" >'include/fontdefs1' <<'END_OF_FILE'
- X
- X##################################################################################################################
- X# #
- X# Font definitions (ISO-LATIN-1 version). Use a very wide window to see them clearly. #
- X# #
- X##################################################################################################################
- X
- Xfontdef AvantGarde Base { AvantGarde-Book AvantGarBoo.AFM LoutLatin1.CEV Recode }
- Xfontdef AvantGarde Slope { AvantGarde-BookOblique AvantGarBooObl.AFM LoutLatin1.CEV Recode }
- Xfontdef AvantGarde Demi { AvantGarde-Demi AvantGarDem.AFM LoutLatin1.CEV Recode }
- Xfontdef AvantGarde DemiSlope { AvantGarde-DemiOblique AvantGarDemObl.AFM LoutLatin1.CEV Recode }
- X
- Xfontdef Bookman Base { Bookman-Demi BookmDem.AFM LoutLatin1.CEV Recode }
- Xfontdef Bookman Slope { Bookman-DemiItalic BookmDemIta.AFM LoutLatin1.CEV Recode }
- Xfontdef Bookman Light { Bookman-Light BookmLig.AFM LoutLatin1.CEV Recode }
- Xfontdef Bookman LightSlope { Bookman-LightItalic BookmLigIta.AFM LoutLatin1.CEV Recode }
- X
- Xfontdef Courier Base { Courier Couri.AFM LoutLatin1.CEV Recode }
- Xfontdef Courier Slope { Courier-Oblique CouriObl.AFM LoutLatin1.CEV Recode }
- Xfontdef Courier Bold { Courier-Bold CouriBol.AFM LoutLatin1.CEV Recode }
- Xfontdef Courier BoldSlope { Courier-BoldOblique CouriBolObl.AFM LoutLatin1.CEV Recode }
- X
- Xfontdef Helvetica Base { Helvetica Helve.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica Slope { Helvetica-Oblique HelveObl.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica Bold { Helvetica-Bold HelveBol.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica BoldSlope { Helvetica-BoldOblique HelveBolObl.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica Cond { Helvetica-Condensed HelveCon.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica CondSlope { Helvetica-Condensed-Bold HelveConObl.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica CondBold { Helvetica-Condensed-Oblique HelveConBol.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica CondBoldSlope { Helvetica-Condensed-BoldObl HelveConBolObl.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica Narrow { Helvetica-Narrow HelveNar.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica NarrowSlope { Helvetica-Narrow-Oblique HelveNarObl.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica NarrowBold { Helvetica-Narrow-Bold HelveNarBol.AFM LoutLatin1.CEV Recode }
- Xfontdef Helvetica NarrowBoldSlope {Helvetica-Narrow-BoldOblique HelveNarBolObl.AFM LoutLatin1.CEV Recode }
- X
- Xfontdef Schoolbook Base { NewCenturySchlbk-Roman NewCenSchRom.AFM LoutLatin1.CEV Recode }
- Xfontdef Schoolbook Slope { NewCenturySchlbk-Italic NewCenSchIta.AFM LoutLatin1.CEV Recode }
- Xfontdef Schoolbook Bold { NewCenturySchlbk-Bold NewCenSchBol.AFM LoutLatin1.CEV Recode }
- Xfontdef Schoolbook BoldSlope { NewCenturySchlbk-BoldItalic NewCenSchBolIta.AFM LoutLatin1.CEV Recode }
- X
- Xfontdef Palatino Base { Palatino-Roman PalatRom.AFM LoutLatin1.CEV Recode }
- Xfontdef Palatino Slope { Palatino-Italic PalatIta.AFM LoutLatin1.CEV Recode }
- Xfontdef Palatino Bold { Palatino-Bold PalatBol.AFM LoutLatin1.CEV Recode }
- Xfontdef Palatino BoldSlope { Palatino-BoldItalic PalatBolIta.AFM LoutLatin1.CEV Recode }
- X
- Xfontdef Symbol Base { Symbol Symbo.AFM Symb.CEV NoRecode }
- X
- Xfontdef Times Base { Times-Roman TimesRom.AFM LoutLatin1.CEV Recode }
- Xfontdef Times Slope { Times-Italic TimesIta.AFM LoutLatin1.CEV Recode }
- Xfontdef Times Bold { Times-Bold TimesBol.AFM LoutLatin1.CEV Recode }
- Xfontdef Times BoldSlope { Times-BoldItalic TimesBolIta.AFM LoutLatin1.CEV Recode }
- X
- Xfontdef Chancery Base { ZapfChancery-MediumItalic ZapfChaMedIta.AFM LoutLatin1.CEV Recode }
- Xfontdef Dingbats Base { ZapfDingbats ZapfDin.AFM Ding.CEV NoRecode }
- END_OF_FILE
- if test 4078 -ne `wc -c <'include/fontdefs1'`; then
- echo shar: \"'include/fontdefs1'\" unpacked with wrong size!
- fi
- # end of 'include/fontdefs1'
- fi
- if test -f 'include/pas' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/pas'\"
- else
- echo shar: Extracting \"'include/pas'\" \(3765 characters\)
- sed "s/^X//" >'include/pas' <<'END_OF_FILE'
- X
- X###############################################################################
- X# #
- X# Lout @Pas package for formatting Pascal programs (Version 2.0) #
- X# #
- X# Version 1.0 by Jeffrey H. Kingston, June 1991. #
- X# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
- X# #
- X# See "Eq - a Lout package for typesetting mathematics" for user #
- X# information. #
- X# #
- X# Reference: Jensen, K. and Wirth, N. Pascal User Manual and Report. #
- X# Second Edition, Springer-Verlag, 1975. #
- X# #
- X###############################################################################
- X
- Xexport "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
- X "." "," ":" ";" "'" "`" "+" "-" "*" "/" "(" ")"
- X "[" "]" "^" ".." "=" "<" ">" "<>" "<=" ">=" ":="
- X
- X and array begin case const div do downto else end
- X file for forward function goto if in label mod nil not
- X of or otherwise packed procedure program record repeat
- X set then to type until var while with @Com
- X
- Xdef @Pas
- X body @Body
- X@Begin
- X
- X def @R right x { Base @Font x }
- X def @B right x { Bold @Font x }
- X def @S right x { { Symbol Base } @Font x }
- X
- X def "0" { @R "0" }
- X def "1" { @R "1" }
- X def "2" { @R "2" }
- X def "3" { @R "3" }
- X def "4" { @R "4" }
- X def "5" { @R "5" }
- X def "6" { @R "6" }
- X def "7" { @R "7" }
- X def "8" { @R "8" }
- X def "9" { @R "9" }
- X def "." { @R "." }
- X def "," { @R "," }
- X def ":" { @R ":" }
- X def ";" { @R ";" }
- X def "'" { @R "'" }
- X def "`" { @R "`" }
- X def "+" { @S "+" }
- X def "-" { @S "-" }
- X def "*" { @S @Char "asteriskmath" }
- X def "/" { @R @Char "fraction" }
- X def "(" { @R "(" }
- X def ")" { @R ")" }
- X def "[" { @R "[" }
- X def "]" { @R "]" }
- X def "^" { @S 0.8f @Font @Char "arrowup" }
- X def ".." { @R ".." }
- X def "=" { @S @Char "equal" }
- X def "<" { @S @Char "less" }
- X def ">" { @S @Char "greater" }
- X def "<>" { @S @Char "notequal" }
- X def "<=" { @S @Char "lessequal" }
- X def ">=" { @S @Char "greaterequal" }
- X def ":=" { :{//0.03fo =} }
- X
- X def and { @B "and" }
- X def array { @B "array" }
- X def begin { @B "begin" }
- X def case { @B "case" }
- X def const { @B "const" }
- X def div { @B "div" }
- X def do { @B "do" }
- X def downto { @B "downto" }
- X def else { @B "else" }
- X def end { @B "end" }
- X def file { @B "file" }
- X def for { @B "for" }
- X def forward { @B "forward" }
- X def function { @B "function" }
- X def goto { @B "goto" }
- X def if { @B "if" }
- X def in { @B "in" }
- X def label { @B "label" }
- X def mod { @B "mod" }
- X def nil { @B "nil" }
- X def not { @B "not" }
- X def of { @B "of" }
- X def or { @B "or" }
- X def otherwise { @B "otherwise" }
- X def packed { @B "packed" }
- X def procedure { @B "procedure" }
- X def program { @B "program" }
- X def record { @B "record" }
- X def repeat { @B "repeat" }
- X def set { @B "set" }
- X def then { @B "then" }
- X def to { @B "to" }
- X def type { @B "type" }
- X def until { @B "until" }
- X def var { @B "var" }
- X def while { @B "while" }
- X def with { @B "with" }
- X
- X def @Com right x { @R "{" x @R "}" }
- X
- X Slope @Font lines @Break @Body
- X
- X@End @Pas
- END_OF_FILE
- if test 3765 -ne `wc -c <'include/pas'`; then
- echo shar: \"'include/pas'\" unpacked with wrong size!
- fi
- # end of 'include/pas'
- fi
- if test -f 'include/report' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'include/report'\"
- else
- echo shar: Extracting \"'include/report'\" \(4110 characters\)
- sed "s/^X//" >'include/report' <<'END_OF_FILE'
- X
- X###############################################################################
- X# #
- X# Setup file for invoking @DocumentLayout for technical reports #
- X# #
- X# Jeffrey H. Kingston #
- X# 22 December 1992 #
- X# #
- X###############################################################################
- X
- X@SysInclude { ft }
- X@SysInclude { dl }
- X# @SysInclude { eq }
- X# @SysInclude { tab }
- X# @SysInclude { pas }
- X# @SysInclude { fig }
- X
- X@Use { @DocumentLayout
- X # @InitialFont { Times Base 12p } # initial font
- X # @InitialBreak { adjust 1.20fx } # initial break
- X # @Hyphenate { Yes } # Want hyphenation? Yes or No
- X # @MajorHeadingFont { Bold 2.0f } # font for major headings
- X # @HeadingFont { Bold } # font for ordinary headings
- X # @MinorHeadingFont { Bold } # font for minor headings
- X # @BookCoverFont { Helvetica Base } # font for book cover
- X
- X # @ParaGap { 1.30vx } # gap between paragraphs
- X # @ParaIndent { 2.00f } # paragraph first-line indent
- X
- X # @DispGap { 1.00v } # gap above and below displays
- X # @DispIndent { 2.00f } # @IndentedDisplay indent
- X # @DefaultIndent { 0.5rt } # @Display indent
- X # @WideIndent { 4.00f } # @WideTaggedList indent
- X # @VeryWideIndent { 8.00f } # @VeryWideTaggedList indent
- X
- X # @PageWidth { 21.00c } # width of page
- X # @PageHeight { 29.70c } # height of page
- X # @PageMargin { 2.50c } # size of all four margins
- X # @Columns { Single } # Single, Double, Multi
- X # @DoubleColWidth { 7.50c } # column width used by Double
- X # @MultiColWidth { 4.67c } # column width used by Multi
- X # @ColGap { 1.00c } # gap between columns
- X # @TopGap { 0.75c } # gap between figures
- X # @MidGap { 0.75c } # gap above and below body text
- X
- X # @FootNoteFont { 0.80f } # font for footnotes
- X # @FootNoteBreak { 1.20fx } # break for footnotes
- X # @FootLen { 2.00c } # footnote line and indent size
- X # @ColFootLen { 1.20c } # @FootLen when Double, Multi
- X # @FootGap { 0.20c } # gap between footnotes
- X
- X # @MakeIndex { No } # Want index? Yes or No
- X # @IndexColumns { Double } # Single, Double, Multi
- X
- X # @TableOfContents { No } # Want contents? Yes or No
- X # @MajorContentsGap { 1.30v } # gap above major entry
- X # @ContentsGap { 1.00v } # gap above ordinary entry
- X
- X # @ChapterNumbers { Yes } # Yes or No
- X # @SectionNumbers { Yes } # Yes or No
- X # @SubSectionNumbers { Yes } # Yes or No
- X # @AppendixNumbers { Yes } # Yes or No
- X # @SubAppendixNumbers{ Yes } # Yes or No
- X # @ChapterGap { 1.10b } # gap before each chapter
- X # @SectionGap { 2.00v } # gap before each section
- X # @SubSectionGap { 1.50v } # gap before each subsection
- X # @AppendixGap { 2.00v } # gap before each appendix
- X # @SubAppendixGap { 2.00v } # gap before each subappendix
- X
- X # @PageNumbers { Yes } # Want page numbers? Yes or No
- X # @FirstPageNumber { 1 } # Number of first page
- X # @PageOneTopFormat { @Null }
- X # @PageOneFootFormat { @Null }
- X # @PageTopFormat { |0.5rt - @PageNum - }
- X # @PageFootFormat { @Null }
- X # @BookTitleFormat { Bold @Font @Title }
- X}
- END_OF_FILE
- if test 4110 -ne `wc -c <'include/report'`; then
- echo shar: \"'include/report'\" unpacked with wrong size!
- fi
- # end of 'include/report'
- fi
- if test -f 'man/lout.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'man/lout.1'\"
- else
- echo shar: Extracting \"'man/lout.1'\" \(3576 characters\)
- sed "s/^X//" >'man/lout.1' <<'END_OF_FILE'
- X.TH LOUT 1
- X.SH NAME
- Xlout - prepare Lout document for printing
- X.SH SYNOPSIS
- Xlout [ -i<filename> ] files
- X.SH DESCRIPTION
- XInvoke the Basser Lout interpreter on the concatenation of the named
- Xfiles, producing a PostScript file on standard output suitable for
- Xprinting on PostScript printers using lpr(1). If no files are named,
- Xstdin is used instead. The special file name - may be used to denote
- Xstandard input. There may be white space between flags like -i and
- Xtheir associated <filename> or <dirname> values.
- X.P
- XAn optional .lout suffix may be used for Lout source and include
- Xfiles. When invoking files ending in this suffix the suffix may be
- Xomitted.
- X.SH OPTIONS
- X.TP 16
- X-i<filename>
- XSearch the directories of the include file path (see below) for
- X<filename> or <filename>.lout and include it. There may be
- Xmultiple -i options.
- X.TP
- X-s
- XSuppress all reading and writing of the cross reference database;
- Xother databases are not affected. Useful when many simple documents that
- Xdon't do any cross referencing are stored in one directory.
- X.TP
- X-e<filename>
- XDirect error messages to <filename> instead of to stderr.
- X.TP
- X-o<filename>
- XDirect PostScript output to <filename> instead of to stdout.
- X.TP
- X-I<dirname>
- XAdd <dirname> to the list of directories searched for @Include files
- Xand -i option files. There may be multiple -I options. @Include first
- Xsearches the current directory, then searches the -I directories in the
- Xorder given, and finally searches the default include file directory
- X(see below). @SysInclude and the -i option omit the search of the
- Xcurrent directory.
- X.TP
- X-C<dirname>
- XAdd <dirname> to the list of directories searched for character
- Xencoding (.CEV) files. There may be multiple -C options; the directories
- Xare searched in the order given, and finally the default encoding
- Xvectors directory is searched (see below).
- X.TP
- X-F<dirname>
- XAdd <dirname> to the list of directories searched for font metrics
- X(.AFM) files. There may be multiple -F options; the directories are
- Xsearched in the order given, and finally the default font metrics
- Xdirectory is searched (see below).
- X.TP
- X-D<dirname>
- XAdd <dirname> to the list of directories searched for Lout database
- Xfiles. There may be multiple -D options. @Database searches the
- Xcurrent directory, then the -D directories in the order given, and
- Xfinally searches the default databases directory (see below).
- X@SysDatabase omits the search of the current directory.
- X.TP
- X-u
- XPrint usage information on stderr.
- X.TP
- X-V
- XPrint version information on stderr.
- X.TP
- X-EPS
- XProduce output in the form of an EPS (Encapsulated PostScript) file,
- Xsuitable for inclusion in another document.
- X.SH LIMITS
- X.nf
- XAt most 255 input files (no limit on @IncludeGraphic files)
- XAt most 255 characters per input line
- XAt most 100 fonts (each different size counts as one font)
- XAt most 5 deep nesting of @Include files
- X.SH FILES
- X.nf
- XBinary file: <BINDIR>/lout
- XDefault include file directory: <LIBDIR>/include
- XDefault databases directory: <LIBDIR>/data
- XDefault font metrics directory: <LIBDIR>/font
- XDefault encoding vectors dir.: <LIBDIR>/evec
- XLout documentation directory: <DOCDIR>
- X.fi
- X.SH SEE ALSO
- X.P
- Xlpr(1), ghostview(1)
- X.SH REFERENCES
- X.P
- XFor a description of the Lout document formatting system,
- Xsee Jeffrey H. Kingston, "Document Formatting with Lout",
- XTech. Rep. 449, Basser Dept. of Computer Science, The
- XUniversity of Sydney 2006, Australia (December 1992).
- XSee Adobe Systems Inc., "PostScript Language Reference Manual
- X(Second Edition)", Addison-Wesley, 1990, for PostScript.
- X.SH AUTHOR
- X.P
- XJeffrey H. Kingston
- END_OF_FILE
- if test 3576 -ne `wc -c <'man/lout.1'`; then
- echo shar: \"'man/lout.1'\" unpacked with wrong size!
- fi
- # end of 'man/lout.1'
- fi
- echo shar: End of archive 32 \(of 35\).
- cp /dev/null ark32isdone
- MISSING=""
- 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
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 35 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0
- exit 0 # Just in case...
-