diff options
-rw-r--r-- | README | 5 | ||||
-rw-r--r-- | blurb | 8 | ||||
-rw-r--r-- | doc/design/README | 2 | ||||
-rw-r--r-- | doc/design/outfile.ps | 4 | ||||
-rw-r--r-- | doc/expert/README | 2 | ||||
-rw-r--r-- | doc/expert/all | 4 | ||||
-rw-r--r-- | doc/expert/outfile.ps | 18 | ||||
-rw-r--r-- | doc/expert/preface | 2 | ||||
-rw-r--r-- | doc/slides/README | 2 | ||||
-rw-r--r-- | doc/slides/outfile.ps | 4 | ||||
-rw-r--r-- | doc/user/README | 4 | ||||
-rw-r--r-- | doc/user/all | 4 | ||||
-rw-r--r-- | doc/user/preface | 2 | ||||
-rw-r--r-- | externs.h | 4 | ||||
-rw-r--r-- | makefile | 28 | ||||
-rw-r--r-- | prg2lout.c | 18 | ||||
-rw-r--r-- | whatsnew | 9 | ||||
-rw-r--r-- | z01.c | 2 | ||||
-rw-r--r-- | z02.c | 2 | ||||
-rw-r--r-- | z03.c | 2 | ||||
-rw-r--r-- | z04.c | 2 | ||||
-rw-r--r-- | z05.c | 2 | ||||
-rw-r--r-- | z06.c | 2 | ||||
-rw-r--r-- | z07.c | 2 | ||||
-rw-r--r-- | z08.c | 2 | ||||
-rw-r--r-- | z09.c | 2 | ||||
-rw-r--r-- | z10.c | 2 | ||||
-rw-r--r-- | z11.c | 2 | ||||
-rw-r--r-- | z12.c | 2 | ||||
-rw-r--r-- | z13.c | 2 | ||||
-rw-r--r-- | z14.c | 2 | ||||
-rw-r--r-- | z15.c | 2 | ||||
-rw-r--r-- | z16.c | 2 | ||||
-rw-r--r-- | z17.c | 2 | ||||
-rw-r--r-- | z18.c | 2 | ||||
-rw-r--r-- | z19.c | 2 | ||||
-rw-r--r-- | z20.c | 2 | ||||
-rw-r--r-- | z21.c | 2 | ||||
-rw-r--r-- | z22.c | 2 | ||||
-rw-r--r-- | z23.c | 2 | ||||
-rw-r--r-- | z24.c | 2 | ||||
-rw-r--r-- | z25.c | 2 | ||||
-rw-r--r-- | z26.c | 2 | ||||
-rw-r--r-- | z27.c | 2 | ||||
-rw-r--r-- | z28.c | 2 | ||||
-rw-r--r-- | z29.c | 2 | ||||
-rw-r--r-- | z30.c | 2 | ||||
-rw-r--r-- | z31.c | 2 | ||||
-rw-r--r-- | z32.c | 2 | ||||
-rw-r--r-- | z33.c | 2 | ||||
-rw-r--r-- | z34.c | 2 | ||||
-rw-r--r-- | z35.c | 2 | ||||
-rw-r--r-- | z36.c | 2 | ||||
-rw-r--r-- | z37.c | 2 | ||||
-rw-r--r-- | z38.c | 2 | ||||
-rw-r--r-- | z39.c | 2 | ||||
-rw-r--r-- | z40.c | 46 | ||||
-rw-r--r-- | z41.c | 2 | ||||
-rw-r--r-- | z42.c | 2 | ||||
-rw-r--r-- | z43.c | 2 | ||||
-rw-r--r-- | z44.c | 2 | ||||
-rw-r--r-- | z45.c | 2 | ||||
-rw-r--r-- | z46.c | 2 | ||||
-rw-r--r-- | z47.c | 2 | ||||
-rw-r--r-- | z48.c | 2 | ||||
-rw-r--r-- | z49.c | 3 | ||||
-rw-r--r-- | z50.c | 2 | ||||
-rw-r--r-- | z51.c | 2 | ||||
-rw-r--r-- | z52.c | 2 |
69 files changed, 143 insertions, 126 deletions
@@ -1,5 +1,5 @@ -THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.36) -BASSER LOUT VERSION 3 COPYRIGHT (C) 1994, 2007 Jeffrey H. Kingston +THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) +BASSER LOUT VERSION 3 COPYRIGHT (C) 1994, 2008 Jeffrey H. Kingston Jeffrey H. Kingston School of Information Technologies @@ -7,7 +7,6 @@ The University of Sydney 2006 AUSTRALIA Email: jeff@it.usyd.edu.au -Fax: 61 2 692 3838 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1,7 +1,7 @@ - THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.37 + THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.38 -Version 3.37 of the Lout document formatting system is now available +Version 3.38 of the Lout document formatting system is now available (free of charge). The system reads a high-level description of a document similar in style to LaTeX and produces a PostScript or plain text output file. @@ -21,7 +21,7 @@ went back to the beginning. Lout is written in highly portable ANSI C. It is distributed under the GNU public license and is obtainable from - ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.37.tar.gz + ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.38.tar.gz The distribution contains @@ -37,7 +37,7 @@ The distribution contains A PostScript version of the User's Guide is available at: - ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.37-user.ps.gz + ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.38-user.ps.gz Lout was created by Jeffrey H. Kingston (jeff@it.usyd.edu.au) of the School of Information Technologies at the University of Sydney. diff --git a/doc/design/README b/doc/design/README index 0b0f6ce..1e42437 100644 --- a/doc/design/README +++ b/doc/design/README @@ -23,4 +23,4 @@ messages (although changing the paper size might produce one or two benign ones). Jeffrey H. Kingston -19 September 2008 +14 October 2008 diff --git a/doc/design/outfile.ps b/doc/design/outfile.ps index 958311b..c142bee 100644 --- a/doc/design/outfile.ps +++ b/doc/design/outfile.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.37 (September 2008) -%%CreationDate: Fri Sep 19 08:43:20 2008 +%%Creator: Basser Lout Version 3.38 (September 2008) +%%CreationDate: Tue Oct 14 07:37:29 2008 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) diff --git a/doc/expert/README b/doc/expert/README index 279e143..7fdef44 100644 --- a/doc/expert/README +++ b/doc/expert/README @@ -21,4 +21,4 @@ which just warns about a figure that is not able to be placed on the first possible page, and so has to appear on the next page. Jeffrey H. Kingston -19 September 2008 +14 October 2008 diff --git a/doc/expert/all b/doc/expert/all index 39e5d1d..00f3e81 100644 --- a/doc/expert/all +++ b/doc/expert/all @@ -11,8 +11,8 @@ Lout Document Formatting System } @Author { Jeffrey H. Kingston } - @Edition { Version 3.37 -September, 2008 } + @Edition { Version 3.38 +October, 2008 } @Publisher { @I { @CopyRight Copyright 1991, 2008, Jeffrey H. Kingston, School of Information Technologies, The University of Sydney 2006, Australia.} } diff --git a/doc/expert/outfile.ps b/doc/expert/outfile.ps index 58c70ed..3f533a1 100644 --- a/doc/expert/outfile.ps +++ b/doc/expert/outfile.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.37 (September 2008) -%%CreationDate: Fri Sep 19 08:42:23 2008 +%%Creator: Basser Lout Version 3.38 (September 2008) +%%CreationDate: Tue Oct 14 07:50:16 2008 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) @@ -1603,8 +1603,8 @@ grestore 600 fnt2 1355 12125(An)m 2215(Exper)s -24(t')k 30(s)k 4518(Guide)s 6258(to)s 6902(the)s 3956 10685(Lout)m 616 9245(Document)m 3500(F)s 18(or)k -15(matting)k 6490(System)s 240 fnt2 -3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3882 4395(V)m 19(ersion)k -4725(3.37)s 3637 4107(September)m 12(,)k 4906(2008)s 240 fnt4 +3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3883 4395(V)m 19(ersion)k +4726(3.38)s 3796 4107(October)m 12(,)k 4746(2008)s 240 fnt4 0 342(\343)m 240 fnt3 241 340(Cop)m 7(yr)k -3(ight)k 1345(1991,)s 1991(2008,)s 2638(Jeffre)s 4(y)k 3438(H.)s 3726(Kingston,)s 4771(School)s 5587(of)s 5882(Inf)s 7(or)k -6(mation)k @@ -1698,11 +1698,11 @@ grestore [ /Rect [8501 9331 8615 9493] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_program /ANN pdfmark 8501(4)s 8615(])s 8722(and)s 0 9043(de)m 6(v)k 3(eloped)k -1042(continuously)s 2342(since)s 2899(then.)s 3484(This)s 3969(manual)s -4738(w)s 2(as)k 5168(rendered)s 6071(into)s 6506(PostScript)s +1042(continuously)s 2342(since)s 2899(then.)s 3484(This)s 3970(manual)s +4738(w)s 2(as)k 5168(rendered)s 6072(into)s 6506(PostScript)s [ /Dest /LOUT19_4605_preface_1 /DEST pdfmark -7557(by)s 7860(V)s 26(ersion)k 8658(3.37)s 0 8755(of)m +7558(by)s 7861(V)s 26(ersion)k 8659(3.38)s 0 8755(of)m 271(the)s 619(Basser)s 1316(Lout)s 1828(interpreter)s 9(,)k 2919(using)s 3491(the)s 3839(symbols)s 4688(described)s 5662(in)s 5905(the)s 6253(User')s 13(s)k 6914(Guide)s 7555([)s @@ -15769,8 +15769,8 @@ grestore 5908(F)s 3(or)k 6297(e)s 3(xample,)k 220 fnt2 480 1826(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k 240 fnt1 0 1328(produces)m 915(something)s 1965(lik)s 2(e)k -2377(19)s 2668(September)s 9(,)k 3788(2008)s 4315(gi)s 6(v)k 3(en)k -4895(a)s 5061(suitable)s 5860(database)s 6739(of)s 7010(months.)s +2377(14)s 2671(October)s 9(,)k 3539(2008)s 4066(gi)s 6(v)k 3(en)k +4646(a)s 4812(suitable)s 5611(database)s 6490(of)s 6761(months.)s grestore gsave diff --git a/doc/expert/preface b/doc/expert/preface index 092f9a8..a790474 100644 --- a/doc/expert/preface +++ b/doc/expert/preface @@ -21,7 +21,7 @@ This manual presents Version 3 of Basser Lout, publicly released in September 1994 @Cite { $kingston1995lout.program } and developed continuously since then. This manual was rendered into PostScript postscript @Index { PostScript } -by Version 3.37 of the Basser Lout interpreter, using the symbols +by Version 3.38 of the Basser Lout interpreter, using the symbols described in the User's Guide @Cite { $kingston1995lout.user }. @DP @Heading { Acknowledgment. } Version 3 has benefited from hundreds of diff --git a/doc/slides/README b/doc/slides/README index ee559ca..116304c 100644 --- a/doc/slides/README +++ b/doc/slides/README @@ -15,4 +15,4 @@ be no error messages at all after the second run. A copy of the final outfile.ps is included. Jeff Kingston -19 September 2008 +14 October 2008 diff --git a/doc/slides/outfile.ps b/doc/slides/outfile.ps index 7dadd44..481cb37 100644 --- a/doc/slides/outfile.ps +++ b/doc/slides/outfile.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 -%%Creator: Basser Lout Version 3.37 (September 2008) -%%CreationDate: Fri Sep 19 08:43:56 2008 +%%Creator: Basser Lout Version 3.38 (September 2008) +%%CreationDate: Tue Oct 14 07:39:10 2008 %%DocumentData: Binary %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) diff --git a/doc/user/README b/doc/user/README index 850b67a..29ff9e9 100644 --- a/doc/user/README +++ b/doc/user/README @@ -40,7 +40,7 @@ repeated failure to converge, caused by footnotes and floating figures close to large unbreakable displays. A copy of the final PostScript output file (A4 paper size) is -stored at "ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.37.user.ps.gz". +stored at "ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.38.user.ps.gz". Jeffrey H. Kingston -19 September 2008 +14 October 2008 diff --git a/doc/user/all b/doc/user/all index 9c49083..16e76cc 100644 --- a/doc/user/all +++ b/doc/user/all @@ -22,8 +22,8 @@ Lout Document Formatting System } @Author { Jeffrey H. Kingston } - @Edition { Version 3.37 -September 2008 } + @Edition { Version 3.38 +October 2008 } @Publisher { Copyright @CopyRight 1991, 2008 Jeffrey H. Kingston, School of Information Technologies, diff --git a/doc/user/preface b/doc/user/preface index b3face6..f76bc28 100644 --- a/doc/user/preface +++ b/doc/user/preface @@ -18,7 +18,7 @@ gnu. @Index { GNU Public License } primary source is directory @ID @Code "ftp://ftp.it.usyd.edu.au/jeff/lout" containing a gzipped tar file of the current version -(currently {@Code "lout-3.37.tar.gz"}), and various other things including +(currently {@Code "lout-3.38.tar.gz"}), and various other things including a PostScript version of this guide. The distribution contains source code, libraries, documentation, license, and installation instructions. @PP @@ -1,6 +1,6 @@ /*@externs.h:External Declarations:Directories and file conventions@**********/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -95,7 +95,7 @@ extern nl_catd MsgCat; /* */ /*****************************************************************************/ -#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.37 (September 2008)") +#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.38 (September 2008)") #define CROSS_DB AsciiToFull("lout") #define SOURCE_SUFFIX AsciiToFull(".lt") #define INDEX_SUFFIX AsciiToFull(".li") @@ -229,26 +229,26 @@ # # # (18) If the usual language at your site is not English, you might like to # # now change the default value of the @InitialLanguage option on line # -# 251 of file $(LOUTLIBDIR)/include/bsf. This will mean that by default # -# the date and words like Chapter and July will appear in a different # -# language, and hyphenation will be carried out according to patterns # -# designed for that language. You can find the list of known languages # -# in the User's Guide, or in file $(LOUTLIBDIR)/include/langdefs; if # -# yours is not on the list, let me know and we can work together to # -# add it. This has nothing to do with locales and USELOC. # +# 265 (or thereabouts) of file $(LOUTLIBDIR)/include/bsf. This will # +# mean that by default the date and words like Chapter and July will # +# appear in a different language, and hyphenation will be carried out # +# according to patterns designed for that language. You can find the # +# list of known languages in file $(LOUTLIBDIR)/include/langdefs, or in # +# the User's Guide; if yours is not there, let me know and we can work # +# together to add it. This has nothing to do with locales and USELOC. # # # # (19) If the usual size of a piece of paper at your site is not A4, you # # might like to now change the default value of the @PageType option # -# on line 65 of file $(LOUTLIBDIR)/include/dsf: # +# on line 65 (or thereabouts) of file $(LOUTLIBDIR)/include/dsf: # # # # named @PageType { A4 @OrIfPlain Other } # # # -# This is saying that the page type is to be A4 by default, unless # -# plain text output is in effect (lout -p), in which case the page # -# type is Other, which means that the page dimensions come from the # -# @PageWidth and @PageHeight options. Just change the A4, not the rest. # -# You can find the list of known page types, alternative to A4, in the # -# User's Guide, or at line 738 in $(LOUTLIBDIR)/include/dsf. # +# This says that the page type is to be A4 by default, unless plain # +# text output is in effect (lout -p), in which case the page type is # +# Other, which means that the page dimensions come from the @PageWidth # +# and @PageHeight options. Just change the A4, not the rest. You can # +# find the list of known page types, alternative to A4, in the User's # +# Guide, or at line 764 (or thereabouts) in $(LOUTLIBDIR)/include/dsf. # # # # Mail jeff@it.usyd.edu.au if you have any problems. # # # @@ -4,7 +4,7 @@ /* PRG2LOUT: A PROGRAM TO CONVERT PROGRAM SOURCES INTO LOUT */ /* COPYRIGHT (C) 2000, 2008 Jeffrey H. Kingston */ /* */ -/* Part of Lout Version 3.37, September 2008 */ +/* Part of Lout Version 3.38, September 2008 */ /* */ /* Jeffrey H. Kingston (jeff@cs.su.oz.au) */ /* Basser Department of Computer Science */ @@ -3563,7 +3563,8 @@ void NextChar() else if( curr_line[line_pos+1] != '\0' ) { /* we've already read in the next line; it's at &curr_line[line_pos+1] */ - strcpy((char *) &curr_line[1], (char *) &curr_line[line_pos+1]); + int len = strlen((char *) &curr_line[line_pos+1]); + memmove(&curr_line[1], &curr_line[line_pos+1], len + 1); line_num++; line_pos = 1; } @@ -4677,6 +4678,7 @@ void Process(LANGUAGE *lang, TOKEN *outer_token, else { fprintf(err_fp, "%s internal error: lang->no_match\n", ErrorHeader()); + exit(1); } break; @@ -5029,7 +5031,7 @@ int main(int argc, char *argv[]) /* read command line */ in_fp = out_fp = (FILE *) NULL; err_fp = stderr; - line_num = 0; + line_num = line_pos = 0; stdin_seen = raw_seen = FALSE; tab_by_spacing = TRUE; tab_in = 8; @@ -5039,8 +5041,8 @@ int main(int argc, char *argv[]) blanknumbered = BLANKNUMBERED_YES; numbered_option = NULL; headers_option = TRUE; - font_option = size_option = line_option = bls_option = tabin_option = - tabout_option = setup_option = language_option = (char *) NULL; + style_option = font_option = size_option = line_option = bls_option = + tabin_option = tabout_option = setup_option = language_option =(char *)NULL; if( argc == 1 ) { PrintUsage(); exit(1); @@ -5067,7 +5069,7 @@ int main(int argc, char *argv[]) /* read name of input file */ if( !raw_seen ) - { fprintf(err_fp, "%s: -i illegal with -r\n", ErrorHeader()); + { fprintf(err_fp, "%s: -i illegal without -r\n", ErrorHeader()); exit(1); } if( in_fp != NULL ) @@ -5307,8 +5309,7 @@ int main(int argc, char *argv[]) { if( languages[i]->names[j] == (char *) NULL ) i++, j = 0; - else if( strcmp( (char *) languages[i]->names[j], - (char *) language_option) == 0 ) + else if( strcmp(languages[i]->names[j], language_option) == 0 ) lang = languages[i]; else j++; @@ -5366,6 +5367,7 @@ int main(int argc, char *argv[]) SetupLanguage(lang); line_pos = 1; curr_line[line_pos] = '\n'; /* forces line read */ + curr_line[line_pos + 1] = '\0'; line_num = 0; NextChar(); Process(lang, (TOKEN *) NULL, U ""); @@ -541,4 +541,13 @@ Changes and new features introduced in Version 3.37 [September 2008] able to think of a case where it would cause trouble. If you find a problem with it, please let me know. +Changes and new features introduced in Version 3.38 [October 2008] + + Bug fixes: + Fixed my bungled installation of Bader's patch allowing EPS previews + Fiddled with prg2lout.c hoping to fix its intermittent crash bug + Converted "non-zero exit status of filter" from a fatal error to a + warning, so the unfixed prg2lout error has fewer repercussions + + Jeff Kingston @@ -1,6 +1,6 @@ /*@z01.c:Supervise:StartSym, AllowCrossDb, etc.@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z02.c:Lexical Analyser:Declarations@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z03.c:File Service:Declarations, no_fpos@******************************** */ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z04.c:Token Service:NewToken(), CopyTokenList()@***************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z05.c:Read Definitions:ReadLangDef()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z06.c:Parser:PushObj(), PushToken(), etc.@*********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z07.c:Object Service:SplitIsDefinite(), DisposeObject()@*******************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z08.c:Object Manifest:ReplaceWithSplit()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z09.c:Closure Expansion:SearchEnv()@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z10.c:Cross References:CrossInit(), CrossMake()@***************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z11.c:Style Service:EchoStyle()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z12.c:Size Finder:MinSize()@***********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z13.c:Object Breaking:BreakJoinedGroup()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z14.c:Fill Service:Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z15.c:Size Constraints:MinConstraint(), EnlargeToConstraint()@*************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z16.c:Size Adjustment:SetNeighbours(), CatAdjustSize()@********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z17.c:Gap Widths:GetGap()@*************************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z18.c:Galley Transfer:Declarations@****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z19.c:Galley Attaching:DetachGalley()@*************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z20.c:Galley Flushing:DebugInnersNames()@**********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z21.c:Galley Maker:SizeGalley()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z22.c:Galley Service:Interpose()@******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z23.c:Galley Printer:ScaleFactor()@****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z24.c:Print Service:PrintInit()@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z25.c:Object Echo:aprint(), cprint(), printnum()@**************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z26.c:Echo Service:BeginString()@******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z27.c:Debug Service:Debug flags@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z28.c:Error Service:ErrorInit(), ErrorSeen()@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z29.c:Symbol Table:Declarations, hash()@***********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z30.c:Symbol uses:InsertUses()@********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z31.c:Memory Allocator:DebugMemory()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z32.c:Counter Service:Next()@**********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z33.c:Database Service:OldCrossDb(), NewCrossDb(), SymToNum()@*************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z34.c:Rotation Service:Declarations@***************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z35.c:Time Keeper: MomentSym(), TimeString()@******************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z36.c:Hyphenation: Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z37.c:Font Service:Declarations@*******************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z38.c:Character Mappings:Declarations@*************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z39.c:String Handler:AsciiToFull(), StringEqual(), etc.@*******************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z40.c:Filter Handler:FilterInit()@*****************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -148,7 +148,7 @@ OBJECT FilterExecute(OBJECT x, FULL_CHAR *command, OBJECT env) } else { - /* execute the command, echo error messages, and exit if status problem */ + /* execute the command, echo error messages, and check status */ status = system( (char *) command); err_fp = StringFOpen(FILTER_ERR, READ_FILE); if( err_fp != NULL ) @@ -157,24 +157,30 @@ OBJECT FilterExecute(OBJECT x, FULL_CHAR *command, OBJECT env) fclose(err_fp); StringRemove(FILTER_ERR); } - if( status != 0 ) - Error(40, 4, "failure (non-zero status) of filter: %s", - FATAL, &fpos(x), command); - - /* read in output of system command as a Lout object */ - Child(scope_snapshot, LastDown(x)); - LoadScopeSnapshot(scope_snapshot); - debug0(DFS, D, " calling DefineFile from FilterExecute"); - filter_out_file = - DefineFile(string(sym_body(FilterOutSym)), STR_EMPTY, &fpos(x), - FILTER_FILE, SOURCE_PATH); - LexPush(filter_out_file, 0, FILTER_FILE, 1, FALSE); - t = NewToken(BEGIN, &fpos(x), 0, 0, BEGIN_PREC, FilterOutSym); - res = Parse(&t, nilobj, FALSE, FALSE); - LexPop(); - ClearScopeSnapshot(scope_snapshot); - StringRemove(string(sym_body(FilterOutSym))); - sym_body(FilterOutSym) = filter_out_filename; + if( status == 0 ) + { + /* system command succeeded; read in its output as a Lout object */ + Child(scope_snapshot, LastDown(x)); + LoadScopeSnapshot(scope_snapshot); + debug0(DFS, D, " calling DefineFile from FilterExecute"); + filter_out_file = + DefineFile(string(sym_body(FilterOutSym)), STR_EMPTY, &fpos(x), + FILTER_FILE, SOURCE_PATH); + LexPush(filter_out_file, 0, FILTER_FILE, 1, FALSE); + t = NewToken(BEGIN, &fpos(x), 0, 0, BEGIN_PREC, FilterOutSym); + res = Parse(&t, nilobj, FALSE, FALSE); + LexPop(); + ClearScopeSnapshot(scope_snapshot); + StringRemove(string(sym_body(FilterOutSym))); + sym_body(FilterOutSym) = filter_out_filename; + } + else + { + /* system command failed; print warning message and substitute "??" */ + Error(40, 4, "failure (status %d) of filter: %s", WARN, &fpos(x), + status, command); + res = MakeWord(WORD, STR_NOCROSS, &fpos(x)); /* i.e. "??" */ + } } debug1(DFH, D, "FilterExecute returning %s", EchoObject(res)); @@ -1,6 +1,6 @@ /*@z41.c:Object Input-Output:AppendToFile, ReadFromFile@**********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z42.c:Colour Service:ColourChange, ColourCommand@**************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z43.c:Language Service:LanguageChange, LanguageString@*********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z44.c:Vertical Hyphenation:VerticalHyphenate()@****************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z45.c:External Sort:SortFile()@********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z46.c:Optimal Galleys:FindOptimize()@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z47.c:Environment Table:EnvReadRetrieve()@*********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z48.c:PDF back end@********************************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z49.c:PostScript Back End:PS_BackEnd@**************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -603,6 +603,7 @@ static void PS_PrintEPSFile(FILE *fp, FILE_POS *pos, BOOLEAN strip_all) assert( fp != NULL, "PS_PrintEPSFile: fp!" ); /* state = (ReadOneLine(fp, buff, MAX_LINE) == 0) ? FINISHED : SKIPPING; */ + PS_FindEPSSegment(fp, &len); /* left out by Jeff's mistake in 3.37 */ state = (ReadOneBinaryLine(fp, buff, MAX_LINE, &count, &len) == 0) ? FINISHED : SKIPPING; while( state != FINISHED ) switch(state) @@ -1,6 +1,6 @@ /*@z50.c:PDF Back End:PDF_BackEnd@********************************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z51.c:Plain Text Back End:Plain_BackEnd@***********************************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ @@ -1,6 +1,6 @@ /*@z52.c:Texture Service:TextureChange, TextureCommand@***********************/ /* */ -/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.37) */ +/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.38) */ /* COPYRIGHT (C) 1991, 2008 Jeffrey H. Kingston */ /* */ /* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */ |