diff options
Diffstat (limited to 'include')
91 files changed, 1134 insertions, 50821 deletions
diff --git a/include/README b/include/README index c1ae322..86de180 100644 --- a/include/README +++ b/include/README @@ -33,6 +33,7 @@ Setup files (containing mainly lists of options settable by the user) eiffel Eiffel haskell Haskell java Java + javascript JavaScript modula Modula-2 (quick hack, does not use prg2lout) np Nonpareil pas Pascal (quick hack, does not use prg2lout) @@ -41,6 +42,7 @@ Setup files (containing mainly lists of options settable by the user) python Python rsl RSL ruby Ruby + tcl Tcl Source files containing Lout and PostScript source code for the packages ------------------------------------------------------------------------ @@ -71,6 +73,7 @@ Source files containing Lout and PostScript source code for the packages eiffelf Eiffel haskellf Haskell javaf Java + javascriptf JavaScript modulaf Modula-2 npf Nonpareil pasf Pascal @@ -79,6 +82,7 @@ Source files containing Lout and PostScript source code for the packages pythonf Python rslf RSL rubyf Ruby + tclf Tcl Obsolete source files retained for backward compatibility --------------------------------------------------------- @@ -91,6 +95,8 @@ Obsolete source files retained for backward compatibility fig Fig advanced graphics package (obsolete, use diag) figf Fig advanced graphics package figf.lpg A PostScript prepend file needed by figf + old_graph Old setup file for Graph package + old_graphf Old version of Graph package Miscellaneous source files -------------------------- @@ -104,4 +110,4 @@ Miscellaneous source files Jeffrey H. Kingston -19 September 2008 +26 June 2013 diff --git a/include/bsf b/include/bsf index 383d918..6c8959e 100644 --- a/include/bsf +++ b/include/bsf @@ -52,6 +52,53 @@ def @OrIfPlain } } + +def @ZeroSize right x +{ + @HContract @VContract { ^/0io |0io @OneCol @OneRow x |0io /0io } +} + + +########################################################################### +# # +# @Place: places an object at an arbitrary point on the page. # +# # +########################################################################### + +# +# VT: the expressions in the braces will work for PostScript but not for PDF +# they should be modified in the way the "named c { " cm" }" blocks were modified above +# but since the point of @Place is to output a matrix (?), I have not implemented this +# +def @Place + import @PSLengths named x + named "+" precedence 96 associativity left left a right b { a b "add" } + named "-" precedence 96 associativity left left a right b { a b "sub" } + named "/" precedence 97 associativity left left a right b { a b "div" } + named "*" precedence 98 associativity left left a right b { a b "mul" } + { 0 } + import @PSLengths named y + named "+" precedence 96 associativity left left a right b { a b "add" } + named "-" precedence 96 associativity left left a right b { a b "sub" } + named "/" precedence 97 associativity left left a right b { a b "div" } + named "*" precedence 98 associativity left left a right b { a b "mul" } + { 0 } + right val +{ + @ZeroSize { + @BackEnd @Case { + PlainText @Yield "" + PostScript @Yield { + { "LoutPageDict begin matr setmatrix" x y "translate end gsave" + // "grestore" } @Graphic val + } + else @Yield { { "% @Place UNIMPLEMENTED" } @Graphic val # VT: PDF currently has no output + } + } + } +} + + ########################################################################### # # # @Colour, @Color # @@ -78,7 +125,6 @@ def @ColouredUnderline @ColoredUnderline left col right y { # # ########################################################################### - def @Texture left type named scale { 1 } diff --git a/include/coltex b/include/coltex index 17f70a3..079b759 100644 --- a/include/coltex +++ b/include/coltex @@ -57,7 +57,7 @@ # nochange "" # # "" "" # # rgb <red> <blue> <green> "<red> <blue> <green> LoutSetRGBColor" # -# cymk <c> <y> <m> <k> "<c> <y> <m> <k> LoutSetCMYKColor" # +# cmyk <c> <m> <y> <k> "<c> <m> <y> <k> LoutSetCMYKColor" # # ------------------------------------------------------------ # # # # See the Expert's Guide for the use of LoutSetRGBColor and # diff --git a/include/diag b/include/diag index fec476b..fd0fe4a 100644 --- a/include/diag +++ b/include/diag @@ -52,6 +52,7 @@ # outlinestyle { solid } # outlinedashlength { 0.2f } # outlinewidth { thin } + # outlinecolour { nochange } # paint { none } # texture { solid } # font { } @@ -137,6 +138,7 @@ # aoutlinestyle { solid } # aoutlinedashlength { 0.2f } # aoutlinewidth { thin } + # aoutlinecolour { nochange } # apaint { none } # atexture { solid } # afont { } @@ -222,6 +224,7 @@ # boutlinestyle { solid } # boutlinedashlength { 0.2f } # boutlinewidth { thin } + # boutlinecolour { nochange } # bpaint { none } # btexture { solid } # bfont { } @@ -307,6 +310,7 @@ # coutlinestyle { solid } # coutlinedashlength { 0.2f } # coutlinewidth { thin } + # coutlinecolour { nochange } # cpaint { none } # ctexture { solid } # cfont { } @@ -392,6 +396,7 @@ # doutlinestyle { solid } # doutlinedashlength { 0.2f } # doutlinewidth { thin } + # doutlinecolour { nochange } # dpaint { none } # dtexture { solid } # dfont { } @@ -477,6 +482,7 @@ # eoutlinestyle { solid } # eoutlinedashlength { 0.2f } # eoutlinewidth { thin } + # eoutlinecolour { nochange } # epaint { none } # etexture { solid } # efont { } @@ -569,6 +575,7 @@ # pathstyle { solid } # pathdashlength { 0.2f } # pathwidth { thin } + # pathcolour { nochange } # pathgap { thin } # arrow { no } # arrowstyle { solid } diff --git a/include/diagf b/include/diagf index e68041b..f58b37d 100644 --- a/include/diagf +++ b/include/diagf @@ -84,6 +84,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { thin } + named outlinecolour outlinecolor { nochange } named paint { none } import @TextureImport named texture { solid } named font { } @@ -203,6 +204,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { thin } + named aoutlinecolour aoutlinecolor { nochange } named apaint { none } import @TextureImport named atexture{ solid } named afont { } @@ -322,6 +324,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { thin } + named boutlinecolour boutlinecolor { nochange } named bpaint { none } import @TextureImport named btexture{ solid } named bfont { } @@ -441,6 +444,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { thin } + named coutlinecolour coutlinecolor { nochange } named cpaint { none } import @TextureImport named ctexture{ solid } named cfont { } @@ -560,6 +564,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { thin } + named doutlinecolour doutlinecolor { nochange } named dpaint { none } import @TextureImport named dtexture{ solid } named dfont { } @@ -679,6 +684,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { thin } + named eoutlinecolour eoutlinecolor { nochange } named epaint { none } import @TextureImport named etexture{ solid } named efont { } @@ -816,6 +822,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { thin } + named pathcolour pathcolor { nochange } import @Geometry named pathgap named thin { 0.08 ft } named medium { 0.16 ft } @@ -1010,6 +1017,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { outlinewidth } + named outlinecolour outlinecolor { outlinecolour } named paint { paint } import @TextureImport named texture { texture } named font { font } @@ -1078,6 +1086,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { aoutlinewidth } + named aoutlinecolour aoutlinecolor { aoutlinecolour } named apaint { apaint } import @TextureImport named atexture { atexture } named afont { afont } @@ -1146,6 +1155,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { boutlinewidth } + named boutlinecolour boutlinecolor { boutlinecolour } named bpaint { bpaint } import @TextureImport named btexture { btexture } named bfont { bfont } @@ -1214,6 +1224,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { coutlinewidth } + named coutlinecolour coutlinecolor { coutlinecolour } named cpaint { cpaint } import @TextureImport named ctexture { ctexture } named cfont { cfont } @@ -1282,6 +1293,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { doutlinewidth } + named doutlinecolour doutlinecolor { doutlinecolour } named dpaint { dpaint } import @TextureImport named dtexture { dtexture } named dfont { dfont } @@ -1350,6 +1362,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { eoutlinewidth } + named eoutlinecolour eoutlinecolor { eoutlinecolour } named epaint { epaint } import @TextureImport named etexture { etexture } named efont { efont } @@ -1446,6 +1459,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { pathwidth } + named pathcolour pathcolor { pathcolour } import @Geometry named pathgap named thin { 0.08 ft } named medium { 0.16 ft } @@ -2739,6 +2753,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { outlinewidth } + named outlinecolour outlinecolor { outlinecolour } named paint { paint } import @TextureImport named texture { texture } named font { font } @@ -2992,9 +3007,10 @@ def @DiagSetup @HContract @VContract { { - "ldiagnodebegin [" @OutLine "]" - outlinedashlength "[" outlinestyle "]" - outlinewidth paint @PSAddPaint texture "ldiagnodeend" + "ldiagnodebegin [" @OutLine "]" outlinedashlength + "[" outlinestyle "]" outlinewidth + "{" @ColourCommand outlinecolour "}" + paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -3089,6 +3105,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { aoutlinewidth } + named outlinecolour outlinecolor { aoutlinecolour } named paint { apaint } import @TextureImport named texture { atexture } named font { afont } @@ -3342,9 +3359,10 @@ def @DiagSetup @HContract @VContract { { - "ldiagnodebegin [" @OutLine "]" - outlinedashlength "[" outlinestyle "]" - outlinewidth paint @PSAddPaint texture "ldiagnodeend" + "ldiagnodebegin [" @OutLine "]" outlinedashlength + "[" outlinestyle "]" outlinewidth + "{" @ColourCommand outlinecolour "}" + paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -3439,6 +3457,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { boutlinewidth } + named outlinecolour outlinecolor { boutlinecolour } named paint { bpaint } import @TextureImport named texture { btexture } named font { bfont } @@ -3692,9 +3711,10 @@ def @DiagSetup @HContract @VContract { { - "ldiagnodebegin [" @OutLine "]" - outlinedashlength "[" outlinestyle "]" - outlinewidth paint @PSAddPaint texture "ldiagnodeend" + "ldiagnodebegin [" @OutLine "]" outlinedashlength + "[" outlinestyle "]" outlinewidth + "{" @ColourCommand outlinecolour "}" + paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -3789,6 +3809,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { coutlinewidth } + named outlinecolour outlinecolor { coutlinecolour } named paint { cpaint } import @TextureImport named texture { ctexture } named font { cfont } @@ -4042,9 +4063,10 @@ def @DiagSetup @HContract @VContract { { - "ldiagnodebegin [" @OutLine "]" - outlinedashlength "[" outlinestyle "]" - outlinewidth paint @PSAddPaint texture "ldiagnodeend" + "ldiagnodebegin [" @OutLine "]" outlinedashlength + "[" outlinestyle "]" outlinewidth + "{" @ColourCommand outlinecolour "}" + paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -4139,6 +4161,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { doutlinewidth } + named outlinecolour outlinecolor { doutlinecolour } named paint { dpaint } import @TextureImport named texture { dtexture } named font { dfont } @@ -4392,9 +4415,10 @@ def @DiagSetup @HContract @VContract { { - "ldiagnodebegin [" @OutLine "]" - outlinedashlength "[" outlinestyle "]" - outlinewidth paint @PSAddPaint texture "ldiagnodeend" + "ldiagnodebegin [" @OutLine "]" outlinedashlength + "[" outlinestyle "]" outlinewidth + "{" @ColourCommand outlinecolour "}" + paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -4489,6 +4513,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { eoutlinewidth } + named outlinecolour outlinecolor { eoutlinecolour } named paint { epaint } import @TextureImport named texture { etexture } named font { efont } @@ -4742,9 +4767,10 @@ def @DiagSetup @HContract @VContract { { - "ldiagnodebegin [" @OutLine "]" - outlinedashlength "[" outlinestyle "]" - outlinewidth paint @PSAddPaint texture "ldiagnodeend" + "ldiagnodebegin [" @OutLine "]" outlinedashlength + "[" outlinestyle "]" outlinewidth + "{" @ColourCommand outlinecolour "}" + paint @PSAddPaint texture "ldiagnodeend" "(IN) ldiagpushtagdict" // "ldiagpopuptagdict" @@ -4826,6 +4852,9 @@ def @DiagSetup vsize {} vstrut { no } hstrut { no } + paint { nochange } + texture { solid } + outlinestyle { noline } } def @SolidArrowHead @@ -4834,9 +4863,6 @@ def @DiagSetup named pathwidth { pathwidth } { @InsulatedNode - paint { nochange } - texture { solid } - outlinestyle { noline } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -4857,9 +4883,6 @@ def @DiagSetup named pathwidth { pathwidth } { @InsulatedNode - paint { nochange } - texture { solid } - outlinestyle { noline } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -4882,9 +4905,6 @@ def @DiagSetup { @InsulatedNode outlinewidth { pathwidth } - outlinestyle { noline } - paint { nochange } - texture { solid } outline { @BackEnd @Case { PostScript @Yield { @@ -4905,9 +4925,6 @@ def @DiagSetup named pathgap { pathgap } { @InsulatedNode - paint { nochange } - texture { solid } - outlinestyle { noline } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -4928,9 +4945,6 @@ def @DiagSetup named pathwidth { pathwidth } { @InsulatedNode - outlinestyle { noline } - paint { nochange } - texture { solid } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -4952,9 +4966,6 @@ def @DiagSetup named pathgap { pathgap } { @InsulatedNode - outlinestyle { noline } - paint { nochange } - texture { solid } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -4976,9 +4987,6 @@ def @DiagSetup named pathgap { pathgap } { @InsulatedNode - outlinestyle { noline } - paint { nochange } - texture { solid } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -4999,9 +5007,6 @@ def @DiagSetup named pathwidth { pathwidth } { @InsulatedNode - outlinestyle { noline } - paint { nochange } - texture { solid } outlinewidth { pathwidth } outline { circle } { length @Wide length @High } @@ -5013,9 +5018,6 @@ def @DiagSetup named pathwidth { pathwidth } { @InsulatedNode - outlinestyle { noline } - paint { nochange } - texture { solid } outlinewidth { pathwidth } outline { box } { length @Wide width @High } @@ -5027,9 +5029,6 @@ def @DiagSetup named pathwidth { pathwidth } { @InsulatedNode - outlinestyle { noline } - paint { nochange } - texture { solid } outlinewidth { pathwidth } outline { @BackEnd @Case { @@ -5045,9 +5044,10 @@ def @DiagSetup named width { arrowwidth } named length { arrowlength } named pathwidth { pathwidth } + named pathcolour { pathcolour } named pathgap { pathgap } { - style @Case { + {@ColourCommand pathcolour} @SetColour style @Case { solid @Yield @SolidArrowHead width { width } length { length } pathwidth { pathwidth } @@ -5153,6 +5153,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { pathwidth } + named pathcolour pathcolor { pathcolour } import @Geometry named pathgap named thin { 0.08 ft } named medium { 0.16 ft } @@ -5299,6 +5300,7 @@ def @DiagSetup width { backarrowwidth } length { backarrowlength } pathwidth { pathwidth } + pathcolour { pathcolour } pathgap { @PathGap } } else @Yield "" @@ -5314,6 +5316,7 @@ def @DiagSetup width { arrowwidth } length { arrowlength } pathwidth { pathwidth } + pathcolour { pathcolour } pathgap { @PathGap } } else @Yield "" @@ -6466,8 +6469,8 @@ def @DiagSetup @Null & # so that preceding space gets chewed up { - @Direct "ldiaglinkbegin [" @Path "]" pathdashlength - "[" pathstyle "]" pathwidth "ldiaglinkend" + @Direct "ldiaglinkbegin" @ColourCommand pathcolour + "[" @Path "]" pathdashlength "[" pathstyle "]" pathwidth "ldiaglinkend" } @Graphic { @@ -6563,6 +6566,7 @@ def @DiagSetup named medium { 0.08 ft } named thick { 0.12 ft } { pathwidth } + named pathcolour { pathcolour } import @Geometry named pathgap named thin { 0.08 ft } named medium { 0.16 ft } @@ -6700,6 +6704,7 @@ def @DiagSetup pathstyle { pathstyle } pathdashlength { pathdashlength } pathwidth { pathwidth } + pathcolour { pathcolour } pathgap { pathgap } arrow { arrow } arrowstyle { arrowstyle } diff --git a/include/diagf.lpg b/include/diagf.lpg index 3c6e279..846d510 100644 --- a/include/diagf.lpg +++ b/include/diagf.lpg @@ -780,7 +780,7 @@ ldiagdict begin } def % ldiagsetpath: convert a Diag path into a PostScript path -% [ shape ] ldiagsetpath +% [ shape ] ldiagsetpath - /ldiagsetpath { 10 dict begin @@ -971,15 +971,17 @@ ldiagdict begin } def % ldiagnodeend: end of node parameters (so do the node) -% <outline> <dashlength> <style> <linewidth> <paint> ldiagnodeend - +% <outline> <dashlength> <style> <linewidth> <colour> <paint> ldiagnodeend - /ldiagnodeend { % (Entering ldiagnodeend) 0 ldiagdebugprint end % matches begin in ldiagnodebegin - 4 index gsave ldiagpaintpath grestore - 3 index ldiagsetpath clip newpath - 2 mul setlinewidth - 3 -1 roll ldiagdosegpath + 5 index gsave ldiagpaintpath grestore % <outline> <dl> <st> <lw> <cl> + 4 index ldiagsetpath clip newpath % <outline> <dl> <st> <lw> <cl> + exec % <outline> <dl> <st> <lw> + 2 mul setlinewidth % <outline> <dl> <st> + 3 -1 roll % <dashlength> <st> <outline> + ldiagdosegpath % - % (Leaving ldiagnodeend) 0 ldiagdebugprint } def diff --git a/include/dsf b/include/dsf index b19bb9e..96e115e 100644 --- a/include/dsf +++ b/include/dsf @@ -49,7 +49,7 @@ export @Figure @Table @Floater @FootNote @AnotherFootNote @EndNote - @LeftNote @RightNote @OuterNote @InnerNote @Place + @LeftNote @RightNote @OuterNote @InnerNote # @Place @Theorem @Proof @EndProof @Definition @Claim @Proposition @Lemma @Corollary @Example @Reference @RefStyle @RefPrint @@ -434,27 +434,33 @@ def @DocumentSetup named @TheoremFormat named word {} named number {} named title {} named body {} # theorem format { { @B { word @NumSep number title: } &2s } @Insert body } named @DefinitionWord { definition } # "Definition" word, etc. - named @DefinitionTitleFormat{ (title) } # Definition title format if present + named @DefinitionTitleFormat right title + { (title) } # Definition title format if present named @DefinitionFormat named word {} named number {} named title {} named body {} # definition format { { @B { word @NumSep number title: } &2s } @Insert body } named @ClaimWord { claim } # "Claim" word, etc. - named @ClaimTitleFormat { (title) } # Claim title format if present + named @ClaimTitleFormat right title + { (title) } # Claim title format if present named @ClaimFormat named word {} named number {} named title {} named body {} # claim format { { @B { word @NumSep number title: } &2s } @Insert body } named @PropositionWord { proposition } # "Proposition" word, etc. - named @PropositionTitleFormat{ (title) } # Proposition title format if present + named @PropositionTitleFormat right title + { (title) } # Proposition title format if present named @PropositionFormat named word {} named number {} named title {} named body {} # proposition format { { @B { word @NumSep number title: } &2s } @Insert body } named @LemmaWord { lemma } # "Lemma" word, etc. - named @LemmaTitleFormat { (title) } # Lemma title format if present + named @LemmaTitleFormat right title + { (title) } # Lemma title format if present named @LemmaFormat named word {} named number {} named title {} named body {} # lemma format { { @B { word @NumSep number title: } &2s } @Insert body } named @CorollaryWord { corollary } # "Corollary" word, etc. - named @CorollaryTitleFormat { (title) } # Corollary title format if present + named @CorollaryTitleFormat right title + { (title) } # Corollary title format if present named @CorollaryFormat named word {} named number {} named title {} named body {} # corollary format { { @B { word @NumSep number title: } &2s } @Insert body } named @ExampleWord { example } # "Example" word, etc. - named @ExampleTitleFormat { (title) } # Example title format if present + named @ExampleTitleFormat right title + { (title) } # Example title format if present named @ExampleFormat named word {} named number {} named title {} named body {} # example format { { @B { word @NumSep number title: } &2s } @Insert body } named @ProofWord { proof } # "Proof" word, etc. @@ -791,6 +797,10 @@ def @DocumentSetup A3 @Yield 842p A4 @Yield 595p A5 @Yield 420p + ISOB4 @Yield 709p + ISOB5 @Yield 499p + JISB4 @Yield 729p + JISB5 @Yield 516p B4 @Yield 729p B5 @Yield 516p Folio @Yield 612p @@ -815,6 +825,10 @@ def @DocumentSetup A3 @Yield 1190p A4 @Yield 842p A5 @Yield 595p + ISOB4 @Yield 1001p + ISOB5 @Yield 709p + JISB4 @Yield 1032p + JISB5 @Yield 729p B4 @Yield 1032p B5 @Yield 729p Folio @Yield 936p @@ -2747,10 +2761,11 @@ def @DocumentSetup # # ########################################################################### - def @ZeroSize right x - { - @HContract @VContract { ^/0io |0io @OneCol @OneRow x |0io /0io } - } + # moved to bsf + #def @ZeroSize right x + #{ + # @HContract @VContract { ^/0io |0io @OneCol @OneRow x |0io /0io } + #} def @MargPut left parity @@ -2792,7 +2807,7 @@ def @DocumentSetup # they should be modified in the way the "named c { " cm" }" blocks were modified above # but since the point of @Place is to output a matrix (?), I have not implemented this change # - def @Place + def @OldPlace import @PSLengths named x named "+" precedence 96 associativity left left a right b { a b "add" } named "-" precedence 96 associativity left left a right b { a b "sub" } @@ -2950,7 +2965,7 @@ def @DocumentSetup { @Title @Case { "" @Yield @Null - else @Yield (@Title) + else @Yield @DefinitionTitleFormat @Title } } @@ -3005,7 +3020,7 @@ def @DocumentSetup { @Title @Case { "" @Yield @Null - else @Yield (@Title) + else @Yield @ClaimTitleFormat @Title } } @@ -3060,7 +3075,7 @@ def @DocumentSetup { @Title @Case { "" @Yield @Null - else @Yield (@Title) + else @Yield @PropositionTitleFormat @Title } } @@ -3115,7 +3130,7 @@ def @DocumentSetup { @Title @Case { "" @Yield @Null - else @Yield (@Title) + else @Yield @LemmaTitleFormat @Title } } @@ -3170,7 +3185,7 @@ def @DocumentSetup { @Title @Case { "" @Yield @Null - else @Yield (@Title) + else @Yield @CorollaryTitleFormat @Title } } @@ -3225,7 +3240,7 @@ def @DocumentSetup { @Title @Case { "" @Yield @Null - else @Yield (@Title) + else @Yield @ExampleTitleFormat @Title } } diff --git a/include/graph b/include/graph index 368b06a..8f6c2a2 100644 --- a/include/graph +++ b/include/graph @@ -4,6 +4,7 @@ # # # Jeffrey H. Kingston # # 5 February 1999 # +# 21 June 2013 # # # # This file has been placed in the public domain by its author. # # # @@ -24,6 +25,88 @@ ############################################################################### # # -# This package does not offer default options that can be changed. # +# The @GraphSetup @Use clause # +# # +# To change the default value of any option, delete the # at the start of # +# its line and change the value between braces. # # # ############################################################################### + +@Use { @GraphSetup + + ############################################################################# + # # + # Options for @Graph only # + # # + ############################################################################# + + # style { frame } + # font { } + # named xorigin { none } + # named yorigin { none } + # named xlog { none } + # named ylog { none } + # width { 6.0c } + # height { 4.0c } + # xextra { auto } + # yextra { auto } + # xdecreasing { no } + # ydecreasing { no } + # leftcaption { } + # rightcaption { } + # abovecaption { } + # belowcaption { } + # leftgap { 1.5c } + # rightgap { 0.5c } + # abovegap { 0.5c } + # belowgap { 0.5c } + # hidecaptions { yes } + # xmin { none } + # xmax { none } + # ymin { none } + # ymax { none } + # xticksep { none } + # yticksep { none } + # rticksep { none } + # xticks { auto } + # yticks { auto } + # rticks { } + # xticklength { 0.5f } + # yticklength { 0.5f } + # rticklength { 0.5f } + # objects { } + # save { no } + + ############################################################################# + # # + # Options for @Graph and @Data # + # # + ############################################################################# + + # points { none } + # symbolsize { 0.15f } + # symbollinewidth { currentlinewidth } + # pairs { none } + # dashlength { 0.2f } + # linewidth { currentlinewidth } + # colour { none } + # paint { no } + # texture { solid } + # dataformat { xandy } + + ############################################################################# + # # + # Options for @GraphCross etc. and @GraphNoLine etc. # + # # + # Owing to clashes the names of these options differ slightly from the # + # names of the corresponding options of @GraphCross etc. and @GraphNoLine # + # etc. whose default values they are, in being prefixed by an "o". # + # # + ############################################################################# + + # osymbolsize { 0.15f } + # osymbollinewidth { currentlinewidth } + # odashlength { 0.2f } + # olinewidth { currentlinewidth } + # olength { 1.0f } +} diff --git a/include/graphf b/include/graphf index 4106555..fad552f 100644 --- a/include/graphf +++ b/include/graphf @@ -1,12 +1,14 @@ ############################################################################### # # -# Lout @Graph package for drawing graphs (Version 1.0) # +# Lout @Graph package for drawing graphs (Version 1.1) # # # -# Version 1.0 by Jeffrey H. Kingston, December 1993. # +# Version 1.0 (December 1993). # +# Version 1.1 (adds @GraphSetup, June 2013) # +# Jeffrey H. Kingston # # # # This package draws graphs, the statistical kind not the graph-theoretical # -# kind. See the User's Guide (Advanced Graphics) for user info. # +# kind. See the User's Guide for user info. # # # # 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 # @@ -33,7 +35,13 @@ @SysPrependGraphic { graphf.lpg } -def @GraphObj +############################################################################### +# # +# @GraphZZZ symbol - not for ordinary use # +# # +############################################################################### + +def @GraphZZZ left p named margin { 0c } named adj { 0 0 } @@ -49,12 +57,12 @@ def @GraphObj ||0io //0io } } -# VT: PDF does nothing + # VT: PDF does nothing PDF @Yield { @Null & # kills previous white space @HContract @VContract { //0io ||0io @HContract @VContract - { "% @GraphObj UNIMPLEMENTED" } + { "% @GraphZZZ UNIMPLEMENTED" } @Graphic { //margin ||margin x ||margin //margin } ||0io //0io } @@ -62,197 +70,328 @@ def @GraphObj } } -def @GraphCross - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } + +############################################################################### +# # +# @GraphSetup symbol # +# # +############################################################################### + +export @GraphCross @GraphPlus @GraphSquare @GraphFilledSquare + @GraphDiamond @GraphFilledDiamond @GraphCircle @GraphFilledCircle + @GraphTriangle @GraphFilledTriangle + + @GraphNoLine @GraphSolid @GraphDashed @GraphDotted @GraphDotDashed + @GraphDotDotDashed @GraphDotDotDotDashed + + @Graph + +def @GraphSetup + named style { frame } + named font { } + named xorigin named none { "false" } { none } + named yorigin named none { "false" } { none } + named xlog named none { "0" } { none } + named ylog named none { "0" } { none } + import @LoutLengths named width { 6.0c } + import @LoutLengths named height { 4.0c } + import @PSLengths named xextra { auto } + import @PSLengths named yextra { auto } + named xdecreasing { no } + named ydecreasing { no } + named leftcaption { } + named rightcaption { } + named abovecaption { } + named belowcaption { } + import @LoutLengths named leftgap { 1.5c } + import @LoutLengths named rightgap { 0.5c } + import @LoutLengths named abovegap { 0.5c } + import @LoutLengths named belowgap { 0.5c } + named hidecaptions { yes } + named xmin named none { "false" } { none } + named xmax named none { "false" } { none } + named ymin named none { "false" } { none } + named ymax named none { "false" } { none } + named xticksep named none { "0" } { none } + named yticksep named none { "0" } { none } + named rticksep named none { "0" } { none } + import @GraphMath named xticks + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { auto } + import @GraphMath named yticks + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { auto } + import @GraphMath named rticks + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { } + import @PSLengths named xticklength { 0.5f } + import @PSLengths named yticklength { 0.5f } + import @PSLengths named rticklength { 0.5f } + named objects + named @NW + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg ysize" } margin { margin } x } + named @SW + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg 0" } margin { margin } x } + named @SE + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "0 0" } margin { margin } x } + named @NE + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "0 ysize" } margin { margin } x } + named @W + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg ysize 2 div" } margin { margin } x } + named @S + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg 2 div 0" } margin { margin } x } + named @E + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "0 ysize 2 div" } margin { margin } x } + named @N + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg 2 div ysize" } margin { margin } x } + named @CTR + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + {at @GraphZZZ adj {"xsize neg 2 div ysize 2 div"} margin {margin} x} + {} + named save { no } + named points named none { "none" } { none } + import @PSLengths named symbolsize { 0.15f } + import @PSLengths named symbollinewidth { "currentlinewidth" } + named pairs named none { "none" } { none } + import @PSLengths named dashlength { 0.2f } + import @PSLengths named linewidth { "currentlinewidth" } + named colour color named none { "none" } { none } + named paint { no } + import @TextureImport named texture { solid } + named dataformat { xandy } + import @LoutLengths named osymbolsize { 0.15f } + import @PSLengths named osymbollinewidth { "currentlinewidth" } + import @PSLengths named odashlength { 0.2f } + import @PSLengths named olinewidth { "currentlinewidth" } + import @LoutLengths named olength { 1.0f } { - @BackEnd @Case { + def @GraphCross + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize ysize lineto 0 ysize moveto" - # "xsize 0 lineto [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "docross" - // "end" + PostScript @Yield { + @HContract @VContract + { + # "newpath 0 0 moveto xsize ysize lineto 0 ysize moveto" + # "xsize 0 lineto [] 0 setdash stroke" + "lgraphdict begin xmark ymark xmark" symbollinewidth "docross" + // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract - { "n [] 0 d 0 0 m __xsize __ysize l 0 __ysize m __xsize 0 l S"} - # uses S because PostScript version does NOT use closepath - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} + PDF @Yield { + @HContract @VContract + { "n [] 0 d 0 0 m __xsize __ysize l 0 __ysize m __xsize 0 l S"} + # uses S because PostScript version does NOT use closepath + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } + + } } - } -} + def @GraphPlus + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { -def @GraphPlus - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { + # "newpath xmark 0 moveto xmark ysize lineto 0 ymark moveto" + # "xsize ymark lineto [] 0 setdash stroke" + "lgraphdict begin xmark ymark xmark" symbollinewidth "doplus" + // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } - PostScript @Yield { - @HContract @VContract - { - # "newpath xmark 0 moveto xmark ysize lineto 0 ymark moveto" - # "xsize ymark lineto [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "doplus" - // "end" + PDF @Yield { + @HContract @VContract + { "n [] 0 d __xmark 0 m __xmark __ysize l 0 __ymark m __xsize __ymark l S"} + # uses S because PostScript version does NOT use closepath + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract - { "n [] 0 d __xmark 0 m __xmark __ysize l 0 __ymark m __xsize __ymark l S"} - # uses S because PostScript version does NOT use closepath - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} + } } - } -} + def @GraphSquare + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { -def @GraphSquare - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { + # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto" + # "0 ysize lineto closepath [] 0 setdash stroke" + "lgraphdict begin xmark ymark xmark" symbollinewidth "dosquare" + // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto" - # "0 ysize lineto closepath [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dosquare" - // "end" + PDF @Yield { + @HContract @VContract + {"n [] 0 d 0 0 __xsize __ysize re s"} + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 0 __xsize __ysize re s"} - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} + } } - } -} + def @GraphFilledSquare + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { -def @GraphFilledSquare - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { + # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize" + # "lineto closepath gsave [] 0 setdash stroke grestore fill" + "lgraphdict begin xmark ymark xmark" + symbollinewidth "dofilledsquare" // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto" - # "0 ysize lineto closepath gsave [] 0 setdash stroke grestore fill" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dofilledsquare" - // "end" + PDF @Yield { + @HContract @VContract + {"n [] 0 d 0 0 __xsize __ysize re b"} + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 0 __xsize __ysize re b"} - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} + } } - } -} + def @GraphDiamond + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { -def @GraphDiamond - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { + # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto" + # "xmark ysize lineto closepath [] 0 setdash stroke" + "lgraphdict begin xmark ymark xmark" symbollinewidth "dodiamond" + // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto" - # "xmark ysize lineto closepath [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dodiamond" - // "end" + PDF @Yield { + @HContract @VContract + {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l s"} + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l s"} - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} + } } - } -} - -def @GraphFilledDiamond - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { + def @GraphFilledDiamond + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto" - # "xmark ysize lineto closepath gsave [] 0 setdash stroke grestore fill" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dofilleddiamond" - // "end" + PostScript @Yield { + @HContract @VContract + { + # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto" + # "xmark ysize lineto closepath gsave [] 0 setdash stroke + # grestore fill" + "lgraphdict begin xmark ymark xmark" + symbollinewidth "dofilleddiamond" // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l b" + PDF @Yield { + @HContract @VContract + {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l b" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - } -} + } + } -def @GraphCircle - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { + def @GraphCircle + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - # "newpath xmark ymark xmark 0 360 arc" - # "[] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "docircle" - // "end" + PostScript @Yield { + @HContract @VContract + { + # "newpath xmark ymark xmark 0 360 arc" + # "[] 0 setdash stroke" + "lgraphdict begin xmark ymark xmark" symbollinewidth "docircle" + // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract + PDF @Yield { + @HContract @VContract # # draw a circle whose centre is at (xmark, ymark) and whose radius is xmark units; # @@ -270,42 +409,42 @@ def @GraphCircle # pt2 = (xmark + xmark, ymark - 4/3 * xmark) # pt3 = (xmark + xmark, ymark) # - {"n [] 0 d" - "__mul(2, __xmark) __ymark m" - "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1 - "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2 - "0 __ymark c" # pt3 - - "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1 - "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2 - "__mul(2, __xmark) __ymark c S" # pt3 - } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } + {"n [] 0 d" + "__mul(2, __xmark) __ymark m" + "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1 + "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2 + "0 __ymark c" # pt3 + + "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1 + "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2 + "__mul(2, __xmark) __ymark c S" # pt3 + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } - } -} + } + } -def @GraphFilledCircle - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - # "newpath xmark ymark xmark 0 360 arc" - # "gsave [] 0 setdash stroke grestore fill" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dofilledcircle" - // "end" + def @GraphFilledCircle + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { + # "newpath xmark ymark xmark 0 360 arc" + # "gsave [] 0 setdash stroke grestore fill" + "lgraphdict begin xmark ymark xmark" + symbollinewidth "dofilledcircle" // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract + PDF @Yield { + @HContract @VContract # # draw a filled circle whose centre is at (xmark, ymark) and whose radius is xmark units; # @@ -327,628 +466,632 @@ def @GraphFilledCircle # gsave/grestore in the above PostScript but there is no closepath before it; # but in PDF, it is not possible to execute a setdash within a path definition. # - {"n [] 0 d" - "__mul(2, __xmark) __ymark m" - "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1 - "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2 - "0 __ymark c" # pt3 - - "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1 - "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2 - "__mul(2, __xmark) __ymark c b" # pt3 - } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - - } -} - -def @GraphTriangle - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto" - # "closepath [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dotriangle" - // "end" + {"n [] 0 d" + "__mul(2, __xmark) __ymark m" + "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1 + "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2 + "0 __ymark c" # pt3 + + "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1 + "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2 + "__mul(2, __xmark) __ymark c b" # pt3 + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l s"} - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} + } } - } -} + def @GraphTriangle + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { -def @GraphFilledTriangle - import @LoutLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { 0.5p } -{ - @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { + # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto" + # "closepath [] 0 setdash stroke" + "lgraphdict begin xmark ymark xmark" symbollinewidth "dotriangle" + // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto" - # "closepath gsave [] 0 setdash stroke grestore fill" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dofilledtriangle" - // "end" + PDF @Yield { + @HContract @VContract + {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l s"} + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} } - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} - } - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l h b"} - @Graphic - {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High} + } } - } -} - -def @GraphNoLine - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - import @LoutLengths named length { 1.0f } -{ - length @Wide {} -} - -def @GraphSolid - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - import @LoutLengths named length { 1.0f } -{ - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "solid end" - } @Graphic { length @Wide } - } -# VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphSolid UNIMPLEMENTED" } @Graphic { length @Wide } - } - } -} + def @GraphFilledTriangle + import @LoutLengths named symbolsize { osymbolsize } + import @PSLengths named symbollinewidth { osymbollinewidth } + { + @BackEnd @Case { -def @GraphDashed - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - import @LoutLengths named length { 1.0f } -{ - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dashed end" - } @Graphic { length @Wide } - } -# VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDashed UNIMPLEMENTED" } @Graphic { length @Wide } - } - } -} + PostScript @Yield { + @HContract @VContract + { + # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto" + # "closepath gsave [] 0 setdash stroke grestore fill" + "lgraphdict begin xmark ymark xmark" + symbollinewidth "dofilledtriangle" // "end" + } + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } -def @GraphDotted - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - import @LoutLengths named length { 1.0f } -{ - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dotted end" - } @Graphic { length @Wide } - } -# VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDotted UNIMPLEMENTED" } @Graphic { length @Wide } - } - } -} + PDF @Yield { + @HContract @VContract + {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l h b"} + @Graphic {symbolsize @High symbolsize @Wide ^| + symbolsize @Wide ^/ symbolsize @High} + } -def @GraphDotDashed - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - import @LoutLengths named length { 1.0f } -{ - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dotdashed end" - } @Graphic { length @Wide } - } -# VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } + } } - } -} -def @GraphDotDotDashed - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - import @LoutLengths named length { 1.0f } -{ - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dotdotdashed end" - } @Graphic { length @Wide } - } -# VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } + def @GraphNoLine + import @PSLengths named dashlength { odashlength } + import @PSLengths named linewidth { olinewidth } + import @LoutLengths named length { olength } + { + length @Wide {} } - } -} -def @GraphDotDotDotDashed - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - import @LoutLengths named length { 1.0f } -{ - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dotdotdotdashed end" - } @Graphic { length @Wide } - } -# VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDotDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } + def @GraphSolid + import @PSLengths named dashlength { odashlength } + import @PSLengths named linewidth { olinewidth } + import @LoutLengths named length { olength } + { + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" + "/linewidth" linewidth "def xsize" dashlength "solid end" + } @Graphic { length @Wide } + } + # VT: PDF does nothing + PDF @Yield { + @HContract @VContract + { "% @GraphSolid UNIMPLEMENTED" } @Graphic { length @Wide } + } + } } - } -} - -export @Data -def @Graph - named save { no } - named style { frame } - import @LoutLengths named width { 6.0c } - import @LoutLengths named height { 4.0c } - import @PSLengths named xextra { "none" } - import @PSLengths named yextra { "none" } - named xdecreasing { no } - named ydecreasing { no } - named leftcaption { } - named rightcaption { } - named abovecaption { } - named belowcaption { } - import @LoutLengths named leftgap { 1.5c } - import @LoutLengths named rightgap { 0.5c } - import @LoutLengths named abovegap { 0.5c } - import @LoutLengths named belowgap { 0.5c } - named hidecaptions { yes } - named objects - named @NW - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "xsize neg ysize" } margin { margin } x } - named @SW - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "xsize neg 0" } margin { margin } x } - named @SE - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "0 0" } margin { margin } x } - named @NE - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "0 ysize" } margin { margin } x } - named @W - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "xsize neg ysize 2 div" } margin { margin } x } - named @S - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "xsize neg 2 div 0" } margin { margin } x } - named @E - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "0 ysize 2 div" } margin { margin } x } - named @N - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "xsize neg 2 div ysize" } margin { margin } x } - named @CTR - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphObj adj { "xsize neg 2 div ysize 2 div" } margin {margin} x } - {} - named xorigin named none { "false" } { none } - named yorigin named none { "false" } { none } - named xlog named none { "0" } { none } - named ylog named none { "0" } { none } - named points named none { "none" } { none } - named pairs named none { "none" } { none } - named colour color named none { "none" } { none } - named paint named none { "none" } { none } - import @TextureImport named texture { solid } - named xmin named none { "false" } { none } - named xmax named none { "false" } { none } - named ymin named none { "false" } { none } - named ymax named none { "false" } { none } - named xticksep named none { "0" } { none } - named yticksep named none { "0" } { none } - named rticksep named none { "0" } { none } - import @GraphMath named xticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { false } - import @GraphMath named yticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { false } - import @GraphMath named rticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { } - import @PSLengths named xticklength { 0.5f } - import @PSLengths named yticklength { 0.5f } - import @PSLengths named rticklength { 0.5f } - named dataformat { xandy } - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - import @PSLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { "currentlinewidth" } - body @Body -@Begin - - def @Above + def @GraphDashed + import @PSLengths named dashlength { odashlength } + import @PSLengths named linewidth { olinewidth } + import @LoutLengths named length { olength } { - abovecaption @Case { - "" @Yield {} - else @Yield @OneCol { ||0.5rt clines @Break abovecaption || //abovegap } + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" + "/linewidth" linewidth "def xsize" dashlength "dashed end" + } @Graphic { length @Wide } + } + # VT: PDF does nothing + PDF @Yield { + @HContract @VContract + { "% @GraphDashed UNIMPLEMENTED" } @Graphic { olength @Wide } } + } } - def @Below + def @GraphDotted + import @PSLengths named dashlength { odashlength } + import @PSLengths named linewidth { olinewidth } + import @LoutLengths named length { olength } { - belowcaption @Case { - "" @Yield {} - else @Yield @OneCol { //belowgap ||0.5rt clines @Break belowcaption || } + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" + "/linewidth" linewidth "def xsize" dashlength "dotted end" + } @Graphic { length @Wide } + } + # VT: PDF does nothing + PDF @Yield { + @HContract @VContract + { "% @GraphDotted UNIMPLEMENTED" } @Graphic { olength @Wide } } + } } - def @Left + def @GraphDotDashed + import @PSLengths named dashlength { odashlength } + import @PSLengths named linewidth { olinewidth } + import @LoutLengths named length { olength } { - leftcaption @Case { - "" @Yield {} - else @Yield @OneCol @OneRow { - { //0.5rt @OneRow clines @Break leftcaption // } ^||leftgap } + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" + "/linewidth" linewidth "def xsize" dashlength "dotdashed end" + } @Graphic { length @Wide } + } + # VT: PDF does nothing + PDF @Yield { + @HContract @VContract + { "% @GraphDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } } + } } - def @Right + def @GraphDotDotDashed + import @PSLengths named dashlength { odashlength } + import @PSLengths named linewidth { olinewidth } + import @LoutLengths named length { olength } { - rightcaption @Case { - "" @Yield {} - else @Yield @OneCol @OneRow { - ||rightgap { //0.5rt @OneRow lines @Break rightcaption // } } + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" + "/linewidth" linewidth "def xsize" dashlength "dotdotdashed end" + } @Graphic { length @Wide } + } + # VT: PDF does nothing + PDF @Yield { + @HContract @VContract + { "% @GraphDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } } + } } - def @ZeroWidth - right x + def @GraphDotDotDotDashed + import @PSLengths named dashlength { odashlength } + import @PSLengths named linewidth { olinewidth } + import @LoutLengths named length { olength } { - hidecaptions @Case { - { No no } @Yield x - { Yes yes } @Yield @OneCol { ||0io x ||0io } + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto /linewidth" + linewidth "def xsize" dashlength "dotdotdotdashed end" + } @Graphic { length @Wide } } + # VT: PDF does nothing + PDF @Yield { + @HContract @VContract + { "% @GraphDotDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } + } + } } - def @AddCaptions right x + + export @Data + def @Graph + named style { style } + named font { font } + named xorigin named none { "false" } { xorigin } + named yorigin named none { "false" } { yorigin } + named xlog named none { "0" } { xlog } + named ylog named none { "0" } { ylog } + import @LoutLengths named width { width } + import @LoutLengths named height { height } + import @PSLengths named xextra { xextra } + import @PSLengths named yextra { yextra } + named xdecreasing { xdecreasing } + named ydecreasing { ydecreasing } + named leftcaption { leftcaption } + named rightcaption { rightcaption } + named abovecaption { abovecaption } + named belowcaption { belowcaption } + import @LoutLengths named leftgap { leftgap } + import @LoutLengths named rightgap { rightgap } + import @LoutLengths named abovegap { abovegap } + import @LoutLengths named belowgap { belowgap } + named hidecaptions { hidecaptions } + named xmin named none { "false" } { xmin } + named xmax named none { "false" } { xmax } + named ymin named none { "false" } { ymin } + named ymax named none { "false" } { ymax } + named xticksep named none { "0" } { xticksep } + named yticksep named none { "0" } { yticksep } + named rticksep named none { "0" } { rticksep } + import @GraphMath named xticks + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { xticks } + import @GraphMath named yticks + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { yticks } + import @GraphMath named rticks + named none { "false" } + named auto { "false" } + named "@" { " lgen" } + named "^" { "^" } + { rticks } + import @PSLengths named xticklength { xticklength } + import @PSLengths named yticklength { yticklength } + import @PSLengths named rticklength { rticklength } + named objects + named @NW + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg ysize" } margin { margin } x } + named @SW + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg 0" } margin { margin } x } + named @SE + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "0 0" } margin { margin } x } + named @NE + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "0 ysize" } margin { margin } x } + named @W + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg ysize 2 div" } margin { margin } x } + named @S + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg 2 div 0" } margin { margin } x } + named @E + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "0 ysize 2 div" } margin { margin } x } + named @N + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + { at @GraphZZZ adj { "xsize neg 2 div ysize" } margin { margin } x } + named @CTR + import @GraphMath named at { 0 0 } + import @LoutLengths named margin { 0.3f } + right x + {at @GraphZZZ adj {"xsize neg 2 div ysize 2 div"} margin {margin} x} + { objects } + named save { save } + named points named none { "none" } { points } + import @PSLengths named symbolsize { symbolsize } + import @PSLengths named symbollinewidth { symbollinewidth } + named pairs named none { "none" } { pairs } + import @PSLengths named dashlength { dashlength } + import @PSLengths named linewidth { linewidth } + named colour color named none { "none" } { colour } + named paint { paint } + import @TextureImport named texture { texture } + named dataformat { dataformat } + body @Body { - def belowextra + + def @Above { - xticks @Case { - "" @Yield { 0i } - else @Yield { 1.7f } + abovecaption @Case { + "" @Yield {} + else @Yield @OneCol { + ||0.5rt clines @Break abovecaption || //abovegap } } } - @HContract @VContract + def @Below { - | @Above | - / @ZeroWidth @Left | &0.5rt x | @ZeroWidth @Right - /belowextra | @Below | + belowcaption @Case { + "" @Yield {} + else @Yield @OneCol { + //belowgap ||0.5rt clines @Break belowcaption || } + } } - } - export pi e sqrt abs ceiling floor truncate round cos sin atan exp log rand - "*" "/" idiv mod "-" "-0" "-1" "-2" "-3" "-4" "-5" "-6" "-7" "-8" - "-9" "-." "+" "=" "!=" "<" "<=" ">" ">=" not and xor or - if xloop yloop zloop - - def @Data - named points named none { "none" } { points } - named pairs named none { "none" } { pairs } - named colour color named none { "none" } { colour } - named paint named none { "none" } { paint } - import @TextureImport named texture { texture } - import @PSLengths named dashlength { dashlength } - import @PSLengths named linewidth { linewidth } - import @PSLengths named symbolsize { symbolsize } - import @PSLengths named symbollinewidth { symbollinewidth } - named dataformat { dataformat } - body data - { - def pi { "3.14159" } - def e { "2.71828" } - def sqrt precedence 40 right y { y "sqrt" } - def abs precedence 40 right y { y "abs" } - def ceiling precedence 40 right y { y "ceiling" } - def floor precedence 40 right y { y "floor" } - def truncate precedence 40 right y { y "truncate" } - def round precedence 40 right y { y "round" } - def cos precedence 40 right y { y "cos" } - def sin precedence 40 right y { y "sin" } - def atan precedence 39 left x right y { x y "atan" } - def exp precedence 38 left x right y { x y "exp" } - def log precedence 37 left x right y { x y "dolog" } - def rand precedence 36 left x right y { x y "dorand" } - def "*" precedence 35 left x right y { x y "mul" } - def "/" precedence 34 left x right y { x y "div" } - def idiv precedence 34 left x right y { x y "idiv" } - def mod precedence 34 left x right y { x y "mod" } - def "-" precedence 33 left x right y - { x @Case { "" @Yield {y "neg"} else @Yield { x y "sub" } } } - def "-0" { "-0" } - def "-1" { "-1" } - def "-2" { "-2" } - def "-3" { "-3" } - def "-4" { "-4" } - def "-5" { "-5" } - def "-6" { "-6" } - def "-7" { "-7" } - def "-8" { "-8" } - def "-9" { "-9" } - def "-." { "-." } - def "+" precedence 32 left x right y - { x @Case { "" @Yield { y } else @Yield { x y "add" } } } - def "=" precedence 30 left x right y { x y "eq" } - def "!=" precedence 30 left x right y { x y "ne" } - def "<" precedence 30 left x right y { x y "lt" } - def "<=" precedence 30 left x right y { x y "le" } - def ">" precedence 30 left x right y { x y "gt" } - def ">=" precedence 30 left x right y { x y "ge" } - def not precedence 25 right y { y "not" } - def and precedence 24 left x right y { x y "and" } - def xor precedence 23 left x right y { x y "xor" } - def or precedence 22 left x right y { x y "or" } - def if - named cond { true } - named then {} - named else {} - { cond "{" then "} {" else "} ifelse" } - def xloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named x { "xval" } {} - { from by to "{ /xval exch def" do "} for" } - def yloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named y { "yval" } {} - { from by to "{ /yval exch def" do "} for" } - def zloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named z { "zval" } {} - { from by to "{ /zval exch def" do "} for" } - - def @IfPt - left no - right yes + def @Left { - points @Case { - none @Yield no - else @Yield yes + leftcaption @Case { + "" @Yield {} + else @Yield @OneCol @OneRow { + { //0.5rt @OneRow clines @Break leftcaption // } ^||leftgap } } } - def @Points + def @Right { - points @Case { - none @Yield "" - plus @Yield "plus" - cross @Yield "cross" - square @Yield "square" - filledsquare @Yield "filledsquare" - diamond @Yield "diamond" - filleddiamond @Yield "filleddiamond" - circle @Yield "circle" - filledcircle @Yield "filledcircle" - triangle @Yield "triangle" - filledtriangle @Yield "filledtriangle" + rightcaption @Case { + "" @Yield {} + else @Yield @OneCol @OneRow { + ||rightgap { //0.5rt @OneRow lines @Break rightcaption // } } } } - def @Pairs + def @ZeroWidth + right x { - pairs @Case { - none @Yield {} - solid @Yield { "linesetup solid" @IfPt "ilinesetup solid" } - dashed @Yield { "linesetup cdashed" @IfPt "ilinesetup dashed" } - dotted @Yield { "linesetup dotted" @IfPt "ilinesetup dotted" } - dotdashed @Yield { "linesetup dotcdashed" @IfPt - "ilinesetup dotdashed" } - dotdotdashed @Yield { "linesetup dotdotcdashed" @IfPt - "ilinesetup dotdotdashed" } - dotdotdotdashed @Yield { "linesetup dotdotdotcdashed" @IfPt - "ilinesetup dotdotdotdashed" } - surfacexhisto @Yield { "surfacexhisto" } - surfaceyhisto @Yield { "surfaceyhisto" } - xhisto @Yield { "xhisto" } - yhisto @Yield { "yhisto" } - filledxhisto @Yield { "filledxhisto" } - filledyhisto @Yield { "filledyhisto" } - } - } - - def @DataFormat - { - dataformat @Case { - xandy @Yield xandy - swapxandy @Yield swapxandy - yonly @Yield yonly - xonly @Yield xonly + hidecaptions @Case { + { No no } @Yield x + { Yes yes } @Yield @OneCol { ||0io x ||0io } } - } + } - def @Paint + def @AddCaptions right x { - paint @Case { - { none no No } @Yield "false" - { yes Yes } @Yield "true" + def belowextra + { + xticks @Case { + "" @Yield { 0i } + else @Yield { 1.7f } + } + } + + @HContract @VContract + { + | @Above | + / @ZeroWidth @Left | &0.5rt x | @ZeroWidth @Right + /belowextra | @Below | } } - "[ [" data "]" dataformat - "{" @Points "}" - "{" @Pairs "}" - "{ /dashlength" dashlength "def" - " /linewidth" linewidth "def" @ColourCommand colour - " /symbolsize" symbolsize "def" - " /symbollinewidth" symbollinewidth "def }" - "{" @Paint "}" - "{" texture "}" - "]" - } + export pi e sqrt abs ceiling floor truncate round cos sin atan + exp log rand "*" "/" idiv mod "-" "-0" "-1" "-2" "-3" "-4" + "-5" "-6" "-7" "-8" "-9" "-." "+" "=" "!=" "<" "<=" ">" ">=" + not and xor or if xloop yloop zloop + + def @Data + named points named none { "none" } { points } + import @PSLengths named symbolsize { symbolsize } + import @PSLengths named symbollinewidth { symbollinewidth } + named pairs named none { "none" } { pairs } + import @PSLengths named dashlength { dashlength } + import @PSLengths named linewidth { linewidth } + named colour color named none { "none" } { colour } + named paint { paint } + import @TextureImport named texture { texture } + named dataformat { dataformat } + body data + { + def pi { "3.14159" } + def e { "2.71828" } + def sqrt precedence 40 right y { y "sqrt" } + def abs precedence 40 right y { y "abs" } + def ceiling precedence 40 right y { y "ceiling" } + def floor precedence 40 right y { y "floor" } + def truncate precedence 40 right y { y "truncate" } + def round precedence 40 right y { y "round" } + def cos precedence 40 right y { y "cos" } + def sin precedence 40 right y { y "sin" } + def atan precedence 39 left x right y { x y "atan" } + def exp precedence 38 left x right y { x y "exp" } + def log precedence 37 left x right y { x y "dolog" } + def rand precedence 36 left x right y { x y "dorand" } + def "*" precedence 35 left x right y { x y "mul" } + def "/" precedence 34 left x right y { x y "div" } + def idiv precedence 34 left x right y { x y "idiv" } + def mod precedence 34 left x right y { x y "mod" } + def "-" precedence 33 left x right y + { x @Case { "" @Yield {y "neg"} else @Yield { x y "sub" } } } + def "-0" { "-0" } + def "-1" { "-1" } + def "-2" { "-2" } + def "-3" { "-3" } + def "-4" { "-4" } + def "-5" { "-5" } + def "-6" { "-6" } + def "-7" { "-7" } + def "-8" { "-8" } + def "-9" { "-9" } + def "-." { "-." } + def "+" precedence 32 left x right y + { x @Case { "" @Yield { y } else @Yield { x y "add" } } } + def "=" precedence 30 left x right y { x y "eq" } + def "!=" precedence 30 left x right y { x y "ne" } + def "<" precedence 30 left x right y { x y "lt" } + def "<=" precedence 30 left x right y { x y "le" } + def ">" precedence 30 left x right y { x y "gt" } + def ">=" precedence 30 left x right y { x y "ge" } + def not precedence 25 right y { y "not" } + def and precedence 24 left x right y { x y "and" } + def xor precedence 23 left x right y { x y "xor" } + def or precedence 22 left x right y { x y "or" } + def if + named cond { true } + named then {} + named else {} + { cond "{" then "} {" else "} ifelse" } + def xloop + named from { 0 } + named to { 0 } + named by { 1 } + named do named x { "xval" } {} + { from by to "{ /xval exch def" do "} for" } + def yloop + named from { 0 } + named to { 0 } + named by { 1 } + named do named y { "yval" } {} + { from by to "{ /yval exch def" do "} for" } + def zloop + named from { 0 } + named to { 0 } + named by { 1 } + named do named z { "zval" } {} + { from by to "{ /zval exch def" do "} for" } + + def @IfPt + left no + right yes + { + points @Case { + none @Yield no + else @Yield yes + } + } - def @Style - { - style @Case { - frame @Yield { "framestyle" } - grid @Yield { "gridstyle" } - none @Yield { "nonestyle" } - axes @Yield { "axesstyle" } - } - } + def @Points + { + points @Case { + none @Yield "" + plus @Yield "plus" + cross @Yield "cross" + square @Yield "square" + filledsquare @Yield "filledsquare" + diamond @Yield "diamond" + filleddiamond @Yield "filleddiamond" + circle @Yield "circle" + filledcircle @Yield "filledcircle" + triangle @Yield "triangle" + filledtriangle @Yield "filledtriangle" + } + } - def @XExtra - { - xextra @Case { - "none" @Yield { - style @Case { - frame @Yield { "0.5 cm" } - grid @Yield { "0" } - none @Yield { "0" } - axes @Yield { "0" } + def @Pairs + { + pairs @Case { + none @Yield {} + solid @Yield { "linesetup solid" @IfPt "ilinesetup solid" } + dashed @Yield { "linesetup cdashed" @IfPt "ilinesetup dashed" } + dotted @Yield { "linesetup dotted" @IfPt "ilinesetup dotted" } + dotdashed @Yield { "linesetup dotcdashed" @IfPt + "ilinesetup dotdashed" } + dotdotdashed @Yield { "linesetup dotdotcdashed" @IfPt + "ilinesetup dotdotdashed" } + dotdotdotdashed @Yield { "linesetup dotdotdotcdashed" @IfPt + "ilinesetup dotdotdotdashed" } + surfacexhisto @Yield { "surfacexhisto" } + surfaceyhisto @Yield { "surfaceyhisto" } + xhisto @Yield { "xhisto" } + yhisto @Yield { "yhisto" } + filledxhisto @Yield { "filledxhisto" } + filledyhisto @Yield { "filledyhisto" } + } + } + + def @DataFormat + { + dataformat @Case { + xandy @Yield xandy + swapxandy @Yield swapxandy + yonly @Yield yonly + xonly @Yield xonly } } - else @Yield xextra - } - } - def @YExtra - { - yextra @Case { - "none" @Yield { - style @Case { - frame @Yield { "0.5 cm" } - grid @Yield { "0" } - none @Yield { "0" } - axes @Yield { "0" } + def @Paint + { + paint @Case { + { none no No } @Yield "false" + { yes Yes } @Yield "true" } } - else @Yield yextra + + "[ [" data "]" dataformat + "{" @Points "}" + "{" @Pairs "}" + "{ /dashlength" dashlength "def" + " /linewidth" linewidth "def" @ColourCommand colour + " /symbolsize" symbolsize "def" + " /symbollinewidth" symbollinewidth "def }" + "{" @Paint "}" + "{" texture "}" + "]" } - } - def @XDecreasing - { - xdecreasing @Case { - { No no } @Yield "false" - { Yes yes } @Yield "true" + def @Style + { + style @Case { + frame @Yield { "framestyle" } + grid @Yield { "gridstyle" } + none @Yield { "nonestyle" } + axes @Yield { "axesstyle" } + } } - } - def @YDecreasing - { - ydecreasing @Case { - { No no } @Yield "false" - { Yes yes } @Yield "true" + def @XExtra + { + xextra @Case { + "auto" @Yield { + style @Case { + frame @Yield { "0.5 cm" } + grid @Yield { "0" } + none @Yield { "0" } + axes @Yield { "0" } + } + } + else @Yield xextra + } } - } - @AddCaptions width @Wide height @High - @BackEnd @Case { - PostScript @Yield { - { - "grestore" - save @Case { { Yes yes } @Yield "save" else @Yield {} } - "gsave xsize ysize lgraphdict begin /ysize exch def /xsize exch def" - "/alldata [" @Body "] def" - xticksep "[" xticks "] 0 alldata" xmin xmax xlog - @XExtra @XDecreasing xorigin xticklength "xset" - yticksep "[" yticks "] 1 alldata" ymin ymax ylog - @YExtra @YDecreasing yorigin yticklength "yset" - - rticks @Case { - - "" @Yield "norset" - - else @Yield { - rticksep "[" rticks "] 1 alldata" ymin ymax ylog - @YExtra @YDecreasing yorigin rticklength "rset" - } + def @YExtra + { + yextra @Case { + "auto" @Yield { + style @Case { + frame @Yield { "0.5 cm" } + grid @Yield { "0" } + none @Yield { "0" } + axes @Yield { "0" } + } } + else @Yield yextra + } + } - "rundata" @Style // "end" - save @Case { { Yes yes } @Yield "restore" else @Yield {} } - } @Graphic { //1rt objects } + def @XDecreasing + { + xdecreasing @Case { + { No no } @Yield "false" + { Yes yes } @Yield "true" + } + } + + def @YDecreasing + { + ydecreasing @Case { + { No no } @Yield "false" + { Yes yes } @Yield "true" + } + } + + font @Font @AddCaptions width @Wide height @High + @BackEnd @Case { + PostScript @Yield { + { + "grestore" + save @Case { { Yes yes } @Yield "save" else @Yield {} } + "gsave xsize ysize lgraphdict begin /ysize exch def" + "/xsize exch def /alldata [" @Body "] def" + xticksep "[" xticks "] 0 alldata" xmin xmax xlog + @XExtra @XDecreasing xorigin xticklength "xset" + yticksep "[" yticks "] 1 alldata" ymin ymax ylog + @YExtra @YDecreasing yorigin yticklength "yset" + + rticks @Case { + + "" @Yield "norset" + + else @Yield { + rticksep "[" rticks "] 1 alldata" ymin ymax ylog + @YExtra @YDecreasing yorigin rticklength "rset" + } + } + + "rundata" @Style // "end" + save @Case { { Yes yes } @Yield "restore" else @Yield {} } + } @Graphic { //1rt objects } + } + PDF @Yield { {"% @Graph UNIMPLEMENTED"} @Graphic { //1rt objects } } } - PDF @Yield { {"% @Graph UNIMPLEMENTED"} @Graphic { //1rt objects } } - } -@End @Graph + } +} diff --git a/include/include/README b/include/include/README deleted file mode 100644 index 86de180..0000000 --- a/include/include/README +++ /dev/null @@ -1,113 +0,0 @@ -Directory lout/include - -This directory contains Lout source files for the standard packages. -The following listing classifies them into types of files. Ordinary -users only need to know about setup files, not source files. - -Setup files (containing mainly lists of options settable by the user) ---------------------------------------------------------------------- - - Setup files for basic document types (choose one): - - doc OrdinarySetup package - report ReportSetup package - book BookSetup package - slides OverheadsSetup package - picture IllustrationSetup package - - Setup files for special-purpose packages (choose any combination): - - diag Diag diagram drawing package - math Math, a mathematics formatting package - graph Graph graph drawing package - latin2 Latin2 (Eastern European characters) package - pie Pie pie graph drawing package - russian Russian language package - tbl Tbl table formatting package - xrgb @Xrgb symbol (extra named colours) - - Setup files for program formatting packages (choose any combination): - - blue Blue - cprint C and C++ - eiffel Eiffel - haskell Haskell - java Java - javascript JavaScript - modula Modula-2 (quick hack, does not use prg2lout) - np Nonpareil - pas Pascal (quick hack, does not use prg2lout) - perl Perl + Pod - pod Pod - python Python - rsl RSL - ruby Ruby - tcl Tcl - -Source files containing Lout and PostScript source code for the packages ------------------------------------------------------------------------- - - bsf BasicSetup package - bsf.lpg A PostScript prepend file needed by BasicSetup - dsf DocumentSetup package - docf OrdinarySetup package - reportf ReportSetup package - bookf BookSetup package - slidesf OverheadsSetup package - picturef IllustrationSetup package - - diagf Diag diagram drawing package - diagf.etc A file included by diagf - diagf.lpg A PostScript prepend file needed by diagf - mathf Math, a mathematics formatting package - graphf Graph graph drawing package - graphf.etc A file included by graphf - graphf.lpg A PostScript prepend file needed by graphf - pief Pie diagram drawing package - pief.lpg A PostScript prepend file needed by pief - russian.fd Russian font definitions file (placeholder file) - tblf Tbl table formatting package - - bluef Blue - cprintf C and C++ - eiffelf Eiffel - haskellf Haskell - javaf Java - javascriptf JavaScript - modulaf Modula-2 - npf Nonpareil - pasf Pascal - perlf Perl - podf Pod - pythonf Python - rslf RSL - rubyf Ruby - tclf Tcl - -Obsolete source files retained for backward compatibility ---------------------------------------------------------- - - eq Eq equation formatting package (obsolete, use math) - eqf Eq equation formatting package - tab Tab table formatting package (obsolete, use tbl) - tabf Tab table formatting package - tabf.lpg A PostScript prepend file needed by tabf - fig Fig advanced graphics package (obsolete, use diag) - figf Fig advanced graphics package - figf.lpg A PostScript prepend file needed by figf - old_graph Old setup file for Graph package - old_graphf Old version of Graph package - -Miscellaneous source files --------------------------- - - langdefs Standard language definitions file - lengths Helper definitions: @PSLengths and @LoutLengths - coltex Helper definitions: @ColourCommand and @TextureCommand - mydefs Empty file for if the user doesn't have a mydefs - ts The ToySetup package (an expert users' intro. example) - init A Lout source file used during installation (lout -x) - - -Jeffrey H. Kingston -26 June 2013 diff --git a/include/include/blue b/include/include/blue deleted file mode 100644 index 284e189..0000000 --- a/include/include/blue +++ /dev/null @@ -1,118 +0,0 @@ -############################################################################### -# # -# Lout setup file for Blue program printing # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 10 April 2000 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { bluef } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @BlueSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - # style { varying @OrIfPlain fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # spacing mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/bluef b/include/include/bluef deleted file mode 100644 index 31af593..0000000 --- a/include/include/bluef +++ /dev/null @@ -1,446 +0,0 @@ - -############################################################################### -# # -# Lout @BlueSetup package for formatting Blue programs # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 10 April 2000 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Blue -def @BlueSetup - named pipe { } # pipe through this - named numbered { No } # numbered lines? - named blanknumbered { Yes } # blanks numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { varying @OrIfPlain fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD - @A "$>" - - def @Blue - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lBlue" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lBlue" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - def @PS # for formatting strings - right x - { - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @Blue - -@End @BlueSetup diff --git a/include/include/book b/include/include/book deleted file mode 100644 index 37f5cdb..0000000 --- a/include/include/book +++ /dev/null @@ -1,542 +0,0 @@ -############################################################################### -# # -# Lout setup file for books # -# # -# Jeffrey H. Kingston # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude commands for standard packages. # -# # -############################################################################### - - @SysInclude { langdefs } # language definitions - @SysInclude { bsf } # BasicSetup package - @SysInclude { dsf } # DocumentSetup package - @SysInclude { bookf } # BookSetup extension - - -############################################################################### -# # -# @Include command for reading personal definitions from current directory. # -# # -############################################################################### - - @Include { mydefs } - -############################################################################### -# # -# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @BasicSetup - # @InitialFont { Times Base 12p } # initial font - # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}} - # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent - # @InitialSpace { lout } # initial space style - # @InitialLanguage { English } # initial language - # @InitialColour { black } # initial colour - # @InitialBackgroundColour { white } # initial background colour - # @OptimizePages { No } # optimize page breaks? - # @HeadingFont { Bold } # font for @Heading - # @FixedWidthFont { Courier Base -1p } # font for @F - # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs - # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP - # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays - # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent - # @DefaultIndent { 0.5rt } # @Display indent - # @DisplayNumStyle { (num) } # style of display numbers - # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent - # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent - # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists - # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items - # @ListIndent { 0s } # indent of list items - # @ListRightIndent { 0s } # right indent of list items - # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags - # @ListLabelRight { No } # right-adjust list labels - # @ListLabelRightGap { 2s } # gap when right-adjusting - # @ListFont { } # font of list items - # @ListBreak { } # break style of list items - # @NumberSeparator { . } # separates nums like 2.3.7 - # @CrossLinkFormat { @Body } # format of cross links - # @ExternalLinkFormat { @Body } # format of external links -} - - -############################################################################### -# # -# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @DocumentSetup - # @PageType { A4 @OrIfPlain Other} # page type (width, height) - # @PageWidth { 80s } # page width if type Other - # @PageHeight { 66f } # page height if type Other - # @PageOrientation { Portrait } # Portrait, Landscape, etc. - # @PageBackground { } # background of each page - # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages - # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages - # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages - # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages - # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages - # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages - # @OddLeftBodyMargin { 0c } # extra margin for page body - # @OddRightBodyMargin { 0c } # extra margin for page body - # @EvenLeftBodyMargin { 0c } # extra margin for page body - # @EvenRightBodyMargin{ 0c } # extra margin for page body - # @PageBoxType { None } # None Box CurveBox ShadowBox - # @PageBoxMargin { 1.00c } # page box margin - # @PageBoxLineWidth { } # page box line thickness - # @PageBoxPaint { none } # page box paint - # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox - # @PageEnclose { @Body } # enclose every page in this - # @ColumnNumber { 1 } # number of columns (1 to 10) - # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap - - # @FigureLocation { PageTop } # default figure location - # @FigureFormat { @CC @Body } # default figure format - # @FigureWord { figure } # "Figure" word else anything - # @FigureNumbers { Arabic } # method of numbering figures - # @FigureCaptionPos { Below } # Above or Below - # @FigureCaptionFont { -2p } # figure caption font - # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break - # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFigureContents { No } # list of figures at start - - # @TableLocation { PageTop } # default table location - # @TableFormat { @CC @Body } # default table format - # @TableWord { table } # "Table" word else anything - # @TableNumbers { Arabic } # method of numbering tables - # @TableCaptionPos { Below } # Above or Below - # @TableCaptionFont { -2p } # table caption font - # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break - # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeTableContents { No } # list of tables at start - - # @FloaterLocation { PageTop } # default floater location - # @FloaterFormat { @CC @Body } # default floater format - # @FloaterWord { floater } # "Floater" word else anything - # @FloaterNumbers { Arabic } # method of numbering floaters - # @FloaterCaptionPos { Below } # Above or Below - # @FloaterCaptionFont { -2p } # floater caption font - # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break - # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFloaterContents{ No } # list of floaters at start - - # @MakeContents { No } # make contents? Yes or No - @MakeContents { Yes } # make contents? Yes or No - # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry - # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry - # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry - # @ContentsFont { Bold } # font for major entry - # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry - # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry - # @ContentsFormat { number @DotSep title } # contents entry format - # @ContentsLeader { .. } # leader symbol in contents - # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders - # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width - - # @MakeReferences { Yes } # make references? Yes or No - # @RefCiteStyle { [cite] } # citation style - # @RefCiteLabels { @RefNum } # citation items - # @RefNumbers { Arabic } # reference numbers - # @RefListFormat { Labels } # NoLabels, Labels, etc. - # @RefListLabels { [@RefNum] } # ref list label format - # @RefListTitle { references } # title of reference list - # @ChapRefListTitle { references } # title of chapter ref list - # @RefListIndent { 0s } # indent to left of labels - # @RefListRightIndent { 0s } # indent to right of items - # @RefListGap { @ListGap } # gap between ref list items - # @RefListFont { } # font used in reference list - # @RefListBreak { } # break style of ref list - # @RefListLabelWidth { @ListLabelWidth } # Labels column width - # @RefListSortKey { @Tag } # sorting key - - # @MakeGlossary { No } # make glossary? Yes or No - # @GlossaryText { @Null } # glossary initial text - # @GlossaryFont { } # glossary entries font - # @GlossaryBreak { } # glossary entries break - # @GlossaryFormat { +3p @Font @S @Name # glossary entries format - # @Right @I { @Word&&page @PageNum } - # @DP @RawIndentedDisplay @Body } - # @GlossaryGap { @DisplayGap } # gap between glossary entries - # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) - # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap - # @InGlossaryFont { smallcaps } # font for @InGlossary - # @InGlossaryFormat { @Body } # format for @InGlossary - - # @MakeIndex { No } # make index? Yes or No - # @MakeIndex { No } # make index? Yes or No - @MakeIndex { Yes } # make index? Yes or No - # @IndexText { @Null } # index initial text - # @IndexFont { } # index entries font - # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexFormat { @Body } # @Index format - # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format - # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format - # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexTypeMain { @B @PageNum } # Main pagenum format - # @IndexTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexRangeFormat { @From--@To } # index page range format - # @IndexColumnNumber { 2 } # index columns (1 to 10) - # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap - # @IndexCtd { Yes } # include (ctd.) lines - # @IndexCtdWord { continued } # "ctd." in current lang. - # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexSpacerAbove { 2v } # space above index spacer - # @IndexSpacerBelow { 1v } # space below index spacer - # @IndexSpacerFont { +3p } # font of index spacer - # @IndexSpacerFormat { @Body } # format of index spacer - - # @MakeIndexA { No } # make index A? Yes or No - # @IndexAText { @Null } # index A initial text - # @IndexAFont { } # index A entries font - # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexAFormat { @Body } # @IndexA format - # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format - # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format - # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexATypeMain { @B @PageNum } # Main pagenum format - # @IndexATypeSpecial { @I @PageNum } # Special pagenum format - # @IndexARangeFormat { @From--@To } # index page range format - # @IndexAColumnNumber { 2 } # index A columns (1 to 10) - # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap - # @IndexACtd { Yes } # include (ctd.) lines - # @IndexACtdWord { continued } # "ctd." in current lang. - # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexASpacerAbove { 2v } # space above index A spacer - # @IndexASpacerBelow { 1v } # space below index A spacer - # @IndexASpacerFont { +3p } # font of index A spacer - # @IndexASpacerFormat { @Body } # format of index A spacer - - # @MakeIndexB { No } # make index B? Yes or No - # @IndexBText { @Null } # index B initial text - # @IndexBFont { } # index B entries font - # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexBFormat { @Body } # @IndexB format - # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format - # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format - # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexBTypeMain { @B @PageNum } # Main pagenum format - # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexBRangeFormat { @From--@To } # index page range format - # @IndexBColumnNumber { 2 } # index B columns (1 to 10) - # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap - # @IndexBCtd { Yes } # include (ctd.) lines - # @IndexBCtdWord { continued } # "ctd." in current lang. - # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexBSpacerAbove { 2v } # space above index B spacer - # @IndexBSpacerBelow { 1v } # space below index B spacer - # @IndexBSpacerFont { +3p } # font of index B spacer - # @IndexBSpacerFormat { @Body } # format of index B spacer - - # @MakeColophon { No } # make colophon? Yes or No - # @ColophonFont { } # font for colophon - # @ColophonBreak { } # break style for colophon - # @ColophonColumnNumber { 1 } # colophon columns (1 to 10) - # @ColophonColumnGap { 1.00c @OrIfPlain 6s } # colophon column gap - - # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures - # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text - - # @FootNoteNumbers { Arabic } # footnote numbers - # @FootNoteThrough { No } # numbered through chapter? - # @FootNoteLocation { ColFoot } # where the footnote appears - # @FootNoteFont { 0.80f } # font for footnotes - # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes - # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format - # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line - # @FootAboveGap { @DisplayGap } # gap above footnote line - # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes - # @MarginNoteFont { 0.80f } # font of margin notes - # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes - # @MarginNoteHGap { 0.5c } # horizontal gap to notes - # @MarginNoteVGap { @DisplayGap } # min vertical gap between - # @MarginNoteWidth { 1.50c } # width of margin notes - # @EndNoteNumbers { Arabic } # endnote numbers - # @EndNoteFont { 0.80f } # font of endnotes - # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes - # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format - # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes - - # @TheoremWord { theorem } # "Theorem" word, etc. - # @TheoremTitleFormat { (title) } # only if title present - # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @DefinitionWord { definition } # "Definition" word, etc. - # @DefinitionTitleFormat { (title) } # only if title present - # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ClaimWord { claim } # "Claim" word, etc. - # @ClaimTitleFormat { (title) } # only if title present - # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @PropositionWord { proposition } # "Proposition" word, etc. - # @PropositionTitleFormat { (title) } # only if title present - # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @LemmaWord { lemma } # "Lemma" word, etc. - # @LemmaTitleFormat { (title) } # only if title present - # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @CorollaryWord { corollary } # "Corollary" word, etc. - # @CorollaryTitleFormat { (title) } # only if title present - # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ExampleWord { example } # "Example" word, etc. - # @ExampleTitleFormat { (title) } # only if title present - # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ProofWord { proof } # "Proof" word, etc. - - # @PageHeaders { Simple } # None Simple Titles NoTitles - @PageHeaders { Titles } # None Simple Titles NoTitles - # @PageNumbers { Arabic } # page numbers - # @FirstPageNumber { 1 } # number of first page - # @IntroPageNumbers { Roman } # intro page numbers - # @IntroFirstPageNumber{ 1 } # number of first intro page - # @StructPageNums { No } # make structured page numbers - # @PageNumberFormat { number } # format of all page numbers - - # @OddTop { @Centre{- @PageNum -} } # Simple page headers - # @OddFoot { @Null } - # @EvenTop { @Centre{- @PageNum -} } - # @EvenFoot { @Null } - # @StartOddTop { @Null } - # @StartOddFoot { @Null } - # @StartEvenTop { @Null } - # @StartEvenFoot { @Null } - # @IntroOddTop { @Null } - # @IntroOddFoot { @Centre @PageNum } - # @IntroEvenTop { @Null } - # @IntroEvenFoot { @Centre @PageNum } - # @IntroStartOddTop { @Null } - # @IntroStartOddFoot { @Null } - # @IntroStartEvenTop { @Null } - # @IntroStartEvenFoot { @Null } - - # Titles, NoTitles headers - # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum } - # @RunningOddFoot { @Null } - # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} } - # @RunningEvenFoot { @Null } - # @RunningStartOddTop { @Null } - # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum } - # @RunningStartEvenTop { @Null } - # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum } - # @RunningIntroOddTop { @Null } - # @RunningIntroOddFoot { @Right @PageNum } - # @RunningIntroEvenTop { @Null } - # @RunningIntroEvenFoot { @PageNum } - # @RunningIntroStartOddTop { @Null } - # @RunningIntroStartOddFoot { @Null } - # @RunningIntroStartEvenTop { @Null } - # @RunningIntroStartEvenFoot { @Null } -} - - -############################################################################### -# # -# The @BookSetup @Use clause - options specific to books. # -# # -############################################################################### - -@Use { @BookSetup - # @TitlePageFont { Helvetica Base} # title page font (not size) - # @SeparateIntroNumbering { Yes } # separate intro page numbers - # @PrefaceAfterContents { No } # Yes or No - # @ChapterStartPages { Any } # Any, Odd, Even, SamePage - # @ReferencesBeforeAppendices { No } # references before appendices - # @PrefaceWord { preface } # word for "Preface" - # @ContentsWord { contents } # word for "Contents" - # @FigureListWord { figurelist } # word for "List of Figures" - # @TableListWord { tablelist } # word for "List of Tables" - # @FloaterListWord { floaterlist } # word for "List of Floaters" - # @IntroductionWord { introduction } # word for "Introduction" - # @AbbreviationsWord { abbreviations } # word for "Abbreviations" - # @ChapterWord { chapter } # word for "Chapter" - # @AppendixWord { appendix } # word for "Appendix" - # @GlossaryWord { glossary } # word for "Glossary" - # @IndexWord { index } # word for "Index" - # @IndexAWord { index } # word for "Index" (A) - # @IndexBWord { index } # word for "Index" (B) - # @ColophonWord { colophon } # word for "Colophon" - # @SubPrefaceNumbers { None } # kind of sub-preface numbers - # @FirstSubPrefaceNumber { 1 } # first sub-preface number (Arabic) - # @SubIntroductionNumbers { None } # kind of sub-introduction numbers - # @FirstSubIntroductionNumber { 1 } # first sub-introduction number - # @ChapterNumbers { Arabic } # kind of chapter numbers - # @FirstChapterNumber { 1 } # first chapter number (Arabic) - # @SectionNumbers { Arabic } # kind of section numbers - # @FirstSectionNumber { 1 } # first section number (Arabic) - # @SubSectionNumbers { Arabic } # kind of subsection numbers - # @FirstSubSectionNumber { 1 } # first subsect number (Arabic) - # @SubSubSectionNumbers { Arabic } # kind of sub-subs. numbers - # @FirstSubSubSectionNumber { 1 } # first sub-sub number (Arabic) - # @AppendixNumbers { UCAlpha } # kind of appendix numbers - # @FirstAppendixNumber { 1 } # first appendix num (Arabic) - # @SubAppendixNumbers { Arabic } # kind of subappendix numbers - # @FirstSubAppendixNumber { 1 } # first sub-app num (Arabic) - # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers - # @FirstSubSubAppendixNumber { 1 } # first sub-sub num (Arabic) - # @PartHeadingFont { Helvetica Base 2.50f } # part head font - # @PartHeadingBreak { clines 1.2fx nohyphen } # part head break - # @PartHeadingFormat { @CD number @DP @CD title } # part head format - # @ChapterHeadingFont { Bold 2.00f } # chapter head font - # @ChapterHeadingBreak { ragged 1.2fx nohyphen } # chapter head break - # @ChapterHeadingFormat { number @DotSep title } # format of chap. head - # @SubPrefaceHeadingFont { Bold } # sub-preface head font - # @SubPrefaceHeadingBreak { ragged 1.2fx nohyphen } # sub-preface head break - # @SubPrefaceHeadingFormat { number @DotSep title } # format of s.-p. head - # @SubIntroductionHeadingFont { Bold } # sub-intro head font - # @SubIntroductionHeadingBreak { ragged 1.2fx nohyphen} # sub-intro head break - # @SubIntroductionHeadingFormat { number @DotSep title} # format of sub-intro. hd - # @SectionHeadingFont { Bold } # section head font - # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break - # @SectionHeadingFormat { number @DotSep title } # section head fmt - # @SubSectionHeadingFont { Bold } # subs. head font - # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subs. head break - # @SubSectionHeadingFormat { number @DotSep title } # subs. head fmt - # @SubSubSectionHeadingFont { Slope } # sub-subs. head font - # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-subs. head break - # @SubSubSectionHeadingFormat { number @DotSep title } # sub-subs. head fmt - # @AppendixHeadingFont { Bold 2.00f } # appendix head font - # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break - # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt - # @SubAppendixHeadingFont { Bold } # subapp. head font - # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break - # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head fmt - # @SubSubAppendixHeadingFont { Slope } # sub-suba. head font - # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-suba. head break - # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-suba. head fmt - # @AbovePartGap { 4.00f } # gap above part title - # @AboveChapterGap { 3.00f } # above major titles - # @SubPrefaceGap { 2.0v @OrIfPlain 3f } # between sub-prefaces - # @SubIntroductionGap { 2.0v @OrIfPlain 3f } # between sub-intros - # @SectionGap { 2.0v @OrIfPlain 3f } # between sections - # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects - # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs. - # @SubAppendixGap { 2.0v @OrIfPlain 3f } # between subappendices - # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps - # @PrefaceInContents { Yes } # add preface to contents - # @SubPrefaceInContents { No } # add sub-preface to contents - # @AbbreviationsInContents { Yes } # add abbreviations to contents - # @IntroductionInContents { Yes } # add introduction to contents - # @SubIntroductionInContents { No } # add sub-intro to contents - # @PartInContents { Yes } # add parts to contents - # @ChapterInContents { Yes } # add chapters to contents - # @SectionInContents { Yes } # add sections to contents - # @SubSectionInContents { Yes } # add subsections to contents - # @SubSubSectionInContents { No } # add sub-subsects to contents - # @AppendixInContents { Yes } # add appendices to contents - # @SubAppendixInContents { Yes } # add subappendices to contents - # @SubSubAppendixInContents { No } # add sub-subapps to contents - # @ReferencesInContents { Yes } # add ref. section to contents - # @GlossaryInContents { Yes } # add glossary to contents - # @IndexInContents { Yes } # add index to contents - # @IndexAInContents { Yes } # add index A to contents - # @IndexBInContents { Yes } # add index B to contents - # @ColophonInContents { Yes } # add colophon to contents - # @PrefaceContentsIndent { 0f } # indent in contents of preface - # @SubPrefaceContentsIndent { 3f } # indent in contents of sub-preface - # @AbbreviationsContentsIndent{ 0f } # indent in contents of abbreviations - # @IntroductionContentsIndent { 0f } # indent in contents of introduction - # @SubIntroductionContentsIndent { 3f } # indent in contents of sub-intro - # @PartContentsIndent { 0.5rt } # indent in contents of part (dft is ctr) - # @ChapterContentsIndent { 0f } # indent in contents of chapter - # @SectionContentsIndent { 3f } # indent in contents of section - # @SubSectionContentsIndent { 6f } # indent in contents of subsection - # @SubSubSectionContentsIndent{ 9f } # indent in contents of sub-subsection - # @AppendixContentsIndent { 0f } # indent in contents of appendix - # @SubAppendixContentsIndent { 3f } # indent in contents of sub-appendix - # @SubSubAppendixContentsIndent { 6f } # indent in contents of sub-subappendix - # @ReferencesContentsIndent { 0f } # indent in contents of references - # @GlossaryContentsIndent { 0f } # indent in contents of gloassary - # @IndexContentsIndent { 0f } # indent in contents of index - # @IndexAContentsIndent { 0f } # indent in contents of index A - # @IndexBContentsIndent { 0f } # indent in contents of index B - # @ColophonContentsIndent { 0f } # indent in contents of colophon - # @SubPrefaceNumInTheorems { No } # theorem num has sub-preface num - # @SubIntroductionNumInTheorems { No } # theorem num has sub-intro num - # @ChapterNumInTheorems { Yes } # theorem num has chapter num - # @SectionNumInTheorems { No } # theorem num has section num - # @SubSectionNumInTheorems { No } # theorem num has subsect num - # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num - # @AppendixNumInTheorems { Yes } # theorem num has appendix num - # @SubAppendixNumInTheorems { No } # theorem num has sub-app num - # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num - # @SubPrefaceNumInDisplays { No } # display num has sub-preface num - # @SubIntroductionNumInDisplays { No } # display num has sub-intro num - # @ChapterNumInDisplays { Yes } # display num has chapter num - # @SectionNumInDisplays { Yes } # display num has section num - # @SubSectionNumInDisplays { No } # display num has subsect num - # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num - # @AppendixNumInDisplays { Yes } # display num has appendix num - # @SubAppendixNumInDisplays { Yes } # display num has sub-app num - # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num - # @SubPrefaceNumInFigures { No } # figure num has sub-preface num - # @SubIntroductionumInFigures { No } # figure num has sub-intro num - # @ChapterNumInFigures { Yes } # figure num has chapter num - # @SectionNumInFigures { No } # figure num has section num - # @SubSectionNumInFigures { No } # figure num has subsect num - # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num - # @AppendixNumInFigures { Yes } # figure num has appendix num - # @SubAppendixNumInFigures { No } # figure num has sub-app num - # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num - # @SubPrefaceNumInTables { No } # table num has sub-preface num - # @SubIntroductionumInTables { No } # table num has sub-intro num - # @ChapterNumInTables { Yes } # table num has chapter num - # @SectionNumInTables { No } # table num has section num - # @SubSectionNumInTables { No } # table num has subsect num - # @SubSubSectionNumInTables { No } # table num has sub-ss. num - # @AppendixNumInTables { Yes } # table num has appendix num - # @SubAppendixNumInTables { No } # table num has sub-app num - # @SubSubAppendixNumInTables { No } # table num has sub-sa. num - # @SubPrefaceNumInFloaters { No } # floater num has sub-preface num - # @SubIntroductionumInFloaters{ No } # floater num has sub-intro num - # @ChapterNumInFloaters { Yes } # floater num has chapter num - # @SectionNumInFloaters { No } # floater num has section num - # @SubSectionNumInFloaters { No } # floater num has subsect num - # @SubSubSectionNumInFloaters { No } # floater num has sub-ss. num - # @AppendixNumInFloaters { Yes } # floater num has appendix num - # @SubAppendixNumInFloaters { No } # floater num has sub-app num - # @SubSubAppendixNumInFloaters{ No } # floater num has sub-sa. num - # @SubPrefaceNumInRunners { No } # runners have sub-preface num - # @SubIntroductionNumInRunners { No } # runners have sub-intro num - # @SectionNumInRunners { Yes } # runners have section num - # @SubSectionNumInRunners { No } # runners have subsect num - # @SubSubSectionNumInRunners { No } # runners have sub-ss. num - # @SubAppendixNumInRunners { Yes } # runners have sub-app num - # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num - # @PrefacePrefix { } # for structured page nums - # @ContentsPrefix { } # for structured page nums - # @FigureContentsPrefix { } # for structured page nums - # @TableContentsPrefix { } # for structured page nums - # @FloaterContentsPrefix { } # for structured page nums - # @AbbreviationsPrefix { } # for structured page nums - # @IntroductionPrefix { } # for structured page nums - # @ChapterPrefix { } # for structured page nums - # @AppendixPrefix { } # for structured page nums - # @ReferencesPrefix { } # for structured page nums - # @GlossaryPrefix { } # for structured page nums - # @IndexPrefix { } # for structured page nums - # @IndexAPrefix { } # for structured page nums - # @IndexBPrefix { } # for structured page nums - # @ColophonPrefix { } # for structured page nums -} - - -############################################################################### -# # -# @Database (and @SysDatabase) clauses go here. # -# # -############################################################################### - -@SysDatabase @FontDef { fontdefs } # font definitions -@SysDatabase @RefStyle { refstyle } # reference printing styles diff --git a/include/include/bookf b/include/include/bookf deleted file mode 100644 index 3c2b21f..0000000 --- a/include/include/bookf +++ /dev/null @@ -1,1645 +0,0 @@ - -########################################################################### -# # -# @BookSetup extension to @DocumentSetup. # -# # -# Jeffrey H. Kingston # -# # -# This package extends DocumentSetup with definitions for books. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -########################################################################### - -extend @BasicSetup @DocumentSetup -export @Book @Preface @Abbreviations @Introduction @Chapter @Appendix @Colophon -def @BookSetup - named @TitlePageFont { Helvetica Base } - named @SeparateIntroNumbering { Yes } - named @PrefaceAfterContents { No } - named @ChapterStartPages { Any } - named @ReferencesBeforeAppendices { No } - - named @PrefaceWord { preface } - named @ContentsWord { contents } - named @FigureListWord { figurelist } - named @TableListWord { tablelist } - named @FloaterListWord { floaterlist } - named @IntroductionWord { introduction } - named @AbbreviationsWord { abbreviations } - named @ChapterWord { chapter } - named @AppendixWord { appendix } - named @GlossaryWord { glossary } - named @IndexWord { index } - named @IndexAWord { index } - named @IndexBWord { index } - named @ColophonWord { colophon } - - named @SubPrefaceNumbers { None } - named @FirstSubPrefaceNumber { 1 } - named @SubIntroductionNumbers { None } - named @FirstSubIntroductionNumber { 1 } - named @ChapterNumbers { Arabic } - named @FirstChapterNumber { 1 } - named @SectionNumbers { Arabic } - named @FirstSectionNumber { 1 } - named @SubSectionNumbers { Arabic } - named @FirstSubSectionNumber { 1 } - named @SubSubSectionNumbers { Arabic } - named @FirstSubSubSectionNumber { 1 } - named @AppendixNumbers { UCAlpha } - named @FirstAppendixNumber { 1 } - named @SubAppendixNumbers { Arabic } - named @FirstSubAppendixNumber { 1 } - named @SubSubAppendixNumbers { Arabic } - named @FirstSubSubAppendixNumber { 1 } - - named @PartHeadingFont { Helvetica Base 2.50f } - named @PartHeadingBreak { clines 1.2fx nohyphen } - named @PartHeadingFormat - left number right title { @CD number @DP @CD title } - - named @ChapterHeadingFont { Bold 2.00f } - named @ChapterHeadingBreak { ragged 1.2fx nohyphen } - named @ChapterHeadingFormat - left number right title { number @DotSep title } - - named @SubPrefaceHeadingFont { Bold } - named @SubPrefaceHeadingBreak { ragged 1.2fx nohyphen } - named @SubPrefaceHeadingFormat - left number right title { number @DotSep title } - - named @SubIntroductionHeadingFont { Bold } - named @SubIntroductionHeadingBreak { ragged 1.2fx nohyphen } - named @SubIntroductionHeadingFormat - left number right title { number @DotSep title } - - named @SectionHeadingFont { Bold } - named @SectionHeadingBreak { ragged 1.2fx nohyphen } - named @SectionHeadingFormat - left number right title { number @DotSep title } - - named @SubSectionHeadingFont { Bold } - named @SubSectionHeadingBreak { ragged 1.2fx nohyphen } - named @SubSectionHeadingFormat - left number right title { number @DotSep title } - - named @SubSubSectionHeadingFont { Slope } - named @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } - named @SubSubSectionHeadingFormat - left number right title { number @DotSep title } - - named @AppendixHeadingFont { Bold 2.00f } - named @AppendixHeadingBreak { ragged 1.2fx nohyphen } - named @AppendixHeadingFormat - left number right title { number @DotSep title } - - named @SubAppendixHeadingFont { Bold } - named @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } - named @SubAppendixHeadingFormat - left number right title { number @DotSep title } - - named @SubSubAppendixHeadingFont { Slope } - named @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } - named @SubSubAppendixHeadingFormat - left number right title { number @DotSep title } - - named @AbovePartGap { 4.00f } - named @AboveChapterGap { 3.00f } - named @SubPrefaceGap { 2.0v @OrIfPlain 3f } - named @SubIntroductionGap { 2.0v @OrIfPlain 3f } - named @SectionGap { 2.0v @OrIfPlain 3f } - named @SubSectionGap { 1.5v @OrIfPlain 2f } - named @SubSubSectionGap { 1.5v @OrIfPlain 2f } - named @SubAppendixGap { 2.0v @OrIfPlain 3f } - named @SubSubAppendixGap { 1.5v @OrIfPlain 2f } - - named @PrefaceInContents { Yes } - named @SubPrefaceInContents { No } - named @AbbreviationsInContents { Yes } - named @IntroductionInContents { Yes } - named @SubIntroductionInContents { No } - named @PartInContents { Yes } - named @ChapterInContents { Yes } - named @SectionInContents { Yes } - named @SubSectionInContents { Yes } - named @SubSubSectionInContents { No } - named @AppendixInContents { Yes } - named @SubAppendixInContents { Yes } - named @SubSubAppendixInContents { No } - named @ReferencesInContents { Yes } - named @GlossaryInContents { Yes } - named @IndexInContents { Yes } - named @IndexAInContents { Yes } - named @IndexBInContents { Yes } - named @ColophonInContents { Yes } - - named @PrefaceContentsIndent { 0f } - named @SubPrefaceContentsIndent { 3f } - named @AbbreviationsContentsIndent { 0f } - named @IntroductionContentsIndent { 0f } - named @SubIntroductionContentsIndent{ 3f } - named @PartContentsIndent { 0.5rt } - named @ChapterContentsIndent { 0f } - named @SectionContentsIndent { 3f } - named @SubSectionContentsIndent { 6f } - named @SubSubSectionContentsIndent { 9f } - named @AppendixContentsIndent { 0f } - named @SubAppendixContentsIndent { 3f } - named @SubSubAppendixContentsIndent { 6f } - named @ReferencesContentsIndent { 0f } - named @GlossaryContentsIndent { 0f } - named @IndexContentsIndent { 0f } - named @IndexAContentsIndent { 0f } - named @IndexBContentsIndent { 0f } - named @ColophonContentsIndent { 0f } - - named @SubPrefaceNumInTheorems { No } - named @SubIntroductionNumInTheorems { No } - named @ChapterNumInTheorems { Yes } - named @SectionNumInTheorems { No } - named @SubSectionNumInTheorems { No } - named @SubSubSectionNumInTheorems { No } - named @AppendixNumInTheorems { Yes } - named @SubAppendixNumInTheorems { No } - named @SubSubAppendixNumInTheorems { No } - - named @SubPrefaceNumInDisplays { No } - named @SubIntroductionNumInDisplays { No } - named @ChapterNumInDisplays { Yes } - named @SectionNumInDisplays { Yes } - named @SubSectionNumInDisplays { No } - named @SubSubSectionNumInDisplays { No } - named @AppendixNumInDisplays { Yes } - named @SubAppendixNumInDisplays { Yes } - named @SubSubAppendixNumInDisplays { No } - - named @SubPrefaceNumInFigures { No } - named @SubIntroductionNumInFigures { No } - named @ChapterNumInFigures { Yes } - named @SectionNumInFigures { No } - named @SubSectionNumInFigures { No } - named @SubSubSectionNumInFigures { No } - named @AppendixNumInFigures { Yes } - named @SubAppendixNumInFigures { No } - named @SubSubAppendixNumInFigures { No } - - named @SubPrefaceNumInTables { No } - named @SubIntroductionNumInTables { No } - named @ChapterNumInTables { Yes } - named @SectionNumInTables { No } - named @SubSectionNumInTables { No } - named @SubSubSectionNumInTables { No } - named @AppendixNumInTables { Yes } - named @SubAppendixNumInTables { No } - named @SubSubAppendixNumInTables { No } - - named @SubPrefaceNumInFloaters { No } - named @SubIntroductionNumInFloaters { No } - named @ChapterNumInFloaters { Yes } - named @SectionNumInFloaters { No } - named @SubSectionNumInFloaters { No } - named @SubSubSectionNumInFloaters { No } - named @AppendixNumInFloaters { Yes } - named @SubAppendixNumInFloaters { No } - named @SubSubAppendixNumInFloaters { No } - - named @SubPrefaceNumInRunners { No } - named @SubIntroductionNumInRunners { No } - named @SectionNumInRunners { Yes } - named @SubSectionNumInRunners { No } - named @SubSubSectionNumInRunners { No } - named @SubAppendixNumInRunners { Yes } - named @SubSubAppendixNumInRunners { No } - - named @PrefacePrefix { } - named @ContentsPrefix { } - named @FigureContentsPrefix { } - named @TableContentsPrefix { } - named @FloaterContentsPrefix { } - named @AbbreviationsPrefix { } - named @IntroductionPrefix { } - named @ChapterPrefix { } - named @AppendixPrefix { } - named @ReferencesPrefix { } - named @GlossaryPrefix { } - named @IndexPrefix { } - named @IndexAPrefix { } - named @IndexBPrefix { } - named @ColophonPrefix { } - -@Begin - - ####################################################################### - # # - # Lists of chapters, sections, sub(-sub)sections, and appendices. # - # # - ####################################################################### - - export num - def @ChapterList named @Tag {} right num - { - @Galley - // @ChapterList @Next num - } - - export num - def @SubPrefaceList named @Tag {} right num - { - @Galley - //@SubPrefaceGap @SubPrefaceList @Next num - } - - export num - def @SubIntroductionList named @Tag {} right num - { - @Galley - //@SubIntroductionGap @SubIntroductionList @Next num - } - - export num - def @SectionList named @Tag {} right num - { - @Galley - //@SectionGap @SectionList @Next num - } - - export num - def @SubSectionList named @Tag {} right num - { - @Galley - //@SubSectionGap @SubSectionList @Next num - } - - export num - def @SubSubSectionList named @Tag {} right num - { - @Galley - //@SubSubSectionGap @SubSubSectionList @Next num - } - - export num - def @AppendixList named @Tag {} right num - { - @Galley - // @AppendixList @Next num - } - - export num - def @SubAppendixList named @Tag {} right num - { - @Galley - //@SubAppendixGap @SubAppendixList @Next num - } - - export num - def @SubSubAppendixList named @Tag {} right num - { - @Galley - //@SubSubAppendixGap @SubSubAppendixList @Next num - } - - def @PrefacePlace { @Galley } - def @AbbreviationsPlace { @Galley } - def @IntroductionPlace { @Galley } - - - ####################################################################### - # # - # @Full - this sends text to a full-width place on a new page, even # - # if @ChapterStartPages is SamePage. # - # # - ####################################################################### - - def @Full right x - { - def @Any force into { @FullPlace&&following } right x { x } - def @Odd force into { @OddFullPlace&&following } right x { x } - def @Even force into { @EvenFullPlace&&following } right x { x } - - @ChapterStartPages @Case { - { Any SamePage } @Yield @Any x - Odd @Yield @Odd x - Even @Yield @Even x - } - } - - - ####################################################################### - # # - # @ChapterFull - this sends text to a full-width place on a new # - # page, unless @ChapterStartPages is SamePage, in which case it # - # doesn't send the text anywhere. # - # # - ####################################################################### - - def @ChapterFull right x - { - def @Any force into { @FullPlace&&following } right x { x } - def @Odd force into { @OddFullPlace&&following } right x { x } - def @Even force into { @EvenFullPlace&&following } right x { x } - - @ChapterStartPages @Case { - Any @Yield @Any x - Odd @Yield @Odd x - Even @Yield @Even x - SamePage @Yield x - } - } - - - ####################################################################### - # # - # @IntroFull - this sends text to a full-width intro place. # - # # - ####################################################################### - - def @IntroFull right x - { - def @Any force into { @IntroFullPlace&&following } right x { x } - def @Odd force into { @IntroOddFullPlace&&following } right x { x } - def @Even force into { @IntroEvenFullPlace&&following } right x { x } - - @ChapterStartPages @Case { - { Any SamePage } @Yield @Any x - Odd @Yield @Odd x - Even @Yield @Even x - } - } - - - ####################################################################### - # # - # @ChooseFull - this sends either to introfull or ordinary full # - # # - ####################################################################### - - def @ChooseFull right x - { - @SeparateIntroNumbering @Case { - No @Yield @Full x - Yes @Yield @IntroFull x - } - } - - - ####################################################################### - # # - # Book. # - # # - ####################################################################### - - def @Book - named @Tag {} - named @Title {} - named @Author {} - named @Edition {} - named @Publisher {} - named @BeforeTitlePage {} - named @OnTitlePage {} - named @AfterTitlePage {} - named @AtEnd { dft } - named @InitialFont { @InitialFont } - named @InitialBreak { @InitialBreak } - named @InitialOutdent { @InitialOutdent } - named @InitialSpace { @InitialSpace } - named @InitialLanguage { @InitialLanguage } - named @PageOrientation { @PageOrientation } - named @PageHeaders { @PageHeaders } - named @ColumnNumber { @ColumnNumber } - named @FirstPageNumber { @FirstPageNumber } - named @IntroFirstPageNumber { @IntroFirstPageNumber } - named @OptimizePages { @OptimizePages } - named @GlossaryText { @GlossaryText } - named @IndexText { @IndexText } - named @IndexAText { @IndexAText } - named @IndexBText { @IndexBText } - { - def @Before - { - @BeforeTitlePage @Case { - "" @Yield @Null - else @Yield @BeforeTitlePage - } - } - - def @On - { - @OnTitlePage @Case { - "" @Yield { - //1i |0.5rt 2.5f @Font {1.2fx clines} @Break @Title | - //2i |0.5rt clines @Break @Author | - //1i |0.5rt clines @Break @Edition | - //1rt @OneRow @Publisher - } - else @Yield @OnTitlePage - } - } - - def @After - { - @AfterTitlePage @Case { - "" @Yield @Null - else @Yield { @AfterTitlePage // None @Runner } - } - } - - def @ContentsPart - named @Tag {} - { - - @LargeScaleStructure - tag { @Tag } - type { ExtraMajorIntro } - initiallanguage { @InitialLanguage } - title { contents @WordVal @ContentsWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { No } - pnprefix { @ContentsPrefix } - inrunners { Yes } - majortitle { contents @WordVal @ContentsWord } - sendheader { @ChooseFull @Body } - innergap { @SectionGap } - @ContentsSection - } - - def @FigureContentsPart - named @Tag {} - { - @LargeScaleStructure - tag { @Tag } - type { ExtraMajorIntro } - initiallanguage { @InitialLanguage } - title { figurelist @WordVal @FigureListWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { No } - pnprefix { @FigureContentsPrefix } - inrunners { Yes } - majortitle { figurelist @WordVal @FigureListWord } - sendheader { @ChooseFull @Body } - innergap { @SectionGap } - @FigureContentsSection - } - - def @TableContentsPart - named @Tag {} - { - @LargeScaleStructure - tag { @Tag } - type { ExtraMajorIntro } - initiallanguage { @InitialLanguage } - title { tablelist @WordVal @TableListWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { No } - pnprefix { @TableContentsPrefix } - inrunners { Yes } - majortitle { tablelist @WordVal @TableListWord } - sendheader { @ChooseFull @Body } - innergap { @SectionGap } - @TableContentsSection - } - - def @FloaterContentsPart - named @Tag {} - { - @LargeScaleStructure - tag { @Tag } - type { ExtraMajorIntro } - initiallanguage { @InitialLanguage } - title { floaterlist @WordVal @FloaterListWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { No } - pnprefix { @FloaterContentsPrefix } - inrunners { Yes } - majortitle { floaterlist @WordVal @FloaterListWord } - sendheader { @ChooseFull @Body } - innergap { @SectionGap } - @FloaterContentsSection - } - - def @ReferencesPart - named @Tag {} - { - @LargeScaleStructure - tag { @Tag } - type { ExtraMajor } - initiallanguage { @InitialLanguage } - title { @RefHeading @RefListTitle } - majortitle { @RefHeading @RefListTitle } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { @ReferencesInContents } - contentsindent { @ReferencesContentsIndent } - pnprefix { @ReferencesPrefix } - inrunners { Yes } - sendheader { @ChapterFull @Body } - innergap { @SectionGap } - @ReferencesSection - - } - - def @GlossaryPart - named @Tag {} - { - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { glossary @WordVal @GlossaryWord } - @MinorNum {} - @MinorTitle { glossary @WordVal @GlossaryWord } - @Owner { @Tag } - @Prefix { @GlossaryPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { glossary @WordVal @GlossaryWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - headingtext { @GlossaryText } - incontents { @GlossaryInContents } - contentsindent { @GlossaryContentsIndent } - pnprefix { @GlossaryPrefix } - inrunners { Yes } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @GlossarySection @Run - } - - def @IndexPart - named @Tag {} - { - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexWord } - @MinorNum {} - @MinorTitle { index @WordVal @IndexWord } - @Owner { @Tag } - @Prefix { @IndexPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - headingtext { @IndexText } - incontents { @IndexInContents } - contentsindent { @IndexContentsIndent } - pnprefix { @IndexPrefix } - inrunners { Yes } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexSection @Run - } - - def @IndexAPart - named @Tag {} - { - def @RunA - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexAWord } - @MinorNum {} - @MinorTitle { index @WordVal @IndexAWord } - @Owner { @Tag } - @Prefix { @IndexAPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexAWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - headingtext { @IndexAText } - incontents { @IndexAInContents } - contentsindent { @IndexAContentsIndent } - pnprefix { @IndexAPrefix } - inrunners { Yes } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexASection @RunA - } - - def @IndexBPart - named @Tag {} - { - def @RunB - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexBWord } - @MinorNum {} - @MinorTitle { index @WordVal @IndexBWord } - @Owner { @Tag } - @Prefix { @IndexBPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexBWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - headingtext { @IndexBText } - incontents { @IndexBInContents } - contentsindent { @IndexBContentsIndent } - pnprefix { @IndexBPrefix } - inrunners { Yes } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexBSection @RunB - } - - def @ColophonPart - named @Tag {} - { - def @RunC - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @ColophonWord } - @MinorNum {} - @MinorTitle { index @WordVal @ColophonWord } - @Owner { @Tag } - @Prefix { @ColophonPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { colophon @WordVal @ColophonWord } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { @ColophonInContents } - contentsindent { @ColophonContentsIndent } - pnprefix { @ColophonPrefix } - inrunners { Yes } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @ColophonSection @RunC - } - - def @BookIntro force into { @IntroColPlace&&preceding } - named @Optimize { @OptimizePages } - { - @NoLinkPageMark @Tag - // @Before - //1.1b @TitlePageFont @Font @On - //1.1b @After - // Start @Runner @Owner { @Tag } - //1.1b @PrefaceAfterContents @NoDo @PrefacePlace - // @MakeContents @Case { - { Yes Bypass } @Yield @ContentsPart - else @Yield @Null - } - // @MakeFigureContents @Case { - { Yes Bypass } @Yield @FigureContentsPart - else @Yield @Null - } - // @MakeTableContents @Case { - { Yes Bypass } @Yield @TableContentsPart - else @Yield @Null - } - // @MakeFloaterContents @Case { - { Yes Bypass } @Yield @FloaterContentsPart - else @Yield @Null - } - //1.1b @PrefaceAfterContents @Do @PrefacePlace - } - - def @BookBody force into { @ColPlace&&preceding } - named @Optimize { @OptimizePages } - { - # The first component of @BookBody must be indefinite, so that - # its flushing is delayed until we reach the body galleys, either - # @Introduction or @Chapter. If not, @BookBody will free up - # @PrefacePlace etc. too soon, producing a "no @PrefacePlace - # precedes this @PrefacePlace&&preceding" error message. - - @AbbreviationsPlace - // @IntroductionPlace - // @ChapterList @FirstChapterNumber - // @ReferencesBeforeAppendices @Do { - @MakeReferences @Do @ReferencesPart - } - // @AppendixList @FirstAppendixNumber - // @ReferencesBeforeAppendices @NoDo { - @MakeReferences @Do @ReferencesPart - } - // @MakeGlossary @Do @GlossaryPart - // @MakeIndexA @Do @IndexAPart - // @MakeIndexA @Case { - Bypass @Yield @BypassBeginIndexAPlace - else @Yield @Null - } - // @MakeIndexB @Do @IndexBPart - // @MakeIndexB @Case { - Bypass @Yield @BypassBeginIndexBPlace - else @Yield @Null - } - // @MakeIndex @Do @IndexPart - // @MakeIndex @Case { - Bypass @Yield @BypassBeginIndexPlace - else @Yield @Null - } - // @MakeColophon @Do @ColophonPart - } - - def @BookCombined force into { @ColPlace&&preceding } - named @Optimize { @OptimizePages } - { - @NoLinkPageMark @Tag - // @Before - //1.1b @TitlePageFont @Font @On - //1.1b @After - // Start @Runner @Owner { @Tag } - //1.1b @PrefaceAfterContents @NoDo @PrefacePlace - // @MakeContents @Case { - { Yes Bypass } @Yield @ContentsPart - else @Yield @Null - } - // @MakeFigureContents @Case { - { Yes Bypass } @Yield @FigureContentsPart - else @Yield @Null - } - // @MakeTableContents @Case { - { Yes Bypass } @Yield @TableContentsPart - else @Yield @Null - } - // @MakeFloaterContents @Case { - { Yes Bypass } @Yield @FloaterContentsPart - else @Yield @Null - } - //1.1b @PrefaceAfterContents @Do @PrefacePlace - // @AbbreviationsPlace - // @IntroductionPlace - // @ChapterList @FirstChapterNumber - // @ReferencesBeforeAppendices @Do { - @MakeReferences @Do @ReferencesPart - } - // @AppendixList @FirstAppendixNumber - // @ReferencesBeforeAppendices @NoDo { - @MakeReferences @Do @ReferencesPart - } - // @MakeGlossary @Do @GlossaryPart - // @MakeIndexA @Do @IndexAPart - // @MakeIndexA @Case { - Bypass @Yield @BypassBeginIndexAPlace - else @Yield @Null - } - // @MakeIndexB @Do @IndexBPart - // @MakeIndexB @Case { - Bypass @Yield @BypassBeginIndexBPlace - else @Yield @Null - } - // @MakeIndex @Do @IndexPart - // @MakeIndex @Case { - Bypass @Yield @BypassBeginIndexPlace - else @Yield @Null - } - // @MakeColophon @Do @ColophonPart - } - - @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break - @InitialLanguage @Language @InitialSpace @Space - { @ColourCommand @InitialColour } @SetColour - { - - @SeparateIntroNumbering @Case { - - No @Yield { - Yes @BeginAllCounters {} - // Yes @BeginDisplayCounter {} - // Yes @BeginFigureCounter {} - // Yes @BeginTableCounter {} - // Yes @BeginFloaterCounter {} - // @PageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @PageOrientation } - @FirstPageNumber - // @BookCombined - // NonStart @Runner @Owner { @Tag } - // @AtEnd @Case { - dft @Yield @Null - else @Yield - @EvenPage @Orient { @PageOrientation } @AtEnd - } - } - - Yes @Yield { - Yes @BeginAllCounters {} - // Yes @BeginDisplayCounter {} - // Yes @BeginFigureCounter {} - // Yes @BeginTableCounter {} - // Yes @BeginFloaterCounter {} - // @IntroPageList - @ColumnNumber { 1 } - @PageHeaders { @PageHeaders } - @Orient { @PageOrientation } - @IntroFirstPageNumber - # // NonStart @Runner @Owner { @Tag } - // None @Runner @Owner { @Tag } - // @PageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @PageOrientation } - extra { Yes } - @FirstPageNumber - // @BookIntro - // @BookBody - // NonStart @Runner @Owner { @Tag } - // @AtEnd @Case { - dft @Yield @Null - else @Yield - @EvenPage @Orient { @PageOrientation } @AtEnd - } - } - } - } - } - - - ####################################################################### - # # - # Preface. # - # # - ####################################################################### - - export @BeginSubPrefaces @EndSubPrefaces @SubPreface - def @Preface force into { @PrefacePlace&&preceding } - named @Tag {} - named @Title { preface @WordVal @PrefaceWord } - named @RunningTitle { dft } - named @InitialLanguage {} - body @Body - { - def @EndSubPrefacesPlace { @Galley } - - def @EndSubPrefaces force into { @EndSubPrefacesPlace&&preceding } - {} - - macro @BeginSubPrefaces - { //@SubPrefaceGap @SubPrefaceList @FirstSubPrefaceNumber - // @EndSubPrefacesPlace // - } - - def @SubPreface force into { @SubPrefaceList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @SubPrefaceShortNum - { - @SubPrefaceNumbers @Then { - @BypassNumber @Dft { - @SubPrefaceNumbers @Num - { @SectionList&&@Tag @Open { num } } - } - } - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubPrefaceHeadingFont } - headingbreak { @SubPrefaceHeadingBreak } - headingformat { @Num @SubPrefaceHeadingFormat @Body } - incontents { @SubPrefaceInContents } - contentsindent { @SubPrefaceContentsIndent } - numbers { @SubPrefaceNumbers } - attachnum { @SubPrefaceList&&preceding @Tagged @Tag } - retrievenum { @SubPrefaceList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @Null } - majornum { @Null } - majortitle { @Null } - intheorems { @SubPrefaceNumInTheorems } - indisplays { @SubPrefaceNumInDisplays } - infigures { @SubPrefaceNumInFigures } - intables { @SubPrefaceNumInTables } - infloaters { @SubPrefaceNumInFloaters } - inrunners { @SubPrefaceNumInRunners } - newpage { @NewPage } - @Body - } - - @LargeScaleStructure - tag { @Tag } - type { ExtraMajorIntro } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { @PrefaceInContents } - contentsindent { @PrefaceContentsIndent } - pnprefix { @PrefacePrefix } - sendheader { @ChooseFull @Body } - innergap { @SectionGap } - inrunners { Yes } - @Body - - } - - - ####################################################################### - # # - # Abbreviations. # - # # - ####################################################################### - - def @Abbreviations force into { @AbbreviationsPlace&&preceding } - named @Tag {} - named @Title { abbreviations @WordVal @AbbreviationsWord } - named @RunningTitle { dft } - named @InitialLanguage {} - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { @AbbreviationsInContents } - contentsindent { @AbbreviationsContentsIndent } - pnprefix { @AbbreviationsPrefix } - sendheader { @Full @Body } - innergap { @SectionGap } - inrunners { Yes } - @Body - - } - - - ####################################################################### - # # - # Introduction. # - # # - ####################################################################### - - export @BeginSubIntroductions @EndSubIntroductions @SubIntroduction - def @Introduction force into { @IntroductionPlace&&preceding } - named @Tag {} - named @Title { introduction @WordVal @IntroductionWord } - named @RunningTitle { dft } - named @InitialLanguage {} - body @Body - { - - def @EndSubIntroductionsPlace { @Galley } - - def @EndSubIntroductions force into { @EndSubIntroductionsPlace&&preceding } - {} - - macro @BeginSubIntroductions - { //@SubIntroductionGap @SubIntroductionList @FirstSubIntroductionNumber - // @EndSubIntroductionsPlace // - } - - def @SubIntroduction force into { @SubIntroductionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @SubIntroductionShortNum - { - @SubIntroductionNumbers @Then { - @BypassNumber @Dft { - @SubIntroductionNumbers @Num - { @SectionList&&@Tag @Open { num } } - } - } - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubIntroductionHeadingFont } - headingbreak { @SubIntroductionHeadingBreak } - headingformat { @Num @SubIntroductionHeadingFormat @Body } - incontents { @SubIntroductionInContents } - contentsindent { @SubIntroductionContentsIndent } - numbers { @SubIntroductionNumbers } - attachnum { @SubIntroductionList&&preceding @Tagged @Tag } - retrievenum { @SubIntroductionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @Null } - majornum { @Null } - majortitle { @Null } - intheorems { @SubIntroductionNumInTheorems } - indisplays { @SubIntroductionNumInDisplays } - infigures { @SubIntroductionNumInFigures } - intables { @SubIntroductionNumInTables } - infloaters { @SubIntroductionNumInFloaters } - inrunners { @SubIntroductionNumInRunners } - newpage { @NewPage } - @Body - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { @IntroductionInContents } - contentsindent { @IntroductionContentsIndent } - pnprefix { @IntroductionPrefix } - sendheader { @Full @Body } - innergap { @SectionGap } - inrunners { Yes } - @Body - } - - - ####################################################################### - # # - # Chapters containing sections and subsections. # - # # - ####################################################################### - - export @BeginSections @EndSections @Section - def @Chapter force into { @ChapterList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage {} - named @PartNumber {} - named @PartTitle {} - named @PartText {} - named @BypassNumber { dft } - named @BypassWord { dft } - body @Body - { - - def @EndSectionsPlace { @Galley } - - def @EndSections force into { @EndSectionsPlace&&preceding } - {} - - macro @BeginSections - { //@SectionGap @SectionList @FirstSectionNumber - // @EndSectionsPlace // - } - - def @ChapterShortNum - { - @ChapterNumbers @Then { - @BypassNumber @Dft { - @ChapterNumbers @Num @ChapterList&&@Tag @Open { num } - } - } - } - - def @MajorNum - { - @ChapterNumbers @Then @InitialLanguage @Language { - # chapter @WordVal @ChapterWord @ChapterShortNum - @BypassWord @Dft {chapter @WordVal @ChapterWord} @ChapterShortNum - } - } - - def @MajorTitle - { - @InitialLanguage @Language { - @RunningTitle @Dft @Title - } - } - - export @BeginSubSections @EndSubSections @SubSection - def @Section force into { @SectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSectionsPlace { @Galley } - - def @EndSubSections force into { @EndSubSectionsPlace&&preceding } - {} - - macro @BeginSubSections - { //@SubSectionGap @SubSectionList @FirstSubSectionNumber - // @EndSubSectionsPlace // - } - - def @SectionShortNum - { - @SectionNumbers @Then { - @BypassNumber @Dft { - @ChapterShortNum @Join @SectionNumbers @Num - { @SectionList&&@Tag @Open { num } } - } - } - } - - export @BeginSubSubSections @EndSubSubSections @SubSubSection - def @SubSection force into { @SubSectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSubSectionsPlace { @Galley } - - def @EndSubSubSections force into - { @EndSubSubSectionsPlace&&preceding } - {} - - macro @BeginSubSubSections - { //@SubSubSectionGap @SubSubSectionList @FirstSubSubSectionNumber - // @EndSubSubSectionsPlace // - } - - def @SubSectionShortNum - { - @SubSectionNumbers @Then { - @BypassNumber @Dft { - @SectionShortNum @Join @SubSectionNumbers @Num - { @SubSectionList&&@Tag @Open { num } } - } - } - } - - def @SubSubSection force into { @SubSubSectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSubSectionHeadingFont } - headingbreak { @SubSubSectionHeadingBreak } - headingformat { @Num @SubSubSectionHeadingFormat @Body } - incontents { @SubSubSectionInContents } - contentsindent { @SubSubSectionContentsIndent } - numbers { @SubSubSectionNumbers } - attachnum { @SubSubSectionList&&preceding @Tagged @Tag } - retrievenum { @SubSubSectionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SubSectionShortNum } - majornum { @MajorNum } - majortitle { @MajorTitle } - intheorems { @SubSubSectionNumInTheorems } - indisplays { @SubSubSectionNumInDisplays } - infigures { @SubSubSectionNumInFigures } - intables { @SubSubSectionNumInTables } - infloaters { @SubSubSectionNumInFloaters } - inrunners { @SubSubSectionNumInRunners } - newpage { @NewPage } - @Body - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSectionHeadingFont } - headingbreak { @SubSectionHeadingBreak } - headingformat { @Num @SubSectionHeadingFormat @Body } - incontents { @SubSectionInContents } - contentsindent { @SubSectionContentsIndent } - numbers { @SubSectionNumbers } - attachnum { @SubSectionList&&preceding @Tagged @Tag } - retrievenum { @SubSectionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SectionShortNum } - majornum { @MajorNum } - majortitle { @MajorTitle } - intheorems { @SubSectionNumInTheorems } - indisplays { @SubSectionNumInDisplays } - infigures { @SubSectionNumInFigures } - intables { @SubSectionNumInTables } - infloaters { @SubSectionNumInFloaters } - inrunners { @SubSectionNumInRunners } - newpage { @NewPage } - @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SectionHeadingFont } - headingbreak { @SectionHeadingBreak } - headingformat { @Num @SectionHeadingFormat @Body } - incontents { @SectionInContents } - contentsindent { @SectionContentsIndent } - numbers { @SectionNumbers } - attachnum { @SectionList&&preceding @Tagged @Tag } - retrievenum { @SectionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @ChapterShortNum } - majornum { @MajorNum } - majortitle { @MajorTitle } - intheorems { @SectionNumInTheorems } - indisplays { @SectionNumInDisplays } - infigures { @SectionNumInFigures } - intables { @SectionNumInTables } - infloaters { @SectionNumInFloaters } - inrunners { @SectionNumInRunners } - newpage { @NewPage } - @Body - - } - - def @Part - named @Tag {} - { - @LargeScaleStructure - type { VeryMajor } - initiallanguage { @InitialLanguage } - title { @PartTitle } - aboveheadinggap { @AbovePartGap } - headingfont { @PartHeadingFont } - headingbreak { @PartHeadingBreak } - headingformat { @Num @PartHeadingFormat @Body } - bypassnumber { @PartNumber } - incontents { @PartInContents } - contentsindent { @PartContentsIndent } - sendheader { @Full @Body } - inrunners { Yes } - tag { @Tag } - @PartText - } - - @PartNumber @Case { - "" @Yield { - @PartTitle @Case { - "" @Yield @Null - else @Yield @Part - } - } - else @Yield @Part - } - // - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - aboveheadinggap { @AboveChapterGap } - headingfont { @ChapterHeadingFont } - headingbreak { @ChapterHeadingBreak } - headingformat { @Num @ChapterHeadingFormat @Body } - incontents { @ChapterInContents } - contentsindent { @ChapterContentsIndent } - # word { chapter @WordVal @ChapterWord } - word { @BypassWord @Dft { chapter @WordVal @ChapterWord } } - numbers { @ChapterNumbers } - attachnum { @ChapterList&&preceding @Tagged @Tag } - retrievenum { @ChapterList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - pnprefix { @ChapterPrefix } - intheorems { @ChapterNumInTheorems } - indisplays { @ChapterNumInDisplays } - infigures { @ChapterNumInFigures } - intables { @ChapterNumInTables } - infloaters { @ChapterNumInFloaters } - sendheader { @ChapterFull @Body } - innergap { @SectionGap } - inrunners { Yes } - @Body - - } - - - ####################################################################### - # # - # Appendices. # - # # - ####################################################################### - - export @BeginSubAppendices @EndSubAppendices @SubAppendix - def @Appendix force into { @AppendixList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage {} - named @PartNumber {} - named @PartTitle {} - named @PartText {} - named @BypassNumber { dft } - body @Body - { - - def @EndSubAppendicesPlace { @Galley } - - def @EndSubAppendices force into { @EndSubAppendicesPlace&&preceding } - {} - - macro @BeginSubAppendices - { //@SubAppendixGap @SubAppendixList @FirstSubAppendixNumber - // @EndSubAppendicesPlace // - } - - def @AppendixShortNum - { - @AppendixNumbers @Then { - @BypassNumber @Dft { - @AppendixNumbers @Num @AppendixList&&@Tag @Open { num } - } - } - } - - def @MajorNum - { - @AppendixNumbers @Then @InitialLanguage @Language { - appendix @WordVal @AppendixWord @AppendixShortNum - } - } - - def @MajorTitle - { - @InitialLanguage @Language { - @RunningTitle @Dft @Title - } - } - - export @BeginSubSubAppendices @EndSubSubAppendices @SubSubAppendix - def @SubAppendix force into { @SubAppendixList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSubAppendicesPlace { @Galley } - - def @EndSubSubAppendices force into { @EndSubSubAppendicesPlace&&preceding } - {} - - macro @BeginSubSubAppendices - { //@SubSubAppendixGap @SubSubAppendixList @FirstSubSubAppendixNumber - // @EndSubSubAppendicesPlace // - } - - def @SubAppendixShortNum - { - @SubAppendixNumbers @Then { - @BypassNumber @Dft { - @AppendixShortNum @Join @SubAppendixNumbers @Num - { @SubAppendixList&&@Tag @Open { num } } - } - } - } - - def @SubSubAppendix force into { @SubSubAppendixList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSubAppendixHeadingFont } - headingbreak { @SubSubAppendixHeadingBreak } - headingformat { @Num @SubSubAppendixHeadingFormat @Body } - incontents { @SubSubAppendixInContents } - contentsindent { @SubSubAppendixContentsIndent } - numbers { @SubSubAppendixNumbers } - attachnum { @SubSubAppendixList&&preceding @Tagged @Tag } - retrievenum { @SubSubAppendixList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SubAppendixShortNum } - majornum { @MajorNum } - majortitle { @MajorTitle } - intheorems { @SubSubAppendixNumInTheorems } - indisplays { @SubSubAppendixNumInDisplays } - infigures { @SubSubAppendixNumInFigures } - intables { @SubSubAppendixNumInTables } - infloaters { @SubSubAppendixNumInFloaters } - inrunners { @SubSubAppendixNumInRunners } - newpage { @NewPage } - @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubAppendixHeadingFont } - headingbreak { @SubAppendixHeadingBreak } - headingformat { @Num @SubAppendixHeadingFormat @Body } - incontents { @SubAppendixInContents } - contentsindent { @SubAppendixContentsIndent } - numbers { @SubAppendixNumbers } - attachnum { @SubAppendixList&&preceding @Tagged @Tag } - retrievenum { @SubAppendixList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @AppendixShortNum } - majornum { @MajorNum } - majortitle { @MajorTitle } - intheorems { @SubAppendixNumInTheorems } - indisplays { @SubAppendixNumInDisplays } - infigures { @SubAppendixNumInFigures } - intables { @SubAppendixNumInTables } - infloaters { @SubAppendixNumInFloaters } - inrunners { @SubAppendixNumInRunners } - newpage { @NewPage } - @Body - - } - - def @Part - named @Tag {} - { - @LargeScaleStructure - type { VeryMajor } - initiallanguage { @InitialLanguage } - title { @PartTitle } - aboveheadinggap { @AbovePartGap } - headingfont { @PartHeadingFont } - headingbreak { @PartHeadingBreak } - headingformat { @Num @PartHeadingFormat @Body } - bypassnumber { @PartNumber } - incontents { @PartInContents } - contentsindent { @PartContentsIndent } - sendheader { @Full @Body } - inrunners { Yes } - tag { @Tag } - @PartText - } - - @PartNumber @Case { - "" @Yield { - @PartTitle @Case { - "" @Yield @Null - else @Yield @Part - } - } - else @Yield @Part - } - // - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - aboveheadinggap { @AboveChapterGap } - headingfont { @AppendixHeadingFont } - headingbreak { @AppendixHeadingBreak } - headingformat { @Num @AppendixHeadingFormat @Body } - incontents { @AppendixInContents } - contentsindent { @AppendixContentsIndent } - word { appendix @WordVal @AppendixWord } - numbers { @AppendixNumbers } - attachnum { @AppendixList&&preceding @Tagged @Tag } - retrievenum { @AppendixList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - pnprefix { @AppendixPrefix } - intheorems { @AppendixNumInTheorems } - indisplays { @AppendixNumInDisplays } - infigures { @AppendixNumInFigures } - intables { @AppendixNumInTables } - infloaters { @AppendixNumInFloaters } - sendheader { @ChapterFull @Body } - innergap { @SubAppendixGap } - inrunners { Yes } - @Body - - } - - - ####################################################################### - # # - # Colophon. # - # # - ####################################################################### - - def @Colophon into { @ColophonList&&preceding } - named @Tag {} - named @InitialLanguage {} - body @Body - { - - @InitialLanguage @Language @Body - - } - - -@End @BookSetup diff --git a/include/include/bsf b/include/include/bsf deleted file mode 100644 index 6c8959e..0000000 --- a/include/include/bsf +++ /dev/null @@ -1,1929 +0,0 @@ - -############################################################################### -# # -# Lout @BasicSetup package # -# # -# Jeffrey H. Kingston # -# # -# This package contains basic symbols used widely throughout many # -# documents, for font changes, particular characters, standard words in # -# the current language, date and time, paragraphs, lists, colours, # -# rules, and boxes. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -@SysInclude { lengths } # @PSLengths -@SysInclude { coltex } # @ColourCommand and @TextureCommand -@SysPrependGraphic { bsf.lpg } # rules, boxes, margin note setup - - -############################################################################### -# # -# The following symbols are defined outside @BasicSetup so that # -# they can be invoked when setting its parameters in the @Use clause. # -# # -############################################################################### - -def @OrIfPlain - precedence 80 - left x - right y -{ - @BackEnd @Case { - PlainText @Yield y - else @Yield x - } -} - - -def @ZeroSize right x -{ - @HContract @VContract { ^/0io |0io @OneCol @OneRow x |0io /0io } -} - - -########################################################################### -# # -# @Place: places an object at an arbitrary point on the page. # -# # -########################################################################### - -# -# VT: the expressions in the braces will work for PostScript but not for PDF -# they should be modified in the way the "named c { " cm" }" blocks were modified above -# but since the point of @Place is to output a matrix (?), I have not implemented this -# -def @Place - import @PSLengths named x - named "+" precedence 96 associativity left left a right b { a b "add" } - named "-" precedence 96 associativity left left a right b { a b "sub" } - named "/" precedence 97 associativity left left a right b { a b "div" } - named "*" precedence 98 associativity left left a right b { a b "mul" } - { 0 } - import @PSLengths named y - named "+" precedence 96 associativity left left a right b { a b "add" } - named "-" precedence 96 associativity left left a right b { a b "sub" } - named "/" precedence 97 associativity left left a right b { a b "div" } - named "*" precedence 98 associativity left left a right b { a b "mul" } - { 0 } - right val -{ - @ZeroSize { - @BackEnd @Case { - PlainText @Yield "" - PostScript @Yield { - { "LoutPageDict begin matr setmatrix" x y "translate end gsave" - // "grestore" } @Graphic val - } - else @Yield { { "% @Place UNIMPLEMENTED" } @Graphic val # VT: PDF currently has no output - } - } - } -} - - -########################################################################### -# # -# @Colour, @Color # -# # -########################################################################### - -def @Colour @Color left col right y { {@ColourCommand col} @SetColour y } - - -########################################################################### -# # -# @ColouredUnderline, @ColoredUnderline # -# # -########################################################################### - -def @ColouredUnderline @ColoredUnderline left col right y { - {@ColourCommand col} @SetUnderlineColour @Underline y -} - - -########################################################################### -# # -# @Texture # -# # -########################################################################### - -def @Texture - left type - named scale { 1 } - named hscale { 1 } - named vscale { 1 } - import @PSLengths named angle { 0d } - import @PSLengths named hshift { 0i } - import @PSLengths named vshift { 0i } - import @PSLengths named width { "dft" } - import @PSLengths named height { "dft" } - import @PSLengths named gap { "dft" } - import @PSLengths named radius { "dft" } - import @PSLengths named linewidth { "dft" } - named font { "dft" } - import @PSLengths named size { "dft" } - named value { "dft" } - right x -{ - { type @TextureCommand - scale { scale } - hscale { hscale } - vscale { vscale } - angle { angle } - hshift { hshift } - vshift { vshift } - width { width } - height { height } - gap { gap } - radius { radius } - linewidth { linewidth } - font { font } - size { size } - value { value } - } @SetTexture x -} - - -############################################################################### -# # -# Symbols exported by @BasicSetup. # -# # -############################################################################### - -export - - @InitialFont @InitialBreak @InitialOutdent @InitialSpace @InitialLanguage - @InitialColour @InitialBackgroundColour @OptimizePages @HeadingFont - @ParaGap @ParaIndent @DisplayGap @DisplayIndent @DefaultIndent - @DisplayNumStyle @WideIndent @VeryWideIndent - @ListGap @ListIndent @ListRightIndent - @ListLabelWidth @ListLabelRight @ListLabelRightGap @ListFont @ListBreak - @NumberSeparator - - @Pipe @PipeVerbatim @PipeRawVerbatim - - @Word @Roman @UCRoman @Alpha @UCAlpha @FnBullets @FnSymbols - @Months @ShortMonths @WeekDays @ShortWeekDays - @TwelveHours @ShortHours @MeriDiems @ShortMeriDiems - - @Sym @Ding @R @I @B @BI @S @F @II - "~" "~~" "``" "''" ",," "--" "---" "..." - - @Bullet @ParSym @SectSym @Dagger @DaggerDbl @CDot @Sterling @Yen @Florin - @Star @Degree @Minute @Second @Multiply @Divide @Lozenge @Register - @CopyRight @TradeMark @Euro - - @Date @Time @DateTimeFormat @DropCapTwo @DropCapThree @Centre @Right - @NoDotSep @NoDotJoin @Join @Sep @DotSep @ColonSep @DotJoin @DashJoin - @NumSep @VStrut @ZeroWidth @ZeroHeight @OverStrike @Sup @Sub @HClip @VClip - @FullWidthRule @LocalWidthRule @Box @CurveBox @ShadowBox @BoundaryMarks - @DocInfo @NumberMarker @NumberOf @TitleMarker @TitleOf - @PageMarker @PageMark @NoLinkPageMark @PageOf @PageParityOf - @CrossLink @ExternalLink - - @BeginDisplayCounter - - @Heading "^" "&-" @If @Not @And @Or @True - @PP @LP @LLP @DP @LOP @NP @CNP - - @BeginAlignedDisplays - @EndAlignedDisplays - - @Display - @LeftDisplay - @IndentedDisplay - @QuotedDisplay - @CentredDisplay - @RightDisplay - @AlignedDisplay - @LeftAlignedDisplay - @IndentedAlignedDisplay - @QuotedAlignedDisplay - @CentredAlignedDisplay - @RightAlignedDisplay - @NumberedDisplay - @LeftNumberedDisplay - @IndentedNumberedDisplay - @QuotedNumberedDisplay - @CentredNumberedDisplay - @RightNumberedDisplay - @AlignedNumberedDisplay - @LeftAlignedNumberedDisplay - @IndentedAlignedNumberedDisplay - @QuotedAlignedNumberedDisplay - @CentredAlignedNumberedDisplay - @RightAlignedNumberedDisplay - - @RawDisplay - @RawLeftDisplay - @RawIndentedDisplay - @RawQuotedDisplay - @RawCentredDisplay - @RawRightDisplay - @RawAlignedDisplay - @RawLeftAlignedDisplay - @RawIndentedAlignedDisplay - @RawQuotedAlignedDisplay - @RawCentredAlignedDisplay - @RawRightAlignedDisplay - @RawNumberedDisplay - @RawLeftNumberedDisplay - @RawIndentedNumberedDisplay - @RawQuotedNumberedDisplay - @RawCentredNumberedDisplay - @RawRightNumberedDisplay - @RawAlignedNumberedDisplay - @RawLeftAlignedNumberedDisplay - @RawIndentedAlignedNumberedDisplay - @RawQuotedAlignedNumberedDisplay - @RawCentredAlignedNumberedDisplay - @RawRightAlignedNumberedDisplay - - @ListItem - @ParagraphItem - @ListInterruptItem - @ListNewPage - @DropListItem - @TagItem - @DropTagItem - - @EndList - @RawEndList - - @RawList - @RawLeftList - @RawIndentedList - @RawQuotedList - @RawCentredList @RawCenteredList - @RawNumberedList - @RawParenNumberedList - @RawRomanList - @RawParenRomanList - @RawUCRomanList - @RawParenUCRomanList - @RawAlphaList - @RawParenAlphaList - @RawUCAlphaList - @RawParenUCAlphaList - @RawBulletList - @RawStarList - @RawDashList - @RawTaggedList - @RawWideTaggedList - @RawVeryWideTaggedList - - @List - @LeftList - @IndentedList - @QuotedList - @CentredList @CenteredList - @NumberedList - @ParenNumberedList - @RomanList - @ParenRomanList - @UCRomanList - @ParenUCRomanList - @AlphaList - @ParenAlphaList - @UCAlphaList - @ParenUCAlphaList - @BulletList - @StarList - @DashList - @TaggedList - @WideTaggedList - @VeryWideTaggedList - - -############################################################################### -# # -# The @BasicSetup package. # -# # -############################################################################### - -def @BasicSetup - named @InitialFont { Times Base 12p } # initial font - named @InitialBreak { {adjust 1.20fx hyphen} @OrIfPlain - {ragged 1fx nohyphen} } # initial break - named @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent - named @InitialSpace { lout } # initial space style - named @InitialLanguage{ English } # initial language - named @InitialColour { black } # initial colour - named @InitialBackgroundColour { white } # initial background colour - named @OptimizePages { No } # optimize page breaks? - named @HeadingFont { Bold } # font for @Heading - named @FixedWidthFont { Courier Base -1p } # font for @F - named @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs - named @ParaIndent { 2.0f @OrIfPlain 5s } # first-line indent for @PP - named @DisplayGap { 1.0v @OrIfPlain 1f } # gap above, below displays - named @DisplayIndent { 2.0f @OrIfPlain 5s } # @IndentedDisplay indent - named @DefaultIndent { 0.5rt } # @Display indent - named @DisplayNumStyle - right num { (num) } # display number style - named @WideIndent { 4.0f @OrIfPlain 10s } # @WideTaggedList indent - named @VeryWideIndent { 8.0f @OrIfPlain 20s } # @VeryWideTaggedList indent - named @ListOuterGap { 1.0v @OrIfPlain 1f } # gap before, after list - named @ListGap { 1.0v @OrIfPlain 1f } # gap between list items - named @ListIndent { 0s } # indent of list items - named @ListRightIndent{ 0s } # right indent of list items - named @ListLabelWidth { 2.0f @OrIfPlain 5s } # width allowed for list tags - named @ListLabelRight { No } # right align label - named @ListLabelRightGap { 2s } # right align gap - named @ListFont { } # font style of list item - named @ListBreak { } # break style of list item - named @NumberSeparator{ . } # separates numbers like 2.3.7 - import @BasicSetup - named @CrossLinkFormat - right @Body { @Body } # format for cross links - import @BasicSetup - named @ExternalLinkFormat - right @Body { @Body } # format for external links -@Begin - - ########################################################################### - # # - # x @Dft y # - # # - # This returns x unless its value is "dft", in which case it returns y. # - # Useful for defaulting the value of one parameter to another. # - # # - ########################################################################### - - def @Dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - ########################################################################### - # # - # @Pipe, @PipeVerbatim, and @PipeRawVerbatim # - # # - ########################################################################### - - def @Pipe - left command - right x - { - def @Filter { "cat" @FilterIn "|" command ">" @FilterOut } - - x - } - - def @PipeVerbatim - left command - right x - { - def @Filter { - "(echo @Verbatim @Begin ; (cat" @FilterIn "|" command "); echo @End @Verbatim ) >" @FilterOut } - - x - } - - def @PipeRawVerbatim - left command - right x - { - def @Filter { - "(echo @RawVerbatim @Begin ; (cat" @FilterIn "|" command "); echo @End @RawVerbatim ) >" @FilterOut } - - x - } - - - ########################################################################### - # # - # @Sym, @Ding font symbols, and miscellaneous special characters. # - # # - ########################################################################### - - def @Sym right x { { Symbol Base } @Font @Char x } - def @Ding right x { { Dingbats Base } @Font @Char x } - - def @R right x { Base @Font x } - def @I right x { Slope @Font x } - def @B right x { Bold @Font x } - def @BI right x { BoldSlope @Font x } - def @S right x { smallcaps @Font x } - def @F right x { @FixedWidthFont @Font x } - - def @II - right x - { - { @CurrFace @Case { - Bold @Yield BoldSlope - else @Yield Slope - } } @Font x - } - - def "~" left x right y { x &1su y } - def "~~" left x right y { x &2s y } - - def "``" { @Char "quotedblleft" @OrIfPlain "``" } - def "''" { @Char "quotedblright" @OrIfPlain "''" } - def ",," { @Char "quotedblbase" @OrIfPlain ",," } - def "--" { @Char "endash" @OrIfPlain "--" } - def "---" { @Char "emdash" @OrIfPlain "---"} - def "..." { @Char "ellipsis" @OrIfPlain "..."} - def @Bullet { @Char "bullet" @OrIfPlain "o" } - def @ParSym { @Char "paragraph" @OrIfPlain "P" } - def @SectSym { @Char "section" @OrIfPlain "$" } - def @Dagger { @Char "dagger" @OrIfPlain "+" } - def @DaggerDbl { @Char "daggerdbl" @OrIfPlain "++" } - def @CDot { @Char "periodcentered" @OrIfPlain "." } - def @Sterling { @Char "sterling" @OrIfPlain "&" } - def @Yen { @Char "yen" @OrIfPlain "Y" } - def @Florin { @Char "florin" @OrIfPlain "f" } - - def @Star { @Sym "asteriskmath" @OrIfPlain "*" } - def @Degree { @Sym "degree" @OrIfPlain "o" } - def @Minute { @Sym "minute" @OrIfPlain "'" } - def @Second { @Sym "second" @OrIfPlain "''" } - def @Multiply { @Sym "multiply" @OrIfPlain "x" } - def @Divide { @Sym "divide" @OrIfPlain "/" } - def @Lozenge { @Sym "lozenge" @OrIfPlain "O" } - def @Register { @Sym "registersans" @OrIfPlain "R" } - def @CopyRight { @Sym "copyrightsans" @OrIfPlain "C" } - def @TradeMark { @Sym "trademarksans" @OrIfPlain "TM" } - - def @Euro - { - @BackEnd @Case { - - PostScript @Yield { - 0.65w @VShift @VContract @HContract - "xsize ysize ysize 0.07 mul louteuro" @Graphic { - 0.7f @High 0.735f @Wide - } - } - - PDF @Yield { EUR } - - PlainText @Yield { EUR } - } - } - - - ########################################################################### - # # - # Symbols stored in the "standard" database # - # # - # @Word language-spacific words such as Chapter, etc. # - # @Roman lower case Roman numerals i, ii, ... , cc # - # @UCRoman upper case Roman numerals I, II, ... , CC # - # @Alpha lower case Roman alphabet a, b, ... , z # - # @UCAlpha upper case Roman alphabet A, B, ... , Z # - # @FnBullets bullets as footnote markers # - # @FnSymbols traditional footnote symbols asterisk, dagger, etc. # - # @Months months of the year: January, ... , December # - # @ShortMonths months of the year, abbreviated: Jan, ..., Dec # - # @WeekDays days of the week: Sunday, ... , Saturday # - # @ShortWeekDays days of the week, abbreviated: Sun, ... , Sat # - # @TwelveHours hours, from 1 to 12 # - # @ShortHours hours, from 0 to 23 # - # @DateTimeFormat format of results of @Date and @Time # - # # - ########################################################################### - - def @Word left @Tag right @Val { @Val } - def @Roman left @Tag right @Val { @Val } - def @UCRoman left @Tag right @Val { @Val } - def @Alpha left @Tag right @Val { @Val } - def @UCAlpha left @Tag right @Val { @Val } - def @FnBullets left @Tag right @Val { @Val } - def @FnSymbols left @Tag right @Val { @Val } - def @Months left @Tag right @Val { @Val } - def @ShortMonths left @Tag right @Val { @Val } - def @WeekDays left @Tag right @Val { @Val } - def @ShortWeekDays left @Tag right @Val { @Val } - def @TwelveHours left @Tag right @Val { @Val } - def @ShortHours left @Tag right @Val { @Val } - def @MeriDiems left @Tag right @Val { @Val } - def @ShortMeriDiems left @Tag right @Val { @Val } - - export @Value - def @DateTimeFormat left @Tag - named @Value - named @Year {} - named @ShortYear {} - named @Month {} - named @ShortMonth {} - named @MonthNum {} - named @Day {} - named @ShortDay {} - named @DayNum {} - named @MeriDiem {} - named @ShortMeriDiem {} - named @Hour {} - named @TwelveHour {} - named @ShortHour {} - named @Minute {} - named @Second {} - {} - {} - - @SysDatabase @Word @Roman @UCRoman @Alpha @UCAlpha @FnBullets @FnSymbols - @Months @ShortMonths @WeekDays @ShortWeekDays @TwelveHours - @ShortHours @MeriDiems @ShortMeriDiems @DateTimeFormat - { standard } - - - ########################################################################### - # # - # @Date and @Time: the date and time now. # - # # - ########################################################################### - - def @Date - named @Format - named @Year { @Moment&&now @Open { {@Century}@Year }} - named @ShortYear { @Moment&&now @Open { @Year }} - named @Month { @Moment&&now @Open { @Months&&@Month }} - named @ShortMonth { @Moment&&now @Open { @ShortMonths&&@Month }} - named @MonthNum { @Moment&&now @Open { @Month }} - named @Day { @Moment&&now @Open { @WeekDays&&@WeekDay }} - named @ShortDay { @Moment&&now @Open { @ShortWeekDays&&@WeekDay}} - named @DayNum { @Moment&&now @Open { @Day }} - named @MeriDiem { @Moment&&now @Open { @MeriDiems&&@Hour }} - named @ShortMeriDiem{ @Moment&&now @Open { @ShortMeriDiems&&@Hour }} - named @Hour { @Moment&&now @Open { @Hour }} - named @TwelveHour { @Moment&&now @Open { @TwelveHours&&@Hour }} - named @ShortHour { @Moment&&now @Open { @ShortHours&&@Hour }} - named @Minute { @Moment&&now @Open { @Minute }} - named @Second { @Moment&&now @Open { @Second }} - { - @DateTimeFormat&&date @Open { @Value - @Year { @Year } - @ShortYear { @ShortYear } - @Month { @Month } - @ShortMonth { @ShortMonth } - @MonthNum { @MonthNum } - @Day { @Day } - @ShortDay { @ShortDay } - @DayNum { @DayNum } - @MeriDiem { @MeriDiem } - @ShortMeriDiem { @ShortMeriDiem } - @Hour { @Hour } - @TwelveHour { @TwelveHour } - @ShortHour { @ShortHour } - @Minute { @Minute } - @Second { @Second } - } - } - { @Format } - - def @Time - named @Format - named @Year { @Moment&&now @Open { {@Century}@Year }} - named @ShortYear { @Moment&&now @Open { @Year }} - named @Month { @Moment&&now @Open { @Months&&@Month }} - named @ShortMonth { @Moment&&now @Open { @ShortMonths&&@Month }} - named @MonthNum { @Moment&&now @Open { @Month }} - named @Day { @Moment&&now @Open { @WeekDays&&@WeekDay }} - named @ShortDay { @Moment&&now @Open { @ShortWeekDays&&@WeekDay}} - named @DayNum { @Moment&&now @Open { @Day }} - named @MeriDiem { @Moment&&now @Open { @MeriDiems&&@Hour }} - named @ShortMeriDiem{ @Moment&&now @Open { @ShortMeriDiems&&@Hour }} - named @Hour { @Moment&&now @Open { @Hour }} - named @TwelveHour { @Moment&&now @Open { @TwelveHours&&@Hour }} - named @ShortHour { @Moment&&now @Open { @ShortHours&&@Hour }} - named @Minute { @Moment&&now @Open { @Minute }} - named @Second { @Moment&&now @Open { @Second }} - { - @DateTimeFormat&&time @Open { @Value - @Year { @Year } - @ShortYear { @ShortYear } - @Month { @Month } - @ShortMonth { @ShortMonth } - @MonthNum { @MonthNum } - @Day { @Day } - @ShortDay { @ShortDay } - @DayNum { @DayNum } - @MeriDiem { @MeriDiem } - @ShortMeriDiem { @ShortMeriDiem } - @Hour { @Hour } - @TwelveHour { @TwelveHour } - @ShortHour { @ShortHour } - @Minute { @Minute } - @Second { @Second } - } - } - { @Format } - - - ########################################################################### - # # - # @DropCapTwo and @DropCapThree # - # # - ########################################################################### - - def @DropCapTwo - left y - named height { 1.5v } - right x - { - def @ParPlace { @Galley } - def @EndParPlace { @Galley } - - def @LineList - { - @PAdjust @ParPlace - //1vx @LineList - } - - def @ParGalley horizontally into { @ParPlace&&preceding } - right x - { - x - } - - def @EndPar force into { @EndParPlace&&following } { @Null } - - def @Cap - { - -0.25f @VShift 1.0w @VShift { - -90d @Rotate height @Wide @Scale 90d @Rotate y - } - } - - |1s @PAdjust @ParPlace - /1vo @Cap @ParGalley {x & @EndPar &1rt } | @PAdjust @ParPlace - //1vx @LineList - // @EndParPlace - } - - def @DropCapThree - left y - named height { 2.5v } - right x - { - def @ParPlace { @Galley } - def @EndParPlace { @Galley } - - def @LineList - { - @PAdjust @ParPlace - //1vx @LineList - } - - def @ParGalley force horizontally into { @ParPlace&&preceding } - right x - { - x - } - - def @EndPar force into { @EndParPlace&&following } { @Null } - - def @Cap - { - -0.25f @VShift 1.0w @VShift { - -90d @Rotate height @Wide @Scale 90d @Rotate y - } - } - - |1s @PAdjust @ParPlace - /1vo @ParGalley { x & @EndPar &1rt } | @PAdjust @ParPlace - /1vo @Cap | @PAdjust @ParPlace - //1vx @LineList - // @EndParPlace - } - - - ########################################################################### - # # - # @Centre, @Center, @Right, @NoDotSep, @NoDotJoin, @DotSep, # - # @ColonSep, @DotJoin, @DashJoin, @NumSep # - # # - ########################################################################### - - macro @Centre @Center { |0.5rt @HContract } - - def @Right - precedence 50 - left x - right y - { x |1.0rt @OneCol { 2f @Wide {} | y } } - - def @NoDotSep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x |2s y } - } - } - } - } - - def @NoDotJoin left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x{y} } - } - } - } - } - - def @DotSep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x. |2s y } - } - } - } - } - - def @ColonSep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x: |2s y } - } - } - } - } - - def @DotJoin left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x.y } - } - } - } - } - - def @DashJoin left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x--y } - } - } - } - } - - def @NumSep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { - @CurrLang @Case { - Hungarian @Yield { y. x } - else @Yield { x y } - } - } - } - } - } - } - - - ########################################################################### - # # - # @VStrut, @ZeroWidth, @ZeroHeight # - # # - ########################################################################### - - - def @VStrut - named above { 0.5f } - named below { 0.5f } - right x - { - x &0iu @VContract { above @High ^/ below @High } - } - - - def @ZeroWidth right x { @HContract { |0io x |0io } } - - def @ZeroHeight right x { @VContract { /0io x /0io } } - - - ########################################################################### - # # - # @OverStrike, @Sup and @Sub # - # # - ########################################################################### - - def @OverStrike left x right y - { - @OneRow { @HContract @VContract x /0io @HContract @VContract y } - } - - def @Sup - left x - named gap { 0.40fk } - right y - { - @HContract @VContract - { - | 0.7f @Font y ^/gap x - } - } - - def @Sub - left x - named gap { 0.40fk } - right y - { - @HContract @VContract - { - x /gap | 0.7f @Font y - } - } - - - ########################################################################### - # # - # @HClip and @VClip # - # # - ########################################################################### - - def @HClip - named shift { 0.0 } - right x - { - { "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto" - "closepath clip gsave" // "grestore" } @Graphic - { - |{{shift}"rt"} @ZeroWidth {{shift}"w"} @HShift x | - } - } - - def @VClip - named shift { 0.0 } - right x - { - { "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto" - "closepath clip gsave" // "grestore" } @Graphic - { - /{{shift}"rt"} @ZeroHeight {{shift}"w"} @VShift x / - } - } - - - ########################################################################### - # # - # @AddPaint, @StrokeCommand # - # # - ########################################################################### - - def @AddPaint - left col - right texture - { - col @Case { - none @Yield "" - nochange @Yield { - @BackEnd @Case { - PostScript @Yield { "gsave" texture "fill grestore" } - PDF @Yield { "q f Q" } - PlainText @Yield { "" } - } - } - else @Yield { - @BackEnd @Case { - PostScript @Yield {"gsave" @ColourCommand col texture "fill grestore"} - PDF @Yield { "q" @ColourCommand col "f Q" } - PlainText @Yield { "" } - } - } - } - } - - def @StrokeCommand right linewidth - { - @BackEnd @Case { - PostScript @Yield { - linewidth @Case { - "" @Yield { "stroke" } - none @Yield { } - else @Yield { linewidth "setlinewidth stroke" } - } - } - PDF @Yield { - linewidth @Case { - "" @Yield { "S" } - none @Yield { } - else @Yield { linewidth "w S" } - } - } - else @Yield "" - } - } - - - - ########################################################################### - # # - # @FullWidthRule, @Box, @CurveBox, and @ShadowBox # - # # - ########################################################################### - - def @FullWidthRule - import @PSLengths named linewidth {} - { - @BackEnd @Case { - - PostScript @Yield @HExpand { - { "LoutRule" @StrokeCommand linewidth } @Graphic { 0.5p @High } - } - - PDF @Yield @HExpand { - { "0 0 m __xsize 0 l" @StrokeCommand linewidth } @Graphic { 0.5p @High } - } - - PlainText @Yield { "-" @PlainGraphic 1f @High } - } - } - - def @LocalWidthRule - import @PSLengths named linewidth {} - { - @BackEnd @Case { - - PostScript @Yield { - { "LoutRule" @StrokeCommand linewidth } @Graphic { 0.5p @High } - } - - PDF @Yield { - { "0 0 m __xsize 0 l" @StrokeCommand linewidth } @Graphic { 0.5p @High } - } - - PlainText @Yield { "-" @PlainGraphic 1f @High } - } - } - - def @Box - named margin { 0.3f } - import @PSLengths named linewidth {} - named paint { none } - import @TextureImport named texture {} - right x - { - @BackEnd @Case { - - PostScript @Yield @VContract @HContract 0c @HShift { - {"LoutBox" paint @AddPaint texture @StrokeCommand linewidth } - @Graphic - { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } - } - - PDF @Yield @VContract @HContract 0c @HShift { - { "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h" - paint @AddPaint texture @StrokeCommand linewidth } @Graphic - { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } - } - - PlainText @Yield @VContract @HContract 0c @HShift { - ^/margin ^|margin 0c @HShift @OneRow x |margin /margin - } - } - } - - def @CurveBox - named margin { 0.3f } - import @PSLengths named linewidth {} - named paint { none } - import @TextureImport named texture {} - right x - { - def @PDFStuff - { - "__xmark 0 m" - "__sub(__xsize, __xmark) 0 l" - "__sub(__xsize, __div(__mul(11, __xmark), 24)) 0" - "__xsize __div(__mul(11, __xmark), 24)" - "__xsize __xmark c" - "__xsize __sub(__ysize, __xmark) l" - "__xsize __sub(__ysize, __div(__mul(11, __xmark), 24))" - "__sub(__xsize, __div(__mul(11, __xmark), 24)) __ysize" - "__sub(__xsize, __xmark) __ysize c" - "__xmark __ysize l" - "__div(__mul(11, __xmark), 24) __ysize" - "0 __sub(__ysize, __div(__mul(11, __xmark), 24))" - "0 __sub(__ysize, __xmark) c" - "0 __xmark l" - "0 __div(__mul(11, __xmark), 24)" - "__div(__mul(11, __xmark), 24) 0" - "__xmark 0 c" - "h" - paint @AddPaint texture @StrokeCommand linewidth - } - - @VContract @HContract 0c @HShift @BackEnd @Case { - - PostScript @Yield { - {"LoutCurveBox" paint @AddPaint texture @StrokeCommand linewidth } - @Graphic - { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } - } - - PlainText @Yield { - ^/margin ^|margin 0c @HShift @OneRow x |margin /margin - } - - PDF @Yield { - @PDFStuff @Graphic - { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin } - } - } - } - - def @ShadowBox - named margin { 0.3f } - import @PSLengths named linewidth {} - named paint { none } - import @TextureImport named texture {} - named shadow { 0.2f } - right x - { - @VContract @HContract 0c @HShift @BackEnd @Case { - - PostScript @Yield { - "LoutShadowBox fill" @Graphic - { ^/shadow ^|shadow 0c @HShift - @Box - margin {margin} - paint {paint} - texture { texture } - linewidth {linewidth} x - |shadow /shadow - } - } - - PlainText @Yield { - ^/shadow ^|shadow 0c @HShift - @Box - margin { margin } - paint { paint } - texture { texture } - linewidth {linewidth} x - |shadow /shadow - } - - PDF @Yield { - { - "__mul(__xmark, 2) 0 m __xsize 0 l" - "__xsize __sub(__ysize, __mul(__xmark, 2)) l" - "__sub(__xsize, __xmark) __sub(__ysize, __mul(__xmark, 2)) l" - "__sub(__xsize, __xmark) __xmark l" - "__mul(__xmark, 2) __xmark l h f" - } - @Graphic - { ^/shadow ^|shadow 0c @HShift - @Box - margin { margin } - paint { paint } - texture { texture } - linewidth { linewidth } x - |shadow /shadow - } - } - } - } - - - ########################################################################### - # # - # @BoundaryMarks # - # # - ########################################################################### - - def @BoundaryMarks - import @PSLengths named linewidth { 0.2p } - import @PSLengths named length { 0.5c } - import @PSLengths named gap { 0.5c } - import @PSLengths named lout { 0c } - import @PSLengths named rout { 0c } - import @PSLengths named uout { 0c } - import @PSLengths named dout { 0c } - { - def @UpStroke { "0" gap "rmoveto" "0" length "rlineto" } - def @DownStroke { "0" gap "neg" "rmoveto" "0" length "neg rlineto" } - def @LeftStroke { gap "neg" "0" "rmoveto" length "neg" "0 rlineto" } - def @RightStroke { gap "0" "rmoveto" length "0 rlineto" } - - def @LLSpot { lout "neg" dout "neg" moveto } - def @LRSpot { xsize rout "add" dout "neg" moveto } - def @ULSpot { lout "neg" ysize uout "add" moveto } - def @URSpot { xsize rout "add" ysize uout "add" moveto } - - def @PDFStuff { - "__sub(-"gap", "lout") __sub(0, "dout") m " - "__sub(__sub(-"gap", "lout"), "length") __sub(0, "dout") l" - "__sub(0, "lout") __sub(-"gap", "dout") m " - "__sub(0, "lout") __sub(__sub(-"gap", "dout"), "length") l" - "__add(__xsize,"rout") __sub(-"gap", "dout") m " - "__add(__xsize,"rout") __sub(__sub(-"gap", "dout"), "length") l" - "__add(__add(__xsize,"rout"),"gap") __sub(0, "dout") m " - "__add(__add(__add(__xsize,"rout"),"gap"),"length") __sub(0, "dout") l" - " __sub(__sub(0, "lout"), "gap") __add(__ysize, "uout") m " - "__sub(__sub(__sub(0, "lout"), "gap"), "length") __add(__ysize, "uout") l" - "__sub(0, "lout") __add(__add(__ysize, "uout"), "gap") m " - "__sub(0, "lout") __add(__add(__add(__ysize, "uout"), "gap"), "length") l" - " __add(__add(__xsize, "rout"), "gap") __add(__ysize, "uout") m " - "__add(__add(__add(__xsize, "rout"), "gap"), "length") __add(__ysize, "uout") l" - "__add(__xsize, "rout") __add(__add(__ysize, "uout"), "gap") m " - "__add(__xsize, "rout") __add(__add(__add(__ysize, "uout"), "gap"), "length") l" - - linewidth "w S" - } - - @BackEnd @Case { - - PostScript @Yield { - { - @LLSpot @LeftStroke - @LLSpot @DownStroke - @LRSpot @DownStroke - @LRSpot @RightStroke - @ULSpot @LeftStroke - @ULSpot @UpStroke - @URSpot @RightStroke - @URSpot @UpStroke - - linewidth "setlinewidth stroke" - } @Graphic {} - } - - PlainText @Yield "" - - PDF @Yield { @PDFStuff @Graphic {} } - } - } - - ########################################################################## - # # - # @DocInfo # - # # - ########################################################################## - - def @DocInfo - named author {} - named title {} - named keywords {} - { - { @BackEnd @Case { - PostScript @Yield - { - "[" author @Case { - "" @Yield "" - else @Yield { "/Author ("author")" } } - title @Case { - "" @Yield "" - else @Yield { "/Title ("title")" } } - keywords @Case { - "" @Yield "" - else @Yield { "/Keywords ("keywords")" } } - "/DOCINFO pdfmark" - } - else @Yield @Null - } } @Graphic { } - } - - - ########################################################################## - # # - # @NumberMarker, @NumberOf, @TitleMarker, @TitleOf, # - # @PageMark, @PageOf, @PageparityOf, @CrossLink, @ExternalLink # - # # - # NB the default value ?? is desperately important for unsorted # - # reference lists numbered by first appearance (@NumberOf @Tag), # - # because it is the special sort key value that prevents merging, # - # hence allowing all the references to be printed even though # - # their sort keys are all ?? initially. # - # # - ########################################################################## - - export @Tag @Value - def @NumberMarker - named @Tag {} - named @Value { "??" } - { - @Null - } - - def @NumberOf - right tag - { - @NumberMarker&&tag @Open { @Value } - } - - - export @Tag @Value - def @TitleMarker - named @Tag {} - named @Value { "??" } - { - @Null - } - - def @TitleOf - right tag - { - @TitleMarker&&tag @Open { @Value } - } - - - export @Tag num rawnum parity - def @PageMarker - named @Tag {} - named num {} - named rawnum {} - named parity {} - { - @PageLabel num - } - - def @PageMark - right tag - { - tag @LinkDest @Null & @PageMarker&&preceding @Tagged tag - } - - def @NoLinkPageMark - right tag - { - @PageMarker&&preceding @Tagged tag - } - - def @PageOf - right tag - { - @PageMarker&&tag @Open { num } - } - - def @PageParityOf - right tag - { - @PageMarker&&tag @Open { parity } - } - - def @CrossLink - left tag - named @Format right @Body { @CrossLinkFormat @Body } - right obj - { - @HContract @VContract { - tag @LinkSource @Format obj - } - } - - def @ExternalLink - left tag - named @Format right @Body { @ExternalLinkFormat @Body } - right obj - { - @HContract @VContract { - tag @URLLink @Format obj - } - } - - - ########################################################################### - # # - # @Join and @Sep # - # # - # Join two objects together with @NumberSeparator, unless one is # - # empty in which case just return the other. # - # # - ########################################################################### - - def @Join left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x{@NumberSeparator}y } - } - } - } - } - - def @Sep left x right y - { - x @Case { - {} @Yield y - else @Yield { - y @Case { - {} @Yield x - else @Yield { x{@NumberSeparator} |2s y } - } - } - } - } - - - ########################################################################### - # # - # Miscellaneous. # - # # - ########################################################################### - - def @Heading right x { ragged @Break @HeadingFont @Font x } - def "^" { {} ^& {} } - def "&-" left x right y { x &0ch y } - - - ########################################################################### - # # - # @If @Not @And @Or @True # - # # - # Used in databases to make optional fields format nicely. # - # # - ########################################################################### - - def @If - precedence 97 - left x - right y - { - y @Case { - {} @Yield @Null - else @Yield { @Null{x} } - } - } - - def @Not - precedence 100 - right y - { - y @Case { - {} @Yield "*" - else @Yield "" - } - } - - def @And - precedence 99 - left x - right y - { - x @Case { - {} @Yield {} - else @Yield y - } - } - - def @Or - precedence 98 - left x - right y - { - x @Case { - {} @Yield y - else @Yield x - } - } - - def @True { "*" } - - - ########################################################################### - # # - # Paragraphs. # - # # - ########################################################################### - - macro @PP { //@ParaGap @ParaIndent @Wide &{0i} } - macro @LP { //{@ParaGap} } - macro @LLP { //{1vx} } - macro @DP { //{@DisplayGap} } - macro @LOP { //{@ListOuterGap} } - macro @NP { //{1.1b} } - macro @CNP { // 3.2v @High //0io //{} } - - - ########################################################################### - # # - # Beginning and ending of aligned displays. # - # # - ########################################################################### - - def @APlace { @Galley } - def @EndAlignedPlace { @Galley } - def @AlignedPlace { @Galley } - - def @BAligned into { @APlace&&preceding } - { - def @AlignedList { @AlignedPlace /1.1b @AlignedList } - - //1.1b @AlignedList - // @EndAlignedPlace - } - - macro @BAD @BeginAlignedDisplays { // @APlace | @BAligned } - def @EAD @EndAlignedDisplays force into { @EndAlignedPlace&&preceding } {} - - - ########################################################################### - # # - # New code for numbered displays that will cross section boundaries # - # # - ########################################################################### - - export @Tag val display_val - def @NumDispCounterMarker - named @Tag {} - named val {} - named display_val {} - { - @Null - } - - def @NumDispNum right tag - { - @NumDispCounterMarker&&tag @Open { @Next val } - } - - def @NumDispCounterIncrement - named @BypassNumber { "dft" } - right tag - { - def @DisplayNumber - { - @BypassNumber @Dft { @NumDispNum tag } - } - - @NumDispCounterMarker&&preceding @Tagged tag - # @NumDispCounterMarker val { @NumDispNum tag } - # @NumberMarker @Tag { tag } @Value { @NumDispNum tag } - @NumDispCounterMarker val { @NumDispNum tag } display_val { @DisplayNumber } - @NumberMarker @Tag { tag } @Value { @DisplayNumber } - } - - def @NN - { - @NumDispCounterMarker&&preceding @Open { @DisplayNumStyle display_val } - } - - def @Do - left x - right y - { - x @Case { - { No None } @Yield @Null - else @Yield y - } - } - - def @BeginDisplayCounter - left condition - right prefix - { - condition @Do @NumDispCounterMarker val { prefix @Join 0 } - } - - - ########################################################################### - # # - # Galleys that carry displays to their places. # - # # - ########################################################################### - - def @DispPlace { @Galley } - - def @Disp into { @DispPlace&&preceding } - right x - { - x - } - - def @NDisp into { @DispPlace&&preceding } - named @Tag {} - named @BypassNumber { "dft" } - right x - { - @OneRow { - # @NumDispCounterIncrement @Tag - @NumDispCounterIncrement @BypassNumber { @BypassNumber } @Tag - @PageMark @Tag - ^// - @OneRow x - } - } - - def @ADisp into { @AlignedPlace&&preceding } - right x - { - x - } - - def @ANDisp into { @AlignedPlace&&preceding } - named @Tag {} - named @BypassNumber { "dft" } - right x - { - @OneRow { - # @NumDispCounterIncrement @Tag - @NumDispCounterIncrement @BypassNumber { @BypassNumber } @Tag - @PageMark @Tag - ^/ - @OneRow x - } - } - - - ########################################################################### - # # - # Displays and raw displays. # - # # - ########################################################################### - - macro @G { |@DefaultIndent } - macro @LG { | } - macro @IG { |@DisplayIndent } - macro @CG { |0.5rt } - macro @RG { |1.0rt } - macro @QR { @DisplayIndent @Wide { |1rt @NN } } - macro @DX { @DispPlace } - macro @DY { @Disp } - macro @AX { @APlace } - macro @AY { @ADisp } - macro @NY { @NDisp } - macro @MY { @ANDisp } - - macro @D @Display { @DP @G @DX | @DP // @DY } - macro @LD @LeftDisplay { @DP @LG @DX | @DP // @DY } - macro @ID @IndentedDisplay { @DP @IG @DX | @DP // @DY } - macro @QD @QuotedDisplay { @DP @IG @DX @IG @DP // @DY } - macro @CD @CentredDisplay - @CenteredDisplay { @DP @CG @DX | @DP // @DY } - macro @RightDisplay { @DP @RG @DX | @DP // @DY } - - - macro @AD @AlignedDisplay { @DP @G @AX | @DP // @AY } - macro @LAD @LeftAlignedDisplay { @DP @LG @AX | @DP // @AY } - macro @IAD @IndentedAlignedDisplay { @DP @IG @AX | @DP // @AY } - macro @QAD @QuotedAlignedDisplay { @DP @IG @AX @IG @DP // @AY } - macro @CAD @CentredAlignedDisplay - @CenteredAlignedDisplay { @DP @CG @AX | @DP // @AY } - macro @RightAlignedDisplay { @DP @RG @AX | @DP // @AY } - - macro @ND @NumberedDisplay { @DP @G @DX |1rt @NN @DP // @NY } - macro @LND @LeftNumberedDisplay { @DP @LG @DX |1rt @NN @DP // @NY } - macro @IND @IndentedNumberedDisplay { @DP @IG @DX |1rt @NN @DP // @NY } - macro @QND @QuotedNumberedDisplay { @DP @IG @DX |1rt @QR @DP // @NY } - macro @CND @CentredNumberedDisplay - @CenteredNumberedDisplay { @DP @CG @DX |1rt @NN @DP // @NY } - macro @RightNumberedDisplay { @DP @RG @DX |1rt @NN @DP // @NY } - - macro @AND @AlignedNumberedDisplay { @DP @G @AX |1rt @NN @DP // @MY } - macro @LAND @LeftAlignedNumberedDisplay { @DP @LG @AX |1rt @NN @DP // @MY } - macro @IAND @IndentedAlignedNumberedDisplay{ @DP @IG @AX |1rt @NN @DP // @MY } - macro @QAND @QuotedAlignedNumberedDisplay { @DP @IG @AX |1rt @QR @DP // @MY } - macro @CAND @CentredAlignedNumberedDisplay - @CenteredAlignedNumberedDisplay{ @DP @CG @AX |1rt @NN @DP // @MY } - macro @RightAlignedNumberedDisplay { @DP @RG @AX |1rt @NN @DP // @MY } - - - macro @RD @RawDisplay { @G @DX | // @DY } - macro @RLD @RawLeftDisplay { @LG @DX | // @DY } - macro @RID @RawIndentedDisplay { @IG @DX | // @DY } - macro @RQD @RawQuotedDisplay { @IG @DX @IG | // @DY } - macro @RCD @RawCentredDisplay - @RawCenteredDisplay { @CG @DX | | // @DY } - macro @RRD @RawRightDisplay { @RG @DX | // @DY } - - - macro @RAD @RawAlignedDisplay { @G @AX | // @AY } - macro @RLAD @RawLeftAlignedDisplay { @LG @AX | // @AY } - macro @RIAD @RawIndentedAlignedDisplay { @IG @AX | // @AY } - macro @RQAD @RawQuotedAlignedDisplay { @IG @AX @IG | // @AY } - macro @RCAD @RawCentredAlignedDisplay - @RawCenteredAlignedDisplay { @CG @AX | // @AY } - macro @RRAD @RawRightAlignedDisplay { @RG @AX | // @AY } - - macro @RND @RawNumberedDisplay { @G @DX |1rt @NN // @NY } - macro @RLND @RawLeftNumberedDisplay { @LG @DX |1rt @NN // @NY } - macro @RIND @RawIndentedNumberedDisplay { @IG @DX |1rt @NN // @NY } - macro @RQND @RawQuotedNumberedDisplay { @IG @DX |1rt @QR // @NY } - macro @RCND @RawCentredNumberedDisplay - @RawCenteredNumberedDisplay { @CG @DX |1rt @NN // @NY } - macro @RRND @RawRightNumberedDisplay { @RG @DX |1rt @NN // @NY } - - macro @RAND @RawAlignedNumberedDisplay { @G @AX |1rt @NN // @MY } - macro @RLAND @RawLeftAlignedNumberedDisplay { @LG @AX |1rt @NN // @MY } - macro @RIAND @RawIndentedAlignedNumberedDisplay { @IG @AX |1rt @NN // @MY } - macro @RQAND @RawQuotedAlignedNumberedDisplay { @IG @AX |1rt @QR // @MY } - macro @RCAND @RawCentredAlignedNumberedDisplay - @RawCenteredAlignedNumberedDisplay { @CG @AX |1rt @NN // @MY } - macro @RRAND @RawRightAlignedNumberedDisplay{ @RG @AX |1rt @NN // @MY } - - - ########################################################################### - # # - # Lists and raw lists. # - # # - ########################################################################### - - - def @ItemPlace { @Galley } - def @ParagraphItemPlace { @Galley } - def @InterruptItemPlace { @Galley } - def @NewPageItemPlace { @Galley } - def @TagPlace { @Galley } - def @EndListPlace { @Galley } - - def @RawList - named style right num { num } - named type right num { num } - named gap { @ListGap } - named indent { @ListIndent } - named itemindent { 0c } - named rightindent { @ListRightIndent } - named labelwidth { @ListLabelWidth } - named labelright { @ListLabelRight } - named labelrightgap { @ListLabelRightGap } - named start { 1 } - named font { @ListFont } - named break { @ListBreak } - named colnum { 1 } - named colgap { 1.0c } - named colheight { 5.0c } - { - def @MakeList right num - { - def @NormalItem - { - def @Align right x - { - labelright @Case { - { Yes yes } @Yield { labelwidth @Wide { |1rt @OneCol { x |labelrightgap } } } - else @Yield x - } - } - - |indent - labelwidth @Wide { - # @NumberMarker @Value {style num} {style num} &0io - # @NumberMarker @Value {num} {style type num} &0io - @NumberMarker @Value {type num} {@Align style type num} &0io - } - |itemindent break @Break font @Font @ItemPlace |rightindent - //gap @MakeList @NotRevealed @Next num - } - - def @ParagraphItem - { - @NumberMarker @Value {num} {style type num} &0io - |indent break @Break font @Font @ParagraphItemPlace |rightindent - //gap @MakeList @NotRevealed @Next num - } - - def @InterruptItem - { - @InterruptItemPlace - //gap @MakeList @NotRevealed num - } - - def @NewPageItem - { - @NewPageItemPlace - //1.1b @MakeList @NotRevealed num - } - - @OneOf - { - @NormalItem - @ParagraphItem - @InterruptItem - @NewPageItem - } - } - - def @ListGalleyPlace { @Galley } - - def @ListGalley into { @ListGalleyPlace&&preceding } - { - @MakeList start // @EndListPlace - } - - def @ColPieceTwo - { - colheight @High 500c @Wide @ListGalleyPlace ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed - } - - def @ColPieceThree - { - colheight @High 500c @Wide @ListGalleyPlace ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed - } - - def @ColPieceFour - { - colheight @High 500c @Wide @ListGalleyPlace ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed - } - - def @ColPieceFive - { - colheight @High 500c @Wide @ListGalleyPlace ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap - colheight @High 500c @Wide @ListGalleyPlace @NotRevealed - } - - colnum @Case - { - 1 @Yield @ListGalleyPlace - 2 @Yield @ColPieceTwo - 3 @Yield @ColPieceThree - 4 @Yield @ColPieceFour - 5 @Yield @ColPieceFive - else @Yield @ListGalleyPlace - } - // - @ListGalley - } - - def listitem into { @ItemPlace&&preceding } - named @Tag {} - right x - { - @NumberMarker&&preceding @Tagged @Tag - // x - // @PageMark @Tag # weird placement, but @PageMark is definite now - } - - def paragraphitem - named @Tag {} - named style right tag { @ParaIndent @Wide & tag. &2s } - right x - { - - def sendparagraphitem into { @ParagraphItemPlace&&preceding } - named tag { @Tag } - { - @NumberMarker&&preceding @Tagged @Tag - // { style @NumberMarker&&@Tag @Open { @Value } } @Insert x - // @PageMark @Tag - } - - sendparagraphitem - } - - def droplistitem into { @ItemPlace&&preceding } - named @Tag {} - right x - { - @NumberMarker&&preceding @Tagged @Tag - // @PageMark @Tag - //1vx x - } - - def tagitem into { @ItemPlace&&preceding } - named tag {} - right x - { - def sendtag into { @TagPlace&&preceding } { tag } - - sendtag // x - } - - def droptagitem into { @ItemPlace&&preceding } - named tag {} - right x - { - def sendtag into { @TagPlace&&preceding } { tag } - - sendtag // //1vxu x - } - - def endlist force into { @EndListPlace&&preceding } {} - - def listnewpage into { @NewPageItemPlace&&preceding } {} - - def listinterruptitem into { @InterruptItemPlace&&preceding } - right x - { - x - } - - - macro @LI @ListItem { // listitem } - macro @PI @ParagraphItem { // paragraphitem } - macro @LII @ListInterruptItem { // listinterruptitem } - macro @LNP @ListNewPage { // listnewpage } - macro @DLI @DropListItem { // droplistitem } - macro @TI @TagItem { // tagitem tag } - macro @DTI @DropTagItem { // droptagitem tag } - macro @REL @RawEndList { // & endlist // } - macro @EL @EndList { // & endlist @LOP } - - - macro @RLL @RawLeftList { @RawList style {} - labelwidth { 0c } } - macro @RIL @RawIndentedList { @RawList style {} } - macro @RQL @RawQuotedList { @RawList style {} - rightindent {@DisplayIndent}} - macro @RCL @RawCentredList { @RawList style {} - labelwidth {0c} - itemindent {0.5rt} } - macro @RawCenteredList { @RawCentredList } - macro @RNL @RawNumberedList { @RawList style { num. } } - macro @RPNL @RawParenNumberedList { @RawList style { (num) } } - macro @RRL @RawRomanList { @RawList type { @Roman&&num } - style { num. } } - macro @RPRL @RawParenRomanList { @RawList type { @Roman&&num } - style { (num) } } - macro @RUCRL @RawUCRomanList { @RawList type { @UCRoman&&num } - style { num. } } - macro @RPUCRL @RawParenUCRomanList { @RawList type { @UCRoman&&num } - style { (num) } } - macro @RAL @RawAlphaList { @RawList type { @Alpha&&num } - style { num. } } - macro @RPAL @RawParenAlphaList { @RawList type { @Alpha&&num } - style { (num) } } - macro @RUCAL @RawUCAlphaList { @RawList type { @UCAlpha&&num } - style { num. } } - macro @RPUCAL @RawParenUCAlphaList { @RawList type { @UCAlpha&&num } - style { (num) } } - macro @RBL @RawBulletList { @RawList style { @Bullet } } - macro @RSL @RawStarList { @RawList style { @Star } } - macro @RDL @RawDashList { @RawList style { -- } } - macro @RTL @RawTaggedList { @RawList type { @TagPlace } } - macro @RWTL @RawWideTaggedList { @RawList type { @TagPlace } - labelwidth { @WideIndent } } - macro @RVWTL @RawVeryWideTaggedList{ @RawList type { @TagPlace } - labelwidth { @VeryWideIndent } } - - - macro @L @List { @LOP @RawList } - macro @LL @LeftList { @LOP @RawLeftList } - macro @IL @IndentedList { @LOP @RawIndentedList } - macro @QL @QuotedList { @LOP @RawQuotedList } - macro @CL @CentredList { @LOP @RawCentredList } - macro @CenteredList { @LOP @RawCenteredList } - macro @NL @NumberedList { @LOP @RawNumberedList } - macro @PNL @ParenNumberedList { @LOP @RawParenNumberedList } - macro @RL @RomanList { @LOP @RawRomanList } - macro @PRL @ParenRomanList { @LOP @RawParenRomanList } - macro @UCRL @UCRomanList { @LOP @RawUCRomanList } - macro @PUCRL @ParenUCRomanList { @LOP @RawParenUCRomanList } - macro @AL @AlphaList { @LOP @RawAlphaList } - macro @PAL @ParenAlphaList { @LOP @RawParenAlphaList } - macro @UCAL @UCAlphaList { @LOP @RawUCAlphaList } - macro @PUCAL @ParenUCAlphaList { @LOP @RawParenUCAlphaList } - macro @BL @BulletList { @LOP @RawBulletList } - macro @SL @StarList { @LOP @RawStarList } - macro @DL @DashList { @LOP @RawDashList } - macro @TL @TaggedList { @LOP @RawTaggedList } - macro @WTL @WideTaggedList { @LOP @RawWideTaggedList } - macro @VWTL @VeryWideTaggedList { @LOP @RawVeryWideTaggedList } - -@End @BasicSetup diff --git a/include/include/bsf.lpg b/include/include/bsf.lpg deleted file mode 100644 index 94a3ba8..0000000 --- a/include/include/bsf.lpg +++ /dev/null @@ -1,147 +0,0 @@ -%%BeginResource: procset LoutBasicSetup -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% PostScript @SysPrependGraphic file for @BasicSetup % -% % -% This file has been placed in the public domain by its author, % -% Jeffrey H. Kingston % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% width height linethickness louteuro - -% draw a Euro symbol of this width and height with this line thickness -/louteuro { - 20 dict begin - /eurothick exch def - /euroheight exch def - /eurowidth exch def - /eurostrokewidth euroheight 0.8 mul def - /eurostep eurothick 60 cos mul 60 sin div def - /eurotheta 40 def - - % llx lly width thickness louteurobox - - % draw angled box starting at (llx, lly) with given width and thickness - /louteurobox - { - /euroboxthick exch def - /euroboxwidth exch def - newpath moveto euroboxwidth 0 rlineto - eurostep euroboxthick rlineto - euroboxwidth neg 0 rlineto closepath fill - } def - - % lower cross stroke - 0 euroheight 2 div eurothick 1.5 mul sub - eurostrokewidth eurothick louteurobox - - % upper cross stroke - 0 euroheight 2 div eurothick 0.5 mul add - eurostrokewidth eurostep 2 mul add eurothick louteurobox - - % circular part - /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def - /eurovctr euroheight 2 div def - newpath - eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc - eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn - closepath fill - end -} def - -% path for @FullWidthRule symbol -/LoutRule -{ 0 0 moveto xsize 0 lineto -} def - -% path for @Box symbol -/LoutBox -{ 0 0 moveto xsize 0 lineto - xsize ysize lineto 0 ysize lineto - closepath -} def - -% path for @CurveBox symbol -/LoutCurveBox -{ xmark 0 moveto - xsize xmark sub xmark xmark 270 360 arc - xsize xmark sub ysize xmark sub xmark 0 90 arc - xmark ysize xmark sub xmark 90 180 arc - xmark xmark xmark 180 270 arc - closepath -} def - -% path for @ShadowBox symbol -/LoutShadowBox -{ xmark 2 mul 0 moveto xsize 0 lineto - xsize ysize xmark 2 mul sub lineto - xsize xmark sub ysize xmark 2 mul sub lineto - xsize xmark sub xmark lineto - xmark 2 mul xmark lineto - closepath -} def - -% set up dictionary containing margin note data: parity LoutMargSet - -/LoutMargSet -{ /LoutMargDict 12 dict def - LoutMargDict begin - /parity exch def - /matr matrix currentmatrix def - /rightx xsize def - /lefty ysize def % highest allowable point for top of next left note - /righty ysize def % highest allowable point for top of next right note - /max { 2 copy gt { pop } { exch pop } ifelse } def - /min { 2 copy lt { pop } { exch pop } ifelse } def - end -} def - -%translate coordinate system for marginal notes: type LoutMargShift - -% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner -/LoutMargShift -{ LoutMargDict begin - - % y coordinate of top of note, in margin coords, before vertical adjust - 0 ysize transform matr itransform exch pop - - % decide whether left or right margin based on type and parity - exch [ 0 1 parity 1 parity sub ] exch get 0 eq - { - % left margin: adjust top of note downwards if overlaps previous note - lefty min - - % bottom of note is new lefty position and also translate position - ysize sub dup /lefty exch def - - % want right edge of note at coordinate zero - xsize neg exch - } - { - % right margin: adjust top of note downwards if overlaps previous note - righty min - - % bottom of note is new righty position and also translate position - ysize sub dup /righty exch def - - % want left edge of note at coordinate rightx - rightx exch - } ifelse - - % stack now contains coord of bottom left corner in margin coordinates - matr setmatrix translate - end -} def - -% create LoutPageDict with left, right, foot, top for @Place symbol users -/LoutPageSet -{ - /LoutPageDict 5 dict def - LoutPageDict begin - /matr matrix currentmatrix def - /left 0 def - /right xsize def - /foot 0 def - /top ysize def - end - -} def - -%%EndResource diff --git a/include/include/coltex b/include/include/coltex deleted file mode 100644 index 079b759..0000000 --- a/include/include/coltex +++ /dev/null @@ -1,434 +0,0 @@ - -########################################################################### -# # -# coltex # -# # -# Jeffrey H. Kingston # -# 30 October 2002 # -# # -# Include file providing @ColourCommand and @TextureCommand symbols. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -########################################################################### - -@SysInclude { lengths } # @PSLengths (needed for @TextureCommand) - - -########################################################################### -# # -# @ColourCommand # -# # -# Jeff Kingston # -# 19 October 2001 # -# Updated for compatibility with textures 28 October 2002. # -# # -# @ColourCommand converts a colour expressed in a manner that the # -# ordinary user can comprehend into the PostScript or PDF command # -# needed to obtain that colour, suitable for passing to @SetColour # -# or including in the left parameter of @Graphic. # -# # -# This symbol is needed in various places so I've taken the coward's # -# way out and @SysIncluded it at those places. # -# # -# Examples of behaviour for the PostScript back end: # -# # -# Parameter Result # -# ------------------------------------------------------------ # -# black "0.0 0.0 0.0 LoutSetRGBColor" # -# darkblue "0.0 0.0 0.5 LoutSetRGBColor" # -# white "1.0 1.0 1.0 LoutSetRGBColor" # -# none "" # -# nochange "" # -# "" "" # -# rgb <red> <blue> <green> "<red> <blue> <green> LoutSetRGBColor" # -# cmyk <c> <m> <y> <k> "<c> <m> <y> <k> LoutSetCMYKColor" # -# ------------------------------------------------------------ # -# # -# See the Expert's Guide for the use of LoutSetRGBColor and # -# LoutSetCMYKColor rather than setrgbcolor and setcmykcolor. # -# # -# @ColourCommand also does the right thing for the PDF back end; # -# its result is always empty for the PlainText back end. # -# # -########################################################################### - -def @ColourCommand right @Body -{ - def @RGB right coords - { - @BackEnd @Case { - PostScript @Yield { coords "LoutSetRGBColor" } - PDF @Yield { coords "rg" coords "RG" } - PlainText @Yield "" - } - } - - def @CMYK right coords - { - @BackEnd @Case { - PostScript @Yield { coords "LoutSetCMYKColor" } - PDF @Yield { coords "k" coords "K" } - PlainText @Yield "" - } - } - - def @RGBElse right alt - { - { "rgb" @Common @Body } @Case { - "rgb" @Yield @RGB { "rgb" @Rump @Body } - else @Yield alt - } - } - - def @CMYKElse right alt - { - { "cmyk" @Common @Body } @Case { - "cmyk" @Yield @CMYK { "cmyk" @Rump @Body } - else @Yield alt - } - } - - def @NoChangeElse right alt - { - @Body @Case { - { "nochange" "none" "" } @Yield "" - else @Yield alt - } - } - - def @RGBCoords - { - @Body @Case { - black @Yield { 0.0 0.0 0.0 } - darkblue @Yield { 0.0 0.0 0.5 } - blue @Yield { 0.0 0.0 1.0 } - lightblue @Yield { 0.5 0.5 1.0 } - darkgreen @Yield { 0.0 0.5 0.0 } - green @Yield { 0.0 1.0 0.0 } - lightgreen @Yield { 0.5 1.0 0.5 } - darkred @Yield { 0.5 0.0 0.0 } - red @Yield { 1.0 0.0 0.0 } - lightred @Yield { 1.0 0.5 0.5 } - darkcyan @Yield { 0.0 0.5 0.5 } - cyan @Yield { 0.0 1.0 1.0 } - lightcyan @Yield { 0.5 1.0 1.0 } - darkmagenta @Yield { 0.5 0.0 0.5 } - magenta @Yield { 1.0 0.0 1.0 } - lightmagenta @Yield { 1.0 0.5 1.0 } - darkyellow @Yield { 0.5 0.5 0.0 } - yellow @Yield { 1.0 1.0 0.0 } - lightyellow @Yield { 1.0 1.0 0.5 } - darkgray @Yield { 0.2 0.2 0.2 } - gray @Yield { 0.5 0.5 0.5 } - lightgray @Yield { 0.8 0.8 0.8 } - darkgrey @Yield { 0.2 0.2 0.2 } - grey @Yield { 0.5 0.5 0.5 } - lightgrey @Yield { 0.8 0.8 0.8 } - white @Yield { 1.0 1.0 1.0 } - } - } - - @RGBElse @CMYKElse @NoChangeElse @RGB @RGBCoords -} - - -########################################################################### -# # -# @TextureCommand # -# # -# @TextureCommand converts a texture expressed in a manner that the # -# ordinary user can comprehend into the PostScript texture dictionary # -# needed to obtain that texture, suitable for passing to @SetTexture # -# or including in the left parameter of @Graphic. # -# # -########################################################################### - -def @TextureCommand - left type - named scale { 1 } - named hscale { 1 } - named vscale { 1 } - import @PSLengths named angle { 0d } - import @PSLengths named hshift { 0i } - import @PSLengths named vshift { 0i } - import @PSLengths named width { "dft" } - import @PSLengths named height { "dft" } - import @PSLengths named gap { "dft" } - import @PSLengths named radius { "dft" } - import @PSLengths named linewidth { "dft" } - named font { "dft" } - import @PSLengths named size { "dft" } - named value { "dft" } -{ - def @Dft left x right y - { - y @Case { - "dft" @Yield x - else @Yield y - } - } - - def @SolidTexture - { - "null LoutSetTexture" - } - - def @StripedTexture - { - def @Width { "1 pt" @Dft width } - def @Gap { "1 pt" @Dft gap } - - scale hscale vscale angle hshift vshift - "2" - "[ 0 0" @Width @Gap "add dup ]" - @Width @Gap "add dup" - "{" - "pop 0 0 moveto" - @Width @Gap "add 0 lineto" - "0" @Width "rlineto" - "0" @Width "lineto" - "closepath fill" - "}" - "LoutMakeTexture LoutSetTexture" - } - - def @GridTexture - { - def @Width { "1 pt" @Dft width } - def @Gap { "1 pt" @Dft gap } - - scale hscale vscale angle hshift vshift - "2" - "[ 0 0" @Width @Gap "add dup ]" - @Width @Gap "add dup" - "{" - "pop 0 0 moveto" - @Width @Gap "add 0 lineto" - "0" @Width "rlineto" - @Gap "neg 0 rlineto" - "0" @Gap "rlineto" - @Width "neg 0 rlineto" - "closepath fill" - "}" - "LoutMakeTexture LoutSetTexture" - } - - def @DottedTexture - { - def @Radius { "0.5 pt" @Dft radius } - def @Gap { "2 pt" @Dft gap } - - scale hscale vscale angle hshift vshift - "2" - "[ 0 0" @Gap "dup ]" - @Gap "dup" - "{" - "pop" @Gap "2 div dup" @Radius "0 360 arc fill" - "}" - "LoutMakeTexture LoutSetTexture" - } - - def @ChessboardTexture - { - def @Width { "2 pt" @Dft width } - - scale hscale vscale angle hshift vshift - "2" - "[ 0 0" @Width "2 mul dup ]" - @Width "2 mul dup" - "{" - "pop 0 0 moveto" - @Width "0 rlineto" - "0" @Width "rlineto" - @Width "neg 0 rlineto" - closepath - @Width @Width "moveto" - @Width "0 rlineto" - "0" @Width "rlineto" - @Width "neg 0 rlineto" - "closepath fill" - "}" - "LoutMakeTexture LoutSetTexture" - } - - def @BrickworkTexture - { - def @Width { "6 pt" @Dft width } - def @Height { "2 pt" @Dft height } - def @Linewidth { "0.5 pt" @Dft linewidth } - - scale hscale vscale angle hshift vshift - "2" - "[ 0 0" @Width @Height "2 mul ]" - @Width @Height "2 mul" - "{" - "pop 0 0 moveto" @Width "0 rlineto" - "0" @Height "moveto" @Width "0 rlineto" - "0" @Height "2 mul moveto" @Width "0 rlineto" - "0 0 moveto 0" @Height "rlineto" - @Width "0 moveto 0" @Height "rlineto" - @Width "2 div" @Height "moveto 0" @Height "rlineto" - "[] 0 setdash" @Linewidth "setlinewidth stroke" - "}" - "LoutMakeTexture LoutSetTexture" - } - - def @HoneycombTexture - { - def @R { "2.0 pt" @Dft radius } - def @Linewidth { "0.5 pt" @Dft linewidth } - - def @X { @R "0.5 mul" } - def @Y { @R "0.886 mul" } - def @NegX { @X "neg" } - def @NegY { @Y "neg" } - def @NegR { @R "neg" } - def @BoxWidth { @R @X "add 2 mul" } - def @BoxHeight { @Y "2 mul" } - - scale hscale vscale angle hshift vshift - "2" - "[ 0 0" @BoxWidth @BoxHeight "]" - @BoxWidth @BoxHeight - "{" - "pop" - @X "0 moveto" - @R "0 rlineto" - @X @Y "rlineto" - @R "0 rlineto" - @NegR "0 rlineto" - @NegX @Y "rlineto" - @NegR "0 rlineto" - @NegX @NegY "rlineto" - "closepath" - "[] 0 setdash" @Linewidth "setlinewidth stroke" - "}" - "LoutMakeTexture LoutSetTexture" - } - - def @TriangularTexture - { - def @R { "4.0 pt" @Dft radius } - def @Linewidth { "0.5 pt" @Dft linewidth } - - def @X { @R "0.5 mul" } - def @Y { @R "0.886 mul" } - def @BoxWidth { @R } - def @BoxHeight { @Y "2 mul" } - - scale hscale vscale angle hshift vshift - "2" - "[ 0 0" @BoxWidth @BoxHeight "]" - @BoxWidth @BoxHeight - "{" - "pop" - "0 0 moveto" - @R "0 lineto" - "0" @Y "2 mul lineto" - @R "0 rlineto" - "closepath" - "0" @Y "moveto" - @R "0 rlineto" - "[] 0 setdash" @Linewidth "setlinewidth stroke" - "}" - "LoutMakeTexture LoutSetTexture" - } - - def @StringTexture - { - def @Width { "12 pt" @Dft width } - def @Height { "12 pt" @Dft height } - def @Font { "Times-Roman" @Dft font } - def @Size { "10 pt" @Dft size } - def @Value { "*" @Dft value } - - scale hscale vscale angle hshift vshift - "2" - "[ 0 0" @Width @Height "]" - @Width @Height - "{" - "pop /"@Font "findfont" @Size "scalefont setfont" - "("@Value") dup false 0 0 moveto charpath flattenpath" - "pathbbox pop pop neg exch neg exch moveto show" - - "}" - "LoutMakeTexture LoutSetTexture" - } - - type @Case - { - "solid" @Yield @SolidTexture - "striped" @Yield @StripedTexture - "grid" @Yield @GridTexture - "dotted" @Yield @DottedTexture - "chessboard" @Yield @ChessboardTexture - "brickwork" @Yield @BrickworkTexture - "honeycomb" @Yield @HoneycombTexture - "triangular" @Yield @TriangularTexture - "string" @Yield @StringTexture - else @Yield type - } -} - -########################################################################### -# # -# @TextureImport # -# # -# Used as an import for texture options. # -# # -# We cleverly replace @Texture by nothing inside those options, # -# and replace the known types by themselves plus @TextureCommand. # -# This allows the user to type # -# # -# texture { striped } # -# texture { striped @Texture } # -# texture { striped angle { 45d } } # -# texture { striped @Texture angle { 45d } } # -# # -# and it all winds up being a call to @TextureCommand. # -# # -########################################################################### - -export - - solid - striped - grid - dotted - chessboard - brickwork - honeycomb - triangular - string - @Texture - -def @TextureImport -{ - macro solid { "solid" @TextureCommand } - macro striped { "striped" @TextureCommand } - macro grid { "grid" @TextureCommand } - macro dotted { "dotted" @TextureCommand } - macro chessboard { "chessboard" @TextureCommand } - macro brickwork { "brickwork" @TextureCommand } - macro honeycomb { "honeycomb" @TextureCommand } - macro triangular { "triangular" @TextureCommand } - macro string { "string" @TextureCommand } - - macro @Texture { } -} diff --git a/include/include/cprint b/include/include/cprint deleted file mode 100644 index 95eb57f..0000000 --- a/include/include/cprint +++ /dev/null @@ -1,118 +0,0 @@ -############################################################################### -# # -# Lout setup file for C and C++ program printing # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 10 April 2000 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { cprintf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @CPSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # blanknumbered { Yes } # No, NoPrint, or Yes - # style { fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # varying mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/cprintf b/include/include/cprintf deleted file mode 100644 index 4c2b77e..0000000 --- a/include/include/cprintf +++ /dev/null @@ -1,446 +0,0 @@ - -############################################################################### -# # -# Lout @CPSetup package for formatting C and C++ programs # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 10 April 2000 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @CP -def @CPSetup - named pipe { } # pipe through this - named numbered { No } # numbered lines? - named blanknumbered { Yes } # blanks numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD - @A "$>" - - def @CP - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lC" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lC" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - def @PS # for formatting strings - right x - { - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @CP - -@End @CPSetup diff --git a/include/include/diag b/include/include/diag deleted file mode 100644 index fd0fe4a..0000000 --- a/include/include/diag +++ /dev/null @@ -1,669 +0,0 @@ -############################################################################### -# # -# Lout setup file for diagram printing # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { diagf } line # -# # -# This line causes Lout to read the definitions for diagrams, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { diagf } - - -############################################################################### -# # -# The @DiagSetup @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @DiagSetup - # save { no } - # maxlabels { 200 } - # title { (none) } - # titleformat { Slope @Font @Title //0.7f ||0.35f @Body } - - ############################################################################# - # # - # Node options # - # # - ############################################################################# - - # outline { box } - # margin { 0.6f } - # shadow { 0.4f } - # sides { 3 } - # angle { "dup 180 exch div" } # 180d / sides - # translate { } - # outlinestyle { solid } - # outlinedashlength { 0.2f } - # outlinewidth { thin } - # outlinecolour { nochange } - # paint { none } - # texture { solid } - # font { } - # break { } - # format { @Body } - # valign { ctr } - # vsize { } - # vindent { ctr } - # vstrut { no } - # vmargin { } - # topmargin { } - # footmargin { } - # halign { ctr } - # hsize { } - # hindent { ctr } - # hstrut { no } - # hmargin { } - # leftmargin { } - # rightmargin { } - # nodelabel { } - # nodelabelmargin { 0.2f } - # nodelabelfont { "-2p" } - # nodelabelbreak { ragged nohyphen } - # nodelabelformat { @Body } - # nodelabelpos { } - # nodelabelangle { horizontal } - # nodelabelprox { outside } - # nodelabelctr { no } - # nodelabeladjust { 0 0 } - # alabel { } - # alabelmargin { } - # alabelfont { } - # alabelbreak { } - # alabelformat { } - # alabelpos { NE } - # alabelangle { } - # alabelprox { } - # alabelctr { } - # alabeladjust { } - # blabel { } - # blabelmargin { } - # blabelfont { } - # blabelbreak { } - # blabelformat { } - # blabelpos { NW } - # blabelangle { } - # blabelprox { } - # blabelctr { } - # blabeladjust { } - # clabel { } - # clabelmargin { } - # clabelfont { } - # clabelbreak { } - # clabelformat { } - # clabelpos { SW } - # clabelangle { } - # clabelprox { } - # clabelctr { } - # clabeladjust { } - # dlabel { } - # dlabelmargin { } - # dlabelfont { } - # dlabelbreak { } - # dlabelformat { } - # dlabelpos { SE } - # dlabelangle { } - # dlabelprox { } - # dlabelctr { } - # dlabeladjust { } - - ############################################################################# - # # - # @ANode options # - # # - ############################################################################# - - # aoutline { box } - # amargin { 0.6f } - # ashadow { 0.4f } - # asides { 3 } - # aangle { "dup 180 exch div" } # 180d / sides - # atranslate { } - # aoutlinestyle { solid } - # aoutlinedashlength { 0.2f } - # aoutlinewidth { thin } - # aoutlinecolour { nochange } - # apaint { none } - # atexture { solid } - # afont { } - # abreak { } - # aformat { @Body } - # avalign { ctr } - # avsize { } - # avindent { ctr } - # avstrut { no } - # avmargin { } - # atopmargin { } - # afootmargin { } - # ahalign { ctr } - # ahsize { } - # ahindent { ctr } - # ahstrut { no } - # ahmargin { } - # aleftmargin { } - # arightmargin { } - # anodelabel { } - # anodelabelmargin { 0.2f } - # anodelabelfont { "-2p" } - # anodelabelbreak { ragged nohyphen } - # anodelabelformat { @Body } - # anodelabelpos { } - # anodelabelangle { horizontal } - # anodelabelprox { outside } - # anodelabelctr { no } - # anodelabeladjust { 0 0 } - # aalabel { } - # aalabelmargin { } - # aalabelfont { } - # aalabelbreak { } - # aalabelformat { } - # aalabelpos { NE } - # aalabelangle { } - # aalabelprox { } - # aalabelctr { } - # aalabeladjust { } - # ablabel { } - # ablabelmargin { } - # ablabelfont { } - # ablabelbreak { } - # ablabelformat { } - # ablabelpos { NW } - # ablabelangle { } - # ablabelprox { } - # ablabelctr { } - # ablabeladjust { } - # aclabel { } - # aclabelmargin { } - # aclabelfont { } - # aclabelbreak { } - # aclabelformat { } - # aclabelpos { SW } - # aclabelangle { } - # aclabelprox { } - # aclabelctr { } - # aclabeladjust { } - # adlabel { } - # adlabelmargin { } - # adlabelfont { } - # adlabelbreak { } - # adlabelformat { } - # adlabelpos { SE } - # adlabelangle { } - # adlabelprox { } - # adlabelctr { } - # adlabeladjust { } - - ############################################################################# - # # - # @BNode options # - # # - ############################################################################# - - # boutline { box } - # bmargin { 0.6f } - # bshadow { 0.4f } - # bsides { 3 } - # bangle { "dup 180 exch div" } # 180d / sides - # btranslate { } - # boutlinestyle { solid } - # boutlinedashlength { 0.2f } - # boutlinewidth { thin } - # boutlinecolour { nochange } - # bpaint { none } - # btexture { solid } - # bfont { } - # bbreak { } - # bformat { @Body } - # bvalign { ctr } - # bvsize { } - # bvindent { ctr } - # bvstrut { no } - # bvmargin { } - # btopmargin { } - # bfootmargin { } - # bhalign { ctr } - # bhsize { } - # bhindent { ctr } - # bhstrut { no } - # bhmargin { } - # bleftmargin { } - # brightmargin { } - # bnodelabel { } - # bnodelabelmargin { 0.2f } - # bnodelabelfont { "-2p" } - # bnodelabelbreak { ragged nohyphen } - # bnodelabelformat { @Body } - # bnodelabelpos { } - # bnodelabelangle { horizontal } - # bnodelabelprox { outside } - # bnodelabelctr { no } - # bnodelabeladjust { 0 0 } - # balabel { } - # balabelmargin { } - # balabelfont { } - # balabelbreak { } - # balabelformat { } - # balabelpos { NE } - # balabelangle { } - # balabelprox { } - # balabelctr { } - # balabeladjust { } - # bblabel { } - # bblabelmargin { } - # bblabelfont { } - # bblabelbreak { } - # bblabelformat { } - # bblabelpos { NW } - # bblabelangle { } - # bblabelprox { } - # bblabelctr { } - # bblabeladjust { } - # bclabel { } - # bclabelmargin { } - # bclabelfont { } - # bclabelbreak { } - # bclabelformat { } - # bclabelpos { SW } - # bclabelangle { } - # bclabelprox { } - # bclabelctr { } - # bclabeladjust { } - # bdlabel { } - # bdlabelmargin { } - # bdlabelfont { } - # bdlabelbreak { } - # bdlabelformat { } - # bdlabelpos { SE } - # bdlabelangle { } - # bdlabelprox { } - # bdlabelctr { } - # bdlabeladjust { } - - ############################################################################# - # # - # @CNode options # - # # - ############################################################################# - - # coutline { box } - # cmargin { 0.6f } - # cshadow { 0.4f } - # csides { 3 } - # cangle { "dup 180 exch div" } # 180d / sides - # ctranslate { } - # coutlinestyle { solid } - # coutlinedashlength { 0.2f } - # coutlinewidth { thin } - # coutlinecolour { nochange } - # cpaint { none } - # ctexture { solid } - # cfont { } - # cbreak { } - # cformat { @Body } - # cvalign { ctr } - # cvsize { } - # cvindent { ctr } - # cvstrut { no } - # cvmargin { } - # ctopmargin { } - # cfootmargin { } - # chalign { ctr } - # chsize { } - # chindent { ctr } - # chstrut { no } - # chmargin { } - # cleftmargin { } - # crightmargin { } - # cnodelabel { } - # cnodelabelmargin { 0.2f } - # cnodelabelfont { "-2p" } - # cnodelabelbreak { ragged nohyphen } - # cnodelabelformat { @Body } - # cnodelabelpos { } - # cnodelabelangle { horizontal } - # cnodelabelprox { outside } - # cnodelabelctr { no } - # cnodelabeladjust { 0 0 } - # calabel { } - # calabelmargin { } - # calabelfont { } - # calabelbreak { } - # calabelformat { } - # calabelpos { NE } - # calabelangle { } - # calabelprox { } - # calabelctr { } - # calabeladjust { } - # cblabel { } - # cblabelmargin { } - # cblabelfont { } - # cblabelbreak { } - # cblabelformat { } - # cblabelpos { NW } - # cblabelangle { } - # cblabelprox { } - # cblabelctr { } - # cblabeladjust { } - # cclabel { } - # cclabelmargin { } - # cclabelfont { } - # cclabelbreak { } - # cclabelformat { } - # cclabelpos { SW } - # cclabelangle { } - # cclabelprox { } - # cclabelctr { } - # cclabeladjust { } - # cdlabel { } - # cdlabelmargin { } - # cdlabelfont { } - # cdlabelbreak { } - # cdlabelformat { } - # cdlabelpos { SE } - # cdlabelangle { } - # cdlabelprox { } - # cdlabelctr { } - # cdlabeladjust { } - - ############################################################################# - # # - # @DNode options # - # # - ############################################################################# - - # doutline { box } - # dmargin { 0.6f } - # dshadow { 0.4f } - # dsides { 3 } - # dangle { "dup 180 exch div" } # 180d / sides - # dtranslate { } - # doutlinestyle { solid } - # doutlinedashlength { 0.2f } - # doutlinewidth { thin } - # doutlinecolour { nochange } - # dpaint { none } - # dtexture { solid } - # dfont { } - # dbreak { } - # dformat { @Body } - # dvalign { ctr } - # dvsize { } - # dvindent { ctr } - # dvstrut { no } - # dvmargin { } - # dtopmargin { } - # dfootmargin { } - # dhalign { ctr } - # dhsize { } - # dhindent { ctr } - # dhstrut { no } - # dhmargin { } - # dleftmargin { } - # drightmargin { } - # dnodelabel { } - # dnodelabelmargin { 0.2f } - # dnodelabelfont { "-2p" } - # dnodelabelbreak { ragged nohyphen } - # dnodelabelformat { @Body } - # dnodelabelpos { } - # dnodelabelangle { horizontal } - # dnodelabelprox { outside } - # dnodelabelctr { no } - # dnodelabeladjust { 0 0 } - # dalabel { } - # dalabelmargin { } - # dalabelfont { } - # dalabelbreak { } - # dalabelformat { } - # dalabelpos { NE } - # dalabelangle { } - # dalabelprox { } - # dalabelctr { } - # dalabeladjust { } - # dblabel { } - # dblabelmargin { } - # dblabelfont { } - # dblabelbreak { } - # dblabelformat { } - # dblabelpos { NW } - # dblabelangle { } - # dblabelprox { } - # dblabelctr { } - # dblabeladjust { } - # dclabel { } - # dclabelmargin { } - # dclabelfont { } - # dclabelbreak { } - # dclabelformat { } - # dclabelpos { SW } - # dclabelangle { } - # dclabelprox { } - # dclabelctr { } - # dclabeladjust { } - # ddlabel { } - # ddlabelmargin { } - # ddlabelfont { } - # ddlabelbreak { } - # ddlabelformat { } - # ddlabelpos { SE } - # ddlabelangle { } - # ddlabelprox { } - # ddlabelctr { } - # ddlabeladjust { } - - ############################################################################# - # # - # @ENode options # - # # - ############################################################################# - - # eoutline { box } - # emargin { 0.6f } - # eshadow { 0.4f } - # esides { 3 } - # eangle { "dup 180 exch div" } # 180d / sides - # etranslate { } - # eoutlinestyle { solid } - # eoutlinedashlength { 0.2f } - # eoutlinewidth { thin } - # eoutlinecolour { nochange } - # epaint { none } - # etexture { solid } - # efont { } - # ebreak { } - # eformat { @Body } - # evalign { ctr } - # evsize { } - # evindent { ctr } - # evstrut { no } - # evmargin { } - # etopmargin { } - # efootmargin { } - # ehalign { ctr } - # ehsize { } - # ehindent { ctr } - # ehstrut { no } - # ehmargin { } - # eleftmargin { } - # erightmargin { } - # enodelabel { } - # enodelabelmargin { 0.2f } - # enodelabelfont { "-2p" } - # enodelabelbreak { ragged nohyphen } - # enodelabelformat { @Body } - # enodelabelpos { } - # enodelabelangle { horizontal } - # enodelabelprox { outside } - # enodelabelctr { no } - # enodelabeladjust { 0 0 } - # ealabel { } - # ealabelmargin { } - # ealabelfont { } - # ealabelbreak { } - # ealabelformat { } - # ealabelpos { NE } - # ealabelangle { } - # ealabelprox { } - # ealabelctr { } - # ealabeladjust { } - # eblabel { } - # eblabelmargin { } - # eblabelfont { } - # eblabelbreak { } - # eblabelformat { } - # eblabelpos { NW } - # eblabelangle { } - # eblabelprox { } - # eblabelctr { } - # eblabeladjust { } - # eclabel { } - # eclabelmargin { } - # eclabelfont { } - # eclabelbreak { } - # eclabelformat { } - # eclabelpos { SW } - # eclabelangle { } - # eclabelprox { } - # eclabelctr { } - # eclabeladjust { } - # edlabel { } - # edlabelmargin { } - # edlabelfont { } - # edlabelbreak { } - # edlabelformat { } - # edlabelpos { SE } - # edlabelangle { } - # edlabelprox { } - # edlabelctr { } - # edlabeladjust { } - - ############################################################################# - # # - # Link options # - # # - ############################################################################# - - # path { line } - # from { 0, 0 } - # to { 1, 1 } - # bias { 2.0f } - # fbias { 2.0f } - # tbias { 2.0f } - # hfrac { 0.5 } - # hbias { 0.0f } - # radius { 1.0f } - # xindent { 0.8f } - # zindent { 0.8f } - # frompt { 0 0 } - # topt { 0 0 } - # pathstyle { solid } - # pathdashlength { 0.2f } - # pathwidth { thin } - # pathcolour { nochange } - # pathgap { thin } - # arrow { no } - # arrowstyle { solid } - # arrowwidth { 0.3f } - # arrowlength { 0.5f } - # backarrowstyle { solid } - # backarrowwidth { 0.3f } - # backarrowlength { 0.5f } - # linklabel { } - # linklabelmargin { 0.2f } - # linklabelfont { "-2p" } - # linklabelbreak { ragged nohyphen } - # linklabelformat { @Body } - # linklabelpos { } - # linklabelangle { horizontal } - # linklabelprox { above } - # linklabelctr { no } - # linklabeladjust { 0 0 } - # xlabel { } - # xlabelmargin { } - # xlabelfont { } - # xlabelbreak { } - # xlabelformat { } - # xlabelpos { LFROM } - # xlabelangle { } - # xlabelprox { } - # xlabelctr { } - # xlabeladjust { } - # ylabel { } - # ylabelmargin { } - # ylabelfont { } - # ylabelbreak { } - # ylabelformat { } - # ylabelpos { LMID } - # ylabelangle { } - # ylabelprox { } - # ylabelctr { yes } - # ylabeladjust { } - # zlabel { } - # zlabelmargin { } - # zlabelfont { } - # zlabelbreak { } - # zlabelformat { } - # zlabelpos { LTO } - # zlabelangle { } - # zlabelprox { } - # zlabelctr { } - # zlabeladjust { } - # fromlabel { } - # fromlabelmargin { 0f } - # fromlabelfont { "-2p" } - # fromlabelbreak { ragged nohyphen } - # fromlabelformat { @Body } - # fromlabelpos { FROM } - # fromlabelangle { antiparallel } - # fromlabelprox { W } - # fromlabelctr { no } - # fromlabeladjust { 0 0 } - # tolabel { } - # tolabelmargin { 0f } - # tolabelfont { "-2p" } - # tolabelbreak { ragged nohyphen } - # tolabelformat { @Body } - # tolabelpos { TO } - # tolabelangle { parallel } - # tolabelprox { W } - # tolabelctr { no } - # tolabeladjust { 0 0 } - - ############################################################################# - # # - # Tree options # - # # - ############################################################################# - - # treehsep { 0.5f } - # treevsep { 0.5f } - # treehindent { ctr } - # treevindent { ctr } - - ############################################################################# - # # - # Syntax diagram options # - # # - ############################################################################# - - # syntaxgap { 0.35f } - # syntaxbias { 1.0f } - # syntaxradius { 0.3f } - -} diff --git a/include/include/diagf b/include/include/diagf deleted file mode 100644 index f58b37d..0000000 --- a/include/include/diagf +++ /dev/null @@ -1,8217 +0,0 @@ - -############################################################################### -# # -# Lout @Diag package for drawing diagrams # -# Version 1.1 (February 2000) # -# Jeffrey H. Kingston # -# # -# Version 1.0 (July 1996) # -# Based on Version 2.0 of the @Fig package (Jeffrey H. Kingston, Dec 1992). # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -@SysInclude { diagf.etc } # @Geometry -@SysInclude { coltex } # @ColourCommand and @TextureCommand -@SysPrependGraphic { diagf.lpg } - - -############################################################################### -# # -# @DiagSetup symbol # -# # -############################################################################### - -export @Diag @SyntaxDiag -def @DiagSetup - named save { no } - named maxlabels { 200 } - named title { "--titledft--" } - named titleformat - left @Title - right @Body - { Slope @Font @Title //0.7f ||0.35f @Body } - - ########################################################################### - # # - # @Node options of @DiagSetup # - # # - ########################################################################### - - import @Geometry named outline - named margin {} - named shadow {} - named sides {} - named angle {} - { box } - named margin { 0.6f } - import @Geometry named shadow { 0.4f } - import @Geometry named sides { 3 } - import @Geometry named angle { "dup 180 exch div" } - named translate { } - named outlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { solid } - import @Geometry named outlinedashlength { 0.2f } - import @Geometry named outlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { thin } - named outlinecolour outlinecolor { nochange } - named paint { none } - import @TextureImport named texture { solid } - named font { } - named break { } - named format right @Body { @Body } - - named valign { ctr } - named vsize { } - named vindent { ctr } - named vstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named vmargin { } - named topmargin { } - named footmargin { } - - named halign { ctr } - named hsize { } - named hindent { ctr } - named hstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named hmargin { } - named leftmargin { } - named rightmargin { } - - named nodelabel { } - named nodelabelmargin { 0.2f } - named nodelabelfont { -2p } - named nodelabelbreak { ragged nohyphen } - named nodelabelformat right @Body { @Body } - import @Geometry named nodelabelpos { } - import @Geometry named nodelabelangle { horizontal } - named nodelabelprox { outside } - named nodelabelctr { no } - import @Geometry named nodelabeladjust { 0 0 } - - named alabel { } - named alabelmargin { } - named alabelfont { } - named alabelbreak { } - named alabelformat right @Body { } - import @Geometry named alabelpos { NE } - import @Geometry named alabelangle { } - named alabelprox { } - named alabelctr { } - import @Geometry named alabeladjust { } - - named blabel { } - named blabelmargin { } - named blabelfont { } - named blabelbreak { } - named blabelformat right @Body { } - import @Geometry named blabelpos { NW } - import @Geometry named blabelangle { } - named blabelprox { } - named blabelctr { } - import @Geometry named blabeladjust { } - - named clabel { } - named clabelmargin { } - named clabelfont { } - named clabelbreak { } - named clabelformat right @Body { } - import @Geometry named clabelpos { SW } - import @Geometry named clabelangle { } - named clabelprox { } - named clabelctr { } - import @Geometry named clabeladjust { } - - named dlabel { } - named dlabelmargin { } - named dlabelfont { } - named dlabelbreak { } - named dlabelformat right @Body { } - import @Geometry named dlabelpos { SE } - import @Geometry named dlabelangle { } - named dlabelprox { } - named dlabelctr { } - import @Geometry named dlabeladjust { } - - ########################################################################### - # # - # @ANode options of @DiagSetup # - # # - ########################################################################### - - import @Geometry named aoutline - named margin {} - named shadow {} - named sides {} - named angle {} - { box } - named amargin { 0.6f } - import @Geometry named ashadow { 0.4f } - import @Geometry named asides { 3 } - import @Geometry named aangle { "dup 180 exch div" } - named atranslate { } - named aoutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { solid } - import @Geometry named aoutlinedashlength { 0.2f } - import @Geometry named aoutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { thin } - named aoutlinecolour aoutlinecolor { nochange } - named apaint { none } - import @TextureImport named atexture{ solid } - named afont { } - named abreak { } - named aformat right @Body { @Body } - - named avalign { ctr } - named avsize { } - named avindent { ctr } - named avstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named avmargin { } - named atopmargin { } - named afootmargin { } - - named ahalign { ctr } - named ahsize { } - named ahindent { ctr } - named ahstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named ahmargin { } - named aleftmargin { } - named arightmargin { } - - named anodelabel { } - named anodelabelmargin { 0.2f } - named anodelabelfont { -2p } - named anodelabelbreak { ragged nohyphen } - named anodelabelformat right @Body { @Body } - import @Geometry named anodelabelpos{ } - import @Geometry named anodelabelangle { horizontal } - named anodelabelprox { outside } - named anodelabelctr { no } - import @Geometry named anodelabeladjust { 0 0 } - - named aalabel { } - named aalabelmargin { } - named aalabelfont { } - named aalabelbreak { } - named aalabelformat right @Body { } - import @Geometry named aalabelpos { NE } - import @Geometry named aalabelangle { } - named aalabelprox { } - named aalabelctr { } - import @Geometry named aalabeladjust{ } - - named ablabel { } - named ablabelmargin { } - named ablabelfont { } - named ablabelbreak { } - named ablabelformat right @Body { } - import @Geometry named ablabelpos { NW } - import @Geometry named ablabelangle { } - named ablabelprox { } - named ablabelctr { } - import @Geometry named ablabeladjust{ } - - named aclabel { } - named aclabelmargin { } - named aclabelfont { } - named aclabelbreak { } - named aclabelformat right @Body { } - import @Geometry named aclabelpos { SW } - import @Geometry named aclabelangle { } - named aclabelprox { } - named aclabelctr { } - import @Geometry named aclabeladjust{ } - - named adlabel { } - named adlabelmargin { } - named adlabelfont { } - named adlabelbreak { } - named adlabelformat right @Body { } - import @Geometry named adlabelpos { SE } - import @Geometry named adlabelangle { } - named adlabelprox { } - named adlabelctr { } - import @Geometry named adlabeladjust{ } - - ########################################################################### - # # - # @BNode options of @DiagSetup # - # # - ########################################################################### - - import @Geometry named boutline - named margin {} - named shadow {} - named sides {} - named angle {} - { box } - named bmargin { 0.6f } - import @Geometry named bshadow { 0.4f } - import @Geometry named bsides { 3 } - import @Geometry named bangle { "dup 180 exch div" } - named btranslate { } - named boutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { solid } - import @Geometry named boutlinedashlength { 0.2f } - import @Geometry named boutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { thin } - named boutlinecolour boutlinecolor { nochange } - named bpaint { none } - import @TextureImport named btexture{ solid } - named bfont { } - named bbreak { } - named bformat right @Body { @Body } - - named bvalign { ctr } - named bvsize { } - named bvindent { ctr } - named bvstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named bvmargin { } - named btopmargin { } - named bfootmargin { } - - named bhalign { ctr } - named bhsize { } - named bhindent { ctr } - named bhstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named bhmargin { } - named bleftmargin { } - named brightmargin { } - - named bnodelabel { } - named bnodelabelmargin { 0.2f } - named bnodelabelfont { -2p } - named bnodelabelbreak { ragged nohyphen } - named bnodelabelformat right @Body { @Body } - import @Geometry named bnodelabelpos{ } - import @Geometry named bnodelabelangle { horizontal } - named bnodelabelprox { outside } - named bnodelabelctr { no } - import @Geometry named bnodelabeladjust { 0 0 } - - named balabel { } - named balabelmargin { } - named balabelfont { } - named balabelbreak { } - named balabelformat right @Body { } - import @Geometry named balabelpos { NE } - named balabelprox { } - import @Geometry named balabelangle { } - named balabelctr { } - import @Geometry named balabeladjust{ } - - named bblabel { } - named bblabelmargin { } - named bblabelfont { } - named bblabelbreak { } - named bblabelformat right @Body { } - import @Geometry named bblabelpos { NW } - named bblabelprox { } - import @Geometry named bblabelangle { } - named bblabelctr { } - import @Geometry named bblabeladjust{ } - - named bclabel { } - named bclabelmargin { } - named bclabelfont { } - named bclabelbreak { } - named bclabelformat right @Body { } - import @Geometry named bclabelpos { SW } - named bclabelprox { } - import @Geometry named bclabelangle { } - named bclabelctr { } - import @Geometry named bclabeladjust{ } - - named bdlabel { } - named bdlabelmargin { } - named bdlabelfont { } - named bdlabelbreak { } - named bdlabelformat right @Body { } - import @Geometry named bdlabelpos { SE } - named bdlabelprox { } - import @Geometry named bdlabelangle { } - named bdlabelctr { } - import @Geometry named bdlabeladjust{ } - - ########################################################################### - # # - # @CNode options of @DiagSetup # - # # - ########################################################################### - - import @Geometry named coutline - named margin {} - named shadow {} - named sides {} - named angle {} - { box } - named cmargin { 0.6f } - import @Geometry named cshadow { 0.4f } - import @Geometry named csides { 3 } - import @Geometry named cangle { "dup 180 exch div" } - named ctranslate { } - named coutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { solid } - import @Geometry named coutlinedashlength { 0.2f } - import @Geometry named coutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { thin } - named coutlinecolour coutlinecolor { nochange } - named cpaint { none } - import @TextureImport named ctexture{ solid } - named cfont { } - named cbreak { } - named cformat right @Body { @Body } - - named cvalign { ctr } - named cvsize { } - named cvindent { ctr } - named cvstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named cvmargin { } - named ctopmargin { } - named cfootmargin { } - - named chalign { ctr } - named chsize { } - named chindent { ctr } - named chstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named chmargin { } - named cleftmargin { } - named crightmargin { } - - named cnodelabel { } - named cnodelabelmargin { 0.2f } - named cnodelabelfont { -2p } - named cnodelabelbreak { ragged nohyphen } - named cnodelabelformat right @Body { @Body } - import @Geometry named cnodelabelpos{ } - import @Geometry named cnodelabelangle { horizontal } - named cnodelabelprox { outside } - named cnodelabelctr { no } - import @Geometry named cnodelabeladjust { 0 0 } - - named calabel { } - named calabelmargin { } - named calabelfont { } - named calabelbreak { } - named calabelformat right @Body { } - import @Geometry named calabelpos { NE } - import @Geometry named calabelangle { } - named calabelprox { } - named calabelctr { } - import @Geometry named calabeladjust{ } - - named cblabel { } - named cblabelmargin { } - named cblabelfont { } - named cblabelbreak { } - named cblabelformat right @Body { } - import @Geometry named cblabelpos { NW } - import @Geometry named cblabelangle { } - named cblabelprox { } - named cblabelctr { } - import @Geometry named cblabeladjust{ } - - named cclabel { } - named cclabelmargin { } - named cclabelfont { } - named cclabelbreak { } - named cclabelformat right @Body { } - import @Geometry named cclabelpos { SW } - import @Geometry named cclabelangle { } - named cclabelprox { } - named cclabelctr { } - import @Geometry named cclabeladjust{ } - - named cdlabel { } - named cdlabelmargin { } - named cdlabelfont { } - named cdlabelbreak { } - named cdlabelformat right @Body { } - import @Geometry named cdlabelpos { SE } - import @Geometry named cdlabelangle { } - named cdlabelprox { } - named cdlabelctr { } - import @Geometry named cdlabeladjust{ } - - ########################################################################### - # # - # @DNode options of @DiagSetup # - # # - ########################################################################### - - import @Geometry named doutline - named margin {} - named shadow {} - named sides {} - named angle {} - { box } - named dmargin { 0.6f } - import @Geometry named dshadow { 0.4f } - import @Geometry named dsides { 3 } - import @Geometry named dangle { "dup 180 exch div" } - named dtranslate { } - named doutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { solid } - import @Geometry named doutlinedashlength { 0.2f } - import @Geometry named doutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { thin } - named doutlinecolour doutlinecolor { nochange } - named dpaint { none } - import @TextureImport named dtexture{ solid } - named dfont { } - named dbreak { } - named dformat right @Body { @Body } - - named dvalign { ctr } - named dvsize { } - named dvindent { ctr } - named dvstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named dvmargin { } - named dtopmargin { } - named dfootmargin { } - - named dhalign { ctr } - named dhsize { } - named dhindent { ctr } - named dhstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named dhmargin { } - named dleftmargin { } - named drightmargin { } - - named dnodelabel { } - named dnodelabelmargin { 0.2f } - named dnodelabelfont { -2p } - named dnodelabelbreak { ragged nohyphen } - named dnodelabelformat right @Body { @Body } - import @Geometry named dnodelabelpos{ } - import @Geometry named dnodelabelangle { horizontal } - named dnodelabelprox { outside } - named dnodelabelctr { no } - import @Geometry named dnodelabeladjust { 0 0 } - - named dalabel { } - named dalabelmargin { } - named dalabelfont { } - named dalabelbreak { } - named dalabelformat right @Body { } - import @Geometry named dalabelpos { NE } - import @Geometry named dalabelangle { } - named dalabelprox { } - named dalabelctr { } - import @Geometry named dalabeladjust{ } - - named dblabel { } - named dblabelmargin { } - named dblabelfont { } - named dblabelbreak { } - named dblabelformat right @Body { } - import @Geometry named dblabelpos { NW } - import @Geometry named dblabelangle { } - named dblabelprox { } - named dblabelctr { } - import @Geometry named dblabeladjust{ } - - named dclabel { } - named dclabelmargin { } - named dclabelfont { } - named dclabelbreak { } - named dclabelformat right @Body { } - import @Geometry named dclabelpos { SW } - import @Geometry named dclabelangle { } - named dclabelprox { } - named dclabelctr { } - import @Geometry named dclabeladjust{ } - - named ddlabel { } - named ddlabelmargin { } - named ddlabelfont { } - named ddlabelbreak { } - named ddlabelformat right @Body { } - import @Geometry named ddlabelpos { SE } - import @Geometry named ddlabelangle { } - named ddlabelprox { } - named ddlabelctr { } - import @Geometry named ddlabeladjust{ } - - ########################################################################### - # # - # @ENode options of @DiagSetup # - # # - ########################################################################### - - import @Geometry named eoutline - named margin {} - named shadow {} - named sides {} - named angle {} - { box } - named emargin { 0.6f } - import @Geometry named eshadow { 0.4f } - import @Geometry named esides { 3 } - import @Geometry named eangle { "dup 180 exch div" } - named etranslate { } - named eoutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { solid } - import @Geometry named eoutlinedashlength { 0.2f } - import @Geometry named eoutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { thin } - named eoutlinecolour eoutlinecolor { nochange } - named epaint { none } - import @TextureImport named etexture{ solid } - named efont { } - named ebreak { } - named eformat right @Body { @Body } - - named evalign { ctr } - named evsize { } - named evindent { ctr } - named evstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named evmargin { } - named etopmargin { } - named efootmargin { } - - named ehalign { ctr } - named ehsize { } - named ehindent { ctr } - named ehstrut - named no { 0.0f } - named yes { 1.0f } - { no } - named ehmargin { } - named eleftmargin { } - named erightmargin { } - - named enodelabel { } - named enodelabelmargin { 0.2f } - named enodelabelfont { -2p } - named enodelabelbreak { ragged nohyphen } - named enodelabelformat right @Body { @Body } - import @Geometry named enodelabelpos{ } - import @Geometry named enodelabelangle { horizontal } - named enodelabelprox { outside } - named enodelabelctr { no } - import @Geometry named enodelabeladjust { 0 0 } - - named ealabel { } - named ealabelmargin { } - named ealabelfont { } - named ealabelbreak { } - named ealabelformat right @Body { } - import @Geometry named ealabelpos { NE } - import @Geometry named ealabelangle { } - named ealabelprox { } - named ealabelctr { } - import @Geometry named ealabeladjust{ } - - named eblabel { } - named eblabelmargin { } - named eblabelfont { } - named eblabelbreak { } - named eblabelformat right @Body { } - import @Geometry named eblabelpos { NW } - import @Geometry named eblabelangle { } - named eblabelprox { } - named eblabelctr { } - import @Geometry named eblabeladjust{ } - - named eclabel { } - named eclabelmargin { } - named eclabelfont { } - named eclabelbreak { } - named eclabelformat right @Body { } - import @Geometry named eclabelpos { SW } - import @Geometry named eclabelangle { } - named eclabelprox { } - named eclabelctr { } - import @Geometry named eclabeladjust{ } - - named edlabel { } - named edlabelmargin { } - named edlabelfont { } - named edlabelbreak { } - named edlabelformat right @Body { } - import @Geometry named edlabelpos { SE } - import @Geometry named edlabelangle { } - named edlabelprox { } - named edlabelctr { } - import @Geometry named edlabeladjust{ } - - ########################################################################### - # # - # @Link options of @DiagSetup # - # # - ########################################################################### - - import @Geometry named path - named from {} - named to {} - named bias {} - named fbias {} - named tbias {} - named hfrac {} - named hbias {} - named radius {} - named xindent {} - named zindent {} - named frompt {} - named topt {} - named arrow {} - named arrowlength {} - named backarrowlength {} - { line } - import @Geometry named from { 0,0 } - import @Geometry named to { 1,1 } - import @Geometry named bias { 2.0f } - import @Geometry named fbias { 2.0f } - import @Geometry named tbias { 2.0f } - import @Geometry named hfrac { 0.5 } - import @Geometry named hbias { 0.0f } - import @Geometry named radius { 1.0f } - import @Geometry named xindent { 0.8f } - import @Geometry named zindent { 0.8f } - import @Geometry named frompt { 0 0 } - import @Geometry named topt { 0 0 } - named pathstyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { solid } - import @Geometry named pathdashlength { 0.2f } - import @Geometry named pathwidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { thin } - named pathcolour pathcolor { nochange } - import @Geometry named pathgap - named thin { 0.08 ft } - named medium { 0.16 ft } - named thick { 0.24 ft } - { thin } - named arrow { no } - named arrowstyle { solid } - named arrowwidth { 0.3f } - named arrowlength { 0.5f } - named backarrowstyle { solid } - named backarrowwidth { 0.3f } - named backarrowlength { 0.5f } - - named linklabel { } - named linklabelmargin { 0.2f } - named linklabelfont { -2p } - named linklabelbreak { ragged nohyphen } - named linklabelformat right @Body { @Body } - import @Geometry named linklabelpos { } - import @Geometry named linklabelangle { horizontal } - named linklabelprox { above } - named linklabelctr { no } - import @Geometry named linklabeladjust { 0 0 } - - named xlabel { } - named xlabelmargin { } - named xlabelfont { } - named xlabelbreak { } - named xlabelformat right @Body { } - import @Geometry named xlabelpos { LFROM } - import @Geometry named xlabelangle { } - named xlabelprox { } - named xlabelctr { } - import @Geometry named xlabeladjust { } - - named ylabel { } - named ylabelmargin { } - named ylabelfont { } - named ylabelbreak { } - named ylabelformat right @Body { } - import @Geometry named ylabelpos { LMID } - import @Geometry named ylabelangle { } - named ylabelprox { } - named ylabelctr { yes } - import @Geometry named ylabeladjust { } - - named zlabel { } - named zlabelmargin { } - named zlabelfont { } - named zlabelbreak { } - named zlabelformat right @Body { } - import @Geometry named zlabelpos { LTO } - import @Geometry named zlabelangle { } - named zlabelprox { } - named zlabelctr { } - import @Geometry named zlabeladjust { } - - named fromlabel { } - named fromlabelmargin { 0f } - named fromlabelfont { } - named fromlabelbreak { ragged nohyphen } - named fromlabelformat right @Body { @Body } - import @Geometry named fromlabelpos { FROM } - import @Geometry named fromlabelangle { antiparallel } - named fromlabelprox { W } - named fromlabelctr { no } - import @Geometry named fromlabeladjust { 0 0 } - - named tolabel { } - named tolabelmargin { 0f } - named tolabelfont { } - named tolabelbreak { ragged nohyphen } - named tolabelformat right @Body { @Body } - import @Geometry named tolabelpos { TO } - import @Geometry named tolabelangle { parallel } - named tolabelprox { W } - named tolabelctr { no } - import @Geometry named tolabeladjust { 0 0 } - - ########################################################################### - # # - # Tree and syntax diagram options of @DiagSetup # - # # - ########################################################################### - - named treehsep { 0.5f } - named treevsep { 0.5f } - named treehindent - named left { 0.0rt } - named ctr { 0.5rt } - named right { 1.0rt } - { ctr } - named treevindent - named top { 0.0rt } - named ctr { 0.5rt } - named foot { 1.0rt } - { ctr } - - named syntaxgap { 0.35f } - named syntaxbias { 1.0f } - named syntaxradius { 0.3f } -{ - - - ########################################################################### - # # - # @Diag symbol # - # # - ########################################################################### - - export "::" @ShowPoints @ShowTags @ShowDirections @CatchTags @Transform - - @Node @ANode @BNode @CNode @DNode @ENode - @Box @CurveBox @ShadowBox @Square @Diamond @Polygon - @Isosceles @Ellipse @Circle - @ArrowHead @SolidArrowHead @SolidWithBarArrowHead @OpenArrowHead - @HalfOpenArrowHead @SolidCurvedArrowHead @OpenCurvedArrowHead - @HalfOpenCurvedArrowHead @CircleArrowHead @BoxArrowHead - @ManyArrowHead - - @Link - @Line @DoubleLine @Arrow @DoubleArrow @Curve @CurveArrow - @ACurve @ACurveArrow @CCurve @CCurveArrow - @Bezier @BezierArrow - @HVLine @HVArrow @VHLine @VHArrow - @HVCurve @HVCurveArrow @VHCurve @VHCurveArrow - @LVRLine @LVRArrow @RVLLine @RVLArrow - @DHULine @DHUArrow @UHDLine @UHDArrow - @LVRCurve @LVRCurveArrow @RVLCurve @RVLCurveArrow - @DHUCurve @DHUCurveArrow @UHDCurve @UHDCurveArrow - @HVHLine @HVHArrow @VHVLine @VHVArrow - @HVHCurve @HVHCurveArrow @VHVCurve @VHVCurveArrow - @DWrapLine @DWrapArrow @UWrapLine @UWrapArrow - @DWrapCurve @DWrapCurveArrow @UWrapCurve @UWrapCurveArrow - - @Tree @HTree - - @StartRight @StartUp @StartLeft @StartDown - @StartRightRight @StartRightRightRight @StartRightDown - @Skip @XCell @ACell @BCell @CCell @DCell @ECell - @Sequence @OneOrBoth @Select @Optional @OptionalDiverted @Diverted - @Loop @LoopOpposite @Repeat @RepeatOpposite @RepeatDiverted - - def @Diag - named save { save } - named maxlabels { maxlabels } - named title { title } - named titleformat - left @Title - right @Body - { @Title titleformat @Body } - - ####################################################################### - # # - # @Node options of @Diag # - # # - ####################################################################### - - import @Geometry named outline - named margin {} - named shadow {} - named sides {} - named angle {} - { outline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named margin { margin } - import @Geometry named shadow { shadow } - import @Geometry named sides { sides } - import @Geometry named angle { angle } - named translate { translate } - named nodetag { } - named outlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { outlinestyle } - import @Geometry named outlinedashlength{ outlinedashlength } - import @Geometry named outlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { outlinewidth } - named outlinecolour outlinecolor { outlinecolour } - named paint { paint } - import @TextureImport named texture { texture } - named font { font } - named break { break } - named format right @Body { format @Body } - named valign { valign } - named vsize { vsize } - named vindent { vindent } - named vstrut - named no { 0.0f } - named yes { 1.0f } - { vstrut } - named vmargin { vmargin } - named topmargin { topmargin } - named footmargin { footmargin } - named halign { halign } - named hsize { hsize } - named hindent { hindent } - named hstrut - named no { 0.0f } - named yes { 1.0f } - { hstrut } - named hmargin { hmargin } - named leftmargin { leftmargin } - named rightmargin { rightmargin } - - ####################################################################### - # # - # @ANode options of @Diag # - # # - ####################################################################### - - import @Geometry named aoutline - named margin {} - named shadow {} - named sides {} - named angle {} - { aoutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named amargin { amargin } - import @Geometry named ashadow { ashadow } - import @Geometry named asides { asides } - import @Geometry named aangle { aangle } - named atranslate { atranslate } - named anodetag { } - named aoutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { aoutlinestyle } - import @Geometry named aoutlinedashlength{ aoutlinedashlength } - import @Geometry named aoutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { aoutlinewidth } - named aoutlinecolour aoutlinecolor { aoutlinecolour } - named apaint { apaint } - import @TextureImport named atexture { atexture } - named afont { afont } - named abreak { abreak } - named aformat right @Body { aformat @Body } - named avalign { avalign } - named avsize { avsize } - named avindent { avindent } - named avstrut - named no { 0.0f } - named yes { 1.0f } - { avstrut } - named avmargin { avmargin } - named atopmargin { atopmargin } - named afootmargin { afootmargin } - named ahalign { ahalign } - named ahsize { ahsize } - named ahindent { ahindent } - named ahstrut - named no { 0.0f } - named yes { 1.0f } - { ahstrut } - named ahmargin { ahmargin } - named aleftmargin { aleftmargin } - named arightmargin { arightmargin } - - ####################################################################### - # # - # @BNode options of @Diag # - # # - ####################################################################### - - import @Geometry named boutline - named margin {} - named shadow {} - named sides {} - named angle {} - { boutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named bmargin { bmargin } - import @Geometry named bshadow { bshadow } - import @Geometry named bsides { bsides } - import @Geometry named bangle { bangle } - named btranslate { btranslate } - named bnodetag { } - named boutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { boutlinestyle } - import @Geometry named boutlinedashlength{ boutlinedashlength } - import @Geometry named boutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { boutlinewidth } - named boutlinecolour boutlinecolor { boutlinecolour } - named bpaint { bpaint } - import @TextureImport named btexture { btexture } - named bfont { bfont } - named bbreak { bbreak } - named bformat right @Body { bformat @Body } - named bvalign { bvalign } - named bvsize { bvsize } - named bvindent { bvindent } - named bvstrut - named no { 0.0f } - named yes { 1.0f } - { bvstrut } - named bvmargin { bvmargin } - named btopmargin { btopmargin } - named bfootmargin { bfootmargin } - named bhalign { bhalign } - named bhsize { bhsize } - named bhindent { bhindent } - named bhstrut - named no { 0.0f } - named yes { 1.0f } - { bhstrut } - named bhmargin { bhmargin } - named bleftmargin { bleftmargin } - named brightmargin { brightmargin } - - ####################################################################### - # # - # @CNode options of @Diag # - # # - ####################################################################### - - import @Geometry named coutline - named margin {} - named shadow {} - named sides {} - named angle {} - { coutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named cmargin { cmargin } - import @Geometry named cshadow { cshadow } - import @Geometry named csides { csides } - import @Geometry named cangle { cangle } - named ctranslate { ctranslate } - named cnodetag { } - named coutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { coutlinestyle } - import @Geometry named coutlinedashlength{ coutlinedashlength } - import @Geometry named coutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { coutlinewidth } - named coutlinecolour coutlinecolor { coutlinecolour } - named cpaint { cpaint } - import @TextureImport named ctexture { ctexture } - named cfont { cfont } - named cbreak { cbreak } - named cformat right @Body { cformat @Body } - named cvalign { cvalign } - named cvsize { cvsize } - named cvindent { cvindent } - named cvstrut - named no { 0.0f } - named yes { 1.0f } - { cvstrut } - named cvmargin { cvmargin } - named ctopmargin { ctopmargin } - named cfootmargin { cfootmargin } - named chalign { chalign } - named chsize { chsize } - named chindent { chindent } - named chstrut - named no { 0.0f } - named yes { 1.0f } - { chstrut } - named chmargin { chmargin } - named cleftmargin { cleftmargin } - named crightmargin { crightmargin } - - ####################################################################### - # # - # @DNode options of @Diag # - # # - ####################################################################### - - import @Geometry named doutline - named margin {} - named shadow {} - named sides {} - named angle {} - { doutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named dmargin { dmargin } - import @Geometry named dshadow { dshadow } - import @Geometry named dsides { dsides } - import @Geometry named dangle { dangle } - named dtranslate { dtranslate } - named dnodetag { } - named doutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { doutlinestyle } - import @Geometry named doutlinedashlength{ doutlinedashlength } - import @Geometry named doutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { doutlinewidth } - named doutlinecolour doutlinecolor { doutlinecolour } - named dpaint { dpaint } - import @TextureImport named dtexture { dtexture } - named dfont { dfont } - named dbreak { dbreak } - named dformat right @Body { dformat @Body } - named dvalign { dvalign } - named dvsize { dvsize } - named dvindent { dvindent } - named dvstrut - named no { 0.0f } - named yes { 1.0f } - { dvstrut } - named dvmargin { dvmargin } - named dtopmargin { dtopmargin } - named dfootmargin { dfootmargin } - named dhalign { dhalign } - named dhsize { dhsize } - named dhindent { dhindent } - named dhstrut - named no { 0.0f } - named yes { 1.0f } - { dhstrut } - named dhmargin { dhmargin } - named dleftmargin { dleftmargin } - named drightmargin { drightmargin } - - ####################################################################### - # # - # @ENode options of @Diag # - # # - ####################################################################### - - import @Geometry named eoutline - named margin {} - named shadow {} - named sides {} - named angle {} - { eoutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named emargin { emargin } - import @Geometry named eshadow { eshadow } - import @Geometry named esides { esides } - import @Geometry named eangle { eangle } - named etranslate { etranslate } - named enodetag { } - named eoutlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { eoutlinestyle } - import @Geometry named eoutlinedashlength{ eoutlinedashlength } - import @Geometry named eoutlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { eoutlinewidth } - named eoutlinecolour eoutlinecolor { eoutlinecolour } - named epaint { epaint } - import @TextureImport named etexture { etexture } - named efont { efont } - named ebreak { ebreak } - named eformat right @Body { eformat @Body } - named evalign { evalign } - named evsize { evsize } - named evindent { evindent } - named evstrut - named no { 0.0f } - named yes { 1.0f } - { evstrut } - named evmargin { evmargin } - named etopmargin { etopmargin } - named efootmargin { efootmargin } - named ehalign { ehalign } - named ehsize { ehsize } - named ehindent { ehindent } - named ehstrut - named no { 0.0f } - named yes { 1.0f } - { ehstrut } - named ehmargin { ehmargin } - named eleftmargin { eleftmargin } - named erightmargin { erightmargin } - - ####################################################################### - # # - # @Link options of @Diag # - # # - ####################################################################### - - import @Geometry named path - named from {} - named to {} - named bias {} - named fbias {} - named tbias {} - named hfrac {} - named hbias {} - named radius {} - named xindent {} - named zindent {} - named frompt {} - named topt {} - named arrow {} - named arrowlength {} - named backarrowlength {} - { path - from { from } - to { to } - bias { bias } - fbias { fbias } - tbias { tbias } - hfrac { hfrac } - hbias { hbias } - radius { radius } - xindent { xindent } - zindent { zindent } - frompt { frompt } - topt { topt } - arrow { arrow } - arrowlength { arrowlength } - backarrowlength{ backarrowlength } - } - import @Geometry named from { from } - import @Geometry named to { to } - import @Geometry named bias { bias } - import @Geometry named fbias { fbias } - import @Geometry named tbias { tbias } - import @Geometry named hfrac { hfrac } - import @Geometry named hbias { hbias } - import @Geometry named radius { radius } - import @Geometry named xindent { xindent } - import @Geometry named zindent { zindent } - import @Geometry named frompt { frompt } - import @Geometry named topt { topt } - named pathstyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { pathstyle } - import @Geometry named pathdashlength { pathdashlength } - import @Geometry named pathwidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { pathwidth } - named pathcolour pathcolor { pathcolour } - import @Geometry named pathgap - named thin { 0.08 ft } - named medium { 0.16 ft } - named thick { 0.24 ft } - { pathgap } - named arrow { arrow } - named arrowstyle { arrowstyle } - named arrowwidth { arrowwidth } - named arrowlength { arrowlength } - named backarrowstyle { backarrowstyle } - named backarrowwidth { backarrowwidth } - named backarrowlength { backarrowlength } - - named nodelabel { nodelabel } - named nodelabelmargin { nodelabelmargin } - named nodelabelfont { nodelabelfont } - named nodelabelbreak { nodelabelbreak } - named nodelabelformat right @Body { nodelabelformat @Body } - import @Geometry named nodelabelpos { nodelabelpos } - named nodelabelprox { nodelabelprox } - import @Geometry named nodelabelangle { nodelabelangle } - named nodelabelctr { nodelabelctr } - import @Geometry named nodelabeladjust { nodelabeladjust } - - named alabel { alabel } - named alabelmargin { alabelmargin } - named alabelfont { alabelfont } - named alabelbreak { alabelbreak } - named alabelformat right @Body { alabelformat @Body } - import @Geometry named alabelpos { alabelpos } - named alabelprox { alabelprox } - import @Geometry named alabelangle { alabelangle } - named alabelctr { alabelctr } - import @Geometry named alabeladjust { alabeladjust } - - named blabel { blabel } - named blabelmargin { blabelmargin } - named blabelfont { blabelfont } - named blabelbreak { blabelbreak } - named blabelformat right @Body { blabelformat @Body } - import @Geometry named blabelpos { blabelpos } - named blabelprox { blabelprox } - import @Geometry named blabelangle { blabelangle } - named blabelctr { blabelctr } - import @Geometry named blabeladjust { blabeladjust } - - named clabel { clabel } - named clabelmargin { clabelmargin } - named clabelfont { clabelfont } - named clabelbreak { clabelbreak } - named clabelformat right @Body { clabelformat @Body } - import @Geometry named clabelpos { clabelpos } - named clabelprox { clabelprox } - import @Geometry named clabelangle { clabelangle } - named clabelctr { clabelctr } - import @Geometry named clabeladjust { clabeladjust } - - named dlabel { dlabel } - named dlabelmargin { dlabelmargin } - named dlabelfont { dlabelfont } - named dlabelbreak { dlabelbreak } - named dlabelformat right @Body { dlabelformat @Body } - import @Geometry named dlabelpos { dlabelpos } - named dlabelprox { dlabelprox } - import @Geometry named dlabelangle { dlabelangle } - named dlabelctr { dlabelctr } - import @Geometry named dlabeladjust { dlabeladjust } - - named fromlabel { fromlabel } - named fromlabelmargin { fromlabelmargin } - named fromlabelfont { fromlabelfont } - named fromlabelbreak { fromlabelbreak } - named fromlabelformat right @Body { fromlabelformat @Body } - import @Geometry named fromlabelpos { fromlabelpos } - named fromlabelprox { fromlabelprox } - import @Geometry named fromlabelangle { fromlabelangle } - named fromlabelctr { fromlabelctr } - import @Geometry named fromlabeladjust { fromlabeladjust } - - named linklabel { linklabel } - named linklabelmargin { linklabelmargin } - named linklabelfont { linklabelfont } - named linklabelbreak { linklabelbreak } - named linklabelformat right @Body { linklabelformat @Body } - import @Geometry named linklabelpos { linklabelpos } - named linklabelprox { linklabelprox } - import @Geometry named linklabelangle { linklabelangle } - named linklabelctr { linklabelctr } - import @Geometry named linklabeladjust { linklabeladjust } - - named xlabel { xlabel } - named xlabelmargin { xlabelmargin } - named xlabelfont { xlabelfont } - named xlabelbreak { xlabelbreak } - named xlabelformat right @Body { xlabelformat @Body } - import @Geometry named xlabelpos { xlabelpos } - named xlabelprox { xlabelprox } - import @Geometry named xlabelangle { xlabelangle } - named xlabelctr { xlabelctr } - import @Geometry named xlabeladjust { xlabeladjust } - - named ylabel { ylabel } - named ylabelmargin { ylabelmargin } - named ylabelfont { ylabelfont } - named ylabelbreak { ylabelbreak } - named ylabelformat right @Body { ylabelformat @Body } - import @Geometry named ylabelpos { ylabelpos } - named ylabelprox { ylabelprox } - import @Geometry named ylabelangle { ylabelangle } - named ylabelctr { ylabelctr } - import @Geometry named ylabeladjust { ylabeladjust } - - named zlabel { zlabel } - named zlabelmargin { zlabelmargin } - named zlabelfont { zlabelfont } - named zlabelbreak { zlabelbreak } - named zlabelformat right @Body { zlabelformat @Body } - import @Geometry named zlabelpos { zlabelpos } - named zlabelprox { zlabelprox } - import @Geometry named zlabelangle { zlabelangle } - named zlabelctr { zlabelctr } - import @Geometry named zlabeladjust { zlabeladjust } - - named tolabel { tolabel } - named tolabelmargin { tolabelmargin } - named tolabelfont { tolabelfont } - named tolabelbreak { tolabelbreak } - named tolabelformat right @Body { tolabelformat @Body } - import @Geometry named tolabelpos { tolabelpos } - named tolabelprox { tolabelprox } - import @Geometry named tolabelangle { tolabelangle } - named tolabelctr { tolabelctr } - import @Geometry named tolabeladjust { tolabeladjust } - - ####################################################################### - # # - # Tree and syntax diagram options of @Diag # - # # - ####################################################################### - - named treehsep { treehsep } - named treevsep { treevsep } - named treehindent - named left { 0.0rt } - named ctr { 0.5rt } - named right { 1.0rt } - { treehindent } - named treevindent - named top { 0.0rt } - named ctr { 0.5rt } - named foot { 1.0rt } - { treevindent } - named syntaxgap { syntaxgap } - named syntaxbias { syntaxbias } - named syntaxradius { syntaxradius } - body @Body - @Begin - - - ####################################################################### - # # - # Miscellaneous helper definitions # - # # - ####################################################################### - - def @PSAddPaint left col right tex - { - col @Case { - { "no" "none" "nopaint" } @Yield "{}" - else @Yield { "{" @ColourCommand col tex "fill }" } - } - } - - # Like @Graphic, but affects the graphics state of right parameter - def @InnerGraphic - left ps - right x - { - @BackEnd @Case { - PostScript @Yield { - { ps gsave // grestore } @Graphic x - } - PDF @Yield { - { ps q // Q } @Graphic x - } - } - } - - def @BoxLabels right x - { - @BackEnd @Case { - PostScript @Yield { - "[ ldiagbox ] pop" @Graphic x - } - PDF @Yield {} - } - } - - def @IfNonEmpty - left x - right y - { - x @Case { - "" @Yield @Null - else @Yield y - } - } - - def @Else - precedence 20 - associativity right - left x - right y - { - x @Case { - "" @Yield y - else @Yield x - } - } - - def @ShowTags - right x - { - @BackEnd @Case { - PostScript @Yield { - { - "() ldiagpushtagdict" - // "ldiagshowtags ldiagpopuptagdict" - } @Graphic x - } - PDF @Yield {} - } - } - - def @ShowPoints - right x - { - @BackEnd @Case { - PostScript @Yield { - { - "() ldiagpushtagdict" - // "ldiagshowpoints ldiagpopuptagdict" - } @Graphic x - } - PDF @Yield {} - } - } - - def @ShowDirections - right x - { - @BackEnd @Case { - PostScript @Yield { - { "() ldiagpushtagdict" - // "ldiagshowangles ldiagpopuptagdict" } @Graphic x - } - PDF @Yield {} - } - } - - def @ShowMarks right x - { - { "xmark -0.5 cm moveto xmark ysize 0.5 cm add lineto stroke" } @Graphic x - } - - - def "::" - precedence 33 - associativity right - left name - named restrict {} - right x - { - - def @PushCommand - { - "("name") ldiagpushtagdict" - } - - def @PopCommand - { - restrict @Case { - "" @Yield "ldiagpopuptagdict" - else @Yield { "[" restrict "] ldiagpopsometagdict" } - } - # "ldiagpopuptagdict" - } - - @BackEnd @Case { - PostScript @Yield { {@PushCommand // @PopCommand} @Graphic x } - PDF @Yield {} - } - } - - def @CatchTags - precedence 33 - associativity right - right x - { - @BackEnd @Case { - PostScript @Yield { - { - "() ldiagpushtagdict" - // "ldiagpoptagdict" - } - @Graphic x - } - PDF @Yield {} - } - } - - def @ZeroWidth right x - { - @HContract @VContract { - ^|0io @HContract @VContract x |0io - } - } - - def @ZeroSize right x - { - @HContract @VContract { - ^/0io ^|0io @HContract @VContract x |0io /0io - } - } - - def @FromArrowLength - left arrow - right arrowlength - { - @BackEnd @Case { - PostScript @Yield { - arrow @Case { - { no yes forward } @Yield 0 - { back both } @Yield {"("arrowlength") ldiagdecodelength"} - } - } - PDF @Yield {} - } - } - - def @ToArrowLength - left arrow - right arrowlength - { - @BackEnd @Case { - PostScript @Yield { - arrow @Case { - { no back } @Yield 0 - { yes forward both } @Yield {"("arrowlength") ldiagdecodelength"} - } - } - PDF @Yield {} - } - } - - def @AddMargins - named mtop {} - named mfoot {} - named mleft {} - named mright {} - right x - { - - @HContract @VContract { - ^|mleft |mright - ^/mtop | x | - /mfoot | | - } - } - - def @Transform - precedence 32 - import @Geometry named translate -# named to precedence 10 left x right y { x y "ldiagpsub" } - named to precedence 10 left x right y { - @BackEnd @Case { - PostScript @Yield { x y "ldiagpsub" } - PDF @Yield {""} - } - } - {} - import @Geometry named rotate { 0d } - named scale { 1 1 } - right x - { - @BackEnd @Case { - - PostScript @Yield { - { rotate "rotate" scale "scale newpath clip" } - @InnerGraphic - { - @ZeroSize x - } - // - # { rotate "rotate" scale "scale" translate "translate" } - { translate "translate" rotate "rotate" scale "scale" } - @InnerGraphic - { - @ZeroSize x - } - } - - PDF @Yield { # presume that "rotate", "scale" and "translate" are not matrices - { "__cos("rotate") __sin("rotate") __sub(0, __sin("rotate")) __cos("rotate") 0 0 cm" - "__pick(1, "scale") 0 0 __pick(2, "scale") 0 0 cm n W" } - @InnerGraphic - { - @ZeroSize x - } - // - # { rotate "rotate" scale "scale" translate "translate" } - { "1 0 0 1 "translate" cm" - "__cos("rotate") __sin("rotate") __sub(0, __sin("rotate")) __cos("rotate") 0 0 cm" - "__pick(1, "scale") 0 0 __pick(2, "scale") 0 0 cm" } - @InnerGraphic - { - @ZeroSize x - } - } - - } - } - - - ####################################################################### - # # - # @DoLabel definition for drawing one label # - # # - ####################################################################### - - def @DoLabel - named which {} - named labeltag { LABEL } - named label {} - named labelmargin {} - named labelfont {} - named labelbreak {} - named labelformat right @Body {} - named labelpos {} - named labelprox {} - named labelangle {} - named labelctr {} - named labeladjust {} - { - - import @Geometry - def alignedangle - { - labelpos??"ANGLE" quadcase - 0 { labelpos??"ANGLE" } - 0-90 { labelpos??"ANGLE" } - 90 { labelpos??"ANGLE" } - 90-180 { labelpos??"ANGLE" + 180d } - 180 { labelpos??"ANGLE" + 180d } - 180-270 { labelpos??"ANGLE" + 180d } - 270 { labelpos??"ANGLE" + 180d } - 270-360 { labelpos??"ANGLE" } - } - - import @Geometry - def perpalignedangle - { - labelpos??"ANGLE" quadcase - 0 { labelpos??"ANGLE" - 90d } - 0-90 { labelpos??"ANGLE" - 90d } - 90 { labelpos??"ANGLE" - 90d } - 90-180 { labelpos??"ANGLE" - 90d } - 180 { labelpos??"ANGLE" + 90d } - 180-270 { labelpos??"ANGLE" + 90d } - 270 { labelpos??"ANGLE" + 90d } - 270-360 { labelpos??"ANGLE" + 90d } - - } - - import @Geometry - def finalangle - { - labelangle @Case { - - "horizontal" @Yield { 0d } - "aligned" @Yield { alignedangle } - "perpendicular" @Yield { perpalignedangle } - "parallel" @Yield { labelpos??"ANGLE" } - "antiparallel" @Yield { labelpos??"ANGLE" + 180d } - else @Yield labelangle - } - } - - import @Geometry - def @AlignedAboveProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SW) } - 90 { (SW) } - 90-180 { (SE) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (SE) } - 270-360 { (SW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (SE) } - 90-180 { (SW) } - 180 { (SW) } - 180-270 { (SW) } - 270 { (SW) } - 270-360 { (SE) } - } - else @Yield (S) - } - } - - import @Geometry - def @AlignedBelowProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (NW) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (NE) } - 180 { (NE) } - 180-270 { (NE) } - 270 { (NE) } - 270-360 { (NW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NE) } - 0-90 { (NE) } - 90 { (NE) } - 90-180 { (NW) } - 180 { (NW) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (NE) } - } - else @Yield (N) - } - } - - import @Geometry - def @AlignedLeftProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SW) } - 90 { (SW) } - 90-180 { (NE) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (SE) } - 270-360 { (NW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (SE) } - 90-180 { (NW) } - 180 { (SW) } - 180-270 { (SW) } - 270 { (SW) } - 270-360 { (NE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (S) } - 0-90 { (S) } - 90 { (S) } - 90-180 { (N) } - 180 { (S) } - 180-270 { (S) } - 270 { (S) } - 270-360 { (N) } - } - } - } - - import @Geometry - def @AlignedRightProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (SE) } - 180 { (SE) } - 180-270 { (NE) } - 270 { (NE) } - 270-360 { (SW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (NE) } - 90 { (NE) } - 90-180 { (SW) } - 180 { (SW) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (SE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (S) } - 0-90 { (N) } - 90 { (N) } - 90-180 { (S) } - 180 { (S) } - 180-270 { (N) } - 270 { (N) } - 270-360 { (S) } - } - } - } - - import @Geometry - def @AlignedInsideProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SW) } - 90 { (SW) } - 90-180 { (NE) } - 180 { (NE) } - 180-270 { (NE) } - 270 { (NE) } - 270-360 { (SW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (SE) } - 90-180 { (NW) } - 180 { (NW) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (SE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (S) } - 0-90 { (S) } - 90 { (S) } - 90-180 { (N) } - 180 { (N) } - 180-270 { (N) } - 270 { (N) } - 270-360 { (S) } - } - } - } - - import @Geometry - def @AlignedOutsideProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (NW) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (SE) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (SE) } - 270-360 { (NW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NE) } - 0-90 { (NE) } - 90 { (NE) } - 90-180 { (SW) } - 180 { (SW) } - 180-270 { (SW) } - 270 { (SW) } - 270-360 { (NE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (N) } - 0-90 { (N) } - 90 { (N) } - 90-180 { (S) } - 180 { (S) } - 180-270 { (S) } - 270 { (S) } - 270-360 { (N) } - } - } - } - - - import @Geometry - def @PerpendicularAboveProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (SE) } - 90-180 { (SW) } - 180 { (NE) } - 180-270 { (NE) } - 270 { (NE) } - 270-360 { (NW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NE) } - 0-90 { (NE) } - 90 { (NE) } - 90-180 { (NW) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (SE) } - 270-360 { (SW) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (E) } - 0-90 { (E) } - 90 { (E) } - 90-180 { (W) } - 180 { (E) } - 180-270 { (E) } - 270 { (E) } - 270-360 { (W) } - } - } - } - - import @Geometry - def @PerpendicularBelowProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SW) } - 90 { (SW) } - 90-180 { (SE) } - 180 { (NW) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (NE) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NW) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (NE) } - 180 { (SW) } - 180-270 { (SW) } - 270 { (SW) } - 270-360 { (SE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (W) } - 0-90 { (W) } - 90 { (W) } - 90-180 { (E) } - 180 { (W) } - 180-270 { (W) } - 270 { (W) } - 270-360 { (E) } - } - } - } - - import @Geometry - def @PerpendicularLeftProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (SE) } - 90-180 { (SE) } - 180 { (NE) } - 180-270 { (NE) } - 270 { (NE) } - 270-360 { (NE) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NE) } - 0-90 { (NE) } - 90 { (NE) } - 90-180 { (NE) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (SE) } - 270-360 { (SE) } - } - else @Yield (E) - } - } - - import @Geometry - def @PerpendicularRightProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SW) } - 90 { (SW) } - 90-180 { (SW) } - 180 { (NW) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (NW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NW) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (NW) } - 180 { (SW) } - 180-270 { (SW) } - 270 { (SW) } - 270-360 { (SW) } - } - else @Yield (W) - } - } - - import @Geometry - def @PerpendicularInsideProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (SE) } - 90-180 { (SE) } - 180 { (NW) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (NW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NE) } - 0-90 { (NE) } - 90 { (NE) } - 90-180 { (NE) } - 180 { (SW) } - 180-270 { (SW) } - 270 { (SW) } - 270-360 { (SW) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (E) } - 0-90 { (E) } - 90 { (E) } - 90-180 { (E) } - 180 { (W) } - 180-270 { (W) } - 270 { (W) } - 270-360 { (W) } - } - } - } - - import @Geometry - def @PerpendicularOutsideProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SW) } - 90 { (SW) } - 90-180 { (SW) } - 180 { (NE) } - 180-270 { (NE) } - 270 { (NE) } - 270-360 { (NE) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NW) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (NW) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (SE) } - 270-360 { (SE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (W) } - 0-90 { (W) } - 90 { (W) } - 90-180 { (W) } - 180 { (E) } - 180-270 { (E) } - 270 { (E) } - 270-360 { (E) } - } - } - } - - - import @Geometry - def @OtherAboveProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SE) } - 90 { (SW) } - 90-180 { (SW) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (NW) } - 270-360 { (SW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (NW) } - 90-180 { (SW) } - 180 { (SW) } - 180-270 { (SE) } - 270 { (SW) } - 270-360 { (SW) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (S) } - 0-90 { (SE) } - 90 { (W) } - 90-180 { (SW) } - 180 { (S) } - 180-270 { (SE) } - 270 { (W) } - 270-360 { (SW) } - } - } - } - - import @Geometry - def @OtherBelowProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (NW) } - 0-90 { (NW) } - 90 { (SW) } - 90-180 { (NE) } - 180 { (NE) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (NE) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NE) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (NE) } - 180 { (NW) } - 180-270 { (NW) } - 270 { (SW) } - 270-360 { (NE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (N) } - 0-90 { (NW) } - 90 { (W) } - 90-180 { (NE) } - 180 { (N) } - 180-270 { (NW) } - 270 { (W) } - 270-360 { (NE) } - } - } - } - - import @Geometry - def @OtherLeftProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SE) } - 90 { (SE) } - 90-180 { (NE) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (NE) } - 270-360 { (NE) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (NE) } - 90-180 { (NE) } - 180 { (SW) } - 180-270 { (SE) } - 270 { (SE) } - 270-360 { (NE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (S) } - 0-90 { (SE) } - 90 { (E) } - 90-180 { (NE) } - 180 { (S) } - 180-270 { (SE) } - 270 { (E) } - 270-360 { (NE) } - } - } - } - - import @Geometry - def @OtherRightProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (NW) } - 90 { (SW) } - 90-180 { (SW) } - 180 { (SE) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (SW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (SW) } - 180 { (SW) } - 180-270 { (NW) } - 270 { (SW) } - 270-360 { (SW) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (S) } - 0-90 { (NW) } - 90 { (W) } - 90-180 { (SW) } - 180 { (S) } - 180-270 { (NW) } - 270 { (W) } - 270-360 { (SW) } - } - } - } - - import @Geometry - def @OtherInsideProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (SW) } - 0-90 { (SE) } - 90 { (SE) } - 90-180 { (NE) } - 180 { (NE) } - 180-270 { (NW) } - 270 { (NW) } - 270-360 { (SW) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (SE) } - 0-90 { (SE) } - 90 { (NE) } - 90-180 { (NE) } - 180 { (NW) } - 180-270 { (NW) } - 270 { (SW) } - 270-360 { (SW) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (S) } - 0-90 { (SE) } - 90 { (E) } - 90-180 { (NE) } - 180 { (N) } - 180-270 { (NW) } - 270 { (W) } - 270-360 { (SW) } - } - } - } - - import @Geometry - def @OtherOutsideProximity - { - which @Case { - { x f } @Yield { labelpos??ANGLE quadcase - 0 { (NW) } - 0-90 { (NW) } - 90 { (SW) } - 90-180 { (SW) } - 180 { (SE) } - 180-270 { (SE) } - 270 { (NE) } - 270-360 { (NE) } - } - { z t } @Yield { labelpos??ANGLE quadcase - 0 { (NE) } - 0-90 { (NW) } - 90 { (NW) } - 90-180 { (SW) } - 180 { (SW) } - 180-270 { (SE) } - 270 { (SE) } - 270-360 { (NE) } - } - else @Yield { labelpos??ANGLE quadcase - 0 { (N) } - 0-90 { (NW) } - 90 { (W) } - 90-180 { (SW) } - 180 { (S) } - 180-270 { (SE) } - 270 { (E) } - 270-360 { (NE) } - } - } - } - - - import @Geometry - def @AboveProximity - { - labelangle @Case { - "aligned" @Yield @AlignedAboveProximity - "perpendicular" @Yield @PerpendicularAboveProximity - else @Yield @OtherAboveProximity - } - } - - import @Geometry - def @BelowProximity - { - labelangle @Case { - "aligned" @Yield @AlignedBelowProximity - "perpendicular" @Yield @PerpendicularBelowProximity - else @Yield @OtherBelowProximity - } - } - - import @Geometry - def @LeftProximity - { - labelangle @Case { - "aligned" @Yield @AlignedLeftProximity - "perpendicular" @Yield @PerpendicularLeftProximity - else @Yield @OtherLeftProximity - } - } - - import @Geometry - def @RightProximity - { - labelangle @Case { - "aligned" @Yield @AlignedRightProximity - "perpendicular" @Yield @PerpendicularRightProximity - else @Yield @OtherRightProximity - } - } - - import @Geometry - def @InsideProximity - { - labelangle @Case { - "aligned" @Yield @AlignedInsideProximity - "perpendicular" @Yield @PerpendicularInsideProximity - else @Yield @OtherInsideProximity - } - } - - import @Geometry - def @OutsideProximity - { - labelangle @Case { - "aligned" @Yield @AlignedOutsideProximity - "perpendicular" @Yield @PerpendicularOutsideProximity - else @Yield @OtherOutsideProximity - } - } - - import @Geometry - def proximity - { - labelprox @Case { - above @Yield @AboveProximity - below @Yield @BelowProximity - left @Yield @LeftProximity - right @Yield @RightProximity - inside @Yield @InsideProximity - outside @Yield @OutsideProximity - else @Yield { "("labelprox")" } - } - } - - import @Geometry - def dorotate - left point - right angle - { - { {0 0} distance point } atangle { {0 0} angleto point + angle } - } - - import @Geometry - def translation - { - labelctr @Case { - { no No } @Yield { - labelpos -- labeltag?!?proximity - } - { yes Yes } @Yield { - #P0 := labelpos - #P1 := labeltag?!?proximity -- P0 - #P2 := labeltag??CTR -- P0 - #TH := labelpos??ANGLE - #P1A := P1 dorotate { 0 - TH } - #P2A := P2 dorotate { 0 - TH } - #PRA := { 0 - xcoord P2A 0 - ycoord P1A } - #PRA dorotate TH ++ P0 - XP1 := labeltag?!?proximity - XP2 := labeltag??CTR - XANG := labelpos??ANGLE - XTH := XANG - 90d - { XP1 angleto XP2 } - XDIST := { XP1 distance XP2 } * sin XTH - labelpos -- XP1 ++ XDIST atangle XANG - } - } - } - - @CatchTags @ZeroSize @Transform - translate { translation ++ labeladjust } - rotate { finalangle } - scale { 1 1 } - labeltag:: @BoxLabels @CatchTags @AddMargins - mtop { labelmargin } - mfoot { labelmargin } - mleft { labelmargin } - mright { labelmargin } - labelfont @Font labelbreak @Break labelformat label - } - - - ####################################################################### - # # - # @Node # - # # - ####################################################################### - - def @Node - import @Geometry named translate - named to precedence 10 left x right y { - @BackEnd @Case { - PostScript @Yield { x y "ldiagpsub" } - PDF @Yield {""} - } - } - {} - import @Geometry named rotate { 0d } - import @Geometry named outline - named margin {} - named shadow {} - named sides {} - named angle {} - { outline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named margin { margin } - import @Geometry named shadow { shadow } - import @Geometry named sides { sides } - import @Geometry named angle { angle } - named nodetag { nodetag } - named outlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { outlinestyle } - import @Geometry named outlinedashlength { outlinedashlength} - import @Geometry named outlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { outlinewidth } - named outlinecolour outlinecolor { outlinecolour } - named paint { paint } - import @TextureImport named texture { texture } - named font { font } - named break { break } - named format right @Body { format @Body } - named valign { valign } - named vsize { vsize } - named vindent { vindent } - named vstrut - named no { 0.0f } - named yes { 1.0f } - { vstrut } - named vmargin { vmargin } - named topmargin { topmargin } - named footmargin { footmargin } - - named halign { halign } - named hsize { hsize } - named hindent { hindent } - named hstrut - named no { 0.0f } - named yes { 1.0f } - { hstrut } - named hmargin { hmargin } - named leftmargin { leftmargin } - named rightmargin { rightmargin } - - named nodelabel { nodelabel } - named nodelabelmargin { nodelabelmargin } - named nodelabelfont { nodelabelfont } - named nodelabelbreak { nodelabelbreak } - named nodelabelformat right @Body { nodelabelformat @Body } - import @Geometry named nodelabelpos { nodelabelpos } - named nodelabelprox { nodelabelprox } - import @Geometry named nodelabelangle { nodelabelangle } - named nodelabelctr { nodelabelctr } - import @Geometry named nodelabeladjust { nodelabeladjust } - - named alabel { alabel } - named alabelmargin { alabelmargin } - named alabelfont { alabelfont } - named alabelbreak { alabelbreak } - named alabelformat right @Body { alabelformat @Body } - import @Geometry named alabelpos { alabelpos } - named alabelprox { alabelprox } - import @Geometry named alabelangle { alabelangle } - named alabelctr { alabelctr } - import @Geometry named alabeladjust { alabeladjust } - - named blabel { blabel } - named blabelmargin { blabelmargin } - named blabelfont { blabelfont } - named blabelbreak { blabelbreak } - named blabelformat right @Body { blabelformat @Body } - import @Geometry named blabelpos { blabelpos } - named blabelprox { blabelprox } - import @Geometry named blabelangle { blabelangle } - named blabelctr { blabelctr } - import @Geometry named blabeladjust { blabeladjust } - - named clabel { clabel } - named clabelmargin { clabelmargin } - named clabelfont { clabelfont } - named clabelbreak { clabelbreak } - named clabelformat right @Body { clabelformat @Body } - import @Geometry named clabelpos { clabelpos } - named clabelprox { clabelprox } - import @Geometry named clabelangle { clabelangle } - named clabelctr { clabelctr } - import @Geometry named clabeladjust { clabeladjust } - - named dlabel { dlabel } - named dlabelmargin { dlabelmargin } - named dlabelfont { dlabelfont } - named dlabelbreak { dlabelbreak } - named dlabelformat right @Body { dlabelformat @Body } - import @Geometry named dlabelpos { dlabelpos } - named dlabelprox { dlabelprox } - import @Geometry named dlabelangle { dlabelangle } - named dlabelctr { dlabelctr } - import @Geometry named dlabeladjust { dlabeladjust } - - right @Body - { - - def @LabelPos - left x - right y - { - nodelabelpos @Case { - x @Yield y - else @Yield "" - } - } - - def @If - left cond - right x - { - cond @Case { - { yes Yes } @Yield x - else @Yield "" - } - } - - - def @Strut right x - { - def vs { 0.5w @VShift { vstrut @High } } - def hs { hstrut @Wide } - - @HContract @VContract { - @HContract @VContract x | vs / hs | - } - } - - def @Indent right x - { - x @Case { - { top left } @Yield 0.0rt - { ctr } @Yield 0.5rt - { foot right } @Yield 1.0rt - { mctr } @Yield 0.5bx - else @Yield x - } - } - - def @VSize right x - { - vsize @Case { - "" @Yield x - else @Yield { vsize @High { /{@Indent vindent} x / } } - } - } - - def @HSize right x - { - hsize @Case { - "" @Yield x - else @Yield { hsize @Wide { |{@Indent hindent} x | } } - } - } - - def @Align right x - { - x @Case { - { top left } @Yield 0.0w - { ctr } @Yield 0.5w - { foot right } @Yield 1.0w - { mark } @Yield "+0i" - else @Yield x - } - } - - def @ALabel - { - @DoLabel - which { "a" } - label { alabel @Else nodelabel } - labelmargin { alabelmargin @Else nodelabelmargin } - labelfont { alabelfont @Else nodelabelfont } - labelbreak { alabelbreak @Else nodelabelbreak } - labelformat { alabelformat @Body @Else nodelabelformat @Body} - labelpos { alabelpos @Else nodelabelpos } - labelprox { alabelprox @Else nodelabelprox } - labelangle { alabelangle @Else nodelabelangle } - labelctr { alabelctr @Else nodelabelctr } - labeladjust { alabeladjust @Else nodelabeladjust } - } - - def @BLabel - { - @DoLabel - which { "b" } - label { blabel @Else nodelabel } - labelmargin { blabelmargin @Else nodelabelmargin } - labelfont { blabelfont @Else nodelabelfont } - labelbreak { blabelbreak @Else nodelabelbreak } - labelformat { blabelformat @Body @Else nodelabelformat @Body} - labelpos { blabelpos @Else nodelabelpos } - labelprox { blabelprox @Else nodelabelprox } - labelangle { blabelangle @Else nodelabelangle } - labelctr { blabelctr @Else nodelabelctr } - labeladjust { blabeladjust @Else nodelabeladjust } - } - - def @CLabel - { - @DoLabel - which { "c" } - label { clabel @Else nodelabel } - labelmargin { clabelmargin @Else nodelabelmargin } - labelfont { clabelfont @Else nodelabelfont } - labelbreak { clabelbreak @Else nodelabelbreak } - labelformat { clabelformat @Body @Else nodelabelformat @Body} - labelpos { clabelpos @Else nodelabelpos } - labelprox { clabelprox @Else nodelabelprox } - labelangle { clabelangle @Else nodelabelangle } - labelctr { clabelctr @Else nodelabelctr } - labeladjust { clabeladjust @Else nodelabeladjust } - } - - def @DLabel - { - @DoLabel - which { "d" } - label { dlabel @Else nodelabel } - labelmargin { dlabelmargin @Else nodelabelmargin } - labelfont { dlabelfont @Else nodelabelfont } - labelbreak { dlabelbreak @Else nodelabelbreak } - labelformat { dlabelformat @Body @Else nodelabelformat @Body} - labelpos { dlabelpos @Else nodelabelpos } - labelprox { dlabelprox @Else nodelabelprox } - labelangle { dlabelangle @Else nodelabelangle } - labelctr { dlabelctr @Else nodelabelctr } - labeladjust { dlabeladjust @Else nodelabeladjust } - } - - import @Geometry - def @OutLine - { - @BackEnd @Case { - PostScript @Yield { - outline @Case { - box @Yield { "ldiagbox" } - curvebox @Yield { "("margin") ldiagcurvebox" } - shadowbox @Yield { shadow "ldiagshadow ldiagbox" } - square @Yield { "ldiagsquare" } - diamond @Yield { "ldiagdiamond" } - polygon @Yield { sides angle "ldiagpolygon" } - isosceles @Yield { "ldiagisosceles" } - ellipse @Yield { "ldiagellipse" } - circle @Yield { "ldiagcircle" } - else @Yield { - outline - margin { "("margin") ldiagdecodelength" } - shadow { shadow } - sides { sides } - angle { angle } - } - } - } - PDF @Yield {} - } - } - - def @Value - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - { - "ldiagnodebegin [" @OutLine "]" outlinedashlength - "[" outlinestyle "]" outlinewidth - "{" @ColourCommand outlinecolour "}" - paint @PSAddPaint texture "ldiagnodeend" - "(IN) ldiagpushtagdict" - // - "ldiagpopuptagdict" - } - @Graphic - { - {@Align valign} @VShift {@Align halign} @HShift - @AddMargins - mtop { topmargin @Else vmargin @Else margin } - mfoot { footmargin @Else vmargin @Else margin } - mleft { leftmargin @Else hmargin @Else margin } - mright { rightmargin @Else hmargin @Else margin } - @HSize @VSize @HContract @VContract - font @Font break @Break format @Strut @Body - } - / {alabel @Else nodelabel} @IfNonEmpty @ALabel - / {blabel @Else nodelabel} @IfNonEmpty @BLabel - / {clabel @Else nodelabel} @IfNonEmpty @CLabel - / {dlabel @Else nodelabel} @IfNonEmpty @DLabel - } - } - PDF @Yield {} - } - } - - def @TValue - { - nodetag @Case { - "" @Yield @Value - else @Yield { nodetag:: @Value } - } - } - - translate @Case { - "" @Yield @TValue - else @Yield { - @Null & # so that preceding space gets chewed up - @Transform translate { translate } rotate { rotate } @TValue - } - } - } - - - ####################################################################### - # # - # @ANode # - # # - ####################################################################### - - def @ANode - import @Geometry named translate - named to precedence 10 left x right y { - @BackEnd @Case { - PostScript @Yield { x y "ldiagpsub" } - PDF @Yield {""} - } - } - {} - import @Geometry named rotate { 0d } - import @Geometry named outline - named margin {} - named shadow {} - named sides {} - named angle {} - { aoutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named margin { amargin } - import @Geometry named shadow { ashadow } - import @Geometry named sides { asides } - import @Geometry named angle { aangle } - named nodetag { anodetag } - named outlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { aoutlinestyle } - import @Geometry named outlinedashlength { aoutlinedashlength} - import @Geometry named outlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { aoutlinewidth } - named outlinecolour outlinecolor { aoutlinecolour } - named paint { apaint } - import @TextureImport named texture { atexture } - named font { afont } - named break { abreak } - named format right @Body { aformat @Body } - named valign { avalign } - named vsize { avsize } - named vindent { avindent } - named vstrut - named no { 0.0f } - named yes { 1.0f } - { avstrut } - named vmargin { avmargin } - named topmargin { atopmargin } - named footmargin { afootmargin } - - named halign { ahalign } - named hsize { ahsize } - named hindent { ahindent } - named hstrut - named no { 0.0f } - named yes { 1.0f } - { ahstrut } - named hmargin { ahmargin } - named leftmargin { aleftmargin } - named rightmargin { arightmargin } - - named nodelabel { anodelabel } - named nodelabelmargin { anodelabelmargin } - named nodelabelfont { anodelabelfont } - named nodelabelbreak { anodelabelbreak } - named nodelabelformat right @Body { anodelabelformat @Body } - import @Geometry named nodelabelpos { anodelabelpos } - named nodelabelprox { anodelabelprox } - import @Geometry named nodelabelangle { anodelabelangle } - named nodelabelctr { anodelabelctr } - import @Geometry named nodelabeladjust { anodelabeladjust } - - named alabel { aalabel } - named alabelmargin { aalabelmargin } - named alabelfont { aalabelfont } - named alabelbreak { aalabelbreak } - named alabelformat right @Body { aalabelformat @Body } - import @Geometry named alabelpos { aalabelpos } - named alabelprox { aalabelprox } - import @Geometry named alabelangle { aalabelangle } - named alabelctr { aalabelctr } - import @Geometry named alabeladjust { aalabeladjust } - - named blabel { ablabel } - named blabelmargin { ablabelmargin } - named blabelfont { ablabelfont } - named blabelbreak { ablabelbreak } - named blabelformat right @Body { ablabelformat @Body } - import @Geometry named blabelpos { ablabelpos } - named blabelprox { ablabelprox } - import @Geometry named blabelangle { ablabelangle } - named blabelctr { ablabelctr } - import @Geometry named blabeladjust { ablabeladjust } - - named clabel { aclabel } - named clabelmargin { aclabelmargin } - named clabelfont { aclabelfont } - named clabelbreak { aclabelbreak } - named clabelformat right @Body { aclabelformat @Body } - import @Geometry named clabelpos { aclabelpos } - named clabelprox { aclabelprox } - import @Geometry named clabelangle { aclabelangle } - named clabelctr { aclabelctr } - import @Geometry named clabeladjust { aclabeladjust } - - named dlabel { adlabel } - named dlabelmargin { adlabelmargin } - named dlabelfont { adlabelfont } - named dlabelbreak { adlabelbreak } - named dlabelformat right @Body { adlabelformat @Body } - import @Geometry named dlabelpos { adlabelpos } - named dlabelprox { adlabelprox } - import @Geometry named dlabelangle { adlabelangle } - named dlabelctr { adlabelctr } - import @Geometry named dlabeladjust { adlabeladjust } - - right @Body - { - - def @LabelPos - left x - right y - { - nodelabelpos @Case { - x @Yield y - else @Yield "" - } - } - - def @If - left cond - right x - { - cond @Case { - { yes Yes } @Yield x - else @Yield "" - } - } - - - def @Strut right x - { - def vs { 0.5w @VShift { vstrut @High } } - def hs { hstrut @Wide } - - @HContract @VContract { - @HContract @VContract x | vs / hs | - } - } - - def @Indent right x - { - x @Case { - { top left } @Yield 0.0rt - { ctr } @Yield 0.5rt - { foot right } @Yield 1.0rt - { mctr } @Yield 0.5bx - else @Yield x - } - } - - def @VSize right x - { - vsize @Case { - "" @Yield x - else @Yield { vsize @High { /{@Indent vindent} x / } } - } - } - - def @HSize right x - { - hsize @Case { - "" @Yield x - else @Yield { hsize @Wide { |{@Indent hindent} x | } } - } - } - - def @Align right x - { - x @Case { - { top left } @Yield 0.0w - { ctr } @Yield 0.5w - { foot right } @Yield 1.0w - { mark } @Yield "+0i" - else @Yield x - } - } - - def @ALabel - { - @DoLabel - which { "a" } - label { alabel @Else nodelabel } - labelmargin { alabelmargin @Else nodelabelmargin } - labelfont { alabelfont @Else nodelabelfont } - labelbreak { alabelbreak @Else nodelabelbreak } - labelformat { alabelformat @Body @Else nodelabelformat @Body} - labelpos { alabelpos @Else nodelabelpos } - labelprox { alabelprox @Else nodelabelprox } - labelangle { alabelangle @Else nodelabelangle } - labelctr { alabelctr @Else nodelabelctr } - labeladjust { alabeladjust @Else nodelabeladjust } - } - - def @BLabel - { - @DoLabel - which { "b" } - label { blabel @Else nodelabel } - labelmargin { blabelmargin @Else nodelabelmargin } - labelfont { blabelfont @Else nodelabelfont } - labelbreak { blabelbreak @Else nodelabelbreak } - labelformat { blabelformat @Body @Else nodelabelformat @Body} - labelpos { blabelpos @Else nodelabelpos } - labelprox { blabelprox @Else nodelabelprox } - labelangle { blabelangle @Else nodelabelangle } - labelctr { blabelctr @Else nodelabelctr } - labeladjust { blabeladjust @Else nodelabeladjust } - } - - def @CLabel - { - @DoLabel - which { "c" } - label { clabel @Else nodelabel } - labelmargin { clabelmargin @Else nodelabelmargin } - labelfont { clabelfont @Else nodelabelfont } - labelbreak { clabelbreak @Else nodelabelbreak } - labelformat { clabelformat @Body @Else nodelabelformat @Body} - labelpos { clabelpos @Else nodelabelpos } - labelprox { clabelprox @Else nodelabelprox } - labelangle { clabelangle @Else nodelabelangle } - labelctr { clabelctr @Else nodelabelctr } - labeladjust { clabeladjust @Else nodelabeladjust } - } - - def @DLabel - { - @DoLabel - which { "d" } - label { dlabel @Else nodelabel } - labelmargin { dlabelmargin @Else nodelabelmargin } - labelfont { dlabelfont @Else nodelabelfont } - labelbreak { dlabelbreak @Else nodelabelbreak } - labelformat { dlabelformat @Body @Else nodelabelformat @Body} - labelpos { dlabelpos @Else nodelabelpos } - labelprox { dlabelprox @Else nodelabelprox } - labelangle { dlabelangle @Else nodelabelangle } - labelctr { dlabelctr @Else nodelabelctr } - labeladjust { dlabeladjust @Else nodelabeladjust } - } - - import @Geometry - def @OutLine - { - @BackEnd @Case { - PostScript @Yield { - outline @Case { - box @Yield { "ldiagbox" } - curvebox @Yield { "("margin") ldiagcurvebox" } - shadowbox @Yield { shadow "ldiagshadow ldiagbox" } - square @Yield { "ldiagsquare" } - diamond @Yield { "ldiagdiamond" } - polygon @Yield { sides angle "ldiagpolygon" } - isosceles @Yield { "ldiagisosceles" } - ellipse @Yield { "ldiagellipse" } - circle @Yield { "ldiagcircle" } - else @Yield { - outline - margin { "("margin") ldiagdecodelength" } - shadow { shadow } - sides { sides } - angle { angle } - } - } - } - PDF @Yield {} - } - } - - def @Value - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - { - "ldiagnodebegin [" @OutLine "]" outlinedashlength - "[" outlinestyle "]" outlinewidth - "{" @ColourCommand outlinecolour "}" - paint @PSAddPaint texture "ldiagnodeend" - "(IN) ldiagpushtagdict" - // - "ldiagpopuptagdict" - } - @Graphic - { - {@Align valign} @VShift {@Align halign} @HShift - @AddMargins - mtop { topmargin @Else vmargin @Else margin } - mfoot { footmargin @Else vmargin @Else margin } - mleft { leftmargin @Else hmargin @Else margin } - mright { rightmargin @Else hmargin @Else margin } - @HSize @VSize @HContract @VContract - font @Font break @Break format @Strut @Body - } - / {alabel @Else nodelabel} @IfNonEmpty @ALabel - / {blabel @Else nodelabel} @IfNonEmpty @BLabel - / {clabel @Else nodelabel} @IfNonEmpty @CLabel - / {dlabel @Else nodelabel} @IfNonEmpty @DLabel - } - } - PDF @Yield {} - } - } - - def @TValue - { - nodetag @Case { - "" @Yield @Value - else @Yield { nodetag:: @Value } - } - } - - translate @Case { - "" @Yield @TValue - else @Yield { - @Null & # so that preceding space gets chewed up - @Transform translate { translate } rotate { rotate } @TValue - } - } - } - - - ####################################################################### - # # - # @BNode # - # # - ####################################################################### - - def @BNode - import @Geometry named translate - named to precedence 10 left x right y { - @BackEnd @Case { - PostScript @Yield { x y "ldiagpsub" } - PDF @Yield {""} - } - } - {} - import @Geometry named rotate { 0d } - import @Geometry named outline - named margin {} - named shadow {} - named sides {} - named angle {} - { boutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named margin { bmargin } - import @Geometry named shadow { bshadow } - import @Geometry named sides { bsides } - import @Geometry named angle { bangle } - named nodetag { bnodetag } - named outlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { boutlinestyle } - import @Geometry named outlinedashlength { boutlinedashlength} - import @Geometry named outlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { boutlinewidth } - named outlinecolour outlinecolor { boutlinecolour } - named paint { bpaint } - import @TextureImport named texture { btexture } - named font { bfont } - named break { bbreak } - named format right @Body { bformat @Body } - named valign { bvalign } - named vsize { bvsize } - named vindent { bvindent } - named vstrut - named no { 0.0f } - named yes { 1.0f } - { bvstrut } - named vmargin { bvmargin } - named topmargin { btopmargin } - named footmargin { bfootmargin } - - named halign { bhalign } - named hsize { bhsize } - named hindent { bhindent } - named hstrut - named no { 0.0f } - named yes { 1.0f } - { bhstrut } - named hmargin { bhmargin } - named leftmargin { bleftmargin } - named rightmargin { brightmargin } - - named nodelabel { bnodelabel } - named nodelabelmargin { bnodelabelmargin } - named nodelabelfont { bnodelabelfont } - named nodelabelbreak { bnodelabelbreak } - named nodelabelformat right @Body { bnodelabelformat @Body } - import @Geometry named nodelabelpos { bnodelabelpos } - named nodelabelprox { bnodelabelprox } - import @Geometry named nodelabelangle { bnodelabelangle } - named nodelabelctr { bnodelabelctr } - import @Geometry named nodelabeladjust { bnodelabeladjust } - - named alabel { balabel } - named alabelmargin { balabelmargin } - named alabelfont { balabelfont } - named alabelbreak { balabelbreak } - named alabelformat right @Body { balabelformat @Body } - import @Geometry named alabelpos { balabelpos } - named alabelprox { balabelprox } - import @Geometry named alabelangle { balabelangle } - named alabelctr { balabelctr } - import @Geometry named alabeladjust { balabeladjust } - - named blabel { bblabel } - named blabelmargin { bblabelmargin } - named blabelfont { bblabelfont } - named blabelbreak { bblabelbreak } - named blabelformat right @Body { bblabelformat @Body } - import @Geometry named blabelpos { bblabelpos } - named blabelprox { bblabelprox } - import @Geometry named blabelangle { bblabelangle } - named blabelctr { bblabelctr } - import @Geometry named blabeladjust { bblabeladjust } - - named clabel { bclabel } - named clabelmargin { bclabelmargin } - named clabelfont { bclabelfont } - named clabelbreak { bclabelbreak } - named clabelformat right @Body { bclabelformat @Body } - import @Geometry named clabelpos { bclabelpos } - named clabelprox { bclabelprox } - import @Geometry named clabelangle { bclabelangle } - named clabelctr { bclabelctr } - import @Geometry named clabeladjust { bclabeladjust } - - named dlabel { bdlabel } - named dlabelmargin { bdlabelmargin } - named dlabelfont { bdlabelfont } - named dlabelbreak { bdlabelbreak } - named dlabelformat right @Body { bdlabelformat @Body } - import @Geometry named dlabelpos { bdlabelpos } - named dlabelprox { bdlabelprox } - import @Geometry named dlabelangle { bdlabelangle } - named dlabelctr { bdlabelctr } - import @Geometry named dlabeladjust { bdlabeladjust } - - right @Body - { - - def @LabelPos - left x - right y - { - nodelabelpos @Case { - x @Yield y - else @Yield "" - } - } - - def @If - left cond - right x - { - cond @Case { - { yes Yes } @Yield x - else @Yield "" - } - } - - - def @Strut right x - { - def vs { 0.5w @VShift { vstrut @High } } - def hs { hstrut @Wide } - - @HContract @VContract { - @HContract @VContract x | vs / hs | - } - } - - def @Indent right x - { - x @Case { - { top left } @Yield 0.0rt - { ctr } @Yield 0.5rt - { foot right } @Yield 1.0rt - { mctr } @Yield 0.5bx - else @Yield x - } - } - - def @VSize right x - { - vsize @Case { - "" @Yield x - else @Yield { vsize @High { /{@Indent vindent} x / } } - } - } - - def @HSize right x - { - hsize @Case { - "" @Yield x - else @Yield { hsize @Wide { |{@Indent hindent} x | } } - } - } - - def @Align right x - { - x @Case { - { top left } @Yield 0.0w - { ctr } @Yield 0.5w - { foot right } @Yield 1.0w - { mark } @Yield "+0i" - else @Yield x - } - } - - def @ALabel - { - @DoLabel - which { "a" } - label { alabel @Else nodelabel } - labelmargin { alabelmargin @Else nodelabelmargin } - labelfont { alabelfont @Else nodelabelfont } - labelbreak { alabelbreak @Else nodelabelbreak } - labelformat { alabelformat @Body @Else nodelabelformat @Body} - labelpos { alabelpos @Else nodelabelpos } - labelprox { alabelprox @Else nodelabelprox } - labelangle { alabelangle @Else nodelabelangle } - labelctr { alabelctr @Else nodelabelctr } - labeladjust { alabeladjust @Else nodelabeladjust } - } - - def @BLabel - { - @DoLabel - which { "b" } - label { blabel @Else nodelabel } - labelmargin { blabelmargin @Else nodelabelmargin } - labelfont { blabelfont @Else nodelabelfont } - labelbreak { blabelbreak @Else nodelabelbreak } - labelformat { blabelformat @Body @Else nodelabelformat @Body} - labelpos { blabelpos @Else nodelabelpos } - labelprox { blabelprox @Else nodelabelprox } - labelangle { blabelangle @Else nodelabelangle } - labelctr { blabelctr @Else nodelabelctr } - labeladjust { blabeladjust @Else nodelabeladjust } - } - - def @CLabel - { - @DoLabel - which { "c" } - label { clabel @Else nodelabel } - labelmargin { clabelmargin @Else nodelabelmargin } - labelfont { clabelfont @Else nodelabelfont } - labelbreak { clabelbreak @Else nodelabelbreak } - labelformat { clabelformat @Body @Else nodelabelformat @Body} - labelpos { clabelpos @Else nodelabelpos } - labelprox { clabelprox @Else nodelabelprox } - labelangle { clabelangle @Else nodelabelangle } - labelctr { clabelctr @Else nodelabelctr } - labeladjust { clabeladjust @Else nodelabeladjust } - } - - def @DLabel - { - @DoLabel - which { "d" } - label { dlabel @Else nodelabel } - labelmargin { dlabelmargin @Else nodelabelmargin } - labelfont { dlabelfont @Else nodelabelfont } - labelbreak { dlabelbreak @Else nodelabelbreak } - labelformat { dlabelformat @Body @Else nodelabelformat @Body} - labelpos { dlabelpos @Else nodelabelpos } - labelprox { dlabelprox @Else nodelabelprox } - labelangle { dlabelangle @Else nodelabelangle } - labelctr { dlabelctr @Else nodelabelctr } - labeladjust { dlabeladjust @Else nodelabeladjust } - } - - import @Geometry - def @OutLine - { - @BackEnd @Case { - PostScript @Yield { - outline @Case { - box @Yield { "ldiagbox" } - curvebox @Yield { "("margin") ldiagcurvebox" } - shadowbox @Yield { shadow "ldiagshadow ldiagbox" } - square @Yield { "ldiagsquare" } - diamond @Yield { "ldiagdiamond" } - polygon @Yield { sides angle "ldiagpolygon" } - isosceles @Yield { "ldiagisosceles" } - ellipse @Yield { "ldiagellipse" } - circle @Yield { "ldiagcircle" } - else @Yield { - outline - margin { "("margin") ldiagdecodelength" } - shadow { shadow } - sides { sides } - angle { angle } - } - } - } - PDF @Yield {} - } - } - - def @Value - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - { - "ldiagnodebegin [" @OutLine "]" outlinedashlength - "[" outlinestyle "]" outlinewidth - "{" @ColourCommand outlinecolour "}" - paint @PSAddPaint texture "ldiagnodeend" - "(IN) ldiagpushtagdict" - // - "ldiagpopuptagdict" - } - @Graphic - { - {@Align valign} @VShift {@Align halign} @HShift - @AddMargins - mtop { topmargin @Else vmargin @Else margin } - mfoot { footmargin @Else vmargin @Else margin } - mleft { leftmargin @Else hmargin @Else margin } - mright { rightmargin @Else hmargin @Else margin } - @HSize @VSize @HContract @VContract - font @Font break @Break format @Strut @Body - } - / {alabel @Else nodelabel} @IfNonEmpty @ALabel - / {blabel @Else nodelabel} @IfNonEmpty @BLabel - / {clabel @Else nodelabel} @IfNonEmpty @CLabel - / {dlabel @Else nodelabel} @IfNonEmpty @DLabel - } - } - PDF @Yield {} - } - } - - def @TValue - { - nodetag @Case { - "" @Yield @Value - else @Yield { nodetag:: @Value } - } - } - - translate @Case { - "" @Yield @TValue - else @Yield { - @Null & # so that preceding space gets chewed up - @Transform translate { translate } rotate { rotate } @TValue - } - } - } - - - ####################################################################### - # # - # @CNode # - # # - ####################################################################### - - def @CNode - import @Geometry named translate - named to precedence 10 left x right y { - @BackEnd @Case { - PostScript @Yield { x y "ldiagpsub" } - PDF @Yield {""} - } - } - {} - import @Geometry named rotate { 0d } - import @Geometry named outline - named margin {} - named shadow {} - named sides {} - named angle {} - { coutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named margin { cmargin } - import @Geometry named shadow { cshadow } - import @Geometry named sides { csides } - import @Geometry named angle { cangle } - named nodetag { cnodetag } - named outlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { coutlinestyle } - import @Geometry named outlinedashlength { coutlinedashlength} - import @Geometry named outlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { coutlinewidth } - named outlinecolour outlinecolor { coutlinecolour } - named paint { cpaint } - import @TextureImport named texture { ctexture } - named font { cfont } - named break { cbreak } - named format right @Body { cformat @Body } - named valign { cvalign } - named vsize { cvsize } - named vindent { cvindent } - named vstrut - named no { 0.0f } - named yes { 1.0f } - { cvstrut } - named vmargin { cvmargin } - named topmargin { ctopmargin } - named footmargin { cfootmargin } - - named halign { chalign } - named hsize { chsize } - named hindent { chindent } - named hstrut - named no { 0.0f } - named yes { 1.0f } - { chstrut } - named hmargin { chmargin } - named leftmargin { cleftmargin } - named rightmargin { crightmargin } - - named nodelabel { cnodelabel } - named nodelabelmargin { cnodelabelmargin } - named nodelabelfont { cnodelabelfont } - named nodelabelbreak { cnodelabelbreak } - named nodelabelformat right @Body { cnodelabelformat @Body } - import @Geometry named nodelabelpos { cnodelabelpos } - named nodelabelprox { cnodelabelprox } - import @Geometry named nodelabelangle { cnodelabelangle } - named nodelabelctr { cnodelabelctr } - import @Geometry named nodelabeladjust { cnodelabeladjust } - - named alabel { calabel } - named alabelmargin { calabelmargin } - named alabelfont { calabelfont } - named alabelbreak { calabelbreak } - named alabelformat right @Body { calabelformat @Body } - import @Geometry named alabelpos { calabelpos } - named alabelprox { calabelprox } - import @Geometry named alabelangle { calabelangle } - named alabelctr { calabelctr } - import @Geometry named alabeladjust { calabeladjust } - - named blabel { cblabel } - named blabelmargin { cblabelmargin } - named blabelfont { cblabelfont } - named blabelbreak { cblabelbreak } - named blabelformat right @Body { cblabelformat @Body } - import @Geometry named blabelpos { cblabelpos } - named blabelprox { cblabelprox } - import @Geometry named blabelangle { cblabelangle } - named blabelctr { cblabelctr } - import @Geometry named blabeladjust { cblabeladjust } - - named clabel { cclabel } - named clabelmargin { cclabelmargin } - named clabelfont { cclabelfont } - named clabelbreak { cclabelbreak } - named clabelformat right @Body { cclabelformat @Body } - import @Geometry named clabelpos { cclabelpos } - named clabelprox { cclabelprox } - import @Geometry named clabelangle { cclabelangle } - named clabelctr { cclabelctr } - import @Geometry named clabeladjust { cclabeladjust } - - named dlabel { cdlabel } - named dlabelmargin { cdlabelmargin } - named dlabelfont { cdlabelfont } - named dlabelbreak { cdlabelbreak } - named dlabelformat right @Body { cdlabelformat @Body } - import @Geometry named dlabelpos { cdlabelpos } - named dlabelprox { cdlabelprox } - import @Geometry named dlabelangle { cdlabelangle } - named dlabelctr { cdlabelctr } - import @Geometry named dlabeladjust { cdlabeladjust } - - right @Body - { - - def @LabelPos - left x - right y - { - nodelabelpos @Case { - x @Yield y - else @Yield "" - } - } - - def @If - left cond - right x - { - cond @Case { - { yes Yes } @Yield x - else @Yield "" - } - } - - - def @Strut right x - { - def vs { 0.5w @VShift { vstrut @High } } - def hs { hstrut @Wide } - - @HContract @VContract { - @HContract @VContract x | vs / hs | - } - } - - def @Indent right x - { - x @Case { - { top left } @Yield 0.0rt - { ctr } @Yield 0.5rt - { foot right } @Yield 1.0rt - { mctr } @Yield 0.5bx - else @Yield x - } - } - - def @VSize right x - { - vsize @Case { - "" @Yield x - else @Yield { vsize @High { /{@Indent vindent} x / } } - } - } - - def @HSize right x - { - hsize @Case { - "" @Yield x - else @Yield { hsize @Wide { |{@Indent hindent} x | } } - } - } - - def @Align right x - { - x @Case { - { top left } @Yield 0.0w - { ctr } @Yield 0.5w - { foot right } @Yield 1.0w - { mark } @Yield "+0i" - else @Yield x - } - } - - def @ALabel - { - @DoLabel - which { "a" } - label { alabel @Else nodelabel } - labelmargin { alabelmargin @Else nodelabelmargin } - labelfont { alabelfont @Else nodelabelfont } - labelbreak { alabelbreak @Else nodelabelbreak } - labelformat { alabelformat @Body @Else nodelabelformat @Body} - labelpos { alabelpos @Else nodelabelpos } - labelprox { alabelprox @Else nodelabelprox } - labelangle { alabelangle @Else nodelabelangle } - labelctr { alabelctr @Else nodelabelctr } - labeladjust { alabeladjust @Else nodelabeladjust } - } - - def @BLabel - { - @DoLabel - which { "b" } - label { blabel @Else nodelabel } - labelmargin { blabelmargin @Else nodelabelmargin } - labelfont { blabelfont @Else nodelabelfont } - labelbreak { blabelbreak @Else nodelabelbreak } - labelformat { blabelformat @Body @Else nodelabelformat @Body} - labelpos { blabelpos @Else nodelabelpos } - labelprox { blabelprox @Else nodelabelprox } - labelangle { blabelangle @Else nodelabelangle } - labelctr { blabelctr @Else nodelabelctr } - labeladjust { blabeladjust @Else nodelabeladjust } - } - - def @CLabel - { - @DoLabel - which { "c" } - label { clabel @Else nodelabel } - labelmargin { clabelmargin @Else nodelabelmargin } - labelfont { clabelfont @Else nodelabelfont } - labelbreak { clabelbreak @Else nodelabelbreak } - labelformat { clabelformat @Body @Else nodelabelformat @Body} - labelpos { clabelpos @Else nodelabelpos } - labelprox { clabelprox @Else nodelabelprox } - labelangle { clabelangle @Else nodelabelangle } - labelctr { clabelctr @Else nodelabelctr } - labeladjust { clabeladjust @Else nodelabeladjust } - } - - def @DLabel - { - @DoLabel - which { "d" } - label { dlabel @Else nodelabel } - labelmargin { dlabelmargin @Else nodelabelmargin } - labelfont { dlabelfont @Else nodelabelfont } - labelbreak { dlabelbreak @Else nodelabelbreak } - labelformat { dlabelformat @Body @Else nodelabelformat @Body} - labelpos { dlabelpos @Else nodelabelpos } - labelprox { dlabelprox @Else nodelabelprox } - labelangle { dlabelangle @Else nodelabelangle } - labelctr { dlabelctr @Else nodelabelctr } - labeladjust { dlabeladjust @Else nodelabeladjust } - } - - import @Geometry - def @OutLine - { - @BackEnd @Case { - PostScript @Yield { - outline @Case { - box @Yield { "ldiagbox" } - curvebox @Yield { "("margin") ldiagcurvebox" } - shadowbox @Yield { shadow "ldiagshadow ldiagbox" } - square @Yield { "ldiagsquare" } - diamond @Yield { "ldiagdiamond" } - polygon @Yield { sides angle "ldiagpolygon" } - isosceles @Yield { "ldiagisosceles" } - ellipse @Yield { "ldiagellipse" } - circle @Yield { "ldiagcircle" } - else @Yield { - outline - margin { "("margin") ldiagdecodelength" } - shadow { shadow } - sides { sides } - angle { angle } - } - } - } - PDF @Yield {} - } - } - - def @Value - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - { - "ldiagnodebegin [" @OutLine "]" outlinedashlength - "[" outlinestyle "]" outlinewidth - "{" @ColourCommand outlinecolour "}" - paint @PSAddPaint texture "ldiagnodeend" - "(IN) ldiagpushtagdict" - // - "ldiagpopuptagdict" - } - @Graphic - { - {@Align valign} @VShift {@Align halign} @HShift - @AddMargins - mtop { topmargin @Else vmargin @Else margin } - mfoot { footmargin @Else vmargin @Else margin } - mleft { leftmargin @Else hmargin @Else margin } - mright { rightmargin @Else hmargin @Else margin } - @HSize @VSize @HContract @VContract - font @Font break @Break format @Strut @Body - } - / {alabel @Else nodelabel} @IfNonEmpty @ALabel - / {blabel @Else nodelabel} @IfNonEmpty @BLabel - / {clabel @Else nodelabel} @IfNonEmpty @CLabel - / {dlabel @Else nodelabel} @IfNonEmpty @DLabel - } - } - PDF @Yield {} - } - } - - def @TValue - { - nodetag @Case { - "" @Yield @Value - else @Yield { nodetag:: @Value } - } - } - - translate @Case { - "" @Yield @TValue - else @Yield { - @Null & # so that preceding space gets chewed up - @Transform translate { translate } rotate { rotate } @TValue - } - } - } - - - ####################################################################### - # # - # @DNode # - # # - ####################################################################### - - def @DNode - import @Geometry named translate - named to precedence 10 left x right y { - @BackEnd @Case { - PostScript @Yield { x y "ldiagpsub" } - PDF @Yield {""} - } - } - {} - import @Geometry named rotate { 0d } - import @Geometry named outline - named margin {} - named shadow {} - named sides {} - named angle {} - { doutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named margin { dmargin } - import @Geometry named shadow { dshadow } - import @Geometry named sides { dsides } - import @Geometry named angle { dangle } - named nodetag { dnodetag } - named outlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { doutlinestyle } - import @Geometry named outlinedashlength { doutlinedashlength} - import @Geometry named outlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { doutlinewidth } - named outlinecolour outlinecolor { doutlinecolour } - named paint { dpaint } - import @TextureImport named texture { dtexture } - named font { dfont } - named break { dbreak } - named format right @Body { dformat @Body } - named valign { dvalign } - named vsize { dvsize } - named vindent { dvindent } - named vstrut - named no { 0.0f } - named yes { 1.0f } - { dvstrut } - named vmargin { dvmargin } - named topmargin { dtopmargin } - named footmargin { dfootmargin } - - named halign { dhalign } - named hsize { dhsize } - named hindent { dhindent } - named hstrut - named no { 0.0f } - named yes { 1.0f } - { dhstrut } - named hmargin { dhmargin } - named leftmargin { dleftmargin } - named rightmargin { drightmargin } - - named nodelabel { dnodelabel } - named nodelabelmargin { dnodelabelmargin } - named nodelabelfont { dnodelabelfont } - named nodelabelbreak { dnodelabelbreak } - named nodelabelformat right @Body { dnodelabelformat @Body } - import @Geometry named nodelabelpos { dnodelabelpos } - named nodelabelprox { dnodelabelprox } - import @Geometry named nodelabelangle { dnodelabelangle } - named nodelabelctr { dnodelabelctr } - import @Geometry named nodelabeladjust { dnodelabeladjust } - - named alabel { dalabel } - named alabelmargin { dalabelmargin } - named alabelfont { dalabelfont } - named alabelbreak { dalabelbreak } - named alabelformat right @Body { dalabelformat @Body } - import @Geometry named alabelpos { dalabelpos } - named alabelprox { dalabelprox } - import @Geometry named alabelangle { dalabelangle } - named alabelctr { dalabelctr } - import @Geometry named alabeladjust { calabeladjust } - - named blabel { dblabel } - named blabelmargin { dblabelmargin } - named blabelfont { dblabelfont } - named blabelbreak { dblabelbreak } - named blabelformat right @Body { dblabelformat @Body } - import @Geometry named blabelpos { dblabelpos } - named blabelprox { dblabelprox } - import @Geometry named blabelangle { dblabelangle } - named blabelctr { dblabelctr } - import @Geometry named blabeladjust { dblabeladjust } - - named clabel { dclabel } - named clabelmargin { dclabelmargin } - named clabelfont { dclabelfont } - named clabelbreak { dclabelbreak } - named clabelformat right @Body { dclabelformat @Body } - import @Geometry named clabelpos { dclabelpos } - named clabelprox { dclabelprox } - import @Geometry named clabelangle { dclabelangle } - named clabelctr { dclabelctr } - import @Geometry named clabeladjust { dclabeladjust } - - named dlabel { ddlabel } - named dlabelmargin { ddlabelmargin } - named dlabelfont { ddlabelfont } - named dlabelbreak { ddlabelbreak } - named dlabelformat right @Body { ddlabelformat @Body } - import @Geometry named dlabelpos { ddlabelpos } - named dlabelprox { ddlabelprox } - import @Geometry named dlabelangle { ddlabelangle } - named dlabelctr { ddlabelctr } - import @Geometry named dlabeladjust { ddlabeladjust } - - right @Body - { - - def @LabelPos - left x - right y - { - nodelabelpos @Case { - x @Yield y - else @Yield "" - } - } - - def @If - left cond - right x - { - cond @Case { - { yes Yes } @Yield x - else @Yield "" - } - } - - - def @Strut right x - { - def vs { 0.5w @VShift { vstrut @High } } - def hs { hstrut @Wide } - - @HContract @VContract { - @HContract @VContract x | vs / hs | - } - } - - def @Indent right x - { - x @Case { - { top left } @Yield 0.0rt - { ctr } @Yield 0.5rt - { foot right } @Yield 1.0rt - { mctr } @Yield 0.5bx - else @Yield x - } - } - - def @VSize right x - { - vsize @Case { - "" @Yield x - else @Yield { vsize @High { /{@Indent vindent} x / } } - } - } - - def @HSize right x - { - hsize @Case { - "" @Yield x - else @Yield { hsize @Wide { |{@Indent hindent} x | } } - } - } - - def @Align right x - { - x @Case { - { top left } @Yield 0.0w - { ctr } @Yield 0.5w - { foot right } @Yield 1.0w - { mark } @Yield "+0i" - else @Yield x - } - } - - def @ALabel - { - @DoLabel - which { "a" } - label { alabel @Else nodelabel } - labelmargin { alabelmargin @Else nodelabelmargin } - labelfont { alabelfont @Else nodelabelfont } - labelbreak { alabelbreak @Else nodelabelbreak } - labelformat { alabelformat @Body @Else nodelabelformat @Body} - labelpos { alabelpos @Else nodelabelpos } - labelprox { alabelprox @Else nodelabelprox } - labelangle { alabelangle @Else nodelabelangle } - labelctr { alabelctr @Else nodelabelctr } - labeladjust { alabeladjust @Else nodelabeladjust } - } - - def @BLabel - { - @DoLabel - which { "b" } - label { blabel @Else nodelabel } - labelmargin { blabelmargin @Else nodelabelmargin } - labelfont { blabelfont @Else nodelabelfont } - labelbreak { blabelbreak @Else nodelabelbreak } - labelformat { blabelformat @Body @Else nodelabelformat @Body} - labelpos { blabelpos @Else nodelabelpos } - labelprox { blabelprox @Else nodelabelprox } - labelangle { blabelangle @Else nodelabelangle } - labelctr { blabelctr @Else nodelabelctr } - labeladjust { blabeladjust @Else nodelabeladjust } - } - - def @CLabel - { - @DoLabel - which { "c" } - label { clabel @Else nodelabel } - labelmargin { clabelmargin @Else nodelabelmargin } - labelfont { clabelfont @Else nodelabelfont } - labelbreak { clabelbreak @Else nodelabelbreak } - labelformat { clabelformat @Body @Else nodelabelformat @Body} - labelpos { clabelpos @Else nodelabelpos } - labelprox { clabelprox @Else nodelabelprox } - labelangle { clabelangle @Else nodelabelangle } - labelctr { clabelctr @Else nodelabelctr } - labeladjust { clabeladjust @Else nodelabeladjust } - } - - def @DLabel - { - @DoLabel - which { "d" } - label { dlabel @Else nodelabel } - labelmargin { dlabelmargin @Else nodelabelmargin } - labelfont { dlabelfont @Else nodelabelfont } - labelbreak { dlabelbreak @Else nodelabelbreak } - labelformat { dlabelformat @Body @Else nodelabelformat @Body} - labelpos { dlabelpos @Else nodelabelpos } - labelprox { dlabelprox @Else nodelabelprox } - labelangle { dlabelangle @Else nodelabelangle } - labelctr { dlabelctr @Else nodelabelctr } - labeladjust { dlabeladjust @Else nodelabeladjust } - } - - import @Geometry - def @OutLine - { - @BackEnd @Case { - PostScript @Yield { - outline @Case { - box @Yield { "ldiagbox" } - curvebox @Yield { "("margin") ldiagcurvebox" } - shadowbox @Yield { shadow "ldiagshadow ldiagbox" } - square @Yield { "ldiagsquare" } - diamond @Yield { "ldiagdiamond" } - polygon @Yield { sides angle "ldiagpolygon" } - isosceles @Yield { "ldiagisosceles" } - ellipse @Yield { "ldiagellipse" } - circle @Yield { "ldiagcircle" } - else @Yield { - outline - margin { "("margin") ldiagdecodelength" } - shadow { shadow } - sides { sides } - angle { angle } - } - } - } - PDF @Yield {} - } - } - - def @Value - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - { - "ldiagnodebegin [" @OutLine "]" outlinedashlength - "[" outlinestyle "]" outlinewidth - "{" @ColourCommand outlinecolour "}" - paint @PSAddPaint texture "ldiagnodeend" - "(IN) ldiagpushtagdict" - // - "ldiagpopuptagdict" - } - @Graphic - { - {@Align valign} @VShift {@Align halign} @HShift - @AddMargins - mtop { topmargin @Else vmargin @Else margin } - mfoot { footmargin @Else vmargin @Else margin } - mleft { leftmargin @Else hmargin @Else margin } - mright { rightmargin @Else hmargin @Else margin } - @HSize @VSize @HContract @VContract - font @Font break @Break format @Strut @Body - } - / {alabel @Else nodelabel} @IfNonEmpty @ALabel - / {blabel @Else nodelabel} @IfNonEmpty @BLabel - / {clabel @Else nodelabel} @IfNonEmpty @CLabel - / {dlabel @Else nodelabel} @IfNonEmpty @DLabel - } - } - PDF @Yield {} - } - } - - def @TValue - { - nodetag @Case { - "" @Yield @Value - else @Yield { nodetag:: @Value } - } - } - - translate @Case { - "" @Yield @TValue - else @Yield { - @Null & # so that preceding space gets chewed up - @Transform translate { translate } rotate { rotate } @TValue - } - } - } - - - ####################################################################### - # # - # @ENode # - # # - ####################################################################### - - def @ENode - import @Geometry named translate - named to precedence 10 left x right y { - @BackEnd @Case { - PostScript @Yield { x y "ldiagpsub" } - PDF @Yield {""} - } - } - {} - import @Geometry named rotate { 0d } - import @Geometry named outline - named margin {} - named shadow {} - named sides {} - named angle {} - { eoutline - margin { margin } - shadow { shadow } - sides { sides } - angle { angle } - } - named margin { emargin } - import @Geometry named shadow { eshadow } - import @Geometry named sides { esides } - import @Geometry named angle { eangle } - named nodetag { enodetag } - named outlinestyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { eoutlinestyle } - import @Geometry named outlinedashlength { eoutlinedashlength} - import @Geometry named outlinewidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { eoutlinewidth } - named outlinecolour outlinecolor { eoutlinecolour } - named paint { epaint } - import @TextureImport named texture { etexture } - named font { efont } - named break { ebreak } - named format right @Body { eformat @Body } - named valign { evalign } - named vsize { evsize } - named vindent { evindent } - named vstrut - named no { 0.0f } - named yes { 1.0f } - { evstrut } - named vmargin { evmargin } - named topmargin { etopmargin } - named footmargin { efootmargin } - - named halign { ehalign } - named hsize { ehsize } - named hindent { ehindent } - named hstrut - named no { 0.0f } - named yes { 1.0f } - { ehstrut } - named hmargin { ehmargin } - named leftmargin { eleftmargin } - named rightmargin { erightmargin } - - named nodelabel { enodelabel } - named nodelabelmargin { enodelabelmargin } - named nodelabelfont { enodelabelfont } - named nodelabelbreak { enodelabelbreak } - named nodelabelformat right @Body { enodelabelformat @Body } - import @Geometry named nodelabelpos { enodelabelpos } - named nodelabelprox { enodelabelprox } - import @Geometry named nodelabelangle { enodelabelangle } - named nodelabelctr { enodelabelctr } - import @Geometry named nodelabeladjust { enodelabeladjust } - - named alabel { ealabel } - named alabelmargin { ealabelmargin } - named alabelfont { ealabelfont } - named alabelbreak { ealabelbreak } - named alabelformat right @Body { ealabelformat @Body } - import @Geometry named alabelpos { ealabelpos } - named alabelprox { ealabelprox } - import @Geometry named alabelangle { ealabelangle } - named alabelctr { ealabelctr } - import @Geometry named alabeladjust { ealabeladjust } - - named blabel { eblabel } - named blabelmargin { eblabelmargin } - named blabelfont { eblabelfont } - named blabelbreak { eblabelbreak } - named blabelformat right @Body { eblabelformat @Body } - import @Geometry named blabelpos { eblabelpos } - named blabelprox { eblabelprox } - import @Geometry named blabelangle { eblabelangle } - named blabelctr { eblabelctr } - import @Geometry named blabeladjust { eblabeladjust } - - named clabel { eclabel } - named clabelmargin { eclabelmargin } - named clabelfont { eclabelfont } - named clabelbreak { eclabelbreak } - named clabelformat right @Body { eclabelformat @Body } - import @Geometry named clabelpos { eclabelpos } - named clabelprox { eclabelprox } - import @Geometry named clabelangle { eclabelangle } - named clabelctr { eclabelctr } - import @Geometry named clabeladjust { eclabeladjust } - - named dlabel { edlabel } - named dlabelmargin { edlabelmargin } - named dlabelfont { edlabelfont } - named dlabelbreak { edlabelbreak } - named dlabelformat right @Body { edlabelformat @Body } - import @Geometry named dlabelpos { edlabelpos } - named dlabelprox { edlabelprox } - import @Geometry named dlabelangle { edlabelangle } - named dlabelctr { edlabelctr } - import @Geometry named dlabeladjust { edlabeladjust } - - right @Body - { - - def @LabelPos - left x - right y - { - nodelabelpos @Case { - x @Yield y - else @Yield "" - } - } - - def @If - left cond - right x - { - cond @Case { - { yes Yes } @Yield x - else @Yield "" - } - } - - - def @Strut right x - { - def vs { 0.5w @VShift { vstrut @High } } - def hs { hstrut @Wide } - - @HContract @VContract { - @HContract @VContract x | vs / hs | - } - } - - def @Indent right x - { - x @Case { - { top left } @Yield 0.0rt - { ctr } @Yield 0.5rt - { foot right } @Yield 1.0rt - { mctr } @Yield 0.5bx - else @Yield x - } - } - - def @VSize right x - { - vsize @Case { - "" @Yield x - else @Yield { vsize @High { /{@Indent vindent} x / } } - } - } - - def @HSize right x - { - hsize @Case { - "" @Yield x - else @Yield { hsize @Wide { |{@Indent hindent} x | } } - } - } - - def @Align right x - { - x @Case { - { top left } @Yield 0.0w - { ctr } @Yield 0.5w - { foot right } @Yield 1.0w - { mark } @Yield "+0i" - else @Yield x - } - } - - def @ALabel - { - @DoLabel - which { "a" } - label { alabel @Else nodelabel } - labelmargin { alabelmargin @Else nodelabelmargin } - labelfont { alabelfont @Else nodelabelfont } - labelbreak { alabelbreak @Else nodelabelbreak } - labelformat { alabelformat @Body @Else nodelabelformat @Body} - labelpos { alabelpos @Else nodelabelpos } - labelprox { alabelprox @Else nodelabelprox } - labelangle { alabelangle @Else nodelabelangle } - labelctr { alabelctr @Else nodelabelctr } - labeladjust { alabeladjust @Else nodelabeladjust } - } - - def @BLabel - { - @DoLabel - which { "b" } - label { blabel @Else nodelabel } - labelmargin { blabelmargin @Else nodelabelmargin } - labelfont { blabelfont @Else nodelabelfont } - labelbreak { blabelbreak @Else nodelabelbreak } - labelformat { blabelformat @Body @Else nodelabelformat @Body} - labelpos { blabelpos @Else nodelabelpos } - labelprox { blabelprox @Else nodelabelprox } - labelangle { blabelangle @Else nodelabelangle } - labelctr { blabelctr @Else nodelabelctr } - labeladjust { blabeladjust @Else nodelabeladjust } - } - - def @CLabel - { - @DoLabel - which { "c" } - label { clabel @Else nodelabel } - labelmargin { clabelmargin @Else nodelabelmargin } - labelfont { clabelfont @Else nodelabelfont } - labelbreak { clabelbreak @Else nodelabelbreak } - labelformat { clabelformat @Body @Else nodelabelformat @Body} - labelpos { clabelpos @Else nodelabelpos } - labelprox { clabelprox @Else nodelabelprox } - labelangle { clabelangle @Else nodelabelangle } - labelctr { clabelctr @Else nodelabelctr } - labeladjust { clabeladjust @Else nodelabeladjust } - } - - def @DLabel - { - @DoLabel - which { "d" } - label { dlabel @Else nodelabel } - labelmargin { dlabelmargin @Else nodelabelmargin } - labelfont { dlabelfont @Else nodelabelfont } - labelbreak { dlabelbreak @Else nodelabelbreak } - labelformat { dlabelformat @Body @Else nodelabelformat @Body} - labelpos { dlabelpos @Else nodelabelpos } - labelprox { dlabelprox @Else nodelabelprox } - labelangle { dlabelangle @Else nodelabelangle } - labelctr { dlabelctr @Else nodelabelctr } - labeladjust { dlabeladjust @Else nodelabeladjust } - } - - import @Geometry - def @OutLine - { - @BackEnd @Case { - PostScript @Yield { - outline @Case { - box @Yield { "ldiagbox" } - curvebox @Yield { "("margin") ldiagcurvebox" } - shadowbox @Yield { shadow "ldiagshadow ldiagbox" } - square @Yield { "ldiagsquare" } - diamond @Yield { "ldiagdiamond" } - polygon @Yield { sides angle "ldiagpolygon" } - isosceles @Yield { "ldiagisosceles" } - ellipse @Yield { "ldiagellipse" } - circle @Yield { "ldiagcircle" } - else @Yield { - outline - margin { "("margin") ldiagdecodelength" } - shadow { shadow } - sides { sides } - angle { angle } - } - } - } - PDF @Yield {} - } - } - - def @Value - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - { - "ldiagnodebegin [" @OutLine "]" outlinedashlength - "[" outlinestyle "]" outlinewidth - "{" @ColourCommand outlinecolour "}" - paint @PSAddPaint texture "ldiagnodeend" - "(IN) ldiagpushtagdict" - // - "ldiagpopuptagdict" - } - @Graphic - { - {@Align valign} @VShift {@Align halign} @HShift - @AddMargins - mtop { topmargin @Else vmargin @Else margin } - mfoot { footmargin @Else vmargin @Else margin } - mleft { leftmargin @Else hmargin @Else margin } - mright { rightmargin @Else hmargin @Else margin } - @HSize @VSize @HContract @VContract - font @Font break @Break format @Strut @Body - } - / {alabel @Else nodelabel} @IfNonEmpty @ALabel - / {blabel @Else nodelabel} @IfNonEmpty @BLabel - / {clabel @Else nodelabel} @IfNonEmpty @CLabel - / {dlabel @Else nodelabel} @IfNonEmpty @DLabel - } - } - PDF @Yield {} - } - } - - def @TValue - { - nodetag @Case { - "" @Yield @Value - else @Yield { nodetag:: @Value } - } - } - - translate @Case { - "" @Yield @TValue - else @Yield { - @Null & # so that preceding space gets chewed up - @Transform translate { translate } rotate { rotate } @TValue - } - } - } - - - ####################################################################### - # # - # @Box, @CurveBox, and other standard node abbreviations # - # # - ####################################################################### - - macro @@Node { @Node } - macro @Box { @Node outline { box } } - macro @CurveBox { @Node outline { curvebox } } - macro @ShadowBox { @Node outline { shadowbox } } - macro @Square { @Node outline { square } } - macro @Diamond { @Node outline { diamond } } - macro @Polygon { @Node outline { polygon } } - macro @Isosceles { @Node outline { isosceles } } - macro @Ellipse { @Node outline { ellipse } } - macro @Circle { @Node outline { circle } } - - - ####################################################################### - # # - # Arrowheads # - # # - ####################################################################### - - macro @InsulatedNode { - @Node - topmargin { 0i } - footmargin { 0i } - leftmargin { 0i } - rightmargin { 0i } - alabel {} - blabel {} - clabel {} - dlabel {} - hsize {} - vsize {} - vstrut { no } - hstrut { no } - paint { nochange } - texture { solid } - outlinestyle { noline } - } - - def @SolidArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { - @BackEnd @Case { - PostScript @Yield { - "ldiagsolidarrowhead" - } - PDF @Yield {} - } - } - { - length @Wide width @High - } - } - - def @SolidWithBarArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { - @BackEnd @Case { - PostScript @Yield { - pathwidth "ldiagsolidwithbararrowhead" - } - PDF @Yield {} - } - } - { - length @Wide width @High - } - } - - def @OpenArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - named pathgap { pathgap } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { - @BackEnd @Case { - PostScript @Yield { - pathwidth pathgap "ldiagopenarrowhead" - } - PDF @Yield {} - } - } - { - length @Wide width @High - } - } - - def @HalfOpenArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - named pathgap { pathgap } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { - @BackEnd @Case { - PostScript @Yield { - pathwidth pathgap "ldiaghalfopenarrowhead" - } - PDF @Yield {} - } - } - { - length @Wide width @High - } - } - - def @SolidCurvedArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { - @BackEnd @Case { - PostScript @Yield { - "ldiagsolidcurvedarrowhead" - } - PDF @Yield {} - } - } - { - length @Wide width @High - } - } - - def @OpenCurvedArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - named pathgap { pathgap } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { - @BackEnd @Case { - PostScript @Yield { - pathwidth pathgap "ldiagopencurvedarrowhead" - } - PDF @Yield {} - } - } - { - length @Wide width @High - } - } - - def @HalfOpenCurvedArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - named pathgap { pathgap } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { - @BackEnd @Case { - PostScript @Yield { - pathwidth pathgap "ldiaghalfopencurvedarrowhead" - } - PDF @Yield {} - } - } - { - length @Wide width @High - } - } - - def @CircleArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { circle } - { length @Wide length @High } - } - - def @BoxArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { box } - { length @Wide width @High } - } - - def @ManyArrowHead - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - { - @InsulatedNode - outlinewidth { pathwidth } - outline { - @BackEnd @Case { - PostScript @Yield { pathwidth "ldiagmanyarrowhead" } - PDF @Yield {} - } - } - { length @Wide width @High } - } - - def @ArrowHead - named style { arrowstyle } - named width { arrowwidth } - named length { arrowlength } - named pathwidth { pathwidth } - named pathcolour { pathcolour } - named pathgap { pathgap } - { - {@ColourCommand pathcolour} @SetColour style @Case { - solid @Yield @SolidArrowHead - width { width } length { length } - pathwidth { pathwidth } - solidwithbar @Yield @SolidWithBarArrowHead - width { width } length { length } - pathwidth { pathwidth } - halfopen @Yield @HalfOpenArrowHead - width { width } length { length } - pathwidth { pathwidth } pathgap { pathgap } - open @Yield @OpenArrowHead - width { width } length { length } - pathwidth { pathwidth } pathgap { pathgap } - curvedsolid @Yield @SolidCurvedArrowHead - width { width } length { length } - pathwidth { pathwidth } - curvedhalfopen @Yield @HalfOpenCurvedArrowHead - width { width } length { length } - pathwidth { pathwidth } pathgap { pathgap } - curvedopen @Yield @OpenCurvedArrowHead - width { width } length { length } - pathwidth { pathwidth } pathgap { pathgap } - circle @Yield @CircleArrowHead - width { width } length { length } - pathwidth { pathwidth } - box @Yield @BoxArrowHead - width { width } length { length } - pathwidth { pathwidth } - many @Yield @ManyArrowHead - width { width } length { length } - pathwidth { pathwidth } - } - } - - - ####################################################################### - # # - # @Link # - # # - ####################################################################### - - def @Link - import @Geometry named path - named from {} - named to {} - named bias {} - named fbias {} - named tbias {} - named hfrac {} - named hbias {} - named radius {} - named xindent {} - named zindent {} - named frompt {} - named topt {} - named arrow {} - named arrowlength {} - named backarrowlength {} - { path - from { from } - to { to } - bias { bias } - fbias { fbias } - tbias { tbias } - hfrac { hfrac } - hbias { hbias } - radius { radius } - xindent { xindent } - zindent { zindent } - frompt { frompt } - topt { topt } - arrow { arrow } - arrowlength { arrowlength } - backarrowlength { backarrowlength } - } - import @Geometry named from { from } - import @Geometry named to { to } - import @Geometry named bias { bias } - import @Geometry named fbias { fbias } - import @Geometry named tbias { tbias } - import @Geometry named hfrac { hfrac } - import @Geometry named hbias { hbias } - import @Geometry named radius { radius } - import @Geometry named xindent { xindent } - import @Geometry named zindent { zindent } - import @Geometry named frompt { frompt } - import @Geometry named topt { topt } - named pathstyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { pathstyle } - import @Geometry named pathdashlength { pathdashlength } - import @Geometry named pathwidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { pathwidth } - named pathcolour pathcolor { pathcolour } - import @Geometry named pathgap - named thin { 0.08 ft } - named medium { 0.16 ft } - named thick { 0.24 ft } - { pathgap } - - named arrow { arrow } - named arrowstyle { arrowstyle } - named arrowwidth { arrowwidth } - named arrowlength { arrowlength } - named backarrowstyle { backarrowstyle } - named backarrowwidth { backarrowwidth } - named backarrowlength { backarrowlength } - - named linklabel { linklabel } - named linklabelmargin { linklabelmargin } - named linklabelfont { linklabelfont } - named linklabelbreak { linklabelbreak } - named linklabelformat right @Body { linklabelformat @Body } - import @Geometry named linklabelpos { linklabelpos } - named linklabelprox { linklabelprox } - import @Geometry named linklabelangle { linklabelangle } - named linklabelctr { linklabelctr } - import @Geometry named linklabeladjust { linklabeladjust } - - named xlabel { xlabel } - named xlabelmargin { xlabelmargin } - named xlabelfont { xlabelfont } - named xlabelbreak { xlabelbreak } - named xlabelformat right @Body { xlabelformat @Body } - import @Geometry named xlabelpos { xlabelpos } - named xlabelprox { xlabelprox } - import @Geometry named xlabelangle { xlabelangle } - named xlabelctr { xlabelctr } - import @Geometry named xlabeladjust { xlabeladjust } - - named ylabel { ylabel } - named ylabelmargin { ylabelmargin } - named ylabelfont { ylabelfont } - named ylabelbreak { ylabelbreak } - named ylabelformat right @Body { ylabelformat @Body } - import @Geometry named ylabelpos { ylabelpos } - named ylabelprox { ylabelprox } - import @Geometry named ylabelangle { ylabelangle } - named ylabelctr { ylabelctr } - import @Geometry named ylabeladjust { ylabeladjust } - - named zlabel { zlabel } - named zlabelmargin { zlabelmargin } - named zlabelfont { zlabelfont } - named zlabelbreak { zlabelbreak } - named zlabelformat right @Body { zlabelformat @Body } - import @Geometry named zlabelpos { zlabelpos } - named zlabelprox { zlabelprox } - import @Geometry named zlabelangle { zlabelangle } - named zlabelctr { zlabelctr } - import @Geometry named zlabeladjust { zlabeladjust } - - named fromlabel { fromlabel } - named fromlabelmargin { fromlabelmargin } - named fromlabelfont { fromlabelfont } - named fromlabelbreak { fromlabelbreak } - named fromlabelformat right @Body { fromlabelformat @Body } - import @Geometry named fromlabelpos { fromlabelpos } - named fromlabelprox { fromlabelprox } - import @Geometry named fromlabelangle { fromlabelangle } - named fromlabelctr { fromlabelctr } - import @Geometry named fromlabeladjust { fromlabeladjust } - - named tolabel { tolabel } - named tolabelmargin { tolabelmargin } - named tolabelfont { tolabelfont } - named tolabelbreak { tolabelbreak } - named tolabelformat right @Body { tolabelformat @Body } - import @Geometry named tolabelpos { tolabelpos } - named tolabelprox { tolabelprox } - import @Geometry named tolabelangle { tolabelangle } - named tolabelctr { tolabelctr } - import @Geometry named tolabeladjust{ tolabeladjust } - - { - def @XLabel - { - @DoLabel - which { "x" } - label { xlabel @Else linklabel } - labelmargin { xlabelmargin @Else linklabelmargin } - labelfont { xlabelfont @Else linklabelfont } - labelbreak { xlabelbreak @Else linklabelbreak } - labelformat { xlabelformat @Body @Else linklabelformat @Body} - labelpos { xlabelpos @Else linklabelpos } - labelprox { xlabelprox @Else linklabelprox } - labelangle { xlabelangle @Else linklabelangle } - labelctr { xlabelctr @Else linklabelctr } - labeladjust { xlabeladjust @Else linklabeladjust } - } - - def @YLabel - { - @DoLabel - which { "y" } - label { ylabel @Else linklabel } - labelmargin { ylabelmargin @Else linklabelmargin } - labelfont { ylabelfont @Else linklabelfont } - labelbreak { ylabelbreak @Else linklabelbreak } - labelformat { ylabelformat @Body @Else linklabelformat @Body} - labelpos { ylabelpos @Else linklabelpos } - labelprox { ylabelprox @Else linklabelprox } - labelangle { ylabelangle @Else linklabelangle } - labelctr { ylabelctr @Else linklabelctr } - labeladjust { ylabeladjust @Else linklabeladjust } - } - - def @ZLabel - { - @DoLabel - which { "z" } - label { zlabel @Else linklabel } - labelmargin { zlabelmargin @Else linklabelmargin } - labelfont { zlabelfont @Else linklabelfont } - labelbreak { zlabelbreak @Else linklabelbreak } - labelformat { zlabelformat @Body @Else linklabelformat @Body} - labelpos { zlabelpos @Else linklabelpos } - labelprox { zlabelprox @Else linklabelprox } - labelangle { zlabelangle @Else linklabelangle } - labelctr { zlabelctr @Else linklabelctr } - labeladjust { zlabeladjust @Else linklabeladjust } - } - - def @PathGap - { - path @Case { - doubleline @Yield { pathgap } - else @Yield { "0" } - } - } - - def @FromArrow - { - arrow @Case { - { back both } @Yield { - @ArrowHead - style { backarrowstyle } - width { backarrowwidth } - length { backarrowlength } - pathwidth { pathwidth } - pathcolour { pathcolour } - pathgap { @PathGap } - } - else @Yield "" - } - } - - def @ToArrow - { - arrow @Case { - { yes forward both } @Yield { - @ArrowHead - style { arrowstyle } - width { arrowwidth } - length { arrowlength } - pathwidth { pathwidth } - pathcolour { pathcolour } - pathgap { @PathGap } - } - else @Yield "" - } - } - - import @Geometry - def @LinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent "ldiaglinepath" - # FROM :< {from??CTR angleto to??CTR} - # FROM :: from boundaryatangle FROM@ANGLE - # ++ {arrow @FromArrowLength backarrowlength}atangle FROM@ANGLE - # TO :< FROM@ANGLE - # TO :: to boundaryatangle { TO@ANGLE - 180d } - # ++ {arrow @ToArrowLength arrowlength} atangle {TO@ANGLE - 180d} - # - # LMID :: FROM ** 0.5 ++ TO ** 0.5 - # LMID :< FROM@ANGLE - # XINDENT := xindent min { FROM distance LMID } - # LFROM :: FROM ++ XINDENT atangle FROM@ANGLE - # LFROM :< FROM@ANGLE - # ZINDENT := zindent min { TO distance LMID } - # LTO :: TO -- ZINDENT atangle FROM@ANGLE - # LTO :< FROM@ANGLE - # - # if cond { direct } - # then { FROM TO } - # else { FROM LFROM LMID LTO TO } - } - PDF @Yield {} - } - } - - import @Geometry - def @DoubleLinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent pathgap "ldiagdoublelinepath" - # FROM :< {from??CTR angleto to??CTR} - # FROM :: from boundaryatangle FROM@ANGLE - # ++ {arrow @FromArrowLength backarrowlength}atangle FROM@ANGLE - # TO :< FROM@ANGLE - # TO :: to boundaryatangle { TO@ANGLE - 180d } - # ++ {arrow @ToArrowLength arrowlength} atangle {TO@ANGLE - 180d} - # - # LMID :: FROM ** 0.5 ++ TO ** 0.5 - # LMID :< FROM@ANGLE - # XINDENT := xindent min { FROM distance LMID } - # LFROM :: FROM ++ XINDENT atangle FROM@ANGLE - # LFROM :< FROM@ANGLE - # ZINDENT := zindent min { TO distance LMID } - # LTO :: TO -- ZINDENT atangle FROM@ANGLE - # LTO :< FROM@ANGLE - # - # if cond { direct } - # then { FROM TO } - # else { FROM LFROM LMID LTO TO } - } - PDF @Yield {} - } - } - - import @Geometry - def @ACurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias "ldiagacurvepath" - # #B1 := bias max 0.02f - # #B2 := { from??CTR distance to??CTR } * 0.5 - # #BIAS := B1 min B2 - # BIAS := bias max 0.02f - # XMID := from??CTR ** 0.5 ++ to??CTR ** 0.5 - # XTOP := XMID ++ BIAS atangle {from??CTR angleto to??CTR - 90d} - # CTR := { from??CTR XTOP ldiaglinebetween - # to??CTR XTOP ldiaglinebetween ldiaglineintersect } - # FROM :: aabout - # circum { from } - # extra { arrow @FromArrowLength backarrowlength } - # centre { CTR } - # FROM :< if cond { from??CTR distance FROM > 0 } - # then { from??CTR angleto FROM } - # else { CTR angleto FROM + 90d } - # TO :: cabout - # circum { to } - # extra { arrow @ToArrowLength arrowlength } - # centre { CTR } - # TO :< if cond { TO distance to??CTR > 0 } - # then { TO angleto to??CTR } - # else { CTR angleto TO + 90d } - # - # RADIUS := CTR distance FROM - # LMID :: CTR ++ RADIUS atangle { - # CTR angleto FROM + - # { {360d + {CTR angleto TO} - {CTR angleto FROM}} mod 360 } / 2 - # } - # LMID :< CTR angleto LMID + 90d - # - # XINDENT := xindent min { FROM distance LMID } - # LFROM :: CTR ++ RADIUS atangle { - # CTR angleto { FROM ++ XINDENT atangle FROM@ANGLE } } - # LFROM :< CTR angleto LFROM + 90d - # ZINDENT := zindent min { TO distance LMID } - # LTO :: CTR ++ RADIUS atangle { - # CTR angleto { TO ++ ZINDENT atangle {TO@ANGLE+180d}}} - # LTO :< CTR angleto LTO + 90d - # - # if cond { direct } - # then { FROM [CTR] TO } - # else { FROM [CTR] LFROM [CTR] LMID [CTR] LTO [CTR] TO } - } - PDF @Yield {} - } - } - - import @Geometry - def @CCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias "ldiagccurvepath" - # #B1 := bias max 0.02f - # #B2 := { from??CTR distance to??CTR } * 0.5 - # #BIAS := B1 min B2 - # BIAS := bias max 0.02f - # XMID := from??CTR ** 0.5 ++ to??CTR ** 0.5 - # XTOP := XMID ++ BIAS atangle {from??CTR angleto to??CTR + 90d} - # CTR := { from??CTR XTOP ldiaglinebetween - # to??CTR XTOP ldiaglinebetween ldiaglineintersect } - # FROM :: cabout - # circum { from } - # extra { arrow @FromArrowLength backarrowlength } - # centre { CTR } - # FROM :< if cond { from??CTR distance FROM > 0 } - # then { from??CTR angleto FROM } - # else { CTR angleto FROM - 90d } - # TO :: aabout - # circum { to } - # extra { arrow @ToArrowLength arrowlength } - # centre { CTR } - # TO :< if cond { TO distance to??CTR > 0 } - # then { TO angleto to??CTR } - # else { CTR angleto TO - 90d } - # - # RADIUS := CTR distance FROM - # LMID :: CTR ++ RADIUS atangle { - # CTR angleto TO + - # { {360d + {CTR angleto FROM} - {CTR angleto TO} } mod 360 } / 2 - # } - # LMID :< CTR angleto LMID - 90d - # - # XINDENT := xindent min { FROM distance LMID } - # LFROM :: CTR ++ RADIUS atangle { - # CTR angleto { FROM ++ XINDENT atangle FROM@ANGLE } } - # LFROM :< CTR angleto LFROM - 90d - # ZINDENT := zindent min { TO distance LMID } - # LTO :: CTR ++ RADIUS atangle { - # CTR angleto { TO ++ ZINDENT atangle {TO@ANGLE+180d}}} - # LTO :< CTR angleto LTO - 90d - # - # if cond { direct } - # then { FROM [CTR clockwise] TO } - # else { FROM [CTR clockwise] LFROM [CTR clockwise] - # LMID [CTR clockwise] LTO [CTR clockwise] TO } - } - PDF @Yield {} - } - } - - import @Geometry - def @BezierPath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent [ frompt ] [ topt ] "ldiagbezierpath" - # FROM :< from??CTR angleto frompt - # FROM :: from boundaryatangle FROM@ANGLE - # ++ {arrow @FromArrowLength backarrowlength} atangle FROM@ANGLE - # TO :< topt angleto to??CTR - # TO :: to boundaryatangle { TO@ANGLE + 180d } - # ++ {arrow @ToArrowLength arrowlength} atangle { TO@ANGLE + 180d } - # LFROM :: FROM ++ { xindent atangle FROM@ANGLE } - # LFROM :< FROM@ANGLE - # LTO :: TO ++ zindent atangle { TO@ANGLE + 180d } - # LTO :< TO@ANGLE - # LMID :: { FROM ++ TO ++ frompt ++ topt } ** 0.25 - # FROM [frompt topt] TO - } - PDF @Yield {} - } - } - - import @Geometry - def @VHLinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent "ldiagvhlinepath" - # CTR := { {xcoord from??CTR} {ycoord to??CTR} } - # FANG := from??CTR angleto CTR - # TANG := to??CTR angleto CTR - # FROM :: from boundaryatangle FANG - # ++ {arrow @FromArrowLength backarrowlength} atangle FANG - # FROM :< FANG - # TO :: to boundaryatangle TANG - # ++ {arrow @ToArrowLength arrowlength} atangle TANG - # TO :< TANG + 180d - # FDIST := FROM distance CTR - # TDIST := TO distance CTR - # XINDENT := xindent min FDIST - # ZINDENT := zindent min TDIST - # LFROM :: FROM ++ XINDENT atangle FANG - # LFROM :< FROM@ANGLE - # LTO :: TO ++ ZINDENT atangle TANG - # LTO :< TO@ANGLE - # LMID :: CTR - # LMID :< {1f atangle {FANG + 180d}} angleto - # {1f atangle {TANG + 180d}} - # FROM LFROM LMID LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @VHCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent radius "ldiagvhcurvepath" - # CTR := { {xcoord from??CTR} {ycoord to??CTR} } - # FANG := from??CTR angleto CTR - # TANG := to??CTR angleto CTR - # FROM :: from boundaryatangle FANG - # ++ {arrow @FromArrowLength backarrowlength} atangle FANG - # FROM :< FANG - # TO :: to boundaryatangle TANG - # ++ {arrow @ToArrowLength arrowlength} atangle TANG - # TO :< TANG + 180d - # FDIST := FROM distance CTR - # TDIST := TO distance CTR - # RADIUS := radius min FDIST min TDIST - # XINDENT := xindent min { FDIST - RADIUS } - # ZINDENT := zindent min { TDIST - RADIUS } - # LFROM :: FROM ++ XINDENT atangle FANG - # LFROM :< FROM@ANGLE - # LTO :: TO ++ ZINDENT atangle TANG - # LTO :< TO@ANGLE - # FCTR := CTR ++ RADIUS atangle { FROM@ANGLE + 180d } - # TCTR := CTR ++ RADIUS atangle { TO@ANGLE } - # XCTR := CTR ++ RADIUS atangle { FROM@ANGLE + 180d } - # ++ RADIUS atangle { TO@ANGLE } - # LMID :: XCTR ++ RADIUS atangle { XCTR angleto CTR } - # LMID :< FCTR angleto TCTR - # FROM LFROM FCTR - # { FCTR angleto TCTR } quadcase - # 0 { } - # 0-90 { [XCTR clockwise] } - # 90 { } - # 90-180 { [XCTR] } - # 180 { } - # 180-270 { [XCTR clockwise] } - # 270 { } - # 270-360 { [XCTR] } - # TCTR LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @HVLinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent "ldiaghvlinepath" - # CTR := { {xcoord to??CTR} {ycoord from??CTR} } - # FANG := from??CTR angleto CTR - # TANG := to??CTR angleto CTR - # FROM :: from boundaryatangle FANG - # ++ {arrow @FromArrowLength backarrowlength} atangle FANG - # FROM :< FANG - # TO :: to boundaryatangle TANG - # ++ {arrow @ToArrowLength arrowlength} atangle TANG - # TO :< TANG + 180d - # FDIST := FROM distance CTR - # TDIST := TO distance CTR - # XINDENT := xindent min FDIST - # ZINDENT := zindent min TDIST - # LFROM :: FROM ++ XINDENT atangle FANG - # LFROM :< FROM@ANGLE - # LTO :: TO ++ ZINDENT atangle TANG - # LTO :< TO@ANGLE - # LMID :: CTR - # LMID :< {1f atangle {FANG + 180d}} angleto - # {1f atangle {TANG + 180d}} - # FROM LFROM LMID LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @HVCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent radius "ldiaghvcurvepath" - # CTR := { {xcoord to??CTR} {ycoord from??CTR} } - # FANG := from??CTR angleto CTR - # TANG := to??CTR angleto CTR - # FROM :: from boundaryatangle FANG - # ++ {arrow @FromArrowLength backarrowlength} atangle FANG - # FROM :< FANG - # TO :: to boundaryatangle TANG - # ++ {arrow @ToArrowLength arrowlength} atangle TANG - # TO :< TANG + 180d - # FDIST := FROM distance CTR - # TDIST := TO distance CTR - # RADIUS := radius min FDIST min TDIST - # XINDENT := xindent min { FDIST - RADIUS } - # ZINDENT := zindent min { TDIST - RADIUS } - # LFROM :: FROM ++ XINDENT atangle FANG - # LFROM :< FROM@ANGLE - # LTO :: TO ++ ZINDENT atangle TANG - # LTO :< TO@ANGLE - # FCTR := CTR ++ RADIUS atangle { FROM@ANGLE + 180d } - # TCTR := CTR ++ RADIUS atangle { TO@ANGLE } - # XCTR := CTR ++ RADIUS atangle { FROM@ANGLE + 180d } - # ++ RADIUS atangle { TO@ANGLE } - # LMID :: XCTR ++ RADIUS atangle { XCTR angleto CTR } - # LMID :< FCTR angleto TCTR - # FROM LFROM FCTR - # { FCTR angleto TCTR } quadcase - # 0 { } - # 0-90 { [XCTR] } - # 90 { } - # 90-180 { [XCTR clockwise] } - # 180 { } - # 180-270 { [XCTR] } - # 270 { } - # 270-360 { [XCTR clockwise] } - # TCTR LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @LVRLinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias "ldiaglvrlinepath" - # FROM :: from boundaryatangle 180d - # ++ {arrow @FromArrowLength backarrowlength} atangle 180d - # FROM :< 180d - # TO :: to boundaryatangle 180d - # ++ {arrow @ToArrowLength arrowlength} atangle 180d - # TO :< 0d - # XLEFT := {{xcoord FROM} min {xcoord TO}} - bias - # P1 :: { XLEFT ycoord FROM } - # P2 :: { XLEFT ycoord TO } - # VERT := P1 angleto P2 - # P1 :< P1 angleto {P1++{1f atangle 180d}++{1f atangle VERT}} - # P2 :< P2 angleto {P2++{1f atangle 0d} ++{1f atangle VERT}} - # LMID :: P1 ** 0.5 ++ P2 ** 0.5 - # LMID :< VERT - # XINDENT := xindent min {FROM distance P1} - # ZINDENT := zindent min {P2 distance TO} - # LFROM :: FROM -- { XINDENT 0 } - # LFROM :< 180d - # LTO :: TO -- { ZINDENT 0 } - # LTO :< 0d - # FROM LFROM P1 LMID P2 LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @LVRCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias radius "ldiaglvrcurvepath" - # FROM :: from boundaryatangle 180d - # ++ {arrow @FromArrowLength backarrowlength} atangle 180d - # FROM :< 180d - # TO :: to boundaryatangle 180d - # ++ {arrow @ToArrowLength arrowlength} atangle 180d - # TO :< 0d - # XLEFT := {{xcoord FROM} min {xcoord TO}} - bias - # XP1 := { XLEFT ycoord FROM } - # XP2 := { XLEFT ycoord TO } - # VERT := XP1 angleto XP2 - # LMID :: XP1 ** 0.5 ++ XP2 ** 0.5 - # LMID :< VERT - # XINDENT := xindent min {FROM distance XP1} - # ZINDENT := zindent min {XP2 distance TO} - # LFROM :: FROM -- { XINDENT 0 } - # LFROM :< 180d - # LTO :: TO -- { ZINDENT 0 } - # LTO :< 0d - # RADIUS := radius min { { XP1 distance XP2 } / 2 } - # XP1PRE := XP1 ++ { RADIUS atangle 0d } - # XP1POST := XP1 ++ { RADIUS atangle VERT } - # XP1CTR := XP1PRE ++ { RADIUS atangle VERT } - # P1 :: XP1CTR ++ { RADIUS atangle { XP1CTR angleto XP1 } } - # P1 :< XP1PRE angleto XP1POST - # XP2PRE := XP2 -- { RADIUS atangle VERT } - # XP2POST := XP2 ++ { RADIUS atangle 0d } - # XP2CTR := XP2PRE ++ { RADIUS atangle 0d } - # P2 :: XP2CTR ++ { RADIUS atangle { XP2CTR angleto XP2 } } - # P2 :< XP2PRE angleto XP2POST - # FROM LFROM XP1PRE - # {round VERT} quadcase - # 90 { [XP1CTR clockwise] P1 [XP1CTR clockwise] } - # 270 { [XP1CTR] P1 [XP1CTR] } - # XP1POST LMID XP2PRE - # {round VERT} quadcase - # 90 { [XP2CTR clockwise] P2 [XP2CTR clockwise] } - # 270 { [XP2CTR] P2 [XP2CTR] } - # XP2POST LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @RVLLinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias "ldiagrvllinepath" - # FROM :: from boundaryatangle 0d - # ++ {arrow @FromArrowLength backarrowlength} atangle 0d - # FROM :< 0d - # TO :: to boundaryatangle 0d - # ++ {arrow @ToArrowLength arrowlength} atangle 0d - # TO :< 180d - # XRIGHT := {{xcoord FROM} max {xcoord TO}} + bias - # P1 :: { XRIGHT ycoord FROM } - # P2 :: { XRIGHT ycoord TO } - # VERT := P1 angleto P2 - # P1 :< P1 angleto {P1++{1f atangle 0d} ++{1f atangle VERT}} - # P2 :< P2 angleto {P2++{1f atangle 180d}++{1f atangle VERT}} - # LMID :: P1 ** 0.5 ++ P2 ** 0.5 - # LMID :< VERT - # XINDENT := xindent min {FROM distance P1} - # ZINDENT := zindent min {P2 distance TO} - # LFROM :: FROM ++ { XINDENT 0 } - # LFROM :< 0d - # LTO :: TO ++ { ZINDENT 0 } - # LTO :< 180d - # FROM LFROM P1 LMID P2 LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @RVLCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias radius "ldiagrvlcurvepath" - # FROM :: from boundaryatangle 0d - # ++ {arrow @FromArrowLength backarrowlength} atangle 0d - # FROM :< 0d - # TO :: to boundaryatangle 0d - # ++ {arrow @ToArrowLength arrowlength} atangle 0d - # TO :< 180d - # XRIGHT := {{xcoord FROM} max {xcoord TO}} + bias - # XP1 := { XRIGHT ycoord FROM } - # XP2 := { XRIGHT ycoord TO } - # VERT := XP1 angleto XP2 - # LMID :: XP1 ** 0.5 ++ XP2 ** 0.5 - # LMID :< VERT - # XINDENT := xindent min {FROM distance XP1} - # ZINDENT := zindent min {XP2 distance TO} - # LFROM :: FROM ++ { XINDENT 0 } - # LFROM :< 0d - # LTO :: TO ++ { ZINDENT 0 } - # LTO :< 180d - # RADIUS := radius min { { XP1 distance XP2 } * 0.5 } - # XP1PRE := XP1 ++ { RADIUS atangle 180d } - # XP1POST := XP1 ++ { RADIUS atangle VERT } - # XP1CTR := XP1PRE ++ { RADIUS atangle VERT } - # P1 :: XP1CTR ++ { RADIUS atangle { XP1CTR angleto XP1 } } - # P1 :< XP1PRE angleto XP1POST - # XP2PRE := XP2 -- { RADIUS atangle VERT } - # XP2POST := XP2 ++ { RADIUS atangle 180d } - # XP2CTR := XP2PRE ++ { RADIUS atangle 180d } - # P2 :: XP2CTR ++ { RADIUS atangle { XP2CTR angleto XP2 } } - # P2 :< XP2PRE angleto XP2POST - # FROM LFROM XP1PRE - # {round VERT} quadcase - # 90 { [XP1CTR] P1 [XP1CTR] } - # 270 { [XP1CTR clockwise] P1 [XP1CTR clockwise] } - # XP1POST LMID XP2PRE - # {round VERT} quadcase - # 90 { [XP2CTR] P2 [XP2CTR] } - # 270 { [XP2CTR clockwise] P2 [XP2CTR clockwise] } - # XP2POST LTO TO - } - PDF @Yield {} - } - } - - - import @Geometry - def @DHULinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias "ldiagdhulinepath" - } - PDF @Yield {} - } - } - - import @Geometry - def @DHUCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias radius "ldiagdhucurvepath" - } - PDF @Yield {} - } - } - - import @Geometry - def @UHDLinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias "ldiaguhdlinepath" - } - PDF @Yield {} - } - } - - import @Geometry - def @UHDCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias radius "ldiaguhdcurvepath" - } - PDF @Yield {} - } - } - - - import @Geometry - def @HVHLinePath # still to do - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent hfrac hbias "ldiaghvhlinepath" - # FRDIRN := {{from??CTR angleto to??CTR} quadcase - # 0 { 0d } 0-90 { 0d } 90 { 0d } 90-180 { 180d } - # 180 { 180d } 180-270 { 180d } 270 { 180d } 270-360 { 0d }} - # TODIRN := {FRDIRN + 180d} - # FROM :: from boundaryatangle FRDIRN ++ - # {arrow @FromArrowLength backarrowlength} atangle FRDIRN - # FROM :< FRDIRN - # TO :: to boundaryatangle TODIRN ++ - # {arrow @ToArrowLength arrowlength} atangle TODIRN - # TO :< FRDIRN - # BIAS := abs { xcoord FROM - xcoord TO } * hfrac + hbias - # P1 :: FROM ++ BIAS atangle FRDIRN - # P2 :: { xcoord P1 ycoord TO } - # LMID :: { P1 ** 0.5 ++ P2 ** 0.5 } - # LMID :< P1 angleto P2 - # XINDENT := xindent min {FROM distance P1} - # ZINDENT := zindent min {P2 distance TO} - # LFROM :: FROM ++ {XINDENT atangle FRDIRN} - # LFROM :< FRDIRN - # LTO :: TO ++ {ZINDENT atangle TODIRN} - # LTO :< FRDIRN - # FROM LFROM P1 LMID P2 LTO TO - - } - PDF @Yield {} - } - } - - import @Geometry - def @HVHCurvePath # still to do - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent hfrac hbias radius "ldiaghvhcurvepath" - # FRDIRN := {{from??CTR angleto to??CTR} quadcase - # 0 { 0d } 0-90 { 0d } 90 { 0d } 90-180 { 180d } - # 180 { 180d } 180-270 { 180d } 270 { 180d } 270-360 { 0d }} - # TODIRN := {FRDIRN + 180d} - # FROM :: from boundaryatangle FRDIRN ++ - # {arrow @FromArrowLength backarrowlength} atangle FRDIRN - # FROM :< FRDIRN - # TO :: to boundaryatangle TODIRN ++ - # {arrow @ToArrowLength arrowlength} atangle TODIRN - # TO :< FRDIRN - # BIAS := abs { xcoord FROM - xcoord TO } * hfrac + hbias - # XP1 := FROM ++ BIAS atangle FRDIRN - # XP2 := { xcoord XP1 ycoord TO } - # LMID :: { XP1 ** 0.5 ++ XP2 ** 0.5 } - # VERT := round { XP1 angleto XP2 } - # LMID :< VERT - # XINDENT := xindent min {FROM distance XP1} - # ZINDENT := zindent min {XP2 distance TO} - # LFROM :: FROM ++ {XINDENT atangle FRDIRN} - # LFROM :< FRDIRN - # LTO :: TO ++ {ZINDENT atangle TODIRN} - # LTO :< FRDIRN - # RADIUS := radius min { { XP1 distance XP2 } / 2 } - # XP1PRE := XP1 ++ { RADIUS atangle TODIRN } - # XP1POST := XP1 ++ { RADIUS atangle VERT } - # XP1CTR := XP1PRE ++ { RADIUS atangle VERT } - # P1 :: XP1CTR ++ { RADIUS atangle { XP1CTR angleto XP1 } } - # P1 :< XP1PRE angleto XP1POST - # XP2PRE := XP2 -- { RADIUS atangle VERT } - # XP2POST := XP2 ++ { RADIUS atangle FRDIRN } - # XP2CTR := XP2POST -- { RADIUS atangle VERT } - # P2 :: XP2CTR ++ { RADIUS atangle { XP2CTR angleto XP2 } } - # P2 :< XP2PRE angleto XP2POST - # if cond { {VERT - FRDIRN} = 90 } - # then { P1GO := "anticlockwise" P2GO := "clockwise" } - # else { P1GO := "clockwise" P2GO := "anticlockwise" } - # FROM LFROM - # XP1PRE [XP1CTR P1GO] P1 [XP1CTR P1GO] XP1POST - # LMID - # XP2PRE [XP2CTR P2GO] P2 [XP2CTR P2GO] XP2POST - # LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @VHVLinePath # still to do - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent hfrac hbias "ldiagvhvlinepath" - # FROM :: from boundaryatangle 0d - # ++ {arrow @FromArrowLength backarrowlength} atangle 0d - # FROM :< 0d - # TO :: to boundaryatangle 0d - # ++ {arrow @ToArrowLength arrowlength} atangle 0d - # TO :< 180d - # XRIGHT := {{xcoord FROM} max {xcoord TO}} + bias - # P1 :: { XRIGHT ycoord FROM } - # P2 :: { XRIGHT ycoord TO } - # VERT := P1 angleto P2 - # P1 :< P1 angleto {P1++{1f atangle 0d} ++{1f atangle VERT}} - # P2 :< P2 angleto {P2++{1f atangle 180d}++{1f atangle VERT}} - # LMID :: P1 ** 0.5 ++ P2 ** 0.5 - # LMID :< VERT - # XINDENT := xindent min {FROM distance P1} - # ZINDENT := zindent min {P2 distance TO} - # LFROM :: FROM ++ { XINDENT 0 } - # LFROM :< 0d - # LTO :: TO ++ { ZINDENT 0 } - # LTO :< 180d - # FROM LFROM P1 LMID P2 LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @VHVCurvePath # still to do - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent hfrac hbias radius "ldiagvhvcurvepath" - # /FRDIRN [ { 0 dg } { 180 dg } { 180 dg } { 0 dg } - # { 0 dg } { 0 dg } { 180 dg } { 180 dg } - # from (CTR) ldiagdolabel to (CTR) ldiagdolabel - # ldiagangleto ldiagquadcase ] cvx def - # /TODIRN [ FRDIRN 180 dg add ] cvx def - # from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd - # 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - # FRDIRN /FROM@ANGLE ldiagangledef - # to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd - # 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef - # FRDIRN /TO@ANGLE ldiagangledef - # /BIAS [ FROM pop TO pop sub abs hfrac mul hbias add ] cvx def - # /XP1 [ FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd ] cvx def - # /XP2 [ XP1 pop TO exch pop ] cvx def - # XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - # /VERT [ XP1 XP2 ldiagangleto round ] cvx def - # VERT /LMID@ANGLE ldiagangledef - # /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def - # /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def - # FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - # FRDIRN /LFROM@ANGLE ldiagangledef - # TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef - # FRDIRN /LTO@ANGLE ldiagangledef - # /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def - # /XP1PRE [ XP1 0 0 RADIUS TODIRN ldiagatangle ldiagpadd ] cvx def - # /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - # /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - # XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef - # XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef - # /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def - # /XP2POST [ XP2 0 0 RADIUS FRDIRN ldiagatangle ldiagpadd ] cvx def - # /XP2CTR [ 0 0 RADIUS VERT ldiagatangle XP2POST ldiagpsub ] cvx def - # XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef - # XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef - # VERT FRDIRN sub 90 eq - # { /P1GO [ anticlockwise ] cvx def /P2GO [ clockwise ] cvx def } - # { /P1GO [ clockwise ] cvx def /P2GO [ anticlockwise ] cvx def } - # ifelse - # FROM LFROM - # XP1PRE [XP1CTR P1GO] P1 [XP1CTR P1GO] XP1POST - # LMID - # XP2PRE [XP2CTR P2GO] P2 [XP2CTR P2GO] XP2POST - # LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @DWrapLinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias fbias tbias "ldiagdwraplinepath" - # DIRN := if cond { xcoord from??CTR < xcoord to??CTR } - # then { 180d } else { 0d } - # FROM :: from boundaryatangle DIRN - # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN - # FROM :< DIRN - # TO :: to boundaryatangle { DIRN + 180d } - # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d } - # TO :< DIRN - # P1 :: FROM ++ {fbias max 0} atangle DIRN - # P1 :< if cond { DIRN = 180d } then { 225d } else { -45d } - # P4 :: TO ++ {tbias max 0} atangle { DIRN + 180d } - # P4 :< if cond { DIRN = 180d } then { 135d } else { 45d } - # YC := ycoord { from boundaryatangle 270d } min - # ycoord { to boundaryatangle 270d } - # - { bias max 0 } - # P2 :: { xcoord P1 YC } - # P2 :< P4@ANGLE - 180d - # P3 :: { xcoord P4 YC } - # P3 :< P1@ANGLE - 180d - # XINDENT := xindent min { FROM distance P1 } - # LFROM :: FROM ++ XINDENT atangle DIRN - # LFROM :< FROM@ANGLE - # ZINDENT := zindent min { TO distance P4 } - # LTO :: TO ++ ZINDENT atangle { DIRN + 180d } - # LTO :< TO@ANGLE - # LMID :: P2 ** 0.5 ++ P3 ** 0.5 - # LMID :< DIRN - 180d - # FROM P1 P2 P3 P4 TO - } - PDF @Yield {} - } - } - - import @Geometry - def @DWrapCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias fbias tbias radius "ldiagdwrapcurvepath" - # DIRN := if cond { xcoord from??CTR < xcoord to??CTR } - # then { 180d } else { 0d } - # CLOCK := if cond { xcoord from??CTR < xcoord to??CTR } - # then { anticlockwise } else { clockwise } - # FROM :: from boundaryatangle DIRN - # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN - # FROM :< DIRN - # TO :: to boundaryatangle { DIRN + 180d } - # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d } - # TO :< DIRN - # - # XP1 := FROM ++ {fbias max 0} atangle DIRN - # XP4 := TO ++ {tbias max 0} atangle { DIRN + 180d } - # YC := ycoord { from boundaryatangle 270d } min - # ycoord { to boundaryatangle 270d } - # - { bias max 0 } - # XP2 := { xcoord XP1 YC } - # XP3 := { xcoord XP4 YC } - # - # RP1 := radius min { XP1 distance FROM } min - # { { XP1 distance XP2 } / 2 } - # XP1PRE := XP1 ++ RP1 atangle { XP1 angleto FROM } - # XP1POST := XP1 ++ RP1 atangle { XP1 angleto XP2 } - # XP1CTR := XP1PRE ++ RP1 atangle { XP1 angleto XP2 } - # P1 :: XP1CTR ++ RP1 atangle { XP1CTR angleto XP1 } - # P1 :< XP1CTR angleto P1 + DIRN - 90d - # - # RP2 := radius min { { XP1 distance XP2 } / 2 } - # min { { XP2 distance XP3 } / 2 } - # XP2PRE := XP2 ++ RP2 atangle { XP2 angleto XP1 } - # XP2POST := XP2 ++ RP2 atangle { XP2 angleto XP3 } - # XP2CTR := XP2PRE ++ RP2 atangle { XP2 angleto XP3 } - # P2 :: XP2CTR ++ RP2 atangle { XP2CTR angleto XP2 } - # P2 :< XP2CTR angleto P2 + DIRN - 90d - # - # RP3 := radius min { { XP2 distance XP3 } / 2 } - # min { { XP3 distance XP4 } / 2 } - # XP3PRE := XP3 ++ RP3 atangle { XP3 angleto XP2 } - # XP3POST := XP3 ++ RP3 atangle { XP3 angleto XP4 } - # XP3CTR := XP3PRE ++ RP3 atangle { XP3 angleto XP4 } - # P3 :: XP3CTR ++ RP3 atangle { XP3CTR angleto XP3 } - # P3 :< XP3CTR angleto P3 + DIRN - 90d - # - # RP4 := radius min { { XP4 distance XP3 } / 2 } - # min { XP4 distance TO } - # XP4PRE := XP4 ++ RP4 atangle { XP4 angleto XP3 } - # XP4POST := XP4 ++ RP4 atangle { XP4 angleto TO } - # XP4CTR := XP4PRE ++ RP4 atangle { XP4 angleto TO } - # P4 :: XP4CTR ++ RP4 atangle { XP4CTR angleto XP4 } - # P4 :< XP4CTR angleto P4 + DIRN - 90d - # - # XINDENT := xindent min { FROM distance XP1PRE } - # LFROM :: FROM ++ XINDENT atangle DIRN - # LFROM :< FROM@ANGLE - # - # LMID :: XP2 ** 0.5 ++ XP3 ** 0.5 - # LMID :< DIRN - 180d - # - # ZINDENT := zindent min { TO distance XP4POST } - # LTO :: TO ++ ZINDENT atangle { DIRN + 180d } - # LTO :< TO@ANGLE - # - # FROM LFROM - # XP1PRE [XP1CTR CLOCK] XP1POST - # XP2PRE [XP2CTR CLOCK] XP2POST - # LMID - # XP3PRE [XP3CTR CLOCK] XP3POST - # XP4PRE [XP4CTR CLOCK] XP4POST - # LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @UWrapLinePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias fbias tbias "ldiaguwraplinepath" - # DIRN := if cond { xcoord from??CTR < xcoord to??CTR } - # then { 180d } else { 0d } - # FROM :: from boundaryatangle DIRN - # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN - # FROM :< DIRN - # TO :: to boundaryatangle { DIRN + 180d } - # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d } - # TO :< DIRN - # P1 :: FROM ++ {fbias max 0} atangle DIRN - # P1 :< if cond { DIRN = 180d } then { 135d } else { 45d } - # P4 :: TO ++ {tbias max 0} atangle { DIRN + 180d } - # P4 :< if cond { DIRN = 180d } then { 225d } else { -45d } - # YC := ycoord { from boundaryatangle 90d } max - # ycoord { to boundaryatangle 90d } - # + { bias max 0 } - # P2 :: { xcoord P1 YC } - # P2 :< P4@ANGLE - 180d - # P3 :: { xcoord P4 YC } - # P3 :< P1@ANGLE - 180d - # XINDENT := xindent min { FROM distance P1 } - # LFROM :: FROM ++ XINDENT atangle DIRN - # LFROM :< FROM@ANGLE - # ZINDENT := zindent min { TO distance P4 } - # LTO :: TO ++ ZINDENT atangle { DIRN + 180d } - # LTO :< TO@ANGLE - # LMID :: P2 ** 0.5 ++ P3 ** 0.5 - # LMID :< DIRN - 180d - # FROM P1 P2 P3 P4 TO - } - PDF @Yield {} - } - } - - import @Geometry - def @UWrapCurvePath - { - @BackEnd @Case { - PostScript @Yield { - {arrow @FromArrowLength backarrowlength} - {arrow @ToArrowLength arrowlength} - "{" from "}" "{" to "}" - xindent zindent bias fbias tbias radius "ldiaguwrapcurvepath" - # DIRN := if cond { xcoord from??CTR < xcoord to??CTR } - # then { 180d } else { 0d } - # CLOCK := if cond { xcoord from??CTR < xcoord to??CTR } - # then { clockwise } else { anticlockwise } - # FROM :: from boundaryatangle DIRN - # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN - # FROM :< DIRN - # TO :: to boundaryatangle { DIRN + 180d } - # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d } - # TO :< DIRN - # - # XP1 := FROM ++ {fbias max 0} atangle DIRN - # XP4 := TO ++ {tbias max 0} atangle { DIRN + 180d } - # YC := ycoord { from boundaryatangle 90d } max - # ycoord { to boundaryatangle 90d } - # + { bias max 0 } - # XP2 := { xcoord XP1 YC } - # XP3 := { xcoord XP4 YC } - # - # RP1 := radius min { XP1 distance FROM } min - # { { XP1 distance XP2 } / 2 } - # XP1PRE := XP1 ++ RP1 atangle { XP1 angleto FROM } - # XP1POST := XP1 ++ RP1 atangle { XP1 angleto XP2 } - # XP1CTR := XP1PRE ++ RP1 atangle { XP1 angleto XP2 } - # P1 :: XP1CTR ++ RP1 atangle { XP1CTR angleto XP1 } - # P1 :< XP1CTR angleto P1 + DIRN + 90d - # - # RP2 := radius min { { XP1 distance XP2 } / 2 } - # min { { XP2 distance XP3 } / 2 } - # XP2PRE := XP2 ++ RP2 atangle { XP2 angleto XP1 } - # XP2POST := XP2 ++ RP2 atangle { XP2 angleto XP3 } - # XP2CTR := XP2PRE ++ RP2 atangle { XP2 angleto XP3 } - # P2 :: XP2CTR ++ RP2 atangle { XP2CTR angleto XP2 } - # P2 :< XP2CTR angleto P2 + DIRN + 90d - # - # RP3 := radius min { { XP2 distance XP3 } / 2 } - # min { { XP3 distance XP4 } / 2 } - # XP3PRE := XP3 ++ RP3 atangle { XP3 angleto XP2 } - # XP3POST := XP3 ++ RP3 atangle { XP3 angleto XP4 } - # XP3CTR := XP3PRE ++ RP3 atangle { XP3 angleto XP4 } - # P3 :: XP3CTR ++ RP3 atangle { XP3CTR angleto XP3 } - # P3 :< XP3CTR angleto P3 + DIRN + 90d - # - # RP4 := radius min { { XP4 distance XP3 } / 2 } - # min { XP4 distance TO } - # XP4PRE := XP4 ++ RP4 atangle { XP4 angleto XP3 } - # XP4POST := XP4 ++ RP4 atangle { XP4 angleto TO } - # XP4CTR := XP4PRE ++ RP4 atangle { XP4 angleto TO } - # P4 :: XP4CTR ++ RP4 atangle { XP4CTR angleto XP4 } - # P4 :< XP4CTR angleto P4 + DIRN + 90d - # - # XINDENT := xindent min { FROM distance XP1PRE } - # LFROM :: FROM ++ XINDENT atangle DIRN - # LFROM :< FROM@ANGLE - # - # LMID :: XP2 ** 0.5 ++ XP3 ** 0.5 - # LMID :< DIRN - 180d - # - # ZINDENT := zindent min { TO distance XP4POST } - # LTO :: TO ++ ZINDENT atangle { DIRN + 180d } - # LTO :< TO@ANGLE - # - # FROM LFROM - # XP1PRE [XP1CTR CLOCK] XP1POST - # XP2PRE [XP2CTR CLOCK] XP2POST - # LMID - # XP3PRE [XP3CTR CLOCK] XP3POST - # XP4PRE [XP4CTR CLOCK] XP4POST - # LTO TO - } - PDF @Yield {} - } - } - - import @Geometry - def @Path - { - path @Case { - line @Yield @LinePath - doubleline @Yield @DoubleLinePath - { acurve curve } @Yield @ACurvePath - ccurve @Yield @CCurvePath - bezier @Yield @BezierPath - vhline @Yield @VHLinePath - vhcurve @Yield @VHCurvePath - hvline @Yield @HVLinePath - hvcurve @Yield @HVCurvePath - lvrline @Yield @LVRLinePath - lvrcurve @Yield @LVRCurvePath - rvlline @Yield @RVLLinePath - rvlcurve @Yield @RVLCurvePath - dhuline @Yield @DHULinePath - dhucurve @Yield @DHUCurvePath - uhdline @Yield @UHDLinePath - uhdcurve @Yield @UHDCurvePath - hvhline @Yield @HVHLinePath - hvhcurve @Yield @HVHCurvePath - vhvline @Yield @VHVLinePath - vhvcurve @Yield @VHVCurvePath - dwrapline @Yield @DWrapLinePath - dwrapcurve @Yield @DWrapCurvePath - uwrapline @Yield @UWrapLinePath - uwrapcurve @Yield @UWrapCurvePath - else @Yield { - path - from { from } - to { to } - bias { bias } - fbias { fbias } - tbias { tbias } - hfrac { hfrac } - hbias { hbias } - radius { radius } - xindent { xindent } - zindent { zindent } - frompt { frompt } - topt { topt } - arrow { arrow } - arrowlength { arrowlength } - backarrowlength { backarrowlength } - } - } - } - - def @FromLabel - { - @DoLabel - which { "f" } - label { fromlabel @Else @FromArrow } - labelmargin { fromlabelmargin } - labelfont { fromlabelfont } - labelbreak { fromlabelbreak } - labelformat { fromlabelformat @Body } - labelpos { fromlabelpos } - labelprox { fromlabelprox } - labelangle { fromlabelangle } - labelctr { fromlabelctr } - labeladjust { fromlabeladjust } - } - - def @ToLabel - { - @DoLabel - which { "t" } - label { tolabel @Else @ToArrow } - labelmargin { tolabelmargin } - labelfont { tolabelfont } - labelbreak { tolabelbreak } - labelformat { tolabelformat @Body } - labelpos { tolabelpos } - labelprox { tolabelprox } - labelangle { tolabelangle } - labelctr { tolabelctr } - labeladjust { tolabeladjust } - } - - def @Direct - { - pathstyle @Case { - { - "/ldiagsolid" - "/ldiagdashed" - "/ldiagdotted" - "/ldiagnoline" - "/ldiagcdashed" - "/ldiagdotdashed" - "/ldiagdotcdashed" - "/ldiagdotdotdashed" - "/ldiagdotdotcdashed" - "/ldiagdotdotdotdashed" - "/ldiagdotdotdotcdashed" - } @Yield 1 - else @Yield 0 - } - } - - @BackEnd @Case { - PostScript @Yield { - - @Null & # so that preceding space gets chewed up - { - @Direct "ldiaglinkbegin" @ColourCommand pathcolour - "[" @Path "]" pathdashlength "[" pathstyle "]" pathwidth "ldiaglinkend" - } - @Graphic - { - / { fromlabel @Else @FromArrow} @IfNonEmpty @FromLabel - / { xlabel @Else linklabel } @IfNonEmpty @XLabel - / { ylabel @Else linklabel } @IfNonEmpty @YLabel - / { zlabel @Else linklabel } @IfNonEmpty @ZLabel - / { tolabel @Else @ToArrow } @IfNonEmpty @ToLabel - } - - } - PDF @Yield {} - } - } - - - def @ObjectLink - precedence 90 - associativity left - left x - named treehsep { treehsep } - named treevsep { treevsep } - named format - named x {} - named y {} - named insinuatelink {} - named treehsep {} - named treevsep {} - { x | y | insinuatelink } - import @Geometry named path - named from {} - named to {} - named bias {} - named fbias {} - named tbias {} - named hfrac {} - named hbias {} - named radius {} - named xindent {} - named zindent {} - named frompt {} - named topt {} - named arrow {} - named arrowlength {} - named backarrowlength {} - { path - from { from } - to { to } - bias { bias } - fbias { fbias } - tbias { tbias } - hfrac { hfrac } - hbias { hbias } - radius { radius } - xindent { xindent } - zindent { zindent } - frompt { frompt } - topt { topt } - arrow { arrow } - arrowlength { arrowlength } - backarrowlength { backarrowlength } - } - import @Geometry named basefrom { } - import @Geometry named baseto { } - import @Geometry named from { } - import @Geometry named to { } - import @Geometry named bias { bias } - import @Geometry named fbias { fbias } - import @Geometry named tbias { tbias } - import @Geometry named hfrac { hfrac } - import @Geometry named hbias { hbias } - import @Geometry named radius { radius } - import @Geometry named xindent { xindent } - import @Geometry named zindent { zindent } - import @Geometry named frompt { frompt } - import @Geometry named topt { topt } - named pathstyle - named solid { "/ldiagsolid" } - named dashed { "/ldiagdashed" } - named cdashed { "/ldiagcdashed" } - named dotdashed { "/ldiagdotdashed" } - named dotcdashed { "/ldiagdotcdashed" } - named dotdotdashed { "/ldiagdotdotdashed" } - named dotdotcdashed { "/ldiagdotdotcdashed" } - named dotdotdotdashed { "/ldiagdotdotdotdashed" } - named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } - named dotted { "/ldiagdotted" } - named noline { "/ldiagnoline" } - { pathstyle } - import @Geometry named pathdashlength { pathdashlength } - import @Geometry named pathwidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { pathwidth } - named pathcolour { pathcolour } - import @Geometry named pathgap - named thin { 0.08 ft } - named medium { 0.16 ft } - named thick { 0.24 ft } - { pathgap } - - named arrow { arrow } - named arrowstyle { arrowstyle } - named arrowwidth { arrowwidth } - named arrowlength { arrowlength } - named backarrowstyle { backarrowstyle } - named backarrowwidth { backarrowwidth } - named backarrowlength { backarrowlength } - - named linklabel { linklabel } - named linklabelmargin { linklabelmargin } - named linklabelfont { linklabelfont } - named linklabelbreak { linklabelbreak } - named linklabelformat right @Body { linklabelformat @Body } - import @Geometry named linklabelpos { linklabelpos } - named linklabelprox { linklabelprox } - import @Geometry named linklabelangle { linklabelangle } - named linklabelctr { linklabelctr } - import @Geometry named linklabeladjust { linklabeladjust } - - named xlabel { xlabel } - named xlabelmargin { xlabelmargin } - named xlabelfont { xlabelfont } - named xlabelbreak { xlabelbreak } - named xlabelformat right @Body { xlabelformat @Body } - import @Geometry named xlabelpos { xlabelpos } - named xlabelprox { xlabelprox } - import @Geometry named xlabelangle { xlabelangle } - named xlabelctr { xlabelctr } - import @Geometry named xlabeladjust { xlabeladjust } - - named ylabel { ylabel } - named ylabelmargin { ylabelmargin } - named ylabelfont { ylabelfont } - named ylabelbreak { ylabelbreak } - named ylabelformat right @Body { ylabelformat @Body } - import @Geometry named ylabelpos { ylabelpos } - named ylabelprox { ylabelprox } - import @Geometry named ylabelangle { ylabelangle } - named ylabelctr { ylabelctr } - import @Geometry named ylabeladjust { ylabeladjust } - - named zlabel { zlabel } - named zlabelmargin { zlabelmargin } - named zlabelfont { zlabelfont } - named zlabelbreak { zlabelbreak } - named zlabelformat right @Body { zlabelformat @Body } - import @Geometry named zlabelpos { zlabelpos } - named zlabelprox { zlabelprox } - import @Geometry named zlabelangle { zlabelangle } - named zlabelctr { zlabelctr } - import @Geometry named zlabeladjust { zlabeladjust } - - named fromlabel { fromlabel } - named fromlabelmargin { fromlabelmargin } - named fromlabelfont { fromlabelfont } - named fromlabelbreak { fromlabelbreak } - named fromlabelformat right @Body { fromlabelformat @Body } - import @Geometry named fromlabelpos { fromlabelpos } - named fromlabelprox { fromlabelprox } - import @Geometry named fromlabelangle { fromlabelangle } - named fromlabelctr { fromlabelctr } - import @Geometry named fromlabeladjust { fromlabeladjust } - - named tolabel { tolabel } - named tolabelmargin { tolabelmargin } - named tolabelfont { tolabelfont } - named tolabelbreak { tolabelbreak } - named tolabelformat right @Body { tolabelformat @Body } - import @Geometry named tolabelpos { tolabelpos } - named tolabelprox { tolabelprox } - import @Geometry named tolabelangle { tolabelangle } - named tolabelctr { tolabelctr } - import @Geometry named tolabeladjust{ tolabeladjust } - right y - - { - def @From - { - from @Case { - "" @Yield basefrom - else @Yield { basefrom"@"from } - } - } - - def @To - { - to @Case { - "" @Yield baseto - else @Yield { baseto"@"to } - } - } - - format - x { x } - y { y } - treehsep { treehsep } - treevsep { treevsep } - insinuatelink { - @Link - from { @From } - to { @To } - bias { bias } - fbias { fbias } - tbias { tbias } - hfrac { hfrac } - hbias { hbias } - radius { radius } - xindent { xindent } - zindent { zindent } - frompt { frompt } - topt { topt } - path { path - from { @From } - to { @To } - bias { bias } - fbias { fbias } - tbias { tbias } - hfrac { hfrac } - hbias { hbias } - radius { radius } - xindent { xindent } - zindent { zindent } - frompt { frompt } - topt { topt } - arrow { arrow } - arrowlength { arrowlength } - backarrowlength { backarrowlength } - } - pathstyle { pathstyle } - pathdashlength { pathdashlength } - pathwidth { pathwidth } - pathcolour { pathcolour } - pathgap { pathgap } - arrow { arrow } - arrowstyle { arrowstyle } - arrowwidth { arrowwidth } - arrowlength { arrowlength } - backarrowstyle { backarrowstyle } - backarrowwidth { backarrowwidth } - backarrowlength { backarrowlength } - - linklabel { linklabel } - linklabelmargin { linklabelmargin } - linklabelfont { linklabelfont } - linklabelbreak { linklabelbreak } - linklabelformat { linklabelformat @Body } - linklabelpos { linklabelpos } - linklabelprox { linklabelprox } - linklabelangle { linklabelangle } - linklabelctr { linklabelctr } - linklabeladjust { linklabeladjust } - - xlabel { xlabel } - xlabelmargin { xlabelmargin } - xlabelfont { xlabelfont } - xlabelbreak { xlabelbreak } - xlabelformat { xlabelformat @Body } - xlabelpos { xlabelpos } - xlabelprox { xlabelprox } - xlabelangle { xlabelangle } - xlabelctr { xlabelctr } - xlabeladjust { xlabeladjust } - - ylabel { ylabel } - ylabelmargin { ylabelmargin } - ylabelfont { ylabelfont } - ylabelbreak { ylabelbreak } - ylabelformat { ylabelformat @Body } - ylabelpos { ylabelpos } - ylabelprox { ylabelprox } - ylabelangle { ylabelangle } - ylabelctr { ylabelctr } - ylabeladjust { ylabeladjust } - - zlabel { zlabel } - zlabelmargin { zlabelmargin } - zlabelfont { zlabelfont } - zlabelbreak { zlabelbreak } - zlabelformat { zlabelformat @Body } - zlabelpos { zlabelpos } - zlabelprox { zlabelprox } - zlabelangle { zlabelangle } - zlabelctr { zlabelctr } - zlabeladjust { zlabeladjust } - - fromlabel { fromlabel } - fromlabelmargin { fromlabelmargin } - fromlabelfont { fromlabelfont } - fromlabelbreak { fromlabelbreak } - fromlabelformat { fromlabelformat @Body } - fromlabelpos { fromlabelpos } - fromlabelprox { fromlabelprox } - fromlabelangle { fromlabelangle } - fromlabelctr { fromlabelctr } - fromlabeladjust { fromlabeladjust } - - tolabel { tolabel } - tolabelmargin { tolabelmargin } - tolabelfont { tolabelfont } - tolabelbreak { tolabelbreak } - tolabelformat { tolabelformat @Body } - tolabelpos { tolabelpos } - tolabelprox { tolabelprox } - tolabelangle { tolabelangle } - tolabelctr { tolabelctr } - tolabeladjust { tolabeladjust } - } - } - - - ####################################################################### - # # - # Abbreviations for standard link types # - # # - ####################################################################### - - macro @Line { @Link path { line } } - macro @DoubleLine { @Link path { doubleline } } - macro @Arrow { @Link path { line } arrow { yes } } - macro @DoubleArrow { @Link path {doubleline} arrow { yes } } - macro @Curve { @Link path { curve } } - macro @CurveArrow { @Link path { curve } arrow { yes } } - macro @ACurve { @Link path { acurve } } - macro @ACurveArrow { @Link path { acurve } arrow { yes } } - macro @CCurve { @Link path { ccurve } } - macro @CCurveArrow { @Link path { ccurve } arrow { yes } } - - macro @Bezier { @Link path { bezier } } - macro @BezierArrow { @Link path { bezier } arrow { yes } } - - macro @HVLine { @Link path { hvline } } - macro @HVArrow { @Link path { hvline } arrow { yes } } - macro @VHLine { @Link path { vhline } } - macro @VHArrow { @Link path { vhline } arrow { yes } } - macro @HVCurve { @Link path { hvcurve } } - macro @HVCurveArrow { @Link path { hvcurve } arrow { yes } } - macro @VHCurve { @Link path { vhcurve } } - macro @VHCurveArrow { @Link path { vhcurve } arrow { yes } } - - macro @LVRLine { @Link path { lvrline } } - macro @LVRArrow { @Link path { lvrline } arrow { yes } } - macro @RVLLine { @Link path { rvlline } } - macro @RVLArrow { @Link path { rvlline } arrow { yes } } - macro @LVRCurve { @Link path { lvrcurve } } - macro @LVRCurveArrow { @Link path { lvrcurve } arrow { yes } } - macro @RVLCurve { @Link path { rvlcurve } } - macro @RVLCurveArrow { @Link path { rvlcurve } arrow { yes } } - - macro @DHULine { @Link path { dhuline } } - macro @DHUArrow { @Link path { dhuline } arrow { yes } } - macro @UHDLine { @Link path { uhdline } } - macro @UHDArrow { @Link path { uhdline } arrow { yes } } - macro @DHUCurve { @Link path { dhucurve } } - macro @DHUCurveArrow { @Link path { dhucurve } arrow { yes } } - macro @UHDCurve { @Link path { uhdcurve } } - macro @UHDCurveArrow { @Link path { uhdcurve } arrow { yes } } - - macro @HVHLine { @Link path { hvhline } } - macro @HVHArrow { @Link path { hvhline } arrow { yes } } - macro @VHVLine { @Link path { vhvline } } - macro @VHVArrow { @Link path { vhvline } arrow { yes } } - macro @HVHCurve { @Link path { hvhcurve } } - macro @HVHCurveArrow { @Link path { hvhcurve } arrow { yes } } - macro @VHVCurve { @Link path { vhvcurve } } - macro @VHVCurveArrow { @Link path { vhvcurve } arrow { yes } } - - macro @DWrapLine { @Link path { dwrapline} } - macro @DWrapArrow { @Link path { dwrapline} arrow { yes } } - macro @UWrapLine { @Link path { uwrapline} } - macro @UWrapArrow { @Link path { uwrapline} arrow { yes } } - macro @DWrapCurve { @Link path {dwrapcurve} } - macro @DWrapCurveArrow { @Link path {dwrapcurve} arrow { yes } } - macro @UWrapCurve { @Link path {uwrapcurve} } - macro @UWrapCurveArrow { @Link path {uwrapcurve} arrow { yes } } - - - ####################################################################### - # # - # Tree code. # - # # - ####################################################################### - - export - - @Node @Box @CurveBox @ShadowBox @Square @Diamond - @Polygon @Isosceles @Ellipse @Circle - @LeftSub @ZeroWidthLeftSub @RightSub @ZeroWidthRightSub - @FirstSub @NextSub @StubSub - - def @Tree - named treehindent - named left { 0.0rt } - named ctr { 0.5rt } - named right { 1.0rt } - { treehindent } - body x - { - - macro @TNode { @@Node nodetag { T } } - macro @Node { @TNode } - macro @Box { @TNode outline { box } } - macro @CurveBox { @TNode outline { curvebox } } - macro @ShadowBox { @TNode outline { shadowbox } } - macro @Square { @TNode outline { square } } - macro @Diamond { @TNode outline { diamond } } - macro @Polygon { @TNode outline { polygon } } - macro @Isosceles { @TNode outline { isosceles } } - macro @Ellipse { @TNode outline { ellipse } } - macro @Circle { @TNode outline { circle } } - - def fixroot - precedence 90 - left root - { - |treehindent root - } - - macro @LeftSub - { - @ObjectLink - basefrom { T } - baseto { L@T } - format { { /treevsep {L::y} } |treehsep x | insinuatelink } - } - - macro @ZeroWidthLeftSub - { - @ObjectLink - basefrom { T } - baseto { L@T } - format { { /treevsep @ZeroWidth { {L::y} ^|treehsep } } | - x | insinuatelink } - } - - macro @FirstSub - { - fixroot // - @ObjectLink - basefrom { T } - baseto { S@T } - format { //treevsep {S::y} | insinuatelink | } - } - - macro @NextSub - { - @ObjectLink - basefrom { T } - baseto { S@T } - format { x |treehsep { / {S::y} | insinuatelink | } } - } - - macro @RightSub - { - @ObjectLink - basefrom { T } - baseto { R@T } - format { x |treehsep { /treevsep {R::y} } | insinuatelink } - } - - macro @ZeroWidthRightSub - { - @ObjectLink - basefrom { T } - baseto { R@T } - format { x | { /treevsep @ZeroWidth { |treehsep {R::y} } } - | insinuatelink } - } - - macro @StubSub - { - @ObjectLink - basefrom { T } - baseto { T } - format { @VContract { |0.5rt x | // |0.5rt - S:: @BoxLabels @CatchTags y | } | insinuatelink } - # path { from S@T@SW S@T@SE to } - path { - P1:: S@SW - P2:: S@SE - FROM:: from boundaryatangle { from??CTR angleto P1 } - TO:: to boundaryatangle { to??CTR angleto P2 } - FROM P1 P2 TO - } - } - - @HContract @VContract x - } - - export - - @Node @Box @CurveBox @ShadowBox @Square @Diamond - @Polygon @Isosceles @Ellipse @Circle - @LeftSub @ZeroWidthLeftSub @RightSub @ZeroWidthRightSub - @FirstSub @NextSub @StubSub - - def @HTree - named treevindent - named top { 0.0rt } - named ctr { 0.5rt } - named foot { 1.0rt } - { treevindent } - body x - { - - macro @TNode { @@Node nodetag { T } } - macro @Node { @TNode } - macro @Box { @TNode outline { box } } - macro @CurveBox { @TNode outline { curvebox } } - macro @ShadowBox { @TNode outline { shadowbox } } - macro @Square { @TNode outline { square } } - macro @Diamond { @TNode outline { diamond } } - macro @Polygon { @TNode outline { polygon } } - macro @Isosceles { @TNode outline { isosceles } } - macro @Ellipse { @TNode outline { ellipse } } - macro @Circle { @TNode outline { circle } } - - def fixroot - precedence 90 - left root - { - /treevindent root - } - - macro @LeftSub - { - @ObjectLink - basefrom { T } - baseto { L@T } - format { { |treehsep {L::y} } /treevsep x / insinuatelink } - } - - macro @ZeroWidthLeftSub - { - @ObjectLink - basefrom { T } - baseto { L@T } - format { { |treehsep @ZeroWidth { {L::y} ^/treevsep } } / - x / insinuatelink } - } - - macro @FirstSub - { - fixroot || - @ObjectLink - basefrom { T } - baseto { S@T } - format { ||treehsep { {S::y} / insinuatelink / } } - } - - macro @NextSub - { - @ObjectLink - basefrom { T } - baseto { S@T } - format { x /treevsep { | {S::y} { / insinuatelink / } } } - } - - macro @RightSub - { - @ObjectLink - basefrom { T } - baseto { R@T } - format { x /treevsep { |treehsep {R::y} } / insinuatelink } - } - - macro @ZeroWidthRightSub - { - @ObjectLink - basefrom { T } - baseto { R@T } - format { x / { |treehsep @ZeroWidth { /treevsep {R::y} } } - / insinuatelink } - } - - macro @StubSub - { - @ObjectLink - basefrom { T } - baseto { T } - format { @VContract { { /0.5rt x / } || { /0.5rt - S:: @BoxLabels @CatchTags y / } } / insinuatelink } - # path { from S@T@SW S@T@SE to } - path { - P1:: S@NE - P2:: S@SE - FROM:: from boundaryatangle { from??CTR angleto P1 } - TO:: to boundaryatangle { to??CTR angleto P2 } - FROM P1 P2 TO - } - } - - @HContract @VContract x - } - - - ####################################################################### - # # - # Syntax diagrams code # - # # - # Helper definitions; also skips # - # # - ####################################################################### - - def pslength right x { "("x") ldiagdecodelength" } - def pssyntaxgap { "("syntaxgap") ldiagdecodelength" } - def pssyntaxbias { "("syntaxbias") ldiagdecodelength" } - def pssyntaxradius { "("syntaxradius") ldiagdecodelength" } - - def @ArrowLeftFrom left direction right pt - { - @Line arrow { direction } from { pt } to { pt -- { pssyntaxgap 0 } } - } - - def @ArrowRightFrom left direction right pt - { - @Line arrow { direction } from { pt } to { pt ++ { pssyntaxgap 0 } } - } - - def @ArrowUpFrom left direction right pt - { - @Line arrow { direction } from { pt } to { pt ++ { 0 pssyntaxgap } } - } - - def @ArrowDownFrom left direction right pt - { - @Line arrow { direction } from { pt } to { pt -- { 0 pssyntaxgap } } - } - - macro @LineLeftFrom { no @ArrowLeftFrom } - macro @LineRightFrom { no @ArrowRightFrom } - macro @LineUpFrom { no @ArrowUpFrom } - macro @LineDownFrom { no @ArrowDownFrom } - - macro @Right { "right" } - macro @Up { "up" } - macro @Left { "left" } - macro @Down { "down" } - - def @CurrDirection { @GetContext "diag_dirn" } - - def @GoRight right x { {"diag_dirn" @Yield @Right} @SetContext x } - def @GoUp right x { {"diag_dirn" @Yield @Up } @SetContext x } - def @GoLeft right x { {"diag_dirn" @Yield @Left } @SetContext x } - def @GoDown right x { {"diag_dirn" @Yield @Down } @SetContext x } - - # macro @Right { "1p" } - # macro @Up { "2p" } - # macro @Left { "3p" } - # macro @Down { "4p" } - - # macro @CurrDirection { @CurrZUnit } - - # def @GoRight right x { @Right @ZUnit x } - # def @GoUp right x { @Up @ZUnit x } - # def @GoLeft right x { @Left @ZUnit x } - # def @GoDown right x { @Down @ZUnit x } - - def @GoReverse right x - { - @CurrDirection @Case { - @Right @Yield @GoLeft x - @Up @Yield @GoDown x - @Left @Yield @GoRight x - @Down @Yield @GoUp x - } - } - - - def @LabelMarks right x { - @HContract @VContract @ANode - outline { - NMK:: { xmark ysize } - SMK:: { xmark 0 } - WMK:: { 0 ymark } - EMK:: { xsize ymark } - NW:: { 0 ysize } - SW:: { 0 0 } - SE:: { xsize 0 } - NE:: { xsize ysize } - } - font {} - margin { 0c } - vstrut { no } - outlinestyle { noline } - halign { mark } - valign { mark } - x - } - - def @HSkip - { - OX:: @LabelMarks { syntaxgap @Wide {} } - / @Line from { "OX@WMK" } to { "OX@EMK" } - } - - def @VSkip - { - OX:: @LabelMarks { syntaxgap @High {} } - / @Line from { "OX@NMK" } to { "OX@SMK" } - } - - def @Skip - { - @CurrDirection @Case { - { @Left @Right } @Yield @HSkip - { @Up @Down } @Yield @VSkip - } - } - - def @LRLine right x - { - @HContract @VContract { @HSkip | x | @HSkip } - } - - def @UDLine right x - { - @HContract @VContract { @VSkip / x / @VSkip } - } - - - ####################################################################### - # # - # Ordinary starts: @StartRight, @StartUp, @StartLeft, @StartDown # - # # - ####################################################################### - - def @StartRight right x - { - @VContract { - @LabelMarks { - |syntaxgap @GoRight x |syntaxgap - } - / @LineRightFrom WMK - / back @ArrowLeftFrom EMK - } - } - - def @StartUp right x - { - @VContract { - @LabelMarks { - ^/syntaxgap @GoUp x /syntaxgap - } - / @LineUpFrom SMK - / back @ArrowDownFrom NMK - } - } - - def @StartLeft right x - { - @VContract { - @LabelMarks { - |syntaxgap @GoLeft x |syntaxgap - } - / @LineLeftFrom EMK - / back @ArrowRightFrom WMK - } - } - - def @StartDown right x - { - @VContract { - @LabelMarks { - ^/syntaxgap @GoDown x /syntaxgap - } - / @LineDownFrom NMK - / back @ArrowUpFrom SMK - } - } - - - ####################################################################### - # # - # Fancy starts: @StartRightRight, @StartRightDown # - # # - ####################################################################### - - def @StartRightRight - named A {} - named B {} - { - AA:: @LabelMarks { @HSkip & @GoRight A } - //syntaxgap - //syntaxgap - |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap - CC:: @LabelMarks {} - //syntaxgap - //syntaxgap - |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap - BB:: @LabelMarks { @GoRight B & @HSkip } - // @RVLCurve from { AA@EMK } to { CC@WMK } - bias { pssyntaxbias } radius { pssyntaxradius } - // @LVRCurve from { CC@WMK } to { BB@WMK } - bias { pssyntaxbias } radius { pssyntaxradius } - back @ArrowLeftFrom BB@EMK - } - - def @StartRightRightRight - named A {} - named B {} - named C {} - { - AA:: @LabelMarks { @HSkip & @GoRight A } - //syntaxgap - //syntaxgap - |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap - XX:: @LabelMarks {} - //syntaxgap - //syntaxgap - |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap - BB:: @LabelMarks { @GoRight B & @HSkip } - //syntaxgap - //syntaxgap - |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap - YY:: @LabelMarks {} - //syntaxgap - //syntaxgap - |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap - CC:: @LabelMarks { @GoRight C & @HSkip } - //syntaxgap - //syntaxgap - // @RVLCurve from { AA@EMK } to { XX@WMK } - bias { pssyntaxbias } radius { pssyntaxradius } - // @LVRCurve from { XX@WMK } to { BB@WMK } - bias { pssyntaxbias } radius { pssyntaxradius } - // @RVLCurve from { BB@EMK } to { YY@WMK } - bias { pssyntaxbias } radius { pssyntaxradius } - // @LVRCurve from { YY@WMK } to { CC@WMK } - bias { pssyntaxbias } radius { pssyntaxradius } - back @ArrowLeftFrom CC@EMK - } - - def @StartRightDown - named A {} - named B {} - { - @HContract @VContract { - / BB:: @LabelMarks |syntaxgap AA::@LabelMarks @GoRight A |syntaxbias - /syntaxgap | | - /syntaxgap | | - } - / @Line from { BB@EMK } to { AA@WMK } - / @RVLCurve from { AA@EMK } to { xcoord AA@EMK pssyntaxgap } - bias { pssyntaxbias } radius { pssyntaxradius } - / @HVCurve from { xcoord AA@EMK pssyntaxgap } to { 0 0 } - bias { pssyntaxbias } radius { pssyntaxradius } - / @GoDown B - / @VSkip - / CC:: @LabelMarks {} - / back @ArrowUpFrom CC@NMK - } - - - ####################################################################### - # # - # Cells: @XCell, @ACell, @BCell, @CCell # - # # - ####################################################################### - - def @RightCell right x - { - @VContract { - @LabelMarks { - |syntaxgap x |syntaxgap - } - / forward @ArrowRightFrom WMK - / @LineLeftFrom EMK - } - } - - def @LeftCell right x - { - @VContract { - @LabelMarks { - |syntaxgap x |syntaxgap - } - / forward @ArrowLeftFrom EMK - / @LineRightFrom WMK - } - } - - def @DownCell right x - { - @VContract { - @LabelMarks { - ^/syntaxgap x /syntaxgap - } - / forward @ArrowDownFrom NMK - / @LineUpFrom SMK - } - } - - def @UpCell right x - { - @VContract { - @LabelMarks { - ^/syntaxgap x /syntaxgap - } - / forward @ArrowUpFrom SMK - / @LineDownFrom NMK - } - } - - def @XCell right x - { - @CurrDirection @Case { - @Right @Yield @RightCell x - @Up @Yield @UpCell x - @Left @Yield @LeftCell x - @Down @Yield @DownCell x - } - } - - macro @ACell { @XCell @ANode } - macro @BCell { @XCell @BNode } - macro @CCell { @XCell @CNode } - macro @DCell { @XCell @DNode } - macro @ECell { @XCell @ENode } - - - ####################################################################### - # # - # @Sequence # - # # - ####################################################################### - - def @Sequence - named A {} - named B {} - named C {} - named D {} - named E {} - named F {} - named G {} - named H {} - named I {} - named J {} - named K {} - named L {} - { - - @CurrDirection @Case { - @Right @Yield - @HContract { A | B | C | D | E | F | G | H | I | J | K | L } - @Up @Yield - @VContract { L / K / J / I / H / G / F / E / D / C / B / A } - @Left @Yield - @HContract { L | K | J | I | H | G | F | E | D | C | B | A } - @Down @Yield - @VContract { A / B / C / D / E / F / G / H / I / J / K / L } - } - } - - - ####################################################################### - # # - # @OneOrBoth # - # # - ####################################################################### - - def @OneOrBoth - named A {} - named B {} - { - - def @ALH { - @HContract { - |syntaxgap - "AX":: restrict { "(WMK) (EMK)" } @LabelMarks A - |syntaxgap - } - } - - def @BLH { - @HContract { - |syntaxgap - "BX":: restrict { "(WMK) (EMK)" } @LabelMarks B - |syntaxgap - } - } - - def @ALV { - @VContract { - /syntaxgap - "AX":: restrict { "(NMK) (SMK)" } @LabelMarks A - /syntaxgap - } - } - - def @BLV { - @VContract { - /syntaxgap - "BX":: restrict { "(NMK) (SMK)" } @LabelMarks B - /syntaxgap - } - } - - def @RightOneOrBoth - { - @LRLine { - @HContract @VContract { @ALH | /syntaxgap | @BLH } - // - @HVCurve from { "BX@WMK" } to { 0 ycoord "AX@WMK" } - arrow { no } bias { pssyntaxbias } radius { pssyntaxradius } - // - @HVCurve from { "BX@EMK" } to { xsize ycoord "AX@WMK" } - arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius } - // - @Line from { 0 ycoord "AX@WMK" } to { "AX@WMK" } - // - @Line from { "AX@EMK" } to { xsize ycoord "AX@WMK" } - // - @Arrow - from { {xcoord "AX@EMK" * 0.5 + xcoord "BX@WMK" * 0.5} - ycoord "AX@EMK" } - to { {xcoord "AX@EMK" * 0.5 + xcoord "BX@WMK" * 0.5} - ycoord "BX@WMK" } - } - } - - def @LeftOneOrBoth - { - @LRLine { - @HContract @VContract { | @ALH /syntaxgap @BLH | } - // - @HVCurve from { "BX@WMK" } to { 0 ycoord "AX@WMK" } - arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius } - // - @HVCurve from { "BX@EMK" } to { xsize ycoord "AX@WMK" } - arrow { no } bias { pssyntaxbias } radius { pssyntaxradius } - // - @Line from { 0 ycoord "AX@WMK" } to { "AX@WMK" } - // - @Line from { "AX@EMK" } to { xsize ycoord "AX@WMK" } - // - @Arrow - from { {xcoord "AX@WMK" * 0.5 + xcoord "BX@EMK" * 0.5} - ycoord "AX@WMK" } - to { {xcoord "AX@WMK" * 0.5 + xcoord "BX@EMK" * 0.5} - ycoord "BX@EMK" } - } - } - - def @DownOneOrBoth - { - @UDLine { - @HContract @VContract { @ALV |syntaxgap / | @BLV } - || - @VHCurve from { "BX@NMK" } to { xcoord "AX@NMK" ysize } - arrow { no } bias { pssyntaxbias } radius { pssyntaxradius } - || - @VHCurve from { "BX@SMK" } to { xcoord "AX@NMK" 0 } - arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius } - || - @Line from { xcoord "AX@NMK" ysize } to { "AX@NMK" } - || - @Line from { "AX@SMK" } to { xcoord "AX@SMK" 0 } - || - @Arrow - from { xcoord "AX@SMK" - {ycoord "AX@SMK" * 0.5 + ycoord "BX@NMK" * 0.5} } - to { xcoord "BX@NMK" - {ycoord "AX@SMK" * 0.5 + ycoord "BX@NMK" * 0.5} } - } - } - - def @UpOneOrBoth - { - @UDLine { - @HContract @VContract { |syntaxgap @BLV / @ALV | } - || - @VHCurve from { "BX@NMK" } to { xcoord "AX@NMK" ysize } - arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius } - || - @VHCurve from { "BX@SMK" } to { xcoord "AX@NMK" 0 } - arrow { no } bias { pssyntaxbias } radius { pssyntaxradius } - || - @Line from { xcoord "AX@NMK" ysize } to { "AX@NMK" } - || - @Line from { "AX@SMK" } to { xcoord "AX@SMK" 0 } - || - @Arrow - from { xcoord "AX@NMK" - {ycoord "AX@NMK" * 0.5 + ycoord "BX@SMK" * 0.5} } - to { xcoord "BX@SMK" - {ycoord "AX@NMK" * 0.5 + ycoord "BX@SMK" * 0.5} } - } - } - - @CurrDirection @Case { - @Right @Yield @RightOneOrBoth - @Up @Yield @UpOneOrBoth - @Left @Yield @LeftOneOrBoth - @Down @Yield @DownOneOrBoth - } - } - - ####################################################################### - # # - # @Select and @Optional # - # # - ####################################################################### - - def @Select - named A {} - named B {} - named C {} - named D {} - named E {} - named F {} - named G {} - named H {} - named I {} - named J {} - named K {} - named L {} - { - - def @RLFirstOrMiddle - left label - named i { 0i } - named al { no } - named ar { no } - right x - { - {|i @HContract { |syntaxgap label:: restrict { "(WMK) (EMK)" } - @LabelMarks x |syntaxgap }} - // @Line from { label"@WMK" } to { 0 ycoord label"@WMK" } - arrow { al } - // @Line from { label"@EMK" } to { xsize ycoord label"@EMK" } - arrow { ar } - } - - def @UDFirstOrMiddle - left label - named i { 0i } - named au { no } - named ad { no } - right x - { - {/i @VContract { /syntaxgap label:: restrict { "(NMK) (SMK)" } - @LabelMarks x /syntaxgap }} - || @Line from { label"@NMK" } to { xcoord label"@NMK" ysize } - arrow { au } - || @Line from { label"@SMK" } to { xcoord label"@SMK" 0 } - arrow { ad } - } - - def @RLLast - left label - named i { 0i } - named al { no } - named ar { no } - right x - { - {|i @HContract { |syntaxgap label:: restrict { "(WMK) (EMK)" } - @LabelMarks x |syntaxgap }} - // @HVCurve from { label"@WMK" } to { 0 ycoord "AX@WMK" } - arrow { al } bias { pssyntaxbias } radius { pssyntaxradius } - // @HVCurve from { label"@EMK" } to { xsize ycoord "AX@WMK" } - arrow { ar } bias { pssyntaxbias } radius { pssyntaxradius } - } - - def @UDLast - left label - named i { 0i } - named au { no } - named ad { no } - right x - { - {/i @VContract { /syntaxgap label:: restrict { "(NMK) (SMK)" } - @LabelMarks x /syntaxgap }} - || @VHCurve from { label"@NMK" } to { xcoord "AX@NMK" ysize } - arrow { au } bias { pssyntaxbias } radius { pssyntaxradius } - || @VHCurve from { label"@SMK" } to { xcoord "AX@SMK" 0 } - arrow { ad } bias { pssyntaxbias } radius { pssyntaxradius } - } - - def @DirectedSelect - named @First left label right x {} - named @Middle left label right x {} - named @Last left label right x {} - named @Join precedence 90 left x right y {} - { - - def @LastIsA - { - A - } - - def @LastIsB - { - AX @First A - @Join BX @Last B - } - - def @LastIsC - { - AX @First A - @Join BX @Middle B - @Join CX @Last C - } - - def @LastIsD - { - AX @First A - @Join BX @Middle B - @Join CX @Middle C - @Join DX @Last D - } - - def @LastIsE - { - AX @First A - @Join BX @Middle B - @Join CX @Middle C - @Join DX @Middle D - @Join EX @Last E - } - - def @LastIsF - { - AX @First A - @Join BX @Middle B - @Join CX @Middle C - @Join DX @Middle D - @Join EX @Middle E - @Join FX @Last F - } - - def @UpToF - { - AX @First A - @Join BX @Middle B - @Join CX @Middle C - @Join DX @Middle D - @Join EX @Middle E - @Join FX @Middle F - } - - def @LastIsG - { - @UpToF - @Join GX @Last G - } - - def @LastIsH - { - @UpToF - @Join GX @Middle G - @Join HX @Last H - } - - def @LastIsI - { - @UpToF - @Join GX @Middle G - @Join HX @Middle H - @Join IX @Last I - } - - def @LastIsJ - { - @UpToF - @Join GX @Middle G - @Join HX @Middle H - @Join IX @Middle I - @Join JX @Last J - } - - def @LastIsK - { - @UpToF - @Join GX @Middle G - @Join HX @Middle H - @Join IX @Middle I - @Join JX @Middle J - @Join KX @Last K - } - - def @LastIsL - { - @UpToF - @Join GX @Middle G - @Join HX @Middle H - @Join IX @Middle I - @Join JX @Middle J - @Join KX @Middle K - @Join LX @Last L - } - - def @TryA { A @Case { {} @Yield @Skip else @Yield @LastIsA } } - def @TryB { B @Case { {} @Yield @TryA else @Yield @LastIsB } } - def @TryC { C @Case { {} @Yield @TryB else @Yield @LastIsC } } - def @TryD { D @Case { {} @Yield @TryC else @Yield @LastIsD } } - def @TryE { E @Case { {} @Yield @TryD else @Yield @LastIsE } } - def @TryF { F @Case { {} @Yield @TryE else @Yield @LastIsF } } - def @TryG { G @Case { {} @Yield @TryF else @Yield @LastIsG } } - def @TryH { H @Case { {} @Yield @TryG else @Yield @LastIsH } } - def @TryI { I @Case { {} @Yield @TryH else @Yield @LastIsI } } - def @TryJ { J @Case { {} @Yield @TryI else @Yield @LastIsJ } } - def @TryK { K @Case { {} @Yield @TryJ else @Yield @LastIsK } } - def @TryL { L @Case { {} @Yield @TryK else @Yield @LastIsL } } - - @TryL - } - - def @RightSelect - { - @LRLine @DirectedSelect - @First { label @RLFirstOrMiddle x } - @Middle { label @RLFirstOrMiddle ar { yes } x } - @Last { label @RLLast ar { yes } x } - @Join { x //syntaxgap y } - } - - def @UpSelect - { - @UDLine @DirectedSelect - @First { label @UDFirstOrMiddle i { 1r } x } - @Middle { label @UDFirstOrMiddle i { 1r } au { yes } x } - @Last { label @UDLast i { 1r } au { yes } x } - @Join { x ||syntaxgap y } - } - - def @LeftSelect - { - @LRLine @DirectedSelect - @First { label @RLFirstOrMiddle i { 1r } x } - @Middle { label @RLFirstOrMiddle i { 1r } al { yes } x } - @Last { label @RLLast i { 1r } al { yes } x } - @Join { x //syntaxgap y } - } - - def @DownSelect - { - @UDLine @DirectedSelect - @First { label @UDFirstOrMiddle x } - @Middle { label @UDFirstOrMiddle ad { yes } x } - @Last { label @UDLast ad { yes } x } - @Join { x ||syntaxgap y } - } - - @CurrDirection @Case { - @Right @Yield @RightSelect - @Up @Yield @UpSelect - @Left @Yield @LeftSelect - @Down @Yield @DownSelect - } - } - - - def @Optional right x - { - @Select A { @Skip } B { x } - } - - - ####################################################################### - # # - # @OptionalDiverted # - # # - ####################################################################### - - def @DownRightOptionalDiverted right x - { - @UDLine { - OX:: @LabelMarks { - |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias - /syntaxgap - } - / @Line from { "OX@NW" } to { "OX@SW" } - / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" } - / @RVLCurveArrow from { "OX@IN@AX@EMK" } to { "OX@SW" } - bias { pssyntaxbias } radius { pssyntaxradius } - } - } - - def @UpRightOptionalDiverted right x - { - @UDLine { - OX:: @LabelMarks { - ^/syntaxgap - |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias - } - / @Line from { "OX@NW" } to { "OX@SW" } - / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" } - / @RVLCurveArrow from { "OX@IN@AX@EMK" } to { "OX@NW" } - bias { pssyntaxbias } radius { pssyntaxradius } - } - } - - def @RightDownOptionalDiverted right x - { - @LRLine { - OX:: @LabelMarks { - { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias } - |syntaxgap - } - / @Line from { "OX@NW" } to { "OX@NE" } - / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" } - / @VHCurve from {"OX@IN@AX@SMK"} to { "OX@SE"--{pssyntaxgap 0} } - bias { pssyntaxbias } radius { pssyntaxradius } - / @HVCurve from { "OX@SE" -- {pssyntaxgap 0} } to { "OX@NE" } - arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius } - } - } - - def @LeftDownOptionalDiverted right x - { - @LRLine { - OX:: @LabelMarks { - ^|syntaxgap - { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias } - } - / @Line from { "OX@NW" } to { "OX@NE" } - / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" } - / @VHCurve from {"OX@IN@AX@SMK"} to { "OX@SW"++{pssyntaxgap 0} } - bias { pssyntaxbias } radius { pssyntaxradius } - / @HVCurve from { "OX@SW" ++ {pssyntaxgap 0} } to { "OX@NW" } - arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius } - } - } - - def @OptionalDiverted right x - { - @CurrDirection @Case { - @Right @Yield @RightDownOptionalDiverted x - @Up @Yield @UpRightOptionalDiverted x - @Left @Yield @LeftDownOptionalDiverted x - @Down @Yield @DownRightOptionalDiverted x - } - } - - - ####################################################################### - # # - # @Diverted # - # # - ####################################################################### - - def @DownRightDiverted right x - { - @UDLine { - OX:: @LabelMarks { - |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias - ^/syntaxgap - /syntaxgap - } - / @VHCurve from { "OX@NW" } to { "OX@IN@AX@WMK" } - bias { pssyntaxbias } radius { pssyntaxradius } - / @RVLCurve from { "OX@IN@AX@EMK" } - to { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" } - bias { pssyntaxbias } radius { pssyntaxradius } - / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" } - to { "OX@SW" } bias { pssyntaxbias } radius {pssyntaxradius} - } - } - - def @UpRightDiverted right x - { - @UDLine { - OX:: @LabelMarks { - ^/syntaxgap - /syntaxgap - |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias - } - / @VHCurve from { "OX@SW" } to { "OX@IN@AX@WMK" } - bias { pssyntaxbias } radius { pssyntaxradius } - / @RVLCurve from { "OX@IN@AX@EMK" } - to { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" } - bias { pssyntaxbias } radius { pssyntaxradius } - / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" } - to { "OX@NW" } bias { pssyntaxbias } radius {pssyntaxradius} - } - } - - def @RightDownDiverted right x - { - @LRLine { - OX:: @LabelMarks { - { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias } - ^|syntaxgap - |syntaxgap - } - / @HVCurve from { "OX@NW" } to { "OX@IN@AX@NMK" } - bias { pssyntaxbias } radius { pssyntaxradius } - / @VHCurve from { "OX@IN@AX@SMK" } - to { xcoord "OX@IN@AX@EMK" ycoord "OX@SMK" } - bias { pssyntaxbias } radius { pssyntaxradius } - / @HVCurve from { xcoord "OX@IN@AX@EMK" ycoord "OX@SMK" } - to { "OX@IN@AX@EMK" ++ { pssyntaxgap 0 } } - bias { pssyntaxbias } radius {pssyntaxradius} - / @VHCurve from { "OX@IN@AX@EMK" ++ { pssyntaxgap 0 } } - to { "OX@NE" } bias { pssyntaxbias } radius {pssyntaxradius} - } - } - - def @LeftDownDiverted right x - { - @LRLine { - OX:: @LabelMarks { - |syntaxgap - ^|syntaxgap - { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias } - } - / @HVCurve from { "OX@NE" } to { "OX@IN@AX@NMK" } - bias { pssyntaxbias } radius { pssyntaxradius } - / @VHCurve from { "OX@IN@AX@SMK" } - to { xcoord "OX@IN@AX@WMK" ycoord "OX@SMK" } - bias { pssyntaxbias } radius { pssyntaxradius } - / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@SMK" } - to { "OX@IN@AX@WMK" -- { pssyntaxgap 0 } } - bias { pssyntaxbias } radius {pssyntaxradius} - / @VHCurve from { "OX@IN@AX@WMK" -- { pssyntaxgap 0 } } - to { "OX@NW" } bias { pssyntaxbias } radius {pssyntaxradius} - } - } - - def @Diverted right x - { - @CurrDirection @Case { - @Right @Yield @RightDownDiverted x - @Up @Yield @UpRightDiverted x - @Left @Yield @LeftDownDiverted x - @Down @Yield @DownRightDiverted x - } - } - - - ####################################################################### - # # - # @RepeatDiverted # - # # - ####################################################################### - - def @RepeatDiverted right x - { - # this implementation exploits the coincidental similarity - # of @RepeatDiverted to @OptionalDiverted - - @CurrDirection @Case { - @Right @Yield @LeftDownOptionalDiverted x - @Up @Yield @DownRightOptionalDiverted x - @Left @Yield @RightDownOptionalDiverted x - @Down @Yield @UpRightOptionalDiverted x - } - } - - - - ####################################################################### - # # - # @Loop and @Repeat # - # # - ####################################################################### - - def @Loop - named A {} - named B {} - { - def @LeftOrRightLoop - named al { no } - named ar { no } - { - @LRLine { - @HContract @VContract { OX:: @LabelMarks { - { |syntaxgap AX:: @LabelMarks A |syntaxgap } - //syntaxgap - { |0.5rt BX:: @LabelMarks @GoReverse B |syntaxgap } - } } - / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" } - / @Line from { "OX@EMK" } to { "OX@IN@AX@EMK" } - / @HVCurve from { "OX@IN@BX@EMK" } to { "OX@EMK" } - arrow { ar } bias {pssyntaxbias} radius {pssyntaxradius} - / @HVCurve from { "OX@IN@BX@WMK" } to { "OX@WMK" } - arrow { al } bias {pssyntaxbias} radius {pssyntaxradius} - } - } - - def @UpOrDownLoop - named au { no } - named ad { no } - { - @UDLine { - @HContract @VContract { OX:: @LabelMarks { - { /syntaxgap AX:: @LabelMarks A /syntaxgap } - ||syntaxgap - { /0.5rt BX:: @LabelMarks @GoReverse B /syntaxgap } - } } - / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" } - / @Line from { "OX@SMK" } to { "OX@IN@AX@SMK" } - / @VHCurve from { "OX@IN@BX@NMK" } to { "OX@NMK" } - arrow { au } bias {pssyntaxbias} radius {pssyntaxradius} - / @VHCurve from { "OX@IN@BX@SMK" } to { "OX@SMK" } - arrow { ad } bias {pssyntaxbias} radius {pssyntaxradius} - } - } - - @CurrDirection @Case { - @Right @Yield @LeftOrRightLoop al { yes } - @Up @Yield @UpOrDownLoop ad { yes } - @Left @Yield @LeftOrRightLoop ar { yes } - @Down @Yield @UpOrDownLoop au { yes } - } - } - - def @Repeat right x - { - @Loop - A { x } - B { @Skip } - } - - - ####################################################################### - # # - # @LoopOpposite and @RepeatOpposite # - # # - ####################################################################### - - def @LoopOpposite - named A {} - named B {} - { - def @LeftOrRightLoopOpposite - named al { no } - named ar { no } - { - @LRLine { - @HContract @VContract { OX:: @LabelMarks { - { |0.5rt BX:: @LabelMarks @GoReverse B |syntaxgap } - //syntaxgap - ^//syntaxgap - { |syntaxgap AX:: @LabelMarks A |syntaxgap } - } } - / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" } - / @Line from { "OX@EMK" } to { "OX@IN@AX@EMK" } - / @HVCurve from { "OX@IN@BX@EMK" } to { "OX@EMK" } - arrow { ar } bias {pssyntaxbias} radius {pssyntaxradius} - / @HVCurve from { "OX@IN@BX@WMK" } to { "OX@WMK" } - arrow { al } bias {pssyntaxbias} radius {pssyntaxradius} - } - } - - def @UpOrDownLoopOpposite - named au { no } - named ad { no } - { - @UDLine { - @HContract @VContract { OX:: @LabelMarks { - { /0.5rt BX:: @LabelMarks @GoReverse B /syntaxgap } - ^||syntaxgap - { /syntaxgap AX:: @LabelMarks A /syntaxgap } - } } - / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" } - / @Line from { "OX@SMK" } to { "OX@IN@AX@SMK" } - / @VHCurve from { "OX@IN@BX@NMK" } to { "OX@NMK" } - arrow { au } bias {pssyntaxbias} radius {pssyntaxradius} - / @VHCurve from { "OX@IN@BX@SMK" } to { "OX@SMK" } - arrow { ad } bias {pssyntaxbias} radius {pssyntaxradius} - } - } - - @CurrDirection @Case { - @Right @Yield @LeftOrRightLoopOpposite al { yes } - @Up @Yield @UpOrDownLoopOpposite ad { yes } - @Left @Yield @LeftOrRightLoopOpposite ar { yes } - @Down @Yield @UpOrDownLoopOpposite au { yes } - } - } - - def @RepeatOpposite right x - { - @LoopOpposite - A { x } - B { @Skip } - } - - - ####################################################################### - # # - # Value of whole diagram # - # # - ####################################################################### - - def @DiagValue right x - { - @BackEnd @Case { - PostScript @Yield { - { - save @Case { - { yes Yes } @Yield "grestore save gsave" - else @Yield {} - } - maxlabels "ldiagbegin" - // - "ldiagend" - save @Case { - { yes Yes } @Yield "restore" - else @Yield {} - } - } @Graphic x } - - PDF @Yield {} - } - } - - title @Case { - - "--titledft--" @Yield @DiagValue @Body - - else @Yield { title titleformat @DiagValue @Body } - } - - @End @Diag - - - macro @SyntaxDiag { - @Diag - avalign { mark } - avstrut { yes } - amargin { 0.2f } - aoutline { box } - afont { Slope } - - bvalign { mark } - bvstrut { yes } - bmargin { 0.2f } - boutline { curvebox } - bfont { Bold } - - cvalign { mark } - cvstrut { yes } - cmargin { 0.2f } - coutline { circle } - chsize { 1f } - - arrowlength { 0.4f } - backarrowlength { 0.4f } - } -} diff --git a/include/include/diagf.etc b/include/include/diagf.etc deleted file mode 100644 index 02141b6..0000000 --- a/include/include/diagf.etc +++ /dev/null @@ -1,644 +0,0 @@ - -############################################################################### -# # -# Lout @Geometry package for algebra and geometry in PostScript # -# Version 1.0 (June 1996) # -# Jeffrey H. Kingston # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export - - i c p m s v f d "-0" "-1" "-2" "-3" "-4" "-5" "-6" "-7" "-8" "-9" "-." - pi e sqrt abs ceiling floor truncate round cos sin atan - exp log rand max min "*" "/" idiv mod "+" "-" - xcoord ycoord distance angleto ":=" ":==" "::" ":<" prev "??" "?!?" - boundaryatangle atangle - "**" "++" "--" anglefix anydebug "," - "=" "!=" "==" "!==" "<" "<=" ">" ">=" not and xor or - if quadcase signcase xloop yloop zloop - cabout aabout - -def @Geometry -{ - def i - precedence 100 - left x - { - x "in" - } - - def c - precedence 100 - left x - { - x "cm" - } - - def p - precedence 100 - left x - { - x "pt" - } - - def m - precedence 100 - left x - { - x "em" - } - - def s - precedence 100 - left x - { - x "sp" - } - - def v - precedence 100 - left x - { - x "vs" - } - - def f - precedence 100 - left x - { - x "ft" - } - - def d - precedence 100 - left x - { - x "dg" - } - - def pi - { - "ldiagpi" - } - - def e - { - "ldiage" - } - - def sqrt - precedence 99 - right y - { - y "sqrt" - } - - def abs - precedence 99 - right y - { - y "abs" - } - - def anglefix - precedence 99 - right y - { - y "ldiagfixangle" - } - - def ceiling - precedence 99 - right y - { - y "ceiling" - } - - def floor - precedence 99 - right y - { - y "floor" - } - - def truncate - precedence 99 - right y - { - y "truncate" - } - - def round - precedence 99 - right y - { - y "round" - } - - def cos - precedence 99 - right y - { - y "cos" - } - - def sin - precedence 99 - right y - { - y "sin" - } - - def xcoord - precedence 99 - right y - { - y "pop" - } - - def ycoord - precedence 99 - right y - { - y "exch pop" - } - - def distance - precedence 98 - left x - right y - { - x y "ldiagdistance" - } - - def angleto - precedence 98 - left x - right y - { - x y "ldiagangleto" - } - - def atan - precedence 98 - left x - right y - { - x y "atan" - } - - def exp - precedence 98 - left x - right y - { - x y "exp" - } - - def log - precedence 98 - left x - right y - { - x y "ldiaglog" - } - - def rand - precedence 98 - left x - right y - { - x y "dorand" - } - - def max - precedence 98 - left x - right y - { - x y "ldiagmax" - } - - def min - precedence 98 - left x - right y - { - x y "ldiagmin" - } - - def "*" - precedence 97 - left x - right y - { - x y "mul" - } - - def "/" - precedence 96 - associativity left - left x - right y - { - x y "div" - } - - def idiv - precedence 96 - associativity left - left x - right y - { - x y "idiv" - } - - def mod - precedence 96 - left x - right y - { - x "cvi" y "cvi mod" - } - - def "+" - precedence 95 - associativity left - left x - right y - { - x @Case { - "" @Yield y - else @Yield { x y "add" } - } - } - - def "-" - precedence 95 - associativity left - left x - right y - { - x @Case { - "" @Yield { y "neg" } - else @Yield { x y "sub" } - } - } - - def "-0" { "-0" } - def "-1" { "-1" } - def "-2" { "-2" } - def "-3" { "-3" } - def "-4" { "-4" } - def "-5" { "-5" } - def "-6" { "-6" } - def "-7" { "-7" } - def "-8" { "-8" } - def "-9" { "-9" } - def "-." { "-." } - - def prev - { - "ldiagprevious" - } - - def "??" - precedence 99 - left x - right y - { - "{" x "} ("y") ldiagdolabel" - } - - def "?!?" - precedence 99 - left x - right y - { - "{" x "} "y" ldiagdolabel" - } - - def boundaryatangle - precedence 89 - left x - right y - { - x??"CTR" y x??"CIRCUM" "ldiagpadd" - } - - def atangle - precedence 89 - left x - right y - { - 0 0 x y "ldiagatangle" - } - - def "**" - precedence 88 - left x - right y - { - x y "ldiagpmul" - } - - def "++" - precedence 87 - associativity left - left x - right y - { - x y "ldiagpadd" - } - - def "--" - precedence 87 - associativity left - left x - right y - { - y x "ldiagpsub" - } - - def "=" - precedence 79 - left x - right y - { - x y "eq" - } - - def "!=" - precedence 79 - left x - right y - { - x y "ne" - } - - def "==" - precedence 79 - left x - right y - { - x y "ldiagangleeq" - } - - def "!==" - precedence 79 - left x - right y - { - x y "ldiaganglene" - } - - def "<" - precedence 79 - left x - right y - { - x y "lt" - } - - def "<=" - precedence 79 - left x - right y - { - x y "le" - } - - def ">" - precedence 79 - left x - right y - { - x y "gt" - } - - def ">=" - precedence 79 - left x - right y - { - x y "ge" - } - - def not - precedence 78 - right y - { - y "not" - } - - def and - precedence 77 - left x - right y - { - x y "and" - } - - def xor - precedence 76 - left x - right y - { - x y "xor" - } - - def or - precedence 76 - left x - right y - { - x y "or" - } - - def "," - precedence 70 - left x - right y - { - OOO ++ { OOX -- OOO }**x ++ { OOY -- OOO }**y - } - - def ":=" - precedence 20 - left x - right y - { - "/"x "[" y "] cvx def" - } - - def ":==" - precedence 20 - left x - right y - { - "/"x "[" y "counttomark 2 add (assigning) exch ldiagdebugprint ] cvx def" - } - - def "::" - precedence 20 - left x - right y - { - y "/"x "ldiagpointdef" - } - - def ":<" - precedence 20 - left x - right y - { - y "/"x"@ANGLE ldiagangledef" - } - - def if - named cond {} - named then {} - named else {} - { - cond "{" then "} {" else "} ifelse" - } - - def quadcase - precedence 10 - left angle - named "0" {} - named "0-90" {} - named "90" {} - named "90-180" {} - named "180" {} - named "180-270" {} - named "270" {} - named "270-360" {} - { - "{" 0-90 "} {" 270 "} {" 180 "} {" 90 "}" - "{" 0 "} {" 270-360 "} {" 180-270 "} {" 90-180 "}" angle "ldiagquadcase" - } - - def signcase - precedence 10 - left number - named neg {} - named zero {} - named pos {} - { - "{" neg "} {" zero "} {" pos "}" number "ldiagsigncase" - } - - def xloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named x { "xval" } {} - { - from by to "{ /xval exch def" do "} for" - } - - def yloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named y { "yval" } {} - { - from by to "{ /yval exch def" do "} for" - } - - def zloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named z { "zval" } {} - { - from by to "{ /zval exch def" do "} for" - } - - def anydebug - right tag - { - "[" tag "counttomark ("tag") exch ldiagdebugprint cleartomark" - } - - def aabout - named circum {} - named extra {} - named centre {} - { - "{" circum "} cvlit" extra "[" centre "] cvx ldiagaabout" - # ZXCTR := centre - # ZFCTR := circum??CTR - # ZAREF := ZFCTR angleto ZXCTR - # ZAMIN := 0d - # ZPMIN := circum boundaryatangle { ZAREF - ZAMIN } - # ++ extra atangle { ZAREF - ZAMIN } - # ZAMAX := 90d - # ZPMAX := circum boundaryatangle { ZAREF - ZAMAX } - # ++ extra atangle { ZAREF - ZAMAX } - # xloop from { 1 } to { 12 } by { 1 } do { - # ZAMID := { ZAMIN + ZAMAX } * 0.5 - # ZPMID := circum boundaryatangle { ZAREF - ZAMID } - # ++ extra atangle { ZAREF - ZAMID } - # if cond { {ZPMID distance ZXCTR} > {ZFCTR distance ZXCTR} } then { - # ZAMAX := ZAMID - # ZPMAX := ZPMID - # } - # else { - # ZAMIN := ZAMID - # ZPMIN := ZPMID - # } - # } - # ZPMID - } - - def cabout - named circum {} - named extra {} - named centre {} - { - "{" circum "} cvlit" extra "[" centre "] cvx ldiagcabout" - # ZXCTR := centre - # ZFCTR := circum??CTR - # ZAREF := ZFCTR angleto ZXCTR - # ZAMIN := 0d - # ZPMIN := circum boundaryatangle { ZAREF + ZAMIN } - # ++ extra atangle { ZAREF + ZAMIN } - # ZAMAX := 90d - # ZPMAX := circum boundaryatangle { ZAREF + ZAMAX } - # ++ extra atangle { ZAREF + ZAMAX } - # xloop from { 1 } to { 12 } by { 1 } do { - # ZAMID := { ZAMIN + ZAMAX } * 0.5 - # ZPMID := circum boundaryatangle { ZAREF + ZAMID } - # ++ extra atangle { ZAREF + ZAMID } - # if cond { {ZPMID distance ZXCTR} > {ZFCTR distance ZXCTR} } then { - # ZAMAX := ZAMID - # ZPMAX := ZPMID - # } - # else { - # ZAMIN := ZAMID - # ZPMIN := ZPMID - # } - # } - # ZPMID - } -} diff --git a/include/include/diagf.lpg b/include/include/diagf.lpg deleted file mode 100644 index 846d510..0000000 --- a/include/include/diagf.lpg +++ /dev/null @@ -1,3414 +0,0 @@ -%%BeginResource: procset LoutDiagPrependGraphic -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% PostScript @SysPrependGraphic file for @Diag Jeffrey H. Kingston % -% Version 2.0 (includes CIRCUM label) September 1996 % -% % -% This file has been placed in the public domain by its author, % -% Jeffrey H. Kingston % -% % -% To assist in avoiding name clashes, the names of all symbols % -% defined here begin with "ldiag". However, this is not feasible % -% with user-defined labels and some labels used by users. % -% % -% <point> is two numbers, a point. % -% <length> is one number, a length % -% <angle> is one number, an angle in degrees % -% <dashlength> is one number, the preferred length of a dash % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -errordict begin - /handleerror - { - { /Times-Roman findfont 8 pt scalefont setfont - 0 setgray 4 pt 4 pt moveto - $error /errorname get - dup ldiagdict exch known - { ldiagdict exch get } - { 100 string cvs } ifelse - show - ( Command: ) show - $error /command get 100 string cvs show - } stopped {} if - showpage stop - } def -end - -% begin diagram: <maxlabels> ldiagbegin - -% must be defined outside ldiagdict since it loads it -/ldiagbegin -{ xsize 0 0 ysize ldiagdict begin - 5 -1 roll /ldiagmaxlabels exch def - (@Diag) ldiagpushtagdict - /OOY ldiagpointdef /OOX ldiagpointdef 0 0 /OOO ldiagpointdef -} def - -% end diagram: - ldiagend - -/ldiagend -{ ldiagpoptagdict end -} def - -% concat strings: <string> <string> ldiagconcat <string> -% must be defined outside ldiagdict since used in ldiagpromotelabels -/ldiagconcat -{ 2 copy length exch length add string - dup 0 4 index putinterval - dup 3 index length 3 index putinterval - 3 1 roll pop pop -} def - -% mconcat strings: <string> <string> ldiagmconcat <string> -% returns concatenation, separated by @ if first is non-empty -% must be defined outside ldiagdict since used in ldiagpromotelabels -/ldiagmconcat -{ - 2 copy length exch length add 1 add string - dup 0 4 index putinterval - dup 3 index length (@) putinterval - dup 3 index length 1 add 3 index putinterval - 3 1 roll pop pop -} def - -% show string in format start ... end: <string> ldiagsends <string> -/ldiagsends -{ - dup length 20 string cvs (: ) ldiagconcat exch - dup 0 20 getinterval ( ... ) ldiagconcat - 3 -1 roll exch ldiagconcat - exch dup length 20 sub 20 getinterval ldiagconcat -} def - -/ldiagdebugposy 432 def -/ldiagdebugposx 72 def - -% - ldiagdebugnextline - -/ldiagdebugnextline -{ - ldiagdebugposy 72 lt - { /ldiagdebugposx ldiagdebugposx 144 add store - /ldiagdebugposy 432 store - } - { - /ldiagdebugposy ldiagdebugposy 12 sub store - } ifelse - ldiagdebugposx ldiagdebugposy moveto -} def - -% - ldiagdebugbeginindent - -/ldiagdebugbeginindent -{ - /ldiagdebugposx ldiagdebugposx 12 add store -} def - -% - ldiagdebugendindent - -/ldiagdebugendindent -{ - /ldiagdebugposx ldiagdebugposx 12 sub store -} def - -% <string> <int> ldiagdebugprint - -% must be defined outside ldiagdict since used in arbitrary places -% print <string> plus count or <int> stack entries, whichever is the smaller -/ldiagdebugprint -{ - exch - gsave - initgraphics - ldiagdebugnextline - /Times-Roman findfont 10 scalefont setfont - 0 setgray show - ldiagdebugbeginindent - count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub - 0 exch 1 exch - { - ldiagdebugnextline - index - dup type (dicttype) eq - { - (begin dict) show - ldiagdebugbeginindent - { - ldiagdebugnextline - pop 100 string cvs show - } forall - ldiagdebugendindent - ldiagdebugnextline - (end dict) show - } - { - dup type (arraytype) eq - { - (begin array) show - ldiagdebugbeginindent - { - ldiagdebugnextline - 100 string cvs show - } forall - ldiagdebugendindent - ldiagdebugnextline - (end array) show - } - { - 100 string cvs show - } ifelse - } ifelse - } for - ldiagdebugendindent - grestore -} def - -/ldiagdict 200 dict def -ldiagdict begin - -% error messages -/dictfull (dictfull error: too many labels?) def -/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def -/execstackoverflow (execstackoverflow error: figure nested too deeply?) def -/limitcheck (limitcheck error: figure nested too deeply or too large?) def -/syntaxerror (syntaxerror error: syntax error in text of figure?) def -/typecheck (typecheck error: syntax error in text of figure?) def -/undefined (undefined error: unknown or misspelt label?) def -/VMError (VMError error: run out of memory?) def - -% push pi onto stack: - ldiagpi <num> -/ldiagpi 3.14159 def - -% push e onto stack: - ldiage <num> -/ldiage 2.71828 def - -% arc directions -/clockwise false def -/anticlockwise true def - -% test equality between two angles: <angle> <angle> ldiagangleeq <bool> -/ldiagangleeq { ldiagfixangle exch ldiagfixangle eq } def - -% test inequality between two angles: <angle> <angle> ldiaganglene <bool> -/ldiaganglene { ldiagangleeq not } def - -% maximum of two numbers: <num> <num> ldiagmax <num> -/ldiagmax { 2 copy gt { pop } { exch pop } ifelse } def - -% minimum of two numbers: <num> <num> ldiagmin <num> -/ldiagmin { 2 copy lt { pop } { exch pop } ifelse } def - -% add two points: <point> <point> ldiagpadd <point> -/ldiagpadd -{ - % (Entering padd) 4 ldiagdebugprint - exch 3 1 roll add 3 1 roll add exch - % (Leaving padd) 2 ldiagdebugprint -} def - -% subtract first point from second: <point> <point> ldiagpsub <point> -/ldiagpsub { 3 2 roll sub 3 1 roll exch sub exch } def - -% max two points: <point> <point> ldiagpmax <point> -/ldiagpmax { exch 3 1 roll ldiagmax 3 1 roll ldiagmax exch } def - -% min two points: <point> <point> ldiagpmin <point> -/ldiagpmin { exch 3 1 roll ldiagmin 3 1 roll ldiagmin exch } def - -% scalar multiplication: <point> <num> ldiagpmul <point> -/ldiagpmul { dup 3 1 roll mul 3 1 roll mul exch } def - -% point at angle and distance: <point> <length> <angle> ldiagatangle <point> -/ldiagatangle { 2 copy cos mul 3 1 roll sin mul ldiagpadd } def - -% angle from one point to another: <point> <point> ldiagangleto <angle> -/ldiagangleto { ldiagpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def - -% distance between two points: <point> <point> ldiagdistance <length> -/ldiagdistance { ldiagpsub dup mul exch dup mul add sqrt } def - -% stroke a noline line: <length> <dashlength> ldiagnoline - -/ldiagnoline -{ pop pop -} def - -% stroke a solid line: <length> <dashlength> ldiagsolid - -/ldiagsolid -{ pop pop [] 0 setdash 1 setlinecap stroke -} def - -% stroke a dashed line: <length> <dashlength> ldiagdashed - -/ldiagdashed -{ 2 copy div 2 le 1 index 0 le or - { exch pop 1 pt ldiagmax [ exch dup ] 0 setdash } - { dup [ exch 4 2 roll 2 copy div - 1 sub 2 div ceiling dup 4 1 roll - 1 add mul sub exch div ] 0 setdash - } ifelse 0 setlinecap stroke -} def - -% stroke a cdashed line: <length> <dashlength> ldiagcdashed - -/ldiagcdashed -{ % (Entering ldiagcdashed) 2 ldiagdebugprint - 2 copy le 1 index 0 le or - { exch pop 1 pt ldiagmax [ exch dup ] dup 0 get 2 div setdash } - { dup [ 4 2 roll exch 2 copy exch div - 2 div ceiling div 1 index sub - ] exch 2 div setdash - } ifelse 0 setlinecap stroke - % (Leaving ldiagcdashed) 0 ldiagdebugprint -} def - -% stroke a dotted line: <length> <dashlength> ldiagdotted - -/ldiagdotted -{ 2 copy le 1 index 0 le or - { exch pop 1 pt ldiagmax [ exch 0 exch ] 0 setdash } - { 1 index exch div ceiling div - [ 0 3 2 roll ] 0 setdash - } ifelse 1 setlinecap stroke -} def - -% scale array elements by factor: <array> <factor> ldiagscalearray <array> -/ldiagscalearray -{ - [ exch 3 2 roll - { exch dup 3 1 roll mul exch } forall - pop ] -} def - -% sum array elements: <array> ldiagsumarray <number> -/ldiagsumarray -{ - 0 exch { add } forall -} def - -% begin a more complex line: <length> <dashlength> ldiaglinebegin - -/ldiaglinebegin -{ - % (Entering ldiaglinebegin) 2 ldiagdebugprint - 20 dict begin - /dashlen exch 1 pt ldiagmax def - /len exch def - /gap dashlen def - /halfgap dashlen 2 div def - /dash dashlen def - /halfdash dashlen 2 div def - /dot 0 def - % (Leaving ldiaglinebegin) 0 ldiagdebugprint -} def - -% end a more complex line: <linecap> <cycle> <startpos> <stoppos> ldiaglineend - -/ldiaglineend -{ - % (Entering ldiaglineend) 3 ldiagdebugprint - /stoppos exch def - /startpos exch def - /cycle exch def - /linecap exch def - /stopposlen stoppos ldiagsumarray def - /startposlen startpos ldiagsumarray def - /cyclelen cycle ldiagsumarray def - /effectivelen len startposlen add stopposlen sub def - effectivelen 0 gt cyclelen 0 gt and - { - /repeats effectivelen cyclelen div ceiling def - /factor len repeats cyclelen mul startposlen sub stopposlen add div def - cycle factor ldiagscalearray startposlen factor mul setdash - linecap setlinecap stroke - } if - end - % (Leaving ldiaglineend) 0 ldiagdebugprint -} def - -% stroke a dotdashed line: <length> <dashlength> ldiagdotdashed - -/ldiagdotdashed -{ - ldiaglinebegin - 1 [dash gap dot gap] [] [dash] - ldiaglineend -} def - -% stroke a dotcdashed line: <length> <dashlength> ldiagdotcdashed - -/ldiagdotcdashed -{ - ldiaglinebegin - 1 [dash gap dot gap] [halfdash] [halfdash] - ldiaglineend -} def - -% stroke a dotdotdashed line: <length> <dashlength> ldiagdotdotdashed - -/ldiagdotdotdashed -{ - ldiaglinebegin - 1 [dash gap dot gap dot gap] [] [dash] - ldiaglineend -} def - -% stroke a dotdotcdashed line: <length> <dashlength> ldiagdotdotcdashed - -/ldiagdotdotcdashed -{ - ldiaglinebegin - 1 [dash gap dot gap dot gap] [halfdash] [halfdash] - ldiaglineend -} def - -% stroke a dotdotdotdashed line: <length> <dashlength> ldiagdotdotdotdashed - -/ldiagdotdotdotdashed -{ - ldiaglinebegin - 1 [dash gap dot gap dot gap dot gap] [] [dash] - ldiaglineend -} def - -% stroke a dotdotdotcdashed line: <length> <dashlength> ldiagdotdotdotcdashed - -/ldiagdotdotdotcdashed -{ - ldiaglinebegin - 1 [dash gap dot gap dot gap dot gap] [halfdash] [halfdash] - ldiaglineend -} def - -% shape and labels of the @Box symbol -% ldiagbox <shape> -/ldiagbox -{ - 0 0 /SW ldiagpointdef - xsize 0 /SE ldiagpointdef - xsize ysize /NE ldiagpointdef - 0 ysize /NW ldiagpointdef - - xsize 0.25 mul ysize /NNW ldiagpointdef - xsize 0.75 mul ysize /NNE ldiagpointdef - xsize 0.25 mul 0 /SSW ldiagpointdef - xsize 0.75 mul 0 /SSE ldiagpointdef - - SE 0.5 ldiagpmul /S ldiagpointdef - NW 0.5 ldiagpmul /W ldiagpointdef - W SE ldiagpadd /E ldiagpointdef - S NW ldiagpadd /N ldiagpointdef - - NE 0.5 ldiagpmul /CTR ldiagpointdef - - 0 dg /SSW@ANGLE ldiagangledef - 0 dg /S@ANGLE ldiagangledef - 0 dg /SSE@ANGLE ldiagangledef - 45 dg /SE@ANGLE ldiagangledef - 90 dg /E@ANGLE ldiagangledef - 135 dg /NE@ANGLE ldiagangledef - 180 dg /NNE@ANGLE ldiagangledef - 180 dg /N@ANGLE ldiagangledef - 180 dg /NNW@ANGLE ldiagangledef - 225 dg /NW@ANGLE ldiagangledef - 270 dg /W@ANGLE ldiagangledef - 315 dg /SW@ANGLE ldiagangledef - - [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef - SW SE NE NW SW -} def - -% shape and labels of the @CurveBox symbol -% <margin> ldiagcurvebox <shape> -/ldiagcurvebox -{ - - % (Entering ldiagcurvebox) 1 ldiagdebugprint - ldiagdecodelength /cbmgn exch def - - xsize 0.5 mul ysize 0.5 mul /CTR ldiagpointdef - xsize 0.5 mul 0 /S ldiagpointdef - xsize ysize 0.5 mul /E ldiagpointdef - xsize 0.5 mul ysize /N ldiagpointdef - 0 ysize 0.5 mul /W ldiagpointdef - - cbmgn 0.293 mul cbmgn 0.293 mul /SW ldiagpointdef - xsize cbmgn 0.293 mul sub cbmgn 0.293 mul /SE ldiagpointdef - xsize cbmgn 0.293 mul sub ysize cbmgn 0.293 mul sub /NE ldiagpointdef - cbmgn 0.293 mul ysize cbmgn 0.293 mul sub /NW ldiagpointdef - - 0 dg /S@ANGLE ldiagangledef - 45 dg /SE@ANGLE ldiagangledef - 90 dg /E@ANGLE ldiagangledef - 135 dg /NE@ANGLE ldiagangledef - 180 dg /N@ANGLE ldiagangledef - 225 dg /NW@ANGLE ldiagangledef - 270 dg /W@ANGLE ldiagangledef - 315 dg /SW@ANGLE ldiagangledef - - [ xsize ysize 0.5 ldiagpmul cbmgn /ldiagcurveboxcircum cvx ] ldiagcircumdef - - cbmgn 0 - xsize cbmgn sub 0 - [ xsize cbmgn sub cbmgn ] - xsize cbmgn - xsize ysize cbmgn sub - [ xsize cbmgn sub ysize cbmgn sub ] - xsize cbmgn sub ysize - cbmgn ysize - [ cbmgn ysize cbmgn sub ] - 0 ysize cbmgn sub - 0 cbmgn - [ cbmgn cbmgn ] - cbmgn 0 - - % (Leaving ldiagcurvebox) 0 ldiagdebugprint -} def - -% shadow of the @ShadowBox symbol -% its shape and labels are done, somewhat inaccurately, with ldiagbox -% <shadowmargin> ldiagshadow - -/ldiagshadow -{ - /lfshm exch def - - lfshm 0 moveto - 0 lfshm neg rlineto - xsize 0 rlineto - 0 ysize rlineto - lfshm neg 0 rlineto - xsize 0 lineto - closepath fill - -} def - -% shape and labels of the @Square symbol -/ldiagsquare -{ - xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef - CTR xsize xsize ysize ysize ldiagpmax 0.5 ldiagpmul ldiagpadd /NE ldiagpointdef - CTR 0 0 CTR NE ldiagdistance 135 ldiagatangle ldiagpadd /NW ldiagpointdef - CTR 0 0 CTR NE ldiagdistance 225 ldiagatangle ldiagpadd /SW ldiagpointdef - CTR 0 0 CTR NE ldiagdistance 315 ldiagatangle ldiagpadd /SE ldiagpointdef - SW 0.5 ldiagpmul SE 0.5 ldiagpmul ldiagpadd /S ldiagpointdef - NW 0.5 ldiagpmul NE 0.5 ldiagpmul ldiagpadd /N ldiagpointdef - SW 0.5 ldiagpmul NW 0.5 ldiagpmul ldiagpadd /W ldiagpointdef - SE 0.5 ldiagpmul NE 0.5 ldiagpmul ldiagpadd /E ldiagpointdef - - 0 dg /S@ANGLE ldiagangledef - 45 dg /SE@ANGLE ldiagangledef - 90 dg /E@ANGLE ldiagangledef - 135 dg /NE@ANGLE ldiagangledef - 180 dg /N@ANGLE ldiagangledef - 225 dg /NW@ANGLE ldiagangledef - 270 dg /W@ANGLE ldiagangledef - 315 dg /SW@ANGLE ldiagangledef - - [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef - SW SE NE NW SW -} def - -% shape and labels of the @Diamond symbol -/ldiagdiamond -{ - xsize 0 0.5 ldiagpmul /S ldiagpointdef - 0 ysize 0.5 ldiagpmul /W ldiagpointdef - S W ldiagpadd /CTR ldiagpointdef - CTR W ldiagpadd /N ldiagpointdef - CTR S ldiagpadd /E ldiagpointdef - E N ldiagpadd 0.5 ldiagpmul /NE ldiagpointdef - N W ldiagpadd 0.5 ldiagpmul /NW ldiagpointdef - S W ldiagpadd 0.5 ldiagpmul /SW ldiagpointdef - S E ldiagpadd 0.5 ldiagpmul /SE ldiagpointdef - - 0 dg /S@ANGLE ldiagangledef - 90 dg /E@ANGLE ldiagangledef - 180 dg /N@ANGLE ldiagangledef - 270 dg /W@ANGLE ldiagangledef - S E ldiagangleto /SE@ANGLE ldiagangledef - E N ldiagangleto /NE@ANGLE ldiagangledef - N W ldiagangleto /NW@ANGLE ldiagangledef - W S ldiagangleto /SW@ANGLE ldiagangledef - - [ xsize ysize 0.5 ldiagpmul /ldiagdiamondcircum cvx ] ldiagcircumdef - S E N W S -} def - -% shape and labels of the @Ellipse symbol -/ldiagellipse -{ - xsize 0 0.5 ldiagpmul /S ldiagpointdef - 0 ysize 0.5 ldiagpmul /W ldiagpointdef - S W ldiagpadd /CTR ldiagpointdef - CTR W ldiagpadd /N ldiagpointdef - CTR S ldiagpadd /E ldiagpointdef - CTR xsize 0 0.3536 ldiagpmul ldiagpadd 0 ysize 0.3536 ldiagpmul ldiagpadd /NE ldiagpointdef - 0 ysize 0.3536 ldiagpmul CTR xsize 0 0.3536 ldiagpmul ldiagpadd ldiagpsub /SE ldiagpointdef - xsize 0 0.3536 ldiagpmul CTR ldiagpsub 0 ysize 0.3536 ldiagpmul ldiagpadd /NW ldiagpointdef - 0 ysize 0.3536 ldiagpmul xsize 0 0.3536 ldiagpmul CTR ldiagpsub ldiagpsub /SW ldiagpointdef - [ xsize ysize 0.5 ldiagpmul /ldiagellipsecircum cvx ] ldiagcircumdef - - 0 dg /S@ANGLE ldiagangledef - 90 dg /E@ANGLE ldiagangledef - 180 dg /N@ANGLE ldiagangledef - 270 dg /W@ANGLE ldiagangledef - - S E ldiagangleto /SE@ANGLE ldiagangledef - E N ldiagangleto /NE@ANGLE ldiagangledef - N W ldiagangleto /NW@ANGLE ldiagangledef - W S ldiagangleto /SW@ANGLE ldiagangledef - - S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S -} def - -% shape and labels of the @Circle symbol -/ldiagcircle -{ - xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef - CTR xsize 0 ysize 0 ldiagpmax 0.5 ldiagpmul ldiagpadd /E ldiagpointdef - CTR 0 0 CTR E ldiagdistance 45 ldiagatangle ldiagpadd /NE ldiagpointdef - CTR 0 0 CTR E ldiagdistance 90 ldiagatangle ldiagpadd /N ldiagpointdef - CTR 0 0 CTR E ldiagdistance 135 ldiagatangle ldiagpadd /NW ldiagpointdef - CTR 0 0 CTR E ldiagdistance 180 ldiagatangle ldiagpadd /W ldiagpointdef - CTR 0 0 CTR E ldiagdistance 225 ldiagatangle ldiagpadd /SW ldiagpointdef - CTR 0 0 CTR E ldiagdistance 270 ldiagatangle ldiagpadd /S ldiagpointdef - CTR 0 0 CTR E ldiagdistance 315 ldiagatangle ldiagpadd /SE ldiagpointdef - [ S E ldiagpsub /ldiagellipsecircum cvx ] ldiagcircumdef - - 0 dg /S@ANGLE ldiagangledef - 45 dg /SE@ANGLE ldiagangledef - 90 dg /E@ANGLE ldiagangledef - 135 dg /NE@ANGLE ldiagangledef - 180 dg /N@ANGLE ldiagangledef - 225 dg /NW@ANGLE ldiagangledef - 270 dg /W@ANGLE ldiagangledef - 315 dg /SW@ANGLE ldiagangledef - - S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S -} def - -% shape and labels of the @VLine and @VArrow symbols -/ldiagvline -{ - xmark ysize ldiagprevious /FROM ldiagpointdef - xmark 0 ldiagprevious /TO ldiagpointdef -} def - -% points of a polygon around base with given no of sides, vert init angle: -% <sides> <angle> ldiagpolygon <point> ... <point> -/ldiagpolygon -{ exch round cvi exch - xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef - 90 sub CTR 2 copy ldiagmax 5 3 roll - [ 4 copy pop /ldiagpolycircum cvx ] ldiagcircumdef - exch dup 360 exch div exch - 1 1 3 2 roll - { 4 string cvs (P) exch ldiagconcat - 3 copy exch pop (@ANGLE) ldiagconcat cvn exch 90 add exch ldiagangledef - cvn 6 copy pop pop ldiagatangle 2 copy 10 2 roll - 3 2 roll ldiagpointdef - dup 3 1 roll add exch - } for - pop ldiagatangle -} def - -% shape and labels of the @Isosceles triangle symbol -/ldiagisosceles -{ - xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef - 0 0 /SW ldiagpointdef - xsize 0 /SE ldiagpointdef - xsize 0.5 mul ysize /N ldiagpointdef - xsize 0.5 mul 0 /S ldiagpointdef - SE 0.5 ldiagpmul N 0.5 ldiagpmul ldiagpadd /NE ldiagpointdef - SW 0.5 ldiagpmul N 0.5 ldiagpmul ldiagpadd /NW ldiagpointdef - - [ xsize ysize /ldiagisoscelescircum cvx ] ldiagcircumdef - - 0 dg /SW@ANGLE ldiagangledef - 0 dg /SE@ANGLE ldiagangledef - 180 dg /N@ANGLE ldiagangledef - 0 dg /S@ANGLE ldiagangledef - SE N ldiagangleto /NE@ANGLE ldiagangledef - N SW ldiagangleto /NW@ANGLE ldiagangledef - - SW SE N SW -} def - -% next array element: <array> <index> ldiaggetnext <array> <index> <any> true -% or <array> <index> false -/ldiaggetnext -{ 2 copy exch length ge - { false } - { 2 copy get exch 1 add exch true } ifelse -} def - -% check whether thing is number: <any> ldiagisnumbertype <any> <bool> -/ldiagisnumbertype -{ dup type dup - /integertype eq exch /realtype eq or -} def - -% check whether thing is an array: <any> ldiagisarraytype <any> <bool> -/ldiagisarraytype { dup type /arraytype eq } def - -% check whether thing is an array: <any> ldiagisnametype <any> <bool> -/ldiagisnametype { dup type /nametype eq } def - -% get next item: <array> <index> ldiaggetnextitem <array> <index> 0 -% or <array> <index> <array> 1 -% or <array> <index> <point> 2 -/ldiaggetnextitem -{ ldiaggetnext - { ldiagisarraytype - { 1 - } - { ldiagisnumbertype - { 3 1 roll - ldiaggetnext - { ldiagisnumbertype - { 4 3 roll exch 2 - } - { pop 3 2 roll pop 0 - } ifelse - } - { 3 2 roll pop 0 - } ifelse - } - { pop 0 - } ifelse - } ifelse - } - { 0 - } ifelse -} def - -% approximate equality: num1 num2 approxeq <boolean> -/approxeq -{ dup 0 eq - { pop 0 eq - } - { dup 3 1 roll sub exch div abs 0.001 lt - } ifelse -} def - -% set arc path: bool x1 y1 x2 y2 x0 y0 ldiagsetarc <angle> <angle> <dist> -% the path goes from x1 y1 to x2 y2 about centre x0 y0, -% anticlockwise if bool is true else clockwise. -% The orientations of backwards pointing and forwards pointing -% arrowheads are returned in the two angles, and -% the length of the arc is returned in <dist>. -/ldiagsetarc -{ - % (Entering ldiagsetarc) 7 ldiagdebugprint - 20 dict begin - matrix currentmatrix 8 1 roll - 2 copy translate 2 copy 8 2 roll - 4 2 roll ldiagpsub 6 2 roll ldiagpsub - dup /y1 exch def dup mul /y1s exch def - dup /x1 exch def dup mul /x1s exch def - dup /y2 exch def dup mul /y2s exch def - dup /x2 exch def dup mul /x2s exch def - /dist1 0 0 x1 y1 ldiagdistance def - /dist2 0 0 x2 y2 ldiagdistance def - - y1s y2s approxeq - { -1 - } - { y1s x2s mul y2s x1s mul sub y1s y2s sub div - } ifelse - /da exch def - - x1s x2s approxeq - { -1 - } - { x1s y2s mul x2s y1s mul sub x1s x2s sub div - } ifelse - /db exch def - - da 0 gt db 0 gt and - { - % ( case 1, ellipse) 0 ldiagdebugprint - /LMax da sqrt db sqrt ldiagmax def - /scalex da sqrt LMax div def - /scaley db sqrt LMax div def - scalex scaley scale - 0 0 LMax - 0 0 x1 scalex mul y1 scaley mul ldiagangleto - 0 0 x2 scalex mul y2 scaley mul ldiagangleto - 2 copy eq { 360 add } if - 2 copy 8 2 roll - 5 index { arc } { arcn } ifelse - 2 index 1 index - { 90 sub } { 90 add } ifelse - dup sin scaley mul exch cos scalex mul atan - 2 index 2 index - { 90 add } { 90 sub } ifelse - dup sin scaley mul exch cos scalex mul atan - 5 2 roll % res1 res2 ang1 ang2 anticlockwise - { exch sub } { sub } ifelse - dup 0 le { 360 add } if ldiagpi mul LMax mul 180 div - } - { - dist1 dist2 approxeq - % x1 y1 dist1 ( x1 y1, d) 3 ldiagdebugprint pop pop pop - % x2 y2 dist2 ( x2 y2, d) 3 ldiagdebugprint pop pop pop - { - % ( case 2, circle) 0 ldiagdebugprint - 0 0 - dist1 - 0 0 x1 y1 ldiagangleto - 0 0 x2 y2 ldiagangleto - 2 copy eq { 360 add } if - 2 copy 8 2 roll - 5 index { arc } { arcn } ifelse - 2 index 1 index - { 90 sub } { 90 add } ifelse - 2 index 2 index - { 90 add } { 90 sub } ifelse - 5 2 roll % res1 res2 ang1 ang2 clockwise - { exch sub } { sub } ifelse - dup 0 le { 360 add } if - ldiagpi mul dist1 mul 180 div - } - { - % ( case 3, line) 0 ldiagdebugprint - x2 y2 lineto pop - x2 y2 x1 y1 ldiagangleto - x1 y1 x2 y2 ldiagangleto - x1 y1 x2 y2 ldiagdistance - } ifelse - } ifelse - 4 -1 roll setmatrix - end - % (Leaving ldiagsetarc) 3 ldiagdebugprint -} def - -% ldiagsetcurve: set up a Bezier curve from x0 y0 to x3 y3 -% and return arrowhead angles and length of curve (actually 0) -% x0 y0 x1 y1 x2 y2 x3 y3 ldiagsetcurve <angle> <angle> <length> -/ldiagsetcurve -{ 8 copy curveto pop pop - ldiagangleto - 5 1 roll - 4 2 roll ldiagangleto - exch - 0 -} def - -% ldiagsetpath: convert a Diag path into a PostScript path -% [ shape ] ldiagsetpath - -/ldiagsetpath -{ - 10 dict begin - 0 newpath - /prevseen false def - /curveseen false def - { ldiaggetnextitem - dup 0 eq { pop exit } - { 1 eq - { /curveseen true def - /curve exch def - curve length 0 eq { /curveseen false def } if - } - { /ycurr exch def - /xcurr exch def - prevseen - { curveseen - { curve length 4 eq - { xprev yprev - curve 0 get curve 1 get - curve 2 get curve 3 get - xcurr ycurr - ldiagsetcurve pop pop pop - } - { xprev yprev xcurr ycurr - curve length 1 ge { curve 0 get } { 0 } ifelse - curve length 2 ge { curve 1 get } { 0 } ifelse - curve length 3 ge { curve 2 get } { true } ifelse - 7 1 roll - ldiagsetarc pop pop pop - } ifelse - } - { xcurr ycurr lineto - } ifelse - } - { xcurr ycurr moveto - } ifelse - /xprev xcurr def - /yprev ycurr def - /prevseen true def - /curveseen false def - } ifelse - } ifelse - } loop pop pop - end -} def - -% ldiagpaintpath: paint a path of the given shape -% /paint [ shape ] ldiagpaintpath - -/ldiagpaintpath -{ - ldiagsetpath cvx exec -} def - -% stroke a path of the given shape in the given linestyle and dash length. -% Return the origin and angle of the backward and forward arrow heads. -% dashlength /linestyle [shape] ldiagdopath [<point> <angle>] [<point> <angle>] -/ldiagdopath -{ - 10 dict begin - 0 - /prevseen false def - /curveseen false def - /backarrow [] def - /fwdarrow [] def - { - ldiaggetnextitem - dup 0 eq { pop exit } - { - 1 eq - { /curveseen true def - /curve exch def - curve length 0 eq { /prevseen false def } if - } - { /ycurr exch def - /xcurr exch def - prevseen - { newpath xprev yprev moveto - curveseen - { curve length 4 eq - { xprev yprev - curve 0 get curve 1 get - curve 2 get curve 3 get - xcurr ycurr ldiagsetcurve - } - { xprev yprev xcurr ycurr - curve length 1 ge { curve 0 get } { 0 } ifelse - curve length 2 ge { curve 1 get } { 0 } ifelse - curve length 3 ge { curve 2 get } { true } ifelse - 7 1 roll - ldiagsetarc - } ifelse - } - { xcurr ycurr lineto - xcurr ycurr xprev yprev ldiagangleto dup 180 sub - xprev yprev xcurr ycurr ldiagdistance - } ifelse - 6 index 6 index cvx exec - [ xprev yprev 5 -1 roll ] - backarrow length 0 eq - { /backarrow exch def } - { pop } ifelse - [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def - } if - /xprev xcurr def - /yprev ycurr def - /prevseen true def - /curveseen false def - } ifelse - } ifelse - } loop - pop pop pop pop - backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse - fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse - end -} def - - -% stroke a path of the given shape in the given linestyle and dash length. -% dashlength [ /linestyle ] [shape] ldiagdosegpath - -/ldiagdosegpath -{ - 12 dict begin - 1 index /seg exch def - 1 index length /seglength exch def - 0 /segcount exch def - 0 - /prevseen false def - /curveseen false def - /backarrow [] def - /fwdarrow [] def - { - ldiaggetnextitem - dup 0 eq { pop exit } - { - 1 eq - { /curveseen true def - /curve exch def - curve length 0 eq { /prevseen false def } if - } - { /ycurr exch def - /xcurr exch def - prevseen - { newpath xprev yprev moveto - curveseen - { curve length 4 eq - { xprev yprev - curve 0 get curve 1 get - curve 2 get curve 3 get - xcurr ycurr ldiagsetcurve - } - { xprev yprev xcurr ycurr - curve length 1 ge { curve 0 get } { 0 } ifelse - curve length 2 ge { curve 1 get } { 0 } ifelse - curve length 3 ge { curve 2 get } { true } ifelse - 7 1 roll - ldiagsetarc - } ifelse - } - { xcurr ycurr lineto - xcurr ycurr xprev yprev ldiagangleto dup 180 sub - xprev yprev xcurr ycurr ldiagdistance - } ifelse - 6 index seg segcount seglength mod get cvx exec - /segcount segcount 1 add def - [ xprev yprev 5 -1 roll ] - backarrow length 0 eq - { /backarrow exch def } - { pop } ifelse - [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def - } if - /xprev xcurr def - /yprev ycurr def - /prevseen true def - /curveseen false def - } ifelse - } ifelse - } loop - pop pop pop pop - end -} def - -% ldiagnodebegin: start of node parameters -% ldiagnodebegin - -/ldiagnodebegin -{ % (Entering ldiagnodebegin) 0 ldiagdebugprint - ldiagmaxlabels dict begin -} def - -% ldiagnodeend: end of node parameters (so do the node) -% <outline> <dashlength> <style> <linewidth> <colour> <paint> ldiagnodeend - -/ldiagnodeend -{ - % (Entering ldiagnodeend) 0 ldiagdebugprint - end % matches begin in ldiagnodebegin - 5 index gsave ldiagpaintpath grestore % <outline> <dl> <st> <lw> <cl> - 4 index ldiagsetpath clip newpath % <outline> <dl> <st> <lw> <cl> - exec % <outline> <dl> <st> <lw> - 2 mul setlinewidth % <outline> <dl> <st> - 3 -1 roll % <dashlength> <st> <outline> - ldiagdosegpath % - - % (Leaving ldiagnodeend) 0 ldiagdebugprint -} def - -% ldiaglinkbegin: start of link parameters -% <direct> ldiaglinkbegin - -/ldiaglinkbegin -{ ldiagmaxlabels dict begin - 1 eq /direct exch def -} def - -% ldiaglinkend: end of link parameters (so do the link) -% <outline> <dashlength> <style> <linewidth> ldiaglinkend - -/ldiaglinkend -{ - end % matches begin in ldiaglinkbegin - setlinewidth - 3 -1 roll ldiagdosegpath -} def - -% ldiagdoarrow: draw an arrow head of given form -% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] ldiagdoarrow - -/ldiagdoarrow -{ matrix currentmatrix 8 1 roll - dup 0 get 1 index 1 get translate - 2 get rotate - [ 2 index neg 2 index 0 0 - 3 index 3 index neg - 1 index 10 index mul 0 - 7 index 7 index ] - 4 1 roll pop pop pop - dup 3 1 roll - gsave ldiagpaintpath grestore ldiagdopath pop pop - setmatrix -} def - -% arrow head styles (unused) -% /ldiagopen 0.0 def -% /ldiaghalfopen 0.5 def -% /ldiagclosed 1.0 def - -% stroke no arrows, forward, back, and both -/ldiagnoarrow { pop pop pop pop pop pop pop pop } def -/ldiagforward { 7 -1 roll ldiagdoarrow pop } def -/ldiagback { 8 -2 roll pop ldiagdoarrow } def -/ldiagboth { 8 -1 roll 7 copy ldiagdoarrow pop 7 -1 roll ldiagdoarrow } def - -% ldiagprevious: return previous point on path -/ldiagprevious -{ ldiagisnumbertype - { 2 copy } - { ldiagisarraytype - { 2 index 2 index } - { 0 0 } - ifelse - } ifelse -} def - -% Tag dictionary operators -% -% Diag's tag dictionaries are kept on the same stack as other dictionaries, -% since there is nowhere else to put them. However, they are managed like -% a separate stack using the following operators: -% -% <tag> ldiagpushtagdict - Push a new, empty tag dictionary -% ldiagtoptagdict dict Find the top tag dictionary -% ldiagpoptagdict - Pop and destroy the top tag dictionary -% ldiagpopuptagdict - Pop top tag dict and promote its entries -% <array> ldiagpopsometagdict - Like popuptagdict but only those promote -% those labels listed in <array> -% ldiagdebugtagdict - Debug print of dictionary stack -% -% They are distinguished from other dictionaries by containing /ldiagtagdict, -% whose value is the <tag> which is used by ldiagpopuptagdict, -% and they are hopefully never the target of any non-tag definition because -% they are never the top dictionary, since push places the new dict second. - -/ldiagpushtagdict -{ ldiagmaxlabels dict dup - currentdict end exch begin begin - exch /ldiagtagdict exch put -} def - -/ldiagtoptagdict -{ /ldiagtagdict where not - { (Diag internal error: no tag dictionary) show stop - } if -} def - -/ldiagpoptagdict -{ - % (Entering poptagdict) 0 ldiagdebugprint - % ldiagdebugtagdict - mark - { currentdict end - dup /ldiagtagdict known - { exit - } if - } loop - pop - counttomark - { begin - } repeat - pop - % (Leaving poptagdict) 0 ldiagdebugprint - % ldiagdebugtagdict -} def - -% promote labels from top tag dictionary to second top tag dictionary -% each prefixed by <string>@ if <string> (value of /ldiagtagdict) is not empty -% - ldiagpopuptagdict - -/ldiagpopuptagdict -{ - ldiagtagdict - % (Entering ldiagpopuptagdict) 1 ldiagdebugprint - % ldiagdebugtagdict - ldiagtoptagdict ldiagpoptagdict ldiagtoptagdict exch - { exch dup length string cvs - 3 index exch ldiagmconcat - cvn exch 2 index 3 1 roll put - } forall - pop pop - % (Leaving ldiagpopuptagdict) 0 ldiagdebugprint - % ldiagdebugtagdict -} def - -% similar to ldiagpopuptagdict but only those inner labels that are -% present in <array> will be promoted -% <array> ldiagpopsometagdict - -/ldiagpopsometagdict -{ - ldiagtagdict - % (Entering ldiagpopsometagdict) 1 ldiagdebugprint - % ldiagdebugtagdict - ldiagtoptagdict - ldiagpoptagdict - ldiagtoptagdict - 4 -1 roll - { dup 3 index exch - get - exch 4 index - exch ldiagmconcat exch - 3 copy put - pop pop - } forall - pop pop pop - % (Leaving ldiagpopuptagdict) 0 ldiagdebugprint - % ldiagdebugtagdict -} def - -% debug tag dictionary stack -/ldiagdebugtagdict -{ (Entering ldiagdebugtagdict) 0 ldiagdebugprint - 30 array dictstack - { dup /ldiagtagdict known - { dup /ldiagtagdict get 0 ldiagdebugprint - { pop 100 string cvs ( ) exch ldiagconcat - dup 0 ldiagdebugprint - pop - } - forall - } - { pop (other) 0 ldiagdebugprint - } ifelse - } forall - (Leaving ldiagdebugtagdict) 0 ldiagdebugprint -} def - -% label a point in top tag dictionary: <point> /name ldiagpointdef - -/ldiagpointdef -{ - % (Entering ldiagpointdef) 3 ldiagdebugprint - [ 4 2 roll transform /itransform cvx ] cvx - ldiagtoptagdict 3 1 roll put - % (Leaving ldiagpointdef) 0 ldiagdebugprint -} def - -% label an angle in top tag dictionary: <angle> /name ldiagangledef - -/ldiagangledef -{ - % (Entering ldiagangledef) 2 ldiagdebugprint - exch ldiagfixangle ldiagtoptagdict 3 1 roll put - % (Leaving ldiagangledef) 0 ldiagdebugprint -} def - -% add CIRCUM operator with this body: <array> ldiagcircumdef - -/ldiagcircumdef -{ % (Entering ldiagcircumdef) 1 ldiagdebugprint - /CIRCUM exch cvx - ldiagtoptagdict 3 1 roll put - % currentdict end - % 3 1 roll - % def - % begin - % (Leaving ldiagcircumdef) 0 ldiagdebugprint -} def - -% show points (except CIRCUM and ANGLE): - ldiagshowpoints - -/ldiagshowpoints -{ - % (Entering ldiagshowpoints) 0 ldiagdebugprint - ldiagtoptagdict - { 1 index 100 string cvs - (ldiagdebugpos) search - { pop pop pop pop pop } - { - (CIRCUM) search % if CIRCUM in key - { pop pop pop pop pop } - { - (ANGLE) search % if ANGLE in key - { - pop pop pop pop pop - } - { - (ldiagtagdict) search - { - pop pop pop pop pop - } - { - pop cvx exec - newpath 2.0 pt 0 360 arc 0 setgray fill pop - } ifelse - } ifelse - } ifelse - } ifelse - } forall - % (Leaving ldiagshowpoints) 0 ldiagdebugprint -} def - - -/ldiagshowtags -{ - % (Entering ldiagshowtags) 0 ldiagdebugprint - ldiagtoptagdict - { 1 index 100 string cvs - % dup 0 ldiagdebugprint - (ldiagdebugpos) search - { pop pop pop pop pop } - { - (CIRCUM) search % if CIRCUM in key - { pop pop pop pop pop } - { - (ANGLE) search % if ANGLE in key - { - pop pop pop pop pop - } - { - (ldiagtagdict) search - { - pop pop pop pop pop - } - { - pop cvx exec 2 copy - gsave - newpath 2.0 pt 0 360 arc 0 setgray fill - /Times-Roman findfont 8 pt scalefont setfont - translate 40 rotate 0.2 cm 0.1 cm moveto 100 string cvs show - grestore - } ifelse - } ifelse - } ifelse - } ifelse - } forall - % (Leaving ldiagshowtags) 0 ldiagdebugprint -} def - - -% show angles: - ldiagshowangles - -/ldiagshowangles -{ - % (Entering ldiagshowangles) 0 ldiagdebugprint - ldiagtoptagdict - { 1 index 100 string cvs - % dup 0 ldiagdebugprint - (ldiagdebugpos) search - { pop pop pop pop pop } - { - (ldiagtagdict) search - { - pop pop pop pop pop - } - { - (CIRCUM) search % if CIRCUM in key - { pop pop pop pop pop } - { - (@ANGLE) search % if ANGLE in key, draw the angle at the point - { - % (showing ANGLE) 5 ldiagdebugprint - gsave exch pop exch pop cvx - % (about to execute) 1 ldiagdebugprint - exec translate rotate 0.8 0.8 scale pop - newpath 0 0 2.0 pt 0 360 arc 0 setgray fill - newpath 4 pt 0 moveto 9 pt 0 lineto - 9 pt 1.5 pt lineto 11 pt 0 lineto 9 pt -1.5 pt lineto - 9 pt 0 lineto [] 0 setdash 4 pt setlinewidth 0 setlinejoin - stroke grestore - % (finished ANGLE) 5 ldiagdebugprint - } - { - % else must be a point, we aren't showing those - pop pop pop - } ifelse - } ifelse - } ifelse - } ifelse - } forall - % (Leaving ldiagshowangles) 0 ldiagdebugprint -} def - -% fix an angle to 0 <= res < 360: <angle> ldiagfixangle <angle> -/ldiagfixangle -{ - % (Entering ldiagfixangle) 1 ldiagdebugprint - { dup 0 ge { exit } if - 360 add - } loop - { dup 360 lt { exit } if - 360 sub - } loop - % (Leaving ldiagfixangle) 1 ldiagdebugprint -} def - -% find point on circumference of box: alpha a b ldiagboxcircum x y -/ldiagboxcircum -{ - % (Entering ldiagboxcircum) 3 ldiagdebugprint - 4 dict begin - /b exch def - /a exch def - ldiagfixangle /alpha exch def - 0 0 a b ldiagangleto /theta exch def - - % if alpha <= theta, return (a, a*tan(alpha)) - alpha theta le - { a a alpha sin mul alpha cos div } - { - % else if alpha <= 180 - theta, return (b*cot(alpha), b) - alpha 180 theta sub le - { b alpha cos mul alpha sin div b } - { - % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) - alpha 180 theta add le - { a neg a neg alpha sin mul alpha cos div } - { - % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) - alpha 360 theta sub le - { b neg alpha cos mul alpha sin div b neg } - { - % else 360 - theta <= alpha, return (a, a*tan(alpha)) - a a alpha sin mul alpha cos div - } ifelse - } ifelse - } ifelse - } ifelse - end - % (Leaving ldiagboxcircum) 2 ldiagdebugprint -} def - -% find quadratic roots (assume a != 0): a b c ldiagqroots x1 x2 2 -% or x2 1 -% or 0 -/ldiagqroots -{ - 4 dict begin - /c exch def - /b exch def - /a exch def - /disc b b mul 4 a c mul mul sub def - disc 0 lt - { 0 - } - { disc 0 eq - { b neg 2 a mul div - 1 - } - { b neg disc sqrt add 2 a mul div - b neg disc sqrt sub 2 a mul div - 2 - } - ifelse - } - ifelse - end -} def - -% work our which quadrant: <angle> ldiagquadrant <0-3> -/ldiagquadrant -{ dup 90 lt - { pop 0 - } - { dup 180 lt - { pop 1 - } - { 270 lt - { 2 - } - { 3 - } ifelse - } ifelse - } ifelse -} def - -% find curvebox circum, assuming upper right quadrant: alpha a b xmk ldiagcb x y -/ldiagcb -{ - 6 dict begin - /xmk exch def - /b exch def - /a exch def - /alpha exch def - /theta1 0 0 a b xmk sub ldiagangleto def - /theta2 0 0 a xmk sub b ldiagangleto def - alpha theta1 le - { % if alpha <= theta1, return (a, a*tan(alpha)) - a a alpha sin mul alpha cos div - } - { alpha theta2 ge - { % else if alpha > theta2, return (b*cot(alpha), b) - b alpha cos mul alpha sin div b - } - { - % else, return the intersection of line and circle - a xmk sub b xmk sub xmk 0 0 alpha ldiagcircleintersect - dup 0 eq - { % should never happen, just return any reasonable point - pop - a b 0.5 ldiagpmul - } - { 1 eq - { % should never happen, just return the point on top of stack - } - { % the usual case, two points on stack, return the larger - ldiagpmax - } ifelse - } ifelse - } ifelse - } ifelse - end -} def - -% find point on circumference of curvebox: alpha a b xmk ldiagcurveboxcircum x y -/ldiagcurveboxcircum -{ - % (Entering ldiagcurveboxcircum) 4 ldiagdebugprint - 5 dict begin - /xmk exch def - /b exch def - /a exch def - ldiagfixangle /alpha exch def - - % work out which quadrant we are in, and reflect accordingly - /quad alpha ldiagquadrant def - quad 0 eq - { alpha a b xmk ldiagcb - } - { quad 1 eq - { 180 alpha sub a b xmk ldiagcb exch neg exch - } - { quad 2 eq - { alpha 180 sub a b xmk ldiagcb neg exch neg exch - } - { 360 alpha sub a b xmk ldiagcb neg - } ifelse - } ifelse - } ifelse - end - % (Leaving ldiagcurveboxcircum) 2 ldiagdebugprint -} def - -% find point on circumference of diamond: alpha a b ldiagdiamondcircum x y -/ldiagdiamondcircum -{ - % (Entering ldiagdiamondcircum) 3 ldiagdebugprint - 4 dict begin - /b exch def - /a exch def - ldiagfixangle /alpha exch def - b alpha cos abs mul a alpha sin abs mul add /denom exch def - a b mul alpha cos mul denom div - a b mul alpha sin mul denom div - end - % (Leaving ldiagdiamondcircum) 2 ldiagdebugprint -} def - -% find point on circumference of ellipse: alpha a b ldiagellipsecircum x y -/ldiagellipsecircum -{ - % (Entering ldiagellipsecircum) 3 ldiagdebugprint - 4 dict begin - /b exch def - /a exch def - ldiagfixangle /alpha exch def - b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def - a b mul alpha cos mul denom div - a b mul alpha sin mul denom div - end - % (Leaving ldiagellipsecircum) 2 ldiagdebugprint -} def - -% find point on circumference of isosceles: alpha a b ldiagisoscelescircum x y -/ldiagisoscelescircum -{ - % (Entering ldiagisoscelescircum) 3 ldiagdebugprint - 7 dict begin - /b exch def - /a exch def - /alpha exch ldiagfixangle def - /theta1 90 def - /theta2 a b 0.5 ldiagpmul 0 0 ldiagangleto def - /theta3 a b 0.5 ldiagpmul a 0 ldiagangleto def - alpha theta1 ge alpha theta2 le and - { 0 0 a 2 div b - } - { alpha theta2 ge alpha theta3 le and - { 0 0 a 0 - } - { a 0 a 2 div b - } ifelse - } ifelse - a 2 div b 2 div 2 copy 1 ft alpha ldiagatangle ldiaglineintersect - a 2 div b 2 div 4 2 roll ldiagpsub - end - % (Leaving ldiagisoscelescircum) 2 ldiagdebugprint -} def - -% find point of intersection of two lines each defined by two points -% x1 y1 x2 y2 x3 y3 x4 y4 ldiaglineintersect x y -/ldiaglineintersect -{ - % (Entering ldiaglineintersect) 8 ldiagdebugprint - 13 dict begin - /y4 exch def - /x4 exch def - /y3 exch def - /x3 exch def - /y2 exch def - /x2 exch def - /y1 exch def - /x1 exch def - x2 x1 sub /x21 exch def - x4 x3 sub /x43 exch def - y2 y1 sub /y21 exch def - y4 y3 sub /y43 exch def - y21 x43 mul y43 x21 mul sub /det exch def - - % calculate x - y21 x43 mul x1 mul - y43 x21 mul x3 mul sub - y3 y1 sub x21 mul x43 mul add - det div - - % calculate y - x21 y43 mul y1 mul - x43 y21 mul y3 mul sub - x3 x1 sub y21 mul y43 mul add - det neg div - - end - % (Leaving ldiaglineintersect) 2 ldiagdebugprint -} def - -% find point on circumference of polygon -% alpha radius num theta ldiagpolycircum x y -/ldiagpolycircum -{ - % (Entering ldiagpolycircum) 4 ldiagdebugprint - 13 dict begin - /theta exch def - /num exch def - /radius exch def - /alpha exch def - - % calculate delta, the angle from theta to alpha - alpha theta sub ldiagfixangle - - % calculate the angle which is the multiple of 360/num closest to delta - 360 num div div truncate 360 num div mul theta add /anglea exch def - - % calculate the next multiple of 360/num after anglea - anglea 360 num div add /angleb exch def - - % intersect the line through these two points with the alpha line - anglea cos anglea sin angleb cos angleb sin - 0 0 alpha cos 2 mul alpha sin 2 mul - ldiaglineintersect radius ldiagpmul - - end - % (Leaving ldiagpolycircum) 2 ldiagdebugprint -} def - -% find point of intersection of a line and a circle -% x0 y0 r x1 y1 theta ldiagcircleintersect xa ya xb yb 2 -% or xb yb 1 -% or 0 -/ldiagcircleintersect -{ - % (Entering ldiagcircleintersect) 6 ldiagdebugprint - 15 dict begin - /theta exch def - /y1 exch def - /x1 exch def - /r exch def - /y0 exch def - /x0 exch def - - % if sin(theta) = 0 then line is horizontal and y must be y1 - theta sin abs 0.00001 lt - { - /a 1 def - /b -2 x0 mul def - /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def - a b c ldiagqroots dup - 0 eq - { pop - 0 - } - { 1 eq - { y1 1 - } - { y1 exch y1 2 - } ifelse - } ifelse - } - { - /ct theta cos theta sin div def - /a ct ct mul 1 add def - /b ct x1 x0 sub mul y1 add y0 sub 2 mul def - /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def - a b c ldiagqroots dup - 0 eq - { pop - 0 - } - { 1 eq - { y1 add /yb exch def - yb y1 sub ct mul x1 add /xb exch def - xb yb 1 - } - { y1 add /ya exch def - ya y1 sub ct mul x1 add /xa exch def - y1 add /yb exch def - yb y1 sub ct mul x1 add /xb exch def - xa ya xb yb 2 - } ifelse - } ifelse - } ifelse - end - % (Leaving ldiagcircleintersect) 1 ldiagdebugprint -} def - -% find line which is the perpendicular bisector of two points, defined -% by two points -% x1 y1 x2 y2 ldiaglinebetween x3 y3 x4 y4 -/ldiaglinebetween -{ % (Entering ldiaglinebetween) 4 ldiagdebugprint - /y2 exch def /x2 exch def - /y1 exch def /x1 exch def - - % let x3, y3 be the point halfway between the two points - x1 y1 x2 y2 ldiagpadd 0.5 ldiagpmul - /y3 exch def /x3 exch def - - % find a point perpendicular to x3, y3 - x3 y3 50 x1 y1 x2 y2 ldiagangleto 90 dg add ldiagatangle - - % plus x3 y3 gives the two points - x3 y3 - - % (Leaving ldiaglinebetween) 4 ldiagdebugprint -} def - -% find <proc>@<string>: <proc> <string> ldiagfindlabel <any> true -% <proc> <string> false -/ldiagfindlabel -{ - % (Entering ldiagfindlabel) 2 ldiagdebugprint - exch dup length 1 ne - { exch false - % (Leaving ldiagfindabel (length not 1)) 3 ldiagdebugprint - } - { dup 0 get type /nametype ne - { exch false - % (Leaving ldiagfindabel (not a name)) 3 ldiagdebugprint - } - { dup 0 get dup length string cvs (@) ldiagconcat - 2 index ldiagconcat dup where - { exch get exch pop exch pop cvx exec true - % (Leaving ldiagfindlabel with success) 100 ldiagdebugprint - } - { - pop exch false - % (Leaving ldiagfindabel (concat not sensible)) 3 ldiagdebugprint - } ifelse - } ifelse - } ifelse -} bind def - -% execute <proc>@<string> or else default: <proc> <string> ldiagdolabel <various> -/ldiagdolabel -{ - % (Entering ldiagdolabel) 2 ldiagdebugprint - ldiagfindlabel not - { - dup (CIRCUM) eq - { pop pop pop 0 0 - } - { - dup (ANGLE) eq - { pop pop 0 - } - { pop cvx exec - } ifelse - } ifelse - } if - % (Leaving ldiagdolabel) 2 ldiagdebugprint -} bind def - -% execute a proc depending on whether number is negative, zero, or positive -% procneg proczero procpos number ldiagsigncase <anything> -/ldiagsigncase -{ - % (Entering ldiagsigncase) 4 ldiagdebugprint - dup 0 lt - { pop pop pop exec - } - { 0 gt - { exch pop exch pop exec - } - { pop exch pop exec - } ifelse - } ifelse - % (Leaving ldiagsigncase) 0 ldiagdebugprint -} bind def - -% execute proci if angle is in ith quadrant -% proc45 proc270 proc180 proc90 proc0 proc315 proc225 proc135 angle ldiagquadcase <anything> -/ldiagquadcase -{ - % (Entering ldiagquadcase) 9 ldiagdebugprint - round ldiagfixangle cvi dup 90 mod 0 eq - { 90 idiv 4 add } { 90 idiv } ifelse - 8 exch roll pop pop pop pop pop pop pop exec - % (Leaving ldiagquadcase) 0 ldiagdebugprint -} bind def - -% decode Lout length into PostScript length -% <string> ldiagdecodelength <number> -/ldiagdecodelength -{ - % (Entering ldiagdecodelength) 1 ldiagdebugprint - (f) search - { exch pop exch pop cvr ft - } - { (c) search - { exch pop exch pop cvr cm - } - { (p) search - { exch pop exch pop cvr pt - } - { (m) search - { exch pop exch pop cvr em - } - { (s) search - { exch pop exch pop cvr sp - } - { (v) search - { exch pop exch pop cvr vs - } - { (i) search - { exch pop exch pop cvr in - } - { pop 0 - } ifelse - } ifelse - } ifelse - } ifelse - } ifelse - } ifelse - } ifelse - % (Leaving ldiagdecodelength) 1 ldiagdebugprint -} def - -% implement aabout function -% logical form: <circum> <extra> <centre> aabout <point> -% actual form: { <labelorpoint> } cvlit <length> [ <point> ] cvx aabout <point> -/ldiagaabout -{ - /centre exch def - /extra exch def - /circum exch def - - /ZXCTR [ centre ] cvx def - /ZFCTR [ circum (CTR) ldiagdolabel ] cvx def - /ZAREF ZFCTR ZXCTR ldiagangleto def - /ZAMIN 0 dg def - /ZPMIN [ circum (CTR) ldiagdolabel ZAREF ZAMIN sub - circum (CIRCUM) ldiagdolabel ldiagpadd - 0 0 extra ZAREF ZAMIN sub ldiagatangle - ldiagpadd ] cvx def - - /ZAMAX 90 dg def - /ZPMAX [ circum (CTR) ldiagdolabel ZAREF ZAMAX sub - circum (CIRCUM) ldiagdolabel ldiagpadd - 0 0 extra ZAREF ZAMAX sub ldiagatangle - ldiagpadd ] cvx def - - 1 1 20 - { /xval exch def - /ZAMID ZAMIN ZAMAX add 0.5 mul def - /ZPMID [ circum (CTR) ldiagdolabel ZAREF ZAMID sub - circum (CIRCUM) ldiagdolabel ldiagpadd - 0 0 extra ZAREF ZAMID sub ldiagatangle - ldiagpadd ] cvx def - ZPMID ZXCTR ldiagdistance ZFCTR ZXCTR ldiagdistance gt - { - /ZAMAX [ ZAMID ] cvx def - /ZPMAX [ ZPMID ] cvx def - } - { - /ZAMIN [ ZAMID ] cvx def - /ZPMIN [ ZPMID ] cvx def - } ifelse - } for - ZPMID -} def - -% implement cabout function -% logical form: <circum> <extra> <centre> cabout <point> -% actual form: { <labelorpoint> } cvlit <length> [ <point> ] cvx cabout <point> -/ldiagcabout -{ - /centre exch def - /extra exch def - /circum exch def - - /ZXCTR [ centre ] cvx def - /ZFCTR [ circum (CTR) ldiagdolabel ] cvx def - /ZAREF ZFCTR ZXCTR ldiagangleto def - /ZAMIN 0 dg def - /ZPMIN [ circum (CTR) ldiagdolabel ZAREF ZAMIN add - circum (CIRCUM) ldiagdolabel ldiagpadd - 0 0 extra ZAREF ZAMIN add ldiagatangle - ldiagpadd ] cvx def - - /ZAMAX 90 dg def - /ZPMAX [ circum (CTR) ldiagdolabel ZAREF ZAMAX add - circum (CIRCUM) ldiagdolabel ldiagpadd - 0 0 extra ZAREF ZAMAX add ldiagatangle - ldiagpadd ] cvx def - - 1 1 20 - { /xval exch def - /ZAMID ZAMIN ZAMAX add 0.5 mul def - /ZPMID [ circum (CTR) ldiagdolabel ZAREF ZAMID add - circum (CIRCUM) ldiagdolabel ldiagpadd - 0 0 extra ZAREF ZAMID add ldiagatangle - ldiagpadd ] cvx def - ZPMID ZXCTR ldiagdistance ZFCTR ZXCTR ldiagdistance gt - { - /ZAMAX [ ZAMID ] cvx def - /ZPMAX [ ZPMID ] cvx def - } - { - /ZAMIN [ ZAMID ] cvx def - /ZPMIN [ ZPMID ] cvx def - } ifelse - } for - ZPMID -} def - -% fromarrowlength toarrowlength { from } { to } xindent zindent ldiaglinepath - -/ldiaglinepath -{ - % (entering ldiaglinepath) 0 ldiagdebugprint - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagangleto - /FROM@ANGLE ldiagangledef - from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd - /FROM ldiagpointdef - - FROM@ANGLE /TO@ANGLE ldiagangledef - to (CTR) ldiagdolabel TO@ANGLE 180 dg sub to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TO@ANGLE 180 dg sub ldiagatangle ldiagpadd /TO ldiagpointdef - - FROM 0.5 ldiagpmul TO 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - FROM@ANGLE /LMID@ANGLE ldiagangledef - - /XINDENT xindent FROM LMID ldiagdistance ldiagmin def - FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - - /ZINDENT zindent TO LMID ldiagdistance ldiagmin def - 0 0 ZINDENT FROM@ANGLE ldiagatangle TO ldiagpsub /LTO ldiagpointdef - FROM@ANGLE /LTO@ANGLE ldiagangledef - - direct { FROM TO } { FROM LFROM LMID LTO TO } ifelse - - % (leaving ldiaglinepath) 0 ldiagdebugprint -} def - -% fromarrowlength toarrowlength { from } { to } xindent zindent pathgap ldiagdoublelinepath - -/ldiagdoublelinepath -{ - % (entering ldiagdoublelinepath) 0 ldiagdebugprint - /pathgap exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagangleto - /FROM@ANGLE ldiagangledef - from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd - /FROM ldiagpointdef - - FROM@ANGLE /TO@ANGLE ldiagangledef - to (CTR) ldiagdolabel TO@ANGLE 180 dg sub to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TO@ANGLE 180 dg sub ldiagatangle ldiagpadd /TO ldiagpointdef - - FROM 0.5 ldiagpmul TO 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - FROM@ANGLE /LMID@ANGLE ldiagangledef - - /XINDENT xindent FROM LMID ldiagdistance ldiagmin def - FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - - /ZINDENT zindent TO LMID ldiagdistance ldiagmin def - 0 0 ZINDENT FROM@ANGLE ldiagatangle TO ldiagpsub /LTO ldiagpointdef - FROM@ANGLE /LTO@ANGLE ldiagangledef - - direct { - FROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle - TO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle - [] - FROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle - TO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle - } - { - FROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle - LFROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle - LMID pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle - LTO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle - TO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle - [] - FROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle - LFROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle - LMID pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle - LTO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle - TO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle - } ifelse - - % (leaving ldiagdoublelinepath) 0 ldiagdebugprint -} def - -% fromarrowlen toarrowlen { from } { to } xindent zindent bias ldiagacurvepath - -/ldiagacurvepath -{ - % (entering ldiagacurvepath) 0 ldiagdebugprint - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - %/B1 bias 0.02 ft ldiagmax def - %/B2 from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagdistance 0.5 mul def - %/BIAS B1 B2 ldiagmin def - /BIAS bias 0.02 ft ldiagmax def - /XMID [ from (CTR) ldiagdolabel 0.5 ldiagpmul - to (CTR) ldiagdolabel 0.5 ldiagpmul ldiagpadd ] cvx def - /XTOP [ XMID 0 0 BIAS from (CTR) ldiagdolabel to (CTR) ldiagdolabel - ldiagangleto 90 dg sub ldiagatangle ldiagpadd ] cvx def - /CTR [ from (CTR) ldiagdolabel XTOP ldiaglinebetween - to (CTR) ldiagdolabel XTOP ldiaglinebetween - ldiaglineintersect ] cvx def - - from fromarrowlength [ CTR ] cvx ldiagaabout /FROM ldiagpointdef - from (CTR) ldiagdolabel FROM ldiagdistance 0 gt - { from (CTR) ldiagdolabel FROM ldiagangleto - } - { CTR FROM ldiagangleto 90 dg add - } ifelse /FROM@ANGLE ldiagangledef - - to toarrowlength [ CTR ] cvx ldiagcabout /TO ldiagpointdef - TO to (CTR) ldiagdolabel ldiagdistance 0 gt - { TO to (CTR) ldiagdolabel ldiagangleto - } - { CTR TO ldiagangleto 90 dg add - } ifelse /TO@ANGLE ldiagangledef - - /RADIUS CTR FROM ldiagdistance def - CTR 0 0 RADIUS CTR FROM ldiagangleto 360 dg CTR TO ldiagangleto - add CTR FROM ldiagangleto sub cvi 360 mod 0.5 mul add - ldiagatangle ldiagpadd /LMID ldiagpointdef - CTR LMID ldiagangleto 90 dg add /LMID@ANGLE ldiagangledef - - /XINDENT xindent FROM LMID ldiagdistance ldiagmin def - CTR 0 0 RADIUS CTR FROM 0 0 XINDENT FROM@ANGLE ldiagatangle - ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LFROM ldiagpointdef - CTR LFROM ldiagangleto 90 dg add /LFROM@ANGLE ldiagangledef - - /ZINDENT zindent TO LMID ldiagdistance ldiagmin def - CTR 0 0 RADIUS CTR TO 0 0 ZINDENT TO@ANGLE 180 dg add - ldiagatangle ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LTO ldiagpointdef - CTR LTO ldiagangleto 90 dg add /LTO@ANGLE ldiagangledef - - direct - { FROM [CTR] TO } - { FROM [CTR] LFROM [CTR] LMID [CTR] LTO [CTR] TO } - ifelse - - % (leaving ldiagacurvepath) 0 ldiagdebugprint -} def - -% fromarrowlen toarrowlen { from } { to } xindent zindent bias ldiagccurvepath - -/ldiagccurvepath -{ - % (entering ldiagccurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - %/B1 bias 0.02 ft ldiagmax def - %/B2 from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagdistance 0.5 mul def - %/BIAS B1 B2 ldiagmin def - /BIAS bias 0.02 ft ldiagmax def - /XMID [ from (CTR) ldiagdolabel 0.5 ldiagpmul - to (CTR) ldiagdolabel 0.5 ldiagpmul ldiagpadd ] cvx def - /XTOP [ XMID 0 0 BIAS from (CTR) ldiagdolabel to (CTR) ldiagdolabel - ldiagangleto 90 dg add ldiagatangle ldiagpadd ] cvx def - /CTR [ from (CTR) ldiagdolabel XTOP ldiaglinebetween - to (CTR) ldiagdolabel XTOP ldiaglinebetween ldiaglineintersect ] cvx def - - from fromarrowlength [ CTR ] cvx ldiagcabout /FROM ldiagpointdef - from (CTR) ldiagdolabel FROM ldiagdistance 0 gt - { from (CTR) ldiagdolabel FROM ldiagangleto } - { CTR FROM ldiagangleto 90 dg sub } - ifelse /FROM@ANGLE ldiagangledef - - to toarrowlength [ CTR ] cvx ldiagaabout /TO ldiagpointdef - TO to (CTR) ldiagdolabel ldiagdistance 0 gt - { TO to (CTR) ldiagdolabel ldiagangleto } - { CTR TO ldiagangleto 90 dg sub } - ifelse /TO@ANGLE ldiagangledef - - /RADIUS [ CTR FROM ldiagdistance ] cvx def - CTR 0 0 RADIUS CTR TO ldiagangleto 360 dg CTR FROM ldiagangleto add - CTR TO ldiagangleto sub cvi 360 cvi mod 2 div add ldiagatangle - ldiagpadd /LMID ldiagpointdef - CTR LMID ldiagangleto 90 dg sub /LMID@ANGLE ldiagangledef - - /XINDENT [ xindent FROM LMID ldiagdistance ldiagmin ] cvx def - CTR 0 0 RADIUS CTR FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd - ldiagangleto ldiagatangle ldiagpadd /LFROM ldiagpointdef - CTR LFROM ldiagangleto 90 dg sub /LFROM@ANGLE ldiagangledef - - /ZINDENT [ zindent TO LMID ldiagdistance ldiagmin ] cvx def - CTR 0 0 RADIUS CTR TO 0 0 ZINDENT TO@ANGLE 180 dg add ldiagatangle - ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LTO ldiagpointdef - CTR LTO ldiagangleto 90 dg sub /LTO@ANGLE ldiagangledef - - direct - { FROM [CTR clockwise] TO } - { FROM [CTR clockwise] LFROM [CTR clockwise] - LMID [CTR clockwise] LTO [CTR clockwise] TO } - ifelse - % (leaving ldiagccurvepath) 0 ldiagdebugprint -} def - - -% farr tarr { from } { to } xindent zindent [frompt] [topt] ldiagbezierpath - -/ldiagbezierpath -{ - % (entering ldiagbezierpath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - cvx /topt exch def - cvx /frompt exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel frompt ldiagangleto /FROM@ANGLE ldiagangledef - from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel - ldiagpadd 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd - /FROM ldiagpointdef - - topt to (CTR) ldiagdolabel ldiagangleto /TO@ANGLE ldiagangledef - to (CTR) ldiagdolabel TO@ANGLE 180 dg add to (CIRCUM) ldiagdolabel - ldiagpadd 0 0 toarrowlength TO@ANGLE 180 dg add ldiagatangle ldiagpadd - /TO ldiagpointdef - - FROM 0 0 xindent FROM@ANGLE ldiagatangle ldiagpadd - /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - - TO 0 0 zindent TO@ANGLE 180 dg add ldiagatangle ldiagpadd - /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - - FROM TO ldiagpadd frompt ldiagpadd topt ldiagpadd 0.25 ldiagpmul - /LMID ldiagpointdef - - FROM [frompt topt] TO - - % (leaving ldiagbezierpath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - - -% farr tarr { from } { to } xindent zindent ldiagvhlinepath - -/ldiagvhlinepath -{ - % (entering ldiagvhlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /CTR [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel exch pop ] cvx def - /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def - /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def - - from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef - FANG /FROM@ANGLE ldiagangledef - - to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef - TANG 180 dg add /TO@ANGLE ldiagangledef - - /FDIST [ FROM CTR ldiagdistance ] cvx def - /TDIST [ TO CTR ldiagdistance ] cvx def - /XINDENT [ xindent FDIST ldiagmin ] cvx def - /ZINDENT [ zindent TDIST ldiagmin ] cvx def - FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - - CTR /LMID ldiagpointdef - 0 0 1 ft FANG 180 dg add ldiagatangle - 0 0 1 ft TANG 180 dg add ldiagatangle - ldiagangleto /LMID@ANGLE ldiagangledef - - FROM LFROM LMID LTO TO - - % (leaving ldiagvhlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent radius ldiagvhcurvepath - -/ldiagvhcurvepath -{ - % (entering ldiagvhcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /CTR [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel exch pop ] cvx def - /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def - /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def - - from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef - FANG /FROM@ANGLE ldiagangledef - - to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef - TANG 180 dg add /TO@ANGLE ldiagangledef - - /FDIST [ FROM CTR ldiagdistance ] cvx def - /TDIST [ TO CTR ldiagdistance ] cvx def - /RADIUS [ radius FDIST TDIST ldiagmin ldiagmin ] cvx def - /XINDENT [ xindent FDIST RADIUS sub ldiagmin ] cvx def - /ZINDENT [ zindent TDIST RADIUS sub ldiagmin ] cvx def - - FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - - /FCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd ] cvx def - /TCTR [ CTR 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def - /XCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd - 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def - XCTR 0 0 RADIUS XCTR CTR ldiagangleto ldiagatangle ldiagpadd - /LMID ldiagpointdef - FCTR TCTR ldiagangleto /LMID@ANGLE ldiagangledef - - FROM LFROM FCTR - {[XCTR clockwise]} {} {} {} {} {[XCTR]} {[XCTR clockwise]} {[XCTR]} - FCTR TCTR ldiagangleto ldiagquadcase - TCTR LTO TO - - % (leaving ldiagvhcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent ldiaghvlinepath - -/ldiaghvlinepath -{ - % (entering ldiaghvlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /CTR [ to (CTR) ldiagdolabel pop from (CTR) ldiagdolabel exch pop ] cvx def - /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def - /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def - - from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef - FANG /FROM@ANGLE ldiagangledef - - to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef - TANG 180 dg add /TO@ANGLE ldiagangledef - - /FDIST [ FROM CTR ldiagdistance ] cvx def - /TDIST [ TO CTR ldiagdistance ] cvx def - /XINDENT [ xindent FDIST ldiagmin ] cvx def - /ZINDENT [ zindent TDIST ldiagmin ] cvx def - - FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - - CTR /LMID ldiagpointdef - 0 0 1 ft FANG 180 dg add ldiagatangle - 0 0 1 ft TANG 180 dg add ldiagatangle ldiagangleto - /LMID@ANGLE ldiagangledef - - FROM LFROM LMID LTO TO - - % (leaving ldiaghvlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent radius ldiaghvcurvepath - -/ldiaghvcurvepath -{ - % (entering ldiaghvcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /CTR [ to (CTR) ldiagdolabel pop from (CTR) ldiagdolabel exch pop ] cvx def - /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def - /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def - - from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef - FANG /FROM@ANGLE ldiagangledef - - to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef - TANG 180 dg add /TO@ANGLE ldiagangledef - - /FDIST [ FROM CTR ldiagdistance ] cvx def - /TDIST [ TO CTR ldiagdistance ] cvx def - /RADIUS [ radius FDIST TDIST ldiagmin ldiagmin ] cvx def - /XINDENT [ xindent FDIST RADIUS sub ldiagmin ] cvx def - /ZINDENT [ zindent TDIST RADIUS sub ldiagmin ] cvx def - FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - - /FCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd ] cvx def - /TCTR [ CTR 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def - /XCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd - 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def - XCTR 0 0 RADIUS XCTR CTR ldiagangleto ldiagatangle ldiagpadd - /LMID ldiagpointdef - FCTR TCTR ldiagangleto /LMID@ANGLE ldiagangledef - - FROM LFROM FCTR - {[XCTR]} {} {} {} {} {[XCTR clockwise]} {[XCTR]} {[XCTR clockwise]} - FCTR TCTR ldiagangleto ldiagquadcase - TCTR LTO TO - - % (leaving ldiaghvcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias ldiaglvrlinepath - -/ldiaglvrlinepath -{ - % (entering ldiaglvrlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel 180 dg from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength 180 dg ldiagatangle ldiagpadd /FROM ldiagpointdef - 180 dg /FROM@ANGLE ldiagangledef - - to (CTR) ldiagdolabel 180 dg to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength 180 dg ldiagatangle ldiagpadd /TO ldiagpointdef - 0 dg /TO@ANGLE ldiagangledef - - /XLEFT [ FROM pop TO pop ldiagmin bias sub ] cvx def - XLEFT FROM exch pop /P1 ldiagpointdef - XLEFT TO exch pop /P2 ldiagpointdef - /VERT [ P1 P2 ldiagangleto ] cvx def - P1 P1 0 0 1 ft 180 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle - ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef - P2 P2 0 0 1 ft 0 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle - ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef - - P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - VERT /LMID@ANGLE ldiagangledef - - /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def - XINDENT 0 FROM ldiagpsub /LFROM ldiagpointdef - 180 dg /LFROM@ANGLE ldiagangledef - ZINDENT 0 TO ldiagpsub /LTO ldiagpointdef - 0 dg /LTO@ANGLE ldiagangledef - - FROM LFROM P1 LMID P2 LTO TO - - % (leaving ldiaglvrlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias radius ldiaglvrcurvepath - -/ldiaglvrcurvepath -{ - % (entering ldiaglvrcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel 180 dg from (CIRCUM) ldiagdolabel ldiagpadd 0 0 - fromarrowlength 180 dg ldiagatangle ldiagpadd /FROM ldiagpointdef - 180 dg /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel 180 dg to (CIRCUM) ldiagdolabel ldiagpadd 0 0 - toarrowlength 180 dg ldiagatangle ldiagpadd /TO ldiagpointdef - 0 dg /TO@ANGLE ldiagangledef - /XLEFT [ FROM pop TO pop ldiagmin bias sub ] cvx def - /XP1 [ XLEFT FROM exch pop ] cvx def - /XP2 [ XLEFT TO exch pop ] cvx def - /VERT [ XP1 XP2 ldiagangleto ] cvx def - XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - VERT /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def - XINDENT 0 FROM ldiagpsub /LFROM ldiagpointdef - 180 dg /LFROM@ANGLE ldiagangledef - ZINDENT 0 TO ldiagpsub /LTO ldiagpointdef - 0 dg /LTO@ANGLE ldiagangledef - /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def - /XP1PRE [ XP1 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def - /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd - /P1 ldiagpointdef - XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef - /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def - /XP2POST [ XP2 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def - /XP2CTR [ XP2PRE 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def - XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd - /P2 ldiagpointdef - XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef - FROM LFROM XP1PRE - { } { [XP1CTR] P1 [XP1CTR] } { } { [XP1CTR clockwise] P1 [XP1CTR clockwise] } - { } { } { } { } VERT round ldiagquadcase - XP1POST LMID XP2PRE - { } { [XP2CTR] P2 [XP2CTR] } { } { [XP2CTR clockwise] P2 [XP2CTR clockwise] } - { } { } { } { } VERT round ldiagquadcase - XP2POST LTO TO - - % (leaving ldiaglvrcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias ldiagrvllinepath - -/ldiagrvllinepath -{ - % (entering ldiagrvllinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel 0 dg from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength 0 dg ldiagatangle ldiagpadd /FROM ldiagpointdef - 0 dg /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel 0 dg to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength 0 dg ldiagatangle ldiagpadd /TO ldiagpointdef - 180 dg /TO@ANGLE ldiagangledef - /XRIGHT [ FROM pop TO pop ldiagmax bias add ] cvx def - XRIGHT FROM exch pop /P1 ldiagpointdef - XRIGHT TO exch pop /P2 ldiagpointdef - /VERT [ P1 P2 ldiagangleto ] cvx def - P1 P1 0 0 1 ft 0 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle - ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef - P2 P2 0 0 1 ft 180 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle - ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef - P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - VERT /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def - FROM XINDENT 0 ldiagpadd /LFROM ldiagpointdef - 0 dg /LFROM@ANGLE ldiagangledef - TO ZINDENT 0 ldiagpadd /LTO ldiagpointdef - 180 dg /LTO@ANGLE ldiagangledef - FROM LFROM P1 LMID P2 LTO TO - - % (leaving ldiagrvllinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - - -% farr tarr { from } { to } xindent zindent bias radius ldiagrvlcurvepath - -/ldiagrvlcurvepath -{ - % (entering ldiagrvlcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel 0 dg from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength 0 dg ldiagatangle ldiagpadd /FROM ldiagpointdef - 0 dg /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel 0 dg to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength 0 dg ldiagatangle ldiagpadd /TO ldiagpointdef - 180 dg /TO@ANGLE ldiagangledef - /XRIGHT [ FROM pop TO pop ldiagmax bias add ] cvx def - /XP1 [ XRIGHT FROM exch pop ] cvx def - /XP2 [ XRIGHT TO exch pop ] cvx def - /VERT [ XP1 XP2 ldiagangleto ] cvx def - XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - VERT /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def - FROM XINDENT 0 ldiagpadd /LFROM ldiagpointdef - 0 dg /LFROM@ANGLE ldiagangledef - TO ZINDENT 0 ldiagpadd /LTO ldiagpointdef - 180 dg /LTO@ANGLE ldiagangledef - /RADIUS [ radius XP1 XP2 ldiagdistance 0.5 mul ldiagmin ] cvx def - /XP1PRE [ XP1 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def - /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd - /P1 ldiagpointdef - XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef - /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def - /XP2POST [ XP2 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def - /XP2CTR [ XP2PRE 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def - XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd - /P2 ldiagpointdef - XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef - FROM LFROM XP1PRE - {} {[XP1CTR clockwise] P1 [XP1CTR clockwise]} {} {[XP1CTR] P1 [XP1CTR]} - {} {} {} {} VERT round ldiagquadcase - XP1POST LMID XP2PRE - {} {[XP2CTR clockwise] P2 [XP2CTR clockwise]} {} {[XP2CTR] P2 [XP2CTR]} - {} {} {} {} VERT round ldiagquadcase - XP2POST LTO TO - - % (leaving ldiagrvlcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias ldiagdhulinepath - -/ldiagdhulinepath -{ - % (entering ldiagdhulinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength 270 dg ldiagatangle ldiagpadd /FROM ldiagpointdef - 270 dg /FROM@ANGLE ldiagangledef - - to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength 270 dg ldiagatangle ldiagpadd /TO ldiagpointdef - 90 dg /TO@ANGLE ldiagangledef - - /XDOWN [ FROM exch pop TO exch pop ldiagmin bias sub ] cvx def - FROM pop XDOWN /P1 ldiagpointdef - TO pop XDOWN /P2 ldiagpointdef - /HORIZ [ P1 P2 ldiagangleto ] cvx def - P1 P1 0 0 1 ft 270 dg ldiagatangle ldiagpadd 0 0 1 ft HORIZ ldiagatangle - ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef - P2 P2 0 0 1 ft 90 dg ldiagatangle ldiagpadd 0 0 1 ft HORIZ ldiagatangle - ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef - - P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - HORIZ /LMID@ANGLE ldiagangledef - - /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def - 0 XINDENT FROM ldiagpsub /LFROM ldiagpointdef - 270 dg /LFROM@ANGLE ldiagangledef - 0 ZINDENT TO ldiagpsub /LTO ldiagpointdef - 90 dg /LTO@ANGLE ldiagangledef - - FROM LFROM P1 LMID P2 LTO TO - - % (leaving ldiagdhulinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias radius ldiagdhucurvepath - -/ldiagdhucurvepath -{ - % (entering ldiagdhucurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd 0 0 - fromarrowlength 270 dg ldiagatangle ldiagpadd /FROM ldiagpointdef - 270 dg /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd 0 0 - toarrowlength 270 dg ldiagatangle ldiagpadd /TO ldiagpointdef - 90 dg /TO@ANGLE ldiagangledef - /XDOWN [ FROM exch pop TO exch pop ldiagmin bias sub ] cvx def - /XP1 [ FROM pop XDOWN ] cvx def - /XP2 [ TO pop XDOWN ] cvx def - /HORIZ [ XP1 XP2 ldiagangleto ] cvx def - XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - HORIZ /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def - 0 XINDENT FROM ldiagpsub /LFROM ldiagpointdef - 270 dg /LFROM@ANGLE ldiagangledef - 0 ZINDENT TO ldiagpsub /LTO ldiagpointdef - 90 dg /LTO@ANGLE ldiagangledef - /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def - /XP1PRE [ XP1 0 0 RADIUS 90 dg ldiagatangle ldiagpadd ] cvx def - /XP1POST [ XP1 0 0 RADIUS HORIZ ldiagatangle ldiagpadd ] cvx def - /XP1CTR [ XP1PRE 0 0 RADIUS HORIZ ldiagatangle ldiagpadd ] cvx def - XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd - /P1 ldiagpointdef - XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef - /XP2PRE [ 0 0 RADIUS HORIZ ldiagatangle XP2 ldiagpsub ] cvx def - /XP2POST [ XP2 0 0 RADIUS 90 dg ldiagatangle ldiagpadd ] cvx def - /XP2CTR [ XP2PRE 0 0 RADIUS 90 dg ldiagatangle ldiagpadd ] cvx def - XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd - /P2 ldiagpointdef - XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef - FROM LFROM XP1PRE - {} {} { [XP1CTR clockwise] P1 [XP1CTR clockwise] } {} { [XP1CTR] P1 [XP1CTR] } - {} {} {} HORIZ round ldiagquadcase - XP1POST LMID XP2PRE - {} {} { [XP2CTR clockwise ] P2 [XP2CTR clockwise ] } {} { [XP2CTR] P2 [XP2CTR] } - {} {} {} HORIZ round ldiagquadcase - XP2POST LTO TO - - % (leaving ldiagdhucurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias ldiaguhdlinepath - -/ldiaguhdlinepath -{ - % (entering ldiaguhdlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength 90 dg ldiagatangle ldiagpadd /FROM ldiagpointdef - 90 dg /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength 90 dg ldiagatangle ldiagpadd /TO ldiagpointdef - 270 dg /TO@ANGLE ldiagangledef - /XUP [ FROM exch pop TO exch pop ldiagmax bias add ] cvx def - FROM pop XUP /P1 ldiagpointdef - TO pop XUP /P2 ldiagpointdef - /HORIZ [ P1 P2 ldiagangleto ] cvx def - P1 P1 0 0 1 ft 90 dg ldiagatangle ldiagpadd 0 0 1 ft HORIZ ldiagatangle - ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef - P2 P2 0 0 1 ft 270 dg ldiagatangle ldiagpadd 0 0 1 ft HORIZ ldiagatangle - ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef - P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - HORIZ /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def - FROM 0 XINDENT ldiagpadd /LFROM ldiagpointdef - 90 dg /LFROM@ANGLE ldiagangledef - TO 0 ZINDENT ldiagpadd /LTO ldiagpointdef - 270 dg /LTO@ANGLE ldiagangledef - FROM LFROM P1 LMID P2 LTO TO - - % (leaving ldiaguhdlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - - -% farr tarr { from } { to } xindent zindent bias radius ldiaguhdcurvepath - -/ldiaguhdcurvepath -{ - % (entering ldiaguhdcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength 90 dg ldiagatangle ldiagpadd /FROM ldiagpointdef - 90 dg /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength 90 dg ldiagatangle ldiagpadd /TO ldiagpointdef - 270 dg /TO@ANGLE ldiagangledef - /XUP [ FROM exch pop TO exch pop ldiagmax bias add ] cvx def - /XP1 [ FROM pop XUP ] cvx def - /XP2 [ TO pop XUP ] cvx def - /HORIZ [ XP1 XP2 ldiagangleto ] cvx def - XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - HORIZ /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def - FROM 0 XINDENT ldiagpadd /LFROM ldiagpointdef - 90 dg /LFROM@ANGLE ldiagangledef - TO 0 ZINDENT ldiagpadd /LTO ldiagpointdef - 270 dg /LTO@ANGLE ldiagangledef - /RADIUS [ radius XP1 XP2 ldiagdistance 0.5 mul ldiagmin ] cvx def - /XP1PRE [ XP1 0 0 RADIUS 270 dg ldiagatangle ldiagpadd ] cvx def - /XP1POST [ XP1 0 0 RADIUS HORIZ ldiagatangle ldiagpadd ] cvx def - /XP1CTR [ XP1PRE 0 0 RADIUS HORIZ ldiagatangle ldiagpadd ] cvx def - XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd - /P1 ldiagpointdef - XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef - /XP2PRE [ 0 0 RADIUS HORIZ ldiagatangle XP2 ldiagpsub ] cvx def - /XP2POST [ XP2 0 0 RADIUS 270 dg ldiagatangle ldiagpadd ] cvx def - /XP2CTR [ XP2PRE 0 0 RADIUS 270 dg ldiagatangle ldiagpadd ] cvx def - XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd - /P2 ldiagpointdef - XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef - FROM LFROM XP1PRE - {} {} {[XP1CTR] P1 [XP1CTR]} {} {[XP1CTR clockwise] P1 [XP1CTR clockwise]} - {} {} {} HORIZ round ldiagquadcase - XP1POST LMID XP2PRE - {} {} {[XP2CTR] P2 [XP2CTR]} {} {[XP2CTR clockwise] P2 [XP2CTR clockwise]} - {} {} {} HORIZ round ldiagquadcase - XP2POST LTO TO - - % (leaving ldiaguhdcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent hfrac hbias ldiaghvhlinepath - -/ldiaghvhlinepath % still to do -{ - % (entering ldiaghvhlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /hbias exch def - /hfrac exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /FRDIRN [ { 0 dg } { 180 dg } { 180 dg } { 0 dg } - { 0 dg } { 0 dg } { 180 dg } { 180 dg } - from (CTR) ldiagdolabel to (CTR) ldiagdolabel - ldiagangleto ldiagquadcase ] cvx def - /TODIRN [ FRDIRN 180 dg add ] cvx def - from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - FRDIRN /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef - FRDIRN /TO@ANGLE ldiagangledef - /BIAS [ FROM pop TO pop sub abs hfrac mul hbias add ] cvx def - FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd /P1 ldiagpointdef - P1 pop TO exch pop /P2 ldiagpointdef - P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - P1 P2 ldiagangleto /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def - FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - FRDIRN /LFROM@ANGLE ldiagangledef - TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef - FRDIRN /LTO@ANGLE ldiagangledef - FROM LFROM P1 LMID P2 LTO TO - - % (leaving ldiaghvhlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - - -% farr tarr { from } { to } xindent zindent hfrac hbias radius ldiaghvhcurvepath - -/ldiaghvhcurvepath % still to do -{ - % (entering ldiaghvhcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /hbias exch def - /hfrac exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /FRDIRN [ { 0 dg } { 180 dg } { 180 dg } { 0 dg } - { 0 dg } { 0 dg } { 180 dg } { 180 dg } - from (CTR) ldiagdolabel to (CTR) ldiagdolabel - ldiagangleto ldiagquadcase ] cvx def - /TODIRN [ FRDIRN 180 dg add ] cvx def - - from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - FRDIRN /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef - - FRDIRN /TO@ANGLE ldiagangledef - /BIAS [ FROM pop TO pop sub abs hfrac mul hbias add ] cvx def - /XP1 [ FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd ] cvx def - /XP2 [ XP1 pop TO exch pop ] cvx def - XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - /VERT [ XP1 XP2 ldiagangleto round ] cvx def - VERT /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def - FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - FRDIRN /LFROM@ANGLE ldiagangledef - TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef - FRDIRN /LTO@ANGLE ldiagangledef - /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def - /XP1PRE [ XP1 0 0 RADIUS TODIRN ldiagatangle ldiagpadd ] cvx def - /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef - XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef - /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def - /XP2POST [ XP2 0 0 RADIUS FRDIRN ldiagatangle ldiagpadd ] cvx def - /XP2CTR [ 0 0 RADIUS VERT ldiagatangle XP2POST ldiagpsub ] cvx def - XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef - XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef - VERT FRDIRN sub 90 eq - { /P1GO [ anticlockwise ] cvx def /P2GO [ clockwise ] cvx def } - { /P1GO [ clockwise ] cvx def /P2GO [ anticlockwise ] cvx def } - ifelse - FROM LFROM - XP1PRE [XP1CTR P1GO] P1 [XP1CTR P1GO] XP1POST - LMID - XP2PRE [XP2CTR P2GO] P2 [XP2CTR P2GO] XP2POST - LTO TO - - % (leaving ldiaghvhcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent hfrac hbias ldiagvhvlinepath - -/ldiagvhvlinepath % still to do -{ - % (entering ldiagvhvlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /hbias exch def - /hfrac exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /FRDIRN [ { 90 dg } { 270 dg } { 270 dg } { 0 dg } - { 90 dg } { 270 dg } { 270 dg } { 90 dg } - from (CTR) ldiagdolabel to (CTR) ldiagdolabel - ldiagangleto ldiagquadcase ] cvx def - /TODIRN [ FRDIRN 180 dg sub ] cvx def - from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - FRDIRN /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef - FRDIRN /TO@ANGLE ldiagangledef - /BIAS [ FROM exch pop TO exch pop sub abs hfrac mul hbias ft add ] cvx def - FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd /P1 ldiagpointdef - TO pop P1 exch pop /P2 ldiagpointdef - P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - P1 P2 ldiagangleto /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def - FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - FRDIRN /LFROM@ANGLE ldiagangledef - TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef - FRDIRN /LTO@ANGLE ldiagangledef - FROM LFROM P1 LMID P2 LTO TO - - % (leaving ldiagvhvlinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - - -% farr tarr { from } { to } xindent zindent hfrac hbias radius ldiagvhvcurvepath - -/ldiagvhvcurvepath % still to do -{ - % (entering ldiagvhvcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /hbias exch def - /hfrac exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /FRDIRN [ { 90 dg } { 270 dg } { 270 dg } { 0 dg } - { 90 dg } { 270 dg } { 270 dg } { 90 dg } - from (CTR) ldiagdolabel to (CTR) ldiagdolabel - ldiagangleto ldiagquadcase ] cvx def - /TODIRN [ FRDIRN 180 dg sub ] cvx def - from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - FRDIRN /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef - FRDIRN /TO@ANGLE ldiagangledef - /BIAS [ FROM exch pop TO exch pop sub abs hfrac mul hbias add ] cvx def - /XP1 [ FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd ] cvx def - /XP2 [ TO pop XP1 exch pop ] cvx def - XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - /VERT [ XP1 XP2 ldiagangleto round ] cvx def - VERT /LMID@ANGLE ldiagangledef - /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def - /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def - FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - FRDIRN /LFROM@ANGLE ldiagangledef - TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef - FRDIRN /LTO@ANGLE ldiagangledef - /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def - /XP1PRE [ XP1 0 0 RADIUS TODIRN ldiagatangle ldiagpadd ] cvx def - /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def - XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef - XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef - /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def - /XP2POST [ XP2 0 0 RADIUS FRDIRN ldiagatangle ldiagpadd ] cvx def - /XP2CTR [ 0 0 RADIUS VERT ldiagatangle XP2POST ldiagpsub ] cvx def - XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef - XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef - FRDIRN VERT sub 90 eq - { /P1GO [ clockwise ] cvx def /P2GO [ anticlockwise ] cvx def } - { /P1GO [ anticlockwise ] cvx def /P2GO [ clockwise ] cvx def } - ifelse - FROM LFROM - XP1PRE [XP1CTR P1GO] P1 [XP1CTR P1GO] XP1POST - LMID - XP2PRE [XP2CTR P2GO] P2 [XP2CTR P2GO] XP2POST - LTO TO - - - % (leaving ldiagvhvcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias fbias tbias ldiagdwraplinepath - -/ldiagdwraplinepath -{ - % (entering ldiagdwraplinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /tbias exch def - /fbias exch def - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop - lt { 180 dg } { 0 dg } ifelse ] cvx def - from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd 0 0 - fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - DIRN /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef - DIRN /TO@ANGLE ldiagangledef - FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd /P1 ldiagpointdef - DIRN 180 dg eq { 225 dg } { -45 dg } ifelse /P1@ANGLE ldiagangledef - TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd - /P4 ldiagpointdef - DIRN 180 dg eq { 135 dg } { 45 dg } ifelse /P4@ANGLE ldiagangledef - /YC [ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd - exch pop to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd - exch pop ldiagmin bias 0 ldiagmax sub ] cvx def - P1 pop YC /P2 ldiagpointdef - P4@ANGLE 180 dg sub /P2@ANGLE ldiagangledef - P4 pop YC /P3 ldiagpointdef - P1@ANGLE 180 dg sub /P3@ANGLE ldiagangledef - /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def - FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - /ZINDENT [ zindent TO P4 ldiagdistance ldiagmin ] cvx def - TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - P2 0.5 ldiagpmul P3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - DIRN 180 dg sub /LMID@ANGLE ldiagangledef - FROM P1 P2 P3 P4 TO - - % (leaving ldiagdwraplinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias fbias tbias radius -% ldiagdwrapcurvepath - -/ldiagdwrapcurvepath -{ - % (entering ldiagdwrapcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /tbias exch def - /fbias exch def - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt - { 180 dg } { 0 dg } ifelse ] cvx def - /CLOCK [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt - { anticlockwise } { clockwise } ifelse ] cvx def - from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - DIRN /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef - DIRN /TO@ANGLE ldiagangledef - /XP1 [ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd ] cvx def - /XP4 [ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd ] cvx def - /YC [ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd - exch pop to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd - exch pop ldiagmin bias 0 ldiagmax sub ] cvx def - /XP2 [ XP1 pop YC ] cvx def - /XP3 [ XP4 pop YC ] cvx def - /RP1 [ radius XP1 FROM ldiagdistance XP1 XP2 ldiagdistance 2 div - ldiagmin ldiagmin ] cvx def - /XP1PRE [ XP1 0 0 RP1 XP1 FROM ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP1POST [ XP1 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP1CTR [ XP1PRE 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def - XP1CTR 0 0 RP1 XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef - XP1CTR P1 ldiagangleto DIRN add 90 dg sub /P1@ANGLE ldiagangledef - /RP2 [ radius XP1 XP2 ldiagdistance 2 div XP2 XP3 ldiagdistance 2 div - ldiagmin ldiagmin ] cvx def - /XP2PRE [ XP2 0 0 RP2 XP2 XP1 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP2POST [ XP2 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP2CTR [ XP2PRE 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def - XP2CTR 0 0 RP2 XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef - XP2CTR P2 ldiagangleto DIRN add 90 dg sub /P2@ANGLE ldiagangledef - /RP3 [ radius XP2 XP3 ldiagdistance 2 div XP3 XP4 ldiagdistance 2 div - ldiagmin ldiagmin ] cvx def - /XP3PRE [ XP3 0 0 RP3 XP3 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP3POST [ XP3 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP3CTR [ XP3PRE 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def - XP3CTR 0 0 RP3 XP3CTR XP3 ldiagangleto ldiagatangle ldiagpadd /P3 ldiagpointdef - XP3CTR P3 ldiagangleto DIRN add 90 dg sub /P3@ANGLE ldiagangledef - /RP4 [ radius XP4 XP3 ldiagdistance 2 div XP4 TO ldiagdistance - ldiagmin ldiagmin ] cvx def - /XP4PRE [ XP4 0 0 RP4 XP4 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP4POST [ XP4 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP4CTR [ XP4PRE 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def - XP4CTR 0 0 RP4 XP4CTR XP4 ldiagangleto ldiagatangle ldiagpadd /P4 ldiagpointdef - XP4CTR P4 ldiagangleto DIRN add 90 dg sub /P4@ANGLE ldiagangledef - /XINDENT [ xindent FROM XP1PRE ldiagdistance ldiagmin ] cvx def - FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - XP2 0.5 ldiagpmul XP3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - DIRN 180 dg sub /LMID@ANGLE ldiagangledef - /ZINDENT [ zindent TO XP4POST ldiagdistance ldiagmin ] cvx def - TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - FROM LFROM - XP1PRE [XP1CTR CLOCK] XP1POST - XP2PRE [XP2CTR CLOCK] XP2POST - LMID - XP3PRE [XP3CTR CLOCK] XP3POST - XP4PRE [XP4CTR CLOCK] XP4POST - LTO TO - - % (leaving ldiagdwrapcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias fbias tbias ldiaguwraplinepath - -/ldiaguwraplinepath -{ - % (entering ldiaguwraplinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /tbias exch def - /fbias exch def - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt - { 180 dg } { 0 dg } ifelse ] cvx def - from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - DIRN /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef - DIRN /TO@ANGLE ldiagangledef - FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd /P1 ldiagpointdef - DIRN 180 dg eq { 135 dg } { 45 dg } ifelse /P1@ANGLE ldiagangledef - TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd - /P4 ldiagpointdef - DIRN 180 dg eq { 225 dg } { -45 dg } ifelse /P4@ANGLE ldiagangledef - /YC [ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd - exch pop to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd - exch pop ldiagmax bias 0 ldiagmax add ] cvx def - P1 pop YC /P2 ldiagpointdef - P4@ANGLE 180 dg sub /P2@ANGLE ldiagangledef - P4 pop YC /P3 ldiagpointdef - P1@ANGLE 180 dg sub /P3@ANGLE ldiagangledef - /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def - FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - /ZINDENT [ zindent TO P4 ldiagdistance ldiagmin ] cvx def - TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - P2 0.5 ldiagpmul P3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - DIRN 180 dg sub /LMID@ANGLE ldiagangledef - FROM P1 P2 P3 P4 TO - - % (leaving ldiaguwraplinepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% farr tarr { from } { to } xindent zindent bias fbias tbias radius -% ldiaguwrapcurvepath - -/ldiaguwrapcurvepath -{ - % (entering ldiaguwrapcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop - /radius exch def - /tbias exch def - /fbias exch def - /bias exch def - /zindent exch def - /xindent exch def - cvlit /to exch def - cvlit /from exch def - /toarrowlength exch def - /fromarrowlength exch def - - /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt - { 180 dg } { 0 dg } ifelse ] cvx def - /CLOCK [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt - { clockwise } { anticlockwise } ifelse ] cvx def - from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd - 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef - DIRN /FROM@ANGLE ldiagangledef - to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd - 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef - DIRN /TO@ANGLE ldiagangledef - /XP1 [ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd ] cvx def - /XP4 [ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd ] cvx def - /YC [ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd - exch pop to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd - exch pop ldiagmax bias 0 ldiagmax add ] cvx def - /XP2 [ XP1 pop YC ] cvx def - /XP3 [ XP4 pop YC ] cvx def - /RP1 [ radius XP1 FROM ldiagdistance XP1 XP2 ldiagdistance 2 div - ldiagmin ldiagmin ] cvx def - /XP1PRE [ XP1 0 0 RP1 XP1 FROM ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP1POST [ XP1 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP1CTR [ XP1PRE 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def - XP1CTR 0 0 RP1 XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef - XP1CTR P1 ldiagangleto DIRN add 90 dg add /P1@ANGLE ldiagangledef - /RP2 [ radius XP1 XP2 ldiagdistance 2 div XP2 XP3 ldiagdistance 2 div - ldiagmin ldiagmin ] cvx def - /XP2PRE [ XP2 0 0 RP2 XP2 XP1 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP2POST [ XP2 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP2CTR [ XP2PRE 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def - XP2CTR 0 0 RP2 XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef - XP2CTR P2 ldiagangleto DIRN add 90 dg add /P2@ANGLE ldiagangledef - /RP3 [ radius XP2 XP3 ldiagdistance 2 div XP3 XP4 ldiagdistance 2 div - ldiagmin ldiagmin ] cvx def - /XP3PRE [ XP3 0 0 RP3 XP3 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP3POST [ XP3 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP3CTR [ XP3PRE 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def - XP3CTR 0 0 RP3 XP3CTR XP3 ldiagangleto ldiagatangle ldiagpadd /P3 ldiagpointdef - XP3CTR P3 ldiagangleto DIRN add 90 dg add /P3@ANGLE ldiagangledef - /RP4 [ radius XP4 XP3 ldiagdistance 2 div XP4 TO ldiagdistance - ldiagmin ldiagmin ] cvx def - /XP4PRE [ XP4 0 0 RP4 XP4 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP4POST [ XP4 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def - /XP4CTR [ XP4PRE 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def - XP4CTR 0 0 RP4 XP4CTR XP4 ldiagangleto ldiagatangle ldiagpadd /P4 ldiagpointdef - XP4CTR P4 ldiagangleto DIRN add 90 dg add /P4@ANGLE ldiagangledef - /XINDENT [ xindent FROM XP1PRE ldiagdistance ldiagmin ] cvx def - FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef - FROM@ANGLE /LFROM@ANGLE ldiagangledef - XP2 0.5 ldiagpmul XP3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef - DIRN 180 dg sub /LMID@ANGLE ldiagangledef - /ZINDENT [ zindent TO XP4POST ldiagdistance ldiagmin ] cvx def - TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef - TO@ANGLE /LTO@ANGLE ldiagangledef - FROM LFROM - XP1PRE [XP1CTR CLOCK] XP1POST - XP2PRE [XP2CTR CLOCK] XP2POST - LMID - XP3PRE [XP3CTR CLOCK] XP3POST - XP4PRE [XP4CTR CLOCK] XP4POST - LTO TO - - % (leaving ldiaguwrapcurvepath) 0 ldiagdebugprint - % count ( stack size is) 1 ldiagdebugprint pop -} def - -% shape and labels of the @SolidArrowHead symbol -% - ldiagsolidarrowhead - -/ldiagsolidarrowhead -{ - 0 0 xsize ysize 0.5 mul 0 ysize -} def - -% shape and labels of the @SolidWithBarArrowHead symbol -% <pathwidth> ldiagsolidwithbararrowhead - -/ldiagsolidwithbararrowhead -{ - /pathwidth exch def - /XBK [ xsize pathwidth 0.5 mul sub ] cvx def - /XFW [ xsize pathwidth 0.5 mul add ] cvx def - 0 0 XBK ysize 0.5 mul XBK 0 XFW 0 XFW ysize - XBK ysize XBK ysize 0.5 mul 0 ysize 0 0 -} def - -% shape and labels of the @OpenArrowHead symbol -% <pathwidth> <pathgap> ldiagopenarrowhead - -/ldiagopenarrowhead -{ - /pathgap exch def - /pathwidth exch def - /PSW [ 0 0 ] cvx def - /PNW [ 0 ysize ] cvx def - /PE [ xsize ysize 0.5 mul ] cvx def - /REL [ 0 0 pathwidth PE PNW ldiagangleto 90 add ldiagatangle ] cvx def - pathgap 0 eq - { - /PNA [ 0 ysize 0.5 mul pathwidth 0.5 mul add ] cvx def - /PSA [ 0 ysize 0.5 mul pathwidth 0.5 mul sub ] cvx def - /PNI [ PNA PNA xsize 0 ldiagpadd PNW REL ldiagpadd - PE REL ldiagpadd ldiaglineintersect ] cvx def - /PSI [ 0 pathwidth PNI ldiagpsub ] cvx def - - PSW PE PNW PNI PNA PSA PSI PSW - } - { - /PNA [ 0 ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul add ] cvx def - /PSA [ 0 ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul sub ] cvx def - /PNI [ PNA PNA xsize 0 ldiagpadd PNW REL ldiagpadd - PE REL ldiagpadd ldiaglineintersect ] cvx def - /PSI [ 0 pathwidth pathgap add PNI ldiagpsub ] cvx def - /PXA [ 0 pathwidth PNA ldiagpsub ] cvx def - /PXI [ 0 pathwidth PNI ldiagpsub ] cvx def - /PYA [ 0 pathwidth PSA ldiagpadd ] cvx def - /PYI [ 0 pathwidth PSI ldiagpadd ] cvx def - - PSW PE PNW PNI PNA PXA PXI PYI PYA PSA PSI PSW - } ifelse -} def - -% shape and labels of the @HalfOpenArrowHead symbol -% <pathwidth> <pathgap> ldiaghalfopenarrowhead - -/ldiaghalfopenarrowhead -{ - /pathgap exch def - /pathwidth exch def - 0 0 - xsize ysize 0.5 mul - 0 ysize - pathgap 0 eq - { - xsize 0.3 mul ysize 0.5 mul pathwidth 0.5 mul add - 0 ysize 0.5 mul pathwidth 0.5 mul add - 0 ysize 0.5 mul pathwidth 0.5 mul sub - xsize 0.3 mul ysize 0.5 mul pathwidth 0.5 mul sub - } - { - xsize 0.3 mul ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul add - 0 ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul add - 0 ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul sub - xsize 0.3 mul ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul sub - xsize 0.3 mul ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul add - 0 ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul add - 0 ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul sub - xsize 0.3 mul ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul sub - } ifelse - 0 0 -} def - -% shape and labels of the @SolidCurvedArrowHead symbol -% - ldiagsolidcurvedarrowhead - -/ldiagsolidcurvedarrowhead -{ - 0 0 - [0 0 xsize ysize 0.5 mul ldiaglinebetween - xsize 0 xsize ysize ldiaglineintersect clockwise] - xsize ysize 0.5 mul - [xsize ysize 0.5 mul 0 ysize ldiaglinebetween - xsize 0 xsize ysize ldiaglineintersect clockwise] - 0 ysize -} def - -% shape and labels of the @OpenCurvedArrowHead symbol -% <pathwidth> <pathgap> ldiagopencurvedarrowhead - -/ldiagopencurvedarrowhead -{ - /pathgap exch def - /pathwidth exch def - /LR [ 0 0 xsize ysize 0.5 mul ldiaglinebetween - xsize 0 xsize ysize ldiaglineintersect - ] cvx def - /UR [ xsize ysize 0.5 mul 0 ysize ldiaglinebetween - xsize 0 xsize ysize ldiaglineintersect - ] cvx def - /PW2 [ pathwidth 0.5 mul ] cvx def - 0 0 - [LR clockwise] - xsize ysize 0.5 mul - [UR clockwise] - 0 ysize - pathgap 0 eq - { - /UMID [ - 0 ysize 0.5 mul PW2 add - xsize ysize 0.5 mul PW2 add - 0 ysize 0 0 1 ft UR 0 ysize ldiagangleto 90 add ldiagatangle - ldiagpadd 0 ysize ldiaglineintersect - ] cvx def - /LMID [ 0 pathwidth UMID ldiagpsub ] cvx def - UMID - 0 ysize 0.5 mul PW2 add - 0 ysize 0.5 mul PW2 sub - LMID - } - { - /UMIDU [ - 0 ysize 0.5 mul PW2 add pathgap 0.5 mul add - xsize ysize 0.5 mul PW2 add pathgap 0.5 mul add - 0 ysize 0 0 1 ft UR 0 ysize ldiagangleto 90 add ldiagatangle - ldiagpadd 0 ysize ldiaglineintersect - ] cvx def - /UMIDL [ 0 pathwidth UMIDU ldiagpsub ] cvx def - /LMIDL [ 0 pathgap 0 pathwidth UMIDU ldiagpsub ldiagpsub ] cvx def - /LMIDU [ 0 pathwidth LMIDL ldiagpadd ] cvx def - UMIDU - 0 UMIDU exch pop - 0 UMIDL exch pop - UMIDL - LMIDU - 0 LMIDU exch pop - 0 LMIDL exch pop - LMIDL - } ifelse - 0 0 -} def - -% shape and labels of the @HalfOpenCurvedArrowHead symbol -% <pathwidth> <pathgap> ldiaghalfopencurvedarrowhead - -/ldiaghalfopencurvedarrowhead -{ - /pathgap exch def - /pathwidth exch def - /LR [ 0 0 xsize ysize 0.5 mul ldiaglinebetween - xsize 0 xsize ysize ldiaglineintersect - ] cvx def - /UR [ xsize ysize 0.5 mul 0 ysize ldiaglinebetween - xsize 0 xsize ysize ldiaglineintersect - ] cvx def - /BR [ 0 0 LR 0 ysize UR ldiaglineintersect ] cvx def - /BRAD [ 0 0 BR ldiagdistance ] cvx def - /PW2 [ pathwidth 0.5 mul ] cvx def - 0 0 - [LR clockwise] - xsize ysize 0.5 mul - [UR clockwise] - 0 ysize - [BR clockwise] - pathgap 0 eq - { - /XDIST [ BRAD dup mul PW2 dup mul sub sqrt ] cvx def - /UMID [ BR XDIST PW2 ldiagpadd ] cvx def - /LMID [ BR XDIST 0 PW2 sub ldiagpadd ] cvx def - UMID - 0 ysize 0.5 mul PW2 add - 0 ysize 0.5 mul PW2 sub - LMID - } - { - /XDIST [ BRAD dup mul PW2 dup mul sub sqrt ] cvx def - /UMIDU [ BR XDIST PW2 pathgap 0.5 mul add ldiagpadd ] cvx def - /UMIDL [ 0 pathwidth UMIDU ldiagpsub ] cvx def - /LMIDL [ BR XDIST 0 PW2 sub pathgap 0.5 mul sub ldiagpadd ] cvx def - /LMIDU [ 0 pathwidth LMIDL ldiagpadd ] cvx def - UMIDU - 0 UMIDU exch pop - 0 UMIDL exch pop - UMIDL - LMIDU - 0 LMIDU exch pop - 0 LMIDL exch pop - LMIDL - } ifelse - [BR clockwise] - 0 0 -} def - -% shape and labels of the @ManyArrowHead symbol -% <pathwidth> ldiagmanyarrowhead - -/ldiagmanyarrowhead -{ - /pathwidth exch def - /LL [ 0 ysize 2 div pathwidth 2 div sub ] cvx def - /LU [ 0 ysize 2 div pathwidth 2 div add ] cvx def - LL - xsize 0 - xsize pathwidth - LU - LL - [] - LL - xsize LL exch pop - xsize LU exch pop - LU - LL - [] - LL - xsize ysize pathwidth sub - xsize ysize - LU - LL -} def - -end -%%EndResource diff --git a/include/include/doc b/include/include/doc deleted file mode 100644 index fca8d6a..0000000 --- a/include/include/doc +++ /dev/null @@ -1,466 +0,0 @@ -############################################################################### -# # -# Lout setup file for ordinary documents # -# # -# Jeffrey H. Kingston # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude commands for standard packages. # -# # -############################################################################### - - @SysInclude { langdefs } # language definitions - @SysInclude { bsf } # BasicSetup package - @SysInclude { dsf } # DocumentSetup package - @SysInclude { docf } # OrdinarySetup extension - - -############################################################################### -# # -# @Include command for reading personal definitions from current directory. # -# # -############################################################################### - - @Include { mydefs } - - -############################################################################### -# # -# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @BasicSetup - # @InitialFont { Times Base 12p } # initial font - # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}} - # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent - # @InitialSpace { lout } # initial space style - # @InitialLanguage { English } # initial language - # @InitialColour { black } # initial colour - # @InitialBackgroundColour { white } # initial background colour - # @OptimizePages { No } # optimize page breaks? - # @HeadingFont { Bold } # font for @Heading - # @FixedWidthFont { Courier Base -1p } # font for @F - # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs - # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP - # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays - # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent - # @DefaultIndent { 0.5rt } # @Display indent - # @DisplayNumStyle { (num) } # style of display numbers - # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent - # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent - # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists - # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items - # @ListIndent { 0s } # indent of list items - # @ListRightIndent { 0s } # right indent of list items - # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags - # @ListLabelRight { No } # right-adjust list labels - # @ListLabelRightGap { 2s } # gap when right-adjusting - # @ListFont { } # font of list items - # @ListBreak { } # break style of list items - # @NumberSeparator { . } # separates nums like 2.3.7 - # @CrossLinkFormat { @Body } # format of cross links - # @ExternalLinkFormat { @Body } # format of external links -} - - -############################################################################### -# # -# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @DocumentSetup - # @PageType { A4 @OrIfPlain Other} # page type (width, height) - # @PageWidth { 80s } # page width if type Other - # @PageHeight { 66f } # page height if type Other - # @PageOrientation { Portrait } # Portrait, Landscape, etc. - # @PageBackground { } # background of each page - # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages - # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages - # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages - # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages - # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages - # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages - # @OddLeftBodyMargin { 0c } # extra margin for page body - # @OddRightBodyMargin { 0c } # extra margin for page body - # @EvenLeftBodyMargin { 0c } # extra margin for page body - # @EvenRightBodyMargin{ 0c } # extra margin for page body - # @PageBoxType { None } # None Box CurveBox ShadowBox - # @PageBoxMargin { 1.00c } # page box margin - # @PageBoxLineWidth { } # page box line thickness - # @PageBoxPaint { none } # page box paint - # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox - # @PageEnclose { @Body } # enclose every page in this - # @ColumnNumber { 1 } # number of columns (1 to 10) - # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap - - # @FigureLocation { PageTop } # default figure location - # @FigureFormat { @CC @Body } # default figure format - # @FigureWord { figure } # "Figure" word else anything - # @FigureNumbers { Arabic } # method of numbering figures - # @FigureCaptionPos { Below } # Above or Below - # @FigureCaptionFont { -2p } # figure caption font - # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break - # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFigureContents { No } # list of figures at start - - # @TableLocation { PageTop } # default table location - # @TableFormat { @CC @Body } # default table format - # @TableWord { table } # "Table" word else anything - # @TableNumbers { Arabic } # method of numbering tables - # @TableCaptionPos { Below } # Above or Below - # @TableCaptionFont { -2p } # table caption font - # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break - # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeTableContents { No } # list of tables at start - - # @FloaterLocation { PageTop } # default floater location - # @FloaterFormat { @CC @Body } # default floater format - # @FloaterWord { floater } # "Floater" word else anything - # @FloaterNumbers { Arabic } # method of numbering floaters - # @FloaterCaptionPos { Below } # Above or Below - # @FloaterCaptionFont { -2p } # Floater caption font - # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break - # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFloaterContents{ No } # list of floater at start - - # @MakeContents { No } # make contents? Yes or No - # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry - # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry - # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry - # @ContentsFont { Bold } # font for major entry - # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry - # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry - # @ContentsFormat { number @DotSep title } # contents entry format - # @ContentsLeader { .. } # leader symbol in contents - # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders - # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width - - # @MakeReferences { Yes } # make references? Yes or No - # @RefCiteStyle { [cite] } # citation style - # @RefCiteLabels { @RefNum } # citation items - # @RefNumbers { Arabic } # reference numbers - # @RefListFormat { Labels } # NoLabels, Labels, etc. - # @RefListLabels { [@RefNum] } # ref list label format - # @RefListTitle { references } # title of reference list - # @ChapRefListTitle { references } # title of chapter ref list - # @RefListIndent { 0s } # indent to left of labels - # @RefListRightIndent { 0s } # indent to right of items - # @RefListGap { @ListGap } # gap between ref list items - # @RefListFont { } # font used in reference list - # @RefListBreak { } # break style of ref list - # @RefListLabelWidth { @ListLabelWidth } # Labels column width - # @RefListSortKey { @Tag } # sorting key - - # @MakeGlossary { No } # make glossary? Yes or No - # @GlossaryText { @Null } # glossary initial text - # @GlossaryFont { } # glossary entries font - # @GlossaryBreak { } # glossary entries break - # @GlossaryFormat { +3p @Font @S @Name # glossary entries format - # @Right @I { @Word&&page @PageNum } - # @DP @RawIndentedDisplay @Body } - # @GlossaryGap { @DisplayGap } # gap between glossary entries - # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) - # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap - # @InGlossaryFont { smallcaps } # font for @InGlossary - # @InGlossaryFormat { @Body } # format for @InGlossary - - # @MakeIndex { No } # make index? Yes or No - # @IndexText { @Null } # index initial text - # @IndexFont { } # index entries font - # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexFormat { @Body } # @Index format - # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format - # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format - # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexTypeMain { @B @PageNum } # Main pagenum format - # @IndexTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexRangeFormat { @From--@To } # index page range format - # @IndexColumnNumber { 2 } # index columns (1 to 10) - # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap - # @IndexCtd { Yes } # include (ctd.) lines - # @IndexCtdWord { continued } # "ctd." in current lang. - # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexSpacerAbove { 2v } # space above index spacer - # @IndexSpacerBelow { 1v } # space below index spacer - # @IndexSpacerFont { +3p } # font of index spacer - # @IndexSpacerFormat { @Body } # format of index spacer - - # @MakeIndexA { No } # make index A? Yes or No - # @IndexAText { @Null } # index A initial text - # @IndexAFont { } # index A entries font - # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexAFormat { @Body } # @IndexA format - # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format - # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format - # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexATypeMain { @B @PageNum } # Main pagenum format - # @IndexATypeSpecial { @I @PageNum } # Special pagenum format - # @IndexARangeFormat { @From--@To } # index page range format - # @IndexAColumnNumber { 2 } # index A columns (1 to 10) - # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap - # @IndexACtd { Yes } # include (ctd.) lines - # @IndexACtdWord { continued } # "ctd." in current lang. - # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexASpacerAbove { 2v } # space above index A spacer - # @IndexASpacerBelow { 1v } # space below index A spacer - # @IndexASpacerFont { +3p } # font of index A spacer - # @IndexASpacerFormat { @Body } # format of index A spacer - - # @MakeIndexB { No } # make index B? Yes or No - # @IndexBText { @Null } # index B initial text - # @IndexBFont { } # index B entries font - # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexBFormat { @Body } # @IndexB format - # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format - # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format - # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexBTypeMain { @B @PageNum } # Main pagenum format - # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexBRangeFormat { @From--@To } # index page range format - # @IndexBColumnNumber { 2 } # index B columns (1 to 10) - # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap - # @IndexBCtd { Yes } # include (ctd.) lines - # @IndexBCtdWord { continued } # "ctd." in current lang. - # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexBSpacerAbove { 2v } # space above index B spacer - # @IndexBSpacerBelow { 1v } # space below index B spacer - # @IndexBSpacerFont { +3p } # font of index B spacer - # @IndexBSpacerFormat { @Body } # format of index B spacer - - # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures - # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text - - # @FootNoteNumbers { Arabic } # footnote numbers - # @FootNoteThrough { No } # numbered through chapter? - # @FootNoteLocation { ColFoot } # where the footnote appears - # @FootNoteFont { 0.80f } # font for footnotes - # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes - # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format - # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line - # @FootAboveGap { @DisplayGap } # gap above footnote line - # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes - # @MarginNoteFont { 0.80f } # font of margin notes - # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes - # @MarginNoteHGap { 0.5c } # horizontal gap to notes - # @MarginNoteVGap { @DisplayGap } # min vertical gap between - # @MarginNoteWidth { 1.50c } # width of margin notes - # @EndNoteNumbers { Arabic } # endnote numbers - # @EndNoteFont { 0.80f } # font of endnotes - # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes - # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format - # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes - - # @TheoremWord { theorem } # "Theorem" word, etc. - # @TheoremTitleFormat { (title) } # only if title present - # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @DefinitionWord { definition } # "Definition" word, etc. - # @DefinitionTitleFormat { (title) } # only if title present - # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ClaimWord { claim } # "Claim" word, etc. - # @ClaimTitleFormat { (title) } # only if title present - # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @PropositionWord { proposition } # "Proposition" word, etc. - # @PropositionTitleFormat { (title) } # only if title present - # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @LemmaWord { lemma } # "Lemma" word, etc. - # @LemmaTitleFormat { (title) } # only if title present - # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @CorollaryWord { corollary } # "Corollary" word, etc. - # @CorollaryTitleFormat { (title) } # only if title present - # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ExampleWord { example } # "Example" word, etc. - # @ExampleTitleFormat { (title) } # only if title present - # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ProofWord { proof } # "Proof" word, etc. - - # @PageHeaders { Simple } # None Simple Titles NoTitles - # @PageNumbers { Arabic } # page numbers - # @FirstPageNumber { 1 } # number of first page - # @IntroPageNumbers { Roman } # intro page numbers - # @IntroFirstPageNumber{ 1 } # number of first intro page - # @StructPageNums { No } # make structured page numbers - # @PageNumberFormat { number } # format of all page numbers - - # @OddTop { @Centre{- @PageNum -} } # Simple page headers - # @OddFoot { @Null } - # @EvenTop { @Centre{- @PageNum -} } - # @EvenFoot { @Null } - # @StartOddTop { @Null } - # @StartOddFoot { @Null } - # @StartEvenTop { @Null } - # @StartEvenFoot { @Null } - # @IntroOddTop { @Null } - # @IntroOddFoot { @Centre @PageNum } - # @IntroEvenTop { @Null } - # @IntroEvenFoot { @Centre @PageNum } - # @IntroStartOddTop { @Null } - # @IntroStartOddFoot { @Null } - # @IntroStartEvenTop { @Null } - # @IntroStartEvenFoot { @Null } - - # Titles, NoTitles headers - # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum } - # @RunningOddFoot { @Null } - # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} } - # @RunningEvenFoot { @Null } - # @RunningStartOddTop { @Null } - # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum } - # @RunningStartEvenTop { @Null } - # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum } - # @RunningIntroOddTop { @Null } - # @RunningIntroOddFoot { @Right @PageNum } - # @RunningIntroEvenTop { @Null } - # @RunningIntroEvenFoot { @PageNum } - # @RunningIntroStartOddTop { @Null } - # @RunningIntroStartOddFoot { @Null } - # @RunningIntroStartEvenTop { @Null } - # @RunningIntroStartEvenFoot { @Null } -} - - -############################################################################### -# # -# The @OrdinarySetup @Use clause - options specific to ordinary documents. # -# # -############################################################################### - -@Use { @OrdinarySetup - # @IndexWord { index } # word for "Index" word etc. - # @IndexAWord { index } # word for "Index" (A) - # @IndexBWord { index } # word for "Index" (B) - # @AppendixWord { appendix } # word for "Appendix" - # @SectionNumbers { Arabic } # kind of section numbers - # @FirstSectionNumber { 1 } # first section num (Arabic) - # @SubSectionNumbers { Arabic } # kind of subsection numbers - # @FirstSubSectionNumber { 1 } # first subsect num (Arabic) - # @SubSubSectionNumbers { Arabic } # kind of sub-subsect numbers - # @FirstSubSubSectionNumber { 1 } # first subsub. num (Arabic) - # @AppendixNumbers { UCAlpha } # kind of appendix numbers - # @FirstAppendixNumber { 1 } # first appendix num (Arabic) - # @SubAppendixNumbers { Arabic } # kind of subappendix numbers - # @FirstSubAppendixNumber { 1 } # first sub-app. num (Arabic) - # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers - # @FirstSubSubAppendixNumber { 1 } # first sub-sub. num (Arabic) - # @SectionHeadingFont { Bold } # section head font - # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break - # @SectionHeadingFormat { number @DotSep title } # section head fmt - # @SubSectionHeadingFont { Bold } # subsect head font - # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subsect head break - # @SubSectionHeadingFormat { number @DotSep title } # subsect head fmt - # @SubSubSectionHeadingFont { Slope } # sub-ss. head font - # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-ss. head break - # @SubSubSectionHeadingFormat { number @DotSep title } # sub-ss. head fmt - # @AppendixHeadingFont { Bold } # appendix head font - # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break - # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt - # @SubAppendixHeadingFont { Bold } # subapp. head font - # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break - # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head format - # @SubSubAppendixHeadingFont { Slope } # sub-sa. head font - # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-sa. head break - # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-sa. head fmt - # @ReferencesHeadingFont { Bold } # refs head font - # @ReferencesHeadingBreak { ragged 1.2fx nohyphen } # refs head break - # @ReferencesHeadingFormat { title } # refs head format - # @IndexHeadingFont { Bold } # index head font - # @IndexHeadingBreak { ragged 1.2fx nohyphen } # index head break - # @IndexHeadingFormat { title } # index head format - # @IndexAHeadingFont { Bold } # index A head font - # @IndexAHeadingBreak { ragged 1.2fx nohyphen } # index A head break - # @IndexAHeadingFormat { title } # index A head fmt - # @IndexBHeadingFont { Bold } # index B head font - # @IndexBHeadingBreak { ragged 1.2fx nohyphen } # index B head break - # @IndexBHeadingFormat { title } # index B head fmt - # @SectionGap { 2.0v @OrIfPlain 3f } # between sections - # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects - # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs. - # @AppendixGap { 2.0v @OrIfPlain 3f } # between appendices - # @SubAppendixGap { 1.5v @OrIfPlain 2f } # between subappendices - # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps - # @SectionInContents { Yes } # add sections to contents - # @SubSectionInContents { Yes } # add subsections to contents - # @SubSubSectionInContents { No } # add sub-subsects to contents - # @AppendixInContents { Yes } # add appendices to contents - # @SubAppendixInContents { Yes } # add subappendices to contents - # @SubSubAppendixInContents { No } # add sub-subapps to contents - # @ReferencesInContents { Yes } # add ref. section to contents - # @IndexInContents { Yes } # add index to contents - # @IndexAInContents { Yes } # add index A to contents - # @IndexBInContents { Yes } # add index B to contents - # @SectionContentsIndent { 0f } # contents indent of sections - # @SubSectionContentsIndent { 3f } # contents indent of subsections - # @SubSubSectionContentsIndent{ 6f } # contents indent of sub-subsections - # @AppendixContentsIndent { 0f } # contents indent of appendices - # @SubAppendixContentsIndent { 3f } # contents indent of sub-appendices - # @SubSubAppendixContentsIndent { 6f } # contents indent of sub-subappendices - # @ReferencesContentsIndent { 0f } # contents indent of references - # @IndexContentsIndent { 0f } # contents indent of index - # @IndexAContentsIndent { 0f } # contents indent of index A - # @IndexBContentsIndent { 0f } # contents indent of index B - # @SectionNumInTheorems { No } # theorem num has section num - # @SubSectionNumInTheorems { No } # theorem num has subsect num - # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num - # @AppendixNumInTheorems { No } # theorem num has appendix num - # @SubAppendixNumInTheorems { No } # theorem num has sub-app num - # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num - # @SectionNumInDisplays { Yes } # display num has section num - # @SubSectionNumInDisplays { No } # display num has subsect num - # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num - # @AppendixNumInDisplays { Yes } # display num has appendix num - # @SubAppendixNumInDisplays { Yes } # display num has sub-app num - # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num - # @SectionNumInFigures { No } # figure num has section num - # @SubSectionNumInFigures { No } # figure num has subsect num - # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num - # @AppendixNumInFigures { No } # figure num has appendix num - # @SubAppendixNumInFigures { No } # figure num has sub-app num - # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num - # @SectionNumInTables { No } # table num has section num - # @SubSectionNumInTables { No } # table num has subsect num - # @SubSubSectionNumInTables { No } # table num has sub-ss. num - # @AppendixNumInTables { No } # table num has appendix num - # @SubAppendixNumInTables { No } # table num has sub-app num - # @SubSubAppendixNumInTables { No } # table num has sub-sa. num - # @SectionNumInFloaters { No } # floater num has section num - # @SubSectionNumInFloaters { No } # floater num has subsect num - # @SubSubSectionNumInFloaters { No } # floater num has sub-ss. num - # @AppendixNumInFloaters { No } # floater num has appendix num - # @SubAppendixNumInFloaters { No } # floater num has sub-app num - # @SubSubAppendixNumInFloaters{ No } # floater num has sub-sa. num - # @SectionNumInRunners { Yes } # runners have section num - # @SubSectionNumInRunners { No } # runners have subsect num - # @SubSubSectionNumInRunners { No } # runners have sub-ss. num - # @AppendixNumInRunners { Yes } # runners have appendix num - # @SubAppendixNumInRunners { No } # runners have sub-app num - # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num - # @SectionPrefix { } # for structured page nums - # @AppendixPrefix { } # for structured page nums - # @ReferencesPrefix { } # for structured page nums - # @IndexPrefix { } # for structured page nums - # @IndexAPrefix { } # for structured page nums - # @IndexBPrefix { } # for structured page nums -} - - -############################################################################### -# # -# @Database (and @SysDatabase) clauses go here. # -# # -############################################################################### - -@SysDatabase @FontDef { fontdefs } # font definitions -@SysDatabase @RefStyle { refstyle } # reference printing styles diff --git a/include/include/docf b/include/include/docf deleted file mode 100644 index a1e64a8..0000000 --- a/include/include/docf +++ /dev/null @@ -1,845 +0,0 @@ - -########################################################################### -# # -# @OrdinarySetup extension to @DocumentSetup. # -# # -# Jeffrey H. Kingston # -# # -# This package extends DocumentSetup for ordinary documents. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -########################################################################### - -extend @BasicSetup @DocumentSetup -export @Doc @Document @Text -def @OrdinarySetup - - named @IndexWord { index } - named @IndexAWord { index } - named @IndexBWord { index } - named @AppendixWord { appendix } - - named @SectionNumbers { Arabic } - named @FirstSectionNumber { 1 } - named @SubSectionNumbers { Arabic } - named @FirstSubSectionNumber { 1 } - named @SubSubSectionNumbers { Arabic } - named @FirstSubSubSectionNumber { 1 } - named @AppendixNumbers { UCAlpha } - named @FirstAppendixNumber { 1 } - named @SubAppendixNumbers { Arabic } - named @FirstSubAppendixNumber { 1 } - named @SubSubAppendixNumbers { Arabic } - named @FirstSubSubAppendixNumber { 1 } - - named @SectionHeadingFont { Bold } - named @SectionHeadingBreak { ragged 1.2fx nohyphen } - named @SectionHeadingFormat - left number right title { number @Sep title } - - named @SubSectionHeadingFont { Bold } - named @SubSectionHeadingBreak { ragged 1.2fx nohyphen } - named @SubSectionHeadingFormat - left number right title { number @Sep title } - - named @SubSubSectionHeadingFont { Slope } - named @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } - named @SubSubSectionHeadingFormat - left number right title { number @Sep title } - - named @AppendixHeadingFont { Bold } - named @AppendixHeadingBreak { ragged 1.2fx nohyphen } - named @AppendixHeadingFormat - left number right title { number @Sep title } - - named @SubAppendixHeadingFont { Bold } - named @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } - named @SubAppendixHeadingFormat - left number right title { number @Sep title } - - named @SubSubAppendixHeadingFont { Slope } - named @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } - named @SubSubAppendixHeadingFormat - left number right title { number @Sep title } - - named @ReferencesHeadingFont { Bold } - named @ReferencesHeadingBreak { ragged 1.2fx nohyphen } - named @ReferencesHeadingFormat - right title { title } - - named @IndexHeadingFont { Bold } - named @IndexHeadingBreak { ragged 1.2fx nohyphen } - named @IndexHeadingFormat - right title { title } - - named @IndexAHeadingFont { Bold } - named @IndexAHeadingBreak { ragged 1.2fx nohyphen } - named @IndexAHeadingFormat - right title { title } - - named @IndexBHeadingFont { Bold } - named @IndexBHeadingBreak { ragged 1.2fx nohyphen } - named @IndexBHeadingFormat - right title { title } - - named @SectionGap { 2.0v @OrIfPlain 3f } - named @SubSectionGap { 1.5v @OrIfPlain 2f } - named @SubSubSectionGap { 1.5v @OrIfPlain 2f } - named @AppendixGap { 2.0v @OrIfPlain 3f } - named @SubAppendixGap { 1.5v @OrIfPlain 2f } - named @SubSubAppendixGap { 1.5v @OrIfPlain 2f } - - named @SectionInContents { Yes } - named @SubSectionInContents { Yes } - named @SubSubSectionInContents { No } - named @AppendixInContents { Yes } - named @SubAppendixInContents { Yes } - named @SubSubAppendixInContents { No } - named @ReferencesInContents { Yes } - named @IndexInContents { Yes } - named @IndexAInContents { Yes } - named @IndexBInContents { Yes } - - named @SectionContentsIndent { 0f } - named @SubSectionContentsIndent { 3f } - named @SubSubSectionContentsIndent { 6f } - named @AppendixContentsIndent { 0f } - named @SubAppendixContentsIndent { 3f } - named @SubSubAppendixContentsIndent { 6f } - named @ReferencesContentsIndent { 0f } - named @IndexContentsIndent { 0f } - named @IndexAContentsIndent { 0f } - named @IndexBContentsIndent { 0f } - - named @SectionNumInTheorems { No } - named @SubSectionNumInTheorems { No } - named @SubSubSectionNumInTheorems { No } - named @AppendixNumInTheorems { No } - named @SubAppendixNumInTheorems { No } - named @SubSubAppendixNumInTheorems { No } - - named @SectionNumInDisplays { Yes } - named @SubSectionNumInDisplays { No } - named @SubSubSectionNumInDisplays { No } - named @AppendixNumInDisplays { Yes } - named @SubAppendixNumInDisplays { No } - named @SubSubAppendixNumInDisplays { No } - - named @SectionNumInFigures { No } - named @SubSectionNumInFigures { No } - named @SubSubSectionNumInFigures { No } - named @AppendixNumInFigures { No } - named @SubAppendixNumInFigures { No } - named @SubSubAppendixNumInFigures { No } - - named @SectionNumInTables { No } - named @SubSectionNumInTables { No } - named @SubSubSectionNumInTables { No } - named @AppendixNumInTables { No } - named @SubAppendixNumInTables { No } - named @SubSubAppendixNumInTables { No } - - named @SectionNumInFloaters { No } - named @SubSectionNumInFloaters { No } - named @SubSubSectionNumInFloaters { No } - named @AppendixNumInFloaters { No } - named @SubAppendixNumInFloaters { No } - named @SubSubAppendixNumInFloaters { No } - - named @SectionNumInRunners { Yes } - named @SubSectionNumInRunners { No } - named @SubSubSectionNumInRunners { No } - named @AppendixNumInRunners { Yes } - named @SubAppendixNumInRunners { No } - named @SubSubAppendixNumInRunners { No } - - named @SectionPrefix { } - named @AppendixPrefix { } - named @ReferencesPrefix { } - named @IndexPrefix { } - named @IndexAPrefix { } - named @IndexBPrefix { } -@Begin - - ####################################################################### - # # - # Lists of sections, sub(-sub)sections, appendices, etc. # - # # - ####################################################################### - - def @TextPlace { @Galley } - - export num - def @SectionList named @Tag {} right num - { - @Galley - //@SectionGap @SectionList @Next num - } - - export num - def @SubSectionList named @Tag {} right num - { - @Galley - //@SubSectionGap @SubSectionList @Next num - } - - export num - def @SubSubSectionList named @Tag {} right num - { - @Galley - //@SubSubSectionGap @SubSubSectionList @Next num - } - - export num - def @AppendixList named @Tag {} right num - { - @Galley - //@AppendixGap @AppendixList @Next num - } - - export num - def @SubAppendixList named @Tag {} right num - { - @Galley - //@SubAppendixGap @SubAppendixList @Next num - } - - export num - def @SubSubAppendixList named @Tag {} right num - { - @Galley - //@SubSubAppendixGap @SubSubAppendixList @Next num - } - - - ####################################################################### - # # - # @SendFull - send full-width text. # - # # - ####################################################################### - - def @SendFull force into { @FullPlace&&following } - right x - { - x - } - - - ####################################################################### - # # - # Document. # - # # - ####################################################################### - - def @Document - named @InitialFont { @InitialFont } - named @InitialBreak { @InitialBreak } - named @InitialOutdent { @InitialOutdent } - named @InitialSpace { @InitialSpace } - named @InitialLanguage { @InitialLanguage } - named @PageOrientation { @PageOrientation } - named @PageHeaders { @PageHeaders } - named @ColumnNumber { @ColumnNumber } - named @FirstPageNumber { @FirstPageNumber } - named @OptimizePages { @OptimizePages } - named @Unpaginated { No } - named @IndexText { @IndexText } - named @IndexAText { @IndexAText } - named @IndexBText { @IndexBText } - { - def @ReferencesPart - named @Tag {} - { - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { @RefHeading @RefListTitle } - headingfont { @ReferencesHeadingFont } - headingbreak { @ReferencesHeadingBreak } - headingformat { @ReferencesHeadingFormat @Body } - incontents { @ReferencesInContents } - contentsindent { @ReferencesContentsIndent } - pnprefix { @ReferencesPrefix } - majornum {} - majortitle {} - minornum {} - minortitle { @RefHeading @RefListTitle } - inrunners { Yes } - sendheader { @Body } - aboveheadinggap { 0f } - { //@RefListGap @ReferencesSection } - - } - - def @IndexPart - named @Tag {} - { - - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexWord } - @MinorNum {} - @MinorTitle {} - @Owner { @Tag } - @Prefix { @IndexPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexWord } - headingfont { @IndexHeadingFont } - headingbreak { @IndexHeadingBreak } - headingformat { @IndexHeadingFormat @Body } - headingtext { @IndexText } - incontents { @IndexInContents } - contentsindent { @IndexContentsIndent } - pnprefix { @IndexPrefix } - inrunners { Yes } - majornum {} - majortitle {} - minornum {} - minortitle { index @WordVal @IndexWord } - sendheader { @SendFull @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexSection @Run - - } - - def @IndexAPart - named @Tag {} - { - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexAWord } - @MinorNum {} - @MinorTitle {} - @Owner { @Tag } - @Prefix { @IndexAPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexAWord } - headingfont { @IndexAHeadingFont } - headingbreak { @IndexAHeadingBreak } - headingformat { @IndexAHeadingFormat @Body } - headingtext { @IndexAText } - incontents { @IndexAInContents } - contentsindent { @IndexAContentsIndent } - pnprefix { @IndexAPrefix } - inrunners { Yes } - majornum {} - majortitle {} - minornum {} - minortitle { index @WordVal @IndexAWord } - sendheader { @SendFull @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexASection @Run - - } - - def @IndexBPart - named @Tag {} - { - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexBWord } - @MinorNum {} - @MinorTitle {} - @Owner { @Tag } - @Prefix { @IndexBPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexBWord } - headingfont { @IndexBHeadingFont } - headingbreak { @IndexBHeadingBreak } - headingformat { @IndexBHeadingFormat @Body } - headingtext { @IndexBText } - incontents { @IndexBInContents } - contentsindent { @IndexBContentsIndent } - pnprefix { @IndexBPrefix } - inrunners { Yes } - majornum {} - majortitle {} - minornum {} - minortitle { index @WordVal @IndexBWord } - sendheader { @SendFull @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexBSection @Run - - } - - def @DocumentBody force into { @ColPlace&&preceding } - named @Optimize { @OptimizePages } - { - # this whole comment is now obsolete: - # It's important that the first component of @DocumentBody be - # indefinite. If it was definite, then @DocumentBody would - # attach immediately to the first page. This would prevent - # @FullWidth from attaching to that page, with the result that - # a document starting with @FullWidth would start on page 2! - - // @FootNoteThrough @Do @BeginFootNoteCounter - // @TextPlace - //@SectionGap @EndFigureList - //@SectionGap @EndNoteList 1 - //@SectionGap @MakeReferences @Do @ReferencesPart - // @MakeIndexA @Do @IndexAPart - // @MakeIndexB @Do @IndexBPart - // @MakeIndex @Do @IndexPart - // NonStart @Runner - } - - @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break - @InitialLanguage @Language @InitialSpace @Space - { @ColourCommand @InitialColour } @SetColour - { - Yes @BeginAllCounters {} - // Yes @BeginDisplayCounter {} - // Yes @BeginFigureCounter {} - // Yes @BeginTableCounter {} - // Yes @BeginFloaterCounter {} - // @BackEnd @Case { - - PlainText @Yield { - @Unpaginated @Case { - - { Yes yes } @Yield { - @ContinuousPageList - @Orient { @PageOrientation } - } - - { No no } @Yield { - @PageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @PageOrientation } - extra { Yes } - @FirstPageNumber - } - } - } - - else @Yield { - @PageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @PageOrientation } - extra { Yes } - @FirstPageNumber - } - } - // @DocumentBody - } - } - - macro @Doc { @Document // } - - - ####################################################################### - # # - # @Text containing sections, appendices, etc. # - # # - ####################################################################### - - export @ContentsGoesHere @FullWidth - @BeginSections @EndSections @Section - @BeginAppendices @EndAppendices @Appendix - def @Text force into { @TextPlace&&preceding } - body @Body - { - - def @ContentsGoesHere { @ContentsSection } - - export @ContentsGoesHere - def @FullWidth body @Body - { - def @ContentsGoesHere {} - - @SendFull { Start @Runner // @Body } - & NonStart @Runner & &2.1b & - } - - def @EndSectionsPlace { @Galley } - - def @EndSections force into { @EndSectionsPlace&&preceding } - {} - - macro @BeginSections - { //@SectionGap @SectionList @FirstSectionNumber - // @EndSectionsPlace // - } - - export @BeginSubSections @EndSubSections @SubSection @Title - def @Section force into { @SectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage {} - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSectionsPlace { @Galley } - - def @EndSubSections force into { @EndSubSectionsPlace&&preceding } - {} - - macro @BeginSubSections - { //@SubSectionGap @SubSectionList @FirstSubSectionNumber - // @EndSubSectionsPlace // - } - - def @SectionShortNum - { - @SectionNumbers @Then { - @BypassNumber @Dft { - @SectionNumbers @Num @SectionList&&@Tag @Open { num } - } - } - } - - export @BeginSubSubSections @EndSubSubSections @SubSubSection - def @SubSection force into { @SubSectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSubSectionsPlace { @Galley } - - def @EndSubSubSections force into - { @EndSubSubSectionsPlace&&preceding } - {} - - macro @BeginSubSubSections - { //@SubSubSectionGap - @SubSubSectionList @FirstSubSubSectionNumber - // @EndSubSubSectionsPlace // - } - - def @SubSectionShortNum - { - @SubSectionNumbers @Then { - @BypassNumber @Dft { - @SectionShortNum @Join @SubSectionNumbers @Num - { @SubSectionList&&@Tag @Open { num } } - } - } - } - - def @SubSubSection force into { @SubSubSectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSubSectionHeadingFont } - headingbreak { @SubSubSectionHeadingBreak } - headingformat { @Num @SubSubSectionHeadingFormat @Body } - incontents { @SubSubSectionInContents } - contentsindent { @SubSubSectionContentsIndent } - numbers { @SubSubSectionNumbers } - attachnum { @SubSubSectionList&&preceding @Tagged @Tag } - retrievenum { @SubSubSectionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SubSectionShortNum } - majornum {} - majortitle {} - intheorems { @SubSubSectionNumInTheorems } - indisplays { @SubSubSectionNumInDisplays } - infigures { @SubSubSectionNumInFigures } - intables { @SubSubSectionNumInTables } - infloaters { @SubSubSectionNumInFloaters } - inrunners { @SubSubSectionNumInRunners } - newpage { @NewPage } - @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSectionHeadingFont } - headingbreak { @SubSectionHeadingBreak } - headingformat { @Num @SubSectionHeadingFormat @Body } - incontents { @SubSectionInContents } - contentsindent { @SubSectionContentsIndent } - numbers { @SubSectionNumbers } - attachnum { @SubSectionList&&preceding @Tagged @Tag } - retrievenum { @SubSectionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SectionShortNum } - majornum {} - majortitle {} - intheorems { @SubSectionNumInTheorems } - indisplays { @SubSectionNumInDisplays } - infigures { @SubSectionNumInFigures } - intables { @SubSectionNumInTables } - infloaters { @SubSectionNumInFloaters } - inrunners { @SubSectionNumInRunners } - newpage { @NewPage } - @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SectionHeadingFont } - headingbreak { @SectionHeadingBreak } - headingformat { @Num @SectionHeadingFormat @Body } - incontents { @SectionInContents } - contentsindent { @SectionContentsIndent } - numbers { @SectionNumbers } - attachnum { @SectionList&&preceding @Tagged @Tag } - retrievenum { @SectionList&&@Tag @Open { num } } - pnprefix { @SectionPrefix } - majornum {} - majortitle {} - bypassnumber { @BypassNumber } - intheorems { @SectionNumInTheorems } - indisplays { @SectionNumInDisplays } - infigures { @SectionNumInFigures } - intables { @SectionNumInTables } - infloaters { @SectionNumInFloaters } - inrunners { @SectionNumInRunners } - newpage { @NewPage } - @Body - - } - - def @EndAppendicesPlace { @Galley } - - def @EndAppendices force into { @EndAppendicesPlace&&preceding } - {} - - macro @BeginAppendices - { //@AppendixGap @AppendixList @FirstAppendixNumber - // @EndAppendicesPlace // - } - - export @BeginSubAppendices @EndSubAppendices @SubAppendix - def @Appendix force into { @AppendixList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage {} - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubAppendicesPlace { @Galley } - - def @EndSubAppendices force into - { @EndSubAppendicesPlace&&preceding } - {} - - macro @BeginSubAppendices - { //@SubAppendixGap @SubAppendixList @FirstSubAppendixNumber - // @EndSubAppendicesPlace // - } - - def @AppendixShortNum - { - @AppendixNumbers @Then { - @BypassNumber @Dft { - @AppendixNumbers @Num @AppendixList&&@Tag @Open { num } - } - } - } - - export @BeginSubSubAppendices @EndSubSubAppendices @SubSubAppendix - def @SubAppendix force into { @SubAppendixList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSubAppendicesPlace { @Galley } - - def @EndSubSubAppendices force into - { @EndSubSubAppendicesPlace&&preceding } - {} - - macro @BeginSubSubAppendices - { //@SubSubAppendixGap - @SubSubAppendixList @FirstSubSubAppendixNumber - // @EndSubSubAppendicesPlace // - } - - def @SubAppendixShortNum - { - @SubAppendixNumbers @Then { - @BypassNumber @Dft { - @AppendixShortNum @Join @SubAppendixNumbers @Num - { @SubAppendixList&&@Tag @Open { num } } - } - } - } - - def @SubSubAppendix force into {@SubSubAppendixList&&preceding} - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSubAppendixHeadingFont } - headingbreak { @SubSubAppendixHeadingBreak } - headingformat { @Num @SubSubAppendixHeadingFormat @Body } - incontents { @SubSubAppendixInContents } - contentsindent { @SubSubAppendixContentsIndent } - numbers { @SubSubAppendixNumbers } - attachnum { @SubSubAppendixList&&preceding @Tagged @Tag } - retrievenum { @SubSubAppendixList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SubAppendixShortNum } - majornum {} - majortitle {} - intheorems { @SubSubAppendixNumInTheorems } - indisplays { @SubSubAppendixNumInDisplays } - infigures { @SubSubAppendixNumInFigures } - intables { @SubSubAppendixNumInTables } - infloaters { @SubSubAppendixNumInFloaters } - inrunners { @SubSubAppendixNumInRunners } - newpage { @NewPage } - @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubAppendixHeadingFont } - headingbreak { @SubAppendixHeadingBreak } - headingformat { @Num @SubAppendixHeadingFormat @Body } - incontents { @SubAppendixInContents } - contentsindent { @SubAppendixContentsIndent } - numbers { @SubAppendixNumbers } - attachnum { @SubAppendixList&&preceding @Tagged @Tag } - retrievenum { @SubAppendixList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @AppendixShortNum } - majornum {} - majortitle {} - intheorems { @SubAppendixNumInTheorems } - indisplays { @SubAppendixNumInDisplays } - infigures { @SubAppendixNumInFigures } - intables { @SubAppendixNumInTables } - infloaters { @SubAppendixNumInFloaters } - inrunners { @SubAppendixNumInRunners } - newpage { @NewPage } - @Body - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @AppendixHeadingFont } - headingbreak { @AppendixHeadingBreak } - headingformat { @Num @AppendixHeadingFormat @Body } - incontents { @AppendixInContents } - contentsindent { @AppendixContentsIndent } - word { appendix @WordVal @AppendixWord } - numbers { @AppendixNumbers } - attachnum { @AppendixList&&preceding @Tagged @Tag } - retrievenum { @AppendixList&&@Tag @Open { num } } - pnprefix { @AppendixPrefix } - majornum {} - majortitle {} - bypassnumber { @BypassNumber } - intheorems { @AppendixNumInTheorems } - indisplays { @AppendixNumInDisplays } - infigures { @AppendixNumInFigures } - intables { @AppendixNumInTables } - infloaters { @AppendixNumInFloaters } - inrunners { Yes } - newpage { @NewPage } - @Body - - } - - //1.1f - // Start @Runner - // @Body - // NonStart @Runner - - } - -@End @OrdinarySetup diff --git a/include/include/dsf b/include/include/dsf deleted file mode 100644 index 96e115e..0000000 --- a/include/include/dsf +++ /dev/null @@ -1,5426 +0,0 @@ -############################################################################### -# # -# Lout @DocumentSetup package # -# # -# Version 1.0 by Jeffrey H. Kingston, 17 July 1991. # -# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. # -# Version 3.0 by Jeffrey H. Kingston, 19 April 1994. # -# Version 3.03 by Jeffrey H. Kingston, 6 May 1995. # -# Versions 3.04 and 3.05 by Jeffrey H. Kingston, 11 June 1995. # -# Version 3.05 by Jeffrey H. Kingston, 25 July 1995. # -# Version 3.07 by Jeffrey H. Kingston, February 1996. # -# Version 3.10 by Jeffrey H. Kingston, September 1996. # -# Version 3.11 by Jeffrey H. Kingston, December 1996. # -# Version 3.13 by Jeffrey H. Kingston, October 1998. # -# Version 3.16 by Jeffrey H. Kingston, May 1999. # -# Version 3.17 by Jeffrey H. Kingston, September 1999. # -# Version 3.21 by Jeffrey H. Kingston, May 2000. # -# Minor changes in later versions undated. # -# # -# This Lout package contains the general definitions used by all types of # -# documents. It needs to be extended (see docf, reportf, bookf, slidesf, # -# etc.) with definitions for particular document types. Consult "A User's # -# Guide to the Lout Document Formatting System" for user information. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -extend @BasicSetup - -export - - @Runner - - @Figure @Table @Floater - @FootNote @AnotherFootNote @EndNote - @LeftNote @RightNote @OuterNote @InnerNote # @Place - @Theorem @Proof @EndProof - @Definition @Claim @Proposition @Lemma @Corollary @Example - @Reference @RefStyle @RefPrint - @Ref @NoRef @ChapRef @NoChapRef - @Cite @NoCite @ChapCite @NoChapCite - - @Glossary @InGlossary - - @IndexA @SubIndexA @SubSubIndexA - @RawIndexA @RawSubIndexA @RawSubSubIndexA - @IndexABlanks @IndexASpacer @InitialIndexASpacer @IndexALetters - - @IndexB @SubIndexB @SubSubIndexB - @RawIndexB @RawSubIndexB @RawSubSubIndexB - @IndexBBlanks @IndexBSpacer @InitialIndexBSpacer @IndexBLetters - - @Index @SubIndex @SubSubIndex - @RawIndex @RawSubIndex @RawSubSubIndex - @IndexBlanks @IndexSpacer @InitialIndexSpacer @IndexLetters - - @BypassContentsEntry @BypassMajorContentsEntry - @BypassFigureContentsEntry @BypassTableContentsEntry @BypassFloaterContentsEntry - @BypassReference @BypassChapReference - @BypassBeginIndex @BypassRawIndex @BypassEndIndex - @BypassBeginIndexA @BypassRawIndexA @BypassEndIndexA - @BypassBeginIndexB @BypassRawIndexB @BypassEndIndexB - - -def @DocumentSetup - named @PageType { A4 @OrIfPlain Other} # page type (width, height) - named @PageWidth { 80s } # page width if type Other - named @PageHeight { 66f } # page height if type Other - named @PageOrientation { Portrait } # Portrait, Landscape, etc. - named @PageBackground { } # background of each page - named @TopMargin { 2.50c @OrIfPlain 6f } # top margin of all pages - named @FootMargin { 2.50c @OrIfPlain 6f } # bottom margin of all pages - named @OddLeftMargin { 2.50c @OrIfPlain 10s } # left margin of odd pages - named @OddRightMargin { 2.50c @OrIfPlain 10s } # right margin of odd pages - named @EvenLeftMargin { 2.50c @OrIfPlain 10s } # left margin of even pages - named @EvenRightMargin { 2.50c @OrIfPlain 10s } # right margin of even pages - named @OddLeftBodyMargin { 0c } # extra margin for page body - named @OddRightBodyMargin { 0c } # extra margin for page body - named @EvenLeftBodyMargin { 0c } # extra margin for page body - named @EvenRightBodyMargin { 0c } # extra margin for page body - named @PageBoxType { None } # None Box CurveBox ShadowBox - named @PageBoxMargin { 1.00c } # page box margin - import @PSLengths named @PageBoxLineWidth - { } # page box line thickness - named @PageBoxPaint { none } # page box paint - named @PageBoxShadow { 0.60c } # shadow margin if ShadowBox - named @PageEnclose right @Body { @Body } # page enclose - named @ColumnNumber { 1 } # number of columns (1 to 10) - named @ColumnGap { 1.00c @OrIfPlain 6s } # column gap - - named @FigureLocation { PageTop } # default figure location - named @FigureFormat - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body - { @CC @Body } # default figure format - named @FigureWord { figure } # "Figure" word else anything - named @FigureNumbers { Arabic } # method of numbering figures - named @FigureCaptionPos { Below } # Above or Below - named @FigureCaptionFont { -2p } # figure caption font - named @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break - named @FigureCaptionFormat named word {} named number {} named caption {} - { {@B { word @NumSep number. &2s }} @Insert caption } - named @MakeFigureContents { No } # list of figures at start - - named @TableLocation { PageTop } # default table location - named @TableFormat - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body - { @CC @Body } # default table format - named @TableWord { table } # "Table" word else anything - named @TableNumbers { Arabic } # method of numbering tables - named @TableCaptionPos { Below } # Above or Below - named @TableCaptionFont { -2p } # figure caption font - named @TableCaptionBreak { adjust hyphen 1.2fx } # figure caption break - named @TableCaptionFormat named word {} named number {} named caption {} - { {@B { word @NumSep number. &2s }} @Insert caption } - named @MakeTableContents { No } # list of tables at start - - named @FloaterLocation { PageTop } # default floater location - named @FloaterFormat - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body - { @CC @Body } # default floater format - named @FloaterWord { floater } # "Floater" word else anything - named @FloaterNumbers { Arabic } # method of numbering floaters - named @FloaterCaptionPos { Below } # Above or Below - named @FloaterCaptionFont { -2p } # figure caption font - named @FloaterCaptionBreak { adjust hyphen 1.2fx } # figure caption break - named @FloaterCaptionFormat named word {} named number {} named caption {} - { {@B { word @NumSep number. &2s }} @Insert caption } - named @MakeFloaterContents { No } # list of floaters at start - - named @MakeContents { No } # make contents? Yes or No - named @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry - named @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry - named @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry - named @ContentsFont { Bold } # font for major entry - named @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above part entry - named @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below part entry - named @ContentsFormat - left number - right title - { number @Sep title } # contents format - named @ContentsLeader { .. } # leader symbol in contents - named @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders - named @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width - - named @MakeReferences { Yes } # make references? Yes or No - named @RefCiteStyle right cite { [cite] } # citation style - named @RefCiteLabels - named @RefNum {} - named @Tag {} - named @Type {} - named @Abstract {} - named @Address {} - named @Annote {} - named @Author {} - named @Day {} - named @Edition {} - named @HowPublished {} - named @InAuthor {} - named @InTitle {} - named @Institution {} - named @Journal {} - named @Keywords {} - named @Label {} - named @Month {} - named @Note {} - named @Number {} - named @Organization {} - named @Page {} - named @Pages {} - named @Pinpoint {} - named @Publisher {} - named @Title {} - named @TitleNote {} - named @TRType {} - named @Volume {} - named @Year {} - { @RefNum } # citation items - named @RefNumbers { Arabic } # reference numbers - - named @RefListFormat { Labels } # NoLabels, Labels, - # DropLabels, IntegrateLabels - named @RefListLabels - named @RefNum {} - named @Tag {} - named @Type {} - named @Abstract {} - named @Address {} - named @Annote {} - named @Author {} - named @Day {} - named @Edition {} - named @HowPublished {} - named @InAuthor {} - named @InTitle {} - named @Institution {} - named @Journal {} - named @Keywords {} - named @Label {} - named @Month {} - named @Note {} - named @Number {} - named @Organization {} - named @Page {} - named @Pages {} - named @Pinpoint {} - named @Publisher {} - named @Title {} - named @TitleNote {} - named @TRType {} - named @Volume {} - named @Year {} - { [@RefNum] } # ref list label format - named @RefListTitle { references } # title of reference list - named @ChapRefListTitle { references } # title of chapter ref list - named @RefListIndent { 0s } # indent to left of labels - named @RefListRightIndent { 0s } # indent to right of items - named @RefListGap { @ListGap } # gap between ref list items - named @RefListFont { } # font used in reference list - named @RefListBreak { } # break style of ref list - named @RefListLabelWidth { @ListLabelWidth } # numeric labels column width - named @RefListSortKey - named @Tag {} - named @Type {} - named @Abstract {} - named @Address {} - named @Annote {} - named @Author {} - named @CiteOrder {} - named @Day {} - named @Edition {} - named @HowPublished {} - named @InAuthor {} - named @InTitle {} - named @Institution {} - named @Journal {} - named @Keywords {} - named @Label {} - named @Month {} - named @Note {} - named @Number {} - named @Organization {} - named @Page {} - named @Pages {} - named @Pinpoint {} - named @Publisher {} - named @Title {} - named @TitleNote {} - named @TRType {} - named @Volume {} - named @Year {} - named ":" { "\037" } - { @Tag } # sorting key - - named @MakeGlossary { No } # make glossary? Yes or No - named @GlossaryText { @Null } # initial glossary text - named @GlossaryFont { } # font for glossary - named @GlossaryBreak { } # break style for glossary - named @GlossaryFormat # format for glossary - named @Name {} - named @PageNum {} - named @Body {} - { +3p @Font @S @Name - @Right @I { @Word&&page @PageNum } - @DP @RawIndentedDisplay @Body } - named @GlossaryGap { @DisplayGap } # gap between glossary items - named @GlossaryColumnNumber { 2 } # glossary columns (1 to 10) - named @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap - named @InGlossaryFont { smallcaps } # font for @InGlossary - named @InGlossaryFormat right @Body { @Body } # format for @InGlossary - - named @MakeIndex { No } # make index? Yes or No - named @IndexText { @Null } # initial index text - named @IndexFont { } # index entries font - named @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index entries break - named @IndexFormat - right @Body { @Body } # @Index format - named @SubIndexFormat - right @Body { {1f @Wide}@Body } # @SubIndex format - named @SubSubIndexFormat - right @Body { {2f @Wide}@Body } # @SubSubIndex format - named @IndexTypeOrdinary - right @PageNum { @PageNum } # ordinary page numbers - named @IndexTypeMain - right @PageNum { @B @PageNum } # main page numbers - named @IndexTypeSpecial - right @PageNum { @I @PageNum } # special page numbers - named @IndexRangeFormat - left @From - right @To { @From--@To } - named @IndexColumnNumber { 2 } # index columns (1 to 10) - named @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap - named @IndexCtd { Yes } # include (ctd.) lines - named @IndexCtdWord { continued } # "ctd." in current lang - named @IndexCtdFormat - left @Body - right @CtdWord - { @Body @I (@CtdWord) } # (ctd.) format - named @IndexSpacerAbove { 2v } # space above index spacer - named @IndexSpacerBelow { 1v } # space below index spacer - named @IndexSpacerFont { +3p } # font of index spacer - named @IndexSpacerFormat - right @Body { @Body } # format of index spacer - - named @MakeIndexA { No } # make index A? Yes or No - named @IndexAText { @Null } # initial index text - named @IndexAFont { } # index A entries font - named @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index A entries break - named @IndexAFormat - right @Body { @Body } # @IndexA format - named @SubIndexAFormat - right @Body { {1f @Wide}@Body } # @SubIndexA format - named @SubSubIndexAFormat - right @Body { {2f @Wide}@Body } # @SubSubIndexA format - named @IndexATypeOrdinary - right @PageNum { @PageNum } # ordinary page numbers - named @IndexATypeMain - right @PageNum { @B @PageNum } # main page numbers - named @IndexATypeSpecial - right @PageNum { @I @PageNum } # special page numbers - named @IndexARangeFormat - left @From - right @To { @From--@To } - named @IndexAColumnNumber { 2 } # index A columns (1 to 10) - named @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap - named @IndexACtd { Yes } # include (ctd.) lines - named @IndexACtdWord { continued } # "ctd." in current lang - named @IndexACtdFormat - left @Body - right @CtdWord - { @Body @I (@CtdWord) } # (ctd.) format - named @IndexASpacerAbove { 2v } # space above index A spacer - named @IndexASpacerBelow { 1v } # space below index A spacer - named @IndexASpacerFont { +3p } # font of index A spacer - named @IndexASpacerFormat - right @Body { @Body } # format of index A spacer - - named @MakeIndexB { No } # make index B? Yes or No - named @IndexBText { @Null } # initial index text - named @IndexBFont { } # index B entries font - named @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index B entries break - named @IndexBFormat - right @Body { @Body } # @IndexB format - named @SubIndexBFormat - right @Body { {1f @Wide}@Body } # @SubIndexB format - named @SubSubIndexBFormat - right @Body { {2f @Wide}@Body } # @SubSubIndexB format - named @IndexBTypeOrdinary - right @PageNum { @PageNum } # ordinary page numbers - named @IndexBTypeMain - right @PageNum { @B @PageNum } # main page numbers - named @IndexBTypeSpecial - right @PageNum { @I @PageNum } # special page numbers - named @IndexBRangeFormat - left @From - right @To { @From--@To } - named @IndexBColumnNumber { 2 } # index B columns (1 to 10) - named @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap - named @IndexBCtd { Yes } # include (ctd.) lines - named @IndexBCtdWord { continued } # "ctd." in current lang - named @IndexBCtdFormat - left @Body - right @CtdWord - { @Body @I (@CtdWord) } # (ctd.) format - named @IndexBSpacerAbove { 2v } # space above index B spacer - named @IndexBSpacerBelow { 1v } # space below index B spacer - named @IndexBSpacerFont { +3p } # font of index B spacer - named @IndexBSpacerFormat - right @Body { @Body } # format of index B spacer - - named @MakeColophon { No } # make colophon? Yes or No - named @ColophonFont { } # font for colophon - named @ColophonBreak { } # break style for colophon - named @ColophonColumnNumber { 1 } # colophon columns (1 to 10) - named @ColophonColumnGap { 1.00c @OrIfPlain 6s } # colophon column gap - - named @TopGap { 0.75c @OrIfPlain 2f } # gap between figures - named @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text - - named @FootNoteNumbers { Arabic } # footnote numbers - named @FootNoteThrough { No } # numbered through chapter? - named @FootNoteLocation { ColFoot } # where the footnote appears - named @FootNoteFont { 0.80f } # font for footnotes - named @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes - named @FootNoteFormat left number right body - { { number &0.05f } @Insert body } # break for footnotes - named @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line - named @FootAboveGap { @DisplayGap } # gap above footnote line - named @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes - - named @MarginNoteFont { 0.80f } # font of margin notes - named @MarginNoteBreak { ragged 1.10fx } # break style of margin notes - named @MarginNoteHGap { 0.5c } # horizontal gap to notes - named @MarginNoteVGap { @DisplayGap } # min vertical gap between - named @MarginNoteWidth { 1.50c } # width of margin notes - - named @EndNoteNumbers { Arabic } # endnote numbers - named @EndNoteFont { 0.80f } # font of endnotes - named @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes - named @EndNoteFormat left number right body - { { number &0.05f } @Insert body } # break for endnotes - named @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes - - named @TheoremWord { theorem } # "Theorem" word, etc. - named @TheoremTitleFormat right title - { (title) } # Theorem title format if present - named @TheoremFormat named word {} named number {} named title {} named body {} # theorem format - { { @B { word @NumSep number title: } &2s } @Insert body } - named @DefinitionWord { definition } # "Definition" word, etc. - named @DefinitionTitleFormat right title - { (title) } # Definition title format if present - named @DefinitionFormat named word {} named number {} named title {} named body {} # definition format - { { @B { word @NumSep number title: } &2s } @Insert body } - named @ClaimWord { claim } # "Claim" word, etc. - named @ClaimTitleFormat right title - { (title) } # Claim title format if present - named @ClaimFormat named word {} named number {} named title {} named body {} # claim format - { { @B { word @NumSep number title: } &2s } @Insert body } - named @PropositionWord { proposition } # "Proposition" word, etc. - named @PropositionTitleFormat right title - { (title) } # Proposition title format if present - named @PropositionFormat named word {} named number {} named title {} named body {} # proposition format - { { @B { word @NumSep number title: } &2s } @Insert body } - named @LemmaWord { lemma } # "Lemma" word, etc. - named @LemmaTitleFormat right title - { (title) } # Lemma title format if present - named @LemmaFormat named word {} named number {} named title {} named body {} # lemma format - { { @B { word @NumSep number title: } &2s } @Insert body } - named @CorollaryWord { corollary } # "Corollary" word, etc. - named @CorollaryTitleFormat right title - { (title) } # Corollary title format if present - named @CorollaryFormat named word {} named number {} named title {} named body {} # corollary format - { { @B { word @NumSep number title: } &2s } @Insert body } - named @ExampleWord { example } # "Example" word, etc. - named @ExampleTitleFormat right title - { (title) } # Example title format if present - named @ExampleFormat named word {} named number {} named title {} named body {} # example format - { { @B { word @NumSep number title: } &2s } @Insert body } - named @ProofWord { proof } # "Proof" word, etc. - - named @PageHeaders { Simple } # None Simple Titles NoTitles - named @PageNumbers { Arabic } # page numbers - named @FirstPageNumber { 1 } # number of first page - named @IntroPageNumbers { Roman } # intro page numbers - named @IntroFirstPageNumber { 1 } # number of first intro page - named @StructPageNums { No } # structured page numbers - named @PageNumberFormat right number { number } # format of page numbers - - named @OddTop right @PageNum { @Centre { - @PageNum - } } - named @OddFoot right @PageNum { @Null } - named @EvenTop right @PageNum { @Centre { - @PageNum - } } - named @EvenFoot right @PageNum { @Null } - named @StartOddTop right @PageNum { @Null } - named @StartOddFoot right @PageNum { @Null } - named @StartEvenTop right @PageNum { @Null } - named @StartEvenFoot right @PageNum { @Null } - - named @IntroOddTop right @PageNum { @Null } - named @IntroOddFoot right @PageNum { @Centre @PageNum } - named @IntroEvenTop right @PageNum { @Null } - named @IntroEvenFoot right @PageNum { @Centre @PageNum } - named @IntroStartOddTop right @PageNum { @Null } - named @IntroStartOddFoot right @PageNum { @Null } - named @IntroStartEvenTop right @PageNum { @Null } - named @IntroStartEvenFoot right @PageNum { @Null } - - named @RunningOddTop - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @I { @MinorNum @Sep @MinorTitle } @Right @B @PageNum } - - named @RunningOddFoot - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningEvenTop - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @B @PageNum @Right @I { @MajorNum @Sep @MajorTitle } } - - named @RunningEvenFoot - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningStartOddTop - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningStartOddFoot - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Centre { Bold 0.8f } @Font @PageNum } - - named @RunningStartEvenTop - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningStartEvenFoot - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Centre { Bold 0.8f } @Font @PageNum } - - - named @RunningIntroOddTop - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningIntroOddFoot - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Right @PageNum } - - named @RunningIntroEvenTop - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningIntroEvenFoot - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @PageNum } - - named @RunningIntroStartOddTop - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningIntroStartOddFoot - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningIntroStartEvenTop - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - named @RunningIntroStartEvenFoot - named @MajorNum {} named @MajorTitle {} - named @MinorNum {} named @MinorTitle {} right @PageNum - { @Null } - - -@Begin - - - ########################################################################### - # # - # @Protect x # - # # - # Like @CNP, this reserves space on the current page or else makes sure # - # x appears on the following page. # - # # - # Prior to Version 3.31 the amount of lookahead was just 3.0f. But # - # in Version 3.31, following a suggestion of Ludovic Courtes, this # - # was changed to @OneRow { 1.0f @High @LP 2.0v @High }, which # - # approximates the height of a title line, a paragraph separator, and # - # the first two lines of the section, and so works somewhat better. # - # # - ########################################################################### - - def @Protect right x { @OneRow { 1.0f @High @LP 2.0v @High } //0io // x } - - - ########################################################################### - # # - # @HLine # - # # - # Draws a horizontal line to fill available space. # - # # - ########################################################################### - - def @HLine - { - @BackEnd @Case { - PlainText @Yield { "-" @PlainGraphic 1f @High } - PostScript @Yield { {0 0 moveto xsize 0 lineto stroke} @Graphic {} } - PDF @Yield { {0 0 m __xsize 0 l S} @Graphic {} } - } - } - - - ########################################################################### - # # - # x @WordVal y # - # # - # Returns @Word&&x if x == y, otherwise y. # - # # - ########################################################################### - - def @WordVal - left x - right y - { - y @Case { - x @Yield @Word&&x - else @Yield y - } - } - - ########################################################################### - # # - # x @Dft y # - # # - # This returns x unless its value is "dft", in which case it returns y. # - # Useful for defaulting the value of one parameter to another. # - # # - ########################################################################### - - def @Dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - ########################################################################### - # # - # x @Do y # - # # - # This returns @Null if x is No or None, otherwise y. # - # # - ########################################################################### - - def @Do - left x - right y - { - x @Case { - { No None } @Yield @Null - else @Yield y - } - } - - - ########################################################################### - # # - # x @NoDo y # - # # - # Negation of @Do: This returns y if x is No or None, otherwise @Null. # - # # - ########################################################################### - - def @NoDo - left x - right y - { - x @Case { - { No None } @Yield y - else @Yield @Null - } - } - - - ########################################################################### - # # - # x @Then y # - # # - # This returns the empty object if x is No or None, otherwise y. # - # # - ########################################################################### - - def @Then - left x - right y - { - x @Case { - { No None } @Yield {} - else @Yield y - } - } - - - ########################################################################### - # # - # x @NoThen y # - # # - # Negation of @Then: returns y if x is No or None, otherwise empty. # - # # - ########################################################################### - - def @NoThen - left x - right y - { - x @Case { - { No None } @Yield y - else @Yield {} - } - } - - - ########################################################################### - # # - # Number markers. # - # # - ########################################################################### - - def @Num - left numtype - right num - { - numtype @Case { - None @Yield {} - Arabic @Yield num - Roman @Yield @Roman&&num - UCRoman @Yield @UCRoman&&num - Alpha @Yield @Alpha&&num - UCAlpha @Yield @UCAlpha&&num - Bullets @Yield @FnBullets&&num - Symbols @Yield @FnSymbols&&num - } - } - - - ########################################################################### - # # - # @MakePageNum # - # # - # Make a page number. # - # # - ########################################################################### - - def @MakePageNum - named numbers {} - named rawnum {} - named prefix {} - named owner {} - { - def @OwnerNum { @PageMarker&&owner @Open { rawnum } } - - def @StructNum { @FirstPageNumber @Plus rawnum @Minus @OwnerNum } - - @PageHeaders.@StructPageNums @Case { - { Titles.Yes NoTitles.Yes } @Yield { - prefix @Join @PageNumberFormat { numbers @Num @StructNum } } - else @Yield @PageNumberFormat { numbers @Num rawnum } - } - } - - - ########################################################################### - # # - # Page size, margins, and boxes. This code culminates in @OddPage x # - # and @EvenPage x, which produce one odd or even page containing x. # - # # - ########################################################################### - - def @Width - { - @PageType @Case { - Letter @Yield 612p - Tabloid @Yield 792p - Ledger @Yield 1224p - Legal @Yield 612p - Statement @Yield 396p - Executive @Yield 540p - A0 @Yield 2380p - A1 @Yield 1684p - A2 @Yield 1190p - A3 @Yield 842p - A4 @Yield 595p - A5 @Yield 420p - ISOB4 @Yield 709p - ISOB5 @Yield 499p - JISB4 @Yield 729p - JISB5 @Yield 516p - B4 @Yield 729p - B5 @Yield 516p - Folio @Yield 612p - Quarto @Yield 610p - 10x14 @Yield 720p - Other @Yield @PageWidth - } - } - - def @Height - { - @PageType @Case { - Letter @Yield 792p - Tabloid @Yield 1224p - Ledger @Yield 792p - Legal @Yield 1008p - Statement @Yield 612p - Executive @Yield 720p - A0 @Yield 3368p - A1 @Yield 2380p - A2 @Yield 1684p - A3 @Yield 1190p - A4 @Yield 842p - A5 @Yield 595p - ISOB4 @Yield 1001p - ISOB5 @Yield 709p - JISB4 @Yield 1032p - JISB5 @Yield 729p - B4 @Yield 1032p - B5 @Yield 729p - Folio @Yield 936p - Quarto @Yield 780p - 10x14 @Yield 1008p - Other @Yield @PageHeight - } - } - - def @OrientedWidth right @Orient - { - @Orient @Case { - { Portrait ReversePortrait } @Yield @Width - { Landscape ReverseLandscape } @Yield @Height - } - } - - def @OrientedHeight right @Orient - { - @Orient @Case { - { Portrait ReversePortrait } @Yield @Height - { Landscape ReverseLandscape } @Yield @Width - } - } - - def @OrientationAngle right @Orient - { - @Orient @Case { - Portrait @Yield 0d - Landscape @Yield 90d - ReversePortrait @Yield 180d - ReverseLandscape @Yield 270d - } - } - - def @PageBox right x - { - @PageBoxType @Case { - None @Yield x - Box @Yield @Box - margin { @PageBoxMargin } - paint { @PageBoxPaint } - linewidth { @PageBoxLineWidth } x - CurveBox @Yield @CurveBox - margin { @PageBoxMargin } - paint { @PageBoxPaint } - linewidth { @PageBoxLineWidth } x - ShadowBox @Yield @ShadowBox - margin { @PageBoxMargin } - paint { @PageBoxPaint } - linewidth { @PageBoxLineWidth } - shadow { @PageBoxShadow } x - } - } - - def @PageSet right x - { -# "LoutPageSet" @Graphic # VT: case PDF produces nothing - { @BackEnd @Case { - PostScript @Yield "LoutPageSet" - else @Yield "% @DoBackground/LoutPageSet UNIMPLEMENTED" - } - } @Graphic x - } - - def @ColouriseBackground left color right x - { - color @Colour - @Box margin { 0c } paint { color } linewidth { 0c } - @InitialColour @Colour x - } - - def @MargSet - left parity - right x - { -# { parity "LoutMargSet" } @Graphic x # VT: case PDF produces nothing - { @BackEnd @Case { - PostScript @Yield { parity "LoutMargSet" } - else @Yield "% @MargSet/LoutMargSet UNIMPLEMENTED" - } - } @Graphic x - } - - def @OddPage - left extra - named @Orient {} - right x - { - @PageSet - @InitialBackgroundColour @ColouriseBackground - { @OrientationAngle @Orient } @Rotate - { @OrientedWidth @Orient } @Wide { @OrientedHeight @Orient } @High - { //@TopMargin ||@OddLeftMargin - { // || @PageBackground } @Background - # 1 @MargSet - @PageEnclose @PageBox @HExpand { extra // @VExpand x } - ||@OddRightMargin //@FootMargin - } - } - - def @EvenPage - left extra - named @Orient {} - right x - { - @PageSet - @InitialBackgroundColour @ColouriseBackground - { @OrientationAngle @Orient } @Rotate - { @OrientedWidth @Orient } @Wide { @OrientedHeight @Orient } @High - { //@TopMargin ||@EvenLeftMargin - { // || @PageBackground } @Background - # 0 @MargSet - @PageEnclose @PageBox @HExpand { extra // @VExpand x } - ||@EvenRightMargin //@FootMargin - } - } - - - ########################################################################### - # # - # Definitions for page headers and footers. There are 16 symbols here, # - # in the following arrangement: # - # # - # @(- | Running)(- | Intro)(Odd | Even)(Top | Foot)Header # - # # - # Running means that running headers are to be used. # - # Intro means that the header is destined for an introductory page. # - # Odd or Even means whether the page number will be odd or even. # - # Top or Foot means whether the header is for the top or foot of page. # - # # - ########################################################################### - - export @Start @MajorNum @MajorTitle @MinorNum @MinorTitle @Owner @Prefix - def @Runner - left @Start - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - named @Owner {} - named @Prefix {} - named @Tag {} - { - @Null - # red @Colour "(@Runner:"@Start":"@MajorTitle":"@MinorTitle")" - } - - def @DupRunner # duplicate previous runner - { - @Runner&&preceding @Open { - NonStart @Runner - @MajorNum { @MajorNum } - @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } - @MinorTitle { @MinorTitle } - @Owner { @Owner } - @Prefix { @Prefix } - } - } - - def @OddTopHeader - left @PageHeadersAndStart - right @PageNum - { - @PageHeadersAndStart @Case { - None.Start @Yield @Null - None.NonStart @Yield @Null - None.None @Yield @Null - Simple.Start @Yield @StartOddTop @PageNum - Simple.NonStart @Yield @OddTop @PageNum - Simple.None @Yield @Null - } - } - - def @OddFootHeader - left @PageHeadersAndStart - right @PageNum - { - @PageHeadersAndStart @Case { - None.Start @Yield @Null - None.NonStart @Yield @Null - None.None @Yield @Null - Simple.Start @Yield @StartOddFoot @PageNum - Simple.NonStart @Yield @OddFoot @PageNum - Simple.None @Yield @Null - } - } - - def @EvenTopHeader - left @PageHeadersAndStart - right @PageNum - { - @PageHeadersAndStart @Case { - None.Start @Yield @Null - None.NonStart @Yield @Null - None.None @Yield @Null - Simple.Start @Yield @StartEvenTop @PageNum - Simple.NonStart @Yield @EvenTop @PageNum - Simple.None @Yield @Null - } - } - - def @EvenFootHeader - left @PageHeadersAndStart - right @PageNum - { - @PageHeadersAndStart @Case { - None.Start @Yield @Null - None.NonStart @Yield @Null - None.None @Yield @Null - Simple.Start @Yield @StartEvenFoot @PageNum - Simple.NonStart @Yield @EvenFoot @PageNum - Simple.None @Yield @Null - } - } - - def @IntroOddTopHeader - left @PageHeadersAndStart - right @PageNum - { - @PageHeadersAndStart @Case { - None.Start @Yield @Null - None.NonStart @Yield @Null - None.None @Yield @Null - Simple.Start @Yield @IntroStartOddTop @PageNum - Simple.NonStart @Yield @IntroOddTop @PageNum - Simple.None @Yield @Null - } - } - - def @IntroOddFootHeader - left @PageHeadersAndStart - right @PageNum - { - @PageHeadersAndStart @Case { - None.Start @Yield @Null - None.NonStart @Yield @Null - None.None @Yield @Null - Simple.Start @Yield @IntroStartOddFoot @PageNum - Simple.NonStart @Yield @IntroOddFoot @PageNum - Simple.None @Yield @Null - } - } - - def @IntroEvenTopHeader - left @PageHeadersAndStart - right @PageNum - { - @PageHeadersAndStart @Case { - None.Start @Yield @Null - None.NonStart @Yield @Null - None.None @Yield @Null - Simple.Start @Yield @IntroStartEvenTop @PageNum - Simple.NonStart @Yield @IntroEvenTop @PageNum - Simple.None @Yield @Null - } - } - - def @IntroEvenFootHeader - left @PageHeadersAndStart - right @PageNum - { - @PageHeadersAndStart @Case { - None.Start @Yield @Null - None.NonStart @Yield @Null - None.None @Yield @Null - Simple.Start @Yield @IntroStartEvenFoot @PageNum - Simple.NonStart @Yield @IntroEvenFoot @PageNum - Simple.None @Yield @Null - } - } - - - def @RunningOddTopHeader - left @PageHeadersAndStart - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - right @PageNum - { - @PageHeadersAndStart @Case { - NoTitles.?? @Yield ?? - NoTitles.Start @Yield @RunningStartOddTop @PageNum - NoTitles.NonStart @Yield @RunningOddTop @PageNum - NoTitles.None @Yield @Null - Titles.?? @Yield ?? - Titles.Start @Yield @RunningStartOddTop - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.NonStart @Yield @RunningOddTop - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.None @Yield @Null - } - } - - def @RunningOddFootHeader - left @PageHeadersAndStart - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - right @PageNum - { - @PageHeadersAndStart @Case { - NoTitles.?? @Yield @Null - NoTitles.Start @Yield @RunningStartOddFoot @PageNum - NoTitles.NonStart @Yield @RunningOddFoot @PageNum - NoTitles.None @Yield @Null - Titles.?? @Yield @Null - Titles.Start @Yield @RunningStartOddFoot - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.NonStart @Yield @RunningOddFoot - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.None @Yield @Null - } - } - - def @RunningEvenTopHeader - left @PageHeadersAndStart - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - right @PageNum - { - @PageHeadersAndStart @Case { - NoTitles.?? @Yield ?? - NoTitles.Start @Yield @RunningStartEvenTop @PageNum - NoTitles.NonStart @Yield @RunningEvenTop @PageNum - NoTitles.None @Yield @Null - Titles.?? @Yield ?? - Titles.Start @Yield @RunningStartEvenTop - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.NonStart @Yield @RunningEvenTop - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.None @Yield @Null - } - } - - def @RunningEvenFootHeader - left @PageHeadersAndStart - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - right @PageNum - { - @PageHeadersAndStart @Case { - NoTitles.?? @Yield @Null - NoTitles.Start @Yield @RunningStartEvenFoot @PageNum - NoTitles.NonStart @Yield @RunningEvenFoot @PageNum - NoTitles.None @Yield @Null - Titles.?? @Yield @Null - Titles.Start @Yield @RunningStartEvenFoot - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.NonStart @Yield @RunningEvenFoot - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.None @Yield @Null - } - } - - def @RunningIntroOddTopHeader - left @PageHeadersAndStart - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - right @PageNum - { - @PageHeadersAndStart @Case { - NoTitles.?? @Yield ?? - NoTitles.Start @Yield @RunningIntroStartOddTop @PageNum - NoTitles.NonStart @Yield @RunningIntroOddTop @PageNum - NoTitles.None @Yield @Null - Titles.?? @Yield ?? - Titles.Start @Yield @RunningIntroStartOddTop - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.NonStart @Yield @RunningIntroOddTop - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.None @Yield @Null - } - } - - def @RunningIntroOddFootHeader - left @PageHeadersAndStart - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - right @PageNum - { - @PageHeadersAndStart @Case { - NoTitles.?? @Yield @Null - NoTitles.Start @Yield @RunningIntroStartOddFoot @PageNum - NoTitles.NonStart @Yield @RunningIntroOddFoot @PageNum - NoTitles.None @Yield @Null - Titles.?? @Yield @Null - Titles.Start @Yield @RunningIntroStartOddFoot - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.NonStart @Yield @RunningIntroOddFoot - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.None @Yield @Null - } - } - - def @RunningIntroEvenTopHeader - left @PageHeadersAndStart - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - right @PageNum - { - @PageHeadersAndStart @Case { - NoTitles.?? @Yield ?? - NoTitles.Start @Yield @RunningIntroStartEvenTop @PageNum - NoTitles.NonStart @Yield @RunningIntroEvenTop @PageNum - NoTitles.None @Yield @Null - Titles.?? @Yield ?? - Titles.Start @Yield @RunningIntroStartEvenTop - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.NonStart @Yield @RunningIntroEvenTop - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.None @Yield @Null - } - } - - def @RunningIntroEvenFootHeader - left @PageHeadersAndStart - named @MajorNum {} - named @MajorTitle {} - named @MinorNum {} - named @MinorTitle {} - right @PageNum - { - @PageHeadersAndStart @Case { - NoTitles.?? @Yield @Null - NoTitles.Start @Yield @RunningIntroStartEvenFoot @PageNum - NoTitles.NonStart @Yield @RunningIntroEvenFoot @PageNum - NoTitles.None @Yield @Null - Titles.?? @Yield @Null - Titles.Start @Yield @RunningIntroStartEvenFoot - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.NonStart @Yield @RunningIntroEvenFoot - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - @PageNum - Titles.None @Yield @Null - } - } - - - ########################################################################### - # # - # Helper definitions for laying out pages. # - # # - ########################################################################### - - def @PageTopPlace { @Galley } - def @PageFootAndTopPlace { @Galley } - def @PageFootNotePlace { @Galley } - def @FullPlace { @Galley } - def @OddFullPlace { @Galley } - def @EvenFullPlace { @Galley } - def @FullPagePlace { @Galley } - def @EvenFullPagePlace { @Galley } - def @EvenPagePlace { @Galley } - def @OddFullPagePlace { @Galley } - def @ColTopPlace { @Galley } - def @ColFootAndTopPlace { @Galley } - def @ColPlace { @Galley } - def @ColFootNotePlace { @Galley } - def @IntroFullPlace { @Galley } - def @IntroOddFullPlace { @Galley } - def @IntroEvenFullPlace { @Galley } - def @IntroColPlace { @Galley } - def @GlossaryPlace { @Galley } - def @IndexPlace { @Galley } - def @IndexAPlace { @Galley } - def @IndexBPlace { @Galley } - def @ColophonPlace { @Galley } - def @AfterLinePlace { @ForceGalley } - - def @TryAfterLinePlace right x - { - x @Case { - noforce @Yield @Galley - force @Yield @ForceGalley - } - } - - def @EvenFullPageSection - { - @OneRow @EvenFullPagePlace - // @FullPagePlace - //@MidGap @EvenFullPageSection - } - - def @OddFullPageSection - { - @OneRow @OddFullPagePlace - // @FullPagePlace - //@MidGap @OddFullPageSection - } - - def @EvenPageTopSect - { - @OneRow @EvenPagePlace - // @PageTopPlace - //@MidGap @PageFootAndTopPlace - //@MidGap @EvenPageTopSect - } - - def @OddPageTopSect - { - @PageTopPlace - //@MidGap @PageFootAndTopPlace - //@MidGap @OddPageTopSect - } - - def @PageOddTopSection right @Orient - { - @OddPageTopSect ||{@OrientedWidth @Orient} @FullPlace - ||{@OrientedWidth @Orient} @OddFullPlace - } - - def @PageEvenTopSection right @Orient - { - @EvenPageTopSect ||{@OrientedWidth @Orient} @FullPlace - ||{@OrientedWidth @Orient} @EvenFullPlace - } - - def @PageIntroOddTopSection right @Orient - { - @OddPageTopSect ||{@OrientedWidth @Orient} @IntroFullPlace - ||{@OrientedWidth @Orient} @IntroOddFullPlace - } - - def @PageIntroEvenTopSection right @Orient - { - @EvenPageTopSect - ||{@OrientedWidth @Orient} @IntroFullPlace - ||{@OrientedWidth @Orient} @IntroEvenFullPlace - } - - def @PageFootNoteList - { - @PageFootNotePlace - //@FootGap @PageFootNoteList - } - - def @PageFootNoteSection - { - @FootLen @Wide @HLine - //@FootGap @PageFootNoteList - } - - def @PageFootAndTopSect - { - @PageFootAndTopPlace - //@MidGap @PageFootAndTopSect - } - - def @PageFootSection - { - //@MidGap @PageFootAndTopSect - //@FootAboveGap @PageFootNoteSection - } - - def @ColTopSection - { - @ColTopPlace - //@MidGap @ColFootAndTopPlace - //@MidGap @TryAfterLinePlace noforce - //@MidGap @ColTopSection - } - - def @RestOfColSection - { - @AfterLinePlace - //@MidGap @TryAfterLinePlace force - //@MidGap @ColPlace @NotRevealed - //@MidGap @RestOfColSection - } - - def @IntroRestOfColSection - { - @AfterLinePlace - //@MidGap @TryAfterLinePlace force - //@MidGap @IntroColPlace @NotRevealed - //@MidGap @IntroRestOfColSection - } - - def @ColFootAndTopList { @ColFootAndTopPlace //@TopGap @ColFootAndTopList } - - def @ColFootNoteList - { - @ColFootNotePlace - //@FootGap @ColFootNoteList - } - - def @ColFootNoteSection - { - @FootLen @Wide @HLine - //@FootGap @ColFootNoteList - } - - def @ColFootSection - { - //@TopGap @ColFootAndTopList - //@FootAboveGap @ColFootNoteSection - } - - def @ColsOf - left num - named gap { @ColumnGap } - right x - { - def @Two { x ||gap x } - def @Four { @Two ||gap @Two } - def @Eight { @Four ||gap @Four } - - num @Case { - 1 @Yield { x } - 2 @Yield { @Two } - 3 @Yield { @Two ||gap x } - 4 @Yield { @Four } - 5 @Yield { @Four ||gap x } - 6 @Yield { @Four ||gap @Two } - 7 @Yield { @Four ||gap @Two ||gap x } - 8 @Yield { @Four ||gap @Four } - 9 @Yield { @Four ||gap @Four ||gap x } - 10 @Yield { @Four ||gap @Four ||gap @Two } - } - } - - def @EqualWidth right x { 500c @Wide x } # believe it or not - - def @ColList right num - { - @HExpand num @ColsOf @EqualWidth @VExpand - { - @ColTopSection //@TopGap - @ColPlace //@MidGap @RestOfColSection // //1rt - @OneRow { @ColFootSection } - - } - } - - def @IntroColList right num - { - @HExpand num @ColsOf @EqualWidth @VExpand - { - @ColTopSection //@TopGap - @IntroColPlace //@MidGap @IntroRestOfColSection // //1rt - @OneRow { @ColFootSection } - } - } - - def @ZeroColList right num - { - @HExpand num @ColsOf @EqualWidth 0c @High @ColPlace - } - - def @ZeroIntroColList right num - { - @HExpand num @ColsOf @EqualWidth 0c @High @IntroColPlace - } - - def @GlossaryColList right num - { - @HExpand num @ColsOf gap { @GlossaryColumnGap } @EqualWidth @VExpand @GlossaryPlace - } - - def @IndexColList right num - { - @HExpand num @ColsOf gap { @IndexColumnGap } @EqualWidth @VExpand @IndexPlace - } - - def @IndexAColList right num - { - @HExpand num @ColsOf gap { @IndexAColumnGap } @EqualWidth @VExpand @IndexAPlace - } - - def @IndexBColList right num - { - @HExpand num @ColsOf gap { @IndexBColumnGap } @EqualWidth @VExpand @IndexBPlace - } - - def @ColophonColList right num - { - @HExpand num @ColsOf gap { @ColophonColumnGap } @EqualWidth @VExpand @ColophonPlace - } - - - ########################################################################### - # # - # Footnotes. # - # # - ########################################################################### - - export @Tag count - def @FootNoteCounterMarker - named @Tag {} - named count {} - { - @Null - } - - def @FootNoteNum right tag - { - @FootNoteCounterMarker&&tag @Open { @Next count } - } - - def @FootNoteCounterIncrement - right tag - { - @FootNoteCounterMarker&&preceding @Tagged tag - // @FootNoteCounterMarker count { @FootNoteNum tag } - // @NumberMarker @Tag { tag } - @Value { @FootNoteNumbers @Num @FootNoteNum tag } - } - - def @BeginFootNoteCounter - { - @FootNoteCounterMarker count { 0 } - } - - def @FootNote - named @Tag {} - named @Location { @FootNoteLocation } - named @Another { No } - named @Label { Numbered } - right x - { - - def @FootLabelFmt - right x - { - @FootNoteFont @Font @FootNoteBreak @Break - +0.3v @VShift { Base 0.8f } @Font x - } - - def @FootExtra - { - @BackEnd @Case { - PlainText @Yield "," - else @Yield @FootLabelFmt "," - } - } - - def @FootLabel - { - @Label @Case { - "Numbered" @Yield { @BackEnd @Case { - PlainText @Yield { ({@NumberOf @Tag}) } - else @Yield @FootLabelFmt @NumberOf @Tag - } } - else @Yield { @BackEnd @Case { - PlainText @Yield @Label - else @Yield @FootLabelFmt @Label - } } - } - } - - def @LongFootLabel - { - @Another @Case { - No @Yield { @FootLabel } - Yes @Yield { @FootExtra &0iu @FootLabel } - } - } - - def @FootVal - { - @FootNoteFont @Font @FootNoteBreak @Break @Label @Case { - "Numbered" @Yield { - { @FootNoteCounterIncrement @Tag & @FootLabel } - @FootNoteFormat x - } - else @Yield { @FootLabel @FootNoteFormat x } - } - } - - def @PageFootNote into { @PageFootNotePlace&&following } { @FootVal } - def @ColFootNote into { @ColFootNotePlace&&following } { @FootVal } - - @Location @Case { - ColFoot @Yield { @Null &0iu @LongFootLabel & @ColFootNote } - PageFoot @Yield { @Null &0iu @LongFootLabel & @PageFootNote } - } - } - - macro @AnotherFootNote { @FootNote @Another { Yes } } - - - ########################################################################### - # # - # Definitions for page lists. There are four symbols here, in the # - # following arrangement: # - # # - # @(Simple | Running)(- | Intro)PageList # - # # - # Running means that the page list is to support running headers. # - # Intro means that the page list is an introductory page list. # - # These are then packaged into @PageList and @IntroPageList. # - # # - ########################################################################### - - def @SStart right @PageNum - { - @PageNum @Case { - { 1 0 } @Yield Start - else @Yield NonStart - } - } - - def @ChooseColList right colnum - { - @OneOf - { - @ColList colnum - @GlossaryColList @GlossaryColumnNumber - @IndexAColList @IndexAColumnNumber - @IndexBColList @IndexBColumnNumber - @IndexColList @IndexColumnNumber - @ColophonColList @ColophonColumnNumber - } - } - - def @ChooseIntroColList right colnum - { - @OneOf - { - @IntroColList colnum - @GlossaryColList @GlossaryColumnNumber - @IndexAColList @IndexAColumnNumber - @IndexBColList @IndexBColumnNumber - @IndexColList @IndexColumnNumber - @ColophonColList @ColophonColumnNumber - } - } - - def @OddBodyMargins right x - { - @OddLeftBodyMargin @Wide {} || 1 @MargSet x || @OddRightBodyMargin @Wide {} - } - - def @EvenBodyMargins right x - { - @EvenLeftBodyMargin @Wide {} || 0 @MargSet x || @EvenRightBodyMargin @Wide {} - } - - def @SimplePageList - named @ColumnNumber {} - named @PageHeaders {} - named extra { No } - named @Orient {} - named @AtTop { @Null } - right @PageNum - { - - def @OrdinaryOddPage - { - {@PageHeaders.{@SStart @PageNum}} @OddTopHeader - @PageNumberFormat { @PageNumbers @Num @PageNum } - //@MidGap - @OddBodyMargins { - @AtTop - //@MidGap @PageOddTopSection @Orient - //@MidGap @ChooseColList @ColumnNumber - } - //1rt @OneRow - { // @OddBodyMargins @PageFootSection - //@MidGap {@PageHeaders.{@SStart @PageNum}} @OddFootHeader - @PageNumberFormat { @PageNumbers @Num @PageNum } - } - } - - def @FullPageOddPage - { - {@PageHeaders.{@SStart @PageNum}} @OddTopHeader - @PageNumberFormat { @PageNumbers @Num @PageNum } - //@MidGap @OddBodyMargins @OddFullPageSection - //1rt @OneRow - { //@MidGap {@PageHeaders.{@SStart @PageNum}} @OddFootHeader - @PageNumberFormat { @PageNumbers @Num @PageNum } - } - } - - def @SimpleEvenPageList - named @ColumnNumber {} - named @PageHeaders {} - named extra { No } - right @PageNum - { - - def @OrdinaryEvenPage - { - @PageHeaders.NonStart @EvenTopHeader - @PageNumberFormat { @PageNumbers @Num @PageNum } - //@MidGap - @EvenBodyMargins { - @PageEvenTopSection @Orient - //@MidGap @ChooseColList @ColumnNumber - } - //1rt @OneRow - { // @EvenBodyMargins @PageFootSection - //@MidGap @PageHeaders.NonStart @EvenFootHeader - @PageNumberFormat { @PageNumbers @Num @PageNum } - } - } - - def @FullPageEvenPage - { - @PageHeaders.NonStart @EvenTopHeader - @PageNumberFormat { @PageNumbers @Num @PageNum } - //@MidGap @EvenBodyMargins @EvenFullPageSection - //1rt @OneRow - { //@MidGap @PageHeaders.NonStart @EvenFootHeader - @PageNumberFormat { @PageNumbers @Num @PageNum } - } - } - - @PageMarker - rawnum { @PageNum } - num { @PageNumbers @Num @PageNum } - parity { "Even" } - // @FootNoteThrough @NoDo @BeginFootNoteCounter - // {} @EvenPage @Orient { @Orient } - { - @OrdinaryEvenPage ||{@OrientedWidth @Orient} @FullPageEvenPage - } - // @SimplePageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - @Next @PageNum - } - - @PageMarker - rawnum { @PageNum } - num { @PageNumbers @Num @PageNum } - parity { "Odd" } - // @FootNoteThrough @NoDo @BeginFootNoteCounter - // { extra @Then @OddBodyMargins @ZeroColList @ColumnNumber } @OddPage @Orient { @Orient } - { - @OrdinaryOddPage ||{@OrientedWidth @Orient} @FullPageOddPage - } - // @SimpleEvenPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Next @PageNum - } - - def @SimpleIntroPageList - named @ColumnNumber {} - named @PageHeaders {} - named @Orient {} - named extra { No } - named @AtTop { @Null } - right @PageNum - { - @PageMarker - num { @IntroPageNumbers @Num @PageNum } - rawnum { @PageNum } - parity { "Odd" } - // @FootNoteThrough @NoDo @BeginFootNoteCounter - // { extra @Then @OddBodyMargins @ZeroIntroColList @ColumnNumber } @OddPage @Orient { @Orient } - { - {@PageHeaders.{@SStart @PageNum}} @IntroOddTopHeader - @PageNumberFormat { @IntroPageNumbers @Num @PageNum } - //@MidGap - @OddBodyMargins { - @AtTop - //@MidGap @PageIntroOddTopSection @Orient - //@MidGap @ChooseIntroColList @ColumnNumber - } - //1rt @OneRow - { // @OddBodyMargins @PageFootSection - //@MidGap - {@PageHeaders.{@SStart @PageNum}} @IntroOddFootHeader - @PageNumberFormat { @IntroPageNumbers @Num @PageNum } - } - } - // @PageMarker - num { @IntroPageNumbers @Num @Next @PageNum } - rawnum { @Next @PageNum } - parity { "Even" } - // @FootNoteThrough @NoDo @BeginFootNoteCounter - // {} @EvenPage @Orient { @Orient } - @Runner&&following @Open - { - @PageHeaders.NonStart @IntroEvenTopHeader @PageNumberFormat { @IntroPageNumbers @Num @Next @PageNum } - //@MidGap - @EvenBodyMargins { - @PageIntroEvenTopSection @Orient - //@MidGap @ChooseIntroColList @ColumnNumber - } - //1rt @OneRow - { // @EvenBodyMargins @PageFootSection - //@MidGap @PageHeaders.NonStart @IntroEvenFootHeader - @PageNumberFormat { @IntroPageNumbers @Num @Next @PageNum } - } - } - // @SimpleIntroPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - @Next @Next @PageNum - } - - def @SimpleOddOrEvenIntroPageList - named @ColumnNumber {} - named @PageHeaders {} - named @Orient {} - named extra { No } - named @AtTop { @Null } - right @PageNum - { - - def @SimpleEvenIntroPageList - named @ColumnNumber {} - named @PageHeaders {} - named @Orient {} - named extra { No } - named @AtTop { @Null } - right @PageNum - { - - @PageMarker - num { @IntroPageNumbers @Num @PageNum } - rawnum { @PageNum } - parity { "Even" } - // @FootNoteThrough @NoDo @BeginFootNoteCounter - // {} @EvenPage @Orient { @Orient } - @Runner&&following @Open - { - @PageHeaders.NonStart @IntroEvenTopHeader @PageNumberFormat { @IntroPageNumbers @Num @PageNum } - //@MidGap - @EvenBodyMargins { - @PageIntroEvenTopSection @Orient - //@MidGap @ChooseIntroColList @ColumnNumber - } - //1rt @OneRow - { // @EvenBodyMargins @PageFootSection - //@MidGap @PageHeaders.NonStart @IntroEvenFootHeader - @PageNumberFormat { @IntroPageNumbers @Num @PageNum } - } - } - // @SimpleOddOrEvenIntroPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - @Next @PageNum - } - @PageMarker - num { @IntroPageNumbers @Num @PageNum } - rawnum { @PageNum } - parity { "Odd" } - // @FootNoteThrough @NoDo @BeginFootNoteCounter - // { extra @Then @OddBodyMargins @ZeroIntroColList @ColumnNumber } @OddPage @Orient { @Orient } - { - {@PageHeaders.{@SStart @PageNum}} @IntroOddTopHeader - @PageNumberFormat { @IntroPageNumbers @Num @PageNum } - //@MidGap - @OddBodyMargins { - @AtTop - //@MidGap @PageIntroOddTopSection @Orient - //@MidGap @ChooseIntroColList @ColumnNumber - } - //1rt @OneRow - { // @OddBodyMargins @PageFootSection - //@MidGap - {@PageHeaders.{@SStart @PageNum}} @IntroOddFootHeader - @PageNumberFormat { @IntroPageNumbers @Num @PageNum } - } - } - // @SimpleEvenIntroPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - @Next @PageNum - } - - def @RunningPageList - named @ColumnNumber {} - named @PageHeaders {} - named extra { No } - named @Orient {} - named @AtTop { @Null } - right @PageNum - { - - def @OrdinaryOddPage - { - @Runner&&following @Open - { - @PageMarker - num { @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } } - rawnum { @PageNum } - parity { "Odd" } - // @PageHeaders.@Start @RunningOddTopHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - //@MidGap - @OddBodyMargins { - @AtTop - //@MidGap @PageOddTopSection @Orient - //@MidGap @ChooseColList @ColumnNumber - } - //1rt @OneRow - { // @OddBodyMargins @PageFootSection - //@MidGap @PageHeaders.@Start @RunningOddFootHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - } - } - } - - def @FullPageOddPage - { - @Runner&&following @Open - { - @PageMarker - num { @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } } - rawnum { @PageNum } - parity { "Odd" } - // @PageHeaders.@Start @RunningOddTopHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - //@MidGap - @OddBodyMargins { - @AtTop - //@MidGap @OddFullPageSection - } - //1rt @OneRow - { - //@MidGap @PageHeaders.@Start @RunningOddFootHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - } - } - } - - def @RunningEvenPageList - named @ColumnNumber {} - named @PageHeaders {} - right @PageNum - { - - def @OrdinaryEvenPage - { - @Runner&&following @Open - { - @PageMarker - num { @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } } - rawnum { @PageNum } - parity { "Even" } - // @PageHeaders.@Start @RunningEvenTopHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - //@MidGap - @EvenBodyMargins { - @PageEvenTopSection @Orient - //@MidGap @ChooseColList @ColumnNumber - } - //1rt @OneRow - { // @EvenBodyMargins @PageFootSection - //@MidGap @PageHeaders.@Start @RunningEvenFootHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - } - } - } - - def @FullPageEvenPage - { - @Runner&&following @Open - { - @PageMarker - num { @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } } - rawnum { @PageNum } - parity { "Even" } - // @PageHeaders.@Start @RunningEvenTopHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - //@MidGap - @EvenBodyMargins @EvenFullPageSection - //1rt @OneRow - { - //@MidGap @PageHeaders.@Start @RunningEvenFootHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @PageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - } - } - } - - @FootNoteThrough @NoDo @BeginFootNoteCounter - // {} @EvenPage @Orient { @Orient } - { - @OrdinaryEvenPage ||{@OrientedWidth @Orient} @FullPageEvenPage - } - // @RunningPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - @Next @PageNum - } - - @FootNoteThrough @NoDo @BeginFootNoteCounter - // { extra @Then @OddBodyMargins @ZeroColList @ColumnNumber } @OddPage @Orient { @Orient } - { - @OrdinaryOddPage ||{@OrientedWidth @Orient} @FullPageOddPage - } - // @RunningEvenPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Next @PageNum - } - - def @RunningIntroPageList - named @ColumnNumber {} - named @PageHeaders {} - named @AtTop { @Null } - named @Orient {} - named extra { No } - right @PageNum - { - @FootNoteThrough @NoDo @BeginFootNoteCounter - // { extra @Then @OddBodyMargins @ZeroIntroColList @ColumnNumber } @OddPage @Orient { @Orient } - @Runner&&following @Open - { - @PageMarker - num { @MakePageNum - numbers { @IntroPageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } } - rawnum { @PageNum } - parity { "Odd" } - // @PageHeaders.@Start @RunningIntroOddTopHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @IntroPageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - //@MidGap - @OddBodyMargins { - @AtTop - //@MidGap @PageIntroOddTopSection @Orient - //@MidGap @IntroColList @ColumnNumber - } - //1rt @OneRow - { // @OddBodyMargins @PageFootSection - //@MidGap @PageHeaders.@Start @RunningIntroOddFootHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @IntroPageNumbers } - rawnum { @PageNum } - prefix { @Prefix } - owner { @Owner } - } - } - } - // @FootNoteThrough @NoDo @BeginFootNoteCounter - // {} @EvenPage @Orient { @Orient } - @Runner&&following @Open - { - @PageMarker - num { @MakePageNum - numbers { @IntroPageNumbers } - rawnum { @Next @PageNum } - prefix { @Prefix } - owner { @Owner } } - rawnum { @Next @PageNum } - parity { "Even" } - // @PageHeaders.@Start @RunningIntroEvenTopHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @IntroPageNumbers } - rawnum { @Next @PageNum } - prefix { @Prefix } - owner { @Owner } - } - //@MidGap - @EvenBodyMargins { - @PageIntroEvenTopSection @Orient - //@MidGap @ChooseIntroColList @ColumnNumber - } - //1rt @OneRow - { // @EvenBodyMargins @PageFootSection - //@MidGap @PageHeaders.@Start @RunningIntroEvenFootHeader - @MajorNum { @MajorNum } @MajorTitle { @MajorTitle } - @MinorNum { @MinorNum } @MinorTitle { @MinorTitle } - { - @MakePageNum - numbers { @IntroPageNumbers } - rawnum { @Next @PageNum } - prefix { @Prefix } - owner { @Owner } - } - } - } - // @RunningIntroPageList - @PageHeaders { @PageHeaders } - @ColumnNumber { @ColumnNumber } - @Orient { @Orient } - @Next @Next @PageNum - } - - def @PageList - named @ColumnNumber {} - named @PageHeaders {} - named extra { No } - named @Orient {} - named @AtTop { @Null } - right @FirstPageNum - { - @PageHeaders @Case { - { None Simple } @Yield @SimplePageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - extra { extra } - @AtTop { @AtTop } - @FirstPageNum - { Running Titles NoTitles } @Yield @RunningPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - extra { extra } - @AtTop { @AtTop } - @FirstPageNum - } - // - @PageMark last.page - } - - def @IntroPageList - named @ColumnNumber {} - named @PageHeaders {} - named @Orient {} - named extra { No } - named @AtTop { @Null } - right @FirstPageNum - { - @PageHeaders @Case { - { None Simple } @Yield @SimpleIntroPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - extra { extra } - @AtTop { @AtTop } - @FirstPageNum - { Running Titles NoTitles } @Yield @RunningIntroPageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @Orient } - extra { extra } - @AtTop { @AtTop } - @FirstPageNum - } - } - - def @ContinuousPageList - named @Orient {} - { - {@OrientedWidth @Orient} @Wide - { //@TopMargin ||@EvenLeftMargin - { - @BeginFootNoteCounter - // @ColPlace - //@FootAboveGap @ColFootNoteSection - //@FootAboveGap @PageFootNoteSection - } - ||@EvenRightMargin //@FootMargin - } - } - - - ########################################################################### - # # - # Table of contents (including lists of figures and tables). # - # # - ########################################################################### - - def @ContentsItem - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - named pregap { @ContentsGap } - named postgap { 0c } - named protect { No } - { -# def @Leaders { @ContentsLeader &@ContentsLeaderGap @Leaders } - - def @Leaders { @ContentsLeaderGap @Wide {} & @ContentsLeader & @Leaders } - - def @OptionalCrossLink right x - { - crosstag @Case { - "" @Yield x - else @Yield { crosstag @CrossLink x } - } - } - - def @RightPart - { - @ContentsRightWidth @Wide { - &1rt { @OptionalCrossLink pagenum //0.5vx } - } - } - -# def @Item -# { -# |indent @OptionalCrossLink number @ContentsFormat @HExpand { -# title & @ContentsLeaderGap @Wide &1rt @OneCol { -# @Leaders & @RightPart &0io -# } -# } -# |@ContentsRightWidth -# } - - def @Item - { - |indent @OptionalCrossLink number @ContentsFormat @HExpand { - title &1rt @OneCol { - @Leaders & @RightPart &0io - } - } - |@ContentsRightWidth - } - - //pregap - //0.5vx - protect @Case { - No @Yield @Item - Yes @Yield @Protect @Item - } - //postgap - } - - def @ContentsPlace { @Galley } - def @FigureContentsPlace { @Galley } - def @TableContentsPlace { @Galley } - def @FloaterContentsPlace { @Galley } - - def @SendContents into { @ContentsPlace&&foll_or_prec } - right x - { - x - } - - def @SendFigureContents into { @FigureContentsPlace&&foll_or_prec } - right x - { - x - } - - def @SendTableContents into { @TableContentsPlace&&foll_or_prec } - right x - { - x - } - - def @SendFloaterContents into { @FloaterContentsPlace&&foll_or_prec } - right x - { - x - } - - def @ContentsEntry - left wanted - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - named pregap { @ContentsGap } - named postgap { 0c } - { - @MakeContents.wanted @Case { - Yes.Yes @Yield { @SendContents @ContentsItem - indent { indent } - crosstag { crosstag } - number { number } - title { title } - pagenum { pagenum } - pregap { pregap } - postgap { postgap } - } - else @Yield @Null - } - } - - def @FigureContentsEntry - left wanted - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - named pregap { @ContentsGap } - named postgap { 0c } - { - @MakeFigureContents.wanted @Case { - Yes.Yes @Yield { @SendFigureContents @ContentsItem - indent { indent } - crosstag { crosstag } - number { number } - title { title } - pagenum { pagenum } - pregap { pregap } - postgap { postgap } - } - else @Yield @Null - } - } - - def @TableContentsEntry - left wanted - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - named pregap { @ContentsGap } - named postgap { 0c } - { - @MakeTableContents.wanted @Case { - Yes.Yes @Yield { @SendTableContents @ContentsItem - indent { indent } - crosstag { crosstag } - number { number } - title { title } - pagenum { pagenum } - pregap { pregap } - postgap { postgap } - } - else @Yield @Null - } - } - - def @FloaterContentsEntry - left wanted - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - named pregap { @ContentsGap } - named postgap { 0c } - { - @MakeFloaterContents.wanted @Case { - Yes.Yes @Yield { @SendFloaterContents @ContentsItem - indent { indent } - crosstag { crosstag } - number { number } - title { title } - pagenum { pagenum } - pregap { pregap } - postgap { postgap } - } - else @Yield @Null - } - } - - def @MajorContentsEntry - left wanted - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - named pregap { @ContentsGapAbove } - named postgap { @ContentsGapBelow } - { - @MakeContents.wanted @Case { - Yes.Yes @Yield { @SendContents @ContentsItem - indent { indent } - crosstag { crosstag } - number { @ContentsFont @Font number } - title { @ContentsFont @Font title } - pagenum { pagenum } - pregap { pregap } - postgap { postgap } - protect { Yes } - } - else @Yield @Null - } - } - - def @VeryMajorContentsEntry - left wanted - named indent { 0.5rt } - named title {} - named pregap { @ContentsPartGapAbove } - named postgap { @ContentsPartGapBelow } - { - def item - { - //pregap - //0.5vx - |indent @ContentsFont @Font @OneCol title | - //0.5vx - //postgap - } - - @MakeContents.wanted @Case { - Yes.Yes @Yield @SendContents item - else @Yield @Null - } - - } - - def @ContentsSection - { - def @ContentsList { @ContentsPlace // @ContentsList } - - @MakeContents @Case { - { Yes Bypass } @Yield @ContentsList - else @Yield @Null - } - } - - def @FigureContentsSection - { - def @FigureContentsList { @FigureContentsPlace // @FigureContentsList } - - @MakeFigureContents @Case { - { Yes Bypass } @Yield @FigureContentsList - else @Yield @Null - } - } - - def @TableContentsSection - { - def @TableContentsList { @TableContentsPlace // @TableContentsList } - - @MakeTableContents @Case { - { Yes Bypass } @Yield @TableContentsList - else @Yield @Null - } - } - - def @FloaterContentsSection - { - def @FloaterContentsList { @FloaterContentsPlace // @FloaterContentsList } - - @MakeFloaterContents @Case { - { Yes Bypass } @Yield @FloaterContentsList - else @Yield @Null - } - } - - ########################################################################### - # # - # Bypass table of contents. # - # # - ########################################################################### - - def @BypassContentsEntry into { @ContentsPlace&&preceding } - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - { - @MakeContents @Case { - Bypass @Yield { @ContentsItem - indent { indent } - crosstag { crosstag } - number { number } - title { title } - pagenum { pagenum } - pregap { @ContentsGap } - postgap { 0c } - } - else @Yield @Null - } - } - - def @BypassFigureContentsEntry into { @FigureContentsPlace&&preceding } - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - { - @MakeFigureContents @Case { - Bypass @Yield { @ContentsItem - indent { indent } - crosstag { crosstag } - number { number } - title { title } - pagenum { pagenum } - pregap { @ContentsGap } - postgap { 0c } - } - else @Yield @Null - } - } - - def @BypassTableContentsEntry into { @TableContentsPlace&&preceding } - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - { - @MakeTableContents @Case { - Bypass @Yield { @ContentsItem - indent { indent } - crosstag { crosstag } - number { number } - title { title } - pagenum { pagenum } - pregap { @ContentsGap } - postgap { 0c } - } - else @Yield @Null - } - } - - def @BypassFloaterContentsEntry into { @FloaterContentsPlace&&preceding } - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - { - @MakeFloaterContents @Case { - Bypass @Yield { @ContentsItem - indent { indent } - crosstag { crosstag } - number { number } - title { title } - pagenum { pagenum } - pregap { @ContentsGap } - postgap { 0c } - } - else @Yield @Null - } - } - - def @BypassMajorContentsEntry into { @ContentsPlace&&preceding } - named indent { 0f } - named crosstag {} - named number {} - named title {} - named pagenum {} - { - @MakeContents @Case { - Bypass @Yield { @ContentsItem - indent { indent } - crosstag { crosstag } - number { @B number } - title { @B title } - pagenum { pagenum } - pregap { @ContentsGapAbove } - postgap { @ContentsGapBelow } - } - else @Yield @Null - } - } - - - ########################################################################### - # # - # Endnotes. # - # # - ########################################################################### - - export num - def @EndNoteList - named @Tag {} - right num - { - @Galley //@EndNoteGap @EndNoteList @Next num - } - - def endtag right num - { - @BackEnd @Case { - PlainText @Yield { - ({@EndNoteNumbers @Num num}) - } - else @Yield { - +0.3v @VShift 0.8f @Font @EndNoteNumbers @Num num - } - } - } - - def @EndNote - named @Tag {} - right x - { - def ftag - { - @EndNoteFont @Font @EndNoteList&&@Tag @Open { endtag num } - } - - def @ENote into { @EndNoteList&&following } - { - @EndNoteFont @Font @EndNoteBreak @Break - { { @EndNoteList&&preceding @Tagged @Tag ftag } @EndNoteFormat x } - } - - @Null & @EndNoteFont @Font ftag & @ENote - } - - - ########################################################################### - # # - # Margin Notes. # - # # - ########################################################################### - - # moved to bsf - #def @ZeroSize right x - #{ - # @HContract @VContract { ^/0io |0io @OneCol @OneRow x |0io /0io } - #} - - def @MargPut - left parity - right x - { - @MarginNoteFont @Font @MarginNoteBreak @Break @ZeroSize { - @BackEnd @Case { - PlainText @Yield "" - PostScript @Yield { - { parity "LoutMargShift gsave" // "grestore" } @Graphic - { - |@MarginNoteHGap @MarginNoteWidth @Wide @OneRow x - |@MarginNoteHGap //@MarginNoteVGap - } - } - PDF @Yield { "% @MargPut/LoutMargShift UNIMPLEMENTED" @Graphic { - |@MarginNoteHGap @MarginNoteWidth @Wide @OneRow x - |@MarginNoteHGap //@MarginNoteVGap - } # VT: PDF currently has no output - } - } - } - } - - def @LeftNote right x { @Null & 0 @MargPut x } - def @RightNote right x { @Null & 1 @MargPut x } - def @OuterNote right x { @Null & 2 @MargPut x } - def @InnerNote right x { @Null & 3 @MargPut x } - - - ########################################################################### - # # - # @Place: places an object at an arbitrary point on the page. # - # # - ########################################################################### - -# -# VT: the expressions in the braces will work for PostScript but not for PDF -# they should be modified in the way the "named c { " cm" }" blocks were modified above -# but since the point of @Place is to output a matrix (?), I have not implemented this change -# - def @OldPlace - import @PSLengths named x - named "+" precedence 96 associativity left left a right b { a b "add" } - named "-" precedence 96 associativity left left a right b { a b "sub" } - named "/" precedence 97 associativity left left a right b { a b "div" } - named "*" precedence 98 associativity left left a right b { a b "mul" } - # named c precedence 99 left a { a "cm" } - # named i precedence 99 left a { a "in" } - # named e precedence 99 left a { a "em" } - # named p precedence 99 left a { a "pt" } - # named f precedence 99 left a { a "ft" } - # named s precedence 99 left a { a "sp" } - # named v precedence 99 left a { a "vs" } - # named cm precedence 99 left a { a "cm" } - # named in precedence 99 left a { a "in" } - # named em precedence 99 left a { a "em" } - # named pt precedence 99 left a { a "pt" } - # named ft precedence 99 left a { a "ft" } - # named sp precedence 99 left a { a "sp" } - # named vs precedence 99 left a { a "vs" } - { 0 } - import @PSLengths named y - named "+" precedence 96 associativity left left a right b { a b "add" } - named "-" precedence 96 associativity left left a right b { a b "sub" } - named "/" precedence 97 associativity left left a right b { a b "div" } - named "*" precedence 98 associativity left left a right b { a b "mul" } - # named c precedence 99 left a { a "cm" } - # named i precedence 99 left a { a "in" } - # named e precedence 99 left a { a "em" } - # named p precedence 99 left a { a "pt" } - # named f precedence 99 left a { a "ft" } - # named s precedence 99 left a { a "sp" } - # named v precedence 99 left a { a "vs" } - # named cm precedence 99 left a { a "cm" } - # named in precedence 99 left a { a "in" } - # named em precedence 99 left a { a "em" } - # named pt precedence 99 left a { a "pt" } - # named ft precedence 99 left a { a "ft" } - # named sp precedence 99 left a { a "sp" } - # named vs precedence 99 left a { a "vs" } - { 0 } - right val - { - @ZeroSize { - @BackEnd @Case { - PlainText @Yield "" - PostScript @Yield { - { "LoutPageDict begin matr setmatrix" x y "translate end gsave" - // "grestore" } @Graphic val - } - else @Yield { { "% @Place UNIMPLEMENTED" } @Graphic val # VT: PDF currently has no output - } - } - } - } - - - ########################################################################### - # # - # @Theorem, @Proof, and @EndProof # - # # - ########################################################################### - - export @Tag val - def @TheoremCounterMarker - named @Tag {} - named val {} - { - @Null - } - - def @BeginTheoremCounter - right prefix - { - @TheoremCounterMarker val { prefix @Join 0 } - } - - def @TheoremNum right tag - { - @TheoremCounterMarker&&tag @Open { @Next val } - } - - def @TheoremCounterIncrement - right tag - { - @TheoremCounterMarker&&preceding @Tagged tag - @TheoremCounterMarker val { @TheoremNum tag } - @NumberMarker @Tag { tag } @Value { @TheoremNum tag } - } - - def @Theorem - named @Tag {} - named @Title {} - right x - { - def @TheoremTitle - { - @Title @Case { - "" @Yield @Null - else @Yield @TheoremTitleFormat @Title - } - } - - { @PageMark @Tag & @TheoremCounterIncrement @Tag } @Insert - @TheoremFormat - word { theorem @WordVal @TheoremWord } - number { @TheoremNum @Tag } - title { @TheoremTitle } - body { x } - } - - macro @Proof { @B { {proof @WordVal @ProofWord}: } &2s } - - macro @EndProof { &1rt @Box {} } - - - ########################################################################### - # # - # @Definition # - # # - ########################################################################### - - export @Tag val - def @DefinitionCounterMarker - named @Tag {} - named val {} - { - @Null - } - - def @BeginDefinitionCounter - right prefix - { - @DefinitionCounterMarker val { prefix @Join 0 } - } - - def @DefinitionNum right tag - { - @DefinitionCounterMarker&&tag @Open { @Next val } - } - - def @DefinitionCounterIncrement - right tag - { - @DefinitionCounterMarker&&preceding @Tagged tag - @DefinitionCounterMarker val { @DefinitionNum tag } - @NumberMarker @Tag { tag } @Value { @DefinitionNum tag } - } - - def @Definition - named @Tag {} - named @Title {} - right x - { - def @DefinitionTitle - { - @Title @Case { - "" @Yield @Null - else @Yield @DefinitionTitleFormat @Title - } - } - - { @PageMark @Tag & @DefinitionCounterIncrement @Tag } @Insert - @DefinitionFormat - word { definition @WordVal @DefinitionWord } - number { @DefinitionNum @Tag } - title { @DefinitionTitle } - body { x } - } - - - ########################################################################### - # # - # @Claim # - # # - ########################################################################### - - export @Tag val - def @ClaimCounterMarker - named @Tag {} - named val {} - { - @Null - } - - def @BeginClaimCounter - right prefix - { - @ClaimCounterMarker val { prefix @Join 0 } - } - - def @ClaimNum right tag - { - @ClaimCounterMarker&&tag @Open { @Next val } - } - - def @ClaimCounterIncrement - right tag - { - @ClaimCounterMarker&&preceding @Tagged tag - @ClaimCounterMarker val { @ClaimNum tag } - @NumberMarker @Tag { tag } @Value { @ClaimNum tag } - } - - def @Claim - named @Tag {} - named @Title {} - right x - { - def @ClaimTitle - { - @Title @Case { - "" @Yield @Null - else @Yield @ClaimTitleFormat @Title - } - } - - { @PageMark @Tag & @ClaimCounterIncrement @Tag } @Insert - @ClaimFormat - word { claim @WordVal @ClaimWord } - number { @ClaimNum @Tag } - title { @ClaimTitle } - body { x } - } - - - ########################################################################### - # # - # @Proposition # - # # - ########################################################################### - - export @Tag val - def @PropositionCounterMarker - named @Tag {} - named val {} - { - @Null - } - - def @BeginPropositionCounter - right prefix - { - @PropositionCounterMarker val { prefix @Join 0 } - } - - def @PropositionNum right tag - { - @PropositionCounterMarker&&tag @Open { @Next val } - } - - def @PropositionCounterIncrement - right tag - { - @PropositionCounterMarker&&preceding @Tagged tag - @PropositionCounterMarker val { @PropositionNum tag } - @NumberMarker @Tag { tag } @Value { @PropositionNum tag } - } - - def @Proposition - named @Tag {} - named @Title {} - right x - { - def @PropositionTitle - { - @Title @Case { - "" @Yield @Null - else @Yield @PropositionTitleFormat @Title - } - } - - { @PageMark @Tag & @PropositionCounterIncrement @Tag } @Insert - @PropositionFormat - word { proposition @WordVal @PropositionWord } - number { @PropositionNum @Tag } - title { @PropositionTitle } - body { x } - } - - - ########################################################################### - # # - # @Lemma # - # # - ########################################################################### - - export @Tag val - def @LemmaCounterMarker - named @Tag {} - named val {} - { - @Null - } - - def @BeginLemmaCounter - right prefix - { - @LemmaCounterMarker val { prefix @Join 0 } - } - - def @LemmaNum right tag - { - @LemmaCounterMarker&&tag @Open { @Next val } - } - - def @LemmaCounterIncrement - right tag - { - @LemmaCounterMarker&&preceding @Tagged tag - @LemmaCounterMarker val { @LemmaNum tag } - @NumberMarker @Tag { tag } @Value { @LemmaNum tag } - } - - def @Lemma - named @Tag {} - named @Title {} - right x - { - def @LemmaTitle - { - @Title @Case { - "" @Yield @Null - else @Yield @LemmaTitleFormat @Title - } - } - - { @PageMark @Tag & @LemmaCounterIncrement @Tag } @Insert - @LemmaFormat - word { lemma @WordVal @LemmaWord } - number { @LemmaNum @Tag } - title { @LemmaTitle } - body { x } - } - - - ########################################################################### - # # - # @Corollary # - # # - ########################################################################### - - export @Tag val - def @CorollaryCounterMarker - named @Tag {} - named val {} - { - @Null - } - - def @BeginCorollaryCounter - right prefix - { - @CorollaryCounterMarker val { prefix @Join 0 } - } - - def @CorollaryNum right tag - { - @CorollaryCounterMarker&&tag @Open { @Next val } - } - - def @CorollaryCounterIncrement - right tag - { - @CorollaryCounterMarker&&preceding @Tagged tag - @CorollaryCounterMarker val { @CorollaryNum tag } - @NumberMarker @Tag { tag } @Value { @CorollaryNum tag } - } - - def @Corollary - named @Tag {} - named @Title {} - right x - { - def @CorollaryTitle - { - @Title @Case { - "" @Yield @Null - else @Yield @CorollaryTitleFormat @Title - } - } - - { @PageMark @Tag & @CorollaryCounterIncrement @Tag } @Insert - @CorollaryFormat - word { corollary @WordVal @CorollaryWord } - number { @CorollaryNum @Tag } - title { @CorollaryTitle } - body { x } - } - - - ########################################################################### - # # - # @Example # - # # - ########################################################################### - - export @Tag val - def @ExampleCounterMarker - named @Tag {} - named val {} - { - @Null - } - - def @BeginExampleCounter - right prefix - { - @ExampleCounterMarker val { prefix @Join 0 } - } - - def @ExampleNum right tag - { - @ExampleCounterMarker&&tag @Open { @Next val } - } - - def @ExampleCounterIncrement - right tag - { - @ExampleCounterMarker&&preceding @Tagged tag - @ExampleCounterMarker val { @ExampleNum tag } - @NumberMarker @Tag { tag } @Value { @ExampleNum tag } - } - - def @Example - named @Tag {} - named @Title {} - right x - { - def @ExampleTitle - { - @Title @Case { - "" @Yield @Null - else @Yield @ExampleTitleFormat @Title - } - } - - { @PageMark @Tag & @ExampleCounterIncrement @Tag } @Insert - @ExampleFormat - word { example @WordVal @ExampleWord } - number { @ExampleNum @Tag } - title { @ExampleTitle } - body { x } - } - - - ########################################################################### - # # - # @BeginAllCounters - begin all counters # - # # - ########################################################################### - - def @BeginAllCounters - left condition - right prefix - { - condition @Do { - @BeginTheoremCounter prefix - // @BeginDefinitionCounter prefix - // @BeginClaimCounter prefix - // @BeginPropositionCounter prefix - // @BeginLemmaCounter prefix - // @BeginCorollaryCounter prefix - // @BeginExampleCounter prefix - } - } - - - ########################################################################### - # # - # @Reference - a reference. # - # # - ########################################################################### - - export @Tag @Type @Abstract @Address @Annote @Author @Day @Edition - @HowPublished @InAuthor @InTitle @Institution @Journal @Keywords - @Label @Month @Note @Number @Organization @Page @Pages @Pinpoint - @Publisher @Title @TitleNote @TRType @URL @Volume @Year - - def @Reference - named compulsory @Tag {} - named compulsory @Type {} - named @Abstract {} - named @Address {} - named @Annote {} - named @Author {} - named @Day {} - named @Edition {} - named @HowPublished {} - named @InAuthor {} - named @InTitle {} - named @Institution {} - named @Journal {} - named @Keywords {} - named @Label {} - named @Month {} - named @Note {} - named @Number {} - named @Organization {} - named @Page {} - named @Pages {} - named @Pinpoint {} - named @Publisher {} - named @Title {} - named @TitleNote {} - named @TRType {} - named @URL - named "~" { "~" } - named "/" { "/" &0p } - named "//" { "//" &0p } {} - named @Volume {} - named @Year {} - { @Null } - - - ########################################################################### - # # - # @CiteLabel - the value of the label of a reference within a citation. # - # # - ########################################################################### - - def @CiteLabel - left label - right tag - { - tag @CrossLink @RefCiteLabels - @RefNum { @NumberOf tag } - @Tag { tag } - @Type { @Reference&&tag @Open { @Type } } - @Abstract { @Reference&&tag @Open { @Abstract } } - @Address { @Reference&&tag @Open { @Address } } - @Annote { @Reference&&tag @Open { @Annote } } - @Author { @Reference&&tag @Open { @Author } } - @Day { @Reference&&tag @Open { @Day } } - @Edition { @Reference&&tag @Open { @Edition } } - @HowPublished { @Reference&&tag @Open { @HowPublished } } - @InAuthor { @Reference&&tag @Open { @InAuthor } } - @InTitle { @Reference&&tag @Open { @InTitle } } - @Institution { @Reference&&tag @Open { @Institution } } - @Journal { @Reference&&tag @Open { @Journal } } - @Keywords { @Reference&&tag @Open { @Keywords } } - - @Label { label @Case { - "" @Yield {@Reference&&tag @Open {@Label}} - else @Yield label - } } - - @Month { @Reference&&tag @Open { @Month } } - @Note { @Reference&&tag @Open { @Note } } - @Number { @Reference&&tag @Open { @Number } } - @Organization { @Reference&&tag @Open { @Organization } } - @Page { @Reference&&tag @Open { @Page } } - @Pages { @Reference&&tag @Open { @Pages } } - @Pinpoint { @Reference&&tag @Open { @Pinpoint } } - @Publisher { @Reference&&tag @Open { @Publisher } } - @Title { @Reference&&tag @Open { @Title } } - @TitleNote { @Reference&&tag @Open { @TitleNote } } - @TRType { @Reference&&tag @Open { @TRType } } - @Volume { @Reference&&tag @Open { @Volume } } - @Year { @Reference&&tag @Open { @Year } } - } - - - ########################################################################### - # # - # @ListLabel - the value of the label of a reference within a ref list. # - # # - ########################################################################### - - def @ListLabel - left label - right tag - { - @RefListLabels - @RefNum { @NumberOf tag } - @Tag { tag } - @Type { @Reference&&tag @Open { @Type } } - @Abstract { @Reference&&tag @Open { @Abstract } } - @Address { @Reference&&tag @Open { @Address } } - @Annote { @Reference&&tag @Open { @Annote } } - @Author { @Reference&&tag @Open { @Author } } - @Day { @Reference&&tag @Open { @Day } } - @Edition { @Reference&&tag @Open { @Edition } } - @HowPublished { @Reference&&tag @Open { @HowPublished } } - @InAuthor { @Reference&&tag @Open { @InAuthor } } - @InTitle { @Reference&&tag @Open { @InTitle } } - @Institution { @Reference&&tag @Open { @Institution } } - @Journal { @Reference&&tag @Open { @Journal } } - @Keywords { @Reference&&tag @Open { @Keywords } } - - @Label { label @Case { - "" @Yield {@Reference&&tag @Open {@Label}} - else @Yield label - } } - - @Month { @Reference&&tag @Open { @Month } } - @Note { @Reference&&tag @Open { @Note } } - @Number { @Reference&&tag @Open { @Number } } - @Organization { @Reference&&tag @Open { @Organization } } - @Page { @Reference&&tag @Open { @Page } } - @Pages { @Reference&&tag @Open { @Pages } } - @Pinpoint { @Reference&&tag @Open { @Pinpoint } } - @Publisher { @Reference&&tag @Open { @Publisher } } - @Title { @Reference&&tag @Open { @Title } } - @TitleNote { @Reference&&tag @Open { @TitleNote } } - @TRType { @Reference&&tag @Open { @TRType } } - @Volume { @Reference&&tag @Open { @Volume } } - @Year { @Reference&&tag @Open { @Year } } - } - - - ########################################################################### - # # - # @SortKey - the value of the sort key of a reference. # - # # - ########################################################################### - - def @SortKey - left label - right tag - { - @RefListSortKey - @Tag { tag } - @Type { @Reference&&tag @Open { @Type } } - @Abstract { @Reference&&tag @Open { @Abstract } } - @Address { @Reference&&tag @Open { @Address } } - @Annote { @Reference&&tag @Open { @Annote } } - @Author { @Reference&&tag @Open { @Author } } - - @CiteOrder { {@NumberOf tag} @Case { - "??" @Yield "??" - else @Yield { "1000" @Plus @NumberOf tag } - } - } - - @Day { @Reference&&tag @Open { @Day } } - @Edition { @Reference&&tag @Open { @Edition } } - @HowPublished { @Reference&&tag @Open { @HowPublished } } - @InAuthor { @Reference&&tag @Open { @InAuthor } } - @InTitle { @Reference&&tag @Open { @InTitle } } - @Institution { @Reference&&tag @Open { @Institution } } - @Journal { @Reference&&tag @Open { @Journal } } - @Keywords { @Reference&&tag @Open { @Keywords } } - - @Label { label @Case { - "" @Yield {@Reference&&tag @Open {@Label}} - else @Yield label - } - } - - @Month { @Reference&&tag @Open { @Month } } - @Note { @Reference&&tag @Open { @Note } } - @Number { @Reference&&tag @Open { @Number } } - @Organization { @Reference&&tag @Open { @Organization } } - @Page { @Reference&&tag @Open { @Page } } - @Pages { @Reference&&tag @Open { @Pages } } - @Pinpoint { @Reference&&tag @Open { @Pinpoint } } - @Publisher { @Reference&&tag @Open { @Publisher } } - @Title { @Reference&&tag @Open { @Title } } - @TitleNote { @Reference&&tag @Open { @TitleNote } } - @TRType { @Reference&&tag @Open { @TRType } } - @Volume { @Reference&&tag @Open { @Volume } } - @Year { @Reference&&tag @Open { @Year } } - } - - - ########################################################################### - # # - # @RefStyle - a reference printing style. # - # # - ########################################################################### - - export @Style - def @RefStyle - left @Tag - named @Style right reftag {} - {} - - - ########################################################################### - # # - # @RefPrint - prints reference with tag reftag in appropriate style. # - # # - ########################################################################### - - def @RefPrint right reftag - { & @RefStyle&&{ @Reference&&reftag @Open { @Type } } - @Open { @Style reftag } & - } - - - ########################################################################### - # # - # @ReferencesSection and @ChapReferencesSection - a list of references. # - # # - ########################################################################### - - def @RefPlace { @Galley } - def @ChapRefPlace { @Galley } - - def @BypassRefPlace { @Galley } - def @BypassChapRefPlace { @Galley } - - def @ReferencesSection - { - def @RefList right num - { - @NumberMarker @Value { @RefNumbers @Num num } & | @RefPlace - //@RefListGap @RefList @Next num - } - - def @BypassRefList - { - @BypassRefPlace //@RefListGap @BypassRefList - } - - @RefList 1 - //@RefListGap - @BypassRefList - } - - def @ChapReferencesSection - { - def @ChapRefList right num - { - @NumberMarker @Value { @RefNumbers @Num num } & | @ChapRefPlace - //@RefListGap @ChapRefList @Next num - } - - def @BypassChapRefList - { - @BypassChapRefPlace //@RefListGap @BypassChapRefList - } - - @ChapRefList 1 - //@RefListGap - @BypassChapRefList - } - - - ########################################################################### - # # - # @RefHeading - heading for reference lists. # - # # - ########################################################################### - - def @RefHeading right x - { x @Case { - references @Yield @Word&&references - bibliography @Yield @Word&&bibliography - else @Yield x - } - } - - - ####################################################################### - # # - # @ChapRefSection # - # # - ####################################################################### - - def @ChapRefSection - { - @Heading @RefHeading @ChapRefListTitle - @DP - @ChapReferencesSection - } - - - ########################################################################### - # # - # @SendRef and @ChapSendRef - send one reference to the reference list. # - # # - ########################################################################### - - def @RefItem - left lab - right ref - { - def @ZeroWidth right x { &0io @OneCol x &0io } - - @RefListFormat @Case { - NoLabels @Yield { ref } - Labels @Yield { @ZeroWidth lab |@RefListLabelWidth ref } - DropLabels @Yield { lab //1vx |@RefListLabelWidth ref } - InLabels @Yield { lab & 2s @Wide & ref } - } - } - - - def @RefListItem - left label - right tag - { - @RefListFont @Font @RefListBreak @Break { - @NumberMarker&&preceding @Tagged tag & @PageMark tag - |@RefListIndent {label @ListLabel tag} @RefItem {@RefPrint tag} - |@RefListRightIndent - } - } - - - def @SendRef into { @RefPlace&&foll_or_prec } - left label - right tag - { - def @Key { label @SortKey tag } - - # no @Merge i.e. omit duplicates - - label @RefListItem tag - } - - - def @ChapSendRef into { @ChapRefPlace&&foll_or_prec } - left label - right tag - { - def @Key { label @SortKey tag } - - # no @Merge i.e. omit duplicates - - label @RefListItem tag - } - - - ########################################################################### - # # - # @Ref (bare citation) and its variants. # - # # - ########################################################################### - - def @Ref - named label {} - right tag - { - @MakeReferences @Case { - Yes @Yield { label @CiteLabel tag & label @SendRef tag } - else @Yield @Null - } - } - - def @NoRef - named label {} - right tag - { - @MakeReferences @Case { - Yes @Yield { label @SendRef tag } - else @Yield @Null - } - } - - def @ChapRef - named label {} - right tag - { - @MakeReferences @Case { - Yes @Yield { label @CiteLabel tag & label @ChapSendRef tag } - else @Yield @Null - } - } - - def @NoChapRef - named label {} - right tag - { - @MakeReferences @Case { - Yes @Yield { label @ChapSendRef tag } - else @Yield @Null - } - } - - - ########################################################################### - # # - # Bypass references. # - # # - ########################################################################### - - def @BypassReference into { @BypassRefPlace&&preceding } - named label {} - named value {} - { - @MakeReferences @Case { - Bypass @Yield { label @RefItem value } - else @Yield @Null - } - } - - def @BypassChapReference into { @BypassChapRefPlace&&preceding } - named label {} - named value {} - { - @MakeReferences @Case { - Bypass @Yield { label @RefItem value } - else @Yield @Null - } - } - - - ########################################################################### - # # - # @Cite (citation) and its variants. # - # # - ########################################################################### - - export "$" "," ";" - def @Cite body cite - { - macro "$" { @Ref } - def "," precedence 90 left x { x"," } - def ";" precedence 90 left x { x";" } - - @MakeReferences @Case { - Yes @Yield { - @RefCiteStyle cite - } - else @Yield @Null - } - } - - export "$" "," ";" - def @NoCite body cite - { - macro "$" { @NoRef } - def "," precedence 90 left x { x"," } - def ";" precedence 90 left x { x";" } - - @MakeReferences @Case { - Yes @Yield { cite } - else @Yield @Null - } - } - - export "$" "," ";" - def @ChapCite body cite - { - macro "$" { @ChapRef } - def "," precedence 90 left x { x"," } - def ";" precedence 90 left x { x";" } - - @MakeReferences @Case { - Yes @Yield { @RefCiteStyle cite } - else @Yield @Null - } - } - - export "$" "," ";" - def @NoChapCite body cite - { - macro "$" { @NoChapRef } - def "," precedence 90 left x { x } - def ";" precedence 90 left x { x";" } - - @MakeReferences @Case { - Yes @Yield { cite } - else @Yield @Null - } - } - - ########################################################################### - # # - # Floating figures. # - # # - ########################################################################### - - export @Tag prefix - def @FigurePrefixMarker - named @Tag {} - named prefix {} - { - @Null - } - - export @Tag count - def @FigureCounterMarker - named @Tag {} - named count {} - { - @Null - } - - def @RawFigureNum right tag - { - @FigureCounterMarker&&tag @Open { @Next count } - } - - def @FigureCounterIncrement - right tag - { - @FigureCounterMarker&&preceding @Tagged tag - // @FigurePrefixMarker&&preceding @Tagged tag - // @FigureCounterMarker count { @RawFigureNum tag } - // @NumberMarker @Tag { tag } - @Value { { @FigurePrefixMarker&&tag @Open { prefix } } - @Join {@FigureNumbers @Num @RawFigureNum tag} - } - } - - def @BeginFigureCounter - left condition - right prefix - { - condition @Do { - @FigurePrefixMarker prefix { prefix } - // @FigureCounterMarker count { 0 } - } - } - - def @EndFigureList { @Galley //@MidGap @EndFigureList } - - def @Figure - named @Tag {} - named @Caption { dft } - named @ShortCaption { dft } - named @CaptionPos { @FigureCaptionPos } - named @Format - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body { @FigureFormat @Body } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @OnePage { dft } - named @Location { @FigureLocation } - right @Body - { - def @FigureNumber - { - @BypassNumber @Dft @NumberOf @Tag - } - - def @ContentsCaption - { - @ShortCaption @Dft @Caption - } - - def @OnePg - { - @OnePage @Case { - { No no } @Yield No - { Yes yes } @Yield Yes - dft @Yield { @Location @Case { - PageTop @Yield No - EvenPageTop @Yield No - FullPage @Yield No - EvenFullPage @Yield No - PageFoot @Yield Yes - ColTop @Yield No - ColFoot @Yield Yes - ColEnd @Yield No - Display @Yield Yes - AfterLine @Yield Yes - TryAfterLine @Yield Yes - Raw @Yield No - } - } - } - } - - def @CaptionState - { - @Caption @Case { - dft @Yield None - else @Yield { @CaptionPos @Case { - { Below below } @Yield Below - { Above above } @Yield Above - } } - } - } - - #def @FigureLabel - #{ - # @FigureNumbers @Case { - # No @Yield @Null - # else @Yield { - # @CaptionFormat { {figure @WordVal @FigureWord} @NumSep @FigureNumber } - # } - # } - #} - - def @CaptionVal - { - @FigureCaptionFont @Font @FigureCaptionBreak @Break - { ||0.5rt @FigureCaptionFormat - word { figure @WordVal @FigureWord } - number { @FigureNumber } - caption { @Caption } - } - } - - def @FigureVal - { - @InitialLanguage @Language - { - @MakeFigureContents @FigureContentsEntry - indent { 0f } - crosstag { @Tag } - number { @FigureNumber } - title { @InitialLanguage @Language @ContentsCaption } - pagenum { @PageOf @Tag } - // @FigureCounterIncrement @Tag - // @TitleMarker @Tag { @Tag } @Value { @Caption } - // @Body - // @PageMark @Tag - } - } - - def @FigureTarget - { - @Location @Case { - PageTop @Yield @PageTopPlace&&following - EvenPageTop @Yield @PageTopPlace&&following - FullPage @Yield @FullPagePlace&&following - EvenFullPage @Yield @FullPagePlace&&following - PageFoot @Yield @PageFootAndTopPlace&&following - ColTop @Yield @ColTopPlace&&following - ColFoot @Yield @ColFootAndTopPlace&&following - ColEnd @Yield @EndFigureList&&following - Display @Yield @AfterLinePlace&&following - AfterLine @Yield @AfterLinePlace&&following - TryAfterLine @Yield @TryAfterLinePlace&&following - } - } - - def @SendEncl into { @FigureTarget } - right x - { - def @Enclose right x - { - @OnePg @Case { - No @Yield @Format x - Yes @Yield x - } - } - - x - } - - def @Send into { @FigureTarget } - right x - { - x - } - - def @EvenFullPageSend into { @EvenFullPagePlace&&following } - right x - { - @OneRow @HExpand x - } - - def @EvenPageSend into { @EvenPagePlace&&following } - right x - { - @OneRow @HExpand x - } - - def @RawFigureVal - { - @OnePg.@CaptionState @Case - { - Yes.Below @Yield @OneRow { @Format @FigureVal @DP @CaptionVal } - Yes.Above @Yield @OneRow { @CaptionVal @DP @Format @FigureVal } - Yes.None @Yield @OneRow { @Format @FigureVal } - No.Below @Yield { @Format @FigureVal @DP @CaptionVal } - No.Above @Yield { @CaptionVal @DP @Format @FigureVal } - No.None @Yield { @Format @FigureVal } - } - } - - def @NonRawFigureVal - { - @OnePg.@CaptionState @Case - { - Yes.Below @Yield { - @Send @OneRow @HExpand { @Format @FigureVal @DP @CaptionVal // @DupRunner} - } - Yes.Above @Yield { - @Send @OneRow @HExpand { @CaptionVal @DP @Format @FigureVal // @DupRunner} - } - Yes.None @Yield { - @Send @OneRow @HExpand { @Format @FigureVal // @DupRunner } - } - No.Below @Yield { - @SendEncl { @FigureVal // @Send { @CaptionVal // @DupRunner } } - } - No.Above @Yield { - @Send { @CaptionVal // @SendEncl { @FigureVal // @DupRunner } } - } - No.None @Yield { - @SendEncl { @FigureVal // @DupRunner } - } - } - } - - @Location @Case { - Raw @Yield @RawFigureVal - Display @Yield { @NonRawFigureVal &1rt } - EvenPageTop @Yield @EvenPageSend @NonRawFigureVal - EvenFullPage @Yield @EvenFullPageSend @NonRawFigureVal - else @Yield @NonRawFigureVal - } - } - - - ########################################################################### - # # - # Floating tables (exact clone of figure code immediately above). # - # # - ########################################################################### - - export @Tag prefix - def @TablePrefixMarker - named @Tag {} - named prefix {} - { - @Null - } - - export @Tag count - def @TableCounterMarker - named @Tag {} - named count {} - { - @Null - } - - def @RawTableNum right tag - { - @TableCounterMarker&&tag @Open { @Next count } - } - - def @TableCounterIncrement - right tag - { - @TableCounterMarker&&preceding @Tagged tag - // @TablePrefixMarker&&preceding @Tagged tag - // @TableCounterMarker count { @RawTableNum tag } - // @NumberMarker @Tag { tag } - @Value { { @TablePrefixMarker&&tag @Open { prefix } } - @Join {@TableNumbers @Num @RawTableNum tag} - } - } - - def @BeginTableCounter - left condition - right prefix - { - condition @Do { - @TablePrefixMarker prefix { prefix } - // @TableCounterMarker count { 0 } - } - } - - def @EndTableList { @Galley //@MidGap @EndTableList } - - def @Table - named @Tag {} - named @Caption { dft } - named @ShortCaption { dft } - named @CaptionPos { @TableCaptionPos } - named @Format - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body { @TableFormat @Body } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @OnePage { dft } - named @Location { @TableLocation } - right @Body - { - def @TableNumber - { - @BypassNumber @Dft @NumberOf @Tag - } - - def @ContentsCaption - { - @ShortCaption @Dft @Caption - } - - def @OnePg - { - @OnePage @Case { - { No no } @Yield No - { Yes yes } @Yield Yes - dft @Yield { @Location @Case { - PageTop @Yield No - EvenPageTop @Yield No - FullPage @Yield No - EvenFullPage @Yield No - PageFoot @Yield Yes - ColTop @Yield No - ColFoot @Yield Yes - ColEnd @Yield No - Display @Yield Yes - AfterLine @Yield Yes - TryAfterLine @Yield Yes - Raw @Yield No - } - } - } - } - - def @CaptionState - { - @Caption @Case { - dft @Yield None - else @Yield { @CaptionPos @Case { - { Below below } @Yield Below - { Above above } @Yield Above - } } - } - } - - def @CaptionVal - { - @TableCaptionFont @Font @TableCaptionBreak @Break - { ||0.5rt @TableCaptionFormat - word { table @WordVal @TableWord } - number { @TableNumber } - caption { @Caption } - } - } - - def @TableVal - { - @InitialLanguage @Language - { - @MakeTableContents @TableContentsEntry - indent { 0f } - crosstag { @Tag } - number { @TableNumber } - title { @InitialLanguage @Language @ContentsCaption } - pagenum { @PageOf @Tag } - // @TableCounterIncrement @Tag - // @TitleMarker @Tag { @Tag } @Value { @Caption } - // @Body - // @PageMark @Tag - } - } - - def @TableTarget - { - @Location @Case { - PageTop @Yield @PageTopPlace&&following - EvenPageTop @Yield @PageTopPlace&&following - FullPage @Yield @FullPagePlace&&following - EvenFullPage @Yield @FullPagePlace&&following - PageFoot @Yield @PageFootAndTopPlace&&following - ColTop @Yield @ColTopPlace&&following - ColFoot @Yield @ColFootAndTopPlace&&following - ColEnd @Yield @EndTableList&&following - Display @Yield @AfterLinePlace&&following - AfterLine @Yield @AfterLinePlace&&following - TryAfterLine @Yield @TryAfterLinePlace&&following - } - } - - def @SendEncl into { @TableTarget } - right x - { - def @Enclose right x - { - @OnePg @Case { - No @Yield @Format x - Yes @Yield x - } - } - - x - } - - def @Send into { @TableTarget } - right x - { - x - } - - def @EvenFullPageSend into { @EvenFullPagePlace&&following } - right x - { - @OneRow @HExpand x - } - - def @EvenPageSend into { @EvenPagePlace&&following } - right x - { - @OneRow @HExpand x - } - - def @RawTableVal - { - @OnePg.@CaptionState @Case - { - Yes.Below @Yield @OneRow { @Format @TableVal @DP @CaptionVal } - Yes.Above @Yield @OneRow { @CaptionVal @DP @Format @TableVal } - Yes.None @Yield @OneRow { @Format @TableVal } - No.Below @Yield { @Format @TableVal @DP @CaptionVal } - No.Above @Yield { @CaptionVal @DP @Format @TableVal } - No.None @Yield { @Format @TableVal } - } - } - - def @NonRawTableVal - { - @OnePg.@CaptionState @Case - { - Yes.Below @Yield { - @Send @OneRow @HExpand { @Format @TableVal @DP @CaptionVal // @DupRunner} - } - Yes.Above @Yield { - @Send @OneRow @HExpand { @CaptionVal @DP @Format @TableVal // @DupRunner} - } - Yes.None @Yield { - @Send @OneRow @HExpand { @Format @TableVal // @DupRunner } - } - No.Below @Yield { - @SendEncl { @TableVal // @Send { @CaptionVal // @DupRunner } } - } - No.Above @Yield { - @Send { @CaptionVal // @SendEncl { @TableVal // @DupRunner } } - } - No.None @Yield { - @SendEncl { @TableVal // @DupRunner } - } - } - } - - @Location @Case { - Raw @Yield @RawTableVal - Display @Yield { @NonRawTableVal &1rt } - EvenPageTop @Yield @EvenPageSend @NonRawTableVal - EvenFullPage @Yield @EvenFullPageSend @NonRawTableVal - else @Yield @NonRawTableVal - } - } - - - ########################################################################### - # # - # Floating floaters (exact clone of figure and table code above). # - # # - ########################################################################### - - export @Tag prefix - def @FloaterPrefixMarker - named @Tag {} - named prefix {} - { - @Null - } - - export @Tag count - def @FloaterCounterMarker - named @Tag {} - named count {} - { - @Null - } - - def @RawFloaterNum right tag - { - @FloaterCounterMarker&&tag @Open { @Next count } - } - - def @FloaterCounterIncrement - right tag - { - @FloaterCounterMarker&&preceding @Tagged tag - // @FloaterPrefixMarker&&preceding @Tagged tag - // @FloaterCounterMarker count { @RawFloaterNum tag } - // @NumberMarker @Tag { tag } - @Value { { @FloaterPrefixMarker&&tag @Open { prefix } } - @Join {@FloaterNumbers @Num @RawFloaterNum tag} - } - } - - def @BeginFloaterCounter - left condition - right prefix - { - condition @Do { - @FloaterPrefixMarker prefix { prefix } - // @FloaterCounterMarker count { 0 } - } - } - - def @EndFloaterList { @Galley //@MidGap @EndFloaterList } - - def @Floater - named @Tag {} - named @Caption { dft } - named @ShortCaption { dft } - named @CaptionPos { @FloaterCaptionPos } - named @Format - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body { @FloaterFormat @Body } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @OnePage { dft } - named @Location { @FloaterLocation } - right @Body - { - def @FloaterNumber - { - @BypassNumber @Dft @NumberOf @Tag - } - - def @ContentsCaption - { - @ShortCaption @Dft @Caption - } - - def @OnePg - { - @OnePage @Case { - { No no } @Yield No - { Yes yes } @Yield Yes - dft @Yield { @Location @Case { - PageTop @Yield No - EvenPageTop @Yield No - FullPage @Yield No - EvenFullPage @Yield No - PageFoot @Yield Yes - ColTop @Yield No - ColFoot @Yield Yes - ColEnd @Yield No - Display @Yield Yes - AfterLine @Yield Yes - TryAfterLine @Yield Yes - Raw @Yield No - } - } - } - } - - def @CaptionState - { - @Caption @Case { - dft @Yield None - else @Yield { @CaptionPos @Case { - { Below below } @Yield Below - { Above above } @Yield Above - } } - } - } - - def @CaptionVal - { - @FloaterCaptionFont @Font @FloaterCaptionBreak @Break - { ||0.5rt @FloaterCaptionFormat - word { floater @WordVal @FloaterWord } - number { @FloaterNumber } - caption { @Caption } - } - } - - def @FloaterVal - { - @InitialLanguage @Language - { - @MakeFloaterContents @FloaterContentsEntry - indent { 0f } - crosstag { @Tag } - number { @FloaterNumber } - title { @InitialLanguage @Language @ContentsCaption } - pagenum { @PageOf @Tag } - // @FloaterCounterIncrement @Tag - // @TitleMarker @Tag { @Tag } @Value { @Caption } - // @Body - // @PageMark @Tag - } - } - - def @FloaterTarget - { - @Location @Case { - PageTop @Yield @PageTopPlace&&following - EvenPageTop @Yield @PageTopPlace&&following - FullPage @Yield @FullPagePlace&&following - EvenFullPage @Yield @FullPagePlace&&following - PageFoot @Yield @PageFootAndTopPlace&&following - ColTop @Yield @ColTopPlace&&following - ColFoot @Yield @ColFootAndTopPlace&&following - ColEnd @Yield @EndFloaterList&&following - Display @Yield @AfterLinePlace&&following - AfterLine @Yield @AfterLinePlace&&following - TryAfterLine @Yield @TryAfterLinePlace&&following - } - } - - def @SendEncl into { @FloaterTarget } - right x - { - def @Enclose right x - { - @OnePg @Case { - No @Yield @Format x - Yes @Yield x - } - } - - x - } - - def @Send into { @FloaterTarget } - right x - { - x - } - - def @EvenFullPageSend into { @EvenFullPagePlace&&following } - right x - { - @OneRow @HExpand x - } - - def @EvenPageSend into { @EvenPagePlace&&following } - right x - { - @OneRow @HExpand x - } - - def @RawFloaterVal - { - @OnePg.@CaptionState @Case - { - Yes.Below @Yield @OneRow { @Format @FloaterVal @DP @CaptionVal } - Yes.Above @Yield @OneRow { @CaptionVal @DP @Format @FloaterVal } - Yes.None @Yield @OneRow { @Format @FloaterVal } - No.Below @Yield { @Format @FloaterVal @DP @CaptionVal } - No.Above @Yield { @CaptionVal @DP @Format @FloaterVal } - No.None @Yield { @Format @FloaterVal } - } - } - - def @NonRawFloaterVal - { - @OnePg.@CaptionState @Case - { - Yes.Below @Yield { - @Send @OneRow @HExpand { @Format @FloaterVal @DP @CaptionVal // @DupRunner} - } - Yes.Above @Yield { - @Send @OneRow @HExpand { @CaptionVal @DP @Format @FloaterVal // @DupRunner} - } - Yes.None @Yield { - @Send @OneRow @HExpand { @Format @FloaterVal // @DupRunner } - } - No.Below @Yield { - @SendEncl { @FloaterVal // @Send { @CaptionVal // @DupRunner } } - } - No.Above @Yield { - @Send { @CaptionVal // @SendEncl { @FloaterVal // @DupRunner } } - } - No.None @Yield { - @SendEncl { @FloaterVal // @DupRunner } - } - } - } - - @Location @Case { - Raw @Yield @RawFloaterVal - Display @Yield { @NonRawFloaterVal &1rt } - EvenPageTop @Yield @EvenPageSend @NonRawFloaterVal - EvenFullPage @Yield @EvenFullPageSend @NonRawFloaterVal - else @Yield @NonRawFloaterVal - } - } - - - ########################################################################### - # # - # Glossary. # - # # - ########################################################################### - - def @GlossaryList { @Galley //@GlossaryGap @GlossaryList } - - def @GlossarySection into { @GlossaryPlace&&following } - right etc - { - // @GlossaryList - // etc - //1rt - } - - def @DoGlossary into { @GlossaryList&&following } - left @Key - named name {} - named pnum {} - right body - { - @GlossaryFont @Font @GlossaryBreak @Break @GlossaryFormat - @Name { name } - @PageNum { pnum } - @Body { body } - } - - def @Glossary - left name - named sortkey { dft } - right body - { - def key { sortkey @Dft name } - - @MakeGlossary @Case { - { Yes yes } @Yield { @PageMark key & - key @DoGlossary name { name } pnum { @PageOf key } body - } - else @Yield @Null - } - } - - def @InGlossary - right x - { - @MakeGlossary @Case { - { Yes yes } @Yield { @InGlossaryFormat @InGlossaryFont @Font x } - else @Yield x - } - } - - - ########################################################################### - # # - # Index. # - # # - ########################################################################### - - def @IndexList { @Galley //1vx @IndexList } - def @BypassIndexList { @Galley //1vx @BypassIndexList } - - def @IndexSection into { @IndexPlace&&following } - right etc - { - // @IndexBreak @Break @IndexList - // @IndexBreak @Break @BypassIndexList - // @ClearHeaderComponent - // etc - //1rt - } - - def @DoIndex into { @IndexList&&following } - left @Key # sort key - named pgrange {} # page numbers, or empty if none - named depth {} # 0, 1, or 2 (@Index, @Sub, or @SubSub) - right body # body, not including any prefix - { - def @Body - { - depth @Case { - 0 @Yield @IndexFormat body - 1 @Yield @SubIndexFormat body - 2 @Yield @SubSubIndexFormat body - } - } - - def @Enclose right x - { - @IndexCtd.depth @Case { - - Yes.0 @Yield { - @ClearHeaderComponent - //1vx - x - //1vx - 1vx @SetHeaderComponent { - @Body @IndexCtdFormat {continued @WordVal @IndexCtdWord} - } - //1vx - 1vx @BeginHeaderComponent (unused) - } - - Yes.1 @Yield { - @EndHeaderComponent - //1vx - x - //1vx - 1vx @BeginHeaderComponent { - @Body @IndexCtdFormat {continued @WordVal @IndexCtdWord} - } - } - - else @Yield x - - } - } - - def @Merge left lpart right rpart - { - { lpart @Rump { lpart @Meld rpart } } @Case - { - "" @Yield lpart - else @Yield { { lpart{@OneCol ,} } @Meld rpart } - } - - } - - @IndexFont @Font @IndexBreak @Break pgrange @Case { - "" @Yield { @Body &"0.03fu" {} } - else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange } - - } - } - - def @RawIndex - left lpart - named depth { 0 } - right rpart - { - @MakeIndex @Case { - Yes @Yield { lpart @DoIndex depth { depth } rpart } - else @Yield @Null - } - } - - macro @RawSubIndex { @RawIndex depth { 1 } } - macro @RawSubSubIndex { @RawIndex depth { 2 } } - - def @Index - left lpart - named @Tag {} - named pnformat right @PageNum { Ordinary } - named depth { 0 } - named to {} - right rpart - { - def @PgMk right tag - { - tag @CrossLink @PageOf tag - } - - def @Fmt right x - { - {pnformat x} @Case - { - Ordinary @Yield @IndexTypeOrdinary x - Main @Yield @IndexTypeMain x - Special @Yield @IndexTypeSpecial x - else @Yield {pnformat x} - } - } - - def @PgRange - { - to @Case - { - "" @Yield @PgMk @Tag - else @Yield { - { @PageOf @Tag } @Case - { - { @PageOf to } @Yield { @PgMk @Tag } - else @Yield { {@PgMk @Tag} @IndexRangeFormat {@PgMk to} } - } - } - } - } - - @MakeIndex @Case { - Yes @Yield { - @PageMark @Tag & - lpart @DoIndex depth { depth } pgrange { @Fmt @PgRange } rpart } - else @Yield @Null - } - } - - macro @SubIndex { @Index depth { 1 } } - macro @SubSubIndex { @Index depth { 2 } } - - def @IndexBlanks - { - b @RawIndex {} c @RawIndex {} d @RawIndex {} e @RawIndex {} - f @RawIndex {} g @RawIndex {} h @RawIndex {} i @RawIndex {} - j @RawIndex {} k @RawIndex {} l @RawIndex {} m @RawIndex {} - n @RawIndex {} o @RawIndex {} p @RawIndex {} q @RawIndex {} - r @RawIndex {} s @RawIndex {} t @RawIndex {} u @RawIndex {} - v @RawIndex {} w @RawIndex {} x @RawIndex {} y @RawIndex {} - z @RawIndex {} - } - - def @IndexSpacer - left lpart - named above { @IndexSpacerAbove } - named below { @IndexSpacerBelow } - named font { @IndexSpacerFont } - named format right @Body { @IndexSpacerFormat @Body } - right rpart - { - def @Send into { @IndexList&&following } - right @Key - { - @ClearHeaderComponent - // - //above - @CNP - @OneRow { font @Font format rpart //below } - } - - @MakeIndex @Case { - Yes @Yield @Send lpart - else @Yield @Null - } - } - - macro @InitialIndexSpacer { @IndexSpacer above { 0i } } - - def @IndexLetters - { - a @InitialIndexSpacer A - b @IndexSpacer B c @IndexSpacer C d @IndexSpacer D e @IndexSpacer E - f @IndexSpacer F g @IndexSpacer G h @IndexSpacer H i @IndexSpacer I - j @IndexSpacer J k @IndexSpacer K l @IndexSpacer L m @IndexSpacer M - n @IndexSpacer N o @IndexSpacer O p @IndexSpacer P q @IndexSpacer Q - r @IndexSpacer R s @IndexSpacer S t @IndexSpacer T u @IndexSpacer U - v @IndexSpacer V w @IndexSpacer W x @IndexSpacer X y @IndexSpacer Y - z @IndexSpacer Z - } - - def @BypassBeginIndexPlace { @Galley } - - def @BypassBeginIndex force into { @BypassBeginIndexPlace&&preceding } {} - - def @BypassRawIndex force into { @BypassIndexList&&preceding } - named indent { 0f } - right x - { - &indent x - } - - def @BypassEndIndex { @Null } - - - ########################################################################### - # # - # IndexA. # - # # - ########################################################################### - - def @IndexAList { @Galley //1vx @IndexAList } - def @BypassIndexAList { @Galley //1vx @BypassIndexAList } - - def @IndexASection into { @IndexAPlace&&following } - right etc - { - // @IndexABreak @Break @IndexAList - // @IndexABreak @Break @BypassIndexAList - // @ClearHeaderComponent - // etc - //1rt - } - - def @DoIndexA into { @IndexAList&&following } - left @Key # sort key - named pgrange {} # page numbers, or empty if none - named depth {} # 0, 1, or 2 (@IndexA, @Sub, or @SubSub) - right body # body, not including any prefix - { - def @Body - { - depth @Case { - 0 @Yield @IndexAFormat body - 1 @Yield @SubIndexAFormat body - 2 @Yield @SubSubIndexAFormat body - } - } - - def @Enclose right x - { - @IndexACtd.depth @Case { - - Yes.0 @Yield { - @ClearHeaderComponent - //1vx - x - //1vx - 1vx @SetHeaderComponent { - @Body @IndexACtdFormat {continued @WordVal @IndexACtdWord} - } - //1vx - 1vx @BeginHeaderComponent (unused) - } - - Yes.1 @Yield { - @EndHeaderComponent - //1vx - x - //1vx - 1vx @BeginHeaderComponent { - @Body @IndexACtdFormat {continued @WordVal @IndexACtdWord} - } - } - - else @Yield x - - } - } - - def @Merge left lpart right rpart - { - { lpart @Rump { lpart @Meld rpart } } @Case - { - "" @Yield lpart - else @Yield { { lpart{@OneCol ,} } @Meld rpart } - } - - } - - @IndexAFont @Font @IndexABreak @Break pgrange @Case { - "" @Yield { @Body &"0.03fu" {} } - else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange } - - } - } - - def @RawIndexA - left lpart - named depth { 0 } - right rpart - { - @MakeIndexA @Case { - Yes @Yield { lpart @DoIndexA depth { depth } rpart } - else @Yield @Null - } - } - - macro @RawSubIndexA { @RawIndexA depth { 1 } } - macro @RawSubSubIndexA { @RawIndexA depth { 2 } } - - def @IndexA - left lpart - named @Tag {} - named pnformat right @PageNum { Ordinary } - named depth { 0 } - named to {} - right rpart - { - def @PgMk right tag - { - tag @CrossLink @PageOf tag - } - - def @Fmt right x - { - {pnformat x} @Case - { - Ordinary @Yield @IndexATypeOrdinary x - Main @Yield @IndexATypeMain x - Special @Yield @IndexATypeSpecial x - else @Yield {pnformat x} - } - } - - def @PgRange - { - to @Case - { - "" @Yield @PgMk @Tag - else @Yield { - { @PageOf @Tag } @Case - { - { @PageOf to } @Yield { @PgMk @Tag } - else @Yield { {@PgMk @Tag} @IndexARangeFormat {@PgMk to} } - } - } - } - } - - @MakeIndexA @Case { - Yes @Yield { - @PageMark @Tag & - lpart @DoIndexA depth { depth } pgrange { @Fmt @PgRange } rpart } - else @Yield @Null - } - } - - macro @SubIndexA { @IndexA depth { 1 } } - macro @SubSubIndexA { @IndexA depth { 2 } } - - def @IndexABlanks - { - b @RawIndexA {} c @RawIndexA {} d @RawIndexA {} e @RawIndexA {} - f @RawIndexA {} g @RawIndexA {} h @RawIndexA {} i @RawIndexA {} - j @RawIndexA {} k @RawIndexA {} l @RawIndexA {} m @RawIndexA {} - n @RawIndexA {} o @RawIndexA {} p @RawIndexA {} q @RawIndexA {} - r @RawIndexA {} s @RawIndexA {} t @RawIndexA {} u @RawIndexA {} - v @RawIndexA {} w @RawIndexA {} x @RawIndexA {} y @RawIndexA {} - z @RawIndexA {} - } - - def @IndexASpacer - left lpart - named above { @IndexASpacerAbove } - named below { @IndexASpacerBelow } - named font { @IndexASpacerFont } - named format right @Body { @IndexASpacerFormat @Body } - right rpart - { - def @Send into { @IndexAList&&following } - right @Key - { - @ClearHeaderComponent - // - //above - @CNP - @OneRow { font @Font format rpart //below } - } - - @MakeIndexA @Case { - Yes @Yield @Send lpart - else @Yield @Null - } - } - - macro @InitialIndexASpacer { @IndexASpacer above { 0i } } - - def @IndexALetters - { - a @InitialIndexASpacer A - b @IndexASpacer B c @IndexASpacer C d @IndexASpacer D e @IndexASpacer E - f @IndexASpacer F g @IndexASpacer G h @IndexASpacer H i @IndexASpacer I - j @IndexASpacer J k @IndexASpacer K l @IndexASpacer L m @IndexASpacer M - n @IndexASpacer N o @IndexASpacer O p @IndexASpacer P q @IndexASpacer Q - r @IndexASpacer R s @IndexASpacer S t @IndexASpacer T u @IndexASpacer U - v @IndexASpacer V w @IndexASpacer W x @IndexASpacer X y @IndexASpacer Y - z @IndexASpacer Z - } - - def @BypassBeginIndexAPlace { @Galley } - - def @BypassBeginIndexA force into { @BypassBeginIndexAPlace&&preceding } {} - - def @BypassRawIndexA force into { @BypassIndexAList&&preceding } - named indent { 0f } - right x - { - &indent x - } - - def @BypassEndIndexA { @Null } - - - ########################################################################### - # # - # IndexB. # - # # - ########################################################################### - - def @IndexBList { @Galley //1vx @IndexBList } - def @BypassIndexBList { @Galley //1vx @BypassIndexBList } - - def @IndexBSection into { @IndexBPlace&&following } - right etc - { - // @IndexBBreak @Break @IndexBList - // @IndexBBreak @Break @BypassIndexBList - // @ClearHeaderComponent - // etc - //1rt - } - - def @DoIndexB into { @IndexBList&&following } - left @Key # sort key - named pgrange {} # page numbers, or empty if none - named depth {} # 0, 1, or 2 (@IndexB, @Sub, or @SubSub) - right body # body, not including any prefix - { - def @Body - { - depth @Case { - 0 @Yield @IndexBFormat body - 1 @Yield @SubIndexBFormat body - 2 @Yield @SubSubIndexBFormat body - } - } - - def @Enclose right x - { - @IndexBCtd.depth @Case { - - Yes.0 @Yield { - @ClearHeaderComponent - //1vx - x - //1vx - 1vx @SetHeaderComponent { - @Body @IndexBCtdFormat {continued @WordVal @IndexBCtdWord} - } - //1vx - 1vx @BeginHeaderComponent (unused) - } - - Yes.1 @Yield { - @EndHeaderComponent - //1vx - x - //1vx - 1vx @BeginHeaderComponent { - @Body @IndexBCtdFormat {continued @WordVal @IndexBCtdWord} - } - } - - else @Yield x - - } - } - - def @Merge left lpart right rpart - { - { lpart @Rump { lpart @Meld rpart } } @Case - { - "" @Yield lpart - else @Yield { { lpart{@OneCol ,} } @Meld rpart } - } - - } - - @IndexBFont @Font @IndexBBreak @Break pgrange @Case { - "" @Yield { @Body &"0.03fu" {} } - else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange } - - } - } - - def @RawIndexB - left lpart - named depth { 0 } - right rpart - { - @MakeIndexB @Case { - Yes @Yield { lpart @DoIndexB depth { depth } rpart } - else @Yield @Null - } - } - - macro @RawSubIndexB { @RawIndexB depth { 1 } } - macro @RawSubSubIndexB { @RawIndexB depth { 2 } } - - def @IndexB - left lpart - named @Tag {} - named pnformat right @PageNum { Ordinary } - named depth { 0 } - named to {} - right rpart - { - def @PgMk right tag - { - tag @CrossLink @PageOf tag - } - - def @Fmt right x - { - {pnformat x} @Case - { - Ordinary @Yield @IndexBTypeOrdinary x - Main @Yield @IndexBTypeMain x - Special @Yield @IndexBTypeSpecial x - else @Yield {pnformat x} - } - } - - def @PgRange - { - to @Case - { - "" @Yield @PgMk @Tag - else @Yield { - { @PageOf @Tag } @Case - { - { @PageOf to } @Yield { @PgMk @Tag } - else @Yield { {@PgMk @Tag} @IndexBRangeFormat {@PgMk to} } - } - } - } - } - - @MakeIndexB @Case { - Yes @Yield { - @PageMark @Tag & - lpart @DoIndexB depth { depth } pgrange { @Fmt @PgRange } rpart } - else @Yield @Null - } - } - - macro @SubIndexB { @IndexB depth { 1 } } - macro @SubSubIndexB { @IndexB depth { 2 } } - - def @IndexBBlanks - { - b @RawIndexB {} c @RawIndexB {} d @RawIndexB {} e @RawIndexB {} - f @RawIndexB {} g @RawIndexB {} h @RawIndexB {} i @RawIndexB {} - j @RawIndexB {} k @RawIndexB {} l @RawIndexB {} m @RawIndexB {} - n @RawIndexB {} o @RawIndexB {} p @RawIndexB {} q @RawIndexB {} - r @RawIndexB {} s @RawIndexB {} t @RawIndexB {} u @RawIndexB {} - v @RawIndexB {} w @RawIndexB {} x @RawIndexB {} y @RawIndexB {} - z @RawIndexB {} - } - - def @IndexBSpacer - left lpart - named above { @IndexBSpacerAbove } - named below { @IndexBSpacerBelow } - named font { @IndexBSpacerFont } - named format right @Body { @IndexBSpacerFormat @Body } - right rpart - { - def @Send into { @IndexBList&&following } - right @Key - { - @ClearHeaderComponent - // - //above - @CNP - @OneRow { font @Font format rpart //below } - } - - @MakeIndexB @Case { - Yes @Yield @Send lpart - else @Yield @Null - } - } - - macro @InitialIndexBSpacer { @IndexBSpacer above { 0i } } - - def @IndexBLetters - { - a @InitialIndexBSpacer A - b @IndexBSpacer B c @IndexBSpacer C d @IndexBSpacer D e @IndexBSpacer E - f @IndexBSpacer F g @IndexBSpacer G h @IndexBSpacer H i @IndexBSpacer I - j @IndexBSpacer J k @IndexBSpacer K l @IndexBSpacer L m @IndexBSpacer M - n @IndexBSpacer N o @IndexBSpacer O p @IndexBSpacer P q @IndexBSpacer Q - r @IndexBSpacer R s @IndexBSpacer S t @IndexBSpacer T u @IndexBSpacer U - v @IndexBSpacer V w @IndexBSpacer W x @IndexBSpacer X y @IndexBSpacer Y - z @IndexBSpacer Z - } - - def @BypassBeginIndexBPlace { @Galley } - - def @BypassBeginIndexB force into { @BypassBeginIndexBPlace&&preceding } {} - - def @BypassRawIndexB force into { @BypassIndexBList&&preceding } - named indent { 0f } - right x - { - &indent x - } - - def @BypassEndIndexB { @Null } - - - ########################################################################### - # # - # Colophon. # - # # - ########################################################################### - - def @ColophonList { @Galley //1vx @ColophonList } - - def @ColophonSection into { @ColophonPlace&&following } - right etc - { - // @ColophonBreak @Break @ColophonFont @Font @ColophonList - // etc - //1rt - } - - - ########################################################################### - # # - # @LargeScaleStructure # - # # - # The prototype for the value of each large-scale structure symbol # - # (@Chapter, @Section, etc.) # - # # - ########################################################################### - - def @LargeScaleStructure - named tag {} # tag of this large-scale structure sym - named type {} # MajorIntro, Major, VeryMajor, or Minor - named initiallanguage {} # its language - named title {} # its full title - named runningtitle { dft } # its running title Jeffk 12/11/02 from {} - named aboveheadinggap { 0f } # gap above heading - named headingfont {} # its heading font - named headingbreak {} # its heading break - named headingformat # its heading format - left @Num right @Body {} - named headingtext { @Null } # heading text - named incontents { No } # entry in table of contents required - named contentsindent { 0f } # only used if type is Minor - named word {} - named numbers { None } - named attachnum {} # only if numbers is not None - named retrievenum {} # only if numbers is not None - named bypassnumber {} # only if numbers is not None, or VeryMajor - named prefix {} # prefix of number of this symbol - named pnprefix {} # prefix for page numbers of this sym - named majornum { dft } - named majortitle { dft } - named minornum { dft } - named minortitle { dft } - named intheorems { No } - named indisplays { No } - named infigures { No } - named intables { No } - named infloaters { No } - named inrunners { No } - named sendheader right @Body {} - named innergap {} - named endifmajor right innergap { - @EndFigureList - //innergap @EndNoteList 1 - //innergap @ChapRefSection - } - named wantindefinite { No } - named newpage { No } - right @Body - { - - def @ShortNum - { - numbers @Then { - bypassnumber @Dft { - prefix @Join { numbers @Num retrievenum } - } - } - } - - def @LongNum - { - numbers @Then { - # initiallanguage @Language { word @NumSep @ShortNum } - @ShortNum @Case { - "" @Yield { } # numberless: don't produce `word' - else @Yield { - initiallanguage @Language { word @NumSep @ShortNum } - } - } - } - } - - def @ShortTitle - { - initiallanguage @Language { runningtitle @Dft title } - } - - def @IfMajor right x - { - type @Case { - { MajorIntro Major ExtraMajor ExtraMajorIntro } @Yield x - else @Yield @Null - } - } - - def @StartIfMajor { - type @Case { - { MajorIntro Major ExtraMajor ExtraMajorIntro VeryMajor } @Yield Start - else @Yield NonStart - } - } - - def @Run right start - { - inrunners @Do type @Case { - - { Major MajorIntro } @Yield { - start @Runner - @MajorNum { majornum @Dft @LongNum } - @MajorTitle { majortitle @Dft @ShortTitle } - @MinorNum {} - @MinorTitle {} - @Owner { tag } - @Prefix { pnprefix @Join @ShortNum } - } - - { ExtraMajor ExtraMajorIntro } @Yield { - start @Runner - @MajorNum { majornum @Dft @LongNum } - @MajorTitle { majortitle @Dft @ShortTitle } - @MinorNum { majornum @Dft @LongNum } - @MinorTitle { majortitle @Dft @ShortTitle } - @Owner { tag } - @Prefix { pnprefix @Join @ShortNum } - } - - { VeryMajor } @Yield { - start @Runner - @MajorNum { majornum @Dft @LongNum } - @MajorTitle { majortitle @Dft @ShortTitle } - @MinorNum {} - @MinorTitle {} - @Owner { tag } - @Prefix {} - } - - Minor @Yield { - start @Runner - @MajorNum { majornum @Dft @LongNum } - @MajorTitle { majortitle @Dft @ShortTitle } - @MinorNum { minornum @Dft @LongNum } - @MinorTitle { minortitle @Dft @ShortTitle } - @Owner { tag } - @Prefix { pnprefix @Join @ShortNum } - } - } - } - - def @ContentsStuff - { - incontents.type @Case { - - Yes.Minor @Yield { - incontents @ContentsEntry - indent { contentsindent } - crosstag { tag } - number { @LongNum } - title { initiallanguage @Language title } - pagenum { @PageOf tag } - } - - { Yes.Major Yes.MajorIntro Yes.ExtraMajor Yes.ExtraMajorIntro } @Yield { - incontents @MajorContentsEntry - indent { contentsindent } - crosstag { tag } - number { @LongNum } - title { initiallanguage @Language title } - pagenum { @PageOf tag } - } - - { Yes.VeryMajor } @Yield { - incontents @VeryMajorContentsEntry - indent { contentsindent } - title { initiallanguage @Language { - bypassnumber @ColonSep title } } - } - - else @Yield @Null - } - } - - def @MinorTitle right x - { - newpage @Case { - { No no } @Yield @Protect {@LongNum headingformat title} - { Yes yes } @Yield { @Null @NP @LongNum headingformat title } - } - } - - def @Heading - { - - type @Case { - - Minor @Yield { - headingfont @Font headingbreak @Break - @MinorTitle {@LongNum headingformat title} - // @Run @StartIfMajor - // @PageMark tag - @DP headingtext - } - - { Major MajorIntro ExtraMajor ExtraMajorIntro } @Yield { - sendheader { - //aboveheadinggap - headingfont @Font - headingbreak @Break { @LongNum headingformat title } - // @Run @StartIfMajor - // @PageMark tag - @DP headingtext - } - } - - { VeryMajor } @Yield { sendheader { - //aboveheadinggap - headingfont @Font - headingbreak @Break { bypassnumber headingformat title } - // @Run @StartIfMajor - // @PageMark tag - @DP headingtext - } - } - } - } - - initiallanguage @Language { - @Heading - // wantindefinite @Case { - Yes @Yield @Null - No @Yield "" - } - // numbers @Do { - attachnum & @NumberMarker @Tag { tag } @Value { @ShortNum } - } - // @IfMajor { @FootNoteThrough @Do @BeginFootNoteCounter } - # // @Run @StartIfMajor - // @ContentsStuff - // @TitleMarker @Tag { tag } @Value { title } - // intheorems @BeginAllCounters @ShortNum - // indisplays @BeginDisplayCounter @ShortNum - // infigures @BeginFigureCounter @ShortNum - // intables @BeginTableCounter @ShortNum - // infloaters @BeginFloaterCounter @ShortNum - // @Body - //innergap @IfMajor endifmajor innergap - // @Run NonStart - } - } - -@End @DocumentSetup diff --git a/include/include/eiffel b/include/include/eiffel deleted file mode 100644 index 4fc89ea..0000000 --- a/include/include/eiffel +++ /dev/null @@ -1,118 +0,0 @@ -############################################################################### -# # -# Lout setup file for Eiffel program printing # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 5 April 2000 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { eiffelf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @EiffelSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - # style { varying @OrIfPlain fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # spacing mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/eiffelf b/include/include/eiffelf deleted file mode 100644 index b76b6bc..0000000 --- a/include/include/eiffelf +++ /dev/null @@ -1,446 +0,0 @@ - -############################################################################### -# # -# Lout @EiffelSetup package for formatting Eiffel programs # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 5 April 2000 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Eiffel -def @EiffelSetup - named pipe { } # pipe through this first - named numbered { No } # want lines numbered? - named blanknumbered { Yes } # blank lines numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { varying @OrIfPlain fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD - @A "$>" - - def @Eiffel - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lEiffel" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lEiffel" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - def @PS # for formatting strings - right x - { - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @Eiffel - -@End @EiffelSetup diff --git a/include/include/eq b/include/include/eq deleted file mode 100644 index 6d35832..0000000 --- a/include/include/eq +++ /dev/null @@ -1,29 +0,0 @@ -############################################################################### -# # -# Lout setup file for equation formatting # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { eqf } line # -# # -# This line causes Lout to read the definitions for equations, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { eqf } - - -############################################################################### -# # -# This package does not offer default options that can be changed. # -# # -############################################################################### diff --git a/include/include/eqf b/include/include/eqf deleted file mode 100644 index 23dd3bd..0000000 --- a/include/include/eqf +++ /dev/null @@ -1,1717 +0,0 @@ - -############################################################################### -# # -# Lout @Eq package for equation formatting (Version 3.0) # -# # -# Version 1.0 by Jeffrey H. Kingston, December 1990. # -# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. # -# Version 3.0 by Jeffrey H. Kingston and Robert Marsa, March 1996. # -# # -# This package makes extensive use of the Adobe Systems Symbol font, and # -# it assumes that the font has not been recoded. It could be rewritten # -# using the @Char symbol to be made independent of any recoding, but since # -# there seems no reason to ever recode this font, I haven't bothered. # -# # -# See "Eq - a Lout package for typesetting mathematics" for user # -# information. Acknowledgement: the @Eq language is based closely on # -# the Eqn language of B. W. Kernighan and L. L. Cherry; the spacing rules # -# are similar to those of the TeX system by D. E. Knuth. # -# # -# Version 3.0 makes use of the new x and y units of measurement to improve # -# the spacing rules. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export "`" "``" "```" bin rel punct non vctr big small - - space exclam universal numbersign existential percent - ampersand suchthat parenleft parenright asteriskmath - plus comma minus period slash zero one two three four - five six seven eight nine colon semicolon less equal - greater question congruent Alpha Beta Chi Delta Epsilon - Phi Gamma Eta Iota thetaone Kappa Lambda Mu Nu Omicron - Pi Theta Rho Sigma Tau Upsilon sigmaone Omega Xi Psi Zeta - bracketleft therefore bracketright perpendicular underscore - radicalex alpha beta chi delta epsilon phi gamma eta iota - phione kappa lambda mu nu omicron pi theta rho sigma tau - upsilon omegaone omega xi psi zeta braceleft bar braceright - similar Upsilonone minute lessequal fraction infinity florin - club diamond heart spade arrowboth arrowleft arrowup - arrowright arrowdown degree plusminus second greaterequal - multiply proportional partialdiff bullet divide notequal - equivalence approxequal ellipsis arrowvertex arrowhorizex - carriagereturn aleph Ifraktur Rfraktur weierstrass - circlemultiply circleplus emptyset intersection union - propersuperset reflexsuperset notsubset propersubset - reflexsubset element notelement angle gradient registerserif - copyrightserif trademarkserif product radical dotmath - logicalnot logicaland logicalor arrowdblboth arrowdblleft - arrowdblup arrowdblright arrowdbldown lozenge angleleft - registersans copyrightsans trademarksans summation parenlefttp - parenleftex parenleftbt bracketlefttp bracketleftex - bracketleftbt bracelefttp braceleftmid braceleftbt braceex - angleright integral integraltp integralex integralbt - parenrighttp parenrightex parenrightbt bracketrighttp - bracketrightex bracketrightbt bracerighttp bracerightmid - bracerightbt - - hbar Re Im partial infty prime nabla surd top bot dbar - triangle backslash forall exists neg - circle filledcircle square - - sum prod coprod int oint bcap bcup bvee bwedge bodot botimes - boplus buplus - - "+" "-" "+-" "-+" setminus cdot times "*" circ div cap cup uplus - sqcap sqcup triangleleft triangleright - wr bigcirc bigtriangleup bigtriangledown vee wedge oplus ominus - otimes oslash odot dagger daggerdbl amalg - - "<" ">" "=" "<=" prec preceq "<<" subset subseteq sqsubseteq - in vdash smile frown ">=" succ succeq ">>" supset supseteq - sqsupseteq ni dashv mid parallel "==" "~" "-~" asymp "~~" - "=~" bowtie propto models doteq trieq perp notsub notin "!=" not - "<->" "<--" "-->" up down "<=>" "<==" "==>" dblup dbldown - ":" "::" ":=" - - lpar blpar rpar brpar lbrack blbrack rbrack brbrack lbrace blbrace - rbrace brbrace lfloor blfloor rfloor brfloor lceil blceil - rceil brceil langle blangle rangle brangle - - ";" "," col - - "!" "?" "%" "(" ")" "[" "]" - - arccos arcsin arctan arg cos cosh cot coth csc deg det dim exp - gcd hom inf ker lg lim liminf limsup ln log max min Pr sec sin - sinh supr tan tanh mod ldots cdots vdots ddots del grad - "..." ",...," "'" "''" "'''" "''''" empty - - triangleup triangledown - - leftarrow longleftarrow dblleftarrow dbllongleftarrow - rightarrow longrightarrow dblrightarrow dbllongrightarrow - leftrightarrow longleftrightarrow dblleftrightarrow dbllongleftrightarrow - mapsto longmapsto hookleftarrow hookrightarrow leadsto - leftharpoonup rightharpoonup leftharpoondown rightharpoondown - rightleftharpoons - uparrow dbluparrow downarrow dbldownarrow updownarrow dblupdownarrow - nearrow searrow swarrow nwarrow - - sup sub tsub supp on ton frac half third over from to widefrom wideto - dot dotdot hat tilde vec dyad overbar underbar sqrt root zroot - nextcol above labove cabove rabove mabove - matrix pmatrix bmatrix brmatrix fmatrix cmatrix amatrix - - "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" - -def @Eq - named initzunit { 1f } - body @Body -@Begin - - - ################################################################### - # # - # Context-sensitive format changes. # - # # - # Equation formatting (according to Knuth) demands changes in # - # the appearance of equations depending on context. These are: # - # # - # @Smaller x Superscripts and subscripts are to be set # - # in a smaller font size. The @Smaller # - # symbol implements this by changing the # - # f unit. # - # # - # @HSqueeze x The horizontal space surrounding binary # - # operators and relations is to be reduced # - # within superscripts and subscripts, etc. # - # The @HSqueeze symbol implements this by # - # changing the y unit, which is not used by # - # Lout but which is used by symbols @ThinGap, # - # @MedGap and @ThickGap. # - # # - # @VSqueeze x The vertical space taken by superscripts # - # and subscripts is to be reduced within # - # built-up fractions and under root signs. # - # The @VSqueeze symbol implements this by # - # changing the z unit, which is not used by # - # Lout but is used by the @SupGap symbol. # - # # - # Knuth also recommends some changes that depend on whether the # - # equation is displayed or inline; these are not implemented, # - # except that the @E symbol for inline equations (defined as # - # a macro at the bottom of this file) includes a @VSqueeze. # - # # - ################################################################### - - def @SpaceGap { 0.05f } - - def @Smaller right x { 0.7f @Font @SpaceGap @Space x } - - def @HSqueeze right x { 0.2f @YUnit x } - - def @VSqueeze right x { 0.7f @ZUnit x } - - def @SkewGap { 0.05f } - def @SupGap { 0.43zk } - def @ThinGap { 0.15y } - def @MedGap { 0.20y } - def @ThickGap { 0.25y } - def @ColGap { 0.8f } - def @RowGap { 0.5f } - - def "`" { &@ThinGap } - def "``" { &@MedGap } - def "```" { &@ThickGap } - - def bin right x { `` x `` } - def rel right x { ``` x ``` } - def punct right x { x ` } - def non right x { 0c @YUnit x } - def big right x { 1.3f @Font @SpaceGap @Space x } - def small right x { 0.6f @Font @SpaceGap @Space x } - - def @Base right x { Base @Font x } - def @Sym right x { {Symbol Base} @Font x } - - def @HLine - named line { @BackEnd @Case { PostScript @Yield { "0.05 ft setlinewidth" } PDF @Yield { "__mul(__loutf, 0.05) w" } } } - { - @BackEnd @Case { - PostScript @Yield { - { "0 0 moveto xsize 0 lineto" line "stroke" } @Graphic {} - } - PDF @Yield { # note re-arrangement of commands (setlinewidth (='w') not allowed in a path) - { line "0 0 m __xsize 0 l s" } @Graphic {} - } - } - } - - def @VLine - { - @BackEnd @Case { - PostScript @Yield { - "0 0 moveto 0 ysize lineto 0.05 ft setlinewidth stroke" @Graphic {} - } - PDF @Yield { - "__mul(__loutf, 0.05) w 0 0 m 0 __ysize l s" @Graphic {} - } - } - } - - def vctr - right x - { - 0.5w @VShift x - } - - def @Strut right x - { - @OneCol { x | @OneRow { 0.5f @High ^/ 0.5f @High } } - } - - ################################################################### - # # - # Full names # - # # - # These symbols and their names are taken directly from the # - # Adobe Systems Inc. Symbol font (see PostScript Language # - # Reference Manual, pp. 256-257). The only differences are: # - # # - # Adobe: theta1 Eq: thetaone # - # sigma1 sigmaone # - # phi1 phione # - # omega1 omegaone # - # # - # These were needed since Lout identifiers do not have digits. # - # # - ################################################################### - - def space { @Sym "\040" } - def exclam { @Sym "\041" } - def universal { @Sym "\042" } - def numbersign { @Sym "\043" } - def existential { @Sym "\044" } - def percent { @Sym "\045" } - def ampersand { @Sym "\046" } - def suchthat { @Sym "\047" } - def parenleft { @Sym "\050" } - def parenright { @Sym "\051" } - def asteriskmath { @Sym "\052" } - def plus { @Sym "+" } - def comma { @Sym "\054" } - def minus { @Sym "-" } - def period { @Sym "\056" } - def slash { @Sym "\057" } - def zero { @Sym "\060" } - def one { @Sym "\061" } - def two { @Sym "\062" } - def three { @Sym "\063" } - def four { @Sym "\064" } - def five { @Sym "\065" } - def six { @Sym "\066" } - def seven { @Sym "\067" } - def eight { @Sym "\070" } - def nine { @Sym "\071" } - def colon { @Sym "\072" } - def semicolon { @Sym "\073" } - def less { @Sym "\074" } - def equal { @Sym "\075" } - def greater { @Sym "\076" } - def question { @Sym "\077" } - def congruent { @Sym "\100" } - def Alpha { @Sym "\101" } - def Beta { @Sym "\102" } - def Chi { @Sym "\103" } - def Delta { @Sym "\104" } - def Epsilon { @Sym "\105" } - def Phi { @Sym "\106" } - def Gamma { @Sym "\107" } - def Eta { @Sym "\110" } - def Iota { @Sym "\111" } - def thetaone { @Sym "\112" } - def Kappa { @Sym "\113" } - - def Lambda { @Sym "\114" } - def Mu { @Sym "\115" } - def Nu { @Sym "\116" } - def Omicron { @Sym "\117" } - def Pi { @Sym "\120" } - def Theta { @Sym "\121" } - def Rho { @Sym "\122" } - def Sigma { @Sym "\123" } - def Tau { @Sym "\124" } - def Upsilon { @Sym "\125" } - def sigmaone { @Sym "\126" } - def Omega { @Sym "\127" } - def Xi { @Sym "\130" } - def Psi { @Sym "\131" } - def Zeta { @Sym "\132" } - def bracketleft { @Sym "\133" } - def therefore { @Sym "\134" } - def bracketright { @Sym "\135" } - def perpendicular { @Sym "\136" } - def underscore { @Sym "\137" } - def radicalex { @Sym "\140" } - def alpha { @Sym "\141" } - def beta { @Sym "\142" } - def chi { @Sym "\143" } - def delta { @Sym "\144" } - def epsilon { @Sym "\145" } - def phi { @Sym "\146" } - def gamma { @Sym "\147" } - def eta { @Sym "\150" } - def iota { @Sym "\151" } - def phione { @Sym "\152" } - def kappa { @Sym "\153" } - def lambda { @Sym "\154" } - def mu { @Sym "\155" } - def nu { @Sym "\156" } - - def omicron { @Sym "\157" } - def pi { @Sym "\160" } - def theta { @Sym "\161" } - def rho { @Sym "\162" } - def sigma { @Sym "\163" } - def tau { @Sym "\164" } - def upsilon { @Sym "\165" } - def omegaone { @Sym "\166" } - def omega { @Sym "\167" } - def xi { @Sym "\170" } - def psi { @Sym "\171" } - def zeta { @Sym "\172" } - def braceleft { @Sym "\173" } - def bar { @Sym "\174" } - def braceright { @Sym "\175" } - def similar { @Sym "\176" } - def Upsilonone { @Sym "\241" } - def minute { @Sym "\242" } - def lessequal { @Sym "\243" } - def fraction { @Sym "\244" } - def infinity { "1.2f" @Font @Sym "\245" } - def florin { @Sym "\246" } - def club { @Sym "\247" } - def diamond { @Sym "\250" } - def heart { @Sym "\251" } - def spade { @Sym "\252" } - def arrowboth { @Sym "\253" } - def arrowleft { @Sym "\254" } - def arrowup { @Sym "\255" } - def arrowright { @Sym "\256" } - def arrowdown { @Sym "\257" } - def degree { @Sym "\260" } - def plusminus { @Sym "\261" } - def second { @Sym "\262" } - def greaterequal { @Sym "\263" } - - def multiply { @Sym "\264" } - def proportional { @Sym "\265" } - def partialdiff { @Sym "\266" } - def bullet { @Sym "\267" } - def divide { @Sym "\270" } - def notequal { @Sym "\271" } - def equivalence { @Sym "\272" } - def approxequal { @Sym "\273" } - def ellipsis { @Sym "\274" } - def arrowvertex { @Sym "\275" } - def arrowhorizex { @Sym "\276" } - def carriagereturn { @Sym "\277" } - def aleph { @Sym "\300" } - def Ifraktur { @Sym "\301" } - def Rfraktur { @Sym "\302" } - def weierstrass { @Sym "\303" } - def circlemultiply { @Sym "\304" } - def circleplus { @Sym "\305" } - def emptyset { @Sym "\306" } - def intersection { @Sym "\307" } - def union { @Sym "\310" } - def propersuperset { @Sym "\311" } - def reflexsuperset { @Sym "\312" } - def notsubset { @Sym "\313" } - def propersubset { @Sym "\314" } - def reflexsubset { @Sym "\315" } - def element { @Sym "\316" } - def notelement { @Sym "\317" } - def angle { @Sym "\320" } - def gradient { @Sym "\321" } - def registerserif { @Sym "\322" } - def copyrightserif { @Sym "\323" } - def trademarkserif { @Sym "\324" } - def product { @Sym "\325" } - def radical { @Sym "\326" } - def dotmath { @Sym "\327" } - - def @PureDot # dot with no extra space - { - @HContract { &0io 0.4w @HShift dotmath } - } - - def logicalnot { @Sym "\330" } - def logicaland { @Sym "\331" } - def logicalor { @Sym "\332" } - def arrowdblboth { @Sym "\333" } - def arrowdblleft { @Sym "\334" } - def arrowdblup { @Sym "\335" } - def arrowdblright { @Sym "\336" } - def arrowdbldown { @Sym "\337" } - def lozenge { @Sym "\340" } - def angleleft { @Sym "\341" } - def registersans { @Sym "\342" } - def copyrightsans { @Sym "\343" } - def trademarksans { @Sym "\344" } - def summation { @Sym "\345" } - def parenlefttp { @Sym "\346" } - def parenleftex { @Sym "\347" } - def parenleftbt { @Sym "\350" } - def bracketlefttp { @Sym "\351" } - def bracketleftex { @Sym "\352" } - def bracketleftbt { @Sym "\353" } - def bracelefttp { @Sym "\354" } - def braceleftmid { @Sym "\355" } - def braceleftbt { @Sym "\356" } - def braceex { @Sym "\357" } - def angleright { @Sym "\361" } - def integral { @Sym "\362" } - def integraltp { @Sym "\363" } - def integralex { @Sym "\364" } - def integralbt { @Sym "\365" } - def parenrighttp { @Sym "\366" } - def parenrightex { @Sym "\367" } - def parenrightbt { @Sym "\370" } - def bracketrighttp { @Sym "\371" } - def bracketrightex { @Sym "\372" } - def bracketrightbt { @Sym "\373" } - def bracerighttp { @Sym "\374" } - def bracerightmid { @Sym "\375" } - def bracerightbt { @Sym "\376" } - - - ################################################################### - # # - # Short names # - # # - # These symbols, their names, and their spacing, are based on # - # the list in Appendix F of Donald E. Knuth's The TeXBook. # - # # - # Group 1 (lowercase Greek letters): see full names above # - # Group 2 (uppercase Greek letters): see full names above # - # Group 3 (calligraphic capitals): not provided by Eq # - # # - ################################################################### - - ################################################################### - # # - # Group 4 (miscellaneous Ord symbols) # - # # - # Not all of Knuth's symbols are available. The four suits # - # (heartsuit, etc.), have definitions above. # - # # - ################################################################### - - def hbar { @OneCol { &0.1f @Base "-" ^/0.25fo h } } - def Re { Rfraktur } - def Im { Ifraktur } - def partial { partialdiff } - def infty { infinity } - def prime { minute } - #def emptyset { defined above } - def nabla { gradient } - def surd { radical } - def top { 180d @Rotate perpendicular } - def bot { perpendicular } - def dbar { @Base "||" } - #def angle { defined above } - def backslash { "\\" } - def forall { universal } - def exists { existential } - def neg { logicalnot } - - def circle - { @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { - "xsize ysize 2 div moveto" - "xsize 2 div ysize 2 div xsize 2 div 0 360 arc" - "0.04 ft setlinewidth stroke" - } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High } - } - PDF @Yield { - # - # VT: draws a counterclockwise 360 degree arc from 0 to +360 - # degree positions (straight right to straight right) with - # centre = (xsize/2, ysize/2) and radius = xsize/2, - # implemented as two counterclockwise 180 degree arcs. - # start at (xsize, ysize/2); the control points are: - # - # pt1 = (xsize, ysize/2 + (4/3 * xsize/2)) - # pt2 = (0, ysize/2 + (4/3 * xsize/2)) - # - # end at (0, ysize/2). Then start at (0, ysize/2); control points - # - # pt1 = (0, ysize/2 - (4/3 * xsize/2)) - # pt2 = (xsize, ysize/2 - (4/3 * xsize/2)) - # - # and end at (xsize, ysize/2). - - { - "__mul(0.04, __loutf) w" - "__xsize __div(__ysize, 2) m" - "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "0 __div(__ysize, 2) c" - "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "__xsize __div(__ysize, 2) c S" - } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High } - } - } - } - - def filledcircle - { @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { - "xsize ysize 2 div moveto" - "xsize 2 div ysize 2 div xsize 2 div 0 360 arc" - "0.04 ft setlinewidth fill" - } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High } - } - PDF @Yield { - # - # JK: I don't know how to fill in PDF, so this doesn't! - # - # VT: draws a counterclockwise 360 degree arc from 0 to +360 - # degree positions (straight right to straight right) with - # centre = (xsize/2, ysize/2) and radius = xsize/2, - # implemented as two counterclockwise 180 degree arcs. - # start at (xsize, ysize/2); the control points are: - # - # pt1 = (xsize, ysize/2 + (4/3 * xsize/2)) - # pt2 = (0, ysize/2 + (4/3 * xsize/2)) - # - # end at (0, ysize/2). Then start at (0, ysize/2); control points - # - # pt1 = (0, ysize/2 - (4/3 * xsize/2)) - # pt2 = (xsize, ysize/2 - (4/3 * xsize/2)) - # - # and end at (xsize, ysize/2). - - { - "__mul(0.04, __loutf) w" - "__xsize __div(__ysize, 2) m" - "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "0 __div(__ysize, 2) c" - "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "__xsize __div(__ysize, 2) c S" - } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High } - } - } - } - - def square - { @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { - "0 0 moveto xsize 0 lineto xsize ysize lineto" - "0 ysize lineto closepath" - "0.04 ft setlinewidth stroke" - } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High } - } - PDF @Yield { - { - "__mul(__loutf, 0.04) w" - "0 0 m __xsize 0 l __xsize __ysize l" - "0 __ysize l s" - } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High } - } - } - } - - def triangle - { @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { - "0 0 moveto xsize 0 lineto" - "xsize 2 div ysize lineto closepath" - "0.04 ft setlinewidth stroke" - } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High } - } - PDF @Yield { - { - "__mul(__loutf, 0.04) w" - "0 0 m __xsize 0 l" - "__div(__xsize, 2) __ysize l s" - } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High } - } - } - } - - - ################################################################### - # # - # Group 6 ("Large" operators) # - # # - # Knuth's large operators automatically change size depending # - # on whether the equation is display or inline. Eq does not # - # do this; instead, the `big' operator must be used. # - # # - ################################################################### - - def sum { summation } - def prod { product } - def coprod { 180d @Rotate vctr product } - def int { 1.3f @Font vctr integral } - def oint { @OneCol { vctr degree |0.015fo int } } - def bcap { 1.3f @Font intersection } - def bcup { 1.3f @Font union } - def bvee { 1.3f @Font logicalor } - def bwedge { 1.3f @Font logicaland } - def bodot { & 1.3f @Font @HContract { circle /0io &0.5rt @PureDot } } - def botimes { 1.3f @Font circlemultiply } - def boplus { 1.3f @Font circleplus } - def buplus { & 1.3f @Font @HContract { &0.5rt 0.7f @Font plus ^/0.2fo union } } - - ################################################################### - # # - # Group 7 (binary operations) # - # # - # All of Knuth's symbols are available except \star, \diamond # - # and \bullet; a few have been given more mnemonic names. # - # # - ################################################################### - - def "+" { bin plus } - def "-" { bin minus } - def "+-" { bin plusminus } - def "-+" { bin 180d @Rotate plusminus } - def setminus { bin backslash } - def cdot { bin dotmath } - def times { bin multiply } - def "*" { bin asteriskmath } - #def diamond { name used above } - def circ { bin circle } - #def bullet { name used above } - def div { bin divide } - def cap { bin intersection } - def cup { bin union } - def uplus { bin @OneRow @HContract { &0.5rt 0.7f @Font plus ^/0.2fo union}} - def sqcap { bin - { @HContract @VContract - @BackEnd @Case { - PostScript @Yield { - { "0 0 moveto 0 ysize lineto xsize ysize lineto" - "xsize 0 lineto" - "0.04 ft setlinewidth stroke" - } - @Graphic - { 0.3f @Wide 0.3f @High ^| ^/ - 0.3f @Wide 0.3f @High - } - } - PDF @Yield { - { "__mul(__loutf, 0.04) w" - "0 0 m 0 __ysize l __xsize __ysize l" - "__xsize 0 l s" - } - @Graphic - { 0.3f @Wide 0.3f @High ^| ^/ - 0.3f @Wide 0.3f @High - } - } - } - } - } - def sqcup { 180d @Rotate sqcap } - def triangleleft { bin 90d @Rotate 0.8f @Font triangle } - def triangleright { bin "-90d" @Rotate 0.8f @Font triangle} - def wr { bin vctr {90d @Rotate similar} } - def bigcirc { bin 1.2f @Font circle } - def bigtriangleup { bin 1.2f @Font triangle } - def bigtriangledown { bin 180d @Rotate 1.2f @Font triangle } - def vee { bin logicalor } - def wedge { bin logicaland } - def oplus { bin circleplus } - def ominus { bin @OneRow @HContract { circle /0io &0.5rt minus}} - def otimes { bin circlemultiply } - def oslash {`vctr 60d @Rotate @HContract {circle /0io &0.5rt minus`}} - def odot { bin @OneRow @HContract {circle /0io &0.5rt @PureDot }} - def dagger { bin @Base @Char "dagger" } - def daggerdbl { bin @Base @Char "daggerdbl" } - def amalg { bin 180d @Rotate vctr product } - - ################################################################### - # # - # Group 8 (relations) # - # # - # All Knuth's operators are available, but many have been # - # given different, more mnemonic names. Also included is # - # a not operator for negating the relations. # - # # - ################################################################### - - def "<" { rel less } - def ">" { rel greater } - def "=" { rel equal } - def "<=" { rel lessequal } - def prec { rel { 0.45f @Font "-90d" @Rotate - { parenrighttp ^| parenlefttp } - } - } - def preceq { rel { @OneRow non prec /0.1f minus } } - def "<<" { rel {less less} } - def subset { rel propersubset } - def subseteq { rel reflexsubset } - def sqsubseteq { rel @HContract @VContract - @BackEnd @Case { - PostScript @Yield { - { { "xsize 0 moveto" - "0 0 lineto" - "0 ysize lineto" - "xsize ysize lineto" - "0.04 ft setlinewidth stroke" - } - @Graphic - { 0.5f @Wide 0.25f @High ^/ - 0.25f @High - } - /0.1f minus - } - } - PDF @Yield { - { { "__mul(__loutf, 0.04) w" - "__xsize 0 m" - "0 0 l" - "0 __ysize l" - "__xsize __ysize l s" - } - @Graphic - { 0.5f @Wide 0.25f @High ^/ - 0.25f @High - } - /0.1f minus - } - } - } - } - - def in { rel element } - def vdash { rel vctr{"-90d" @Rotate perpendicular}} - def smile { rel vctr 90d @Rotate parenleft } - def frown { rel vctr 90d @Rotate parenright } - - def ">=" { rel greaterequal } - def succ { rel { 0.45f @Font 90d @Rotate - { parenrighttp ^| parenlefttp } - } - } - def succeq { rel { @OneRow non succ /0.1f minus } } - def ">>" { rel {greater greater} } - def supset { rel propersuperset } - def supseteq { rel reflexsuperset } - def sqsupseteq { rel @HContract @VContract - @BackEnd @Case { - PostScript @Yield { - { { "0 0 moveto xsize 0 lineto" - "xsize ysize lineto" - "0 ysize lineto" - "0.04 ft setlinewidth stroke" - } - @Graphic - { 0.5f @Wide 0.25f @High ^/ - 0.25f @High - } - /0.1f minus - } - } - PDF @Yield { - { { "__mul(__loutf, 0.04) w" - "0 0 m __xsize 0 l" - "__xsize __ysize l" - "0 __ysize l s" - } - @Graphic - { 0.5f @Wide 0.25f @High ^/ - 0.25f @High - } - /0.1f minus - } - } - } - } - def ni { rel 180d @Rotate element } - def dashv { rel vctr {90d @Rotate perpendicular} } - def mid { rel @Base "|" } - def parallel { rel @Base "||" } - - def "==" { rel equivalence } - def "~" { rel similar } - def "-~" { rel @OneRow{similar^/0.07f/0.07f minus}} - def asymp { rel 0.7f @Font @OneRow - { 90d @Rotate parenleft ^/0.008f - /0.008f 90d @Rotate parenright } - } - def "~~" { rel approxequal } - def "=~" { rel congruent } - def bowtie { rel{non triangleright non triangleleft}} - def propto { rel proportional } - def models { rel{@Base vctr "|" &0.05fo vctr equal}} - def trieq { rel @OneRow @HContract {&0.5rt small triangle^/0.15f equal}} - def doteq { rel @OneRow @HContract {&0.5rt dotmath^/0.15f equal}} - def perp { rel perpendicular } - - def notsub { rel notsubset } - def notin { rel notelement } - def "!=" { rel notequal } - - def "<->" { rel arrowboth } - def "<--" { rel arrowleft } - def "-->" { rel arrowright } - def up { rel arrowup } - def down { rel arrowdown } - def "<=>" { rel arrowdblboth } - def "<==" { rel arrowdblleft } - def "==>" { rel arrowdblright } - def dblup { rel arrowdblup } - def dbldown { rel arrowdbldown } - - def ":" { rel colon } - def "::" { rel @OneCol {colon ` colon} } - def ":=" { rel { colon{ //0.05fo equal} } } - - def not right x { @HContract {@OneCol x /0co &0.5rt slash}} - - - ################################################################### - # # - # Groups 11 and 12 - openings and closings. # - # # - ################################################################### - - def lpar { parenleft } - def rpar { parenright } - def lbrack { bracketleft } - def rbrack { bracketright } - def lbrace { braceleft } - def rbrace { braceright } - def lfloor { ` "-0.15f" @VShift bracketleftbt } - def rfloor { "-0.15f" @VShift bracketrightbt ` } - def lceil { ` "-0.1f" @VShift bracketlefttp } - def rceil { "-0.1f" @VShift bracketrighttp ` } - def langle { angleleft } - def rangle { angleright } - - def blpar { @OneRow {parenlefttp ^/ parenleftex / parenleftbt } } - def brpar { @OneRow {parenrighttp ^/ parenrightex / parenrightbt } } - def blbrack { @OneRow {bracketlefttp ^/ bracketleftex / bracketleftbt } } - def brbrack { @OneRow {bracketrighttp ^/ bracketrightex / bracketrightbt} } - def blbrace { @OneRow {bracelefttp ^/ braceleftmid / braceleftbt } } - def brbrace { @OneRow {bracerighttp ^/ bracerightmid / bracerightbt } } - def blfloor { @OneRow {bracketleftex ^/ bracketleftex / bracketleftbt } } - def brfloor { @OneRow {bracketrightex ^/ bracketrightex / bracketrightbt} } - def blceil { @OneRow {bracketlefttp ^/ bracketleftex / bracketleftex } } - def brceil { @OneRow {bracketrighttp ^/ bracketrightex / bracketrightex} } - def blangle { @HContract @VContract - @BackEnd @Case { - PostScript @Yield { - { "xsize 0 moveto" - "0 ysize 2 div lineto" - "xsize ysize lineto" - "0.04 ft setlinewidth stroke" - } - @Graphic { 0.5f @Wide 2f @High ^/ 2f @High } - } - PDF @Yield { - { "__mul(__loutf, 0.04) w" - "__xsize 0 m" - "0 __div(__ysize, 2) l" - "__xsize __ysize l S" - } - @Graphic { 0.5f @Wide 2f @High ^/ 2f @High } - } - } - } - def brangle { @HContract @VContract - @BackEnd @Case { - PostScript @Yield { - { "0 0 moveto" - "xsize ysize 2 div lineto" - "0 ysize lineto" - "0.04 ft setlinewidth stroke" - } - @Graphic { 0.5f @Wide 2f @High ^/ 2f @High } - } - PDF @Yield { - { "__mul(__loutf, 0.04) w" - "0 0 m" - "__xsize __div(__ysize, 2) l" - "0 __ysize l S" - } - @Graphic { 0.5f @Wide 2f @High ^/ 2f @High } - } - } - } - - - ################################################################### - # # - # Group 13 - punctuation. # - # # - ################################################################### - - def ";" { punct semicolon } - def "," { punct comma } - def col { punct colon } - - - ################################################################### - # # - # Additional short symbols (Knuth p. 132) # - # # - ################################################################### - - def "!" { exclam } - def "?" { question } - def "%" { percent } - def "(" { parenleft } - def ")" { parenright } - def "[" { bracketleft } - def "]" { bracketright } - - - ################################################################### - # # - # Common mathematical functions (from Knuth p. 162). # - # mod is included, since @Rel mod is easily typed if needed. # - # # - ################################################################### - - def arccos { @Base "arccos" } - def arcsin { @Base "arcsin" } - def arctan { @Base "arctan" } - def arg { @Base "arg" } - def cos { @Base "cos" } - def cosh { @Base "cosh" } - def cot { @Base "cot" } - def coth { @Base "coth" } - def csc { @Base "csc" } - def deg { @Base "deg" } - def det { @Base "det" } - def dim { @Base "dim" } - def exp { @Base "exp" } - def gcd { @Base "gcd" } - def hom { @Base "hom" } - def inf { @Base "inf" } - def ker { @Base "ker" } - def lg { @Base "lg" } - def lim { @Base "lim" } - def liminf { @OneCol { @Base "lim" ` @Base "inf" } } - def limsup { @OneCol { @Base "lim" ` @Base "sup" } } - def ln { @Base "ln" } - def log { @Base "log" } - def max { @Base "max" } - def min { @Base "min" } - def Pr { @Base "Pr" } - def sec { @Base "sec" } - def sin { @Base "sin" } - def sinh { @Base "sinh" } - def supr { @Base "sup" } - def tan { @Base "tan" } - def tanh { @Base "tanh" } - def mod { @Base "mod" } - - - ################################################################### - # # - # Arrow symbols. # - # # - ################################################################### - - def leftarrow { arrowleft } - def longleftarrow { { 1.6 1 } @Scale arrowleft } - def dblleftarrow { arrowdblleft } - def dbllongleftarrow { { 1.6 1 } @Scale arrowdblleft } - def rightarrow { arrowright } - def longrightarrow { { 1.6 1 } @Scale arrowright } - def dblrightarrow { arrowdblright } - def dbllongrightarrow { { 1.6 1 } @Scale arrowdblright } - def leftrightarrow { arrowboth } - def longleftrightarrow { { 1.6 1 } @Scale arrowboth } - def dblleftrightarrow { arrowdblboth } - def dbllongleftrightarrow { { 1.6 1 } @Scale arrowdblboth } - - def mapsto - { - @HContract @VContract { - @BackEnd @Case { - PostScript @Yield { - "0 ymark 0.16 ft sub moveto 0 ymark 0.16 ft add lineto stroke" - @Graphic arrowright - } - PDF @Yield { - "0 __sub(__ymark, __mul(__loutf, 0.16)) m 0 __add(__ymark, __mul(__loutf, 0.16)) l S" - @Graphic arrowright - } - } - } - } - - def longmapsto - { - @HContract @VContract { - @BackEnd @Case { - PostScript @Yield { - "0 ymark 0.16 ft sub moveto 0 ymark 0.16 ft add lineto stroke" - @Graphic { { 1.6 1 } @Scale arrowright } - } - PDF @Yield { - "0 __sub(__ymark, __mul(__loutf, 0.16)) m 0 __add(__ymark, __mul(__loutf, 0.16)) l S" - @Graphic { { 1.6 1 } @Scale arrowright } - } - } - } - } - - def hookleftarrow - { - @HContract @VContract { - @BackEnd @Case { - - PostScript @Yield { - "xsize ymark moveto xsize ymark 0.1 ft add 0.1 ft -90 90 arc stroke" - @Graphic leftarrow - } - - PDF @Yield { -# -# VT: draws a counterclockwise 180 degree arc from -90 to +90 degree positions -# (straight down to straight up) with centre = (xsize, ymark + 0.1 ft) -# and radius = 0.1 ft -# -# the control points therefore are: -# pt1 = (xsize + (4/3 * 0.1 ft), ymark) and pt2 = (xsize + (4/3 * 0.1 ft), ymark + 0.2 ft) -# - { - "__xsize __ymark m" # pt0 - "__add(__xsize, __div(__mul(0.4, __loutf), 3)) __ymark" # pt1 - "__add(__xsize, __div(__mul(0.4, __loutf), 3)) __add(__ymark, __mul(0.2, __loutf))" # pt2 - "__xsize __add(__ymark, __mul(0.2, __loutf)) c S" # pt3 - } - @Graphic leftarrow - } - - } - } - } - - def hookrightarrow - { - @HContract @VContract { - @BackEnd @Case { - - PostScript @Yield { - "0 ymark moveto 0 0.1 ft ymark add 0.1 ft -90 90 arcn stroke" - @Graphic rightarrow - } - - PDF @Yield { -# -# VT: draws a clockwise 180 degree arc from -90 to +90 degree positions -# (straight down to straight up) with centre = (0, ymark + 0.1 ft) -# and radius = 0.1 ft -# -# the control points therefore are: -# pt1 = (-4/3 * 0.1 ft, ymark) and pt2 = (-4/3 * 0.1 ft, ymark + 0.2 ft) -# - { - "0 __ymark m" # pt0 - "__div(__mul(-0.4, __loutf), 3) __ymark" # pt1 - "__div(__mul(-0.4, __loutf), 3) __add(__ymark, __mul(0.2, __loutf))" # pt2 - "0 __add(__ymark, __mul(0.2, __loutf)) c S" # pt3 - } - @Graphic rightarrow - } - - } - } - } - - def @ClipToSize right x - { - @HContract @VContract - @BackEnd @Case { - PostScript @Yield { - { - "grestore newpath 0 0 moveto xsize 0 lineto xsize ysize lineto" - "0 ysize lineto closepath clip gsave" - } @Graphic x - } - PDF @Yield { - "Q n 0 0 __xsize __ysize re W n q" @Graphic x - } - } - } - - def @ClipAboveMark - left amount - right x - { - @ClipToSize { ^//{{amount}o} x } - } - - def @ClipBelowMark - left amount - right x - { - @ClipToSize { x //{{amount}o} } - } - - def leftharpoonup - { - 0.04f @ClipBelowMark leftarrow - } - - def rightharpoonup - { - 0.04f @ClipBelowMark rightarrow - } - - def leftharpoondown - { - 0.02f @ClipAboveMark leftarrow - } - - def rightharpoondown - { - 0.02f @ClipAboveMark rightarrow - } - - def rightleftharpoons - { - @HContract @VContract { - rightharpoonup - ^//0.1fo - //0.1fo - leftharpoondown - } - } - - def leadsto { @HContract { similar &0.4fo arrowright } } - - def uparrow { arrowup } - def dbluparrow { arrowdblup } - def downarrow { arrowdown } - def dbldownarrow { arrowdbldown } - def updownarrow { @HContract { arrowup &0io arrowdown } } - def dblupdownarrow { @VContract { arrowdblup ^//0.2fo arrowdbldown } } - def nearrow { 0.5w @VShift 0.5w @HShift 45d @Rotate arrowright } - def searrow { 0.5w @VShift 0.5w @HShift 315d @Rotate arrowright } - def swarrow { 0.5w @VShift 0.5w @HShift 225d @Rotate arrowright } - def nwarrow { 0.5w @VShift 0.5w @HShift 135d @Rotate arrowright } - - - ################################################################### - # # - # Other symbols taken from TeX. # - # # - ################################################################### - - def ldots { . &0.3f . &0.3f . } - def cdots { dotmath &0.3f dotmath &0.3f dotmath } - def vdots { @OneRow { dotmath ^/0.3f dotmath /0.3f dotmath } } - def ddots { @OneCol @OneRow - { dotmath - ^/0.3f |0.3f dotmath - /0.3f | |0.3f dotmath - } - } - - - ################################################################### - # # - # Symbols taken from eqn (Kernighan and Cherry 1975). # - # # - ################################################################### - - def del { gradient } - def grad { gradient } - def "..." { ellipsis } - def ",...," { , ellipsis ``` , } - def "'" { minute } - def "''" { minute minute } - def "'''" { minute minute minute } - def "''''" { minute minute minute minute } - def empty { emptyset } - - - - ################################################################### - # # - # Miscellaneous # - # # - ################################################################### - - def triangleup { 0.8f @Font triangle } - def triangledown { 180d @Rotate 0.8f @Font triangle } - - ################################################################### - # # - # Symbols with parameters. # - # # - # These symbols are essentially those of eqn, with some # - # changes and additions. # - # # - ################################################################### - - def sup - precedence 60 - associativity left - left x - named gap { @SupGap } - right y - { - @HContract @VContract - { | 0.45w @VShift @Smaller @HSqueeze @VSqueeze y - ^/gap x - } - } - - def sub - precedence 60 - associativity left - left x - named gap { @SupGap } - right y - { - @HContract @VContract - { - # x - "." @KernShrink x - /gap | @Smaller @HSqueeze @VSqueeze y - } - } - - def tsub - precedence 60 - associativity left - left x - named gap { @SupGap } - right y - { - @HContract @VContract - { - x - /gap | &0io 0.2f @HShift @Smaller @HSqueeze @VSqueeze y - } - } - - def supp - precedence 60 - associativity left - left x - named gap { @SupGap } - right y - { - @HContract @VContract - { - { ^/gap x /gap } | y - } - } - - def on - precedence 61 - associativity left - left x - named gap { @SupGap } - right y - { - @Smaller @HSqueeze @VSqueeze x ^/ / - @Smaller @HSqueeze @VSqueeze y - } - - def ton - precedence 61 - associativity left - left x - named gap { @SupGap } - right y - { - @Smaller @HSqueeze @VSqueeze x ^/ / - &0io 0.3f @HShift @Smaller @HSqueeze @VSqueeze y - } - - def frac - precedence 54 - associativity left - left x - named gap { 0.2f } - right y - { - @HContract @VContract @Smaller @HSqueeze @VSqueeze - { 1w @VShift { x /gap } | fraction &0io | 0w @VShift { |gap y } - } - } - - def half { 1 frac 2 } - def third { 1 frac 3 } - - def over - precedence 54 - associativity left - left x - named gap { 0.2f } - right y - { - @HContract @VContract - { |0.5rt @OneCol @VSqueeze x - ^//gap @HLine - //gap |0.5rt @OneCol @VSqueeze @Strut y - } - } - - def from - precedence 58 - associativity left - left x - named gap { @ThinGap } - named skew { 0c } - right y - { - @HContract @VContract - { |0.5rt x - //gap |0.5rt &skew @Smaller @HSqueeze @VSqueeze y - } - } - - def to - precedence 58 - associativity left - left x - named gap { @ThinGap } - named skew { 0c } - right y - { - @HContract @VContract - { |0.5rt &skew @Smaller @HSqueeze @VSqueeze y - ^//gap |0.5rt x - } - } - - def widefrom - precedence 58 - associativity left - left x - named gap { @ThinGap } - right y - { - @HContract @VContract - { - x //gap @HScale y - } - } - - def wideto - precedence 58 - associativity left - left x - named gap { @ThinGap } - right y - { - @HContract @VContract - { - @HScale y ^//gap x - } - } - - def dot - precedence 62 - left x - named gap { @ThinGap } - { - x to gap { gap } skew { @SkewGap } . - } - - def dotdot - precedence 62 - left x - named gap { @ThinGap } - { - x to gap { gap } skew { @SkewGap } .. - } - - def hat - precedence 62 - left x - named gap { @ThinGap } - { - x to gap { gap } skew { @SkewGap } @Base "^" - } - - def tilde - precedence 62 - left x - named gap { @ThinGap } - { - x to gap { gap } skew { @SkewGap } @Base "~" - } - - def vec - precedence 62 - left x - named gap { @ThinGap } - { - x to gap { gap } skew { @SkewGap } arrowright - } - - def dyad - precedence 62 - left x - named gap { @ThinGap } - { - x to gap { gap } skew { @SkewGap } arrowboth - } - - def overbar - precedence 62 - left x - named gap { @ThinGap } - { - x wideto gap { gap } minus - } - - def underbar - precedence 62 - left x - named gap { @ThinGap } - { - x widefrom gap { gap } minus - } - - def sqrt - precedence 56 - named gap { @ThinGap } - right x - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - @VScale surd | @OneRow - { - @HLine line { "0.03 ft setlinewidth 2 setlinecap" } - ^//gap |gap @VSqueeze @Strut x # //gap - } - } - } - PDF @Yield { - @HContract @VContract - { -# -# VT: this PDF is correct but it renders badly in Acrobat (?problem -# with scaling by fractional factors) -# In other words, the @VScale value comes through correctly but it -# looks ugly; GhostScript's translation actually expands the -# "draw surd" instruction into raw moveto's and lineto's which -# it presumably gets from the font's definition of the glyph! -# - @VScale surd | @OneRow - { - @HLine line { "__mul(__loutf, 0.03) w 2 J" } - ^//gap |gap @VSqueeze @Strut x # //gap - } - } - } - } - } - - def root - precedence 56 - left x - right y - { - "" sup x &0io sqrt y - } - - def zroot - precedence 56 - left x - right y - { - def zsup right x { "+0.3f" @VShift 0.5f @Font @Space x } - - "-0.4f" @HShift { 1w @HShift { zsup x } } &0co sqrt y - } - - def above - precedence 52 - left x - named gap { @RowGap } - right y - { - |0.5rt x //gap |0.5rt y - } - - def labove - precedence 52 - left x - named gap { @RowGap } - right y - { - x //gap y - } - - def cabove - precedence 52 - left x - named gap { @RowGap } - right y - { - |0.5rt x //gap |0.5rt y - } - - def rabove - precedence 52 - left x - named gap { @RowGap } - right y - { - |1rt x //gap |1rt y - } - - def mabove - precedence 52 - left x - named gap { @RowGap } - right y - { - x /gap y - } - - def nextcol - precedence 50 - left x - named gap { @ColGap } - right y - { - x |gap y - } - - export row axisrow col lcol ccol rcol mcol - def matrix - precedence 100 - named gap { @MedGap } - named strut - named no { } - named No { } - named yes { 0.5f } - named Yes { 0.5f } - { No } - named atleft {} - named atright {} - named userow { No } - named shiftdelim { Yes } - body x - { - def @Strut - { - strut @Case { - "" @Yield {} - else @Yield { @OneRow { strut @High ^/ strut @High } } - } - } - - def newrow - precedence 50 - associativity left - left x - right y - { - x @Case { - "" @Yield { y | @Strut } - else @Yield { x /@RowGap y | @Strut } - } - } - - macro row { newrow "" } - - def newaxisrow - precedence 50 - associativity left - left x - right y - { - x @Case { - "" @Yield { y | @Strut } - else @Yield { x ^/@RowGap y | @Strut } - } - } - - macro axisrow { newaxisrow "" } - - def col - precedence 52 - associativity left - left x - named indent { 0.5rt } - right y - { - x @Case { - "" @Yield { &indent @OneCol y } - else @Yield { x |@ColGap &indent @OneCol y } - } - } - - def lcol - precedence 52 - associativity left - left x - right y - { - x col indent { 0i } y - } - - def ccol - precedence 52 - associativity left - left x - right y - { - x col indent { 0.5rt } y - } - - def rcol - precedence 52 - associativity left - left x - right y - { - x col indent { 1rt } y - } - - def mcol - precedence 52 - associativity left - left x - right y - { - x @Case { - "" @Yield { @OneCol y } - else @Yield { x |@ColGap @OneCol y } - } - } - - def delim right x - { - x @Case - { - "" @Yield @Null - else @Yield - { - shiftdelim @Case { - { Yes yes } @Yield { @VScale x } - else @Yield { @VCover x } - } - } - } - } - - @HContract @VContract { - delim atleft &@ThinGap - userow @Case { - {Yes yes} @Yield @HContract @VContract {^//gap @OneRow x //gap} - else @Yield vctr @HContract @VContract { //gap x //gap } - } - &@ThinGap delim atright - } - } - - macro pmatrix { matrix atleft { "1.5f" @Font ( } atright { "1.5f" @Font ) }} - macro bmatrix { matrix atleft { blbrack } atright { brbrack } } - macro brmatrix { matrix atleft { blbrace } atright { brbrace } } - macro fmatrix { matrix atleft { blfloor } atright { brfloor } } - macro cmatrix { matrix atleft { blceil } atright { brceil } } - macro amatrix { matrix atleft { blangle } atright { brangle } } - - ################################################################### - # # - # Group 5 (digits) # - # # - ################################################################### - - def "0" { zero } - def "1" { one } - def "2" { two } - def "3" { three } - def "4" { four } - def "5" { five } - def "6" { six } - def "7" { seven } - def "8" { eight } - def "9" { nine } - - - { Slope xheight2mark nostrut } @Font { separate @SpaceGap } @Space - initzunit @ZUnit 1f @YUnit @Body - -@End @Eq - -macro @E { @OneCol @Eq initzunit { 0.7f } } diff --git a/include/include/fig b/include/include/fig deleted file mode 100644 index 60395ae..0000000 --- a/include/include/fig +++ /dev/null @@ -1,29 +0,0 @@ -############################################################################### -# # -# Lout setup file for figure drawing (OBSOLETE: use @Diag instead) # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { figf } line # -# # -# This line causes Lout to read the definitions for equations, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { figf } - - -############################################################################### -# # -# This package does not offer the ability to change default options. # -# # -############################################################################### diff --git a/include/include/figf b/include/include/figf deleted file mode 100644 index 0fd060f..0000000 --- a/include/include/figf +++ /dev/null @@ -1,926 +0,0 @@ - -############################################################################### -# # -# Lout @Fig package for drawing figures (Version 2.0) # -# # -# Version 1.0 by Jeffrey H. Kingston, October 1991. # -# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. # -# Symbol names changed by JHK 5 March 1993 to avoid clashes with EPS files. # -# @CurveBox and @ShadowBox added by JHK April 1995. # -# # -# See "Fig - a Lout package for drawing figures" for user information. # -# # -# This package is now obsolete, having been replaced by @Diag. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -@SysPrependGraphic { "figf.lpg" } - -export in cm pt em sp vs ft dg - "<<" "**" "++" "--" @Max @Min - @Distance @XDistance @YDistance @Angle - @Prev "::" @Label @BaseOf @MarkOf @ShowLabels @Figure - @Frame @Box @CurveBox @ShadowBox @Square @Diamond @Polygon @Ellipse - @Circle @HLine @VLine @Line @HArrow @VArrow @Arrow @Arc - -def @Fig - named maxlabels { 200 } - named linestyle { solid } - named linewidth { 0.5 pt } - named linecap { round } - named dashlength { 0.15 cm } - named paint { nopaint } - named margin { 0.4c } - named arrow { noarrow } - named headstyle { open } - named headwidth { 0.05 cm } - named headlength { 0.15 cm } - body @Body -@Begin - - # Like @Graphic, but affects the graphics state of right parameter - def @InnerGraphic - left ps - right x - { - @BackEnd @Case { - PostScript @Yield { { ps gsave // grestore } @Graphic x } - PDF @Yield { } - } - } - - def in precedence 39 left x { - @BackEnd @Case { - PostScript @Yield { x "in" } - PDF @Yield { "__mul(__in, "x")" } - } - } - - def cm precedence 39 left x { - @BackEnd @Case { - PostScript @Yield { x "cm" } - PDF @Yield { "__mul(__cm, "x")" } - } - } - - def pt precedence 39 left x { - @BackEnd @Case { - PostScript @Yield { x "pt" } - PDF @Yield { "__mul(__pt, "x")" } - } - } - - def em precedence 39 left x { - @BackEnd @Case { - PostScript @Yield { x "em" } - PDF @Yield { "__mul(__em, "x")" } - } - } - - def sp precedence 39 left x { - @BackEnd @Case { - PostScript @Yield { x "sp" } - PDF @Yield { "__mul(__louts, "x")" } - } - } - - def vs precedence 39 left x { - @BackEnd @Case { - PostScript @Yield { x "vs" } - PDF @Yield { "__mul(__loutv, "x")" } - } - } - - def ft precedence 39 left x { - @BackEnd @Case { - PostScript @Yield { x "ft" } - PDF @Yield { "__mul(__loutf, "x")" } - } - } - - def dg precedence 39 left x { - @BackEnd @Case { - PostScript @Yield { x "dg" } - PDF @Yield { } - } - } - - def "<<" - precedence 38 - left length - right angle - { - @BackEnd @Case { - PostScript @Yield { - 0 0 length angle "lfigatangle" - } - PDF @Yield { - } - } - } - - def "**" - precedence 37 - left point - right length - { - @BackEnd @Case { - PostScript @Yield { - point length "lfigpmul" - } - PDF @Yield { - } - } - } - - def "++" - precedence 36 - associativity left - left x - right y - { - @BackEnd @Case { - PostScript @Yield { - x y "lfigpadd" - } - PDF @Yield { - } - } - } - - def "--" - precedence 36 - associativity left - left x - right y - { - @BackEnd @Case { - PostScript @Yield { - y x "lfigpsub" - } - PDF @Yield { - } - } - } - - def @Max - precedence 36 - left x - right y - { - @BackEnd @Case { - PostScript @Yield { - x y "lfigpmax" - } - PDF @Yield { - } - } - } - - def @Min - precedence 36 - left x - right y - { - @BackEnd @Case { - PostScript @Yield { - x y "lfigpmin" - } - PDF @Yield { - } - } - } - - def @Distance - precedence 35 - left x - right y - { - @BackEnd @Case { - PostScript @Yield { - x y "lfigdistance" - } - PDF @Yield { - } - } - } - - def @XDistance - precedence 35 - left x - right y - { - @BackEnd @Case { - PostScript @Yield { - x y "lfigxdistance" - } - PDF @Yield { - } - } - } - - def @YDistance - precedence 35 - left x - right y - { - @BackEnd @Case { - PostScript @Yield { - x y "lfigydistance" - } - PDF @Yield { - } - } - } - - def @Angle - precedence 35 - left x - right y - { - @BackEnd @Case { - PostScript @Yield { - x y "lfigangle" - } - PDF @Yield { - } - } - } - - def @Prev - { - @BackEnd @Case { - PostScript @Yield { - "lfigprevious" - } - PDF @Yield { - } - } - } - - def "::" - precedence 33 - left name - right x - { - @BackEnd @Case { - PostScript @Yield { - { "currentdict end" maxlabels "dict begin begin" - // "("name") lfigpromotelabels" } @Graphic x - } - PDF @Yield { - } - } - } - - def @Label - right name - { - @BackEnd @Case { - PostScript @Yield { - "/"name "lfigpointdef" - } - PDF @Yield { - } - } - } - - def @MarkOf - precedence 32 - left point - right x - { - @BackEnd @Case { - PostScript @Yield { - { point "translate" } @InnerGraphic - { - /0io |0io @OneCol @OneRow x |0io /0io - } - } - PDF @Yield { - } - } - } - - def @BaseOf - precedence 32 - left point - right x - { - @BackEnd @Case { - PostScript @Yield { - { point "translate" } @InnerGraphic - { - /0io |0io @OneRow @OneCol { - | @OneCol @OneRow x ^/ - } |0io /0io - } - } - PDF @Yield { - } - } - } - - def @ShowLabels - { - @BackEnd @Case { - PostScript @Yield { - "lfigshowlabels" @Graphic - } - PDF @Yield { - } - } - } - - def @Figure - named shape { } - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named arrow { arrow } - named headstyle { headstyle } - named headwidth { headwidth } - named headlength { headlength } - named paint { paint } - named margin { 0c } - right x - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - #fill the shape - paint @Case - { - nopaint @Yield {} - - { nochange darkblue blue lightblue darkgreen green lightgreen - darkred red lightred darkcyan cyan lightcyan darkmagenta - magenta lightmagenta darkyellow yellow lightyellow darkgray - gray lightgray darkgrey grey lightgrey black white } - @Yield - { "/lfig"paint "[" shape "] gsave lfigpaintpath grestore" } - } - - # stroke the path and add any arrowheads - linestyle @Case - { - { solid dashed cdashed dotted noline } @Yield - { - linewidth "setlinewidth" "lfig"linecap "setlinecap" - dashlength "/lfig"linestyle "[" shape "] lfigdopath" - arrow @Case - { - noarrow @Yield { pop pop } - { forward back both } @Yield - { dashlength "/lfig"linestyle "/"lfigblack - headstyle @Case - { { open halfopen closed } @Yield "lfig"headstyle } - headlength headwidth "lfig"arrow - } - } - } - } - } - @Graphic - { - ^/margin ^|margin @OneCol @OneRow x |margin - /margin - } - } - - PDF @Yield { - } - } - } - - def @Frame - right x - { - @Figure - shape {xsize 0 @Label X 0 ysize @Label Y} - { x } - } - - def @Box - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { margin } - right x - { - @Figure - shape { - # 0 0 @Label SW - # xsize 0 @Label SE - # xsize ysize @Label NE - # 0 ysize @Label NW - # SE ** 0.5 @Label S - # NW ** 0.5 @Label W - # W ++ SE @Label E - # S ++ NW @Label N - # NE ** 0.5 @Label CTR - # SW SE NE NW SW - lfigbox - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - x - } - - - def @CurveBox - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { margin } - right x - { - @Figure - shape { - lfigcurvebox - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - { 0c @HShift x } - } - - def @ShadowBox - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { margin } - named shadow { 0.2f } - right x - { - @BackEnd @Case { - PostScript @Yield { - @VContract @HContract 0c @HShift "lfigshadow" @Graphic - { - ^/shadow ^|shadow 0c @HShift - @Figure - shape { - lfigbox - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - 0c @HShift x - |shadow /shadow - } - } - PDF @Yield { - @VContract @HContract 0c @HShift - -# "lfigshadow" @Graphic is this: - { "__mul(__xmark, 2) 0 m __xsize 0 l" # xmark 2 mul 0 moveto xsize 0 lineto - "__xsize __sub(__ysize, __mul(__xmark, 2)) l" # xsize ysize xmark 2 mul sub lineto - "__sub(__xsize, __xmark) __sub(ysize, __mul(__xmark, 2)) l" # xsize xmark sub ysize xmark 2 mul sub lineto - "__sub(__xsize, __xmark) __xmark l" # xsize xmark sub xmark lineto - "__mul(__xmark, 2) __xmark l h f" # xmark 2 mul xmark lineto closepath fill - } @Graphic - - { - ^/shadow ^|shadow 0c @HShift - @Figure - shape { - lfigbox - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - 0c @HShift x - |shadow /shadow - } - } - } - } - - def @Square - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { margin } - right x - { - @Figure - shape { - # {xsize ysize} ** 0.5 @Label CTR - # CTR ++ {{xsize xsize} @Max {ysize ysize}}**0.5 @Label NE - # CTR ++ { {CTR @Distance NE} << 135 } @Label NW - # CTR ++ { {CTR @Distance NE} << 225 } @Label SW - # CTR ++ { {CTR @Distance NE} << 315 } @Label SE - # SW ** 0.5 ++ SE ** 0.5 @Label S - # NW ** 0.5 ++ NE ** 0.5 @Label N - # SW ** 0.5 ++ NW ** 0.5 @Label W - # SE ** 0.5 ++ NE ** 0.5 @Label E - # SW SE NE NW SW - lfigsquare - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - x - } - - def @Diamond - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { margin } - right x - { - @Figure - shape { - # {xsize 0} ** 0.5 @Label S - # {0 ysize} ** 0.5 @Label W - # S ++ W @Label CTR - # CTR ++ W @Label N - # CTR ++ S @Label E - # S E N W S - lfigdiamond - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - x - } - - def @Polygon - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { margin } - named sides { 3 } - named angle { "dup 180 exch div" } - right x - { - @Figure - shape { sides angle lfigpolygon } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - x - } - - def @Ellipse - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { margin } - right x - { - @Figure - shape { - # {xsize 0} ** 0.5 @Label S - # {0 ysize} ** 0.5 @Label W - # S ++ W @Label CTR - # CTR ++ W @Label N - # CTR ++ S @Label E - # CTR ++ {xsize 0} ** 0.3536 ++ {0 ysize} ** 0.3536 @Label NE - # CTR ++ {xsize 0} ** 0.3536 -- {0 ysize} ** 0.3536 @Label SE - # CTR -- {xsize 0} ** 0.3536 ++ {0 ysize} ** 0.3536 @Label NW - # CTR -- {xsize 0} ** 0.3536 -- {0 ysize} ** 0.3536 @Label SW - # S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S - lfigellipse - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - x - } - - def @Circle - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { margin } - right x - { - @Figure - shape { - # {xsize ysize} **0.5 @Label CTR - # CTR ++ {{xsize 0} @Max {ysize 0}}**0.5 @Label E - # CTR ++ { {CTR @Distance E} << 45 } @Label NE - # CTR ++ { {CTR @Distance E} << 90 } @Label N - # CTR ++ { {CTR @Distance E} << 135 } @Label NW - # CTR ++ { {CTR @Distance E} << 180 } @Label W - # CTR ++ { {CTR @Distance E} << 225 } @Label SW - # CTR ++ { {CTR @Distance E} << 270 } @Label S - # CTR ++ { {CTR @Distance E} << 315 } @Label SE - # S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S - lfigcircle - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - x - } - - def @HLine - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { 0c } - named arrow { arrow } - named headstyle { headstyle } - named headwidth { headwidth } - named headlength { headlength } - right x - { - @Figure - shape { - # 0 ymark @Prev @Label FROM - # xsize ymark @Prev @Label TO - lfighline - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - arrow { arrow } - headstyle { headstyle } - headwidth { headwidth } - headlength { headlength } - x - } - - def @VLine - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { 0c } - named arrow { arrow } - named headstyle { headstyle } - named headwidth { headwidth } - named headlength { headlength } - right x - { - @Figure - shape { - # xmark ysize @Prev @Label FROM - # xmark 0 @Prev @Label TO - lfigvline - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - arrow { arrow } - headstyle { headstyle } - headwidth { headwidth } - headlength { headlength } - x - } - - def @HArrow - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { 0c } - named arrow { forward } - named headstyle { headstyle } - named headwidth { headwidth } - named headlength { headlength } - right x - { - @Figure - shape { - # 0 ymark @Prev @Label FROM - # xsize ymark @Prev @Label TO - lfighline - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - arrow { arrow } - headstyle { headstyle } - headwidth { headwidth } - headlength { headlength } - x - } - - def @VArrow - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { 0c } - named arrow { forward } - named headstyle { headstyle } - named headwidth { headwidth } - named headlength { headlength } - right x - { - @Figure - shape { - # xmark ysize @Prev @Label FROM - # xmark 0 @Prev @Label TO - lfigvline - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - arrow { arrow } - headstyle { headstyle } - headwidth { headwidth } - headlength { headlength } - x - } - - def @Line - named from { 0 ysize } - named to { xsize 0 } - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { 0c } - named arrow { arrow } - named headstyle { headstyle } - named headwidth { headwidth } - named headlength { headlength } - right x - { - @Figure - shape { - from @Prev @Label FROM - to @Prev @Label TO - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - arrow { arrow } - headstyle { headstyle } - headwidth { headwidth } - headlength { headlength } - x - } - - def @Arrow - named from { 0 ysize } - named to { xsize 0 } - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { 0c } - named arrow { forward } - named headstyle { headstyle } - named headwidth { headwidth } - named headlength { headlength } - right x - { - @Figure - shape { - from @Prev @Label FROM - to @Prev @Label TO - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - arrow { arrow } - headstyle { headstyle } - headwidth { headwidth } - headlength { headlength } - x - } - - def @Arc - named from { 0 ysize } - named to { xsize 0 } - named ctr { 0 0 } - named direction { clockwise } - named linestyle { linestyle } - named linewidth { linewidth } - named linecap { linecap } - named dashlength { dashlength } - named paint { paint } - named margin { 0c } - named arrow { noarrow } - named headstyle { headstyle } - named headwidth { headwidth } - named headlength { headlength } - right x - { - @Figure - shape { - from @Label FROM - to @Label TO - ctr @Label CTR - FROM [ CTR - direction @Case { {clockwise anticlockwise} @Yield direction } - ] TO - } - linestyle { linestyle } - linewidth { linewidth } - linecap { linecap } - dashlength { dashlength } - paint { paint } - margin { margin } - arrow { arrow } - headstyle { headstyle } - headwidth { headwidth } - headlength { headlength } - x - } - - @BackEnd @Case { - PostScript @Yield { - { "grestore save gsave" maxlabels "dict begin lfigdict begin" - // "end end restore" - } @Graphic @Body - } - PDF @Yield { - } - } - -@End @Fig diff --git a/include/include/figf.lpg b/include/include/figf.lpg deleted file mode 100644 index 7465cef..0000000 --- a/include/include/figf.lpg +++ /dev/null @@ -1,1010 +0,0 @@ -%%BeginResource: procset LoutFigPrependGraphic -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston % -% Version 2.0 (includes CIRCUM label) January 1992 % -% % -% This file has been placed in the public domain by its author, % -% Jeffrey H. Kingston % -% % -% Although Fig is now obsolete I have updated it 20 October 2002 % -% to work with textures, i.e. replacing setrgbcolor with % -% LoutSetRGBColor. % -% % -% To assist in avoiding name clashes, the names of all symbols % -% defined here begin with "lfig". However, this is not feasible % -% with user-defined labels and some labels used by users. % -% % -% <point> is two numbers, a point. % -% <length> is one number, a length % -% <angle> is one number, an angle in degrees % -% <dashlength> is one number, the preferred length of a dash % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -errordict begin - /handleerror - { - { /Times-Roman findfont 8 pt scalefont setfont - 0 setgray 4 pt 4 pt moveto - $error /errorname get - dup lfigdict exch known - { lfigdict exch get } - { 30 string cvs } ifelse - show - ( Command: ) show - $error /command get 30 string cvs show - } stopped {} if - showpage stop - } def -end - -% concat strings: <string> <string> lfigconcat <string> -% must be defined outside lfigdict since used in lfigpromotelabels -/lfigconcat -{ 2 copy length exch length add string - dup 0 4 index putinterval - dup 3 index length 3 index putinterval - 3 1 roll pop pop -} def - -% <string> lfigdebugprint - -% must be defined outside lfigdict since used in arbitrary places -% /lfigdebugprint -% { print -% (; operand stack:\n) print -% count copy -% count 2 idiv -% { == -% (\n) print -% } repeat -% (\n) print -% } def - -/lfigdict 120 dict def -lfigdict begin - -% error messages -/dictfull (dictfull error: too many labels?) def -/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def -/execstackoverflow (execstackoverflow error: figure nested too deeply?) def -/limitcheck (limitcheck error: figure nested too deeply or too large?) def -/syntaxerror (syntaxerror error: syntax error in text of figure?) def -/typecheck (typecheck error: syntax error in text of figure?) def -/undefined (undefined error: unknown or misspelt label?) def -/VMError (VMError error: run out of memory?) def - -% push pi onto stack: - lfigpi <num> -/lfigpi 3.14159 def - -% arc directions -/clockwise false def -/anticlockwise true def - -% maximum of two numbers: <num> <num> lfigmax <num> -/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def - -% minimum of two numbers: <num> <num> lfigmin <num> -/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def - -% add two points: <point> <point> lfigpadd <point> -/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def - -% subtract first point from second: <point> <point> lfigpsub <point> -/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def - -% max two points: <point> <point> lfigpmax <point> -/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def - -% min two points: <point> <point> lfigpmin <point> -/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def - -% scalar multiplication: <point> <num> lfigpmul <point> -/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def - -% point at angle and distance: <point> <length> <angle> lfigatangle <point> -/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def - -% angle from one point to another: <point> <point> lfigangle <angle> -/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def - -% distance between two points: <point> <point> lfigdistance <length> -/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def - -% difference in x coords: <point> <point> lfigxdistance <length> -/lfigxdistance { pop 3 1 roll pop sub } def - -%difference in y coords: <point> <point> lfigydistance <length> -/lfigydistance { 3 1 roll pop sub exch pop } def - -% stroke a solid line: <length> <dashlength> lfigsolid - -/lfigsolid -{ pop pop [] 0 setdash stroke -} def - -% stroke a lfigdashed line: <length> <dashlength> lfigdashed - -/lfigdashed -{ 2 copy div 2 le 1 index 0 le or - { exch pop 1 pt lfigmax [ exch dup ] 0 setdash } - { dup [ exch 4 2 roll 2 copy div - 1 sub 2 div ceiling dup 4 1 roll - 1 add mul sub exch div ] 0 setdash - } ifelse stroke -} def - -% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed - -/lfigcdashed -{ 2 copy le 1 index 0 le or - { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash } - { dup [ 4 2 roll exch 2 copy exch div - 2 div ceiling div 1 index sub - ] exch 2 div setdash - } ifelse stroke -} def - -% stroke a dotted line: <length> <dashlength> lfigdotted - -/lfigdotted -{ 2 copy le 1 index 0 le or - { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash } - { 1 index exch div ceiling div - [ 0 3 2 roll ] 0 setdash - } ifelse stroke -} def - -% stroke a noline line: <length> <dashlength> lfignoline - -/lfignoline -{ pop pop -} def - -% painting (i.e. filling): - lfigwhite - (etc.) -/lfignopaint { } def -/lfignochange { fill } def -/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def -/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def -/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def -/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def -/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def -/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def -/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def -/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def -/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def -/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def -/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def -/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def -/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def -/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def -/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def -/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def -/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def -/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def -/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def -/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def -/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def -/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def -/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def -/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def -/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def -/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def - -% line caps (and joins, not currently used) -/lfigbutt 0 def -/lfiground 1 def -/lfigprojecting 2 def -/lfigmiter 0 def -/lfigbevel 2 def - -% shape and labels of the @Box symbol -/lfigbox -{ - 0 0 /SW lfigpointdef - xsize 0 /SE lfigpointdef - xsize ysize /NE lfigpointdef - 0 ysize /NW lfigpointdef - SE 0.5 lfigpmul /S lfigpointdef - NW 0.5 lfigpmul /W lfigpointdef - W SE lfigpadd /E lfigpointdef - S NW lfigpadd /N lfigpointdef - NE 0.5 lfigpmul /CTR lfigpointdef - [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef - SW SE NE NW SW -} def - -% shape and labels of the @CurveBox symbol -/lfigcurvebox -{ - - xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef - xsize 0.5 mul 0 /S lfigpointdef - xsize ysize 0.5 mul /E lfigpointdef - xsize 0.5 mul ysize /N lfigpointdef - 0 ysize 0.5 mul /W lfigpointdef - - xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef - xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef - xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef - xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef - - [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef - - xmark 0 - xsize xmark sub 0 - [ xsize xmark sub xmark ] - xsize xmark - xsize ysize xmark sub - [ xsize xmark sub ysize xmark sub ] - xsize xmark sub ysize - xmark ysize - [ xmark ysize xmark sub ] - 0 ysize xmark sub - 0 xmark - [ xmark xmark ] - xmark 0 -} def - -% shadow of the @ShadowBox symbol -% its shape and labels are done, somewhat inaccurately, with lfigbox -/lfigshadow -{ xmark 2 mul 0 moveto xsize 0 lineto - xsize ysize xmark 2 mul sub lineto - xsize xmark sub ysize xmark 2 mul sub lineto - xsize xmark sub xmark lineto - xmark 2 mul xmark lineto closepath fill -} def - -% shape and labels of the @Square symbol -/lfigsquare -{ - xsize ysize 0.5 lfigpmul /CTR lfigpointdef - CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef - CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef - CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef - CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef - SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef - NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef - SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef - SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef - [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef - SW SE NE NW SW -} def - -% shape and labels of the @Diamond symbol -/lfigdiamond -{ - xsize 0 0.5 lfigpmul /S lfigpointdef - 0 ysize 0.5 lfigpmul /W lfigpointdef - S W lfigpadd /CTR lfigpointdef - CTR W lfigpadd /N lfigpointdef - CTR S lfigpadd /E lfigpointdef - [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef - S E N W S -} def - -% shape and labels of the @Ellipse symbol -/lfigellipse -{ - xsize 0 0.5 lfigpmul /S lfigpointdef - 0 ysize 0.5 lfigpmul /W lfigpointdef - S W lfigpadd /CTR lfigpointdef - CTR W lfigpadd /N lfigpointdef - CTR S lfigpadd /E lfigpointdef - CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef - 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef - xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef - 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef - [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef - S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S -} def - -% shape and labels of the @Circle symbol -/lfigcircle -{ - xsize ysize 0.5 lfigpmul /CTR lfigpointdef - CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef - CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef - CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef - CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef - CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef - CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef - CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef - CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef - [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef - S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S -} def - -% shape and labels of the @HLine and @HArrow symbols -/lfighline -{ - 0 ymark lfigprevious /FROM lfigpointdef - xsize ymark lfigprevious /TO lfigpointdef -} def - -% shape and labels of the @VLine and @VArrow symbols -/lfigvline -{ - xmark ysize lfigprevious /FROM lfigpointdef - xmark 0 lfigprevious /TO lfigpointdef -} def - -% points of a polygon around base with given no of sides, vert init angle: -% <sides> <angle> figpolygon <point> ... <point> -/lfigpolygon -{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef - 90 sub CTR 2 copy lfigmax 5 3 roll - [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef - exch dup 360 exch div exch - 1 1 3 2 roll - { 4 string cvs (P) exch lfigconcat cvn - 6 copy pop pop lfigatangle 2 copy 10 2 roll - 3 2 roll lfigpointdef - dup 3 1 roll add exch - } for - pop lfigatangle -} def - -% next array element: <array> <index> lfiggetnext <array> <index> <any> true -% or <array> <index> false -/lfiggetnext -{ 2 copy exch length ge - { false } - { 2 copy get exch 1 add exch true } ifelse -} def - -% check whether thing is number: <any> lfigisnumbertype <any> <bool> -/lfigisnumbertype -{ dup type dup - /integertype eq exch /realtype eq or -} def - -% check whether thing is an array: <any> lfigisarraytype <any> <bool> -/lfigisarraytype { dup type /arraytype eq } def - -% get next item: <array> <index> lfiggetnextitem <array> <index> 0 -% or <array> <index> <array> 1 -% or <array> <index> <point> 2 -/lfiggetnextitem -{ lfiggetnext - { lfigisarraytype - { 1 - } - { lfigisnumbertype - { 3 1 roll - lfiggetnext - { lfigisnumbertype - { 4 3 roll exch 2 - } - { pop 3 2 roll pop 0 - } ifelse - } - { 3 2 roll pop 0 - } ifelse - } - { pop 0 - } ifelse - } ifelse - } - { 0 - } ifelse -} def - -% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist> -% the path goes from x1 y1 to x2 y2 about centre x0 y0, -% anticlockwise if bool is true else clockwise. -% The orientations of backwards pointing and forwards pointing -% arrowheads are returned in the two angles, and -% the length of the arc is returned in <dist>. -/lfigsetarc -{ - 20 dict begin - matrix currentmatrix 8 1 roll - 2 copy translate 2 copy 8 2 roll - 4 2 roll lfigpsub 6 2 roll lfigpsub - dup /y1 exch def dup mul /y1s exch def - dup /x1 exch def dup mul /x1s exch def - dup /y2 exch def dup mul /y2s exch def - dup /x2 exch def dup mul /x2s exch def - - y1s y2s eq - { -1 - } - { y1s x2s mul y2s x1s mul sub y1s y2s sub div - } ifelse - /da exch def - - x1s x2s eq - { -1 - } - { x1s y2s mul x2s y1s mul sub x1s x2s sub div - } ifelse - /db exch def - - da 0 gt db 0 gt and - { /LMax da sqrt db sqrt lfigmax def - /scalex da sqrt LMax div def - /scaley db sqrt LMax div def - scalex scaley scale - 0 0 LMax - 0 0 x1 scalex mul y1 scaley mul lfigangle - 0 0 x2 scalex mul y2 scaley mul lfigangle - 2 copy eq { 360 add } if - 2 copy 8 2 roll - 5 index { arc } { arcn } ifelse - 2 index 1 index - { 90 sub } { 90 add } ifelse - dup sin scaley mul exch cos scalex mul atan - 2 index 2 index - { 90 add } { 90 sub } ifelse - dup sin scaley mul exch cos scalex mul atan - 5 2 roll % res1 res2 ang1 ang2 anticlockwise - { exch sub } { sub } ifelse - dup 0 le { 360 add } if lfigpi mul LMax mul 180 div - } - { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq - 0 0 x1 y1 lfigdistance 0 gt and - { 0 0 - 0 0 x1 y1 lfigdistance - 0 0 x1 y1 lfigangle - 0 0 x2 y2 lfigangle - 2 copy eq { 360 add } if - 2 copy 8 2 roll - 5 index { arc } { arcn } ifelse - 2 index 1 index - { 90 sub } { 90 add } ifelse - 2 index 2 index - { 90 add } { 90 sub } ifelse - 5 2 roll % res1 res2 ang1 ang2 clockwise - { exch sub } { sub } ifelse - dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div - } - { x2 y2 lineto pop - x2 y2 x1 y1 lfigangle - x1 y1 x2 y2 lfigangle - x1 y1 x2 y2 lfigdistance - } ifelse - } ifelse - 4 -1 roll setmatrix - end -} def - -% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3 -% and return arrowhead angles and length of curve (actually 0) -% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length> -/lfigsetcurve -{ 8 copy curveto pop pop - lfigangle - 5 1 roll - 4 2 roll lfigangle - exch - 0 -} def - -% lfigpaintpath: paint a path of the given shape -% /paint [ shape ] lfigpaintpath - -/lfigpaintpath -{ - 10 dict begin - 0 newpath - /prevseen false def - /curveseen false def - { lfiggetnextitem - dup 0 eq { pop exit } - { 1 eq - { /curveseen true def - /curve exch def - curve length 0 eq { /curveseen false def } if - } - { /ycurr exch def - /xcurr exch def - prevseen - { curveseen - { curve length 4 eq - { xprev yprev - curve 0 get curve 1 get - curve 2 get curve 3 get - xcurr ycurr - lfigsetcurve pop pop pop - } - { xprev yprev xcurr ycurr - curve length 1 ge { curve 0 get } { 0 } ifelse - curve length 2 ge { curve 1 get } { 0 } ifelse - curve length 3 ge { curve 2 get } { true } ifelse - 7 1 roll - lfigsetarc pop pop pop - } ifelse - } - { xcurr ycurr lineto - } ifelse - } - { xcurr ycurr moveto - } ifelse - /xprev xcurr def - /yprev ycurr def - /prevseen true def - /curveseen false def - } ifelse - } ifelse - } loop pop pop cvx exec - end -} def - -% stroke a path of the given shape in the given linestyle and dash length. -% Return the origin and angle of the backward and forward arrow heads. -% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>] -/lfigdopath -{ - 10 dict begin - 0 - /prevseen false def - /curveseen false def - /backarrow [] def - /fwdarrow [] def - { - lfiggetnextitem - dup 0 eq { pop exit } - { - 1 eq - { /curveseen true def - /curve exch def - curve length 0 eq { /prevseen false def } if - } - { /ycurr exch def - /xcurr exch def - prevseen - { newpath xprev yprev moveto - curveseen - { curve length 4 eq - { xprev yprev - curve 0 get curve 1 get - curve 2 get curve 3 get - xcurr ycurr lfigsetcurve - } - { xprev yprev xcurr ycurr - curve length 1 ge { curve 0 get } { 0 } ifelse - curve length 2 ge { curve 1 get } { 0 } ifelse - curve length 3 ge { curve 2 get } { true } ifelse - 7 1 roll - lfigsetarc - } ifelse - } - { xcurr ycurr lineto - xcurr ycurr xprev yprev lfigangle dup 180 sub - xprev yprev xcurr ycurr lfigdistance - } ifelse - 6 index 6 index cvx exec - [ xprev yprev 5 -1 roll ] - backarrow length 0 eq - { /backarrow exch def } - { pop } ifelse - [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def - } if - /xprev xcurr def - /yprev ycurr def - /prevseen true def - /curveseen false def - } ifelse - } ifelse - } loop - pop pop pop pop - backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse - fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse - end -} def - -% lfigdoarrow: draw an arrow head of given form -% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow - -/lfigdoarrow -{ matrix currentmatrix 8 1 roll - dup 0 get 1 index 1 get translate - 2 get rotate - [ 2 index neg 2 index 0 0 - 3 index 3 index neg - 1 index 10 index mul 0 - 7 index 7 index ] - 4 1 roll pop pop pop - dup 3 1 roll - gsave lfigpaintpath grestore lfigdopath pop pop - setmatrix -} def - -% arrow head styles -/lfigopen 0.0 def -/lfighalfopen 0.5 def -/lfigclosed 1.0 def - -% stroke no arrows, forward, back, and both -/lfignoarrow { pop pop pop pop pop pop pop pop } def -/lfigforward { 7 -1 roll lfigdoarrow pop } def -/lfigback { 8 -2 roll pop lfigdoarrow } def -/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def - -% lfigprevious: return previous point on path -/lfigprevious -{ lfigisnumbertype - { 2 copy } - { lfigisarraytype - { 2 index 2 index } - { 0 0 } - ifelse - } ifelse -} def - -% label a point in 2nd top dictionary: <point> /name lfigpointdef - -/lfigpointdef -{ - % (Entering lfigpointdef) lfigdebugprint - [ 4 2 roll transform - /itransform cvx ] cvx - currentdict end - 3 1 roll - % currentdict length currentdict maxlength lt - % { def } - % { exec moveto (too many labels) show stop } - % ifelse - def - begin - % (Leaving lfigpointdef) lfigdebugprint -} def - -% promote labels from second top to third top dictionary -% <string> lfigpromotelabels - -/lfigpromotelabels -{ - % (Entering lfigpromotelabels) lfigdebugprint - currentdict end exch currentdict end - { exch 20 string cvs 2 index - (@) lfigconcat exch lfigconcat cvn exch def - } forall pop begin - % (Leaving lfigpromotelabels) lfigdebugprint -} def - -% show labels (except CIRCUM): - lfigshowlabels - -/lfigshowlabels -{ - % (Entering lfigshowlabels) lfigdebugprint - currentdict end - currentdict - { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key - { pop pop pop pop pop } - { pop cvx exec 2 copy - newpath 1.5 pt 0 360 arc - 0 setgray fill - /Times-Roman findfont 8 pt scalefont setfont - moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show - } - ifelse - } forall - begin - % (Leaving lfigshowlabels) lfigdebugprint -} def - -% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle> -/lfigfixangle -{ - % (Entering lfigfixangle) lfigdebugprint - { dup 0 ge { exit } if - 360 add - } loop - { dup 360 lt { exit } if - 360 sub - } loop - % (Leaving lfigfixangle) lfigdebugprint -} def - -% find point on circumference of box: alpha a b lfigboxcircum x y -/lfigboxcircum -{ - % (Entering lfigboxcircum) lfigdebugprint - 4 dict begin - /b exch def - /a exch def - lfigfixangle /alpha exch def - 0 0 a b lfigangle /theta exch def - - % if alpha <= theta, return (a, a*tan(alpha)) - alpha theta le - { a a alpha sin mul alpha cos div } - { - % else if alpha <= 180 - theta, return (b*cot(alpha), b) - alpha 180 theta sub le - { b alpha cos mul alpha sin div b } - { - % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) - alpha 180 theta add le - { a neg a neg alpha sin mul alpha cos div } - { - % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) - alpha 360 theta sub le - { b neg alpha cos mul alpha sin div b neg } - { - % else 360 - theta <= alpha, return (a, a*tan(alpha)) - a a alpha sin mul alpha cos div - } ifelse - } ifelse - } ifelse - } ifelse - end - % (Leaving lfigboxcircum) lfigdebugprint -} def - -% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2 -% or x2 1 -% or 0 -/lfigqroots -{ - 4 dict begin - /c exch def - /b exch def - /a exch def - /disc b b mul 4 a c mul mul sub def - disc 0 lt - { 0 - } - { disc 0 eq - { b neg 2 a mul div - 1 - } - { b neg disc sqrt add 2 a mul div - b neg disc sqrt sub 2 a mul div - 2 - } - ifelse - } - ifelse - end -} def - -% work our which quadrant: <angle> lfigquadrant <0-3> -/lfigquadrant -{ dup 90 lt - { pop 0 - } - { dup 180 lt - { pop 1 - } - { 270 lt - { 2 - } - { 3 - } ifelse - } ifelse - } ifelse -} def - -% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y -/lfigcb -{ - 6 dict begin - /xmk exch def - /b exch def - /a exch def - /alpha exch def - /theta1 0 0 a b xmk sub lfigangle def - /theta2 0 0 a xmk sub b lfigangle def - alpha theta1 le - { % if alpha <= theta1, return (a, a*tan(alpha)) - a a alpha sin mul alpha cos div - } - { alpha theta2 ge - { % else if alpha > theta2, return (b*cot(alpha), b) - b alpha cos mul alpha sin div b - } - { - % else, return the intersection of line and circle - a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect - dup 0 eq - { % should never happen, just return any reasonable point - pop - a b 0.5 lfigpmul - } - { 1 eq - { % should never happen, just return the point on top of stack - } - { % the usual case, two points on stack, return the larger - lfigpmax - } ifelse - } ifelse - } ifelse - } ifelse - end -} def - -% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y -/lfigcurveboxcircum -{ - % (Entering lfigcurveboxcircum) lfigdebugprint - 5 dict begin - /xmk exch def - /b exch def - /a exch def - lfigfixangle /alpha exch def - - % work out which quadrant we are in, and reflect accordingly - /quad alpha lfigquadrant def - quad 0 eq - { alpha a b xmk lfigcb - } - { quad 1 eq - { 180 alpha sub a b xmk lfigcb exch neg exch - } - { quad 2 eq - { alpha 180 sub a b xmk lfigcb neg exch neg exch - } - { 360 alpha sub a b xmk lfigcb neg - } ifelse - } ifelse - } ifelse - end - % (Leaving lfigcurveboxcircum) lfigdebugprint -} def - -% find point on circumference of diamond: alpha a b lfigdiamondcircum x y -/lfigdiamondcircum -{ - % (Entering lfigdiamondcircum) lfigdebugprint - 4 dict begin - /b exch def - /a exch def - lfigfixangle /alpha exch def - b alpha cos abs mul a alpha sin abs mul add /denom exch def - a b mul alpha cos mul denom div - a b mul alpha sin mul denom div - end - % (Leaving lfigdiamondcircum) lfigdebugprint -} def - -% find point on circumference of ellipse: alpha a b lfigellipsecircum x y -/lfigellipsecircum -{ - % (Entering lfigellipsecircum) lfigdebugprint - 4 dict begin - /b exch def - /a exch def - lfigfixangle /alpha exch def - b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def - a b mul alpha cos mul denom div - a b mul alpha sin mul denom div - end - % (Leaving lfigellipsecircum) lfigdebugprint -} def - -% find point of intersection of two lines each defined by two points -% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y -/lfiglineintersect -{ - % (Entering lfiglineintersect) lfigdebugprint - 13 dict begin - /y4 exch def - /x4 exch def - /y3 exch def - /x3 exch def - /y2 exch def - /x2 exch def - /y1 exch def - /x1 exch def - x2 x1 sub /x21 exch def - x4 x3 sub /x43 exch def - y2 y1 sub /y21 exch def - y4 y3 sub /y43 exch def - y21 x43 mul y43 x21 mul sub /det exch def - - % calculate x - y21 x43 mul x1 mul - y43 x21 mul x3 mul sub - y3 y1 sub x21 mul x43 mul add - det div - - % calculate y - x21 y43 mul y1 mul - x43 y21 mul y3 mul sub - x3 x1 sub y21 mul y43 mul add - det neg div - - end - % (Leaving lfiglineintersect) lfigdebugprint -} def - -% find point on circumference of polygon -% alpha radius num theta lfigpolycircum x y -/lfigpolycircum -{ - % (Entering lfigpolycircum) lfigdebugprint - 13 dict begin - /theta exch def - /num exch def - /radius exch def - /alpha exch def - - % calculate delta, the angle from theta to alpha - alpha theta sub lfigfixangle - - % calculate the angle which is the multiple of 360/num closest to delta - 360 num div div truncate 360 num div mul theta add /anglea exch def - - % calculate the next multiple of 360/num after anglea - anglea 360 num div add /angleb exch def - - % intersect the line through these two points with the alpha line - anglea cos anglea sin angleb cos angleb sin - 0 0 alpha cos 2 mul alpha sin 2 mul - lfiglineintersect radius lfigpmul - - end - % (Leaving lfigpolycircum) lfigdebugprint -} def - -% find point of intersection of a point and a circle -% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2 -% or xb yb 1 -% or 0 -/lfigcircleintersect -{ - % (Entering lfigcircleintersect) lfigdebugprint - 15 dict begin - /theta exch def - /y1 exch def - /x1 exch def - /r exch def - /y0 exch def - /x0 exch def - - % if sin(theta) = 0 then line is horizontal and y must be y1 - theta sin abs 0.00001 lt - { - /a 1 def - /b -2 x0 mul def - /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def - a b c lfigqroots dup - 0 eq - { pop - 0 - } - { 1 eq - { y1 1 - } - { y1 exch y1 2 - } ifelse - } ifelse - } - { - /ct theta cos theta sin div def - /a ct ct mul 1 add def - /b ct x1 x0 sub mul y1 add y0 sub 2 mul def - /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def - a b c lfigqroots dup - 0 eq - { pop - 0 - } - { 1 eq - { y1 add /yb exch def - yb y1 sub ct mul x1 add /xb exch def - xb yb 1 - } - { y1 add /ya exch def - ya y1 sub ct mul x1 add /xa exch def - y1 add /yb exch def - yb y1 sub ct mul x1 add /xb exch def - xa ya xb yb 2 - } ifelse - } ifelse - } ifelse - end - % (Leaving lfigcircleintersect) lfigdebugprint -} def - -% add CIRCUM operator with this body: <array> lfigcircumdef - -/lfigcircumdef -{ % (Entering lfigcircumdef) lfigdebugprint - /CIRCUM exch cvx - currentdict end - 3 1 roll - % currentdict length currentdict maxlength lt - % { def } - % { exec moveto (too many labels) show stop } - % ifelse - def - begin - % (Leaving lfigcircumdef) lfigdebugprint -} def - -end -%%EndResource diff --git a/include/include/graph b/include/include/graph deleted file mode 100644 index 8f6c2a2..0000000 --- a/include/include/graph +++ /dev/null @@ -1,112 +0,0 @@ -############################################################################### -# # -# Lout setup file for graph drawing # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# 21 June 2013 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { graphf } line # -# # -# This line causes Lout to read the definitions for graphs, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { graphf } - - -############################################################################### -# # -# The @GraphSetup @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @GraphSetup - - ############################################################################# - # # - # Options for @Graph only # - # # - ############################################################################# - - # style { frame } - # font { } - # named xorigin { none } - # named yorigin { none } - # named xlog { none } - # named ylog { none } - # width { 6.0c } - # height { 4.0c } - # xextra { auto } - # yextra { auto } - # xdecreasing { no } - # ydecreasing { no } - # leftcaption { } - # rightcaption { } - # abovecaption { } - # belowcaption { } - # leftgap { 1.5c } - # rightgap { 0.5c } - # abovegap { 0.5c } - # belowgap { 0.5c } - # hidecaptions { yes } - # xmin { none } - # xmax { none } - # ymin { none } - # ymax { none } - # xticksep { none } - # yticksep { none } - # rticksep { none } - # xticks { auto } - # yticks { auto } - # rticks { } - # xticklength { 0.5f } - # yticklength { 0.5f } - # rticklength { 0.5f } - # objects { } - # save { no } - - ############################################################################# - # # - # Options for @Graph and @Data # - # # - ############################################################################# - - # points { none } - # symbolsize { 0.15f } - # symbollinewidth { currentlinewidth } - # pairs { none } - # dashlength { 0.2f } - # linewidth { currentlinewidth } - # colour { none } - # paint { no } - # texture { solid } - # dataformat { xandy } - - ############################################################################# - # # - # Options for @GraphCross etc. and @GraphNoLine etc. # - # # - # Owing to clashes the names of these options differ slightly from the # - # names of the corresponding options of @GraphCross etc. and @GraphNoLine # - # etc. whose default values they are, in being prefixed by an "o". # - # # - ############################################################################# - - # osymbolsize { 0.15f } - # osymbollinewidth { currentlinewidth } - # odashlength { 0.2f } - # olinewidth { currentlinewidth } - # olength { 1.0f } -} diff --git a/include/include/graphf b/include/include/graphf deleted file mode 100644 index fad552f..0000000 --- a/include/include/graphf +++ /dev/null @@ -1,1097 +0,0 @@ - -############################################################################### -# # -# Lout @Graph package for drawing graphs (Version 1.1) # -# # -# Version 1.0 (December 1993). # -# Version 1.1 (adds @GraphSetup, June 2013) # -# Jeffrey H. Kingston # -# # -# This package draws graphs, the statistical kind not the graph-theoretical # -# kind. See the User's Guide for user info. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -@SysInclude { graphf.etc } # @GraphMath -@SysInclude { lengths } # @LoutLengths -@SysInclude { coltex } # @ColourCommand and @TextureCommand -@SysPrependGraphic { graphf.lpg } - - -############################################################################### -# # -# @GraphZZZ symbol - not for ordinary use # -# # -############################################################################### - -def @GraphZZZ - left p - named margin { 0c } - named adj { 0 0 } - right x -{ - @BackEnd @Case { - PostScript @Yield { - @Null & # kills previous white space - @HContract @VContract { - //0io ||0io @HContract @VContract - { p "trpoint translate" adj "translate gsave" // "grestore" } - @Graphic { //margin ||margin x ||margin //margin } - ||0io //0io - } - } - # VT: PDF does nothing - PDF @Yield { - @Null & # kills previous white space - @HContract @VContract { - //0io ||0io @HContract @VContract - { "% @GraphZZZ UNIMPLEMENTED" } - @Graphic { //margin ||margin x ||margin //margin } - ||0io //0io - } - } - } -} - - -############################################################################### -# # -# @GraphSetup symbol # -# # -############################################################################### - -export @GraphCross @GraphPlus @GraphSquare @GraphFilledSquare - @GraphDiamond @GraphFilledDiamond @GraphCircle @GraphFilledCircle - @GraphTriangle @GraphFilledTriangle - - @GraphNoLine @GraphSolid @GraphDashed @GraphDotted @GraphDotDashed - @GraphDotDotDashed @GraphDotDotDotDashed - - @Graph - -def @GraphSetup - named style { frame } - named font { } - named xorigin named none { "false" } { none } - named yorigin named none { "false" } { none } - named xlog named none { "0" } { none } - named ylog named none { "0" } { none } - import @LoutLengths named width { 6.0c } - import @LoutLengths named height { 4.0c } - import @PSLengths named xextra { auto } - import @PSLengths named yextra { auto } - named xdecreasing { no } - named ydecreasing { no } - named leftcaption { } - named rightcaption { } - named abovecaption { } - named belowcaption { } - import @LoutLengths named leftgap { 1.5c } - import @LoutLengths named rightgap { 0.5c } - import @LoutLengths named abovegap { 0.5c } - import @LoutLengths named belowgap { 0.5c } - named hidecaptions { yes } - named xmin named none { "false" } { none } - named xmax named none { "false" } { none } - named ymin named none { "false" } { none } - named ymax named none { "false" } { none } - named xticksep named none { "0" } { none } - named yticksep named none { "0" } { none } - named rticksep named none { "0" } { none } - import @GraphMath named xticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { auto } - import @GraphMath named yticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { auto } - import @GraphMath named rticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { } - import @PSLengths named xticklength { 0.5f } - import @PSLengths named yticklength { 0.5f } - import @PSLengths named rticklength { 0.5f } - named objects - named @NW - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg ysize" } margin { margin } x } - named @SW - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg 0" } margin { margin } x } - named @SE - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "0 0" } margin { margin } x } - named @NE - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "0 ysize" } margin { margin } x } - named @W - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg ysize 2 div" } margin { margin } x } - named @S - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg 2 div 0" } margin { margin } x } - named @E - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "0 ysize 2 div" } margin { margin } x } - named @N - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg 2 div ysize" } margin { margin } x } - named @CTR - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - {at @GraphZZZ adj {"xsize neg 2 div ysize 2 div"} margin {margin} x} - {} - named save { no } - named points named none { "none" } { none } - import @PSLengths named symbolsize { 0.15f } - import @PSLengths named symbollinewidth { "currentlinewidth" } - named pairs named none { "none" } { none } - import @PSLengths named dashlength { 0.2f } - import @PSLengths named linewidth { "currentlinewidth" } - named colour color named none { "none" } { none } - named paint { no } - import @TextureImport named texture { solid } - named dataformat { xandy } - import @LoutLengths named osymbolsize { 0.15f } - import @PSLengths named osymbollinewidth { "currentlinewidth" } - import @PSLengths named odashlength { 0.2f } - import @PSLengths named olinewidth { "currentlinewidth" } - import @LoutLengths named olength { 1.0f } -{ - def @GraphCross - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize ysize lineto 0 ysize moveto" - # "xsize 0 lineto [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "docross" - // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract - { "n [] 0 d 0 0 m __xsize __ysize l 0 __ysize m __xsize 0 l S"} - # uses S because PostScript version does NOT use closepath - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphPlus - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath xmark 0 moveto xmark ysize lineto 0 ymark moveto" - # "xsize ymark lineto [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "doplus" - // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract - { "n [] 0 d __xmark 0 m __xmark __ysize l 0 __ymark m __xsize __ymark l S"} - # uses S because PostScript version does NOT use closepath - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphSquare - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto" - # "0 ysize lineto closepath [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dosquare" - // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 0 __xsize __ysize re s"} - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphFilledSquare - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize" - # "lineto closepath gsave [] 0 setdash stroke grestore fill" - "lgraphdict begin xmark ymark xmark" - symbollinewidth "dofilledsquare" // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 0 __xsize __ysize re b"} - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphDiamond - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto" - # "xmark ysize lineto closepath [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dodiamond" - // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l s"} - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphFilledDiamond - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto" - # "xmark ysize lineto closepath gsave [] 0 setdash stroke - # grestore fill" - "lgraphdict begin xmark ymark xmark" - symbollinewidth "dofilleddiamond" // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l b" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphCircle - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath xmark ymark xmark 0 360 arc" - # "[] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "docircle" - // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract -# -# draw a circle whose centre is at (xmark, ymark) and whose radius is xmark units; -# -# for curveto to work, we need to calculate the control points of the Bezier curve -# as well as move the pen to the correct initial point. The circle is drawn as two -# arcs of 180 degrees -# -# pt0 = (xmark + xmark, ymark) -# pt1 = (xmark + xmark, ymark + 4/3 * xmark) -# pt2 = (0, ymark + 4/3 * xmark) -# pt3 = (0, ymark) -# -# pt0 = (0, ymark) -# pt1 = (0, ymark - 4/3 * xmark) -# pt2 = (xmark + xmark, ymark - 4/3 * xmark) -# pt3 = (xmark + xmark, ymark) -# - {"n [] 0 d" - "__mul(2, __xmark) __ymark m" - "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1 - "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2 - "0 __ymark c" # pt3 - - "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1 - "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2 - "__mul(2, __xmark) __ymark c S" # pt3 - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphFilledCircle - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - # "newpath xmark ymark xmark 0 360 arc" - # "gsave [] 0 setdash stroke grestore fill" - "lgraphdict begin xmark ymark xmark" - symbollinewidth "dofilledcircle" // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract -# -# draw a filled circle whose centre is at (xmark, ymark) and whose radius is xmark units; -# -# for curveto to work, we need to calculate the control points of the Bezier curve -# as well as move the pen to the correct initial point. The circle is drawn as two -# arcs of 180 degrees -# -# pt0 = (xmark + xmark, ymark) -# pt1 = (xmark + xmark, ymark + 4/3 * xmark) -# pt2 = (0, ymark + 4/3 * xmark) -# pt3 = (0, ymark) -# -# pt0 = (0, ymark) -# pt1 = (0, ymark - 4/3 * xmark) -# pt2 = (xmark + xmark, ymark - 4/3 * xmark) -# pt3 = (xmark + xmark, ymark) -# -# Note: this is not a strict translation because there is a setdash bracketed by -# gsave/grestore in the above PostScript but there is no closepath before it; -# but in PDF, it is not possible to execute a setdash within a path definition. -# - {"n [] 0 d" - "__mul(2, __xmark) __ymark m" - "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1 - "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2 - "0 __ymark c" # pt3 - - "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1 - "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2 - "__mul(2, __xmark) __ymark c b" # pt3 - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphTriangle - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto" - # "closepath [] 0 setdash stroke" - "lgraphdict begin xmark ymark xmark" symbollinewidth "dotriangle" - // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l s"} - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphFilledTriangle - import @LoutLengths named symbolsize { osymbolsize } - import @PSLengths named symbollinewidth { osymbollinewidth } - { - @BackEnd @Case { - - PostScript @Yield { - @HContract @VContract - { - # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto" - # "closepath gsave [] 0 setdash stroke grestore fill" - "lgraphdict begin xmark ymark xmark" - symbollinewidth "dofilledtriangle" // "end" - } - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - PDF @Yield { - @HContract @VContract - {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l h b"} - @Graphic {symbolsize @High symbolsize @Wide ^| - symbolsize @Wide ^/ symbolsize @High} - } - - } - } - - def @GraphNoLine - import @PSLengths named dashlength { odashlength } - import @PSLengths named linewidth { olinewidth } - import @LoutLengths named length { olength } - { - length @Wide {} - } - - def @GraphSolid - import @PSLengths named dashlength { odashlength } - import @PSLengths named linewidth { olinewidth } - import @LoutLengths named length { olength } - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "solid end" - } @Graphic { length @Wide } - } - # VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphSolid UNIMPLEMENTED" } @Graphic { length @Wide } - } - } - } - - def @GraphDashed - import @PSLengths named dashlength { odashlength } - import @PSLengths named linewidth { olinewidth } - import @LoutLengths named length { olength } - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dashed end" - } @Graphic { length @Wide } - } - # VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDashed UNIMPLEMENTED" } @Graphic { olength @Wide } - } - } - } - - def @GraphDotted - import @PSLengths named dashlength { odashlength } - import @PSLengths named linewidth { olinewidth } - import @LoutLengths named length { olength } - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dotted end" - } @Graphic { length @Wide } - } - # VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDotted UNIMPLEMENTED" } @Graphic { olength @Wide } - } - } - } - - def @GraphDotDashed - import @PSLengths named dashlength { odashlength } - import @PSLengths named linewidth { olinewidth } - import @LoutLengths named length { olength } - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dotdashed end" - } @Graphic { length @Wide } - } - # VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } - } - } - } - - def @GraphDotDotDashed - import @PSLengths named dashlength { odashlength } - import @PSLengths named linewidth { olinewidth } - import @LoutLengths named length { olength } - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto" - "/linewidth" linewidth "def xsize" dashlength "dotdotdashed end" - } @Graphic { length @Wide } - } - # VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } - } - } - } - - def @GraphDotDotDotDashed - import @PSLengths named dashlength { odashlength } - import @PSLengths named linewidth { olinewidth } - import @LoutLengths named length { olength } - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto /linewidth" - linewidth "def xsize" dashlength "dotdotdotdashed end" - } @Graphic { length @Wide } - } - # VT: PDF does nothing - PDF @Yield { - @HContract @VContract - { "% @GraphDotDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide } - } - } - } - - - export @Data - def @Graph - named style { style } - named font { font } - named xorigin named none { "false" } { xorigin } - named yorigin named none { "false" } { yorigin } - named xlog named none { "0" } { xlog } - named ylog named none { "0" } { ylog } - import @LoutLengths named width { width } - import @LoutLengths named height { height } - import @PSLengths named xextra { xextra } - import @PSLengths named yextra { yextra } - named xdecreasing { xdecreasing } - named ydecreasing { ydecreasing } - named leftcaption { leftcaption } - named rightcaption { rightcaption } - named abovecaption { abovecaption } - named belowcaption { belowcaption } - import @LoutLengths named leftgap { leftgap } - import @LoutLengths named rightgap { rightgap } - import @LoutLengths named abovegap { abovegap } - import @LoutLengths named belowgap { belowgap } - named hidecaptions { hidecaptions } - named xmin named none { "false" } { xmin } - named xmax named none { "false" } { xmax } - named ymin named none { "false" } { ymin } - named ymax named none { "false" } { ymax } - named xticksep named none { "0" } { xticksep } - named yticksep named none { "0" } { yticksep } - named rticksep named none { "0" } { rticksep } - import @GraphMath named xticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { xticks } - import @GraphMath named yticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { yticks } - import @GraphMath named rticks - named none { "false" } - named auto { "false" } - named "@" { " lgen" } - named "^" { "^" } - { rticks } - import @PSLengths named xticklength { xticklength } - import @PSLengths named yticklength { yticklength } - import @PSLengths named rticklength { rticklength } - named objects - named @NW - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg ysize" } margin { margin } x } - named @SW - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg 0" } margin { margin } x } - named @SE - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "0 0" } margin { margin } x } - named @NE - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "0 ysize" } margin { margin } x } - named @W - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg ysize 2 div" } margin { margin } x } - named @S - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg 2 div 0" } margin { margin } x } - named @E - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "0 ysize 2 div" } margin { margin } x } - named @N - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - { at @GraphZZZ adj { "xsize neg 2 div ysize" } margin { margin } x } - named @CTR - import @GraphMath named at { 0 0 } - import @LoutLengths named margin { 0.3f } - right x - {at @GraphZZZ adj {"xsize neg 2 div ysize 2 div"} margin {margin} x} - { objects } - named save { save } - named points named none { "none" } { points } - import @PSLengths named symbolsize { symbolsize } - import @PSLengths named symbollinewidth { symbollinewidth } - named pairs named none { "none" } { pairs } - import @PSLengths named dashlength { dashlength } - import @PSLengths named linewidth { linewidth } - named colour color named none { "none" } { colour } - named paint { paint } - import @TextureImport named texture { texture } - named dataformat { dataformat } - body @Body - { - - def @Above - { - abovecaption @Case { - "" @Yield {} - else @Yield @OneCol { - ||0.5rt clines @Break abovecaption || //abovegap } - } - } - - def @Below - { - belowcaption @Case { - "" @Yield {} - else @Yield @OneCol { - //belowgap ||0.5rt clines @Break belowcaption || } - } - } - - def @Left - { - leftcaption @Case { - "" @Yield {} - else @Yield @OneCol @OneRow { - { //0.5rt @OneRow clines @Break leftcaption // } ^||leftgap } - } - } - - def @Right - { - rightcaption @Case { - "" @Yield {} - else @Yield @OneCol @OneRow { - ||rightgap { //0.5rt @OneRow lines @Break rightcaption // } } - } - } - - def @ZeroWidth - right x - { - hidecaptions @Case { - { No no } @Yield x - { Yes yes } @Yield @OneCol { ||0io x ||0io } - } - } - - def @AddCaptions right x - { - def belowextra - { - xticks @Case { - "" @Yield { 0i } - else @Yield { 1.7f } - } - } - - @HContract @VContract - { - | @Above | - / @ZeroWidth @Left | &0.5rt x | @ZeroWidth @Right - /belowextra | @Below | - } - } - - export pi e sqrt abs ceiling floor truncate round cos sin atan - exp log rand "*" "/" idiv mod "-" "-0" "-1" "-2" "-3" "-4" - "-5" "-6" "-7" "-8" "-9" "-." "+" "=" "!=" "<" "<=" ">" ">=" - not and xor or if xloop yloop zloop - - def @Data - named points named none { "none" } { points } - import @PSLengths named symbolsize { symbolsize } - import @PSLengths named symbollinewidth { symbollinewidth } - named pairs named none { "none" } { pairs } - import @PSLengths named dashlength { dashlength } - import @PSLengths named linewidth { linewidth } - named colour color named none { "none" } { colour } - named paint { paint } - import @TextureImport named texture { texture } - named dataformat { dataformat } - body data - { - def pi { "3.14159" } - def e { "2.71828" } - def sqrt precedence 40 right y { y "sqrt" } - def abs precedence 40 right y { y "abs" } - def ceiling precedence 40 right y { y "ceiling" } - def floor precedence 40 right y { y "floor" } - def truncate precedence 40 right y { y "truncate" } - def round precedence 40 right y { y "round" } - def cos precedence 40 right y { y "cos" } - def sin precedence 40 right y { y "sin" } - def atan precedence 39 left x right y { x y "atan" } - def exp precedence 38 left x right y { x y "exp" } - def log precedence 37 left x right y { x y "dolog" } - def rand precedence 36 left x right y { x y "dorand" } - def "*" precedence 35 left x right y { x y "mul" } - def "/" precedence 34 left x right y { x y "div" } - def idiv precedence 34 left x right y { x y "idiv" } - def mod precedence 34 left x right y { x y "mod" } - def "-" precedence 33 left x right y - { x @Case { "" @Yield {y "neg"} else @Yield { x y "sub" } } } - def "-0" { "-0" } - def "-1" { "-1" } - def "-2" { "-2" } - def "-3" { "-3" } - def "-4" { "-4" } - def "-5" { "-5" } - def "-6" { "-6" } - def "-7" { "-7" } - def "-8" { "-8" } - def "-9" { "-9" } - def "-." { "-." } - def "+" precedence 32 left x right y - { x @Case { "" @Yield { y } else @Yield { x y "add" } } } - def "=" precedence 30 left x right y { x y "eq" } - def "!=" precedence 30 left x right y { x y "ne" } - def "<" precedence 30 left x right y { x y "lt" } - def "<=" precedence 30 left x right y { x y "le" } - def ">" precedence 30 left x right y { x y "gt" } - def ">=" precedence 30 left x right y { x y "ge" } - def not precedence 25 right y { y "not" } - def and precedence 24 left x right y { x y "and" } - def xor precedence 23 left x right y { x y "xor" } - def or precedence 22 left x right y { x y "or" } - def if - named cond { true } - named then {} - named else {} - { cond "{" then "} {" else "} ifelse" } - def xloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named x { "xval" } {} - { from by to "{ /xval exch def" do "} for" } - def yloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named y { "yval" } {} - { from by to "{ /yval exch def" do "} for" } - def zloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named z { "zval" } {} - { from by to "{ /zval exch def" do "} for" } - - def @IfPt - left no - right yes - { - points @Case { - none @Yield no - else @Yield yes - } - } - - def @Points - { - points @Case { - none @Yield "" - plus @Yield "plus" - cross @Yield "cross" - square @Yield "square" - filledsquare @Yield "filledsquare" - diamond @Yield "diamond" - filleddiamond @Yield "filleddiamond" - circle @Yield "circle" - filledcircle @Yield "filledcircle" - triangle @Yield "triangle" - filledtriangle @Yield "filledtriangle" - } - } - - def @Pairs - { - pairs @Case { - none @Yield {} - solid @Yield { "linesetup solid" @IfPt "ilinesetup solid" } - dashed @Yield { "linesetup cdashed" @IfPt "ilinesetup dashed" } - dotted @Yield { "linesetup dotted" @IfPt "ilinesetup dotted" } - dotdashed @Yield { "linesetup dotcdashed" @IfPt - "ilinesetup dotdashed" } - dotdotdashed @Yield { "linesetup dotdotcdashed" @IfPt - "ilinesetup dotdotdashed" } - dotdotdotdashed @Yield { "linesetup dotdotdotcdashed" @IfPt - "ilinesetup dotdotdotdashed" } - surfacexhisto @Yield { "surfacexhisto" } - surfaceyhisto @Yield { "surfaceyhisto" } - xhisto @Yield { "xhisto" } - yhisto @Yield { "yhisto" } - filledxhisto @Yield { "filledxhisto" } - filledyhisto @Yield { "filledyhisto" } - } - } - - def @DataFormat - { - dataformat @Case { - xandy @Yield xandy - swapxandy @Yield swapxandy - yonly @Yield yonly - xonly @Yield xonly - } - } - - def @Paint - { - paint @Case { - { none no No } @Yield "false" - { yes Yes } @Yield "true" - } - } - - "[ [" data "]" dataformat - "{" @Points "}" - "{" @Pairs "}" - "{ /dashlength" dashlength "def" - " /linewidth" linewidth "def" @ColourCommand colour - " /symbolsize" symbolsize "def" - " /symbollinewidth" symbollinewidth "def }" - "{" @Paint "}" - "{" texture "}" - "]" - } - - def @Style - { - style @Case { - frame @Yield { "framestyle" } - grid @Yield { "gridstyle" } - none @Yield { "nonestyle" } - axes @Yield { "axesstyle" } - } - } - - def @XExtra - { - xextra @Case { - "auto" @Yield { - style @Case { - frame @Yield { "0.5 cm" } - grid @Yield { "0" } - none @Yield { "0" } - axes @Yield { "0" } - } - } - else @Yield xextra - } - } - - def @YExtra - { - yextra @Case { - "auto" @Yield { - style @Case { - frame @Yield { "0.5 cm" } - grid @Yield { "0" } - none @Yield { "0" } - axes @Yield { "0" } - } - } - else @Yield yextra - } - } - - def @XDecreasing - { - xdecreasing @Case { - { No no } @Yield "false" - { Yes yes } @Yield "true" - } - } - - def @YDecreasing - { - ydecreasing @Case { - { No no } @Yield "false" - { Yes yes } @Yield "true" - } - } - - font @Font @AddCaptions width @Wide height @High - @BackEnd @Case { - PostScript @Yield { - { - "grestore" - save @Case { { Yes yes } @Yield "save" else @Yield {} } - "gsave xsize ysize lgraphdict begin /ysize exch def" - "/xsize exch def /alldata [" @Body "] def" - xticksep "[" xticks "] 0 alldata" xmin xmax xlog - @XExtra @XDecreasing xorigin xticklength "xset" - yticksep "[" yticks "] 1 alldata" ymin ymax ylog - @YExtra @YDecreasing yorigin yticklength "yset" - - rticks @Case { - - "" @Yield "norset" - - else @Yield { - rticksep "[" rticks "] 1 alldata" ymin ymax ylog - @YExtra @YDecreasing yorigin rticklength "rset" - } - } - - "rundata" @Style // "end" - save @Case { { Yes yes } @Yield "restore" else @Yield {} } - } @Graphic { //1rt objects } - } - PDF @Yield { {"% @Graph UNIMPLEMENTED"} @Graphic { //1rt objects } } - } - - } -} diff --git a/include/include/graphf.etc b/include/include/graphf.etc deleted file mode 100644 index d01734d..0000000 --- a/include/include/graphf.etc +++ /dev/null @@ -1,312 +0,0 @@ - -############################################################################### -# # -# Lout @GraphMath package for @Graph (Version 1.1) # -# # -# Version 1.0 by Jeffrey H. Kingston, December 1993. # -# Version 1.1 by Jeffrey H. Kingston, October 1996. # -# # -# This package provides mathematics for the @Graph graph drawing package. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export - - "-0" "-1" "-2" "-3" "-4" "-5" "-6" "-7" "-8" "-9" "-." - pi e sqrt abs ceiling floor truncate round cos sin atan - exp log rand "*" "/" idiv mod "+" "-" - "=" "!=" "<" "<=" ">" ">=" not and xor or - if xloop yloop zloop - -def @GraphMath -{ - def "-0" { "-0" } - def "-1" { "-1" } - def "-2" { "-2" } - def "-3" { "-3" } - def "-4" { "-4" } - def "-5" { "-5" } - def "-6" { "-6" } - def "-7" { "-7" } - def "-8" { "-8" } - def "-9" { "-9" } - def "-." { "-." } - - def pi { "3.14159" } - - def e { "2.71828" } - - def sqrt - precedence 40 - right y - { - y "sqrt" - } - - def abs - precedence 40 - right y - { - y "abs" - } - - def ceiling - precedence 40 - right y - { - y "ceiling" - } - - def floor - precedence 40 - right y - { - y "floor" - } - - def truncate - precedence 40 - right y - { - y "truncate" - } - - def round - precedence 40 - right y - { - y "round" - } - - def cos - precedence 40 - right y - { - y "cos" - } - - def sin - precedence 40 - right y - { - y "sin" - } - - def atan - precedence 39 - left x - right y - { - x y "atan" - } - - def exp - precedence 38 - left x - right y - { - x y "exp" - } - - def log - precedence 37 - left x - right y - { - x y "dolog" - } - - def rand - precedence 36 - left x - right y - { - x y "dorand" - } - - def "*" - precedence 35 - left x - right y - { - x y "mul" - } - - def "/" - precedence 35 - left x - right y - { - x y "div" - } - - def "idiv" - precedence 34 - left x - right y - { - x y "idiv" - } - - def "mod" - precedence 34 - left x - right y - { - x y "mod" - } - - def "-" - precedence 33 - left x - right y - { - x @Case { - "" @Yield { y "neg" } - else @Yield { x y "sub" } - } - } - - def "+" - precedence 32 - left x - right y - { - x @Case { - "" @Yield { y } - else @Yield { x y "add" } - } - } - - def "=" - precedence 30 - left x - right y - { - x y "eq" - } - - def "!=" - precedence 30 - left x - right y - { - x y "ne" - } - - def "<" - precedence 30 - left x - right y - { - x y "lt" - } - - def "<=" - precedence 30 - left x - right y - { - x y "le" - } - - def ">" - precedence 30 - left x - right y - { - x y "gt" - } - - def ">=" - precedence 30 - left x - right y - { - x y "ge" - } - - def "not" - precedence 25 - right y - { - y "not" - } - - def "and" - precedence 24 - left x - right y - { - x y "and" - } - - def "xor" - precedence 23 - left x - right y - { - x y "xor" - } - - def "or" - precedence 22 - left x - right y - { - x y "or" - } - - def if - named cond { true } - named then {} - named else {} - { - cond "{" then "} {" else "} ifelse" - } - - def xloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named x { "xval" } {} - { - from by to "{ /xval exch def" do "} for" - } - - def yloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named y { "yval" } {} - { - from by to "{ /yval exch def" do "} for" - } - - def zloop - named from { 0 } - named to { 0 } - named by { 1 } - named do named z { "zval" } {} - { - from by to "{ /zval exch def" do "} for" - } - -} diff --git a/include/include/graphf.lpg b/include/include/graphf.lpg deleted file mode 100644 index a0137a4..0000000 --- a/include/include/graphf.lpg +++ /dev/null @@ -1,1091 +0,0 @@ -%%BeginResource: procset LoutGraphPrependGraphic -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% PostScript @SysPrependGraphic file for @Graph (Version 1.0) % -% % -% Version 1.0 by Jeffrey H. Kingston, December 1993. % -% swapxandy added September 2001 by JHK. % -% % -% This file has been placed in the public domain by its author, % -% Jeffrey H. Kingston % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -errordict begin - /handleerror - { - { /Times-Roman findfont 8 pt scalefont setfont - 0 setgray 4 pt 4 pt moveto - $error /errorname get - dup lgraphdict exch known - { lgraphdict exch get } - { 30 string cvs } ifelse - show - ( Command: ) show - $error /command get 30 string cvs show - } stopped {} if - showpage stop - } def -end - -/lgraphdebugposy 432 def -/lgraphdebugposx 72 def - -% - lgraphdebugnextline - -/lgraphdebugnextline -{ - lgraphdebugposy 72 lt - { /lgraphdebugposx lgraphdebugposx 144 add store - /lgraphdebugposy 432 store - } - { - /lgraphdebugposy lgraphdebugposy 12 sub store - } ifelse - lgraphdebugposx lgraphdebugposy moveto -} def - -% - lgraphdebugbeginindent - -/lgraphdebugbeginindent -{ - /lgraphdebugposx lgraphdebugposx 12 add store -} def - -% - lgraphdebugendindent - -/lgraphdebugendindent -{ - /lgraphdebugposx lgraphdebugposx 12 sub store -} def - -% <string> <int> lgraphdebugprint - -% must be defined outside lgraphdict since used in arbitrary places -% print <string> plus count or <int> stack entries, whichever is the smaller -/lgraphdebugprint -{ - exch - gsave - initgraphics - lgraphdebugnextline - /Times-Roman findfont 10 scalefont setfont - 0 setgray show - lgraphdebugbeginindent - count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub - 0 exch 1 exch - { - lgraphdebugnextline - index - dup type (dicttype) eq - { - (begin dict) show - lgraphdebugbeginindent - { - lgraphdebugnextline - pop 100 string cvs show - } forall - lgraphdebugendindent - lgraphdebugnextline - (end dict) show - } - { - dup type (arraytype) eq - { - (begin array) show - lgraphdebugbeginindent - { - lgraphdebugnextline - 100 string cvs show - } forall - lgraphdebugendindent - lgraphdebugnextline - (end array) show - } - { - 100 string cvs show - } ifelse - } ifelse - } for - lgraphdebugendindent - grestore -} def - - -/lgraphdict 200 dict def -lgraphdict begin - -% error messages -/dictfull (dictfull error) def -/dictstackoverflow (dictstackoverflow error) def -/execstackoverflow (execstackoverflow error: expression too complex?) def -/limitcheck (limitcheck error: graph too complex or too large?) def -/syntaxerror (syntaxerror error: syntax error in text of graph?) def -/typecheck (typecheck error: syntax error in text of graph?) def -/undefined (undefined error: unknown or misspelt symbol?) def -/rangecheck (rangecheck error: undefined expression (e.g. divide by zero)?) def -/VMError (VMError error: run out of memory?) def - -% random number between x and y inclusive: x y dorand num -/dorand { 1 index sub 1 add rand exch mod add } def - -% log to given base: base num dolog num -/dolog { ln exch ln div } def - -% maximum of two numbers: <num> <num> max <num> -/max { 2 copy gt { pop } { exch pop } ifelse } def - -% add two points: <point> <point> padd <point> -/padd { exch 3 1 roll add 3 1 roll add exch } def - -% subtract first point from second: <point> <point> psub <point> -/psub { 3 2 roll sub 3 1 roll exch sub exch } def - -% distance between two points: <point> <point> distance <length> -/distance { psub dup mul exch dup mul add sqrt } def - -% point at angle and distance: <point> <length> <angle> atangle <point> -/atangle { 2 copy cos mul 3 1 roll sin mul padd } def - -% angle from one point to another: <point> <point> angle <angle> -/angle { psub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def - - -% set up for line -% - linesetup <length> <dashlength> -/linesetup -{ newpath - xcurr ycurr trpoint xprev yprev trpoint - 4 copy moveto lineto distance dashlength -} def - -% set up for icon-avoiding line -% - ilinesetup <length> <dashlength> -/ilinesetup -{ newpath - xprev yprev trpoint xcurr ycurr trpoint 4 copy - 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle - 6 2 roll 4 2 roll - 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle - 4 copy moveto lineto distance dashlength -} def - - -% stroke a solid line: <length> <dashlength> solid - -/solid -{ pop pop [] 0 setdash linewidth setlinewidth stroke -} def - -% stroke a dashed line: <length> <dashlength> dashed - -/dashed -{ 2 copy 2 mul le 1 index 0 le or - { exch pop 1 pt max [ exch dup ] 0 setdash } - { dup [ exch 4 2 roll 2 copy div - 1 sub 2 div ceiling dup 4 1 roll - 1 add mul sub exch div ] 0 setdash - } ifelse linewidth setlinewidth stroke -} def - -% stroke a cdashed line: <length> <dashlength> cdashed - -/cdashed -{ 2 copy le 1 index 0 le or - { exch pop 1 pt max [ exch dup ] dup 0 get 2 div setdash } - { dup [ 4 2 roll exch 2 copy exch div - 2 div ceiling div 1 index sub - ] exch 2 div setdash - } ifelse linewidth setlinewidth stroke -} def - -% stroke a dotted line: <length> <dashlength> dotted - -/dotted -{ 2 copy le 1 index 0 le or - { exch pop 1 pt max [ exch 0 exch ] 0 setdash } - { 1 index exch div ceiling div 0.99999 mul - [ 0 3 2 roll ] 0 setdash - } ifelse gsave 1 setlinecap linewidth setlinewidth stroke grestore newpath -} def - -% stroke a noline line: <length> <dashlength> noline - -/noline -{ pop pop -} def - -% scale array elements by factor: <array> <factor> scalearray <array> -/scalearray -{ - [ exch 3 2 roll - { exch dup 3 1 roll mul exch } forall - pop ] -} def - -% sum array elements: <array> sumarray <number> -/sumarray -{ - 0 exch { add } forall -} def - -% begin a more complex line: <length> <dashlength> linebegin - -/linebegin -{ - % (Entering linebegin) 2 debugprint - 20 dict begin - /dashlen exch 1 pt max def - /len exch def - /gap dashlen def - /halfgap dashlen 2 div def - /dash dashlen def - /halfdash dashlen 2 div def - /dot 0 def - % (Leaving linebegin) 0 debugprint -} def -% end a more complex line: <linecap> <cycle> <startpos> <stoppos> lineend - -/lineend -{ - % (Entering lineend) 3 debugprint - /stoppos exch def - /startpos exch def - /cycle exch def - /linecap exch def - /stopposlen stoppos sumarray def - /startposlen startpos sumarray def - /cyclelen cycle sumarray def - /effectivelen len startposlen add stopposlen sub def - effectivelen 0 gt cyclelen 0 gt and - { - /repeats effectivelen cyclelen div ceiling def - /factor len repeats cyclelen mul startposlen sub stopposlen add div def - cycle factor scalearray startposlen factor mul setdash - linecap setlinecap stroke - } if - end - % (Leaving lineend) 0 debugprint -} def - -% stroke a dotdashed line: <length> <dashlength> dotdashed - -/dotdashed -{ - linebegin - 1 [dash gap dot gap] [] [dash] - lineend -} def - -% stroke a dotcdashed line: <length> <dashlength> dotcdashed - -/dotcdashed -{ - linebegin - 1 [dash gap dot gap] [halfdash] [halfdash] - lineend -} def - -% stroke a dotdotdashed line: <length> <dashlength> dotdotdashed - -/dotdotdashed -{ - linebegin - 1 [dash gap dot gap dot gap] [] [dash] - lineend -} def - -% stroke a dotdotcdashed line: <length> <dashlength> dotdotcdashed - -/dotdotcdashed -{ - linebegin - 1 [dash gap dot gap dot gap] [halfdash] [halfdash] - lineend -} def - -% stroke a dotdotdotdashed line: <length> <dashlength> dotdotdotdashed - -/dotdotdotdashed -{ - linebegin - 1 [dash gap dot gap dot gap dot gap] [] [dash] - lineend -} def - -% stroke a dotdotdotcdashed line: <length> <dashlength> dotdotdotcdashed - -/dotdotdotcdashed -{ - linebegin - 1 [dash gap dot gap dot gap dot gap] [halfdash] [halfdash] - lineend -} def - - -% stroke a y histogram: - yhisto - -/yhisto -{ xprev yleft trpoint yextra sub moveto - xprev yprev trpoint lineto - xcurr yprev trpoint lineto - xcurr yleft trpoint yextra sub lineto - linewidth setlinewidth stroke -} def - -% stroke an x histogram: - xhisto - -/xhisto -{ xleft yprev trpoint exch xextra sub exch moveto - xcurr yprev trpoint lineto - xcurr ycurr trpoint lineto - xleft ycurr trpoint exch xextra sub exch lineto - linewidth setlinewidth stroke -} def - -% stroke a surface y histogram: - surfaceyhisto - -/surfaceyhisto -{ firstpair - { xprev yleft trpoint yextra sub moveto - xprev yprev trpoint lineto - } - { xprev yprev trpoint moveto - } ifelse - xcurr yprev trpoint lineto - lastpair - { xcurr yleft trpoint yextra sub lineto - } - { xcurr ycurr trpoint lineto - } ifelse - linewidth setlinewidth stroke -} def - -% stroke a surface x histogram: - surfacexhisto - -/surfacexhisto -{ firstpair - { xleft yprev trpoint exch xextra sub exch moveto - } - { xprev yprev trpoint moveto - } ifelse - xcurr yprev trpoint lineto - xcurr ycurr trpoint lineto - lastpair - { xleft ycurr trpoint exch xextra sub exch lineto - } if - linewidth setlinewidth stroke -} def - -% % pre-texture versions -% % stroke a filled y histogram: - filledyhisto - -% /filledyhisto -% { -% linewidth setlinewidth -% xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto -% xprev yprev trpoint exch currentlinewidth 2 div add exch lineto -% xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto -% xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto -% closepath fill -% } def - -% % stroke a filled x histogram: - filledxhisto - -% /filledxhisto -% { -% linewidth setlinewidth -% xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto -% xcurr yprev trpoint currentlinewidth 2 div add lineto -% xcurr ycurr trpoint currentlinewidth 2 div sub lineto -% xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto -% closepath fill -% } def - -% stroke a filled y histogram: - filledyhisto - -/filledyhisto -{ - linewidth setlinewidth - xprev yleft trpoint exch currentlinewidth 1.3 mul add exch yextra sub moveto - xprev yprev trpoint exch currentlinewidth 1.3 mul add exch lineto - xcurr yprev trpoint exch currentlinewidth 1.3 mul sub exch lineto - xcurr yleft trpoint exch currentlinewidth 1.3 mul sub exch yextra sub lineto - gsave texture fill grestore stroke -} def - -% stroke a filled x histogram: - filledxhisto - -/filledxhisto -{ - linewidth setlinewidth - xleft yprev trpoint currentlinewidth 1.3 mul add exch xextra sub exch moveto - xcurr yprev trpoint currentlinewidth 1.3 mul add lineto - xcurr ycurr trpoint currentlinewidth 1.3 mul sub lineto - xleft ycurr trpoint currentlinewidth 1.3 mul sub exch xextra sub exch lineto - gsave texture fill grestore stroke -} def - - -% docross: show a cross with a given symbolsize and symbollinewidth -% <x> <y> <symbolsize> <symbollinewidth> docross - -/docross -{ - setlinewidth - /ss exch def - newpath - moveto - ss neg ss neg rmoveto - ss 2 mul ss 2 mul rlineto - 0 ss -2 mul rmoveto - ss -2 mul ss 2 mul rlineto - [] 0 setdash 0 setlinecap stroke -} def - -% cross: show a cross -% - cross - -/cross { xcurr ycurr trpoint symbolsize symbollinewidth docross } def - -% doplus: show a plus with a given symbolsize and symbollinewidth -% <x> <y> <symbolsize> <symbollinewidth> doplus - -/doplus -{ - setlinewidth - /ss exch def - newpath - moveto - ss neg 0 rmoveto - ss 2 mul 0 rlineto - ss neg ss neg rmoveto - 0 ss 2 mul rlineto - [] 0 setdash 0 setlinecap stroke -} def - -% plus: show a plus -% - plus - -/plus { xcurr ycurr trpoint symbolsize symbollinewidth doplus } def - -% dosquare: show an open square with a given symbolsize and symbollinewidth -% NB symbolsize is reduced by half the line width to get size exactly right -% <x> <y> <symbolsize> <symbollinewidth> dosquare - -/dosquare -{ - dup setlinewidth - 0.5 mul sub 0 max /ss exch def - newpath - moveto - ss neg ss neg rmoveto - ss 2 mul 0 rlineto - 0 ss 2 mul rlineto - ss -2 mul 0 rlineto - closepath [] 0 setdash stroke -} def - -% square: show an open square -% - square - -/square { xcurr ycurr trpoint symbolsize symbollinewidth dosquare } def - -% dofilledsquare: show filled square with given symbolsize and symbollinewidth -% NB symbollinewidth is not used -% <x> <y> <symbolsize> <symbollinewidth> dofilledsquare - -/dofilledsquare -{ - pop /ss exch def - newpath - moveto - ss neg ss neg rmoveto - ss 2 mul 0 rlineto - 0 ss 2 mul rlineto - ss -2 mul 0 rlineto - closepath fill -} def - -% filledsquare: show a filled square -% - filledsquare - -/filledsquare { xcurr ycurr trpoint symbolsize symbollinewidth dofilledsquare } def - -% dodiamond: show an open diamond with a given symbolsize and symbollinewidth -% NB symbolsize is reduced by half the line width to get size exactly right -% <x> <y> <symbolsize> <symbollinewidth> dodiamond - -/dodiamond -{ - dup setlinewidth - 0.5 mul sub 0 max /ss exch def - newpath - moveto - ss neg 0 rmoveto - ss ss neg rlineto - ss ss rlineto - ss neg ss rlineto - closepath [] 0 setdash stroke -} def - -% diamond: show an open diamond -% - diamond - -/diamond { xcurr ycurr trpoint symbolsize symbollinewidth dodiamond } def - -% dofilleddiamond: show filled diamond with given symbolsize and symbollinewidth -% NB symbollinewidth is not used -% <x> <y> <symbolsize> <symbollinewidth> dofilleddiamond - -/dofilleddiamond -{ - pop /ss exch def - newpath - moveto - ss neg 0 rmoveto - ss ss neg rlineto - ss ss rlineto - ss neg ss rlineto - closepath fill -} def - -% filleddiamond: show a filled diamond -% - filleddiamond - -/filleddiamond { xcurr ycurr trpoint symbolsize symbollinewidth dofilleddiamond } def - -% docircle: show an open circle with a given symbolsize and symbollinewidth -% NB symbolsize is reduced by half the line width to get size exactly right -% <x> <y> <symbolsize> <symbollinewidth> docircle - -/docircle -{ - dup setlinewidth - 0.5 mul sub 0 max /ss exch def - newpath - ss 0 360 arc [] 0 setdash stroke -} def - -% circle: show an open circle -% - circle - -/circle { xcurr ycurr trpoint symbolsize symbollinewidth docircle } def - -% dofilledcircle: show filled circle with given symbolsize and symbollinewidth -% NB symbollinewidth is not used -% <x> <y> <symbolsize> <symbollinewidth> dofilledcircle - -/dofilledcircle -{ - pop /ss exch def - newpath - ss 0 360 arc fill -} def - -% filledcircle: show a filled circle -% - filledcircle - -/filledcircle { xcurr ycurr trpoint symbolsize symbollinewidth dofilledcircle } def - -% dotriangle: show an open triangle with a given symbolsize and symbollinewidth -% NB symbolsize is reduced by half the line width to get size exactly right -% <x> <y> <symbolsize> <symbollinewidth> dotriangle - -/dotriangle -{ - dup setlinewidth - 0.5 mul sub 0 max /ss exch def - newpath - moveto - 0 ss 1.5 mul rmoveto - ss neg ss -2.5 mul rlineto - ss 2 mul 0 rlineto - closepath [] 0 setdash stroke -} def - -% triangle: show an open triangle -% - triangle - -/triangle { xcurr ycurr trpoint symbolsize symbollinewidth dotriangle } def - -% dofilledtriangle: show filled triangle with symbolsize and symbollinewidth -% NB symbollinewidth is not used -% <x> <y> <symbolsize> <symbollinewidth> dofilledtriangle - -/dofilledtriangle -{ - pop /ss exch def - newpath - moveto - 0 ss 1.5 mul rmoveto - ss neg ss -2.5 mul rlineto - ss 2 mul 0 rlineto - closepath fill -} def - -% filledtriangle: show a filled triangle -% - filledtriangle - -/filledtriangle { symbolsize symbollinewidth dofilledtriangle } def - - -%plog: like log only with a base, and protected from failing if <= 0 -% base x plog res -/plog { dup 0 le { pop pop 0 } { ln exch ln div } ifelse } def - -% xtr: transform one x value logarithmically if xlog > 1 -% <num> xtr <num> -/xtr -{ xlog 1 gt - { xlog exch plog - } if -} def - -% ytr: transform one y value logarithmically if ylog > 1 -% <num> ytr <num> -/ytr -{ ylog 1 gt - { ylog exch plog - } if -} def - - -% trpoint: transform (x, y) in graph space into (x', y') in print space -% x y trpoint x' y' -/trpoint -{ exch xtr xdecr { trxmax exch sub } { trxmin sub } ifelse - trxmax trxmin sub div xwidth mul xextra add - - exch ytr ydecr { trymax exch sub } { trymin sub } ifelse - trymax trymin sub div ywidth mul yextra add -} def - - -% yonly: interpolate x values 1, 2, ... into data -% [ data ] yonly [ newdata ] -/yonly -{ dup /tmp exch def - length [ exch 1 exch 1 exch - { dup tmp exch 1 sub get - } for - ] -} def - -% xonly: interpolate y values 1, 2, ... into data -% [ data ] yonly [ newdata ] -/xonly -{ dup /tmp exch def - length [ exch 1 exch 1 exch - { dup tmp exch 1 sub get exch - } for - ] -} def - -% xandy: no interpolation of x or y values -% [ data ] xandy [ data ] -/xandy {} def - -% swapxandy: swap x and y values -% [ data ] swapxandy [ data ] -/swapxandy -{ dup /tmp exch def - length [ exch 2 exch 2 exch - { dup tmp exch 1 sub get exch 2 sub tmp exch get - } for - ] -} def - - -% expstringwidth: calculate width of string containing optional exponent -% <string> expstringwidth <width> -/expstringwidth -{ (^) search - { exch pop stringwidth pop exch stringwidth pop 0.7 mul add } - { stringwidth pop } - ifelse -} def - -% expstringshow: show string containing optional exponent -% <string> expstringshow - -/expstringshow -{ (^) search - { exch pop show 0 0.5 ft rmoveto - gsave currentfont 0.7 scalefont setfont show grestore - } - { show - } - ifelse -} def - -% concatenate two strings: <string> <string> strconcat <string> -/strconcat -{ 2 copy length exch length add string - dup 0 4 index putinterval - dup 3 index length 3 index putinterval - 3 1 roll pop pop -} def - -% lgen: generate one label automatically -% num lgen num string -/lgen { dup 20 string cvs } def - -% loglgen: generate one logarithmic label (with exponent) -% <base> <exponent> loglgen <string> -/loglgen -{ 20 string cvs exch 20 string cvs - (^) strconcat exch strconcat -} def - - -% printxtick: print one x tick -% xpos printxtick - -/printxtick -{ newpath - yleft trpoint moveto 0 yextra neg rmoveto - 0 xticklength neg rlineto [] 0 setdash stroke -} def - -% printxgrid: print one x grid line -% xpos printxgrid - -/printxgrid -{ dup newpath - yleft trpoint moveto 0 yextra neg rmoveto - yright trpoint lineto 0 yextra rlineto [] 0 setdash stroke -} def - -% printxlabel: print one x label -% (xlabel) xpos printxlabel - -/printxlabel -{ yleft trpoint moveto 0 yextra neg rmoveto - 0 xticklength neg rmoveto 0 0.9 ft neg rmoveto - xlog 1 gt { 0 0.3 ft neg rmoveto } if - dup expstringwidth -2 div 0 rmoveto expstringshow -} def - -% printytick: print one y tick -% ypos printytick - -/printytick -{ newpath - xleft exch trpoint moveto xextra neg 0 rmoveto - yticklength neg 0 rlineto [] 0 setdash stroke -} def - -% printygrid: print one y grid line -% ypos printygrid - -/printygrid -{ dup newpath - xleft exch trpoint moveto xextra neg 0 rmoveto - xright exch trpoint lineto xextra 0 rlineto [] 0 setdash stroke -} def - -% printylabel: print one y label -% (ylabel) ypos printylabel - -/printylabel -{ xleft exch trpoint moveto xextra neg 0 rmoveto - yticklength neg 0 rmoveto -0.3 ft -0.3 ft rmoveto - dup expstringwidth neg 0 rmoveto expstringshow -} def - -% printrtick: print one r tick -% ypos printrtick - -/printrtick -{ newpath - xright exch trpoint moveto xextra 0 rmoveto - rticklength 0 rlineto [] 0 setdash stroke -} def - -% printrlabel: print one r label -% (rlabel) ypos printrlabel - -/printrlabel -{ xright exch trpoint moveto xextra 0 rmoveto - rticklength 0 rmoveto 0.3 ft -0.3 ft rmoveto - expstringshow -} def - -% printticks: print ticks and labels -% /tickproc /labelproc [ tickandlabeldata ] min printticks - -/printticks -{ /prev exch def - { dup type dup dup /integertype eq exch /realtype eq or - { pop dup /prev exch def 2 index cvx exec - } - { /stringtype eq - { prev 2 index cvx exec - } - { pop - } ifelse - } ifelse - } forall - pop pop -} def - - -% printxaxistick: print one x axis tick -% xpos printxaxistick - -/printxaxistick -{ newpath - yaxis trpoint moveto 0 xticklength -2 div rmoveto - 0 xticklength rlineto [] 0 setdash stroke -} def - -% printxaxislabel: print one x axis label -% (xlabel) xpos printxaxislabel - -/printxaxislabel -{ yaxis trpoint moveto - 0 xticklength -2 div rmoveto 0 0.9 ft neg rmoveto - xlog 1 gt { 0 0.3 ft neg rmoveto } if - dup expstringwidth -2 div 0 rmoveto expstringshow -} def - -% printyaxistick: print one y axis tick -% ypos printyaxistick - -/printyaxistick -{ newpath - xaxis exch trpoint moveto - yticklength -2 div 0 rmoveto - yticklength 0 rlineto [] 0 setdash stroke -} def - -% printyaxislabel: print one y axis label -% (ylabel) ypos printyaxislabel - -/printyaxislabel -{ xaxis exch trpoint moveto - yticklength -2 div 0 rmoveto -0.3 ft -0.3 ft rmoveto - dup expstringwidth neg 0 rmoveto expstringshow -} def - - -% <val> minmax - -% perform minv := min(minv, val); maxv := max(maxv, val) -% allowing for the possibility of minv, maxv, val being false (undefined) -/minmax -{ dup false eq - { pop } - { minv false eq - { dup /minv exch def /maxv exch def } - { dup minv lt - { /minv exch def } - { dup maxv gt - { /maxv exch def } - { pop } - ifelse - } ifelse - } ifelse - } ifelse -} def - -% <ticks> ticksundef <ticks> <bool> -% returns true iff the ticks array is undefined (one false entry) -/ticksundef -{ dup length 1 eq - { dup 0 get false eq - } - { false } - ifelse -} def - -% <number> integral <boolean> -% true if the number has an integral value -/integral { dup round eq } def - -% ticksep ticks xory alldata minval maxval axis base ticksandlimits ticks min max base -% ticksandlimits: sort out value of x or y ticks and limits and log base -/ticksandlimits -{ /base exch def - /minv false def - /maxv false def - - % min and max of user-supplied minval, maxval, and axis - minmax minmax minmax - - % min and max of data points - { 0 get dup dup length 1 sub 3 index exch 2 exch - { get minmax dup - } for pop pop - } forall - pop dup - - % min and max of tick values - { dup type /stringtype eq - { pop } { minmax } ifelse - } forall - - % fix minv and maxv if undefined (false) or equal - minv false eq - { /minv -1 def /maxv 1 def } - { minv maxv eq - { minv 0 lt - { /minv 2 minv mul def /maxv 0 def - } - { minv 0 eq - { /minv -1 def /maxv 1 def - } - { /minv 0 def /maxv 2 maxv mul def - } ifelse - } ifelse - } if - } ifelse - - % invent ticks if undefined - ticksundef - { pop /ticksep exch def - - % if base is reasonable and minv is positive, logarithmic ticks - base 1 gt minv 0 gt and - { - % get integral log of minv and maxv - /logminv base minv plog floor cvi def - /logmaxv base maxv plog ceiling cvi def - - % if minv close to base, make it 1; reset minv and maxv - logminv 1 eq logmaxv 4 ge and { /logminv 0 def } if - /minv base logminv exp def - /maxv base logmaxv exp def - - % ticks := [ base**logminv, ... , base**logmaxv ] - [ logminv 1 logmaxv - { dup base exch exp - exch base exch loglgen - } for - ] - } - { % non-logarithmic ticks - { - % fix tick separation if undefined (0) or too small - /base 0 def - /delta maxv minv sub def - ticksep delta 30 div le - { /ticksep 10 delta log 1 sub ceiling exp def - ticksep delta 2 div ge - { /ticksep ticksep 2 div def } - { ticksep delta 5 div lt - { /ticksep 2 ticksep mul def - } if - } ifelse - } if - - % adjust minv and maxv to be multiples of ticksep - /minv minv ticksep div floor ticksep mul def - /maxv maxv ticksep div ceiling ticksep mul def - /delta maxv minv sub def - - % if minv or maxv near zero, move to zero and redo - minv ticksep eq - { /minv 0 def } - { maxv ticksep neg eq { /maxv 0 def } { exit } ifelse - } ifelse - } loop - - % if minv, maxv, and ticksep are all integral, set "makeint" to true - /makeint minv integral maxv integral ticksep integral and and def - - % ticks := [ minv, minv+ticksep, ... , maxv ] - [ 0 1 delta ticksep div round - { ticksep mul minv add makeint { cvi } if lgen } - for - ] - } ifelse - } - { exch pop - } ifelse - minv maxv base -} def - -% xset: set up all data for x axis, including limits and ticks -% xticksep xticks 0 alldata xmin xmax xlog xextra xdecr xaxis xticklength xset - -/xset -{ /xticklength exch def - /xaxis exch def - /xdecr exch def - /xextra exch def - xaxis exch ticksandlimits - /xlog exch def /xmax exch def /xmin exch def /xticks exch def - /xleft xdecr { xmax } { xmin } ifelse def - /xright xdecr { xmin } { xmax } ifelse def - /xwidth xsize xextra 2 mul sub def - /trxmin xmin xtr def /trxmax xmax xtr def -} def - -% yset: set up all data for y axis, including limits and yticks -% yticksep yticks 0 alldata ymin ymax ylog yextra ydecr yaxis yticklength yset - -/yset -{ /yticklength exch def - /yaxis exch def - /ydecr exch def - /yextra exch def - yaxis exch ticksandlimits - /ylog exch def /ymax exch def /ymin exch def /yticks exch def - /yleft ydecr { ymax } { ymin } ifelse def - /yright ydecr { ymin } { ymax } ifelse def - /ywidth ysize yextra 2 mul sub def - /trymin ymin ytr def /trymax ymax ytr def -} def - -% rset: set up all data for y axis (again), but including limits and rticks -% rticksep rticks 0 alldata ymin ymax ylog yextra ydecr yaxis rticklength rset - -/rset -{ /rticklength exch def - /yaxis exch def - /ydecr exch def - /yextra exch def - yaxis exch ticksandlimits - /ylog exch def /ymax exch def /ymin exch def /rticks exch def - /yleft ydecr { ymax } { ymin } ifelse def - /yright ydecr { ymin } { ymax } ifelse def - /ywidth ysize yextra 2 mul sub def - /trymin ymin ytr def /trymax ymax ytr def -} def - -% norset: set up data for no rticks -% - norset - -/norset -{ /rticklength 0 def - /rticks [] def -} def - -% framestyle: print a frame around the graph -/framestyle -{ 0 0 moveto xsize 0 lineto xsize ysize lineto - 0 ysize lineto closepath stroke - /printxtick /printxlabel xticks xleft printticks - /printytick /printylabel yticks ymin printticks - /printrtick /printrlabel rticks ymin printticks -} def - -% gridstyle: print a frame around the graph, plus a grid -/gridstyle -{ 0 0 moveto xsize 0 lineto xsize ysize lineto - 0 ysize lineto closepath stroke - /printxgrid /printxlabel xticks xleft printticks - /printygrid /printylabel yticks ymin printticks - /printrtick /printrlabel rticks ymin printticks -} def - -% nonestyle: print nothing around the graph -/nonestyle -{ -} def - -% axesstyle: print axes for the graph (unless axis values missing) -/axesstyle -{ - xaxis false eq yaxis false eq or - { framestyle } - { xaxis yaxis trpoint dup 0 exch moveto xsize exch lineto - dup 0 moveto ysize lineto stroke - /printxaxistick /printxaxislabel xticks xleft printticks - /printyaxistick /printyaxislabel yticks ymin printticks - } ifelse -} def - -% rundata: run all data sets -/rundata -{ alldata - { gsave - dup dup dup dup dup - 5 get /texture exch def - 4 get /dopaint exch def - 3 get /initrun exch def - 2 get /pairs exch def - 1 get /points exch def - 0 get /data exch def - dopaint - { data length 4 ge - { - gsave - initrun - newpath - data 0 get ymin trpoint yextra sub moveto - 0 2 data length 2 sub - { dup 1 add - data exch get /ycurr exch def - data exch get /xcurr exch def - xcurr ycurr trpoint lineto - } for - data dup length 2 sub get ymin trpoint yextra sub lineto - closepath texture fill - grestore - } if - } if - initrun - data length 2 ge - { - /xcurr data 0 get def - /ycurr data 1 get def - points - data length 4 ge - { 2 2 data length 2 sub - { /xprev xcurr def - /yprev ycurr def - dup dup 2 eq /firstpair exch def - data length 2 sub eq /lastpair exch def - dup 1 add - data exch get /ycurr exch def - data exch get /xcurr exch def - pairs - points - } for - } if - } if - grestore - } forall -} def - -end -%%EndResource diff --git a/include/include/haskell b/include/include/haskell deleted file mode 100644 index de5e589..0000000 --- a/include/include/haskell +++ /dev/null @@ -1,118 +0,0 @@ -############################################################################### -# # -# Lout setup file for Haskell program printing # -# # -# Version 1.0 # -# Thorsten Seitz # -# 17 December 2001 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { haskellf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @HaskellSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - # style { symbol @OrIfPlain fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # spacing mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/haskellf b/include/include/haskellf deleted file mode 100644 index f2b9130..0000000 --- a/include/include/haskellf +++ /dev/null @@ -1,527 +0,0 @@ - -############################################################################### -# # -# Lout @HaskellSetup package for formatting Haskell programs # -# # -# Version 1.0 # -# Thorsten Seitz # -# 17 December 2001 # -# # -# Version 1.1 (bug fixes) # -# Gabor Greif # -# 29 June 2007 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Haskell -def @HaskellSetup - named pipe { } # pipe through this first - named numbered { No } # want lines numbered? - named blanknumbered { Yes } # blank lines numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { symbol @OrIfPlain fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 4 } # tab interval - named fixedtabout { 4s } # tab width - - named fixedbraces { Base } # braces face - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedleftbracesformat right @Body { @Body } # left braces format - named fixedrightbracesformat right @Body { @Body } # right braces format - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 4 } # tab interval - named varyingtabout { 1.5f } # tab width - - named varyingbraces { Base } # braces face - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingleftbracesformat right @Body { @Body } # left braces format - named varyingrightbracesformat right @Body { @Body } # right braces format - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 4 } # tab interval - named symboltabout { 1.7f } # tab width - - named symbolbraces { Base } # braces face - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Slope } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { 0.3s @Space {"" @Body} } # identifier format (with italic correction) - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { 0.5s @Space {"" @Body ""}} # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PCL @PL @PA @PM @PD - @PLAMBDA @PCIRC @PPLUSPLUS @PCOLON @PDOUBLECOLON - - @A "$>" - - def @Haskell - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named braces { dft } # braces font - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lHaskell" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lHaskell" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - # deleted by JeffK here and in prg2lout.c, who could not see the point - #def @APO - # left sym - # right x - #{ - # @PO sym @A x - #} - - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - def @PS # for formatting strings - right x - { - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PCnoDelim - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @Symb right x { { Symbol Base } @Font @Char x } - - - def @PC # for formatting comments - right x - { - @PCnoDelim { "{"{@Symb minus}x{@Symb minus}"}" } - } - - - def @PCL # for formatting line comments - right x - { - @PCnoDelim { {@Symb minus} &0.5s {@Symb minus}{x} } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { @Symb asteriskmath } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "." &"0.05f" } - } - } - - - def @PLAMBDA - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char lambda |0.5s } - else @Yield { x } - } - } - - def @PCIRC - right x - { - style @Case { - symbol @Yield { @PO {/0.3fo 0i @Space {"" @Symb degree } } } - else @Yield { @PO x } - } - } - - def @PPLUSPLUS - right x - { - style @Case { - symbol @Yield { @PO {@Symb plus |0.3fo @Symb plus} } - else @Yield { @PO x } - } - } - - def @PCOLON - { - @PO ":" - } - - def @PDOUBLECOLON - right x - { - style @Case { - symbol @Yield { @PO {: |0.8s :} } - else @Yield { @PO x } - } - } - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @Haskell - -@End @HaskellSetup diff --git a/include/include/init b/include/include/init deleted file mode 100644 index 3ca62df..0000000 --- a/include/include/init +++ /dev/null @@ -1,37 +0,0 @@ - -############################################################################### -# # -# init # -# # -# Lout file for initializing run. # -# # -# Jeffrey H. Kingston # -# 21 September 1994 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -@SysInclude { langdefs } # language definitions -@SysInclude { bsf } # BasicSetup package -@SysInclude { dsf } # DocumentSetup package - # including standard.ld -def @TeX -{ - @OneCol { T &0.4fo {-0.2f @VShift E} &0.45fo X } -} - -def @LaTeX -{ - @OneCol { L &0.3fo { +0.1f @VShift 0.8f @Font A } &0.4fo @TeX } -} - -@Use { @BasicSetup } -@Use { @DocumentSetup } - -@SysDatabase @Reference { loutrefs } # references about Lout -@SysDatabase @Reference { oldrefs } # old references about Lout -@SysDatabase @RefStyle { refstyle } # reference printing styles -@SysDatabase @FontDef { fontdefs } # font definitions -@SysDatabase @FontDef { latin2 } # more font definitions diff --git a/include/include/java b/include/include/java deleted file mode 100644 index 5a8849c..0000000 --- a/include/include/java +++ /dev/null @@ -1,118 +0,0 @@ -############################################################################### -# # -# Lout setup file for Java program printing # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 6 April 2001 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { javaf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @JavaSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - # style { fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # spacing mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/javaf b/include/include/javaf deleted file mode 100644 index cd4f944..0000000 --- a/include/include/javaf +++ /dev/null @@ -1,446 +0,0 @@ - -############################################################################### -# # -# Lout @JavaSetup package for formatting Java programs # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 6 April 2001 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Java -def @JavaSetup - named pipe { } # pipe through this first - named numbered { No } # want lines numbered? - named blanknumbered { Yes } # blank lines numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD - @A "$>" - - def @Java - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lJava" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lJava" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - def @PS # for formatting strings - right x - { - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @Java - -@End @JavaSetup diff --git a/include/include/langdefs b/include/include/langdefs deleted file mode 100644 index 4d6e11a..0000000 --- a/include/include/langdefs +++ /dev/null @@ -1,31 +0,0 @@ -############################################################################### -# # -# Language definitions # -# Jeffrey H. Kingston # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - -langdef Croatian Hrvatski hr { croatian . : ! ? .) ?) !) .' !' ?' } -langdef Czech Cesky Cestina cs { czech . : ! ? .) ?) !) .' !' ?' } -langdef Danish Dansk da { danish . : ! ? .) ?) !) .' !' ?' } -langdef Dutch Nederlands nl { dutch . : ! ? .) ?) !) .' !' ?' } -langdef English en { english . : ! ? .) ?) !) .' !' ?' } -langdef EnglishUK "en-GB" { engluk . : ! ? .) ?) !) .' !' ?' } -langdef Esperanto eo { esperanto . : ! ? .) ?) !) .' !' ?' } -langdef Finnish Suomi fi { finnish } -langdef French Francais "Fran\347ais" fr { french } -langdef German Deutsch de { german } -langdef Hungarian Magyar hu { magyar . : ! ? .) ?) !) .' !' ?' } -langdef Italian Italiano it { italian } -langdef Norwegian Norsk no { norweg . : ! ? .) ?) !) .' !' ?' } -langdef Polish Polski pl { polish . : ! ? .) ?) !) .' !' ?' } -langdef Portuguese "Português" pt { portugal . : ! ? .) ?) !) .' !' ?' } -langdef Programming pr { programming } -langdef Russian "\362\325\323\323\313\311\312" ru { russian . : ! ? .) ?) !) .' !' ?' } -langdef Slovak Slovensky Slovencina sk { slovak . : ! ? .) ?) !) .' !' ?' } -langdef Slovenian Slovenia Slovenija sl { slovenia . : ! ? .) ?) !) .' !' ?' } -langdef Spanish "Espa\361ol" es { spanish } -langdef Swedish Svenska sv { swedish . : ! ? .) ?) !) .' !' ?' } -langdef UpperSorbian hornjoserbsce serbsce wen { uppersorbian . : ! ? .) ?) !) .' !' ?' } diff --git a/include/include/latin2 b/include/include/latin2 deleted file mode 100644 index 29883f2..0000000 --- a/include/include/latin2 +++ /dev/null @@ -1,9 +0,0 @@ -################################################################# -# # -# latin2 # -# # -# This file includes everything you need for Latin2. # -# # -################################################################# - -@SysDatabase @FontDef { latin2 } diff --git a/include/include/lengths b/include/include/lengths deleted file mode 100644 index 3d698de..0000000 --- a/include/include/lengths +++ /dev/null @@ -1,167 +0,0 @@ - -########################################################################### -# # -# lengths # -# # -# Jeffrey H. Kingston # -# 30 October 2002 # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -# This file offers two symbols for converting between PostScript # -# lengths and Lout lengths. This has been a messy area and the two # -# symbols in this file, @LoutLengths and @PSLengths, are my attempt # -# to put a final end to the mess. # -# # -# A Lout length is, and has always been, a number followed by # -# a one-letter unit of measurement: i c p m s v f d. # -# # -# A PostScript length is, and has always been, a number followed # -# by a space followed by a two-letter unit of measurement, one of # -# in cm pt em sp vs ft dg. # -# # -# To the ordinary user who reads the User's Guide, all lengths # -# now look like Lout lengths. However, internally some of these # -# lengths are used by Lout and others are passed to PostScript. # -# Based on the two symbols @PSLengths and @LoutLengths defined # -# below, an option x which could contain a length of either kind # -# can be classified as one of three types: # -# # -# Type of option How to handle it # -# ------------------------------------------------------------------- # -# Option was never advertised named x { ... } # -# as taking a PostScript length # -# # -# Option was advertised as import @LoutLengths named x { ... } # -# possibly taking a PostScript # -# length, but its value is used # -# by Lout # -# # -# Option whose value has to be import @PSLengths named x { ... } # -# passed to PostScript # -# ------------------------------------------------------------------- # -# # -# Either kind of import allows either kind of length to be given; # -# @LoutLengths makes sure the final result is suitable for passing # -# to Lout, while @PSLengths makes sure the final result is suitable # -# for passing to PostScript. If things had been done right from the # -# start, there would be no need for @LoutLengths, but for backward # -# compatibility we will continue to use it basically forever. # -# # -########################################################################### - - -########################################################################### -# # -# @LoutLengths # -# # -# Convert PostScript lengths into Lout lengths. # -# # -########################################################################### - -export in cm pt em sp vs ft dg -def @LoutLengths -{ - def in left x { x"i" } - def cm left x { x"c" } - def pt left x { x"p" } - def em left x { x"m" } - def sp left x { x"s" } - def vs left x { x"b" } - def ft left x { x"f" } - def dg left x { x"d" } -} - - -########################################################################### -# # -# @PSLengths # -# # -# Convert Lout lengths into PostScript (also PDF) lengths. # -# PDF is no longer supported but this code was there already so # -# it's been carried over. # -# # -########################################################################### - -export i c p m s v f d -def @PSLengths -{ - def i left x { - @BackEnd @Case { - PostScript @Yield { x" in" } - PDF @Yield { "__mul(__in, "x")" } - PlainText @Yield "" - } - } - - def c left x { - @BackEnd @Case { - PostScript @Yield { x" cm" } - PDF @Yield { "__mul(__cm, "x")" } - PlainText @Yield "" - } - } - - def p left x { - @BackEnd @Case { - PostScript @Yield { x" pt" } - PDF @Yield { "__mul(__pt, "x")" } - PlainText @Yield "" - } - } - - def m left x { - @BackEnd @Case { - PostScript @Yield { x" em" } - PDF @Yield { "__mul(__em, "x")" } - PlainText @Yield "" - } - } - - def s left x { - @BackEnd @Case { - PostScript @Yield { x" sp" } - PDF @Yield { "__mul(__louts, "x")" } - PlainText @Yield "" - } - } - - def v left x { - @BackEnd @Case { - PostScript @Yield { x" vs" } - PDF @Yield { "__mul(__loutv, "x")" } - PlainText @Yield "" - } - } - - def f left x { - @BackEnd @Case { - PostScript @Yield { x" ft" } - PDF @Yield { "__mul(__loutf, "x")" } - PlainText @Yield "" - } - } - - def d left x { - @BackEnd @Case { - PostScript @Yield { x" dg" } - PDF @Yield { "__mul(__loutd, "x")" } - PlainText @Yield "" - } - } -} diff --git a/include/include/math b/include/include/math deleted file mode 100644 index 345db84..0000000 --- a/include/include/math +++ /dev/null @@ -1,32 +0,0 @@ -############################################################################### -# # -# Lout setup file for equation formatting, based on `eq'. # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# Ludovic Courtès # -# June 2007 # -# # -# This file has been placed in the public domain by its authors. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { mathf } line # -# # -# This line causes Lout to read the definitions for equations, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { mathf } - - -############################################################################### -# # -# This package does not offer default options that can be changed. # -# # -############################################################################### diff --git a/include/include/mathf b/include/include/mathf deleted file mode 100644 index 523504a..0000000 --- a/include/include/mathf +++ /dev/null @@ -1,2944 +0,0 @@ - -############################################################################### -# # -# Lout @Math package for formatting mathematics # -# # -# @Math is based on the earlier @Eq package. @Eq revision history: # -# # -# Version 1.0 by Jeffrey H. Kingston, December 1990. # -# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. # -# Version 3.0 by Jeffrey H. Kingston and Robert Marsa, March 1996. # -# # -# @Math revision history: # -# # -# Version 4.0 by Ludovic Courtès, June 2007. # -# Version 5.0 by Jeffrey H. Kingston, September 2008. # -# # -# Acknowledgement: @Eq and @Math are based closely on the Eqn language # -# of B. W. Kernighan and L. L. Cherry; the spacing rules are similar to # -# those of the TeX system by D. E. Knuth. # -# # -# Version 4.0 makes use of `@SetContext' and `@GetContext' (introduced in # -# Lout 3.34) to better honor the typesetting conventions outlined by Knuth. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export - - # Helper symbols - above below wideabove widebelow - "`" "``" "```" non big small vctr - @SuperScriptStyle @SubScriptStyle @NumeratorStyle - @DenominatorStyle @SquareRootStyle - - # Ordinary symbols (Symbol font) - space exclam universal numbersign existential percent - ampersand suchthat parenleft parenright asteriskmath - plus comma minus period slash zero one two three four - five six seven eight nine colon semicolon less equal - greater question congruent Alpha Beta Chi Delta Epsilon - Phi Gamma Eta Iota thetaone Kappa Lambda Mu Nu Omicron - Pi Theta Rho Sigma Tau Upsilon sigmaone Omega Xi Psi Zeta - bracketleft therefore bracketright perpendicular underscore - radicalex alpha beta chi delta epsilon phi gamma eta iota - phione kappa lambda mu nu omicron pi theta rho sigma tau - upsilon omegaone omega xi psi zeta braceleft bar braceright - similar Upsilonone minute lessequal fraction infinity florin - club diamond heart spade arrowboth arrowleft arrowup - arrowright arrowdown degree plusminus second greaterequal - multiply proportional partialdiff bullet divide notequal - equivalence approxequal ellipsis arrowvertex arrowhorizex - carriagereturn aleph Ifraktur Rfraktur weierstrass - circlemultiply circleplus emptyset intersection union - propersuperset reflexsuperset notsubset propersubset - reflexsubset element notelement angle gradient registerserif - copyrightserif trademarkserif product radical dotmath - logicalnot logicaland logicalor arrowdblboth arrowdblleft - arrowdblup arrowdblright arrowdbldown lozenge angleleft - registersans copyrightsans trademarksans summation parenlefttp - parenleftex parenleftbt bracketlefttp bracketleftex - bracketleftbt bracelefttp braceleftmid braceleftbt braceex - angleright integral integraltp integralex integralbt - parenrighttp parenrightex parenrightbt bracketrighttp - bracketrightex bracketrightbt bracerighttp bracerightmid - bracerightbt - - # Ordinary symbols (arrows) - leftarrow longleftarrow dblleftarrow dbllongleftarrow - rightarrow longrightarrow dblrightarrow dbllongrightarrow - leftrightarrow longleftrightarrow dblleftrightarrow - dbllongleftrightarrow mapsto longmapsto hookleftarrow - hookrightarrow leadsto leftharpoonup rightharpoonup - leftharpoondown rightharpoondown rightleftharpoons - uparrow dbluparrow downarrow dbldownarrow updownarrow - dblupdownarrow nearrow searrow swarrow nwarrow - - # Ordinary symbols (to get Roman font) - arccos arcsin arctan arg cos cosh cot coth csc deg det dim exp - gcd hom inf ker lg lim liminf limsup ln log max min Pr sec sin - sinh supr tan tanh mod "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" - "!" "?" "%" "(" ")" "[" "]" - - # Ordinary symbols (for atleft and atright) - lpar blpar rpar brpar lbrack blbrack rbrack brbrack lbrace blbrace - rbrace brbrace lfloor blfloor rfloor brfloor lceil blceil - rceil brceil langle blangle rangle brangle - - # Ordinary symbols (miscellaneous) - hbar Re Im partial infty prime nabla surd top bot dbar triangle - backslash forall exists neg circle filledcircle square ldots cdots - vdots ddots del grad "..." ",...," "'" "''" "'''" "''''" empty - triangleup triangledown half third - - # Variable-building symbols - dot dotdot hat tilde vec dyad overbar underbar - sup sub tsub supp on ton - - # Large operator symbols - largeop sum prod coprod bcap bcup bvee bwedge bodot botimes - boplus buplus int oint - - # Unary operator symbols - sqrt root zroot - matrix pmatrix bmatrix brmatrix fmatrix cmatrix amatrix - - # Binary operator symbols - over frac - bin "+" "-" "+-" "-+" setminus cdot times "*" circ div - cap cup uplus sqcap sqcup triangleleft triangleright - wr bigcirc bigtriangleup bigtriangledown vee wedge oplus ominus - otimes oslash odot dagger daggerdbl amalg - - # Relation symbols - rel "<" ">" "=" "<=" prec preceq "<<" subset subseteq sqsubseteq - in vdash smile frown ">=" succ succeq ">>" supset supseteq - sqsupseteq ni dashv mid parallel "==" "~" "-~" asymp "~~" - "=~" bowtie propto models doteq trieq perp notsub notin "!=" - "<->" "<--" "-->" up down "<=>" "<==" "==>" dblup dbldown - ":" "::" ":=" - # not - - # Punctuation symbols - punct ";" "," col - -def @Math - named symbolfont { Symbol Base } - named basefont { Times Base } - named initialstyle { "display" } - named initiallycramped { "No" } - named initialspace { separate 0.05f } - body @Body -@Begin - - ################################################################### - # # - # Operator Precedences (private) # - # # - # All @Math symbols with parameters have explicit precedences # - # defined by invoking one of the following macros. Symbols # - # that are typically used to build variables have high # - # precedence (84-80), then come unary operators (70), then # - # binary operators (66-60), then relations and the rest. # - # See also http://en.wikipedia.org/wiki/Order_of_operations . # - # # - ################################################################### - - macro @MaxPrec { 100 } - macro @HatPrec { 84 } - macro @SubPrec { 82 } - macro @SupPrec { 80 } - macro @UnaryOpPrec { 70 } - macro @BinaryOpTimesPrec { 64 } - macro @BinaryOpDividePrec { 62 } - macro @BinaryOpPrec { 60 } - macro @RelationPrec { 50 } - macro @PunctuationPrec { 40 } - macro @HelperNonPrec { 26 } - macro @HelperAbovePrec { 24 } - macro @HelperColPrec { 22 } - macro @HelperRowPrec { 20 } - - - ################################################################### - # # - # Context-sensitive format changes (private) # - # # - # Equation formatting (according to Knuth) demands changes in # - # the appearance of equations depending on context. Knuth # - # distinguishes four major styles (the TeXbook, Ch. 17): # - # # - # display formulas displayed on lines by themselves # - # text formulas embedded in the text # - # script formulas used as superscripts or subscripts # - # scriptscript second-order superscripts or subscripts # - # # - # Each style has its own font size and spacing rules. # - # Additionally, each of these styles can be ``cramped'', # - # meaning that exponents are not raised as much. To these # - # four styles @Math adds a fifth: # - # # - # nohspace formulas enclosed in "non" # - # # - # which implements the "non" operator by causing all # - # style-dependent horizontal space to be 0. # - # # - ################################################################### - - macro @CurrStyleVar { "EqCurrStyle" } - macro @CrampedVar { "EqCramped?" } - - def @CurrStyle { @GetContext @CurrStyleVar } - def @Cramped { @GetContext @CrampedVar } - - def @EqDebug - { - # Uncomment the following line to get debugging information. - #{ { Helvetica Base 0.7f } @Font @CurrStyle } |0.2f - @Null - } - - def @WithStyle - named style { "display" } - named cramped { "No" } - right x - { - def @NewFontSize - { - @CurrStyle @Case { - "scriptscript" @Yield 1.0f # can't be smaller - "script" @Yield { - style @Case { - "script" @Yield 1.0f - else @Yield 0.8f } } - "text" @Yield { - style @Case { - "text" @Yield 1.0f - else @Yield 0.7f } } - "display" @Yield { - style @Case { - # display and text styles yield the same font size - { "display" "text" } @Yield 1.0f - else @Yield 0.7f } } - "nohspace" @Yield 1.0f - } - } - - - #{ Helvetica Base 0.4f } @Font { @CurrStyle -> style } |0.2f - @NewFontSize @Font - { @CurrStyleVar @Yield style } @SetContext { - { @CrampedVar @Yield cramped } @SetContext { - # FIXME: Space is not properly inherited, hence this - # `@Space' invocation. - { initialspace @Space x } - } - } - } - - def @CurrSuperScriptGap - { - @Cramped @Case { - "Yes" @Yield 0.23fk - "No" @Yield 0.35fk - } - } - - def @SubScriptGap { 0.35fk } - - # Space around relational operators. - def @CurrRelSpaceGap - { - @CurrStyle @Case { - { "display" "text" } @Yield 0.300fe - "nohspace" @Yield 0i - else @Yield 0.030ce - } - } - - # Space around binary operators. - def @CurrBinarySpaceGap - { - @CurrStyle @Case { - { "display" "text" } @Yield 0.240fe - "nohspace" @Yield 0i - else @Yield 0.024ce - } - } - - # Space around punctuation marks, including matrix braces. - def @CurrPunctSpaceGap - { - @CurrStyle @Case { - { "display" "text" } @Yield 0.180fe - "nohspace" @Yield 0i - else @Yield 0.018ce - } - } - - # Gap above/below math expressions (see, e.g., `to' and `from'). - def @AboveGap { 0.15f } - def @BelowGap { 0.15f } - - def @SkewGap { 0.05f } - def @ColGap { 0.8f } - def @RowGap { 0.5f } - - - ################################################################### - # # - # Miscellaneous helper definitions (private) # - # # - ################################################################### - - def @Base precedence @MaxPrec right x { basefont @Font x } - def @Sym precedence @MaxPrec right x { symbolfont @Font x } - - def @HLine - named line { @BackEnd @Case { PostScript @Yield { "0.05 ft setlinewidth" } PDF @Yield { "__mul(__loutf, 0.05) w" } } } - { - @BackEnd @Case { - PostScript @Yield { - { "0 0 moveto xsize 0 lineto" line "stroke" } @Graphic {} - } - PDF @Yield { # note re-arrangement of commands (setlinewidth (='w') not allowed in a path) - { line "0 0 m __xsize 0 l s" } @Graphic {} - } - } - } - - def @VLine - { - @BackEnd @Case { - PostScript @Yield { - "0 0 moveto 0 ysize lineto 0.05 ft setlinewidth stroke" @Graphic {} - } - PDF @Yield { - "__mul(__loutf, 0.05) w 0 0 m 0 __ysize l s" @Graphic {} - } - } - } - - def @Strut - precedence @MaxPrec - right x - { - @OneCol { x | @OneRow { 0.5f @High ^/ 0.5f @High } } - } - - def @OrDefault - left l - right r - { - l @Case { - "dft" @Yield r - else @Yield l - } - } - - - ################################################################### - # # - # Helper symbols (public, exc @ScriptStyle and @FractionStyle) # - # # - ################################################################### - - def above - precedence @HelperAbovePrec - associativity left - left x - named gap { @BelowGap } - named skew { 0c } - right y - { - @HContract @VContract - { |0.5rt x - //gap |0.5rt &skew y - } - } - - def below - precedence @HelperAbovePrec - associativity left - left x - named gap { @AboveGap } - named skew { 0c } - right y - { - @HContract @VContract - { |0.5rt &skew y - ^//gap |0.5rt x - } - } - - def wideabove - precedence @HelperAbovePrec - associativity left - left x - named gap { @BelowGap } - right y - { - @HContract @VContract - { - x //gap @HScale y - } - } - - def widebelow - precedence @HelperAbovePrec - associativity left - left x - named gap { @AboveGap } - right y - { - @HContract @VContract - { - @HScale y ^//gap x - } - } - - def "`" { &@CurrPunctSpaceGap } - def "``" { &@CurrBinarySpaceGap } - def "```" { &@CurrRelSpaceGap } - - def non - precedence @HelperNonPrec - right x - { - { @CurrStyleVar @Yield "nohspace" } @SetContext x - } - - def big - precedence @MaxPrec - right x - { - 1.3f @Font x - } - - def small - precedence @MaxPrec - right x - { - 0.6f @Font x - } - - def vctr - precedence @MaxPrec - right x - { - 0.5w @VShift x - } - - def @ScriptStyle - named level { "sup" } - right script - { - @WithStyle - style { @CurrStyle @Case { - { "display" "text" } @Yield "script" - { "script" "scriptscript" } @Yield "scriptscript" - "nohspace" @Yield "nohspace" - } } - cramped { level @Case { - "sub" @Yield "Yes" - "sup" @Yield @Cramped - } } - { script } - } - - def @SuperScriptStyle right superscript - { - @ScriptStyle level { "sup" } superscript - } - - def @SubScriptStyle right subscript - { - @ScriptStyle level { "sub" } subscript - } - - def @FractionStyle - named level { "numerator" } - right x - { - @WithStyle - style { @CurrStyle @Case { - "display" @Yield "text" - "text" @Yield "script" - { "script" "scriptscript" } @Yield "scriptscript" - "nohspace" @Yield "nohspace" - } } - cramped { level @Case { - "numerator" @Yield @Cramped - "denominator" @Yield "Yes" - } } - { x } - } - - def @NumeratorStyle right x - { - @FractionStyle level { "numerator" } x - } - - def @DenominatorStyle right x - { - @FractionStyle level { "denominator" } x - } - - def @SquareRootStyle right x - { - @WithStyle style { @CurrStyle } cramped { "Yes" } x - } - - ################################################################### - # # - # Ordinary symbols (Symbol font) # - # # - # These symbols and their names are taken directly from the # - # Adobe Systems Inc. Symbol font (see PostScript Language # - # Reference Manual, pp. 256-257). The only differences are: # - # # - # Adobe: theta1 @Math: thetaone # - # sigma1 sigmaone # - # phi1 phione # - # omega1 omegaone # - # Upsilon1 Upsilonone # - # # - # These were needed since Lout identifiers do not have digits. # - # # - ################################################################### - - def space { @Sym @Char "space" } - def exclam { @Sym @Char "exclam" } - def universal { @Sym @Char "universal" } - def numbersign { @Sym @Char "numbersign" } - def existential { @Sym @Char "existential" } - def percent { @Sym @Char "percent" } - def ampersand { @Sym @Char "ampersand" } - def suchthat { @Sym @Char "suchthat" } - def parenleft { @Sym @Char "parenleft" } - def parenright { @Sym @Char "parenright" } - def asteriskmath { @Sym @Char "asteriskmath" } - def plus { @Sym @Char "plus" } - def comma { @Sym @Char "comma" } - def minus { @Sym @Char "minus" } - def period { @Sym @Char "period" } - def slash { @Sym @Char "slash" } - def zero { @Sym @Char "zero" } - def one { @Sym @Char "one" } - def two { @Sym @Char "two" } - def three { @Sym @Char "three" } - def four { @Sym @Char "four" } - def five { @Sym @Char "five" } - def six { @Sym @Char "six" } - def seven { @Sym @Char "seven" } - def eight { @Sym @Char "eight" } - def nine { @Sym @Char "nine" } - def colon { @Sym @Char "colon" } - def semicolon { @Sym @Char "semicolon" } - def less { @Sym @Char "less" } - def equal { @Sym @Char "equal" } - def greater { @Sym @Char "greater" } - def question { @Sym @Char "question" } - def congruent { @Sym @Char "congruent" } - def Alpha { @Sym @Char "Alpha" } - def Beta { @Sym @Char "Beta" } - def Chi { @Sym @Char "Chi" } - def Delta { @Sym @Char "Delta" } - def Epsilon { @Sym @Char "Epsilon" } - def Phi { @Sym @Char "Phi" } - def Gamma { @Sym @Char "Gamma" } - def Eta { @Sym @Char "Eta" } - def Iota { @Sym @Char "Iota" } - def thetaone { @Sym @Char "theta1" } - def Kappa { @Sym @Char "Kappa" } - - def Lambda { @Sym @Char "Lambda" } - def Mu { @Sym @Char "Mu" } - def Nu { @Sym @Char "Nu" } - def Omicron { @Sym @Char "Omicron" } - def Pi { @Sym @Char "Pi" } - def Theta { @Sym @Char "Theta" } - def Rho { @Sym @Char "Rho" } - def Sigma { @Sym @Char "Sigma" } - def Tau { @Sym @Char "Tau" } - def Upsilon { @Sym @Char "Upsilon" } - def sigmaone { @Sym @Char "sigma1" } - def Omega { @Sym @Char "Omega" } - def Xi { @Sym @Char "Xi" } - def Psi { @Sym @Char "Psi" } - def Zeta { @Sym @Char "Zeta" } - def bracketleft { @Sym @Char "bracketleft" } - def therefore { @Sym @Char "therefore" } - def bracketright { @Sym @Char "bracketright" } - def perpendicular { @Sym @Char "perpendicular" } - def underscore { @Sym @Char "underscore" } - def radicalex { @Sym @Char "radicalex" } - def alpha { @Sym @Char "alpha" } - def beta { @Sym @Char "beta" } - def chi { @Sym @Char "chi" } - def delta { @Sym @Char "delta" } - def epsilon { @Sym @Char "epsilon" } - def phi { @Sym @Char "phi" } - def gamma { @Sym @Char "gamma" } - def eta { @Sym @Char "eta" } - def iota { @Sym @Char "iota" } - def phione { @Sym @Char "phi1" } - def kappa { @Sym @Char "kappa" } - def lambda { @Sym @Char "lambda" } - def mu { @Sym @Char "mu" } - def nu { @Sym @Char "nu" } - - def omicron { @Sym @Char "omicron" } - def pi { @Sym @Char "pi" } - def theta { @Sym @Char "theta" } - def rho { @Sym @Char "rho" } - def sigma { @Sym @Char "sigma" } - def tau { @Sym @Char "tau" } - def upsilon { @Sym @Char "upsilon" } - def omegaone { @Sym @Char "omega1" } - def omega { @Sym @Char "omega" } - def xi { @Sym @Char "xi" } - def psi { @Sym @Char "psi" } - def zeta { @Sym @Char "zeta" } - def braceleft { @Sym @Char "braceleft" } - def bar { @Sym @Char "bar" } - def braceright { @Sym @Char "braceright" } - def similar { @Sym @Char "similar" } - def Upsilonone { @Sym @Char "Upsilon1" } - def minute { @Sym @Char "minute" } - def lessequal { @Sym @Char "lessequal" } - def fraction { @Sym @Char "fraction" } - # For Adobe Symbol, `infinity' used to be "1.2f @Font { ... }" - def infinity { @Sym @Char "infinity" } - def florin { @Sym @Char "florin" } - def club { @Sym @Char "club" } - def diamond { @Sym @Char "diamond" } - def heart { @Sym @Char "heart" } - def spade { @Sym @Char "spade" } - def arrowboth { @Sym @Char "arrowboth" } - def arrowleft { @Sym @Char "arrowleft" } - def arrowup { @Sym @Char "arrowup" } - def arrowright { @Sym @Char "arrowright" } - def arrowdown { @Sym @Char "arrowdown" } - def degree { @Sym @Char "degree" } - def plusminus { @Sym @Char "plusminus" } - def second { @Sym @Char "second" } - def greaterequal { @Sym @Char "greaterequal" } - - def multiply { @Sym @Char "multiply" } - def proportional { @Sym @Char "proportional" } - def partialdiff { @Sym @Char "partialdiff" } - def bullet { @Sym @Char "bullet" } - def divide { @Sym @Char "divide" } - def notequal { @Sym @Char "notequal" } - def equivalence { @Sym @Char "equivalence" } - def approxequal { @Sym @Char "approxequal" } - def ellipsis { @Sym @Char "ellipsis" } - def arrowvertex { @Sym @Char "arrowvertex" } - def arrowhorizex { @Sym @Char "arrowhorizex" } - def carriagereturn { @Sym @Char "carriagereturn" } - def aleph { @Sym @Char "aleph" } - def Ifraktur { @Sym @Char "Ifraktur" } - def Rfraktur { @Sym @Char "Rfraktur" } - def weierstrass { @Sym @Char "weierstrass" } - def circlemultiply { @Sym @Char "circlemultiply" } - def circleplus { @Sym @Char "circleplus" } - def emptyset { @Sym @Char "emptyset" } - def intersection { @Sym @Char "intersection" } - def union { @Sym @Char "union" } - def propersuperset { @Sym @Char "propersuperset" } - def reflexsuperset { @Sym @Char "reflexsuperset" } - def notsubset { @Sym @Char "notsubset" } - def propersubset { @Sym @Char "propersubset" } - def reflexsubset { @Sym @Char "reflexsubset" } - def element { @Sym @Char "element" } - def notelement { @Sym @Char "notelement" } - def angle { @Sym @Char "angle" } - def gradient { @Sym @Char "gradient" } - def registerserif { @Sym @Char "registerserif" } - def copyrightserif { @Sym @Char "copyrightserif" } - def trademarkserif { @Sym @Char "trademarkserif" } - def product { @Sym @Char "product" } - def radical { @Sym @Char "radical" } - def dotmath { @Sym @Char "dotmath" } - def logicalnot { @Sym @Char "logicalnot" } - def logicaland { @Sym @Char "logicaland" } - def logicalor { @Sym @Char "logicalor" } - def arrowdblboth { @Sym @Char "arrowdblboth" } - def arrowdblleft { @Sym @Char "arrowdblleft" } - def arrowdblup { @Sym @Char "arrowdblup" } - def arrowdblright { @Sym @Char "arrowdblright" } - def arrowdbldown { @Sym @Char "arrowdbldown" } - def lozenge { @Sym @Char "lozenge" } - def angleleft { @Sym @Char "angleleft" } - def registersans { @Sym @Char "registersans" } - def copyrightsans { @Sym @Char "copyrightsans" } - def trademarksans { @Sym @Char "trademarksans" } - def summation { @Sym @Char "summation" } - def parenlefttp { @Sym @Char "parenlefttp" } - def parenleftex { @Sym @Char "parenleftex" } - def parenleftbt { @Sym @Char "parenleftbt" } - def bracketlefttp { @Sym @Char "bracketlefttp" } - def bracketleftex { @Sym @Char "bracketleftex" } - def bracketleftbt { @Sym @Char "bracketleftbt" } - def bracelefttp { @Sym @Char "bracelefttp" } - def braceleftmid { @Sym @Char "braceleftmid" } - def braceleftbt { @Sym @Char "braceleftbt" } - def braceex { @Sym @Char "braceex" } - def angleright { @Sym @Char "angleright" } - def integral { @Sym @Char "integral" } - def integraltp { @Sym @Char "integraltp" } - def integralex { @Sym @Char "integralex" } - def integralbt { @Sym @Char "integralbt" } - def parenrighttp { @Sym @Char "parenrighttp" } - def parenrightex { @Sym @Char "parenrightex" } - def parenrightbt { @Sym @Char "parenrightbt" } - def bracketrighttp { @Sym @Char "bracketrighttp" } - def bracketrightex { @Sym @Char "bracketrightex" } - def bracketrightbt { @Sym @Char "bracketrightbt" } - def bracerighttp { @Sym @Char "bracerighttp" } - def bracerightmid { @Sym @Char "bracerightmid" } - def bracerightbt { @Sym @Char "bracerightbt" } - - - ################################################################### - # # - # Ordinary symbols (arrows) # - # # - ################################################################### - - def leftarrow { arrowleft } - def longleftarrow { { 1.6 1 } @Scale arrowleft } - def dblleftarrow { arrowdblleft } - def dbllongleftarrow { { 1.6 1 } @Scale arrowdblleft } - def rightarrow { arrowright } - def longrightarrow { { 1.6 1 } @Scale arrowright } - def dblrightarrow { arrowdblright } - def dbllongrightarrow { { 1.6 1 } @Scale arrowdblright } - def leftrightarrow { arrowboth } - def longleftrightarrow { { 1.6 1 } @Scale arrowboth } - def dblleftrightarrow { arrowdblboth } - def dbllongleftrightarrow { { 1.6 1 } @Scale arrowdblboth } - - def mapsto - { - @HContract @VContract { - @BackEnd @Case { - PostScript @Yield { - "0 ymark 0.16 ft sub moveto 0 ymark 0.16 ft add lineto stroke" - @Graphic arrowright - } - PDF @Yield { - "0 __sub(__ymark, __mul(__loutf, 0.16)) m 0 __add(__ymark, __mul(__loutf, 0.16)) l S" - @Graphic arrowright - } - } - } - } - - def longmapsto - { - @HContract @VContract { - @BackEnd @Case { - PostScript @Yield { - "0 ymark 0.16 ft sub moveto 0 ymark 0.16 ft add lineto stroke" - @Graphic { { 1.6 1 } @Scale arrowright } - } - PDF @Yield { - "0 __sub(__ymark, __mul(__loutf, 0.16)) m 0 __add(__ymark, __mul(__loutf, 0.16)) l S" - @Graphic { { 1.6 1 } @Scale arrowright } - } - } - } - } - - def hookleftarrow - { - @HContract @VContract { - @BackEnd @Case { - - PostScript @Yield { - "xsize ymark moveto xsize ymark 0.1 ft add 0.1 ft -90 90 arc stroke" - @Graphic leftarrow - } - - PDF @Yield { -# -# VT: draws a counterclockwise 180 degree arc from -90 to +90 degree positions -# (straight down to straight up) with centre = (xsize, ymark + 0.1 ft) -# and radius = 0.1 ft -# -# the control points therefore are: -# pt1 = (xsize + (4/3 * 0.1 ft), ymark) and pt2 = (xsize + (4/3 * 0.1 ft), ymark + 0.2 ft) -# - { - "__xsize __ymark m" # pt0 - "__add(__xsize, __div(__mul(0.4, __loutf), 3)) __ymark" # pt1 - "__add(__xsize, __div(__mul(0.4, __loutf), 3)) __add(__ymark, __mul(0.2, __loutf))" # pt2 - "__xsize __add(__ymark, __mul(0.2, __loutf)) c S" # pt3 - } - @Graphic leftarrow - } - - } - } - } - - def hookrightarrow - { - @HContract @VContract { - @BackEnd @Case { - - PostScript @Yield { - "0 ymark moveto 0 0.1 ft ymark add 0.1 ft -90 90 arcn stroke" - @Graphic rightarrow - } - - PDF @Yield { -# -# VT: draws a clockwise 180 degree arc from -90 to +90 degree positions -# (straight down to straight up) with centre = (0, ymark + 0.1 ft) -# and radius = 0.1 ft -# -# the control points therefore are: -# pt1 = (-4/3 * 0.1 ft, ymark) and pt2 = (-4/3 * 0.1 ft, ymark + 0.2 ft) -# - { - "0 __ymark m" # pt0 - "__div(__mul(-0.4, __loutf), 3) __ymark" # pt1 - "__div(__mul(-0.4, __loutf), 3) __add(__ymark, __mul(0.2, __loutf))" # pt2 - "0 __add(__ymark, __mul(0.2, __loutf)) c S" # pt3 - } - @Graphic rightarrow - } - - } - } - } - - def @ClipToSize right x - { - @HContract @VContract - @BackEnd @Case { - PostScript @Yield { - { - "grestore newpath 0 0 moveto xsize 0 lineto xsize ysize lineto" - "0 ysize lineto closepath clip gsave" - } @Graphic x - } - PDF @Yield { - "Q n 0 0 __xsize __ysize re W n q" @Graphic x - } - } - } - - def @ClipAboveMark - left amount - right x - { - @ClipToSize { ^//{{amount}o} x } - } - - def @ClipBelowMark - left amount - right x - { - @ClipToSize { x //{{amount}o} } - } - - def leftharpoonup - { - 0.04f @ClipBelowMark leftarrow - } - - def rightharpoonup - { - 0.04f @ClipBelowMark rightarrow - } - - def leftharpoondown - { - 0.02f @ClipAboveMark leftarrow - } - - def rightharpoondown - { - 0.02f @ClipAboveMark rightarrow - } - - def rightleftharpoons - { - @HContract @VContract { - rightharpoonup - ^//0.1fo - //0.1fo - leftharpoondown - } - } - - def leadsto { @HContract { similar &0.4fo arrowright } } - - def uparrow { arrowup } - def dbluparrow { arrowdblup } - def downarrow { arrowdown } - def dbldownarrow { arrowdbldown } - def updownarrow { @HContract { arrowup &0io arrowdown } } - def dblupdownarrow { @VContract { arrowdblup ^//0.2fo arrowdbldown } } - def nearrow { 0.5w @VShift 0.5w @HShift 45d @Rotate arrowright } - def searrow { 0.5w @VShift 0.5w @HShift 315d @Rotate arrowright } - def swarrow { 0.5w @VShift 0.5w @HShift 225d @Rotate arrowright } - def nwarrow { 0.5w @VShift 0.5w @HShift 135d @Rotate arrowright } - - - ################################################################### - # # - # Ordinary symbols (to get Roman font) # - # # - # These symbols are defined to yield themselves, but in Roman # - # font rather than the Italic that would otherwise be used. # - # See Knuth p. 162 and 132. The definitions of "0" ... "9" # - # should logically appear here, but they have been moved to # - # the end since it is awkward to enter numeric lengths after # - # they are defined. # - # # - ################################################################### - - def arccos { @Base "arccos" } - def arcsin { @Base "arcsin" } - def arctan { @Base "arctan" } - def arg { @Base "arg" } - def cos { @Base "cos" } - def cosh { @Base "cosh" } - def cot { @Base "cot" } - def coth { @Base "coth" } - def csc { @Base "csc" } - def deg { @Base "deg" } - def det { @Base "det" } - def dim { @Base "dim" } - def exp { @Base "exp" } - def gcd { @Base "gcd" } - def hom { @Base "hom" } - def inf { @Base "inf" } - def ker { @Base "ker" } - def lg { @Base "lg" } - def lim { @Base "lim" } - def liminf { @OneCol { @Base "lim" ` @Base "inf" } } - def limsup { @OneCol { @Base "lim" ` @Base "sup" } } - def ln { @Base "ln" } - def log { @Base "log" } - def max { @Base "max" } - def min { @Base "min" } - def Pr { @Base "Pr" } - def sec { @Base "sec" } - def sin { @Base "sin" } - def sinh { @Base "sinh" } - def supr { @Base "sup" } - def tan { @Base "tan" } - def tanh { @Base "tanh" } - def mod { @Base "mod" } - def "!" { exclam } - def "?" { question } - def "%" { percent } - def "(" { parenleft } - def ")" { parenright } - def "[" { bracketleft } - def "]" { bracketright } - - - ################################################################### - # # - # Ordinary symbols (for atleft and atright) # - # These are Knuth's Groups 11 and 12 - openings and closings. # - # # - ################################################################### - - def lpar { parenleft } - def rpar { parenright } - def lbrack { bracketleft } - def rbrack { bracketright } - def lbrace { braceleft } - def rbrace { braceright } - def lfloor { ` "-0.15f" @VShift bracketleftbt } - def rfloor { "-0.15f" @VShift bracketrightbt ` } - def lceil { ` "-0.1f" @VShift bracketlefttp } - def rceil { "-0.1f" @VShift bracketrighttp ` } - def langle { angleleft } - def rangle { angleright } - - def blpar { @OneRow {parenlefttp ^/ parenleftex / parenleftbt } } - def brpar { @OneRow {parenrighttp ^/ parenrightex / parenrightbt } } - def blbrack { @OneRow {bracketlefttp ^/ bracketleftex / bracketleftbt } } - def brbrack { @OneRow {bracketrighttp ^/ bracketrightex / bracketrightbt} } - def blbrace { @OneRow {bracelefttp ^/ braceleftmid / braceleftbt } } - def brbrace { @OneRow {bracerighttp ^/ bracerightmid / bracerightbt } } - def blfloor { @OneRow {bracketleftex ^/ bracketleftex / bracketleftbt } } - def brfloor { @OneRow {bracketrightex ^/ bracketrightex / bracketrightbt} } - def blceil { @OneRow {bracketlefttp ^/ bracketleftex / bracketleftex } } - def brceil { @OneRow {bracketrighttp ^/ bracketrightex / bracketrightex} } - - def blangle - { - @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { "xsize 0 moveto 0 ysize 2 div lineto" - "xsize ysize lineto 0.04 ft setlinewidth stroke" - } @Graphic { 0.5f @Wide 2f @High ^/ 2f @High } - } - PDF @Yield { - { "__mul(__loutf, 0.04) w __xsize 0 m" - "0 __div(__ysize, 2) l __xsize __ysize l S" - } @Graphic { 0.5f @Wide 2f @High ^/ 2f @High } - } - } - } - - def brangle - { - @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { "0 0 moveto xsize ysize 2 div lineto" - "0 ysize lineto 0.04 ft setlinewidth stroke" - } @Graphic { 0.5f @Wide 2f @High ^/ 2f @High } - } - PDF @Yield { - { "__mul(__loutf, 0.04) w 0 0 m" - "__xsize __div(__ysize, 2) l 0 __ysize l S" - } @Graphic { 0.5f @Wide 2f @High ^/ 2f @High } - } - } - } - - - ################################################################### - # # - # Ordinary symbols (miscellaneous) # - # # - # Not all of Knuth's symbols are available. The four suits # - # (heartsuit, etc.), have definitions above. # - # # - ################################################################### - - def hbar { @HContract @VContract {&0.1f @Base "-" ^/0.30fo h }} - def Re { Rfraktur } - def Im { Ifraktur } - def partial { partialdiff } - def infty { infinity } - def prime { minute } - #def emptyset { defined above } - def nabla { gradient } - def surd { radical } - def top { 180d @Rotate perpendicular } - def bot { perpendicular } - def dbar { @Base "||" } - #def angle { defined above } - def backslash { "\\" } - def forall { universal } - def exists { existential } - def neg { logicalnot } - - def circle - { @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { - "xsize ysize 2 div moveto" - "xsize 2 div ysize 2 div xsize 2 div 0 360 arc" - "0.04 ft setlinewidth stroke" - } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High } - } - PDF @Yield { - # - # VT: draws a counterclockwise 360 degree arc from 0 to +360 - # degree positions (straight right to straight right) with - # centre = (xsize/2, ysize/2) and radius = xsize/2, - # implemented as two counterclockwise 180 degree arcs. - # start at (xsize, ysize/2); the control points are: - # - # pt1 = (xsize, ysize/2 + (4/3 * xsize/2)) - # pt2 = (0, ysize/2 + (4/3 * xsize/2)) - # - # end at (0, ysize/2). Then start at (0, ysize/2); control points - # - # pt1 = (0, ysize/2 - (4/3 * xsize/2)) - # pt2 = (xsize, ysize/2 - (4/3 * xsize/2)) - # - # and end at (xsize, ysize/2). - - { - "__mul(0.04, __loutf) w" - "__xsize __div(__ysize, 2) m" - "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "0 __div(__ysize, 2) c" - "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "__xsize __div(__ysize, 2) c S" - } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High } - } - } - } - - def filledcircle - { @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { - "xsize ysize 2 div moveto" - "xsize 2 div ysize 2 div xsize 2 div 0 360 arc" - "0.04 ft setlinewidth fill" - } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High } - } - PDF @Yield { - # - # JK: I don't know how to fill in PDF, so this doesn't! - # - # VT: draws a counterclockwise 360 degree arc from 0 to +360 - # degree positions (straight right to straight right) with - # centre = (xsize/2, ysize/2) and radius = xsize/2, - # implemented as two counterclockwise 180 degree arcs. - # start at (xsize, ysize/2); the control points are: - # - # pt1 = (xsize, ysize/2 + (4/3 * xsize/2)) - # pt2 = (0, ysize/2 + (4/3 * xsize/2)) - # - # end at (0, ysize/2). Then start at (0, ysize/2); control points - # - # pt1 = (0, ysize/2 - (4/3 * xsize/2)) - # pt2 = (xsize, ysize/2 - (4/3 * xsize/2)) - # - # and end at (xsize, ysize/2). - - { - "__mul(0.04, __loutf) w" - "__xsize __div(__ysize, 2) m" - "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "0 __div(__ysize, 2) c" - "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))" - "__xsize __div(__ysize, 2) c S" - } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High } - } - } - } - - def square - { @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { - "0 0 moveto xsize 0 lineto xsize ysize lineto" - "0 ysize lineto closepath" - "0.04 ft setlinewidth stroke" - } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High } - } - PDF @Yield { - { - "__mul(__loutf, 0.04) w" - "0 0 m __xsize 0 l __xsize __ysize l" - "0 __ysize l s" - } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High } - } - } - } - - def triangle - { @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { - "0 0 moveto xsize 0 lineto" - "xsize 2 div ysize lineto closepath" - "0.04 ft setlinewidth stroke" - } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High } - } - PDF @Yield { - { - "__mul(__loutf, 0.04) w" - "0 0 m __xsize 0 l" - "__div(__xsize, 2) __ysize l s" - } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High } - } - } - } - - # other symbols taken from TeX - def ldots { . &0.3f . &0.3f . } - def cdots { dotmath &0.3f dotmath &0.3f dotmath } - def vdots { @OneRow { dotmath ^/0.3f dotmath /0.3f dotmath } } - def ddots { @OneCol @OneRow - { dotmath - ^/0.3f |0.3f dotmath - /0.3f | |0.3f dotmath - } - } - - # symbols taken from eqn (Kernighan and Cherry 1975). # - def del { gradient } - def grad { gradient } - def "..." { ellipsis } - def ",...," { , ellipsis ``` , } - def "'" { minute } - def "''" { minute minute } - def "'''" { minute minute minute } - def "''''" { minute minute minute minute } - def empty { emptyset } - - # forget where these are from - def triangleup { 0.8f @Font triangle } - def triangledown { 180d @Rotate 0.8f @Font triangle } - - # half and third defined later, since they use frac - - - ################################################################### - # # - # Variable-building symbols # - # # - # These symbols are essentially those of eqn, with some # - # changes and additions. # - # # - ################################################################### - - def dot - precedence @HatPrec - left x - named gap { @AboveGap } - { - x below gap { gap } skew { @SkewGap } @SuperScriptStyle . - } - - def dotdot - precedence @HatPrec - left x - named gap { @AboveGap } - { - x below gap { gap } skew { @SkewGap } @SuperScriptStyle .. - } - - def hat - precedence @HatPrec - left x - named gap { @AboveGap } - { - x below gap { gap } skew { @SkewGap } @SuperScriptStyle @Base "^" - } - - def tilde - precedence @HatPrec - left x - named gap { @AboveGap } - { - x below gap { gap } skew { @SkewGap } @SuperScriptStyle @Base "~" - } - - def vec - precedence @HatPrec - left x - named gap { @AboveGap } - { - x below gap { gap } skew { @SkewGap } @SuperScriptStyle arrowright - } - - def dyad - precedence @HatPrec - left x - named gap { @AboveGap } - { - x below gap { gap } skew { @SkewGap } @SuperScriptStyle arrowboth - } - - def overbar - precedence @HatPrec - left x - named gap { @AboveGap } - { - { @WithStyle style { @CurrStyle } cramped { "Yes" } x } - widebelow gap { gap } @SuperScriptStyle minus - } - - def underbar - precedence @HatPrec - left x - named gap { @BelowGap } - { - x wideabove gap { gap } @SuperScriptStyle minus - } - - def sup - precedence @SupPrec - associativity left - left x - named gap { "dft" } - right y - { - @HContract @VContract - { | @SuperScriptStyle y - ^/{ gap @OrDefault @CurrSuperScriptGap } x - } - } - - def sub - precedence @SubPrec - associativity left - left x - named gap { @SubScriptGap } - right y - { - @HContract @VContract - { - "." @KernShrink x - /gap | @SubScriptStyle y - } - } - - def tsub - precedence @SubPrec - associativity left - left x - named gap { @SubScriptGap } - right y - { - @HContract @VContract - { - x - /gap | &0io 0.2f @HShift @SubScriptStyle y - } - } - - def supp - precedence @SupPrec - associativity left - left x - named gap { "dft" } - right y - { - @HContract @VContract - { - { ^/{ gap @OrDefault @CurrSuperScriptGap } x - /{ gap @OrDefault @CurrSuperScriptGap } } - | y - } - } - - def on - precedence @SubPrec - associativity left - left x - right y - { - { @SuperScriptStyle x } ^/ / - { @SubScriptStyle y } - } - - def ton - precedence @SubPrec - associativity left - left x - right y - { - @SuperScriptStyle x ^/ / - &0io 0.3f @HShift @SubScriptStyle y - } - - - ################################################################### - # # - # Large operator symbols (Knuth's Group 6 "Large" operators) # - # # - # Layout of large operators differs in several ways, depending # - # on whether they are in display mode or not. # - # # - # 1. The operator itself is larger in display mode. We # - # achieve this by automatically prepending `big' to the # - # operator's symbol when in display mode. # - # # - # 2. The "bounds" of these operators (i.e., `from' and `to') # - # are set as limits (i.e., above and below the operator # - # symbol) when in display mode, and displayed to the # - # right of the symbol otherwise. Integrations are an # - # exception (the only exception?). # - # # - # See ``The TeXbook'', Chapter 17. # - # # - ################################################################### - - def largeop - named symbol { "largeop" } - named limits { "dft" } # whether to set `from' and `to' as limits - named from { "" } - named to { "" } - { - def @Symbol - { - @CurrStyle @Case { - "display" @Yield { big symbol } - else @Yield symbol - } - } - - def @Limits - { - limits @OrDefault { - @CurrStyle @Case { - "display" @Yield "Yes" - else @Yield "No" } - } - } - - def @LimitsBody - { - @Symbol above { @SuperScriptStyle from } - below { @SubScriptStyle to } - } - - def @NoLimitsBody - { - 0.5w @VShift { - 1.0w @VShift @OneRow { - { | 0.3w @VShift @SuperScriptStyle to } - ^/0.0fo { 0w @VShift @Symbol | } - } - - /0.0fo - - { | 0.7w @VShift @SubScriptStyle from } - } - |{ @CurrPunctSpaceGap } - } - - @Limits @Case { - { "Yes" "yes" } @Yield @LimitsBody - { "No" "no" } @Yield @NoLimitsBody - } - } - - # Ludovic's symbol, no longer used - def largeoperator - named symbol { "largeop" } - named from { "" } - named to { "" } - named limits { "Yes" } # whether to set `from' and `to' as limits - { - def @NoLimitsBody { - 0.5w @VShift { - 1.0w @VShift @OneRow { - { | 0.3w @VShift @SuperScriptStyle to } - ^/0.0fo { 0w @VShift symbol | } - } - - /0.0fo - - { | 0.7w @VShift @SubScriptStyle from } - } - |{ @CurrPunctSpaceGap } - } - - def @LimitsBody { - symbol above { @SuperScriptStyle from } - below { @SubScriptStyle to } - } - - limits @Case { - { "Yes" "yes" } @Yield @LimitsBody - { "No" "no" } @Yield @NoLimitsBody - } - } - - # Ludovic's symbol, no longer used - def simplelargeoperator - named symbol { "simplelargeop" } - named limits { "dft" } - named from { } - named to { } - { - largeoperator - symbol { @CurrStyle @Case { - "display" @Yield { big symbol } - else @Yield symbol } - } - limits { limits @OrDefault { - @CurrStyle @Case { - "display" @Yield "Yes" - else @Yield "No" } - } - } - from { from } - to { to } - } - - def sum - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { summation } limits { limits } from { from } to { to } - } - - def prod - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { product } limits { limits } from { from } to { to } - } - - def coprod - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { 180d @Rotate vctr product } - limits { limits } from { from } to { to } - } - - def bcap - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { big intersection } limits { limits } from { from } to { to } - } - - def bcup - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { big union } limits { limits } from { from } to { to } - } - - def bvee - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { big logicalor } limits { limits } from { from } to { to } - } - - def bwedge - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { big logicaland } limits { limits } from { from } to { to } - } - - def circledot - { - def @PureDot # dot with no extra space - { - @HContract { &0io 0.4w @HShift dotmath } - } - - @OneRow @HContract { circle /0io &0.5rt @PureDot /0io circle } - } - - - def bodot - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { circledot } - limits { limits } from { from } to { to } - } - - def botimes - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { circlemultiply } limits { limits } from { from } to { to } - } - - def boplus - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { circleplus } limits { limits } from { from } to { to } - } - - def buplus - named limits { "dft" } - named from {} - named to {} - { - largeop - symbol { & big @HContract { &0.5rt 0.7f @Font plus ^/0.2fo union } } - limits { limits } from { from } to { to } - } - - - ################################################################### - # # - # Integrations are slightly different in that, according to # - # Knuth (Chapter 17, p. 144), ``superscripts and subscripts # - # are not set as limits, even in display style''. Still, as # - # in TeX, we give users the possibility to override this. # - # # - ################################################################### - - # Ludovic's symbol, no longer used - def integration - named symbol { "integration" } - named limits { "No" } - named from { } - named to { } - { - largeoperator - symbol { @CurrStyle @Case { - "display" @Yield { big symbol } - else @Yield symbol } - } - limits { limits } from { from } to { to } - } - - def int - named limits { "No" } - named from { } - named to { } - { - largeop - symbol { vctr big integral } limits { limits } from { from } to { to } - } - - def oint - named limits { "No" } - named from { } - named to { } - { - largeop - symbol { @OneCol { vctr degree |0.015fo big integral } } - limits { limits } from { from } to { to } - } - - - ################################################################### - # # - # Unary operator symbols # - # # - ################################################################### - - def sqrt - precedence @UnaryOpPrec - named gap { @AboveGap } - right x - { - @BackEnd @Case { - PostScript @Yield { - @HContract @VContract - { - @VScale surd | @OneRow - { - @HLine line { "0.03 ft setlinewidth 2 setlinecap" } - ^//gap |gap @SquareRootStyle @Strut x # //gap - } - } - } - PDF @Yield { - @HContract @VContract - { -# -# VT: this PDF is correct but it renders badly in Acrobat (?problem -# with scaling by fractional factors) -# In other words, the @VScale value comes through correctly but it -# looks ugly; GhostScript's translation actually expands the -# "draw surd" instruction into raw moveto's and lineto's which -# it presumably gets from the font's definition of the glyph! -# - @VScale surd | @OneRow - { - @HLine line { "__mul(__loutf, 0.03) w 2 J" } - ^//gap |gap @SquareRootStyle @Strut x # //gap - } - } - } - } - } - - def root - precedence @UnaryOpPrec - associativity left - left x - right y - { - "" sup x &0io sqrt y - } - - def zroot - precedence @UnaryOpPrec - associativity left - left x - right y - { - def zsup right x { "+0.3f" @VShift 0.5f @Font x } - - "-0.4f" @HShift { 1w @HShift { zsup x } } &0co sqrt y - } - - export row axisrow col lcol ccol rcol mcol - def matrix - precedence @UnaryOpPrec - named gap { @CurrBinarySpaceGap } - named strut - named no { } - named No { } - named yes { 0.5f } - named Yes { 0.5f } - { No } - named atleft {} - named atright {} - named userow { No } - named shiftdelim { Yes } - body x - { - def @Strut - { - strut @Case { - "" @Yield {} - else @Yield { @OneRow { strut @High ^/ strut @High } } - } - } - - def newrow - precedence @HelperRowPrec - associativity left - left x - right y - { - x @Case { - "" @Yield { y | @Strut } - else @Yield { x /@RowGap y | @Strut } - } - } - - macro row { newrow "" } - - def newaxisrow - precedence @HelperRowPrec - associativity left - left x - right y - { - x @Case { - "" @Yield { y | @Strut } - else @Yield { x ^/@RowGap y | @Strut } - } - } - - macro axisrow { newaxisrow "" } - - def col - precedence @HelperColPrec - associativity left - left x - named indent { 0.5rt } - right y - { - x @Case { - "" @Yield { &indent @OneCol y } - else @Yield { x |@ColGap &indent @OneCol y } - } - } - - def lcol - precedence @HelperColPrec - associativity left - left x - right y - { - x col indent { 0i } y - } - - def ccol - precedence @HelperColPrec - associativity left - left x - right y - { - x col indent { 0.5rt } y - } - - def rcol - precedence @HelperColPrec - associativity left - left x - right y - { - x col indent { 1rt } y - } - - def mcol - precedence @HelperColPrec - associativity left - left x - right y - { - x @Case { - "" @Yield { @OneCol y } - else @Yield { x |@ColGap @OneCol y } - } - } - - def delim right x - { - x @Case - { - "" @Yield @Null - else @Yield - { - shiftdelim @Case { - { Yes yes } @Yield { @VScale x } - else @Yield { @VCover x } - } - } - } - } - - @HContract @VContract { - delim atleft &@CurrPunctSpaceGap - userow @Case { - {Yes yes} @Yield @HContract @VContract {^//gap @OneRow x //gap} - else @Yield vctr @HContract @VContract { //gap x //gap } - } - &@CurrPunctSpaceGap delim atright - } - } - - macro pmatrix { matrix atleft {1.5f @Font (} atright {1.5f @Font )} } - macro bmatrix { matrix atleft { blbrack } atright { brbrack } } - macro brmatrix { matrix atleft { blbrace } atright { brbrace } } - macro fmatrix { matrix atleft { blfloor } atright { brfloor } } - macro cmatrix { matrix atleft { blceil } atright { brceil } } - macro amatrix { matrix atleft { blangle } atright { brangle } } - - - ################################################################### - # # - # Binary operator symbols # - # # - ################################################################### - - ################################################################### - # # - # over and frac (also half and third) # - # # - ################################################################### - - def over - precedence @BinaryOpDividePrec - associativity left - left x - named gap { "dft" } - named belowgap { "dft" } - right y - { - def @AboveLineGap - { - gap @Case { - "dft" @Yield { - @CurrStyle @Case { - "display" @Yield 0.20f - else @Yield 0.10f - } - } - else @Yield gap - } - } - - def @BelowLineGap - { - belowgap @Case { - "dft" @Yield { - @CurrStyle @Case { - "display" @Yield 0.15f - else @Yield 0.09f - } - } - else @Yield belowgap - } - } - - @HContract @VContract - { |0.5rt @OneCol @NumeratorStyle x - ^//@AboveLineGap @HLine - //@BelowLineGap |0.5rt @OneCol @DenominatorStyle @Strut y - } - } - - def frac - precedence @BinaryOpDividePrec - associativity left - left x - named gap { 0.2f } - right y - { - @HContract @VContract - { 1w @VShift { @SuperScriptStyle { x } /gap } - | fraction &0io - | 0w @VShift { |gap @SubScriptStyle { y } } - } - } - - def half { one frac two } - def third { one frac three } - - - ################################################################### - # # - # Knuth's Group 7 (binary operations) # - # # - # All of Knuth's symbols are available except \star, \diamond # - # and \bullet; a few have been given more mnemonic names. # - # # - ################################################################### - - def bin - precedence @BinaryOpPrec - associativity left - left l - named op { "binop" } - right r - { - l &@CurrBinarySpaceGap op &@CurrBinarySpaceGap r - } - - def "+" - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { plus } r - } - - def "-" - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { minus } r - } - - def "+-" - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { plusminus } r - } - - def "-+" - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { 180d @Rotate plusminus } r - } - - def setminus - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { backslash } r - } - - def cdot - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { dotmath } r - } - - def times - precedence @BinaryOpTimesPrec - associativity left - left l - right r - { - l bin op { multiply } r - } - - def "*" - precedence @BinaryOpTimesPrec - associativity left - left l - right r - { - l bin op { asteriskmath } r - } - - #def diamond { name used above } - - def circ - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { circle } r - } - - #def bullet { name used above } - - def div - precedence @BinaryOpDividePrec - associativity left - left l - right r - { - l bin op { divide } r - } - - def cap - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { intersection } r - } - - def cup - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { union } r - } - - def uplus - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op {@OneRow @HContract { &0.5rt 0.7f @Font plus ^/0.2fo union}} r - } - - def sqcapshape - { - @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { "0 0 moveto 0 ysize lineto xsize ysize lineto" - "xsize 0 lineto 0.04 ft setlinewidth stroke" - } - @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High } - } - PDF @Yield { - { "__mul(__loutf, 0.04) w" - "0 0 m 0 __ysize l __xsize __ysize l __xsize 0 l s" - } - @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High } - } - } - } - - def sqcap - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { sqcapshape } r - } - - def sqcup - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { "180d" @Rotate sqcapshape } r - } - - def triangleleft - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { "90d" @Rotate 0.8f @Font triangle } r - } - - def triangleright - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { "-90d" @Rotate 0.8f @Font triangle } r - } - - def wr - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { vctr {90d @Rotate similar } } r - } - - def bigcirc - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { 1.2f @Font circle} r - } - - def bigtriangleup - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { 1.2f @Font triangle } r - } - - def bigtriangledown - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { 180d @Rotate 1.2f @Font triangle } r - } - - def vee - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { logicalor } r - } - - def wedge - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { logicaland } r - } - - def oplus - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { circleplus } r - } - - def ominus - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { @OneRow @HContract { circle /0io &0.5rt minus } } r - } - - def otimes - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { circlemultiply } r - } - - def oslash - precedence @BinaryOpPrec - associativity left - left l - right r - { - #l bin op { `vctr 60d @Rotate @HContract {circle /0io &0.5rt minus`} } r - l bin op {@OneRow @HContract {circle /0io &0.5rt "-0.1f" @VShift slash}} r - } - - def odot - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { circledot } r - } - - def dagger - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { @Base @Char "dagger" } r - } - - def daggerdbl - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { @Base @Char "daggerdbl" } r - } - - def amalg - precedence @BinaryOpPrec - associativity left - left l - right r - { - l bin op { 180d @Rotate vctr product } r - } - - - ################################################################### - # # - # Group 8 (relations) # - # # - # All Knuth's operators are available, but many have been # - # given different, more mnemonic names. Also included is # - # a not operator for negating the relations. # - # # - ################################################################### - - # "not" done by an option now - # def not right x { @HContract {@OneCol x /0co &0.5rt slash}} - - def rel - precedence @RelationPrec - associativity left - left l - named op { "relop" } - named neg { "no" } - right r - { - - def @Op - { - neg @Case { - { "No" "no" } @Yield op - { "Yes" "yes" } @Yield - { @HContract {@OneCol { & op } /0co &0.5rt slash} } - } - } - - l &@CurrRelSpaceGap @Op &@CurrRelSpaceGap r - } - - def "<" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { less } r - } - - def ">" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { greater } r - } - - def "=" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { equal } r - } - - def "<=" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { lessequal } r - } - - def precsym - { - 0i @HShift 0.45f @Font "-90d" @Rotate {parenrighttp ^| parenlefttp} - } - - def prec - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { precsym } r - } - - def preceq - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { @VContract { precsym /0.1f minus } } r - } - - def "<<" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { less less } r - } - - def subset - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { propersubset } r - } - - def subseteq - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { reflexsubset } r - } - - def sqsubsetshape - { - @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { "xsize 0 moveto 0 0 lineto 0 ysize lineto" - "xsize ysize lineto 0.04 ft setlinewidth stroke" - } - @Graphic { 0.5f @Wide 0.25f @High ^/ 0.25f @High } - /0.1f minus - } - PDF @Yield { - { "__mul(__loutf, 0.04) w __xsize 0 m 0 0 l" - "0 __ysize l __xsize __ysize l s" - } - @Graphic { 0.5f @Wide 0.25f @High ^/ 0.25f @High } - /0.1f minus - } - } - } - - def sqsubseteq - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { sqsubsetshape } r - } - - def in - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { element } r - } - - def vdash - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { vctr {"-90d" @Rotate perpendicular} } r - } - - def smile - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { vctr 90d @Rotate parenleft } r - } - - def frown - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { vctr 90d @Rotate parenright } r - } - - def ">=" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { greaterequal } r - } - - def succsym - { - 0.45f @Font 90d @Rotate { parenrighttp ^| parenlefttp } - } - - def succ - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { succsym } r - } - - def succeq - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { @OneRow non succ /0.1f minus } r - } - - def ">>" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { greater greater } r - } - - def supset - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { propersuperset } r - } - - def supseteq - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { reflexsuperset } r - } - - def sqsupseteqshape - { - @HContract @VContract @BackEnd @Case { - PostScript @Yield { - { "0 0 moveto xsize 0 lineto xsize ysize lineto" - "0 ysize lineto 0.04 ft setlinewidth stroke" - } @Graphic { 0.5f @Wide 0.25f @High ^/ 0.25f @High } - /0.1f minus - } - PDF @Yield { - { "__mul(__loutf, 0.04) w 0 0 m __xsize 0 l" - "__xsize __ysize l 0 __ysize l s" - } @Graphic { 0.5f @Wide 0.25f @High ^/ 0.25f @High } - /0.1f minus - } - } - } - - def sqsupseteq - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { sqsupseteqshape } r - } - - def ni - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { 180d @Rotate element } r - } - - def dashv - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { vctr {90d @Rotate perpendicular} } r - } - - def mid - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { @Base "|" } r - } - - def parallel - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { @Base "||" } r - } - - def "==" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { equivalence } r - } - - def "~" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { similar } r - } - - def "-~" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { @OneRow { similar ^/0.07f /0.07f minus } } r - } - - def asymp - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { l - rel neg { neg } op { 0.7f @Font @OneRow - { 90d @Rotate parenleft ^/0.008f - /0.008f 90d @Rotate parenright } } - r - } - - def "~~" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { approxequal } r - } - - def "=~" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { congruent } r - } - - def bowtie - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { non triangleright non triangleleft } r - } - - def propto - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { proportional } r - } - - def models - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { @Base vctr "|" &0.05fo vctr equal } r - } - - def trieqsym - { - @OneRow @HContract {&0.5rt small triangle^/0.15f equal} - } - - def trieq - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { trieqsym } r - } - - def doteqsym - { - @OneRow @HContract { &0.5rt dotmath^/0.15f equal } - } - - def doteq - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { doteqsym } r - } - - def perp - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { perpendicular } r - } - - def notsub - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { notsubset } r - } - - def notin - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { notelement } r - } - - def "!=" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { notequal } r - } - - def "<->" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowboth } r - } - - def "<--" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowleft } r - } - - def "-->" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowright } r - } - - def up - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowup } r - } - - def down - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowdown } r - } - - def "<=>" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowdblboth } r - } - - def "<==" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowdblleft } r - } - - def "==>" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowdblright } r - } - - def dblup - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowdblup } r - } - - def dbldown - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { arrowdbldown } r - } - - def ":" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { colon } r - } - - def "::" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { @OneCol {colon ` colon} } r - } - - def ":=" - precedence @RelationPrec - associativity left - left l - named neg { "no" } - right r - { - l rel neg { neg } op { colon{ //0.05fo equal } } r - } - - - ################################################################### - # # - # Punctuation symbols (Knuth's Group 13) # - # # - ################################################################### - - def punct - precedence @PunctuationPrec - associativity left - left l - named symbol { "punct" } - right r - { - l &0.0ce symbol &@CurrPunctSpaceGap r - } - - def ";" - precedence @PunctuationPrec - associativity left - left l - right r - { - l punct symbol { semicolon } r - } - - def "," - precedence @PunctuationPrec - associativity left - left l - right r - { - l punct symbol { comma } r - } - - def col - precedence @PunctuationPrec - associativity left - left l - right r - { - l punct symbol { colon } r - } - - - ################################################################### - # # - # Ordinary symbols (to get Roman font) - continued # - # # - ################################################################### - - def "0" { zero } - def "1" { one } - def "2" { two } - def "3" { three } - def "4" { four } - def "5" { five } - def "6" { six } - def "7" { seven } - def "8" { eight } - def "9" { nine } - - - ################################################################### - # # - # The result object # - # # - ################################################################### - - basefont @Font - { Slope xheight2mark nostrut } @Font { initialspace } @Space - { @CurrStyleVar @Yield initialstyle } @SetContext { - { @CrampedVar @Yield initiallycramped } @SetContext { - @Body - } - } - -@End @Math - - -############################################################################### -# # -# In-line equations # -# # -############################################################################### - -macro @M { @HContract @VContract @Math initialstyle { "text" } } diff --git a/include/include/modula b/include/include/modula deleted file mode 100644 index c6a9a2f..0000000 --- a/include/include/modula +++ /dev/null @@ -1,29 +0,0 @@ -############################################################################### -# # -# Lout setup file for Modula-2 program printing # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { modulaf } line # -# # -# This line causes Lout to read the definitions for Modula-2, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { modulaf } - - -############################################################################### -# # -# This package does not offer the ability to change default options. # -# # -############################################################################### diff --git a/include/include/modulaf b/include/include/modulaf deleted file mode 100644 index 66ffa5e..0000000 --- a/include/include/modulaf +++ /dev/null @@ -1,154 +0,0 @@ - -############################################################################### -# # -# Lout @Modula package for formatting Modula-2 programs (Version 1.0) # -# # -# Version 1.0 by Jeffrey H. Kingston, September 1993. # -# # -# This package implements the complete Modula-2 language (in a style which # -# claims only to reflect its author's taste) with the following caveats: # -# # -# * The symbol { must be given as lbrace # -# # -# * The symbol } must be given as rbrace # -# # -# * The symbol # must be given as numbersign # -# # -# * Double quotes are used by Lout to delimit literal strings, so they # -# need to be quoted (Modula-2 allows single quoted strings wherever # -# double quoted strings can go; we recommend these be used) # -# # -# * Literal strings should be enclosed in double quotes # -# # -# * The symbols B, H, C, and E as used in numeric literals will appear # -# in italic font # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" - - "*" "/" "~" "+" "-" "=" "<>" ">" ">=" "<" "<=" "(" - ")" "[" "]" "," ";" "." ":" "..." ".." "|" "^" ":=" "'" "`" - "&" - - lbrace rbrace numbersign - - AND ARRAY BEGIN BY CASE CONST DEFINITION DIV DO ELSE ELSIF - END EXPORT EXIT FOR FROM IF IMPLEMENTATION IMPORT IN LOOP - MOD MODULE NOT OF OR POINTER PROCEDURE QUALIFIED RECORD - REPEAT RETURN SET TO THEN TYPE UNTIL VAR WHILE WITH @Com - -def @Modula - body @Body -@Begin - - def @R right x { Base @Font x } - def @B right x { Bold @Font x } - def @S right x { { Symbol Base } @Font x } - - def "0" { @R "0" } - def "1" { @R "1" } - def "2" { @R "2" } - def "3" { @R "3" } - def "4" { @R "4" } - def "5" { @R "5" } - def "6" { @R "6" } - def "7" { @R "7" } - def "8" { @R "8" } - def "9" { @R "9" } - - def "*" { @S @Char "asteriskmath" } - def "/" { @R @Char "fraction" } - def "~" { @R "~" } - def "+" { @S "+" } - def "-" { @S "-" } - def "=" { @S @Char "equal" } - def "<>" { @S @Char "notequal" } - def ">" { @S @Char "greater" } - def ">=" { @S @Char "greaterequal" } - def "<" { @S @Char "less" } - def "<=" { @S @Char "lessequal" } - def "(" { @R "(" } - def ")" { @R ")" } - def "[" { @R "[" } - def "]" { @R "]" } - def "," { @R "," } - def ";" { @R ";" } - def "." { @R "." } - def ":" { @R ":" } - def ".." { @R ".." &0.1f } - def "..." { @R "..." } - def "|" { @R "|" } - def "^" { @S 0.8f @Font @Char "arrowup" } - def ":=" { :{//0.03fo =} } - def "'" { @R "'" } - def "`" { @R "`" } - def "&" { @R "&" } - - def lbrace { @R "{" } - def rbrace { @R "}" } - def numbersign { @R "#" } - - def AND { @B "and" } - def ARRAY { @B "array" } - def BEGIN { @B "begin" } - def BY { @B "by" } - def CASE { @B "case" } - def CONST { @B "const" } - def DEFINITION { @B "definition" } - def DIV { @B "div" } - def DO { @B "do" } - def ELSE { @B "else" } - def ELSIF { @B "elsif" } - def END { @B "end" } - def EXPORT { @B "export" } - def EXIT { @B "exit" } - def FOR { @B "for" } - def FROM { @B "from" } - def IF { @B "if" } - def IMPLEMENTATION { @B "implementation" } - def IMPORT { @B "import" } - def IN { @B "in" } - def LOOP { @B "loop" } - def MOD { @B "mod" } - def MODULE { @B "module" } - def NOT { @B "not" } - def OF { @B "of" } - def OR { @B "or" } - def POINTER { @B "pointer" } - def PROCEDURE { @B "procedure" } - def QUALIFIED { @B "qualified" } - def RECORD { @B "record" } - def REPEAT { @B "repeat" } - def RETURN { @B "return" } - def SET { @B "set" } - def TO { @B "to" } - def THEN { @B "then" } - def TYPE { @B "type" } - def UNTIL { @B "until" } - def VAR { @B "var" } - def WHILE { @B "while" } - def WITH { @B "with" } - - def @Com right x { @R "{" x @R "}" } - - Slope @Font lines @Break @Body - -@End @Modula diff --git a/include/include/mydefs b/include/include/mydefs deleted file mode 100644 index 247457e..0000000 --- a/include/include/mydefs +++ /dev/null @@ -1,11 +0,0 @@ - -############################################################################### -# # -# mydefs # -# # -# This empty Lout file is a placeholder which is read by the standard setup # -# files when there is no mydefs file in the user's current directory. # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### diff --git a/include/include/np b/include/include/np deleted file mode 100644 index 716b8ad..0000000 --- a/include/include/np +++ /dev/null @@ -1,117 +0,0 @@ -############################################################################### -# # -# Lout setup file for Nonpareil program printing # -# # -# Jeffrey H. Kingston # -# 3 December 2002 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { npf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @NonpareilSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - # style { symbol @OrIfPlain fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # varying mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/npf b/include/include/npf deleted file mode 100644 index f7512ad..0000000 --- a/include/include/npf +++ /dev/null @@ -1,460 +0,0 @@ - -############################################################################### -# # -# Lout @NonpareilSetup package for formatting Nonpareil programs # -# # -# Jeffrey H. Kingston # -# 3 December 2002 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Nonpareil -def @NonpareilSetup - named pipe { } # pipe through this - named numbered { No } # numbered lines? - named blanknumbered { Yes } # blanks numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 4s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD @PDD - @A "$>" - - def @Nonpareil - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lNonpareil" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lNonpareil" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - def @PS # for formatting strings - right x - { - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield style @Case { - fixed @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - } - - - def @PDD # for formatting double dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield ".." - else @Yield style @Case { - fixed @Yield ".." - else @Yield { "1.4f" @Font "+0.04f" @VShift ".." &"0.05f" } - } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @Nonpareil - -@End @NonpareilSetup diff --git a/include/include/pas b/include/include/pas deleted file mode 100644 index 0154ed5..0000000 --- a/include/include/pas +++ /dev/null @@ -1,29 +0,0 @@ -############################################################################### -# # -# Lout setup file for Pascal program printing # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { pasf } line # -# # -# This line causes Lout to read the definitions for Pascal, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { pasf } - - -############################################################################### -# # -# This package does not offer default options that can be changed. # -# # -############################################################################### diff --git a/include/include/pasf b/include/include/pasf deleted file mode 100644 index 34ebd29..0000000 --- a/include/include/pasf +++ /dev/null @@ -1,127 +0,0 @@ - -############################################################################### -# # -# Lout @Pas package for formatting Pascal programs (Version 2.0) # -# # -# Version 1.0 by Jeffrey H. Kingston, June 1991. # -# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. # -# # -# See "Eq - a Lout package for typesetting mathematics" for user # -# information. # -# # -# Reference: Jensen, K. and Wirth, N. Pascal User Manual and Report. # -# Second Edition, Springer-Verlag, 1975. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" - "." "," ":" ";" "'" "`" "+" "-" "*" "/" "(" ")" - "[" "]" "^" ".." "=" "<" ">" "<>" "<=" ">=" ":=" - - and array begin case const div do downto else end - file for forward function goto if in label mod nil not - of or otherwise packed procedure program record repeat - set then to type until var while with @Com - -def @Pas - body @Body -@Begin - - def @R right x { Base @Font x } - def @B right x { Bold @Font x } - def @S right x { { Symbol Base } @Font x } - - def "0" { @R "0" } - def "1" { @R "1" } - def "2" { @R "2" } - def "3" { @R "3" } - def "4" { @R "4" } - def "5" { @R "5" } - def "6" { @R "6" } - def "7" { @R "7" } - def "8" { @R "8" } - def "9" { @R "9" } - def "." { @R "." } - def "," { @R "," } - def ":" { @R ":" } - def ";" { @R ";" } - def "'" { @R "'" } - def "`" { @R "`" } - def "+" { @S "+" } - def "-" { @S "-" } - def "*" { @S @Char "asteriskmath" } - def "/" { @R @Char "fraction" } - def "(" { @R "(" } - def ")" { @R ")" } - def "[" { @R "[" } - def "]" { @R "]" } - def "^" { @S 0.8f @Font @Char "arrowup" } - def ".." { @R ".." &0.1f } - def "=" { @S @Char "equal" } - def "<" { @S @Char "less" } - def ">" { @S @Char "greater" } - def "<>" { @S @Char "notequal" } - def "<=" { @S @Char "lessequal" } - def ">=" { @S @Char "greaterequal" } - def ":=" { :{//0.03fo &0.1f =} } - - def and { @B "and" } - def array { @B "array" } - def begin { @B "begin" } - def case { @B "case" } - def const { @B "const" } - def div { @B "div" } - def do { @B "do" } - def downto { @B "downto" } - def else { @B "else" } - def end { @B "end" } - def file { @B "file" } - def for { @B "for" } - def forward { @B "forward" } - def function { @B "function" } - def goto { @B "goto" } - def if { @B "if" } - def in { @B "in" } - def label { @B "label" } - def mod { @B "mod" } - def nil { @B "nil" } - def not { @B "not" } - def of { @B "of" } - def or { @B "or" } - def otherwise { @B "otherwise" } - def packed { @B "packed" } - def procedure { @B "procedure" } - def program { @B "program" } - def record { @B "record" } - def repeat { @B "repeat" } - def set { @B "set" } - def then { @B "then" } - def to { @B "to" } - def type { @B "type" } - def until { @B "until" } - def var { @B "var" } - def while { @B "while" } - def with { @B "with" } - - def @Com right x { @R "{" x @R "}" } - - Slope @Font lines @Break @Body - -@End @Pas diff --git a/include/include/perl b/include/include/perl deleted file mode 100644 index 7544e3f..0000000 --- a/include/include/perl +++ /dev/null @@ -1,136 +0,0 @@ -############################################################################### -# # -# Lout setup file for Perl program printing # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 10 April 2000 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude { pod } # -# # -# This line causes Lout to read the default setup file for the Pod # -# documentation language that goes with Perl. If you want your own # -# Pod setup file, it is probably best to delete this line and place # -# # -# @Include { mypod } # -# @Include { myperl } # -# # -# at the start of your document in the usual way. # -# # -############################################################################### - -@SysInclude { pod } - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { perlf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @PerlSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - # style { fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingtabin { 8 } # tab interval - # varyingspace { lout } # spacing mode - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/perlf b/include/include/perlf deleted file mode 100644 index 7e5d414..0000000 --- a/include/include/perlf +++ /dev/null @@ -1,446 +0,0 @@ - -############################################################################### -# # -# Lout @PerlSetup package for formatting Perl programs # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 10 April 2000 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Perl -def @PerlSetup - named pipe { } # pipe through this - named numbered { No } # numbered lines? - named blanknumbered { Yes } # blanks numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD - @A "$>" - - def @Perl - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lPerl" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lPerl" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - def @PS # for formatting strings - right x - { - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @Perl - -@End @PerlSetup diff --git a/include/include/picture b/include/include/picture deleted file mode 100644 index ab889ab..0000000 --- a/include/include/picture +++ /dev/null @@ -1,352 +0,0 @@ -############################################################################### -# # -# Lout setup file for stand-alone illustrations # -# # -# Jeffrey H. Kingston # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude commands for standard packages. # -# # -############################################################################### - - @SysInclude { langdefs } # language definitions - @SysInclude { bsf } # BasicSetup package - @SysInclude { dsf } # DocumentSetup package - @SysInclude { picturef } # IllustrationSetup extension - - -############################################################################### -# # -# @Include command for reading personal definitions from current directory. # -# # -############################################################################### - - @Include { mydefs } - - -############################################################################### -# # -# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @BasicSetup - # @InitialFont { Times Base 12p } # initial font - # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}} - # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent - # @InitialSpace { lout } # initial space style - # @InitialLanguage { English } # initial language - # @InitialColour { black } # initial colour - # @InitialBackgroundColour { white } # initial background colour - # @OptimizePages { No } # optimize page breaks? - # @HeadingFont { Bold } # font for @Heading - # @FixedWidthFont { Courier Base -1p } # font for @F - # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs - # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP - # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays - # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent - # @DefaultIndent { 0.5rt } # @Display indent - # @DisplayNumStyle { (num) } # style of display numbers - # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent - # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent - # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists - # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items - # @ListIndent { 0s } # indent of list items - # @ListRightIndent { 0s } # right indent of list items - # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags - # @ListLabelRight { No } # right-adjust list labels - # @ListLabelRightGap { 2s } # gap when right-adjusting - # @ListFont { } # font of list items - # @ListBreak { } # break style of list items - # @NumberSeparator { . } # separates nums like 2.3.7 - # @CrossLinkFormat { @Body } # format of cross links - # @ExternalLinkFormat { @Body } # format of external links -} - - -############################################################################### -# # -# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @DocumentSetup - # @PageType { A4 @OrIfPlain Other} # page type (width, height) - # @PageWidth { 80s } # page width if type Other - # @PageHeight { 66f } # page height if type Other - # @PageOrientation { Portrait } # Portrait, Landscape, etc. - # @PageBackground { } # background of each page - # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages - # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages - # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages - # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages - # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages - # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages - # @OddLeftBodyMargin { 0c } # extra margin for page body - # @OddRightBodyMargin { 0c } # extra margin for page body - # @EvenLeftBodyMargin { 0c } # extra margin for page body - # @EvenRightBodyMargin{ 0c } # extra margin for page body - # @PageBoxType { None } # None Box CurveBox ShadowBox - # @PageBoxMargin { 1.00c } # page box margin - # @PageBoxLineWidth { } # page box line thickness - # @PageBoxPaint { none } # page box paint - # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox - # @PageEnclose { @Body } # enclose every page in this - # @ColumnNumber { 1 } # number of columns (1 to 10) - # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap - - # @FigureLocation { PageTop } # default figure location - # @FigureFormat { @CC @Body } # default figure format - # @FigureWord { figure } # "Figure" word else anything - # @FigureNumbers { Arabic } # method of numbering figures - # @FigureCaptionPos { Below } # Above or Below - # @FigureCaptionFont { -2p } # figure caption font - # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break - # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFigureContents { No } # list of figures at start - - # @TableLocation { PageTop } # default table location - # @TableFormat { @CC @Body } # default table format - # @TableWord { table } # "Table" word else anything - # @TableNumbers { Arabic } # method of numbering tables - # @TableCaptionPos { Below } # Above or Below - # @TableCaptionFont { -2p } # table caption font - # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break - # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeTableContents { No } # list of tables at start - - # @FloaterLocation { PageTop } # default floater location - # @FloaterFormat { @CC @Body } # default floater format - # @FloaterWord { floater } # "Floater" word else anything - # @FloaterNumbers { Arabic } # method of numbering floaters - # @FloaterCaptionPos { Below } # Above or Below - # @FloaterCaptionFont { -2p } # floater caption font - # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break - # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFloaterContents{ No } # list of floaters at start - - # @MakeContents { No } # make contents? Yes or No - # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry - # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry - # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry - # @ContentsFont { Bold } # font for major entry - # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry - # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry - # @ContentsFormat { number @DotSep title } # contents entry format - # @ContentsLeader { .. } # leader symbol in contents - # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders - # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width - - # @MakeReferences { Yes } # make references? Yes or No - # @RefCiteStyle { [cite] } # citation style - # @RefCiteLabels { @RefNum } # citation items - # @RefNumbers { Arabic } # reference numbers - # @RefListFormat { Labels } # NoLabels, Labels, etc. - # @RefListLabels { [@RefNum] } # ref list label format - # @RefListTitle { references } # title of reference list - # @ChapRefListTitle { references } # title of chapter ref list - # @RefListIndent { 0s } # indent to left of labels - # @RefListRightIndent { 0s } # indent to right of items - # @RefListGap { @ListGap } # gap between ref list items - # @RefListFont { } # font used in reference list - # @RefListBreak { } # break style of ref list - # @RefListLabelWidth { @ListLabelWidth } # Labels column width - # @RefListSortKey { @Tag } # sorting key - - # @MakeGlossary { No } # make glossary? Yes or No - # @GlossaryText { @Null } # glossary initial text - # @GlossaryFont { } # glossary entries font - # @GlossaryBreak { } # glossary entries break - # @GlossaryFormat { +3p @Font @S @Name # glossary entries format - # @Right @I { @Word&&page @PageNum } - # @DP @RawIndentedDisplay @Body } - # @GlossaryGap { @DisplayGap } # gap between glossary entries - # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) - # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap - # @InGlossaryFont { smallcaps } # font for @InGlossary - # @InGlossaryFormat { @Body } # format for @InGlossary - - # @MakeIndex { No } # make index? Yes or No - # @IndexText { @Null } # index initial text - # @IndexFont { } # index entries font - # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexFormat { @Body } # @Index format - # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format - # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format - # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexTypeMain { @B @PageNum } # Main pagenum format - # @IndexTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexRangeFormat { @From--@To } # index page range format - # @IndexColumnNumber { 2 } # index columns (1 to 10) - # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap - # @IndexCtd { Yes } # include (ctd.) lines - # @IndexCtdWord { continued } # "ctd." in current lang. - # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexSpacerAbove { 2v } # space above index spacer - # @IndexSpacerBelow { 1v } # space below index spacer - # @IndexSpacerFont { +3p } # font of index spacer - # @IndexSpacerFormat { @Body } # format of index spacer - - # @MakeIndexA { No } # make index A? Yes or No - # @IndexAText { @Null } # index A initial text - # @IndexAFont { } # index A entries font - # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexAFormat { @Body } # @IndexA format - # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format - # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format - # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexATypeMain { @B @PageNum } # Main pagenum format - # @IndexATypeSpecial { @I @PageNum } # Special pagenum format - # @IndexARangeFormat { @From--@To } # index page range format - # @IndexAColumnNumber { 2 } # index A columns (1 to 10) - # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap - # @IndexACtd { Yes } # include (ctd.) lines - # @IndexACtdWord { continued } # "ctd." in current lang. - # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexASpacerAbove { 2v } # space above index A spacer - # @IndexASpacerBelow { 1v } # space below index A spacer - # @IndexASpacerFont { +3p } # font of index A spacer - # @IndexASpacerFormat { @Body } # format of index A spacer - - # @MakeIndexB { No } # make index B? Yes or No - # @IndexBText { @Null } # index B initial text - # @IndexBFont { } # index B entries font - # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexBFormat { @Body } # @IndexB format - # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format - # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format - # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexBTypeMain { @B @PageNum } # Main pagenum format - # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexBRangeFormat { @From--@To } # index page range format - # @IndexBColumnNumber { 2 } # index B columns (1 to 10) - # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap - # @IndexBCtd { Yes } # include (ctd.) lines - # @IndexBCtdWord { continued } # "ctd." in current lang. - # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexBSpacerAbove { 2v } # space above index B spacer - # @IndexBSpacerBelow { 1v } # space below index B spacer - # @IndexBSpacerFont { +3p } # font of index B spacer - # @IndexBSpacerFormat { @Body } # format of index B spacer - - # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures - # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text - - # @FootNoteNumbers { Arabic } # footnote numbers - # @FootNoteThrough { No } # numbered through chapter? - # @FootNoteLocation { ColFoot } # where the footnote appears - # @FootNoteFont { 0.80f } # font for footnotes - # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes - # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format - # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line - # @FootAboveGap { @DisplayGap } # gap above footnote line - # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes - # @MarginNoteFont { 0.80f } # font of margin notes - # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes - # @MarginNoteHGap { 0.5c } # horizontal gap to notes - # @MarginNoteVGap { @DisplayGap } # min vertical gap between - # @MarginNoteWidth { 1.50c } # width of margin notes - # @EndNoteNumbers { Arabic } # endnote numbers - # @EndNoteFont { 0.80f } # font of endnotes - # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes - # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format - # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes - - # @TheoremWord { theorem } # "Theorem" word, etc. - # @TheoremTitleFormat { (title) } # only if title present - # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @DefinitionWord { definition } # "Definition" word, etc. - # @DefinitionTitleFormat { (title) } # only if title present - # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ClaimWord { claim } # "Claim" word, etc. - # @ClaimTitleFormat { (title) } # only if title present - # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @PropositionWord { proposition } # "Proposition" word, etc. - # @PropositionTitleFormat { (title) } # only if title present - # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @LemmaWord { lemma } # "Lemma" word, etc. - # @LemmaTitleFormat { (title) } # only if title present - # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @CorollaryWord { corollary } # "Corollary" word, etc. - # @CorollaryTitleFormat { (title) } # only if title present - # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ExampleWord { example } # "Example" word, etc. - # @ExampleTitleFormat { (title) } # only if title present - # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ProofWord { proof } # "Proof" word, etc. - - # @PageHeaders { Simple } # None Simple Titles NoTitles - # @PageNumbers { Arabic } # page numbers - # @FirstPageNumber { 1 } # number of first page - # @IntroPageNumbers { Roman } # intro page numbers - # @IntroFirstPageNumber{ 1 } # number of first intro page - # @StructPageNums { No } # make structured page numbers - # @PageNumberFormat { number } # format of all page numbers - - # @OddTop { @Centre{- @PageNum -} } # Simple page headers - # @OddFoot { @Null } - # @EvenTop { @Centre{- @PageNum -} } - # @EvenFoot { @Null } - # @StartOddTop { @Null } - # @StartOddFoot { @Null } - # @StartEvenTop { @Null } - # @StartEvenFoot { @Null } - # @IntroOddTop { @Null } - # @IntroOddFoot { @Centre @PageNum } - # @IntroEvenTop { @Null } - # @IntroEvenFoot { @Centre @PageNum } - # @IntroStartOddTop { @Null } - # @IntroStartOddFoot { @Null } - # @IntroStartEvenTop { @Null } - # @IntroStartEvenFoot { @Null } - - # Titles, NoTitles headers - # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum } - # @RunningOddFoot { @Null } - # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} } - # @RunningEvenFoot { @Null } - # @RunningStartOddTop { @Null } - # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum } - # @RunningStartEvenTop { @Null } - # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum } - # @RunningIntroOddTop { @Null } - # @RunningIntroOddFoot { @Right @PageNum } - # @RunningIntroEvenTop { @Null } - # @RunningIntroEvenFoot { @PageNum } - # @RunningIntroStartOddTop { @Null } - # @RunningIntroStartOddFoot { @Null } - # @RunningIntroStartEvenTop { @Null } - # @RunningIntroStartEvenFoot { @Null } -} - - -############################################################################### -# # -# The @IllustrationSetup @Use clause - there are no options for this. # -# # -############################################################################### - -@Use { @IllustrationSetup -} - - -############################################################################### -# # -# @Database (and @SysDatabase) clauses go here. # -# # -############################################################################### - -@SysDatabase @FontDef { fontdefs } # font definitions -@SysDatabase @RefStyle { refstyle } # reference printing styles diff --git a/include/include/picturef b/include/include/picturef deleted file mode 100644 index 8f8fc26..0000000 --- a/include/include/picturef +++ /dev/null @@ -1,55 +0,0 @@ - -########################################################################### -# # -# @IllustrationSetup extension to @DocumentSetup. # -# # -# Jeffrey H. Kingston # -# # -# This package extends DocumentSetup for illustrations. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -########################################################################### - -extend @BasicSetup @DocumentSetup -export @Illustration -def @IllustrationSetup -@Begin - - ####################################################################### - # # - # @Illustration # - # # - ####################################################################### - - def @Illustration - named @InitialFont { @InitialFont } - named @InitialBreak { @InitialBreak } - named @InitialOutdent { @InitialOutdent } - named @InitialSpace { @InitialSpace } - named @InitialLanguage { @InitialLanguage } - named @InitialColour { @InitialColour } - right x - { - @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break - @InitialLanguage @Language @InitialSpace @Space - { @ColourCommand @InitialColour } @SetColour - @OneCol @OneRow x - } - -@End @IllustrationSetup diff --git a/include/include/pie b/include/include/pie deleted file mode 100644 index a688feb..0000000 --- a/include/include/pie +++ /dev/null @@ -1,111 +0,0 @@ -############################################################################### -# # -# Lout setup file for pie charts # -# # -# Jeffrey H. Kingston # -# 16 October 2002 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { pief } line # -# # -# This line causes Lout to read the definitions for pie charts, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { pief } - - -############################################################################### -# # -# The @PieSetup @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @PieSetup - - ############################################################################# - # # - # General options # - # # - ############################################################################# - - # save { no } - # totalweight { 100 } - # radius { 2.5c } - # initialangle { 0d } - # leftextra { 0i } - # rightextra { 0i } - # aboveextra { 0i } - # belowextra { 0i } - - ############################################################################# - # # - # Caption options # - # # - ############################################################################# - - # leftcaption { } - # rightcaption { } - # abovecaption { } - # belowcaption { } - # leftgap { 0.5c } - # rightgap { 0.5c } - # abovegap { 0.5c } - # belowgap { 0.5c } - # hidecaptions { yes } - - ############################################################################# - # # - # Slice options # - # # - ############################################################################# - - # weight { 1 } - # paint { none } - # texture { solid } - # outlinestyle { solid } - # outlinedashlength { 0.2f } - # outlinewidth { thin } - # detach { no } - - ############################################################################# - # # - # Label options # - # # - ############################################################################# - - # label { } - # labelfont { -2p } - # labelbreak { clines } - # labelmargin { 0.2f } - # labelformat { @Body } - # labelradius { internal } - # labeladjust { 0 0 } - - ############################################################################# - # # - # finger options # - # # - ############################################################################# - - # finger { no } - # fingerstyle { solid } - # fingerdashlength { 0.2f } - # fingerwidth { thin } - # fingerradius { 0.7 } - # fingeradjust { 0 0 } - # fingerarrow { no } - # fingerarrowlength { 0.6f } - # fingerarrowwidth { 0.45f } - -} diff --git a/include/include/pief b/include/include/pief deleted file mode 100644 index 2bb0001..0000000 --- a/include/include/pief +++ /dev/null @@ -1,426 +0,0 @@ - -############################################################################### -# # -# Lout @Pie package for drawing pie charts # -# Version 1.0 (October 2002) # -# Jeffrey H. Kingston # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -@SysPrependGraphic { pief.lpg } -@SysInclude { lengths } # @PSLengths and @LoutLengths -@SysInclude { coltex } # @ColourCommand and @TextureCommand - - -############################################################################### -# # -# @PieSetup symbol # -# # -############################################################################### - -export @Pie -def @PieSetup - named save { no } - named totalweight { 100 } - named radius { 2.5c } - import @PSLengths named initialangle{ 0d } - named leftextra { 0i } - named rightextra { 0i } - named aboveextra { 0i } - named belowextra { 0i } - named leftcaption { } - named rightcaption { } - named abovecaption { } - named belowcaption { } - named leftgap { 0.5c } - named rightgap { 0.5c } - named abovegap { 0.5c } - named belowgap { 0.5c } - named hidecaptions { yes } - named weight { 1 } - named paint { none } - import @TextureImport named texture { solid } - named outlinestyle - named solid { "/lpiesolid" } - named dashed { "/lpiedashed" } - named cdashed { "/lpiecdashed" } - named dotted { "/lpiedotted" } - named noline { "/lpienoline" } - { solid } - import @PSLengths named outlinedashlength { 0.2f } - import @PSLengths named outlinewidth - named thin { 0.04f } - named medium { 0.08f } - named thick { 0.12f } - { thin } - named detach - named yes Yes { 0.5 } - named no No { 0.0 } - { no } - named label { } - named labelfont { -2p } - named labelbreak { clines } - named labelmargin { 0.2f } - named labelformat right @Body { @Body } - named labelradius - named internal { 0.6 } - named external { 1.4 } - { internal } - import @PSLengths named labeladjust { 0 0 } - named finger { no } - named fingerstyle - named solid { "/lpiesolid" } - named dashed { "/lpiedashed" } - named cdashed { "/lpiecdashed" } - named dotted { "/lpiedotted" } - named noline { "/lpienoline" } - { solid } - import @PSLengths named fingerdashlength { 0.2f } - import @PSLengths named fingerwidth - named thin { 0.04f } - named medium { 0.08f } - named thick { 0.12f } - { thin } - named fingerradius { 0.7 } - import @PSLengths named fingeradjust{ 0 0 } - named fingerarrow { no } - import @PSLengths named fingerarrowlength { 0.6f } - import @PSLengths named fingerarrowwidth { 0.45f } -{ - - ########################################################################### - # # - # @Pie symbol # - # # - ########################################################################### - - export @Slice - def @Pie - named save { save } - named totalweight { totalweight } - named radius { radius } - import @PSLengths named initialangle { initialangle } - named leftextra { leftextra } - named rightextra { rightextra } - named aboveextra { aboveextra } - named belowextra { belowextra } - named leftcaption { leftcaption } - named rightcaption { rightcaption } - named abovecaption { abovecaption } - named belowcaption { belowcaption } - named leftgap { leftgap } - named rightgap { rightgap } - named abovegap { abovegap } - named belowgap { belowgap } - named hidecaptions { hidecaptions } - named weight { weight } - named paint { paint } - import @TextureImport named texture { texture } - named outlinestyle - named solid { "/lpiesolid" } - named dashed { "/lpiedashed" } - named cdashed { "/lpiecdashed" } - named dotted { "/lpiedotted" } - named noline { "/lpienoline" } - { outlinestyle } - import @PSLengths named outlinedashlength{ outlinedashlength } - import @PSLengths named outlinewidth - named thin { 0.04f } - named medium { 0.08f } - named thick { 0.12f } - { outlinewidth } - named detach - named yes Yes { 0.5 } - named no No { 0.0 } - { detach } - named label { label } - named labelfont { labelfont } - named labelbreak { labelbreak } - named labelmargin { labelmargin } - named labelformat right @Body { labelformat @Body } - named labelradius - named internal { 0.6 } - named external { 1.4 } - { labelradius } - import @PSLengths named labeladjust { labeladjust } - named finger { finger } - named fingerstyle - named solid { "/lpiesolid" } - named dashed { "/lpiedashed" } - named cdashed { "/lpiecdashed" } - named dotted { "/lpiedotted" } - named noline { "/lpienoline" } - { fingerstyle } - import @PSLengths named fingerdashlength{ fingerdashlength } - import @PSLengths named fingerwidth - named thin { 0.04f } - named medium { 0.08f } - named thick { 0.12f } - { fingerwidth } - named fingerradius { fingerradius } - import @PSLengths named fingeradjust { fingeradjust } - named fingerarrow { fingerarrow } - import @PSLengths named fingerarrowlength { fingerarrowlength } - import @PSLengths named fingerarrowwidth { fingerarrowwidth } - - body @Body - { - - - ####################################################################### - # # - # Miscellaneous helper definitions # - # # - ####################################################################### - - def @AddPaint left col right texture - { - col @Case { - { "no" "none" "nopaint" } @Yield "{}" - else @Yield { "{" @ColourCommand col texture "fill }" } - } - } - - # Like @Graphic, but affects the graphics state of right parameter - def @InnerGraphic - left ps - right x - { - { ps gsave // grestore } @Graphic x - } - - def @ZeroWidth right x - { - @HContract @VContract { - ^|0io @HContract @VContract x |0io - } - } - - def @ZeroSize right x - { - @HContract @VContract { - ^/0io ^|0io @HContract @VContract x |0io /0io - } - } - - - ####################################################################### - # # - # @Slice # - # # - ####################################################################### - - def @Slice - named weight { weight } - named paint { paint } - import @TextureImport named texture { texture } - named outlinestyle - named solid { "/lpiesolid" } - named dashed { "/lpiedashed" } - named cdashed { "/lpiecdashed" } - named dotted { "/lpiedotted" } - named noline { "/lpienoline" } - { outlinestyle } - import @PSLengths named outlinedashlength { outlinedashlength } - import @PSLengths named outlinewidth - named thin { 0.04f } - named medium { 0.08f } - named thick { 0.12f } - { outlinewidth } - named detach - named yes Yes { 0.5 } - named no No { 0.0 } - { detach } - named label { label } - named labelfont { labelfont } - named labelbreak { labelbreak } - named labelmargin { labelmargin } - named labelformat right @Body { labelformat @Body } - named labelradius - named internal { 0.6 } - named external { 1.4 } - { labelradius } - import @PSLengths named labeladjust { labeladjust } - named finger { finger } - named fingerstyle - named solid { "/lpiesolid" } - named dashed { "/lpiedashed" } - named cdashed { "/lpiecdashed" } - named dotted { "/lpiedotted" } - named noline { "/lpienoline" } - { fingerstyle } - import @PSLengths named fingerdashlength { fingerdashlength } - import @PSLengths named fingerwidth - named thin { 0.04 ft } - named medium { 0.08 ft } - named thick { 0.12 ft } - { fingerwidth } - named fingerradius { fingerradius } - import @PSLengths named fingeradjust{ fingeradjust } - named fingerarrow { fingerarrow } - import @PSLengths named fingerarrowlength { fingerarrowlength } - import @PSLengths named fingerarrowwidth { fingerarrowwidth } - { - - def @DrawSlice - { - outlinedashlength "[" outlinestyle "]" - outlinewidth paint @AddPaint texture - weight detach - "lpiebeginslice" - // - "lpieendslice" - } - - def @TranslateLabelAndDrawFinger - { labeladjust labelradius "lpietranslatelabel" - finger @Case { - { no No } @Yield "" - { yes Yes } @Yield { - fingerdashlength "[" fingerstyle "]" - fingerwidth fingeradjust fingerradius - "lpiedrawfinger" - fingerarrow @Case { - { no No } @Yield "" - { yes Yes } @Yield { - fingerarrowlength fingerarrowwidth - "lpiedrawarrowhead" - } - } - } - } - } - - def @AddMargins right x - { - @HContract @VContract { - //labelmargin ||labelmargin x ||labelmargin //labelmargin - } - } - - @Null @ZeroSize @DrawSlice @Graphic - @TranslateLabelAndDrawFinger @InnerGraphic { - @AddMargins labelfont @Font labelbreak @Break labelformat label - } @Null - - } - - def @Above - { - abovecaption @Case { - "" @Yield "" - else @Yield @OneCol { - ||0.5rt clines @Break abovecaption || //abovegap - } - } - } - - def @Below - { - belowcaption @Case { - "" @Yield "" - else @Yield @OneCol { - //belowgap ||0.5rt clines @Break belowcaption || - } - } - } - - def @Left - { - leftcaption @Case { - "" @Yield "" - else @Yield @OneRow { - { //0.5rt clines @Break leftcaption // } ^||leftgap - } - } - } - - def @Right - { - rightcaption @Case { - "" @Yield "" - else @Yield @OneRow { - ||rightgap { //0.5rt lines @Break rightcaption // } - } - } - } - - def @HideWidth right x - { - hidecaptions @Case { - { No no } @Yield x - { Yes yes } @Yield @OneCol { ||0io x ||0io } - } - } - - def @AddCaptions right x - { - - @HContract @VContract - { - | @Above | - / @HideWidth @Left | &0.5rt x | @HideWidth @Right - / | @Below | - } - } - - def @AddExtra right x - { - @HContract @VContract - { - /aboveextra |leftextra x |rightextra /belowextra - } - } - - def @GraphicSetup right x - { - { - save @Case { - { yes Yes } @Yield { - "grestore save gsave" totalweight initialangle "lpiebegin" - // - "lpieend restore" - } - { no No } @Yield { - totalweight initialangle "lpiebegin" - // - "lpieend" - } - } - } @Graphic x - } - - def @Base right x - { - def @Square { radius @Wide radius @High {} } - - @HContract @VContract { - @Square ^| @Square - ^/ - @Square | @Square - / - x - } - } - - @AddCaptions @AddExtra @GraphicSetup @Base @Body - - } -} diff --git a/include/include/pief.lpg b/include/include/pief.lpg deleted file mode 100644 index 8350659..0000000 --- a/include/include/pief.lpg +++ /dev/null @@ -1,488 +0,0 @@ -%%BeginResource: procset LoutPiePrependGraphic -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% PostScript @SysPrependGraphic file for @Pie Jeffrey H. Kingston % -% Version 1.0 % -% % -% Jeffrey H. Kingston % -% October 2002 % -% % -% This file has been placed in the public domain by its author, % -% Jeffrey H. Kingston % -% % -% To assist in avoiding name clashes, the names of all symbols % -% defined here begin with "lpie". % -% % -% <point> is two numbers, a point. % -% <length> is one number, a length % -% <angle> is one number, an angle in degrees % -% <dashlength> is one number, the preferred length of a dash % -% % -% The following invariant is maintained from the end of the % -% call to lpiebegin to the beginning of the call to lpieend: % -% % -% lpiecentre is an executable function which leaves the two % -% coordinates of the centre of the pie on the % -% operand stack (signature - lpiectr <x> <y>) % -% % -% lpieradius is the radius of the pie % -% % -% lpieinitangle is the initial angle % -% % -% lpietotalweight is the total weight of all slices % -% % -% lpiecurrentweight is the total weight of all slices so far % -% % -% The first four are constants set by lpiebegin; the last is % -% updated as each slice is printed. % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% install error handler into error dictionary -errordict begin - /handleerror - { - { /Times-Roman findfont 8 pt scalefont setfont - 0 setgray 4 pt 4 pt moveto - $error /errorname get - dup lpiedict exch known - { lpiedict exch get } - { 100 string cvs } ifelse - show - ( Command: ) show - $error /command get 100 string cvs show - } stopped {} if - showpage stop - } def -end - -% initial coordinates of debug output -/lpiedebugposy 432 def -/lpiedebugposx 72 def - -% <string> <int> lpiedebugprint - -% must be defined outside lpiedict since used in arbitrary places -% print <string> plus count or <int> stack entries, whichever is the smaller -/lpiedebugprint -{ - exch - gsave - initgraphics - lpiedebugposy 72 lt - { /lpiedebugposx lpiedebugposx 144 add store - /lpiedebugposy 432 store - } - { - /lpiedebugposy lpiedebugposy 12 sub store - } ifelse - lpiedebugposx lpiedebugposy moveto - /Times-Roman findfont 10 scalefont setfont - 0 setgray show - count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub - 0 exch 1 exch - { - /lpiedebugposy lpiedebugposy 12 sub store - lpiedebugposx 12 add lpiedebugposy moveto - index - dup type (dicttype) eq - { - (begin dict) show - { - /lpiedebugposy lpiedebugposy 12 sub store - lpiedebugposx 24 add lpiedebugposy moveto - pop 100 string cvs show - } forall - /lpiedebugposy lpiedebugposy 12 sub store - lpiedebugposx 12 add lpiedebugposy moveto - (end dict) show - } - { - dup type (arraytype) eq - { - dup xcheck { (executable array) } { (literal array) } ifelse show - { - /lpiedebugposy lpiedebugposy 12 sub store - lpiedebugposx 24 add lpiedebugposy moveto - 100 string cvs show - } forall - /lpiedebugposy lpiedebugposy 12 sub store - lpiedebugposx 12 add lpiedebugposy moveto - (end array) show - } - { - dup xcheck { (ex: ) } { (lit: ) } ifelse show - 100 string cvs show - } ifelse - } ifelse - } for - grestore -} def - -% name lpiedebugpoint - -/lpieshowpoint -{ - dup cvx exec moveto 20 string cvs show newpath -} def - -% begin pie: <totalweight> <initialangle> lpiebegin - -% must be defined outside lpiedict since it loads it -/lpiebegin -{ lpiedict begin - 20 dict begin - xmark ymark /lpiecentre lpiepointdef - /lpieradius xmark def - /lpieinitialangle exch def - /lpietotalweight exch def - /lpiecurrentweight 0 def -} def - -% end pie: - lpieend - -/lpieend -{ - end - end -} def - -% pie dictionary -/lpiedict 200 dict def - -% subsequent definitions are held within the pie dictionary -lpiedict begin - -% error messages -/syntaxerror (syntaxerror error: syntax error in text of pie chart?) def -/typecheck (typecheck error: syntax error in text of pie chart?) def -/undefined (undefined error: unknown or misspelt label?) def -/VMError (VMError error: run out of memory?) def - -% maximum of two numbers: <num> <num> lpiemax <num> -/lpiemax { 2 copy gt { pop } { exch pop } ifelse } def - -% minimum of two numbers: <num> <num> lpiemin <num> -/lpiemin { 2 copy lt { pop } { exch pop } ifelse } def - -% add two points: <point> <point> lpiepadd <point> -/lpiepadd -{ - % (Entering padd) 4 lpiedebugprint - exch 3 1 roll add 3 1 roll add exch - % (Leaving padd) 2 lpiedebugprint -} def - -% subtract first point from second: <point> <point> lpiepsub <point> -/lpiepsub { 3 2 roll sub 3 1 roll exch sub exch } def - -% max two points: <point> <point> lpiepmax <point> -/lpiepmax { exch 3 1 roll lpiemax 3 1 roll lpiemax exch } def - -% min two points: <point> <point> lpiepmin <point> -/lpiepmin { exch 3 1 roll lpiemin 3 1 roll lpiemin exch } def - -% scalar multiplication: <point> <num> lpiepmul <point> -/lpiepmul { dup 3 1 roll mul 3 1 roll mul exch } def - -% distance between two points: <point> <point> lpiedistance <length> -/lpiedistance { lpiepsub dup mul exch dup mul add sqrt } def - -% point at angle and distance -% <point> <length> <angle> lpieatangle <point> -/lpieatangle { 2 copy cos mul 3 1 roll sin mul lpiepadd } def - -% stroke a solid line: <length> <dashlength> lpiesolid - -/lpiesolid -{ % (Entering lpiesolid) 2 lpiedebugprint - gsave pop pop [] 0 setdash 1 setlinecap stroke grestore newpath - % (Leaving lpiesolid) 0 lpiedebugprint -} def - -% stroke a dashed line: <length> <dashlength> lpiedashed - -/lpiedashed -{ gsave - 2 copy div 2 le 1 index 0 le or - { exch pop 1 pt lpiemax [ exch dup ] 0 setdash } - { dup [ exch 4 2 roll 2 copy div - 1 sub 2 div ceiling dup 4 1 roll - 1 add mul sub exch div ] 0 setdash - } ifelse 0 setlinecap stroke - grestore newpath -} def - -% stroke a cdashed line: <length> <dashlength> lpiecdashed - -/lpiecdashed -{ % (Entering lpiecdashed) 2 lpiedebugprint - gsave - 2 copy le 1 index 0 le or - { exch pop 1 pt lpiemax [ exch dup ] dup 0 get 2 div setdash } - { dup [ 4 2 roll exch 2 copy exch div - 2 div ceiling div 1 index sub - ] exch 2 div setdash - } ifelse 0 setlinecap stroke - grestore newpath - % (Leaving lpiecdashed) 0 lpiedebugprint -} def - -% stroke a dotted line: <length> <dashlength> lpiedotted - -/lpiedotted -{ gsave - 2 copy le 1 index 0 le or - { exch pop 1 pt lpiemax [ exch 0 exch ] 0 setdash } - { 1 index exch div ceiling div - [ 0 3 2 roll ] 0 setdash - } ifelse 1 setlinecap stroke - grestore newpath -} def - -% stroke a noline line: <length> <dashlength> lpienoline - -/lpienoline -{ pop pop -} def - -% label a point in current dictionary: <point> /name lpiepointdef - -/lpiepointdef -{ - % (Entering lpiepointdef) 3 lpiedebugprint - [ 4 2 roll transform /itransform cvx ] cvx def - % (Leaving lpiepointdef) 0 lpiedebugprint -} def - -% find the angle that the current slice starts at -% - lpiesliceangle1 <angle> -/lpiesliceangle1 -{ lpiecurrentweight lpietotalweight div 360 mul lpieinitialangle add -} def - -% find the angle that the current slice stops at -% - lpiesliceangle2 <angle> -/lpiesliceangle2 -{ weight lpiecurrentweight add lpietotalweight div 360 mul lpieinitialangle add -} def - -% find the angle that bisects the current slice -% - lpieslicemidangle <angle> -/lpieslicemidangle -{ weight 2 div lpiecurrentweight add lpietotalweight div 360 mul lpieinitialangle add -} def - -% update the total weight -% - lpieupdateweight - -/lpieupdateweight -{ weight lpiecurrentweight add /lpiecurrentweight exch def -} def - -% find the apex of the slice -% - lpiesliceapex <x> <y> -/lpiesliceapex -{ lpiecentre lpieradius detach mul lpieslicemidangle lpieatangle -} def - -% find the end of the first arm of the slice -% - lpieslicearm1 <x> <y> -/lpieslicearm1 -{ lpiesliceapex lpieradius lpiesliceangle1 lpieatangle -} def - -% find the end of the second arm of the slice -% - lpieslicearm2 <x> <y> -/lpieslicearm2 -{ lpiesliceapex lpieradius lpiesliceangle2 lpieatangle -} def - -% set the whole closed path for the current slice -% - lpiesetslicepath - -/lpiesetslicepath -{ newpath lpiesliceapex moveto - currentpoint lpieradius lpiesliceangle1 lpiesliceangle2 arc - closepath -} def - -% set the first segment of the current slice and return its length -% - lpiesetsegment1 <length> -/lpiesetsegment1 -{ newpath lpiesliceapex moveto lpieslicearm1 lineto - lpieradius -} def - -% set the second segment of the current slice and return its length -% - lpiesetsegment2 <length> -/lpiesetsegment2 -{ newpath lpiesliceapex moveto lpieslicearm2 lineto - lpieradius -} def - -% set the arc segment of the current slice and return its length -% - lpiesetarcsegment <length> -/lpiesetarcsegment -{ newpath - lpiesliceapex lpieradius lpiesliceangle1 lpiesliceangle2 arc - lpiesliceangle2 lpiesliceangle1 sub 180 div 3.14159 mul lpieradius mul -} def - -% draw one slice -% <dashlength> [ <outlinecommand> ] <outlinewidth> { <paintcommand> } -% <weight> <detach> lpiedrawslice - -/lpiebeginslice -{ - % (Entering lpiebeginslice) 6 lpiedebugprint - /detach exch def - /weight exch def - - % paint the slice - gsave lpiesetslicepath exec grestore - - % set the line width - setlinewidth - - % stroke each segment separately to get dashes right - 2 copy lpiesetsegment1 3 1 roll - dup length 0 exch mod get cvx - % (Stroking segment1) count 1 sub lpiedebugprint - exec - - 2 copy lpiesetarcsegment 3 1 roll - dup length 1 exch mod get cvx - % (Stroking arc segment) count 1 sub lpiedebugprint - exec - - lpiesetsegment2 3 1 roll - dup length 2 exch mod get cvx - % (Stroking segment2) count 1 sub lpiedebugprint - exec - - % (Leaving lpiebeginslice) 0 lpiedebugprint -} def - -% finish off one slice -/lpieendslice -{ - % (Entering lpieendslice) 0 lpiedebugprint - - % update current weight ready for next slice - lpieupdateweight - - % (Leaving lpieendslice) 0 lpiedebugprint -} def - -% translate label -% <xadjust> <yadjust> <labelradius> lpietranslatelabel - -/lpietranslatelabel -{ - % (Entering lpietranslatelabel) 3 lpiedebugprint - /labelradius exch def - % lpiecentre (lpiecentre:) 2 lpiedebugprint pop pop - % lpieradius (lpieradius:) 1 lpiedebugprint pop - % labelradius (labelradius:) 1 lpiedebugprint pop - % lpieslicemidangle (lpieslicemidangle:) 1 lpiedebugprint pop - xsize 2 div ysize 2 div /labelcentre lpiepointdef - labelcentre - lpiesliceapex lpieradius labelradius mul lpieslicemidangle lpieatangle lpiepsub - lpiepadd - translate - % (Leaving lpietranslatelabel) 0 lpiedebugprint -} def - -% fix an angle to 0 <= res < 360: <angle> lpiefixangle <angle> -/lpiefixangle -{ - % (Entering lpiefixangle) 1 lpiedebugprint - { dup 0 ge { exit } if - 360 add - } loop - { dup 360 lt { exit } if - 360 sub - } loop - % (Leaving lpiefixangle) 1 lpiedebugprint -} def - -% angle from one point to another -% <point> <point> lpieangleto <angle> -/lpieangleto { - lpiepsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse -} def - -% find point on circumference of box: alpha a b lpieboxcircum x y -/lpieboxcircum -{ - % (Entering lpieboxcircum) 3 lpiedebugprint - 4 dict begin - /b exch def - /a exch def - lpiefixangle /alpha exch def - 0 0 a b lpieangleto /theta exch def - % a (a:) 1 lpiedebugprint pop - % b (b:) 1 lpiedebugprint pop - % theta (theta:) 1 lpiedebugprint pop - % alpha (alpha:) 1 lpiedebugprint pop - - % if alpha <= theta, return (a, a*tan(alpha)) - alpha theta le - { a a alpha sin mul alpha cos div } - { - % else if alpha <= 180 - theta, return (b*cot(alpha), b) - alpha 180 theta sub le - { b alpha cos mul alpha sin div b } - { - % else if alpha <= 180 + theta, return (-a, -a*tan(alpha)) - alpha 180 theta add le - { a neg a neg alpha sin mul alpha cos div } - { - % else if alpha <= 360 - theta, return (-b*cot(alpha), -b) - alpha 360 theta sub le - { b neg alpha cos mul alpha sin div b neg } - { - % else 360 - theta <= alpha, return (a, a*tan(alpha)) - a a alpha sin mul alpha cos div - } ifelse - } ifelse - } ifelse - } ifelse - end - % (Leaving lpieboxcircum) 2 lpiedebugprint -} def - - -% draw finger (will immediately follow lpietranslatelabel) -% <fingerdashlength> "[" <fingerstyle> "]" fingerwidth -% <fingeradjustx> <fingeradjusty> <fingerradius> lpiedrawfinger - -/lpiedrawfinger -{ - % (Entering lpidrawfinger) 6 lpiedebugprint - % find inner endpoint of finger - /fingerradius exch def - lpiesliceapex lpieradius fingerradius mul - lpieslicemidangle lpieatangle lpiepadd - /fingerinner lpiepointdef - xsize 2 div ysize 2 div /labelcentre lpiepointdef - 0 0 /labelorigin lpiepointdef - - % find outer endpoint of finger, on circumference of label - labelcentre fingerinner lpieangleto - xsize 2 div ysize 2 div - lpieboxcircum labelcentre lpiepadd - /fingerouter lpiepointdef - - % set the line width - setlinewidth - - % draw line - newpath fingerinner moveto fingerouter lineto - fingerinner fingerouter lpiedistance 3 1 roll 0 get cvx exec - % (Leaving lpiedrawfinger) 0 lpiedebugprint -} def - -% draw arrowhead (will immediately follow lpiedrawfinger if reqd) -% <headlength> <headwidth> lpiedrawarrowhead -/lpiedrawarrowhead -{ - gsave - /headwidth exch def - /headlength exch def - fingerinner translate - fingerouter fingerinner lpieangleto rotate - 0 0 moveto - headlength neg headwidth 2 div lineto - 0 headwidth neg rlineto - closepath fill - grestore -} def -end -%%EndResource diff --git a/include/include/pod b/include/include/pod deleted file mode 100644 index 9bfd373..0000000 --- a/include/include/pod +++ /dev/null @@ -1,178 +0,0 @@ -############################################################################### -# # -# Lout setup file for Pod documentation printing # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 5 April 2000 # -# # -# This file has been placed in the public domain by its author. # -# # -# Note: although Pod is treated like a programming language in some # -# respects, the setup file options below are largely unrelated to # -# the setup file options for other languages. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { podf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -# Pod has two quite different kinds of paragraphs: verbatim and non- # -# verbatim. When we say "verbatim" and "text" below we refer to these. # -# There is no paragraph breaking option for verbatim since line breaks # -# are honoured. # -# # -# As you can see below, we have been obliged to give "Times Base" as # -# the default text font for varying style, rather than the usual empty, # -# to get a varying-width font when Pod is embedded in fixed-width Perl. If # -# you are using a different text font family in your document you will have # -# to change this option if you want your varying-width Pod in that family. # -# # -############################################################################### - -@Use { @PodSetup - # pipe { } # pipe source through this - # style { varying @OrIfPlain fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedtextfont { Courier Base -1p } # text font - # fixedtextbreak { adjust 1.0vx hyphen } # text para breaking - # fixedverbatimfont { Courier Base } # verbatim font - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - # fixedlinenumbersfont { } # line numbers font - # fixedlinenumbersformat { @Body } # line numbers format - - # fixedparagap { 1.0v } # gap between paras - # fixedlistgap { 1.0v } # gap within lists - # fixedlistindent { 0s } # list label indent - # fixedlistrightindent { 0s } # list right indent - # fixedlistlabelwidth { 2.0f } # default label space - # fixedlistlabelfont { } # list label font - # fixedlistlabelformat { @Body } # list label format - - # fixedaheadfont { Bold +4p } # =head1 font - # fixedaheadbreak { lines 1.1vx } # =head1 para break - # fixedaheadformat { @DP @Body } # =head1 format - # fixedbheadfont { Bold +2p } # =head2 font - # fixedbheadbreak { lines 1.1vx } # =head2 para break - # fixedbheadformat { @Body } # =head2 format - # fixedcheadfont { Bold } # =head3 font - # fixedcheadbreak { lines 1.1vx } # =head3 para break - # fixedcheadformat { @Body } # =head3 format - - # fixeditalicfont { Slope } # font of I<> - # fixeditalicformat { @Body } # format of I<> - # fixedboldfont { Bold } # font of B<> - # fixedboldformat { @Body } # format of B<> - # fixedcodefont { Base } # font of C<> - # fixedcodeformat { @Body } # format of C<> - # fixedfilefont { Slope } # font of F<> - # fixedfileformat { @Body } # format of F<> - # fixedlinkfont { Slope } # font of L<> - # fixedlinkformat { @Underline @Body } # format of L<> - # fixedindexfont { Slope } # font of X<> - # fixedindexformat { @Body } # format of X<> - - - # the following options apply when style is "varying" - - # varyingtextfont { Times Base } # text font - # varyingtextbreak { adjust 1.0vx hyphen } # text para breaking - # varyingverbatimfont { Courier Base -1p } # verbatim font - # varyingtabin { 8 } # tab interval - # varyingtabout { 8s } # tab width - # varyinglinenumbersfont { } # line numbers font - # varyinglinenumbersformat { @Body } # line numbers format - - # varyingparagap { 1.0v } # gap between paras - # varyinglistgap { 1.0v } # gap within lists - # varyinglistindent { 0s } # list label indent - # varyinglistrightindent { 0s } # list right indent - # varyinglistlabelwidth { 2.0f } # default label space - # varyinglistlabelfont { } # list label font - # varyinglistlabelformat { @Body } # list label format - - # varyingaheadfont { Bold +4p } # =head1 font - # varyingaheadbreak { lines 1.1vx } # =head1 para break - # varyingaheadformat { @DP @Body } # =head1 format - # varyingbheadfont { Bold +2p } # =head2 font - # varyingbheadbreak { lines 1.1vx } # =head2 para break - # varyingbheadformat { @Body } # =head2 format - # varyingcheadfont { Bold } # =head3 font - # varyingcheadbreak { lines 1.1vx } # =head3 para break - # varyingcheadformat { @Body } # =head3 format - - # varyingitalicfont { Slope } # font of I<> - # varyingitalicformat { @Body } # format of I<> - # varyingboldfont { Bold } # font of B<> - # varyingboldformat { @Body } # format of B<> - # varyingcodefont { Courier Base -1p } # font of C<> - # varyingcodeformat { @Body } # format of C<> - # varyingfilefont { Slope } # font of F<> - # varyingfileformat { @Body } # format of F<> - # varyinglinkfont { Slope } # font of L<> - # varyinglinkformat { @Underline @Body } # format of L<> - # varyingindexfont { Slope } # font of X<> - # varyingindexformat { @Body } # format of X<> - - # the following options apply when style is "symbol" - - # symboltextfont { Times Base } # text font - # symboltextbreak { adjust 1.0vx hyphen } # text para breaking - # symbolverbatimfont { Courier Base -1p } # verbatim font - # symboltabin { 8 } # tab interval - # symboltabout { 8s } # tab width - # symbollinenumbersfont { } # line numbers font - # symbollinenumbersformat { @Body } # line numbers format - - # symbolparagap { 1.0v } # gap between paras - # symbollistgap { 1.0v } # gap within lists - # symbollistindent { 0s } # list label indent - # symbollistrightindent { 0s } # list right indent - # symbollistlabelwidth { 2.0f } # default label space - # symbollistlabelfont { } # list label font - # symbollistlabelformat { @Body } # list label format - - # symbolaheadfont { Bold +4p } # =head1 font - # symbolaheadbreak { lines 1.1vx } # =head1 para break - # symbolaheadformat { @DP @Body } # =head1 format - # symbolbheadfont { Bold +2p } # =head2 font - # symbolbheadbreak { lines 1.1vx } # =head2 para break - # symbolbheadformat { @Body } # =head2 format - # symbolcheadfont { Bold } # =head3 font - # symbolcheadbreak { lines 1.1vx } # =head3 para break - # symbolcheadformat { @Body } # =head3 format - - # symbolitalicfont { Slope } # font of I<> - # symbolitalicformat { @Body } # format of I<> - # symbolboldfont { Bold } # font of B<> - # symbolboldformat { @Body } # format of B<> - # symbolcodefont { Courier Base -1p } # font of C<> - # symbolcodeformat { @Body } # format of C<> - # symbolfilefont { Slope } # font of F<> - # symbolfileformat { @Body } # format of F<> - # symbollinkfont { Slope } # font of L<> - # symbollinkformat { @Underline @Body } # format of L<> - # symbolindexfont { Slope } # font of X<> - # symbolindexformat { @Body } # format of X<> - -} diff --git a/include/include/podf b/include/include/podf deleted file mode 100644 index 062c09b..0000000 --- a/include/include/podf +++ /dev/null @@ -1,567 +0,0 @@ - -############################################################################### -# # -# Lout @PodSetup package for formatting Pod programs # -# # -# Jeffrey H. Kingston # -# 25 March 2000 # -# # -# This package uses a filtered body parameter to convert Pod source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Pod -def @PodSetup - named pipe { } # pipe through this first - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { varying @OrIfPlain fixed } # print style - - - # the following options apply when style is "fixed" - - named fixedtextfont { Courier Base -1p } # text font - named fixedtextbreak { adjust 1.0vx hyphen } # text para breaking - named fixedverbatimfont { Courier Base } # verbatim font - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - named fixedlinenumbersfont { } # line numbers font - named fixedlinenumbersformat right @Body{ @Body } # line numbers format - - named fixedparagap { 1.0v } # gap between paras - named fixedlistgap { 1.0v } # gap within lists - named fixedlistindent { 0s } # list label indent - named fixedlistrightindent { 0s } # list right indent - named fixedlistlabelwidth { 2.0f } # default label space - named fixedlistlabelfont { } # list label font - named fixedlistlabelformat right @Body { @Body } # list label format - - named fixedaheadfont { Bold +4p } # =head1 font - named fixedaheadbreak { lines 1.1vx } # =head1 para break - named fixedaheadformat right @Body { //1v @Body } # =head1 format - named fixedbheadfont { Bold +2p } # =head2 font - named fixedbheadbreak { lines 1.1vx } # =head2 para break - named fixedbheadformat right @Body { @Body } # =head2 format - named fixedcheadfont { Bold } # =head3 font - named fixedcheadbreak { lines 1.1vx } # =head3 para break - named fixedcheadformat right @Body { @Body } # =head3 format - - named fixeditalicfont { Slope } # font of I<> - named fixeditalicformat right @Body { @Body } # format of I<> - named fixedboldfont { Bold } # font of B<> - named fixedboldformat right @Body { @Body } # format of B<> - named fixedcodefont { Base } # font of C<> - named fixedcodeformat right @Body { @Body } # format of C<> - named fixedfilefont { Slope } # font of F<> - named fixedfileformat right @Body { @Body } # format of F<> - named fixedlinkfont { Slope } # font of L<> - named fixedlinkformat right @Body { @Underline @Body } # format of L<> - named fixedindexfont { Slope } # font of X<> - named fixedindexformat right @Body { @Body } # format of X<> - - - # the following options apply when style is "varying" - - named varyingtextfont { Times Base } # text font - named varyingtextbreak { adjust 1.0vx hyphen } # text para breaking - named varyingverbatimfont { Courier Base -1p } # verbatim font - named varyingtabin { 8 } # tab interval - named varyingtabout { 8s } # tab width - named varyinglinenumbersfont { } # line numbers font - named varyinglinenumbersformat right @Body{ @Body } # line numbers format - - named varyingparagap { 1.0v } # gap between paras - named varyinglistgap { 1.0v } # gap within lists - named varyinglistindent { 0s } # list label indent - named varyinglistrightindent { 0s } # list right indent - named varyinglistlabelwidth { 2.0f } # default label space - named varyinglistlabelfont { } # list label font - named varyinglistlabelformat right @Body { @Body } # list label format - - named varyingaheadfont { Bold +4p } # =head1 font - named varyingaheadbreak { lines 1.1vx } # =head1 para break - named varyingaheadformat right @Body{ //1v @Body } # =head1 format - named varyingbheadfont { Bold +2p } # =head2 font - named varyingbheadbreak { lines 1.1vx } # =head2 para break - named varyingbheadformat right @Body{ @Body } # =head2 format - named varyingcheadfont { Bold } # =head3 font - named varyingcheadbreak { lines 1.1vx } # =head3 para break - named varyingcheadformat right @Body{ @Body } # =head3 format - - named varyingitalicfont { Slope } # font of I<> - named varyingitalicformat right @Body { @Body } # format of I<> - named varyingboldfont { Bold } # font of B<> - named varyingboldformat right @Body { @Body } # format of B<> - named varyingcodefont { Courier Base -1p } # font of C<> - named varyingcodeformat right @Body { @Body } # format of C<> - named varyingfilefont { Slope } # font of F<> - named varyingfileformat right @Body { @Body } # format of F<> - named varyinglinkfont { Slope } # font of L<> - named varyinglinkformat right @Body { @Underline @Body } # format of L<> - named varyingindexfont { Slope } # font of X<> - named varyingindexformat right @Body{ @Body } # format of X<> - - # the following options apply when style is "symbol" - - named symboltextfont { Times Base } # text font - named symboltextbreak { adjust 1.0vx hyphen } # text para breaking - named symbolverbatimfont { Courier Base -1p } # verbatim font - named symboltabin { 8 } # tab interval - named symboltabout { 8s } # tab width - named symbollinenumbersfont { } # line numbers font - named symbollinenumbersformat right @Body { @Body } # line numbers format - - named symbolparagap { 1.0v } # gap between paras - named symbollistgap { 1.0v } # gap within lists - named symbollistindent { 0s } # list label indent - named symbollistrightindent { 0s } # list right indent - named symbollistlabelwidth { 2.0f } # default label space - named symbollistlabelfont { } # list label font - named symbollistlabelformat right @Body { @Body } # list label format - - named symbolaheadfont { Bold +4p } # =head1 font - named symbolaheadbreak { lines 1.1vx } # =head1 para break - named symbolaheadformat right @Body { //1v @Body } # =head1 format - named symbolbheadfont { Bold +2p } # =head2 font - named symbolbheadbreak { lines 1.1vx } # =head2 para break - named symbolbheadformat right @Body { @Body } # =head2 format - named symbolcheadfont { Bold } # =head3 font - named symbolcheadbreak { lines 1.1vx } # =head3 para break - named symbolcheadformat right @Body { @Body } # =head3 format - - named symbolitalicfont { Slope } # font of I<> - named symbolitalicformat right @Body{ @Body } # format of I<> - named symbolboldfont { Bold } # font of B<> - named symbolboldformat right @Body { @Body } # format of B<> - named symbolcodefont { Courier Base -1p } # font of C<> - named symbolcodeformat right @Body { @Body } # format of C<> - named symbolfilefont { Slope } # font of F<> - named symbolfileformat right @Body { @Body } # format of F<> - named symbollinkfont { Slope } # font of L<> - named symbollinkformat right @Body { @Underline @Body } # format of L<> - named symbolindexfont { Slope } # font of X<> - named symbolindexformat right @Body { @Body } # format of X<> - -@Begin - - - export - - @PV @PPG @PLG @PLI @PLRI @PLLW @PLL @PHA @PHB @PHC - @PFI @PFB @PFC @PFF @PFL @PFX @A "$>" @PL - - def @Pod - named style { style } # style - named pipe { pipe } # pipe through this - named textfont { dft } # text font - named textbreak { dft } # text para breaking - named verbatimfont { dft } # verbatim font - named tabin { dft } # tab interval - named tabout { dft } # tab width - named linenumbersfont { dft } # line numbers font - named paragap { dft } # gap between paras - named listgap { dft } # gap within lists - named listindent { dft } # list label indent - named listrightindent { dft } # list right indent - named listlabelwidth { dft } # default label space - named listlabelfont { dft } # list label font - named aheadfont { dft } # =head1 font - named aheadbreak { dft } # =head1 para break - named bheadfont { dft } # =head2 font - named bheadbreak { dft } # =head2 para break - named cheadfont { dft } # =head3 font - named cheadbreak { dft } # =head3 para break - named italicfont { dft } # font of I<> - named boldfont { dft } # font of B<> - named codefont { dft } # font of C<> - named filefont { dft } # font of F<> - named linkfont { dft } # font of L<> - named indexfont { dft } # font of X<> - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - pipe @Case { - "" @Yield { - "prg2lout -r -lPod" -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lPod" -o{@FilterOut} - -e{@FilterErr} -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFont - { - textfont @Test - iffixed { fixedtextfont } - ifvarying { varyingtextfont } - ifsymbol { symboltextfont } - } - - - - def @InitBreak - { - textbreak @Test - iffixed { fixedtextbreak } - ifvarying { varyingtextbreak } - ifsymbol { symboltextbreak } - } - - - def printverbatim - right x - { - def verbfont - { - verbatimfont @Test - iffixed { fixedverbatimfont } - ifvarying { varyingverbatimfont } - ifsymbol { symbolverbatimfont } - } - - def verbatimstrut { @VContract { 0.5v @High ^/ / 0.5v @High } } - - @OneCol verbfont @Font x |0io verbatimstrut - } - - - macro @PV { // printverbatim } - - - def paragraphgap - { - paragap @Test - iffixed { fixedparagap } - ifvarying { varyingparagap } - ifsymbol { symbolparagap } - } - - - macro @PPG { //paragraphgap } - - - def @PLG - { - listgap @Test - iffixed { fixedlistgap } - ifvarying { varyinglistgap } - ifsymbol { symbollistgap } - } - - - def @PLI - { - listindent @Test - iffixed { fixedlistindent } - ifvarying { varyinglistindent } - ifsymbol { symbollistindent } - } - - - def @PLRI - { - listrightindent @Test - iffixed { fixedlistrightindent } - ifvarying { varyinglistrightindent } - ifsymbol { symbollistrightindent } - } - - - def @PLLW right x - { - def defaultwidth - { - listlabelwidth @Test - iffixed { fixedlistlabelwidth } - ifvarying { varyinglistlabelwidth } - ifsymbol { symbollistlabelwidth } - } - - def givenwidth - { - style @Case { - fixed @Yield { x"s" } - varying @Yield { x"f" } - symbol @Yield { x"f" } - } - } - - x @Case { - "" @Yield defaultwidth - else @Yield givenwidth - } - } - - - def @PLL right x - { - def bullet - { - @BackEnd @Case { - PlainText @Yield "*" - else @Yield @Char "bullet" - } - } - - def value - { - x @Case { - "*" @Yield bullet - else @Yield x - } - } - - style @Case { - fixed @Yield fixedlistlabelformat { - { listlabelfont @Else fixedlistlabelfont } @Font value } - varying @Yield varyinglistlabelformat { - { listlabelfont @Else varyinglistlabelfont } @Font value } - symbol @Yield symbollistlabelformat { - { listlabelfont @Else symbollistlabelfont } @Font value } - } - } - - - def @PHA right x - { - style @Case { - fixed @Yield fixedaheadformat { - { aheadfont @Else fixedaheadfont } @Font - { aheadbreak @Else fixedaheadbreak } @Break x } - varying @Yield varyingaheadformat { - { aheadfont @Else varyingaheadfont } @Font - { aheadbreak @Else varyingaheadbreak } @Break x } - symbol @Yield symbolaheadformat { - { aheadfont @Else symbolaheadfont } @Font - { aheadbreak @Else varyingaheadbreak } @Break x } - } - } - - - def @PHB right x - { - style @Case { - fixed @Yield fixedbheadformat { - { bheadfont @Else fixedbheadfont } @Font - { bheadbreak @Else fixedbheadbreak } @Break x } - varying @Yield varyingbheadformat { - { bheadfont @Else varyingbheadfont } @Font - { bheadbreak @Else varyingbheadbreak } @Break x } - symbol @Yield symbolbheadformat { - { bheadfont @Else symbolbheadfont } @Font - { bheadbreak @Else varyingbheadbreak } @Break x } - } - } - - - def @PHC right x - { - style @Case { - fixed @Yield fixedcheadformat { - { cheadfont @Else fixedcheadfont } @Font - { cheadbreak @Else fixedcheadbreak } @Break x } - varying @Yield varyingcheadformat { - { cheadfont @Else varyingcheadfont } @Font - { cheadbreak @Else varyingcheadbreak } @Break x } - symbol @Yield symbolcheadformat { - { cheadfont @Else symbolcheadfont } @Font - { cheadbreak @Else varyingcheadbreak } @Break x } - } - } - - - def @PFI right x - { - style @Case { - fixed @Yield fixeditalicformat { - { italicfont @Else fixeditalicfont } @Font x } - varying @Yield varyingitalicformat { - { italicfont @Else varyingitalicfont } @Font x } - symbol @Yield symbolitalicformat { - { italicfont @Else symbolitalicfont } @Font x } - } - } - - - def @PFB right x - { - style @Case { - fixed @Yield fixedboldformat { - { boldfont @Else fixedboldfont } @Font x } - varying @Yield varyingboldformat { - { boldfont @Else varyingboldfont } @Font x } - symbol @Yield symbolboldformat { - { boldfont @Else symbolboldfont } @Font x } - } - } - - - def @PFC right x - { - style @Case { - fixed @Yield fixedcodeformat { - { codefont @Else fixedcodefont } @Font x } - varying @Yield varyingcodeformat { - { codefont @Else varyingcodefont } @Font x } - symbol @Yield symbolcodeformat { - { codefont @Else symbolcodefont } @Font x } - } - } - - - def @PFF right x - { - style @Case { - fixed @Yield fixedfileformat { - { filefont @Else fixedfilefont } @Font x } - varying @Yield varyingfileformat { - { filefont @Else varyingfilefont } @Font x } - symbol @Yield symbolfileformat { - { filefont @Else symbolfilefont } @Font x } - } - } - - - def @PFL right x - { - style @Case { - fixed @Yield fixedlinkformat { - { linkfont @Else fixedlinkfont } @Font x } - varying @Yield varyinglinkformat { - { linkfont @Else varyinglinkfont } @Font x } - symbol @Yield symbollinkformat { - { linkfont @Else symbollinkfont } @Font x } - } - } - - - def @PFX right x - { - style @Case { - fixed @Yield fixedindexformat { - { indexfont @Else fixedindexfont } @Font x } - varying @Yield varyingindexformat { - { indexfont @Else varyingindexfont } @Font x } - symbol @Yield symbolindexformat { - { indexfont @Else symbolindexfont } @Font x } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - - def pl # for formatting line numbers - right x - { - def strut { @VContract { 0.5v @High ^/ / 0.5v @High } } - - strut & style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbersfont @Else fixedlinenumbersfont } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbersfont @Else varyinglinenumbersfont } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbersfont @Else symbollinenumbersfont } @Font x - } - } - } - - - macro @PL { // pl } - - - @InitFont @Font @InitBreak @Break @Body - - @End @Pod - -@End @PodSetup diff --git a/include/include/python b/include/include/python deleted file mode 100644 index c39284c..0000000 --- a/include/include/python +++ /dev/null @@ -1,118 +0,0 @@ -############################################################################### -# # -# Lout setup file for Python program printing # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 5 April 2000 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { pythonf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @PythonSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - # style { varying @OrIfPlain fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # spacing mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/pythonf b/include/include/pythonf deleted file mode 100644 index 2d3f77f..0000000 --- a/include/include/pythonf +++ /dev/null @@ -1,450 +0,0 @@ - -############################################################################### -# # -# Lout @PythonSetup package for formatting Python programs # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 5 April 2000 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Python -def @PythonSetup - named pipe { } # pipe through this first - named numbered { No } # want lines numbered? - named blanknumbered { Yes } # blank lines numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { varying @OrIfPlain fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD - @A "$>" "''" - - def @Python - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lPython" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lPython" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - export "'''" - def @PS # for formatting strings - body x - { - def "'''" { "'''" } - - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - def "''" { "''" } - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @Python - -@End @PythonSetup diff --git a/include/include/report b/include/include/report deleted file mode 100644 index 9f58ae5..0000000 --- a/include/include/report +++ /dev/null @@ -1,506 +0,0 @@ -############################################################################### -# # -# Lout setup file for technical reports # -# # -# Jeffrey H. Kingston # -# # -# This file has been placed in the public domain by its author. # -# # -# Note: this version, released with Lout Version 3.13, is not upwardly # -# compatible with previous versions: the @Abstract symbol must now # -# be placed before the //, not after. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude commands for standard packages. # -# # -############################################################################### - - @SysInclude { langdefs } # language definitions - @SysInclude { bsf } # BasicSetup package - @SysInclude { dsf } # DocumentSetup package - @SysInclude { reportf } # ReportSetup extension - - -############################################################################### -# # -# @Include command for reading personal definitions from current directory. # -# # -############################################################################### - - @Include { mydefs } - - -############################################################################### -# # -# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @BasicSetup - # @InitialFont { Times Base 12p } # initial font - # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}} - # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent - # @InitialSpace { lout } # initial space style - # @InitialLanguage { English } # initial language - # @InitialColour { black } # initial colour - # @InitialBackgroundColour { white } # initial background colour - # @OptimizePages { No } # optimize page breaks? - # @HeadingFont { Bold } # font for @Heading - # @FixedWidthFont { Courier Base -1p } # font for @F - # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs - # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP - # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays - # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent - # @DefaultIndent { 0.5rt } # @Display indent - # @DisplayNumStyle { (num) } # style of display numbers - # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent - # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent - # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists - # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items - # @ListIndent { 0s } # indent of list items - # @ListRightIndent { 0s } # right indent of list items - # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags - # @ListLabelRight { No } # right-adjust list labels - # @ListLabelRightGap { 2s } # gap when right-adjusting - # @ListFont { } # font of list items - # @ListBreak { } # break style of list items - # @NumberSeparator { . } # separates nums like 2.3.7 - # @CrossLinkFormat { @Body } # format of cross links - # @ExternalLinkFormat { @Body } # format of external links -} - - -############################################################################### -# # -# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @DocumentSetup - # @PageType { A4 @OrIfPlain Other} # page type (width, height) - # @PageWidth { 80s } # page width if type Other - # @PageHeight { 66f } # page height if type Other - # @PageOrientation { Portrait } # Portrait, Landscape, etc. - # @PageBackground { } # background of each page - # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages - # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages - # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages - # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages - # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages - # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages - # @OddLeftBodyMargin { 0c } # extra margin for page body - # @OddRightBodyMargin { 0c } # extra margin for page body - # @EvenLeftBodyMargin { 0c } # extra margin for page body - # @EvenRightBodyMargin{ 0c } # extra margin for page body - # @PageBoxType { None } # None Box CurveBox ShadowBox - # @PageBoxMargin { 1.00c } # page box margin - # @PageBoxLineWidth { } # page box line thickness - # @PageBoxPaint { none } # page box paint - # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox - # @PageEnclose { @Body } # enclose every page in this - # @ColumnNumber { 1 } # number of columns (1 to 10) - # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap - - # @FigureLocation { PageTop } # default figure location - # @FigureFormat { @CC @Body } # default figure format - # @FigureWord { figure } # "Figure" word else anything - # @FigureNumbers { Arabic } # method of numbering figures - # @FigureCaptionPos { Below } # Above or Below - # @FigureCaptionFont { -2p } # figure caption font - # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break - # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFigureContents { No } # list of figures at start - - # @TableLocation { PageTop } # default table location - # @TableFormat { @CC @Body } # default table format - # @TableWord { table } # "Table" word else anything - # @TableNumbers { Arabic } # method of numbering tables - # @TableCaptionPos { Below } # Above or Below - # @TableCaptionFont { -2p } # table caption font - # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break - # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeTableContents { No } # list of tables at start - - # @FloaterLocation { PageTop } # default floater location - # @FloaterFormat { @CC @Body } # default floater format - # @FloaterWord { floater } # "Floater" word else anything - # @FloaterNumbers { Arabic } # method of numbering floaters - # @FloaterCaptionPos { Below } # Above or Below - # @FloaterCaptionFont { -2p } # floater caption font - # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break - # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFloaterContents{ No } # list of floaters at start - - # @MakeContents { No } # make contents? Yes or No - # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry - # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry - # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry - # @ContentsFont { Bold } # font for major entry - # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry - # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry - # @ContentsFormat { number @DotSep title } # contents entry format - # @ContentsLeader { .. } # leader symbol in contents - # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders - # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width - - # @MakeReferences { Yes } # make references? Yes or No - # @RefCiteStyle { [cite] } # citation style - # @RefCiteLabels { @RefNum } # citation items - # @RefNumbers { Arabic } # reference numbers - # @RefListFormat { Labels } # NoLabels, Labels, etc. - # @RefListLabels { [@RefNum] } # ref list label format - # @RefListTitle { references } # title of reference list - # @ChapRefListTitle { references } # title of chapter ref list - # @RefListIndent { 0s } # indent to left of labels - # @RefListRightIndent { 0s } # indent to right of items - # @RefListGap { @ListGap } # gap between ref list items - # @RefListFont { } # font used in reference list - # @RefListBreak { } # break style of ref list - # @RefListLabelWidth { @ListLabelWidth } # Labels column width - # @RefListSortKey { @Tag } # sorting key - - # @MakeGlossary { No } # make glossary? Yes or No - # @GlossaryText { @Null } # glossary initial text - # @GlossaryFont { } # glossary entries font - # @GlossaryBreak { } # glossary entries break - # @GlossaryFormat { +3p @Font @S @Name # glossary entries format - # @Right @I { @Word&&page @PageNum } - # @DP @RawIndentedDisplay @Body } - # @GlossaryGap { @DisplayGap } # gap between glossary entries - # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) - # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap - # @InGlossaryFont { smallcaps } # font for @InGlossary - # @InGlossaryFormat { @Body } # format for @InGlossary - - # @MakeIndex { No } # make index? Yes or No - # @IndexText { @Null } # index initial text - # @IndexFont { } # index entries font - # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexFormat { @Body } # @Index format - # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format - # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format - # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexTypeMain { @B @PageNum } # Main pagenum format - # @IndexTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexRangeFormat { @From--@To } # index page range format - # @IndexColumnNumber { 2 } # index columns (1 to 10) - # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap - # @IndexCtd { Yes } # include (ctd.) lines - # @IndexCtdWord { continued } # "ctd." in current lang. - # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexSpacerAbove { 2v } # space above index spacer - # @IndexSpacerBelow { 1v } # space below index spacer - # @IndexSpacerFont { +3p } # font of index spacer - # @IndexSpacerFormat { @Body } # format of index spacer - - # @MakeIndexA { No } # make index A? Yes or No - # @IndexAText { @Null } # index A initial text - # @IndexAFont { } # index A entries font - # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexAFormat { @Body } # @IndexA format - # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format - # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format - # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexATypeMain { @B @PageNum } # Main pagenum format - # @IndexATypeSpecial { @I @PageNum } # Special pagenum format - # @IndexARangeFormat { @From--@To } # index page range format - # @IndexAColumnNumber { 2 } # index A columns (1 to 10) - # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap - # @IndexACtd { Yes } # include (ctd.) lines - # @IndexACtdWord { continued } # "ctd." in current lang. - # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexASpacerAbove { 2v } # space above index A spacer - # @IndexASpacerBelow { 1v } # space below index A spacer - # @IndexASpacerFont { +3p } # font of index A spacer - # @IndexASpacerFormat { @Body } # format of index A spacer - - # @MakeIndexB { No } # make index B? Yes or No - # @IndexBText { @Null } # index B initial text - # @IndexBFont { } # index B entries font - # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexBFormat { @Body } # @IndexB format - # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format - # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format - # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexBTypeMain { @B @PageNum } # Main pagenum format - # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexBRangeFormat { @From--@To } # index page range format - # @IndexBColumnNumber { 2 } # index B columns (1 to 10) - # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap - # @IndexBCtd { Yes } # include (ctd.) lines - # @IndexBCtdWord { continued } # "ctd." in current lang. - # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexBSpacerAbove { 2v } # space above index B spacer - # @IndexBSpacerBelow { 1v } # space below index B spacer - # @IndexBSpacerFont { +3p } # font of index B spacer - # @IndexBSpacerFormat { @Body } # format of index B spacer - - # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures - # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text - - # @FootNoteNumbers { Arabic } # footnote numbers - # @FootNoteThrough { No } # numbered through chapter? - # @FootNoteLocation { ColFoot } # where the footnote appears - # @FootNoteFont { 0.80f } # font for footnotes - # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes - # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format - # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line - # @FootAboveGap { @DisplayGap } # gap above footnote line - # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes - # @MarginNoteFont { 0.80f } # font of margin notes - # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes - # @MarginNoteHGap { 0.5c } # horizontal gap to notes - # @MarginNoteVGap { @DisplayGap } # min vertical gap between - # @MarginNoteWidth { 1.50c } # width of margin notes - # @EndNoteNumbers { Arabic } # endnote numbers - # @EndNoteFont { 0.80f } # font of endnotes - # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes - # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format - # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes - - # @TheoremWord { theorem } # "Theorem" word, etc. - # @TheoremTitleFormat { (title) } # only if title present - # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @DefinitionWord { definition } # "Definition" word, etc. - # @DefinitionTitleFormat { (title) } # only if title present - # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ClaimWord { claim } # "Claim" word, etc. - # @ClaimTitleFormat { (title) } # only if title present - # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @PropositionWord { proposition } # "Proposition" word, etc. - # @PropositionTitleFormat { (title) } # only if title present - # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @LemmaWord { lemma } # "Lemma" word, etc. - # @LemmaTitleFormat { (title) } # only if title present - # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @CorollaryWord { corollary } # "Corollary" word, etc. - # @CorollaryTitleFormat { (title) } # only if title present - # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ExampleWord { example } # "Example" word, etc. - # @ExampleTitleFormat { (title) } # only if title present - # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ProofWord { proof } # "Proof" word, etc. - - # @PageHeaders { Simple } # None Simple Titles NoTitles - # @PageNumbers { Arabic } # page numbers - # @FirstPageNumber { 1 } # number of first page - # @IntroPageNumbers { Roman } # intro page numbers - # @IntroFirstPageNumber{ 1 } # number of first intro page - # @StructPageNums { No } # make structured page numbers - # @PageNumberFormat { number } # format of all page numbers - - # @OddTop { @Centre{- @PageNum -} } # Simple page headers - # @OddFoot { @Null } - # @EvenTop { @Centre{- @PageNum -} } - # @EvenFoot { @Null } - # @StartOddTop { @Null } - # @StartOddFoot { @Null } - # @StartEvenTop { @Null } - # @StartEvenFoot { @Null } - # @IntroOddTop { @Null } - # @IntroOddFoot { @Centre @PageNum } - # @IntroEvenTop { @Null } - # @IntroEvenFoot { @Centre @PageNum } - # @IntroStartOddTop { @Null } - # @IntroStartOddFoot { @Null } - # @IntroStartEvenTop { @Null } - # @IntroStartEvenFoot { @Null } - - # Titles, NoTitles headers - # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum } - # @RunningOddFoot { @Null } - # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} } - # @RunningEvenFoot { @Null } - # @RunningStartOddTop { @Null } - # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum } - # @RunningStartEvenTop { @Null } - # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum } - # @RunningIntroOddTop { @Null } - # @RunningIntroOddFoot { @Right @PageNum } - # @RunningIntroEvenTop { @Null } - # @RunningIntroEvenFoot { @PageNum } - # @RunningIntroStartOddTop { @Null } - # @RunningIntroStartOddFoot { @Null } - # @RunningIntroStartEvenTop { @Null } - # @RunningIntroStartEvenFoot { @Null } -} - - -############################################################################### -# # -# The @ReportSetup @Use clause - options specific to technical reports. # -# # -############################################################################### - -@Use { @ReportSetup - # @CoverSheet { Yes } # make cover sheet - # @ContentsSeparate { No } # contents on separate pages - # @DateLine { No } # Yes, No, or a date - # @AboveTitleGap { 1i } # space above title - # @TitleFont { Bold } # title font - # @TitleBreak { clines 1.4vx } # title break - # @AuthorFont { Slope } # author font - # @AuthorBreak { clines } # author break - # @InstitutionFont { } # institution font - # @InstitutionBreak { clines } # institution break - # @DateLineFont { } # dateline font - # @DateLineBreak { } # dateline break - # @AbstractDisplay { No } # abstract full width display - # @AbstractFont { } # font of abstract - # @AbstractBreak { } # break style of abstract - # @AbstractFormat { @Centre @Title @DP @Body } # abstract format - # @AbstractTitle { dft } # abstract title (dft is @AbstractWord) - # @ReferencesBeforeAppendices { No } # references before appendices - # @AbstractWord { abstract } # word for "Abstract" - # @ContentsWord { contents } # word for "Contents" - # @AppendixWord { appendix } # word for "Appendix" - # @GlossaryWord { glossary } # word for "Glossary" - # @IndexWord { index } # word for "Index" - # @IndexAWord { index } # word for "Index" (A) - # @IndexBWord { index } # word for "Index" (B) - # @SectionNumbers { Arabic } # kind of section numbers - # @FirstSectionNumber { 1 } # first section num (Arabic) - # @SubSectionNumbers { Arabic } # kind of subsection numbers - # @FirstSubSectionNumber { 1 } # first subsect num (Arabic) - # @SubSubSectionNumbers { Arabic } # kind of sub-subsect numbers - # @FirstSubSubSectionNumber { 1 } # first subsub. num (Arabic) - # @AppendixNumbers { UCAlpha } # kind of appendix numbers - # @FirstAppendixNumber { 1 } # first appendix num (Arabic) - # @SubAppendixNumbers { Arabic } # kind of subappendix numbers - # @FirstSubAppendixNumber { 1 } # first sub-app. num (Arabic) - # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers - # @FirstSubSubAppendixNumber { 1 } # first sub-sub. num (Arabic) - # @AbstractHeadingFont { Bold } # abstract head font - # @AbstractHeadingBreak { ragged 1.2fx nohyphen } # abstract head break - # @AbstractHeadingFormat { @Centre title } # abstract head fmt - # @ContentsHeadingFont { Bold } # contents head font - # @ContentsHeadingBreak { ragged 1.2fx nohyphen } # contents head break - # @ContentsHeadingFormat { title } # contents head fmt - # @SectionHeadingFont { Bold } # section head font - # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break - # @SectionHeadingFormat { number @DotSep title } # section head fmt - # @SubSectionHeadingFont { Bold } # subsection head font - # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subsection head break - # @SubSectionHeadingFormat { number @DotSep title } # subsection head fmt - # @SubSubSectionHeadingFont { Slope } # sub-subs. head font - # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-subs. head break - # @SubSubSectionHeadingFormat { number @DotSep title } # sub-subs. head fmt - # @AppendixHeadingFont { Bold } # appendix head font - # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break - # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt - # @SubAppendixHeadingFont { Bold } # subapp. head font - # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break - # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head fmt - # @SubSubAppendixHeadingFont { Slope } # sub-subapp. head font - # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-subapp head break - # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-subapp. head fmt - # @ReferencesHeadingFont { Bold } # references head font - # @ReferencesHeadingBreak { ragged 1.2fx nohyphen } # references head break - # @ReferencesHeadingFormat { title } # references head fmt - # @GlossaryHeadingFont { Bold } # glossary head font - # @GlossaryHeadingBreak { ragged 1.2fx nohyphen } # glossary head break - # @GlossaryHeadingFormat { title } # glossary head fmt - # @IndexHeadingFont { Bold } # index head font - # @IndexHeadingBreak { ragged 1.2fx nohyphen } # index head break - # @IndexHeadingFormat { title } # index head fmt - # @IndexAHeadingFont { Bold } # index A head font - # @IndexAHeadingBreak { ragged 1.2fx nohyphen } # index A head break - # @IndexAHeadingFormat { title } # index A head fmt - # @IndexBHeadingFont { Bold } # index B head font - # @IndexBHeadingBreak { ragged 1.2fx nohyphen } # index B head break - # @IndexBHeadingFormat { title } # index B head fmt - # @SectionGap { 2.0v @OrIfPlain 3f } # between sections - # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects - # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs. - # @AppendixGap { 2.0v @OrIfPlain 3f } # between appendices - # @SubAppendixGap { 1.5v @OrIfPlain 2f } # between subappendices - # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps - # @SectionInContents { Yes } # add sections to contents - # @SubSectionInContents { Yes } # add subsections to contents - # @SubSubSectionInContents { No } # add sub-subsects to contents - # @AppendixInContents { Yes } # add appendices to contents - # @SubAppendixInContents { Yes } # add subappendices to contents - # @SubSubAppendixInContents { No } # add sub-subapps to contents - # @ReferencesInContents { Yes } # add references to contents - # @GlossaryInContents { Yes } # add glossary to contents - # @IndexInContents { Yes } # add index to contents - # @IndexAInContents { Yes } # add index A to contents - # @IndexBInContents { Yes } # add index B to contents - # @SectionContentsIndent { 0f } # contents indent of sections - # @SubSectionContentsIndent { 3f } # contents indent of subsections - # @SubSubSectionContentsIndent{ 6f } # contents indent of sub-subsections - # @AppendixContentsIndent { 0f } # contents indent of appendices - # @SubAppendixContentsIndent { 3f } # contents indent of sub-appendices - # @SubSubAppendixContentsIndent { 6f } # contents indent of sub-sub-appendices - # @ReferencesContentsIndent { 0f } # contents indent of references - # @GlossaryContentsIndent { 0f } # contents indent of glossary - # @IndexContentsIndent { 0f } # contents indent of index - # @IndexAContentsIndent { 0f } # contents indent of index A - # @IndexBContentsIndent { 0f } # contents indent of index B - # @SectionNumInTheorems { No } # theorem num has section num - # @SubSectionNumInTheorems { No } # theorem num has subsect num - # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num - # @AppendixNumInTheorems { No } # theorem num has appendix num - # @SubAppendixNumInTheorems { No } # theorem num has sub-app num - # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num - # @SectionNumInDisplays { Yes } # display num has section num - # @SubSectionNumInDisplays { No } # display num has subsect num - # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num - # @AppendixNumInDisplays { Yes } # display num has appendix num - # @SubAppendixNumInDisplays { No } # display num has sub-app num - # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num - # @SectionNumInFigures { No } # figure num has section num - # @SubSectionNumInFigures { No } # figure num has subsect num - # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num - # @AppendixNumInFigures { No } # figure num has appendix num - # @SubAppendixNumInFigures { No } # figure num has sub-app num - # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num - # @SectionNumInTables { No } # table num has section num - # @SubSectionNumInTables { No } # table num has subsect num - # @SubSubSectionNumInTables { No } # table num has sub-ss. num - # @AppendixNumInTables { No } # table num has appendix num - # @SubAppendixNumInTables { No } # table num has sub-app num - # @SubSubAppendixNumInTables { No } # table num has sub-sa. num - # @SectionNumInFloaters { No } # floater num has section num - # @SubSectionNumInFloaters { No } # floater num has subsect num - # @SubSubSectionNumInFloaters { No } # floater num has sub-ss. num - # @AppendixNumInFloaters { No } # floater num has appendix num - # @SubAppendixNumInFloaters { No } # floater num has sub-app num - # @SubSubAppendixNumInFloaters{ No } # floater num has sub-sa. num - # @SectionNumInRunners { Yes } # runners have section num - # @SubSectionNumInRunners { No } # runners have subsect num - # @SubSubSectionNumInRunners { No } # runners have sub-ss. num - # @AppendixNumInRunners { Yes } # runners have appendix num - # @SubAppendixNumInRunners { No } # runners have sub-app num - # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num - # @FigureContentsPrefix { } # for structured page nums - # @TableContentsPrefix { } # for structured page nums - # @FloaterContentsPrefix { } # for structured page nums - # @SectionPrefix { } # for structured page nums - # @AppendixPrefix { } # for structured page nums - # @ReferencesPrefix { } # for structured page nums - # @GlossaryPrefix { } # for structured page nums - # @IndexPrefix { } # for structured page nums - # @IndexAPrefix { } # for structured page nums - # @IndexBPrefix { } # for structured page nums -} - - -############################################################################### -# # -# @Database (and @SysDatabase) clauses go here. # -# # -############################################################################### - -@SysDatabase @FontDef { fontdefs } # font definitions -@SysDatabase @RefStyle { refstyle } # reference printing styles diff --git a/include/include/reportf b/include/include/reportf deleted file mode 100644 index fceb63a..0000000 --- a/include/include/reportf +++ /dev/null @@ -1,1030 +0,0 @@ - -########################################################################### -# # -# @ReportSetup extension to @DocumentSetup. # -# # -# Jeffrey H. Kingston # -# # -# This package extends DocumentSetup with definitions for reports. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -########################################################################### - -extend @BasicSetup @DocumentSetup -export @Report @Section @Appendix -def @ReportSetup - named @CoverSheet { Yes } - named @ContentsSeparate { No } - named @DateLine { No } - named @AboveTitleGap { 1i } - named @TitleFont { Bold } - named @TitleBreak { clines 1.4vx } - named @AuthorFont { Slope } - named @AuthorBreak { clines } - named @InstitutionFont { } - named @InstitutionBreak { clines } - named @DateLineFont { } - named @DateLineBreak { } - named @AbstractDisplay { No } - named @AbstractFont { } - named @AbstractBreak { } - named @AbstractFormat - left @Title - right @Body { @Centre @Title @DP @Body } - named @AbstractTitle { dft } - named @ReferencesBeforeAppendices { No } - - named @AbstractWord { abstract } - named @ContentsWord { contents } - named @AppendixWord { appendix } - named @GlossaryWord { glossary } - named @IndexWord { index } - named @IndexAWord { index } - named @IndexBWord { index } - - named @SectionNumbers { Arabic } - named @FirstSectionNumber { 1 } - named @SubSectionNumbers { Arabic } - named @FirstSubSectionNumber { 1 } - named @SubSubSectionNumbers { Arabic } - named @FirstSubSubSectionNumber { 1 } - named @AppendixNumbers { UCAlpha } - named @FirstAppendixNumber { 1 } - named @SubAppendixNumbers { Arabic } - named @FirstSubAppendixNumber { 1 } - named @SubSubAppendixNumbers { Arabic } - named @FirstSubSubAppendixNumber { 1 } - - named @AbstractHeadingFont { Bold } - named @AbstractHeadingBreak { ragged 1.2fx nohyphen } - named @AbstractHeadingFormat - right title { @Centre title } - - named @ContentsHeadingFont { Bold } - named @ContentsHeadingBreak { ragged 1.2fx nohyphen } - named @ContentsHeadingFormat - right title { title } - - named @SectionHeadingFont { Bold } - named @SectionHeadingBreak { ragged 1.2fx nohyphen } - named @SectionHeadingFormat - left number right title { number @DotSep title } - - named @SubSectionHeadingFont { Bold } - named @SubSectionHeadingBreak { ragged 1.2fx nohyphen } - named @SubSectionHeadingFormat - left number right title { number @DotSep title } - - named @SubSubSectionHeadingFont { Slope } - named @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } - named @SubSubSectionHeadingFormat - left number right title { number @DotSep title } - - named @AppendixHeadingFont { Bold } - named @AppendixHeadingBreak { ragged 1.2fx nohyphen } - named @AppendixHeadingFormat - left number right title { number @DotSep title } - - named @SubAppendixHeadingFont { Bold } - named @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } - named @SubAppendixHeadingFormat - left number right title { number @DotSep title } - - named @SubSubAppendixHeadingFont { Slope } - named @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } - named @SubSubAppendixHeadingFormat - left number right title { number @DotSep title } - - named @ReferencesHeadingFont { Bold } - named @ReferencesHeadingBreak { ragged 1.2fx nohyphen } - named @ReferencesHeadingFormat - right title { title } - - named @GlossaryHeadingFont { Bold } - named @GlossaryHeadingBreak { ragged 1.2fx nohyphen } - named @GlossaryHeadingFormat - right title { title } - - named @IndexHeadingFont { Bold } - named @IndexHeadingBreak { ragged 1.2fx nohyphen } - named @IndexHeadingFormat - right title { title } - - named @IndexAHeadingFont { Bold } - named @IndexAHeadingBreak { ragged 1.2fx nohyphen } - named @IndexAHeadingFormat - right title { title } - - named @IndexBHeadingFont { Bold } - named @IndexBHeadingBreak { ragged 1.2fx nohyphen } - named @IndexBHeadingFormat - right title { title } - - named @SectionGap { 2.0v @OrIfPlain 3f } - named @SubSectionGap { 1.5v @OrIfPlain 2f } - named @SubSubSectionGap { 1.5v @OrIfPlain 2f } - named @AppendixGap { 2.0v @OrIfPlain 3f } - named @SubAppendixGap { 1.5v @OrIfPlain 2f } - named @SubSubAppendixGap { 1.5v @OrIfPlain 2f } - - named @SectionInContents { Yes } - named @SubSectionInContents { Yes } - named @SubSubSectionInContents { No } - named @AppendixInContents { Yes } - named @SubAppendixInContents { Yes } - named @SubSubAppendixInContents { No } - named @ReferencesInContents { Yes } - named @GlossaryInContents { Yes } - named @IndexInContents { Yes } - named @IndexAInContents { Yes } - named @IndexBInContents { Yes } - - named @SectionContentsIndent { 0f } - named @SubSectionContentsIndent { 3f } - named @SubSubSectionContentsIndent { 6f } - named @AppendixContentsIndent { 0f } - named @SubAppendixContentsIndent { 3f } - named @SubSubAppendixContentsIndent { 6f } - named @ReferencesContentsIndent { 0f } - named @GlossaryContentsIndent { 0f } - named @IndexContentsIndent { 0f } - named @IndexAContentsIndent { 0f } - named @IndexBContentsIndent { 0f } - - named @SectionNumInTheorems { No } - named @SubSectionNumInTheorems { No } - named @SubSubSectionNumInTheorems { No } - named @AppendixNumInTheorems { No } - named @SubAppendixNumInTheorems { No } - named @SubSubAppendixNumInTheorems { No } - - named @SectionNumInDisplays { Yes } - named @SubSectionNumInDisplays { No } - named @SubSubSectionNumInDisplays { No } - named @AppendixNumInDisplays { Yes } - named @SubAppendixNumInDisplays { No } - named @SubSubAppendixNumInDisplays { No } - - named @SectionNumInFigures { No } - named @SubSectionNumInFigures { No } - named @SubSubSectionNumInFigures { No } - named @AppendixNumInFigures { No } - named @SubAppendixNumInFigures { No } - named @SubSubAppendixNumInFigures { No } - - named @SectionNumInTables { No } - named @SubSectionNumInTables { No } - named @SubSubSectionNumInTables { No } - named @AppendixNumInTables { No } - named @SubAppendixNumInTables { No } - named @SubSubAppendixNumInTables { No } - - named @SectionNumInFloaters { No } - named @SubSectionNumInFloaters { No } - named @SubSubSectionNumInFloaters { No } - named @AppendixNumInFloaters { No } - named @SubAppendixNumInFloaters { No } - named @SubSubAppendixNumInFloaters { No } - - named @SectionNumInRunners { Yes } - named @SubSectionNumInRunners { No } - named @SubSubSectionNumInRunners { No } - named @AppendixNumInRunners { Yes } - named @SubAppendixNumInRunners { No } - named @SubSubAppendixNumInRunners { No } - - named @FigureContentsPrefix { } - named @TableContentsPrefix { } - named @FloaterContentsPrefix { } - named @SectionPrefix { } - named @AppendixPrefix { } - named @ReferencesPrefix { } - named @GlossaryPrefix { } - named @IndexPrefix { } - named @IndexAPrefix { } - named @IndexBPrefix { } -@Begin - - ####################################################################### - # # - # Lists of sections, subsections, etc. # - # # - ####################################################################### - - export num - def @SectionList named @Tag {} right num - { - @Galley - //@SectionGap @SectionList @Next num - } - - export num - def @SubSectionList named @Tag {} right num - { - @Galley - //@SubSectionGap @SubSectionList @Next num - } - - export num - def @SubSubSectionList named @Tag {} right num - { - @Galley - //@SubSubSectionGap @SubSubSectionList @Next num - } - - export num - def @AppendixList named @Tag {} right num - { - @Galley - //@AppendixGap @AppendixList @Next num - } - - export num - def @SubAppendixList named @Tag {} right num - { - @Galley - //@SubAppendixGap @SubAppendixList @Next num - } - - export num - def @SubSubAppendixList named @Tag {} right num - { - @Galley - //@SubSubAppendixGap @SubSubAppendixList @Next num - } - - - ####################################################################### - # # - # @Full - this sends text to a full-width place. # - # # - ####################################################################### - - def @Full force into { @FullPlace&&following } right x - { - x - } - - def @NoForceFull into { @FullPlace&&following } right x - { - x - } - - - ####################################################################### - # # - # @Report # - # # - ####################################################################### - - def @Report - named @Title {} - named @Author {} - named @Institution {} - named @DateLine { @DateLine } - named @CoverSheet { @CoverSheet } - named @ContentsSeparate { @ContentsSeparate } - named @AtEnd { dft } - named @InitialFont { @InitialFont } - named @InitialBreak { @InitialBreak } - named @InitialOutdent { @InitialOutdent } - named @InitialSpace { @InitialSpace } - named @InitialLanguage { @InitialLanguage } - named @PageOrientation { @PageOrientation } - named @PageHeaders { @PageHeaders } - named @ColumnNumber { @ColumnNumber } - named @FirstPageNumber { @FirstPageNumber } - named @OptimizePages { @OptimizePages } - named @AbstractDisplay { @AbstractDisplay } - named @AbstractTitle { @AbstractTitle } - named @Abstract {} - named @GlossaryText { @GlossaryText } - named @IndexText { @IndexText } - named @IndexAText { @IndexAText } - named @IndexBText { @IndexBText } - { - - def @Cntr right x - { - x @Case { - "" @Yield @Null - else @Yield { |0.5rt x | } - } - } - - def @DateValue right indent - { - @DateLine @Case { - No @Yield @Null - Yes @Yield @Date - else @Yield @DateLine - } - } - - def @TitleMaterial - { - //@AboveTitleGap - @TitleFont @Font @TitleBreak @Break @Cntr @Title - //1.00v @AuthorFont @Font @AuthorBreak @Break @Cntr @Author - //1.00v @InstitutionFont @Font @InstitutionBreak @Break @Cntr @Institution - //1.00v @DateLineFont @Font @DateLineBreak @Break @Cntr @DateValue - } - - def @AbstractPart - { - def @Title - { - @AbstractHeadingFont @Font @AbstractHeadingBreak @Break - @AbstractHeadingFormat { - @AbstractTitle @Dft { abstract @WordVal @AbstractWord } - } - } - - @Abstract @Case { - - "" @Yield @Null - - else @Yield - { - @AbstractFont @Font @AbstractBreak @Break - @AbstractDisplay @Case { - - No @Yield { @Title @AbstractFormat @Abstract } - - Yes @Yield { |@DisplayIndent - @Title @AbstractFormat @Abstract |@DisplayIndent } - } - } - } - } - - def @ContentsPart - { - // |0.5rt @ContentsHeadingFont @Font @ContentsHeadingBreak @Break - @ContentsHeadingFormat { contents @WordVal @ContentsWord } | - //@DisplayGap @ContentsSection - // NonStart @Runner @MajorTitle {contents @WordVal @ContentsWord} - } - - def @ReferencesPart - named @Tag {} - { - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { @RefHeading @RefListTitle } - sendheader { @Body } - headingfont { @ReferencesHeadingFont } - headingbreak { @ReferencesHeadingBreak } - headingformat { @ReferencesHeadingFormat @Body } - incontents { @ReferencesInContents } - contentsindent { @ReferencesContentsIndent } - majornum {} - majortitle {} - minornum {} - minortitle { @RefHeading @RefListTitle } - prefix { @ReferencesPrefix } - inrunners { Yes } - { //@RefListGap @ReferencesSection } - } - - def @GlossaryPart - named @Tag {} - { - - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { glossary @WordVal @GlossaryWord } - @MinorNum {} - @MinorTitle {} - @Owner { @Tag } - @Prefix { @GlossaryPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { glossary @WordVal @GlossaryWord } - headingfont { @GlossaryHeadingFont } - headingbreak { @GlossaryHeadingBreak } - headingformat { @GlossaryHeadingFormat @Body } - headingtext { @GlossaryText } - incontents { @GlossaryInContents } - contentsindent { @GlossaryContentsIndent } - prefix { @GlossaryPrefix } - inrunners { Yes } - majornum {} - majortitle {} - minornum {} - minortitle { glossary @WordVal @GlossaryWord } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @GlossarySection @Run - - } - - def @IndexPart - named @Tag {} - { - - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexWord } - @MinorNum {} - @MinorTitle {} - @Owner { @Tag } - @Prefix { @IndexPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexWord } - headingfont { @IndexHeadingFont } - headingbreak { @IndexHeadingBreak } - headingformat { @IndexHeadingFormat @Body } - headingtext { @IndexText } - incontents { @IndexInContents } - contentsindent { @IndexContentsIndent } - prefix { @IndexPrefix } - inrunners { Yes } - majornum {} - majortitle {} - minornum {} - minortitle { index @WordVal @IndexWord } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexSection @Run - - } - - def @IndexAPart - named @Tag {} - { - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexAWord } - @MinorNum {} - @MinorTitle {} - @Owner { @Tag } - @Prefix { @IndexAPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexAWord } - headingfont { @IndexAHeadingFont } - headingbreak { @IndexAHeadingBreak } - headingformat { @IndexAHeadingFormat @Body } - headingtext { @IndexAText } - incontents { @IndexAInContents } - contentsindent { @IndexAContentsIndent } - prefix { @IndexAPrefix } - inrunners { Yes } - majornum {} - majortitle {} - minornum {} - minortitle { index @WordVal @IndexAWord } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexASection @Run - - } - - def @IndexBPart - named @Tag {} - { - def @Run - { - NonStart @Runner - @MajorNum {} - @MajorTitle { index @WordVal @IndexBWord } - @MinorNum {} - @MinorTitle {} - @Owner { @Tag } - @Prefix { @IndexBPrefix } - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { index @WordVal @IndexBWord } - headingfont { @IndexBHeadingFont } - headingbreak { @IndexBHeadingBreak } - headingformat { @IndexBHeadingFormat @Body } - headingtext { @IndexBText } - incontents { @IndexBInContents } - contentsindent { @IndexBContentsIndent } - prefix { @IndexBPrefix } - inrunners { Yes } - majornum {} - majortitle {} - minornum {} - minortitle { index @WordVal @IndexBWord } - sendheader { @Full @Body } - innergap { @SectionGap } - wantindefinite { Yes } - @IndexBSection @Run - - } - - def @ContentsGap - { - @ContentsSeparate @Case { - No @Yield @SectionGap - Yes @Yield 2b - } - } - - def @ReportBodyWithoutCoverSheet force into { @ColPlace&&following } - named @Optimize { @OptimizePages } - { - - Start @Runner - // @AbstractDisplay @NoDo @AbstractPart - //@ContentsGap @ContentsPart - //@ContentsGap @SectionList @FirstSectionNumber - //@SectionGap @ReferencesBeforeAppendices @Do { - @MakeReferences @Do @ReferencesPart - } - //@AppendixGap @AppendixList @FirstAppendixNumber - //@SectionGap @EndFigureList - //@SectionGap @EndNoteList 1 - //@SectionGap @ReferencesBeforeAppendices @NoDo { - @MakeReferences @Do @ReferencesPart - } - // @MakeGlossary @Do @GlossaryPart - // @MakeIndexA @Do @IndexAPart - // @MakeIndexB @Do @IndexBPart - // @MakeIndex @Do @IndexPart - } - - def @ReportCoverSheet into { @IntroColPlace&&preceding } - named @Optimize { @OptimizePages } - { - // Start @Runner - // @TitleMaterial - //@DisplayGap @DP @AbstractPart - } - - def @ReportBodyWithCoverSheet force into { @ColPlace&&preceding } - named @Optimize { @OptimizePages } - { - - Start @Runner - //@ContentsGap @ContentsPart - //@ContentsGap @SectionList @FirstSectionNumber - //@SectionGap @ReferencesBeforeAppendices @Do { - @MakeReferences @Do @ReferencesPart - } - //@AppendixGap @AppendixList @FirstAppendixNumber - //@SectionGap @ReferencesBeforeAppendices @NoDo { - @MakeReferences @Do @ReferencesPart - } - //@SectionGap @EndFigureList - //@SectionGap @EndNoteList 1 - // @MakeGlossary @Do @GlossaryPart - // @MakeIndexA @Do @IndexAPart - // @MakeIndexB @Do @IndexBPart - // @MakeIndex @Do @IndexPart - } - - @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break - @InitialLanguage @Language @InitialSpace @Space - { @ColourCommand @InitialColour } @SetColour - { - @CoverSheet @Case { - - No @Yield { - @FootNoteThrough @Do @BeginFootNoteCounter - // Yes @BeginAllCounters {} - // Yes @BeginDisplayCounter {} - // Yes @BeginFigureCounter {} - // Yes @BeginTableCounter {} - // Yes @BeginFloaterCounter {} - // @AbstractDisplay @Do { @NoForceFull @AbstractPart } - // @ReportBodyWithoutCoverSheet - // @PageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @PageOrientation } - # extra { Yes } - @AtTop { @TitleMaterial } - @FirstPageNumber - // NonStart @Runner - // @AtEnd @Case { - dft @Yield @Null - else @Yield - @EvenPage @Orient { @PageOrientation } @AtEnd - } - } - - Yes @Yield { - @FootNoteThrough @Do @BeginFootNoteCounter - // Yes @BeginAllCounters {} - // Yes @BeginDisplayCounter {} - // Yes @BeginFigureCounter {} - // Yes @BeginTableCounter {} - // Yes @BeginFloaterCounter {} - // @SimpleOddOrEvenIntroPageList - @ColumnNumber { 1 } - @PageHeaders { Simple } - @Orient { @PageOrientation } - 1 - // @ReportCoverSheet - // @PageList - @ColumnNumber { @ColumnNumber } - @PageHeaders { @PageHeaders } - @Orient { @PageOrientation } - # extra { Yes } - @AtTop { @TitleMaterial } - @FirstPageNumber - // @ReportBodyWithCoverSheet - // NonStart @Runner - // @AtEnd @Case { - dft @Yield @Null - else @Yield - @EvenPage @Orient { @PageOrientation } @AtEnd - } - } - } - } - } - - - ####################################################################### - # # - # Sections. # - # # - ####################################################################### - - export @BeginSubSections @EndSubSections @SubSection - def @Section force into { @SectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage {} - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSectionsPlace { @Galley } - - def @EndSubSections force into { @EndSubSectionsPlace&&preceding } - {} - - macro @BeginSubSections - { - //@SubSectionGap @SubSectionList @FirstSubSectionNumber - // @EndSubSectionsPlace // - } - - def @SectionShortNum - { - @SectionNumbers @Then { - @BypassNumber @Dft { - @SectionNumbers @Num @SectionList&&@Tag @Open { num } - } - } - } - - export @BeginSubSubSections @EndSubSubSections @SubSubSection - def @SubSection force into { @SubSectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSubSectionsPlace { @Galley } - - def @EndSubSubSections force into - { @EndSubSubSectionsPlace&&preceding } - {} - - macro @BeginSubSubSections - { - //@SubSubSectionGap @SubSubSectionList @FirstSubSubSectionNumber - // @EndSubSubSectionsPlace // - } - - def @SubSectionShortNum - { - @SubSectionNumbers @Then { - @BypassNumber @Dft { - @SectionShortNum @Join @SubSectionNumbers @Num - { @SubSectionList&&@Tag @Open { num } } - } - } - } - - def @SubSubSection force into { @SubSubSectionList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSubSectionHeadingFont } - headingbreak { @SubSubSectionHeadingBreak } - headingformat { @Num @SubSubSectionHeadingFormat @Body } - incontents { @SubSubSectionInContents } - contentsindent { @SubSubSectionContentsIndent } - numbers { @SubSubSectionNumbers } - attachnum { @SubSubSectionList&&preceding @Tagged @Tag } - retrievenum { @SubSubSectionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SubSectionShortNum } - majornum {} - majortitle {} - intheorems { @SubSubSectionNumInTheorems } - indisplays { @SubSubSectionNumInDisplays } - infigures { @SubSubSectionNumInFigures } - intables { @SubSubSectionNumInTables } - infloaters { @SubSubSectionNumInFloaters } - inrunners { @SubSubSectionNumInRunners } - newpage { @NewPage } - @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSectionHeadingFont } - headingbreak { @SubSectionHeadingBreak } - headingformat { @Num @SubSectionHeadingFormat @Body } - incontents { @SubSectionInContents } - contentsindent { @SubSectionContentsIndent } - numbers { @SubSectionNumbers } - attachnum { @SubSectionList&&preceding @Tagged @Tag } - retrievenum { @SubSectionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SectionShortNum } - majornum {} - majortitle {} - intheorems { @SubSectionNumInTheorems } - indisplays { @SubSectionNumInDisplays } - infigures { @SubSectionNumInFigures } - intables { @SubSectionNumInTables } - infloaters { @SubSectionNumInFloaters } - inrunners { @SubSectionNumInRunners } - newpage { @NewPage } - @Body - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SectionHeadingFont } - headingbreak { @SectionHeadingBreak } - headingformat { @Num @SectionHeadingFormat @Body } - incontents { @SectionInContents } - contentsindent { @SectionContentsIndent } - numbers { @SectionNumbers } - attachnum { @SectionList&&preceding @Tagged @Tag } - retrievenum { @SectionList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SectionPrefix } - majornum {} - majortitle {} - intheorems { @SectionNumInTheorems } - indisplays { @SectionNumInDisplays } - infigures { @SectionNumInFigures } - intables { @SectionNumInTables } - infloaters { @SectionNumInFloaters } - inrunners { @SectionNumInRunners } - newpage { @NewPage } - @Body - - } - - - ####################################################################### - # # - # Appendices. # - # # - ####################################################################### - - export @BeginSubAppendices @EndSubAppendices @SubAppendix - def @Appendix force into { @AppendixList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage {} - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - def @EndSubAppendicesPlace { @Galley } - - def @EndSubAppendices force into { @EndSubAppendicesPlace&&preceding } - {} - - macro @BeginSubAppendices - { - //@SubAppendixGap @SubAppendixList @FirstSubAppendixNumber - // @EndSubAppendicesPlace // - } - - def @AppendixShortNum - { - @AppendixNumbers @Then { - @BypassNumber @Dft { - @AppendixNumbers @Num @AppendixList&&@Tag @Open { num } - } - } - } - - def @AppendixLongNum - { - @AppendixNumbers @Then { - @InitialLanguage @Language { - appendix @WordVal @AppendixWord @AppendixShortNum - } - } - } - - export @BeginSubSubAppendices @EndSubSubAppendices @SubSubAppendix - def @SubAppendix force into { @SubAppendixList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - def @EndSubSubAppendicesPlace { @Galley } - - def @EndSubSubAppendices force into - { @EndSubSubAppendicesPlace&&preceding } - {} - - macro @BeginSubSubAppendices - { - //@SubSubAppendixGap - @SubSubAppendixList @FirstSubSubAppendixNumber - // @EndSubSubAppendicesPlace // - } - - def @SubAppendixShortNum - { - @SubAppendixNumbers @Then { - @BypassNumber @Dft { - @AppendixShortNum @Join @SubAppendixNumbers @Num - { @SubAppendixList&&@Tag @Open { num } } - } - } - } - - def @SubSubAppendix force into { @SubSubAppendixList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - named @NewPage { No } - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubSubAppendixHeadingFont } - headingbreak { @SubSubAppendixHeadingBreak } - headingformat { @Num @SubSubAppendixHeadingFormat @Body } - incontents { @SubSubAppendixInContents } - contentsindent { @SubSubAppendixContentsIndent } - numbers { @SubSubAppendixNumbers } - attachnum { @SubSubAppendixList&&preceding @Tagged @Tag } - retrievenum { @SubSubAppendixList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @SubAppendixShortNum } - majornum {} - majortitle {} - intheorems { @SubSubAppendixNumInTheorems } - indisplays { @SubSubAppendixNumInDisplays } - infigures { @SubSubAppendixNumInFigures } - intables { @SubSubAppendixNumInTables } - infloaters { @SubSubAppendixNumInFloaters } - inrunners { @SubSubAppendixNumInRunners } - newpage { @NewPage } - @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @SubAppendixHeadingFont } - headingbreak { @SubAppendixHeadingBreak } - headingformat { @Num @SubAppendixHeadingFormat @Body } - incontents { @SubAppendixInContents } - contentsindent { @SubAppendixContentsIndent } - numbers { @SubAppendixNumbers } - attachnum { @SubAppendixList&&preceding @Tagged @Tag } - retrievenum { @SubAppendixList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @AppendixShortNum } - majornum {} - majortitle {} - intheorems { @SubAppendixNumInTheorems } - indisplays { @SubAppendixNumInDisplays } - infigures { @SubAppendixNumInFigures } - intables { @SubAppendixNumInTables } - infloaters { @SubAppendixNumInFloaters } - inrunners { @SubAppendixNumInRunners } - newpage { @NewPage } - @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @AppendixHeadingFont } - headingbreak { @AppendixHeadingBreak } - headingformat { @Num @AppendixHeadingFormat @Body } - incontents { @AppendixInContents } - contentsindent { @AppendixContentsIndent } - word { appendix @WordVal @AppendixWord } - numbers { @AppendixNumbers } - attachnum { @AppendixList&&preceding @Tagged @Tag } - retrievenum { @AppendixList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @AppendixPrefix } - majornum {} - majortitle {} - intheorems { @AppendixNumInTheorems } - indisplays { @AppendixNumInDisplays } - infigures { @AppendixNumInFigures } - intables { @AppendixNumInTables } - infloaters { @AppendixNumInFloaters } - inrunners { Yes } - newpage { @NewPage } - @Body - } - -@End @ReportSetup diff --git a/include/include/rsl b/include/include/rsl deleted file mode 100644 index 0bfa138..0000000 --- a/include/include/rsl +++ /dev/null @@ -1,119 +0,0 @@ -# Hey Emacs, this is -*- lout -*- ! -############################################################################### -# # -# Lout setup file for RSL program printing # -# # -# Version 1.0 # -# Darren Bane # -# 18 February 2003 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { rslf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @RSLSetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - # style { symbol @OrIfPlain fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { Courier } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Base } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Base } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # spacing mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/rslf b/include/include/rslf deleted file mode 100644 index 1d8e937..0000000 --- a/include/include/rslf +++ /dev/null @@ -1,504 +0,0 @@ -# Hey Emacs, this is -*- lout -*- ! -############################################################################### -# # -# Lout @RSLSetup package for formatting RSL programs # -# # -# Version 1.0 # -# Darren Bane # -# 18 February 2003 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @RSL -def @RSLSetup - named pipe { } # pipe through this first - named numbered { No } # want lines numbered? - named blanknumbered { Yes } # blank lines numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { symbol @OrIfPlain fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Base } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Base } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD - @FA @A @PartialFn @Map @PartialMap @IntChoice @ExtChoice @InfList @Interlock "$>" - - def @RSL - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lRSL" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lRSL" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - x @Case { - "is" @Yield @Sym equivalence - "exists" @Yield @Sym existential - "all" @Yield @Sym universal - else @Yield style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - def @PS # for formatting strings - right x - { - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - - - def @FA # for formatting characters from the Adobe Symbol font - left sym - right x - { - style @Case { - symbol @Yield { sym } - else @Yield { x } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - { { Symbol Base } @Font @Char sym } @FA x - } - - - # the following are any sizeable symbols for RSL - # i figure they're easier to maintain here than in prg2lout.c - def @PartialFn # -~-> - { - @OneRow { &0.2fo @Sym similar ^/0.07f @Sym arrowright } - } - - - def @Map # -m-> - { - @OneRow { @Sym arrowright ^/0.07f &0.2fo 0.7f @Font @I m } - } - - - def @PartialMap # -~m-> - { - @OneRow { &0.2fo @Sym similar ^/0.07f @Sym arrowright /0.07f &0.2fo 0.7f @Font @I m } - } - - - def @IntChoice # |^| - { - @Sym bracketlefttp &0.5wo @Sym bracketrighttp - } - - - def @ExtChoice # |=| - { - { @Sym bracketlefttp &0.0fo @Sym bracketleftbt } &0.5wo - { @Sym bracketrighttp &0.0fo @Sym bracketrightbt } - } - - - def @InfList # -inflist - { - @Sup { @Sym omega } - } - - - def @Interlock # ++ - { - { -- } &0.1fo { "||" } - } - - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @RSL - -@End @RSLSetup diff --git a/include/include/ruby b/include/include/ruby deleted file mode 100644 index 76ae107..0000000 --- a/include/include/ruby +++ /dev/null @@ -1,118 +0,0 @@ -############################################################################### -# # -# Lout setup file for Ruby program printing # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 5 April 2000 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude line # -# # -# This line causes Lout to read the definitions for this programming # -# language, and should not be touched. # -# # -############################################################################### - -@SysInclude { rubyf } - - -############################################################################### -# # -# @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @RubySetup - # pipe { } # pipe source through this - # numbered { No } # No, Yes, or a line number - # numberedblanks { Yes } # No or Yes - style { fixed @OrIfPlain fixed } # fixed, varying, or symbol - - # the following options apply when style is "fixed" - - # fixedfont { LetterGothic } # font family - # fixedsize { -1.0p } # font size - # fixedline { 1.0vx } # line-space - # fixedblanklinescale { 1.0 } # blank-line scale - # fixedspace { lout } # spacing mode - # fixedtabin { 8 } # tab interval - # fixedtabout { 8s } # tab width - - # fixedidentifiers { Base } # identifier face - # fixedkeywords { Bold } # keyword face - # fixedoperators { Base } # operator face - # fixednumbers { Base } # number face - # fixedstrings { Base } # string face - # fixedcomments { Slope } # comment face - # fixedlinenumbers { Base } # line numbers face - - # fixedidentifiersformat { @Body } # identifiers format - # fixedkeywordsformat { @Body } # keywords format - # fixedoperatorsformat { @Body } # operators format - # fixednumbersformat { @Body } # numbers format - # fixedstringsformat { @Body } # strings format - # fixedcommentsformat { @Body } # comments format - # fixedlinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "varying" - - # varyingfont { } # font family - # varyingsize { 1.0f } # font size - # varyingline { 1.0vx } # line-space - # varyingblanklinescale { 1.0 } # blank-line scale - # varyingspace { lout } # spacing mode - # varyingtabin { 8 } # tab interval - # varyingtabout { 3f } # tab width - - # varyingidentifiers { Slope } # identifier face - # varyingkeywords { Bold } # keyword face - # varyingoperators { Base } # operator face - # varyingnumbers { Base } # number face - # varyingstrings { Slope } # string face - # varyingcomments { Base } # comment face - # varyinglinenumbers { Base } # line numbers face - - # varyingidentifiersformat { @Body } # identifiers format - # varyingkeywordsformat { @Body } # keywords format - # varyingoperatorsformat { @Body } # operators format - # varyingnumbersformat { @Body } # numbers format - # varyingstringsformat { @Body } # strings format - # varyingcommentsformat { @Body } # comments format - # varyinglinenumbersformat { @Body } # line numbers format - - # the following options apply when style is "symbol" - - # symbolfont { } # font family - # symbolsize { 1.0f } # font size - # symbolline { 1.0vx } # line-space - # symbolblanklinescale { 1.0 } # blank-line scale - # symbolspace { lout } # spacing mode - # symboltabin { 8 } # tab interval - # symboltabout { 3f } # tab width - - # symbolidentifiers { Slope } # identifier face - # symbolkeywords { Bold } # keyword face - # symboloperators { Base } # operator face - # symbolnumbers { Base } # number face - # symbolstrings { Slope } # string face - # symbolcomments { Base } # comment face - # symbollinenumbers { Base } # line numbers face - - # symbolidentifiersformat { @Body } # identifiers format - # symbolkeywordsformat { @Body } # keywords format - # symboloperatorsformat { @Body } # operators format - # symbolnumbersformat { @Body } # numbers format - # symbolstringsformat { @Body } # strings format - # symbolcommentsformat { @Body } # comments format - # symbollinenumbersformat { @Body } # line numbers format -} diff --git a/include/include/rubyf b/include/include/rubyf deleted file mode 100644 index e4636d7..0000000 --- a/include/include/rubyf +++ /dev/null @@ -1,449 +0,0 @@ - -############################################################################### -# # -# Lout @RubySetup package for formatting Ruby programs # -# # -# Version 3.0 # -# Jeffrey H. Kingston # -# 5 April 2000 # -# # -# This package uses a filtered body parameter to convert program source # -# code into Lout source. The filter program is prg2lout, which is # -# distributed with Lout and should be compiled and installed wherever # -# Lout itself is. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -export @Ruby -def @RubySetup - named pipe { } # pipe through this first - named numbered { No } # want lines numbered? - named blanknumbered { Yes } # blank lines numbered? - named style - named @OrIfPlain left x right y - { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { varying @OrIfPlain fixed } # print style - - # the following options apply when style is "fixed" - named fixedfont { Courier }# font family - named fixedsize { -1.0p } # font size - named fixedline { 1.0vx } # line-space - named fixedblanklinescale { 1.0 } # blank-line scale - named fixedspace { lout } # spacing mode - named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width - - named fixedidentifiers { Base } # identifier face - named fixedkeywords { Bold } # keyword face - named fixedoperators { Base } # operator face - named fixednumbers { Base } # number face - named fixedstrings { Base } # string face - named fixedcomments { Slope } # comment face - named fixedlinenumbers { Base } # line numbers face - - named fixedidentifiersformat right @Body { @Body } # identifier format - named fixedkeywordsformat right @Body { @Body } # keyword format - named fixedoperatorsformat right @Body { @Body } # operators format - named fixednumbersformat right @Body { @Body } # number format - named fixedstringsformat right @Body { @Body } # string format - named fixedcommentsformat right @Body { @Body } # comment format - named fixedlinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "varying" - named varyingfont { } # font family - named varyingsize { 1.0f } # font size - named varyingline { 1.0vx } # line-space - named varyingblanklinescale { 1.0 } # blank-line scale - named varyingspace { lout } # spacing mode - named varyingtabin { 8 } # tab interval - named varyingtabout { 3f } # tab width - - named varyingidentifiers { Slope } # identifier face - named varyingkeywords { Bold } # keyword face - named varyingoperators { Base } # operator face - named varyingnumbers { Base } # number face - named varyingstrings { Slope } # string face - named varyingcomments { Base } # comment face - named varyinglinenumbers { Base } # line numbers face - - named varyingidentifiersformat right @Body { @Body } # identifier format - named varyingkeywordsformat right @Body { @Body } # keyword format - named varyingoperatorsformat right @Body { @Body } # operators format - named varyingnumbersformat right @Body { @Body } # number format - named varyingstringsformat right @Body { @Body } # string format - named varyingcommentsformat right @Body { @Body } # comment format - named varyinglinenumbersformat right @Body { @Body } # line nums format - - # the following options apply when style is "symbol" - named symbolfont { } # font family - named symbolsize { 1.0f } # font size - named symbolline { 1.0vx } # line-space - named symbolblanklinescale { 1.0 } # blank-line scale - named symbolspace { lout } # spacing mode - named symboltabin { 8 } # tab interval - named symboltabout { 3f } # tab width - - named symbolidentifiers { Slope } # identifier face - named symbolkeywords { Bold } # keyword face - named symboloperators { Base } # operator face - named symbolnumbers { Base } # number face - named symbolstrings { Slope } # string face - named symbolcomments { Base } # comment face - named symbollinenumbers { Base } # line numbers face - - named symbolidentifiersformat right @Body { @Body } # identifier format - named symbolkeywordsformat right @Body { @Body } # keyword format - named symboloperatorsformat right @Body { @Body } # operators format - named symbolnumbersformat right @Body { @Body } # number format - named symbolstringsformat right @Body { @Body } # string format - named symbolcommentsformat right @Body { @Body } # comment format - named symbollinenumbersformat right @Body { @Body } # line nums format - -@Begin - - export - - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD - @A "$>" - - def @Ruby - named style { style } # style - named numbered { numbered } # want numbered lines? - named blanknumbered { blanknumbered } # numbered blank lines? - named pipe { pipe } # pipe through this first - named font { dft } # font family - named size { dft } # font size - named line { dft } # line-space - named blanklinescale { dft } # blank-line scale - named space { dft } # spacing mode - named tabin { dft } # tab interval - named tabout { dft } # tab width - named identifiers { dft } # ident. font - named keywords { dft } # keyword font - named operators { dft } # operator font - named numbers { dft } # number font - named strings { dft } # string font - named comments { dft } # comment font - named linenumbers { dft } # line numbers font - body @Body # filtered, see below - @Begin - - def @Test # returns x unless x is dft - left x - named iffixed {} - named ifvarying {} - named ifsymbol {} - { - x @Case { - dft @Yield { - style @Case { - fixed @Yield { iffixed } - varying @Yield { ifvarying } - symbol @Yield { ifsymbol } - } - } - else @Yield x - } - } - - - def @Else # returns x, or y if x is dft - left x - right y - { - x @Case { - dft @Yield y - else @Yield x - } - } - - - def @InitTab - { - tabin @Test - iffixed { fixedtabin } - ifvarying { varyingtabin } - ifsymbol { symboltabin } - } - - - def @InitTabWidth - { - tabout @Test - iffixed { fixedtabout } - ifvarying { varyingtabout } - ifsymbol { symboltabout } - } - - - def @Filter - { - def wantnumbered - { - numbered @Case { - { No no } @Yield "" - { Yes yes } @Yield "-L" - else @Yield { "-L"numbered } - } - } - - def wantblanknumbered - { - blanknumbered @Case { - { No no } @Yield "-M" - { NoPrint noprint } @Yield "-N" - { Yes yes } @Yield "" - } - } - - pipe @Case { - "" @Yield { - "prg2lout -r -lRuby" wantblanknumbered wantnumbered - -i{@FilterIn} -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - else @Yield { - "cat" @FilterIn "|" pipe "|" - "prg2lout -r -lRuby" wantblanknumbered wantnumbered - -o{@FilterOut} -e{@FilterErr} - -t{@InitTab} -T{@InitTabWidth} - } - } - } - - - def @InitFontFamily - { - font @Test - iffixed { fixedfont } - ifvarying { varyingfont } - ifsymbol { symbolfont } - } - - - def @InitSize - { - size @Test - iffixed { fixedsize } - ifvarying { varyingsize } - ifsymbol { symbolsize } - } - - - def @InitLine - { - line @Test - iffixed { fixedline } - ifvarying { varyingline } - ifsymbol { symbolline } - } - - - def @InitBLS - { - blanklinescale @Test - iffixed { fixedblanklinescale } - ifvarying { varyingblanklinescale } - ifsymbol { symbolblanklinescale } - } - - - def @InitSpace - { - space @Test - iffixed { fixedspace } - ifvarying { varyingspace } - ifsymbol { symbolspace } - } - - - def @PI # for formatting identifiers - right x - { - style @Case { - fixed @Yield fixedidentifiersformat { - { identifiers @Else fixedidentifiers } @Font x - } - varying @Yield varyingidentifiersformat { - { identifiers @Else varyingidentifiers } @Font x - } - symbol @Yield symbolidentifiersformat { - { identifiers @Else symbolidentifiers } @Font x - } - } - } - - - def @PK # for formatting keywords - right x - { - style @Case { - fixed @Yield fixedkeywordsformat { - { keywords @Else fixedkeywords } @Font x - } - varying @Yield varyingkeywordsformat { - { keywords @Else varyingkeywords } @Font x - } - symbol @Yield symbolkeywordsformat { - { keywords @Else symbolkeywords } @Font x - } - } - } - - - def @PO # for formatting operators - right x - { - style @Case { - fixed @Yield fixedoperatorsformat { - { operators @Else fixedoperators } @Font x - } - varying @Yield varyingoperatorsformat { - { operators @Else varyingoperators } @Font x - } - symbol @Yield symboloperatorsformat { - { operators @Else symboloperators } @Font x - } - } - } - - - def @PN # for formatting numbers - right x - { - style @Case { - fixed @Yield fixednumbersformat { - { numbers @Else fixednumbers } @Font x - } - varying @Yield varyingnumbersformat { - { numbers @Else varyingnumbers } @Font x - } - symbol @Yield symbolnumbersformat { - { numbers @Else symbolnumbers } @Font x - } - } - } - - - export "'''" - def @PS # for formatting strings - body x - { - def "'''" { "'''" } - - style @Case { - fixed @Yield fixedstringsformat { - { strings @Else fixedstrings } @Font x - } - varying @Yield varyingstringsformat { - { strings @Else varyingstrings } @Font x - } - symbol @Yield symbolstringsformat { - { strings @Else symbolstrings } @Font x - } - } - } - - - def @PC # for formatting comments - right x - { - style @Case { - fixed @Yield fixedcommentsformat { - { comments @Else fixedcomments } @Font x - } - varying @Yield varyingcommentsformat { - { comments @Else varyingcomments } @Font x - } - symbol @Yield symbolcommentsformat { - { comments @Else symbolcomments } @Font x - } - } - } - - - def @PL # for formatting line numbers - right x - { - style @Case { - fixed @Yield fixedlinenumbersformat { - { linenumbers @Else fixedlinenumbers } @Font x - } - varying @Yield varyinglinenumbersformat { - { linenumbers @Else varyinglinenumbers } @Font x - } - symbol @Yield symbollinenumbersformat { - { linenumbers @Else symbollinenumbers } @Font x - } - } - } - - - def @PA # for formatting asterisks - { - @PO @BackEnd @Case { - PlainText @Yield "*" - else @Yield { "0.5w" @VShift "*" } - } - } - - - def @PM # for formatting minus signs - { - @PO @BackEnd @Case { - PlainText @Yield "-" - else @Yield style @Case { - fixed @Yield "-" - else @Yield { { Symbol Base } @Font @Char "minus" } - } - } - } - - - def @PD # for formatting dots, if wanted larger - { - @PO @BackEnd @Case { - PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } - } - } - - - def @A # get characters from the Adobe Symbol font - named sym {} - right x - { - style @Case { - symbol @Yield { { Symbol Base } @Font @Char sym } - else @Yield { x } - } - } - - - macro "$>" { {} & } - - - Programming @Language - { @InitFontFamily Base @InitSize } @Font @InitSpace @Space - { @InitLine lines "blanklinescale" @InitBLS } @Break @Body - - @End @Ruby - -@End @RubySetup diff --git a/include/include/russian b/include/include/russian deleted file mode 100644 index 0652a61..0000000 --- a/include/include/russian +++ /dev/null @@ -1,12 +0,0 @@ -################################################################# -# # -# russian # -# # -# This file includes everything you need for Russian. # -# # -# This file has been placed in the public domain. # -# # -################################################################# - -# Commented out because these fonts are not distributed with Lout. -# @SysInclude { russian.fd } diff --git a/include/include/russian.fd b/include/include/russian.fd deleted file mode 100644 index 5a790cb..0000000 --- a/include/include/russian.fd +++ /dev/null @@ -1,40 +0,0 @@ -################################################################################################################## -# # -# Russian font definitions. Use a very wide window to see them clearly. # -# # -# This file has been placed in the public domain by its author. # -# # -# Lout font Lout font PostScript PostScript font metrics Lout character Recode/ # -# family name face name font name (formerly .AFM) file name mapping file NoRecode # -# # -################################################################################################################## - -fontdef Academy Base { Academy Aca koi8r.LCM Recode } -fontdef Academy Slope { Academy-Italic Aca-It koi8r.LCM Recode } -fontdef Academy Bold { Academy-Bold Aca-Bd koi8r.LCM Recode } -fontdef Academy BoldSlope { Academy-Italic Aca-It koi8r.LCM Recode } -fontdef Academy Italic { Academy-Italic Aca-It koi8r.LCM Recode } - -fontdef Antiqua Base { Antiqua Ant koi8r.LCM Recode } -fontdef Antiqua Slope { Antiqua-Italic Ant-It koi8r.LCM Recode } -fontdef Antiqua Bold { Antiqua-Bold Ant-Bd koi8r.LCM Recode } -fontdef Antiqua BoldSlope { Antiqua-Italic Ant-It koi8r.LCM Recode } -fontdef Antiqua Italic { Antiqua-Italic Ant-It koi8r.LCM Recode } - -fontdef College Base { College Col koi8r.LCM Recode } -fontdef College Slope { College-Italic Col-It koi8r.LCM Recode } -fontdef College Bold { College-Bold Col-Bd koi8r.LCM Recode } -fontdef College BoldSlope { College-Italic Col-It koi8r.LCM Recode } -fontdef College Italic { College-Italic Col-It koi8r.LCM Recode } - -fontdef Magazine Base { Magazine Mag koi8r.LCM Recode } -fontdef Magazine Slope { Magazine-Italic Mag-It koi8r.LCM Recode } -fontdef Magazine Bold { Magazine-Bold Mag-Bd koi8r.LCM Recode } -fontdef Magazine BoldSlope { Magazine-Italic Mag-It koi8r.LCM Recode } -fontdef Magazine Italic { Magazine-Italic Mag-It koi8r.LCM Recode } - -fontdef Textbook Base { Textbook Txt koi8r.LCM Recode } -fontdef Textbook Slope { Textbook-Italic Txt-It koi8r.LCM Recode } -fontdef Textbook Bold { Textbook-Bold Txt-Bd koi8r.LCM Recode } -fontdef Textbook BoldSlope { Textbook-Italic Txt-It koi8r.LCM Recode } -fontdef Textbook Italic { Textbook-Italic Txt-It koi8r.LCM Recode } diff --git a/include/include/slides b/include/include/slides deleted file mode 100644 index d1136fb..0000000 --- a/include/include/slides +++ /dev/null @@ -1,412 +0,0 @@ -############################################################################### -# # -# Lout setup file for overhead transparencies # -# # -# Jeffrey H. Kingston # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - - -############################################################################### -# # -# @SysInclude commands for standard packages. # -# # -############################################################################### - - @SysInclude { langdefs } # language definitions - @SysInclude { bsf } # BasicSetup package - @SysInclude { dsf } # DocumentSetup package - @SysInclude { slidesf } # OverheadSetup extension - - -############################################################################### -# # -# @Include command for reading personal definitions from current directory. # -# # -############################################################################### - - @Include { mydefs } - - -############################################################################### -# # -# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @BasicSetup - # @InitialFont { Times Base 12p } # initial font - @InitialFont { Times Base 20p } # initial font - # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}} - @InitialBreak { ragged 1.2fx nohyphen } # initial break - # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent - # @InitialSpace { lout } # initial space style - # @InitialLanguage { English } # initial language - # @InitialColour { black } # initial colour - # @InitialBackgroundColour { white } # initial background colour - # @OptimizePages { No } # optimize page breaks? - # @HeadingFont { Bold } # font for @Heading - # @FixedWidthFont { Courier Base -1p } # font for @F - # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs - # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP - # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays - # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent - # @DefaultIndent { 0.5rt } # @Display indent - # @DisplayNumStyle { (num) } # style of display numbers - # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent - # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent - # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists - # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items - # @ListIndent { 0s } # indent of list items - # @ListRightIndent { 0s } # right indent of list items - # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags - # @ListLabelRight { No } # right-adjust list labels - # @ListLabelRightGap { 2s } # gap when right-adjusting - # @ListFont { } # font of list items - # @ListBreak { } # break style of list items - # @NumberSeparator { . } # separates nums like 2.3.7 - # @CrossLinkFormat { @Body } # format of cross links - # @ExternalLinkFormat { @Body } # format of external links -} - - -############################################################################### -# # -# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @DocumentSetup - # @PageType { A4 @OrIfPlain Other} # page type (width, height) - # @PageWidth { 80s } # page width if type Other - # @PageHeight { 66f } # page height if type Other - # @PageOrientation { Portrait } # Portrait, Landscape, etc. - # @PageBackground { } # background of each page - # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages - # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages - @FootMargin { 5.00c } # bottom margin of all pages - # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages - # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages - # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages - # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages - # @OddLeftBodyMargin { 0c } # extra margin for page body - # @OddRightBodyMargin { 0c } # extra margin for page body - # @EvenLeftBodyMargin { 0c } # extra margin for page body - # @EvenRightBodyMargin{ 0c } # extra margin for page body - # @PageBoxType { None } # None Box CurveBox ShadowBox - # @PageBoxMargin { 1.00c } # page box margin - # @PageBoxLineWidth { } # page box line thickness - # @PageBoxPaint { none } # page box paint - # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox - # @PageEnclose { @Body } # enclose every page in this - # @ColumnNumber { 1 } # number of columns (1 to 10) - # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap - - # @FigureLocation { PageTop } # default figure location - # @FigureFormat { @CC @Body } # default figure format - # @FigureWord { figure } # "Figure" word else anything - # @FigureNumbers { Arabic } # method of numbering figures - # @FigureCaptionPos { Below } # Above or Below - # @FigureCaptionFont { -2p } # figure caption font - # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break - # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFigureContents { No } # list of figures at start - - # @TableLocation { PageTop } # default table location - # @TableFormat { @CC @Body } # default table format - # @TableWord { table } # "Table" word else anything - # @TableNumbers { Arabic } # method of numbering tables - # @TableCaptionPos { Below } # Above or Below - # @TableCaptionFont { -2p } # table caption font - # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break - # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeTableContents { No } # list of tables at start - - # @FloaterLocation { PageTop } # default floater location - # @FloaterFormat { @CC @Body } # default floater format - # @FloaterWord { floater } # "Floater" word else anything - # @FloaterNumbers { Arabic } # method of numbering floaters - # @FloaterCaptionPos { Below } # Above or Below - # @FloaterCaptionFont { -2p } # floater caption font - # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break - # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption } - # @MakeFloaterContents{ No } # list of floaters at start - - # @MakeContents { No } # make contents? Yes or No - # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry - @ContentsGapAbove { 0.00v @OrIfPlain 1f } # extra gap above major entry - # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry - @ContentsFont { Base } # font for major entry - # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry - # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry - # @ContentsFormat { number @DotSep title } # contents entry format - # @ContentsLeader { .. } # leader symbol in contents - # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders - # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width - - # @MakeReferences { Yes } # make references? Yes or No - # @RefCiteStyle { [cite] } # citation style - # @RefCiteLabels { @RefNum } # citation items - # @RefNumbers { Arabic } # reference numbers - # @RefListFormat { Labels } # NoLabels, Labels, etc. - # @RefListLabels { [@RefNum] } # ref list label format - # @RefListTitle { references } # title of reference list - # @ChapRefListTitle { references } # title of chapter ref list - # @RefListIndent { 0s } # indent to left of labels - # @RefListRightIndent { 0s } # indent to right of items - # @RefListGap { @ListGap } # gap between ref list items - # @RefListFont { } # font used in reference list - # @RefListBreak { } # break style of ref list - # @RefListLabelWidth { @ListLabelWidth } # Labels column width - # @RefListSortKey { @Tag } # sorting key - - # @MakeGlossary { No } # make glossary? Yes or No - # @GlossaryText { @Null } # glossary initial text - # @GlossaryFont { } # glossary entries font - # @GlossaryBreak { } # glossary entries break - # @GlossaryFormat { +3p @Font @S @Name # glossary entries format - # @Right @I { @Word&&page @PageNum } - # @DP @RawIndentedDisplay @Body } - # @GlossaryGap { @DisplayGap } # gap between glossary entries - # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10) - # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap - # @InGlossaryFont { smallcaps } # font for @InGlossary - # @InGlossaryFormat { @Body } # format for @InGlossary - - # @MakeIndex { No } # make index? Yes or No - # @MakeIndex { No } # make index? Yes or No - # @IndexText { @Null } # index initial text - # @IndexFont { } # index entries font - # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexFormat { @Body } # @Index format - # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format - # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format - # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexTypeMain { @B @PageNum } # Main pagenum format - # @IndexTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexRangeFormat { @From--@To } # index page range format - # @IndexColumnNumber { 2 } # index columns (1 to 10) - # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap - # @IndexCtd { Yes } # include (ctd.) lines - # @IndexCtdWord { continued } # "ctd." in current lang. - # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexSpacerAbove { 2v } # space above index spacer - # @IndexSpacerBelow { 1v } # space below index spacer - # @IndexSpacerFont { +3p } # font of index spacer - # @IndexSpacerFormat { @Body } # format of index spacer - - # @MakeIndexA { No } # make index A? Yes or No - # @IndexAText { @Null } # index A initial text - # @IndexAFont { } # index A entries font - # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexAFormat { @Body } # @IndexA format - # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format - # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format - # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexATypeMain { @B @PageNum } # Main pagenum format - # @IndexATypeSpecial { @I @PageNum } # Special pagenum format - # @IndexARangeFormat { @From--@To } # index page range format - # @IndexAColumnNumber { 2 } # index A columns (1 to 10) - # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap - # @IndexACtd { Yes } # include (ctd.) lines - # @IndexACtdWord { continued } # "ctd." in current lang. - # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexASpacerAbove { 2v } # space above index A spacer - # @IndexASpacerBelow { 1v } # space below index A spacer - # @IndexASpacerFont { +3p } # font of index A spacer - # @IndexASpacerFormat { @Body } # format of index A spacer - - # @MakeIndexB { No } # make index B? Yes or No - # @IndexBText { @Null } # index B initial text - # @IndexBFont { } # index B entries font - # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break - # @IndexBFormat { @Body } # @IndexB format - # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format - # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format - # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format - # @IndexBTypeMain { @B @PageNum } # Main pagenum format - # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format - # @IndexBRangeFormat { @From--@To } # index page range format - # @IndexBColumnNumber { 2 } # index B columns (1 to 10) - # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap - # @IndexBCtd { Yes } # include (ctd.) lines - # @IndexBCtdWord { continued } # "ctd." in current lang. - # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd. - # @IndexBSpacerAbove { 2v } # space above index B spacer - # @IndexBSpacerBelow { 1v } # space below index B spacer - # @IndexBSpacerFont { +3p } # font of index B spacer - # @IndexBSpacerFormat { @Body } # format of index B spacer - - # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures - # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text - - # @FootNoteNumbers { Arabic } # footnote numbers - # @FootNoteThrough { No } # numbered through chapter? - # @FootNoteLocation { ColFoot } # where the footnote appears - # @FootNoteFont { 0.80f } # font for footnotes - # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes - # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format - # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line - # @FootAboveGap { @DisplayGap } # gap above footnote line - # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes - # @MarginNoteFont { 0.80f } # font of margin notes - # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes - # @MarginNoteHGap { 0.5c } # horizontal gap to notes - # @MarginNoteVGap { @DisplayGap } # min vertical gap between - # @MarginNoteWidth { 1.50c } # width of margin notes - # @EndNoteNumbers { Arabic } # endnote numbers - # @EndNoteFont { 0.80f } # font of endnotes - # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes - # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format - # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes - - # @TheoremWord { theorem } # "Theorem" word, etc. - # @TheoremTitleFormat { (title) } # only if title present - # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @DefinitionWord { definition } # "Definition" word, etc. - # @DefinitionTitleFormat { (title) } # only if title present - # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ClaimWord { claim } # "Claim" word, etc. - # @ClaimTitleFormat { (title) } # only if title present - # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @PropositionWord { proposition } # "Proposition" word, etc. - # @PropositionTitleFormat { (title) } # only if title present - # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @LemmaWord { lemma } # "Lemma" word, etc. - # @LemmaTitleFormat { (title) } # only if title present - # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @CorollaryWord { corollary } # "Corollary" word, etc. - # @CorollaryTitleFormat { (title) } # only if title present - # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ExampleWord { example } # "Example" word, etc. - # @ExampleTitleFormat { (title) } # only if title present - # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body } - # @ProofWord { proof } # "Proof" word, etc. - - # @PageHeaders { Simple } # None Simple Titles NoTitles - @PageHeaders { Titles } # None Simple Titles NoTitles - # @PageNumbers { Arabic } # page numbers - # @FirstPageNumber { 1 } # number of first page - # @IntroPageNumbers { Roman } # intro page numbers - # @IntroFirstPageNumber{ 1 } # number of first intro page - # @StructPageNums { No } # make structured page numbers - # @PageNumberFormat { number } # format of all page numbers - - # @OddTop { @Centre{- @PageNum -} } # Simple page headers - # @OddFoot { @Null } - # @EvenTop { @Centre{- @PageNum -} } - # @EvenFoot { @Null } - # @StartOddTop { @Null } - # @StartOddFoot { @Null } - # @StartEvenTop { @Null } - # @StartEvenFoot { @Null } - # @IntroOddTop { @Null } - # @IntroOddFoot { @Centre @PageNum } - # @IntroEvenTop { @Null } - # @IntroEvenFoot { @Centre @PageNum } - # @IntroStartOddTop { @Null } - # @IntroStartOddFoot { @Null } - # @IntroStartEvenTop { @Null } - # @IntroStartEvenFoot { @Null } - - # Titles, NoTitles headers - # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum } - @RunningOddTop { 8p @Font {@MajorTitle @MinorNum @Right @PageNum} } - # @RunningOddFoot { @Null } - @RunningOddFoot { @Null } - # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} } - @RunningEvenTop { 8p @Font {@MajorTitle @MinorNum @Right @PageNum} } - # @RunningEvenFoot { @Null } - @RunningEvenFoot { @Null } - # @RunningStartOddTop { @Null } - @RunningStartOddTop { 8p @Font { @MajorTitle @MinorNum @Right @PageNum } } - # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum } - @RunningStartOddFoot { @Null } - # @RunningStartEvenTop { @Null } - @RunningStartEvenTop { 8p @Font { @MajorTitle @MinorNum @Right @PageNum } } - # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum } - @RunningStartEvenFoot { @Null } - # @RunningIntroOddTop { @Null } - # @RunningIntroOddFoot { @Right @PageNum } - # @RunningIntroEvenTop { @Null } - # @RunningIntroEvenFoot { @PageNum } - # @RunningIntroStartOddTop { @Null } - # @RunningIntroStartOddFoot { @Null } - # @RunningIntroStartEvenTop { @Null } - # @RunningIntroStartEvenFoot { @Null } -} - - -############################################################################### -# # -# The @OverheadSetup @Use clause - options specific to overheads. # -# # -############################################################################### - -@Use { @OverheadSetup - # @DateLine { No } # No, Yes, or a date - # @ContentsWord { contents } # word for "Contents" - # @LectureWord { lecture } # word for "Lecture" - # @OverheadWord { } # word for "Overhead" - # @LectureNumbers { Arabic } # kind of lecture numbers - # @FirstLectureNumber { 1 } # first lecture num - # @OverheadNumbers { Arabic } # kind of overhead numbers - # @FirstOverheadNumber { 1 } # first overhead num - # @TitlePageFont { Helvetica Base 1.5f } # title page font - # @TitleFormat { @Center clines @Break title } # title line - # @AuthorFormat { @Center clines @Break author } # author line - # @InstitutionFormat { @Center clines @Break @I institution } # inst - # @DateLineFormat { @Center date } # date line - # @AboveTitleGap { 0.5i } # gap above title - # @AboveAuthorGap { 1.0i } # gap above author - # @AboveInstitutionGap { 0.5i } # gap above inst - # @AboveDateLineGap { 0.5i } # gap above date - # @LectureHeadingFont { Bold 1.2f } # lecture head font - # @LectureHeadingBreak { clines 1.2fx nohyphen } # lecture head break - # @LectureHeadingFormat { @Centre number @DP @Centre title @DP } - # @AboveLectureGap { 3.0f } # gap above lec head - # @OverheadHeadingFont { Bold } # overhead head font - # @OverheadHeadingBreak { 1.2fx nohyphen } # overhead head break - # @OverheadHeadingFormat { @Centre title @DP } # overhead head format - # @OverheadFormat { @Body } # overhead body format - # @AboveOverheadGap { 1.0f } # gap above over head - # @LectureInContents { Yes } # add lectures to contents - # @OverheadInContents { No } # add overheads to contents - # @ReferencesInContents { Yes } # add references to contents - # @LectureContentsIndent { 0f } # contents indent of lectures - # @OverheadInLectureContentsIndent { 2f } # .. of overhead within lec - # @OverheadContentsIndent { 0f } # .. of stand-alone overhead - # @ReferencesContentsIndent { 0f } # .. of references - # @LectureNumInTheorems { Yes } # theorem num has lecture num - # @OverheadNumInTheorems { No } # theorem num has overhead num - # @LectureNumInDisplays { Yes } # display num has lecture num - # @OverheadNumInDisplays { No } # display num has overhead num - # @LectureNumInFigures { Yes } # figure num has lecture num - # @OverheadNumInFigures { No } # figure num has overhead num - # @LectureNumInTables { Yes } # table num has lecture num - # @OverheadNumInTables { No } # table num has overhead num - # @LectureNumInFloaters { Yes } # floater num has lecture num - # @OverheadNumInFloaters { No } # floater num has overhead num - # @LectureNumInRunners { Yes } # running head has lecture num - # @OverheadNumInRunners { Yes } # running head has overhd num - # @LecturePrefix { } # for structured page nums - # @OverheadPrefix { } # for structured page nums -} - - -############################################################################### -# # -# @Database (and @SysDatabase) clauses go here. # -# # -############################################################################### - -@SysDatabase @FontDef { fontdefs } # font definitions -@SysDatabase @RefStyle { refstyle } # reference printing styles diff --git a/include/include/slidesf b/include/include/slidesf deleted file mode 100644 index 0759817..0000000 --- a/include/include/slidesf +++ /dev/null @@ -1,414 +0,0 @@ - -########################################################################### -# # -# @OverheadSetup extension to @DocumentSetup. # -# # -# Jeffrey H. Kingston # -# # -# This package extends DocumentSetup with definitions for overheads. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -########################################################################### - -extend @BasicSetup @DocumentSetup -export @OverheadTransparencies @Lecture @Overhead -def @OverheadSetup - named @DateLine { No } - named @ContentsWord { contents } - named @LectureWord { lecture } - named @OverheadWord { } - named @LectureNumbers { Arabic } - named @FirstLectureNumber { 1 } - named @OverheadNumbers { Arabic } - named @FirstOverheadNumber { 1 } - named @TitlePageFont { Helvetica Base } - named @TitleFormat - right title { @Center clines @Break title } - named @AuthorFormat - right author { @Center clines @Break author } - named @InstitutionFormat - right institution { @Center clines @Break @I institution } - named @DateLineFormat - right date { @Center date } - named @AboveTitleGap { 0.5i } - named @AboveAuthorGap { 1.0i } - named @AboveInstitutionGap { 0.5i } - named @AboveDateLineGap { 0.5i } - named @LectureHeadingFont { Bold 1.2f } - named @LectureHeadingBreak { 1.2fx nohyphen } - named @LectureHeadingFormat - left number right title { @Centre number @DP @Centre title @DP } - named @AboveLectureGap { 3.0f } - named @OverheadHeadingFont { Bold } - named @OverheadHeadingBreak { 1.2fx nohyphen } - named @OverheadHeadingFormat - left number right title { @Centre title @DP } - named @OverheadFormat - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body - { @Body } - named @AboveOverheadGap { 1.0f } - named @LectureInContents { Yes } - named @OverheadInContents { No } - named @ReferencesInContents { Yes } - named @LectureContentsIndent { 0f } - named @OverheadContentsIndent { 0f } - named @OverheadInLectureContentsIndent { 2f } - named @ReferencesContentsIndent { 0f } - named @LectureNumInTheorems { Yes } - named @OverheadNumInTheorems { No } - named @LectureNumInDisplays { Yes } - named @OverheadNumInDisplays { No } - named @LectureNumInFigures { Yes } - named @OverheadNumInFigures { No } - named @LectureNumInTables { Yes } - named @OverheadNumInTables { No } - named @LectureNumInFloaters { Yes } - named @OverheadNumInFloaters { No } - named @LectureNumInRunners { Yes } - named @OverheadNumInRunners { Yes } - named @LecturePrefix { } - named @OverheadPrefix { } -@Begin - - ####################################################################### - # # - # Symbols for passing full title to running headers. # - # # - ####################################################################### - - export @Val - def @StoreTitle left @Tag named @Val {} { @Null } - - def @SaveTitle right x { save @StoreTitle @Val { x } } - - def @GetTitle { @StoreTitle&&save @Open { @Val } } - - - ####################################################################### - # # - # Lists of lectures and overheads. # - # # - ####################################################################### - - export num - def @LectureList named @Tag {} named num {} - { - @Galley - //1.1b @LectureList num { @Next num } - } - - export num - def @OverheadsList named @Tag {} named num {} - { - @Galley - //1.1b @OverheadsList num { @Next num } - } - - export num - def @LecOverheadsList named @Tag {} right num - { - @Galley - //1.1b @LecOverheadsList @Next num - } - - - ####################################################################### - # # - # @Full - this sends text to a full-width place. # - # # - ####################################################################### - - def @Full force into { @FullPlace&&following } right x { x } - - - ####################################################################### - # # - # @OverheadTransparencies. # - # # - ####################################################################### - - def @OverheadTransparencies - named @Title {} - named @RunningTitle { dft } - named @Author {} - named @Institution {} - named @DateLine { @DateLine } - named @InitialFont { @InitialFont } - named @InitialBreak { @InitialBreak } - named @InitialOutdent { @InitialOutdent } - named @InitialSpace { @InitialSpace } - named @InitialLanguage { @InitialLanguage } - named @PageOrientation { @PageOrientation } - named @PageHeaders { @PageHeaders } - named @FirstPageNumber { @FirstPageNumber } - named @FirstOverheadNumber { @FirstOverheadNumber } - named @FirstLectureNumber { @FirstLectureNumber } - named @OptimizePages { @OptimizePages } - { - - def @DatePart - { - @DateLine @Case { - No @Yield { @Null } - Yes @Yield { @Date } - else @Yield { @DateLine } - } - } - - def @TitlePart - { - @TitlePageFont @Font @InitialBreak @Break - @InitialSpace @Space clines @Break { - //0.5i - //@AboveTitleGap 1.5f @Font @InitialBreak @Break - @InitialSpace @Space @TitleFormat @Title | - //@AboveAuthorGap @AuthorFormat @Author | - //@AboveInstitutionGap @InstitutionFormat @Institution | - //@AboveDateLineGap @DateLineFormat @DatePart | - } - } - - def @ContentsPart - { - @DP |0.5rt @LectureHeadingFont @Font @LectureHeadingBreak @Break - @LectureHeadingFormat { contents @WordVal @ContentsWord } | - @DP @ContentsSection - } - - def @ReferencesPart - named @Tag {} - { - @DP |0.5rt @LectureHeadingFont @Font @LectureHeadingBreak @Break - @LectureHeadingFormat { @RefHeading @RefListTitle } | - // @PageMark @Tag - // @ReferencesInContents @ContentsEntry - indent { @ReferencesContentsIndent } - title { @RefHeading @RefListTitle } - pagenum { @PageOf @Tag } - // Start @Runner @MajorTitle { @GetTitle } - @DP @ReferencesSection - // NonStart @Runner @MajorTitle { @GetTitle } - } - - def @OverheadsBody force into { @ColPlace&&preceding } - named @Optimize { @OptimizePages } - { - @Title @Case { - "" @Yield @Null - else @Yield @TitlePart - } - //1.1b @MakeContents @Case { - { Yes Bypass } @Yield @ContentsPart - else @Yield @Null - } - // Start @Runner @MajorTitle { @GetTitle } - //1.1b @OverheadsList num { @FirstOverheadNumber } - //1.1b @LectureList num { @FirstLectureNumber } - //1.1b @ReferencesPart - } - - @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break - @InitialLanguage @Language @InitialSpace @Space - { @ColourCommand @InitialColour } @SetColour - { - @SaveTitle { - @InitialLanguage @Language { @RunningTitle @Dft @Title } - } - - // Yes @BeginAllCounters {} - // Yes @BeginDisplayCounter {} - // Yes @BeginFigureCounter {} - // Yes @BeginFigureCounter {} - // @PageList - @ColumnNumber { 1 } - @PageHeaders { @PageHeaders } - @Orient { @PageOrientation } - extra { Yes } - @FirstPageNumber - // @OverheadsBody - // Start @Runner - } - } - - - ####################################################################### - # # - # Overheads. # - # # - ####################################################################### - - def @Overhead force into { @OverheadsList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @Format - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body { @OverheadFormat @Body } - named @InitialLanguage {} - named @BypassNumber { dft } - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { @Title } - majortitle { @GetTitle } - runningtitle { @RunningTitle } - aboveheadinggap { @AboveOverheadGap } - headingfont { @OverheadHeadingFont } - headingbreak { @OverheadHeadingBreak } - headingformat { @Num @OverheadHeadingFormat @Body } - incontents { @OverheadInContents } - contentsindent { @OverheadContentsIndent } - numbers { @OverheadNumbers } - attachnum { @OverheadsList&&preceding @Tagged @Tag } - retrievenum { @OverheadsList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - pnprefix { @OverheadPrefix } - intheorems { @OverheadNumInTheorems } - indisplays { @OverheadNumInDisplays } - infigures { @OverheadNumInFigures } - intables { @OverheadNumInTables } - infloaters { @OverheadNumInFloaters } - sendheader { @Full @Body } - innergap { @DisplayGap } - inrunners { @OverheadNumInRunners } - @Format @Body - } - - - ####################################################################### - # # - # Lectures containing overheads. # - # # - ####################################################################### - - export @BeginOverheads @EndOverheads @Overhead - def @Lecture force into { @LectureList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @InitialLanguage {} - named @BypassNumber { dft } - body @Body - { - def @SaveTitle { @Title } - - def @EndOverheadsPlace { @Galley } - - def @EndOverheads force into { @EndOverheadsPlace&&preceding } - {} - - macro @BeginOverheads - { //1.1b @LecOverheadsList 1 - // @EndOverheadsPlace // - } - - def @LectureNum - { - @LectureNumbers @Then { - @BypassNumber @Dft { - @LectureNumbers @Num @LectureList&&@Tag @Open { num } - } - } - } - - def @Overhead force into { @LecOverheadsList&&preceding } - named @Tag {} - named @Title {} - named @RunningTitle { dft } - named @Format - named @II right x { |@DisplayIndent x | } - named @QQ right x { |@DisplayIndent x |@DisplayIndent } - named @CC right x { |0.5rt x | } - named @RR right x { |1.0rt x | } - right @Body { @OverheadFormat @Body } - named @InitialLanguage { @InitialLanguage } - named @BypassNumber { dft } - body @Body - { - - @LargeScaleStructure - tag { @Tag } - type { Minor } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - headingfont { @OverheadHeadingFont } - headingbreak { @OverheadHeadingBreak } - headingformat { @Num @OverheadHeadingFormat @Body } - incontents { @OverheadInContents } - contentsindent { @OverheadInLectureContentsIndent } - numbers { @OverheadNumbers } - attachnum { @LecOverheadsList&&preceding @Tagged @Tag } - retrievenum { @LecOverheadsList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - prefix { @LectureNum } - majornum { @LectureNum } - majortitle { @GetTitle } - minortitle { @SaveTitle } - intheorems { @OverheadNumInTheorems } - indisplays { @OverheadNumInDisplays } - infigures { @OverheadNumInFigures } - inrunners { @OverheadNumInRunners } - @Format @Body - - } - - @LargeScaleStructure - tag { @Tag } - type { Major } - initiallanguage { @InitialLanguage } - title { @Title } - runningtitle { @RunningTitle } - aboveheadinggap { @AboveLectureGap } - headingfont { @LectureHeadingFont } - headingbreak { @LectureHeadingBreak } - headingformat { @Num @LectureHeadingFormat @Body } - incontents { @LectureInContents } - contentsindent { @LectureContentsIndent } - word { lecture @WordVal @LectureWord } - numbers { @LectureNumbers } - attachnum { @LectureList&&preceding @Tagged @Tag } - retrievenum { @LectureList&&@Tag @Open { num } } - bypassnumber { @BypassNumber } - pnprefix { @LecturePrefix } - majortitle { @GetTitle } - intheorems { @LectureNumInTheorems } - indisplays { @LectureNumInDisplays } - infigures { @LectureNumInFigures } - intables { @LectureNumInTables } - infloaters { @LectureNumInFloaters } - sendheader { @Full @Body } - innergap { @DisplayGap } - inrunners { @LectureNumInRunners } - @Body - - } - -@End @OverheadSetup diff --git a/include/include/tab b/include/include/tab deleted file mode 100644 index 3c30de5..0000000 --- a/include/include/tab +++ /dev/null @@ -1,31 +0,0 @@ -############################################################################### -# # -# Lout setup file for table printing # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# This file has been placed in the public domain by its author. # -# # -# This package is OBSOLETE; use tbl instead. # -# # -############################################################################### - - -############################################################################### -# # -# The @SysInclude { tabf } line # -# # -# This line causes Lout to read the definitions for tables, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { tabf } - - -############################################################################### -# # -# This package does not offer default options that can be changed. # -# # -############################################################################### diff --git a/include/include/tabf b/include/include/tabf deleted file mode 100644 index 219afd0..0000000 --- a/include/include/tabf +++ /dev/null @@ -1,953 +0,0 @@ - -############################################################################### -# # -# Lout @Tab package for formatting tables (Version 2.0) # -# # -# Version 1.0 by Jeffrey H. Kingston, September 1991. # -# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. # -# Version 3.0 by Jeffrey H. Kingston, 13 September 1993. # -# # -# The only change between Versions 2 and 3 is to make the linewidth # -# option accept a Lout length rather than a Fig length. See the User's # -# Guide for user information. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -@SysPrependGraphic { "tabf.lpg" } - -export @CC @RR @Rule @DoubleRule @Line @DoubleLine @NP - @Rowa @Rowb @Rowc @Rowd @Rowe @Rowf @Rowg @Rowh @Rowi @Rowj - @MarkRowa @MarkRowb @MarkRowc @MarkRowd @MarkRowe @MarkRowf - @MarkRowg @MarkRowh @MarkRowi @MarkRowj - @FirstRowa @FirstRowb @FirstRowc @FirstRowd @FirstRowe @FirstRowf - @FirstRowg @FirstRowh @FirstRowi @FirstRowj - -def @Tab - - named above { no } - named below { no } - named between { no } - named side { no } - named hmargin { 0.3c } - named vmargin { - @BackEnd @Case { - PostScript @Yield 0.2v - PDF @Yield 0.2v # VT: PDF case added - PlainText @Yield 0.5v - } - } - - named linewidth - named c left x { - @BackEnd @Case { - PostScript @Yield { x" cm" } - PDF @Yield { "__mul(__cm, "x")" } - } - } - named i left x { - @BackEnd @Case { - PostScript @Yield { x" in" } - PDF @Yield { "__mul(__in, "x")" } - } - } - named e left x { - @BackEnd @Case { - PostScript @Yield { x" em" } - PDF @Yield { "__mul(__em, "x")" } - } - } - named p left x { - @BackEnd @Case { - PostScript @Yield { x" pt" } - PDF @Yield { "__mul(__pt, "x")" } - } - } - named f left x { - @BackEnd @Case { - PostScript @Yield { x" ft" } - PDF @Yield { "__mul(__loutf, "x")" } - } - } - named s left x { - @BackEnd @Case { - PostScript @Yield { x" sp" } - PDF @Yield { "__mul(__louts, "x")" } - } - } - named v left x { - @BackEnd @Case { - PostScript @Yield { x" vs" } - PDF @Yield { "__mul(__loutv, "x")" } - } - } - { 0.5p } - - named @Fmta - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmtb - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmtc - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmtd - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmte - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmtf - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmtg - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmth - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmti - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - named @Fmtj - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named "!" precedence 10 left x named between { dft } right y {} - named "!!" precedence 10 left x right y {} - named "!!!" precedence 10 left x right y {} - named "@Over" precedence 11 left x right y { x // y } - named "," precedence 12 left x right y {} - named @Col precedence 12 right x {} - named @CC right x { clines @Break { & x & } } - named @RR right x { rlines @Break { & x & } } - {} - - body @Body - -@Begin - - macro @NP { /1.1b } - - def @CC right x { clines @Break { & x & } } - def @RR right x { rlines @Break { & x & } } -# -# VT: these definitions have been modified for PDF support -# - def @HSingle { - @BackEnd @Case { - PostScript @Yield { linewidth ltabhs } - PDF @Yield { "0 0 m __xsize 0 l" linewidth "w 0 J S" } - } - } - - def @HSingleProject { - @BackEnd @Case { - PostScript @Yield { linewidth ltabhsp } - PDF @Yield { "0 0 m __xsize 0 l" linewidth "w 2 J S" } - } - } - - def @HDouble { - @BackEnd @Case { - PostScript @Yield { linewidth ltabhd } - PDF @Yield { # dup dup - "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto - "0 __mul(3, " linewidth ") m __xsize __mul(3, " linewidth ") l" # 0 exch 3 mul moveto xsize exch 3 mul lineto - linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke - } - } - } - - def @HDoubleBelow { - @BackEnd @Case { - PostScript @Yield { linewidth ltabhdb } - PDF @Yield { # dup dup - "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto - "0 __mul(-3, "linewidth") m __xsize __mul(-3, "linewidth") l" # 0 exch -3 mul moveto xsize exch -3 mul lineto - linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke - } - } - } - - def @HDoubleNW { - @BackEnd @Case { - PostScript @Yield { linewidth ltabhdnw } - PDF @Yield { # dup dup dup dup - "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto - "__xsize __mul(3, "linewidth") m" # xsize exch 3 mul moveto - "__mul(-3, "linewidth") __mul(3, "linewidth") l" # -3 mul exch 3 mul lineto - "__mul(-3, "linewidth") 0 l" # -3 mul 0 lineto - linewidth "w 0 j 2 J S" # setlinewidth 0 setlinejoin 2 setlinecap stroke - } - } - } - - def @HDoubleNE { - @BackEnd @Case { - PostScript @Yield { linewidth ltabhdne } - PDF @Yield { # dup dup dup dup - "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto - "0 __mul(3, "linewidth") m" # 0 exch 3 mul moveto - "__add(__xsize, __mul(3, "linewidth")) __mul(3, "linewidth") l" # 3 mul xsize add exch 3 mul lineto - "__add(__xsize, __mul(3, "linewidth")) 0 l" # 3 mul xsize add 0 lineto - linewidth "w 0 j 2 J S" # setlinewidth 0 setlinejoin 2 setlinecap stroke - } - } - } - - def @HDoubleSW { - @BackEnd @Case { - PostScript @Yield { linewidth ltabhdsw } - PDF @Yield { # dup dup dup dup - "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto - "__xsize __mul(-3, "linewidth") m" # xsize exch -3 mul moveto - "__mul(-3, "linewidth") __mul(-3, "linewidth") l" # -3 mul exch -3 mul lineto - "__mul(-3, "linewidth") 0 l" # -3 mul 0 lineto - linewidth "w 0 j 2 J S" # setlinewidth 0 setlinejoin 2 setlinecap stroke - } - } - } - - def @HDoubleSE { - @BackEnd @Case { - PostScript @Yield { linewidth ltabhdse } - PDF @Yield { # dup dup dup dup - "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto - "0 __mul(-3, "linewidth") m" # 0 exch -3 mul moveto - "__add(__xsize, __mul(-3, "linewidth")) __mul(-3, "linewidth") l" # 3 mul xsize add exch -3 mul lineto - "__add(__xsize, __mul( 3, "linewidth")) 0 l" # 3 mul xsize add 0 lineto - linewidth "w 0 j 2 J S" # setlinewidth 0 setlinejoin 2 setlinecap stroke - } - } - } - - def @VSingle { - @BackEnd @Case { - PostScript @Yield { linewidth ltabvs } - PDF @Yield { - "0 0 m 0 __ysize l" # 0 0 moveto 0 ysize lineto - linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke - } - } - } - - def @VDouble { - @BackEnd @Case { - PostScript @Yield { linewidth ltabvd } - PDF @Yield { # dup dup - "0 0 m 0 __ysize l" # 0 0 moveto 0 ysize lineto - "__mul(-3, "linewidth") 0 m __mul(-3, "linewidth") __ysize l" # -3 mul 0 moveto -3 mul ysize lineto - linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke - } - } - } - - def @VDoubleRight { - @BackEnd @Case { - PostScript @Yield { linewidth ltabvdr } - PDF @Yield { # dup dup - "0 0 m 0 __ysize l" # 0 0 moveto 0 ysize lineto - "__mul(3, "linewidth") 0 m __mul(3, "linewidth") __ysize l" # 3 mul 0 moveto 3 mul ysize lineto - linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke - } - } - } - - def @MidHRule - left rule - right x - { - rule @Case - { - no @Yield { @OneCol x } - { yes single } @Yield { @HSingle @Graphic x } - { double doubleboxabove } @Yield { @HDouble @Graphic x } - doubleboxbelow @Yield { @HDoubleBelow @Graphic x } - } - } - - def @LeftHRule - left rule - right x - { - rule @Case - { - no @Yield { @OneCol x } - { yes single } @Yield { @HSingleProject @Graphic x } - double @Yield { @HDouble @Graphic x } - doubleboxabove @Yield { @HDoubleNW @Graphic x } - doubleboxbelow @Yield { @HDoubleSW @Graphic x } - } - } - - def @RightHRule - left rule - right x - { - rule @Case - { - no @Yield { @OneCol x } - { yes single } @Yield { @HSingleProject @Graphic x } - double @Yield { @HDouble @Graphic x } - doubleboxabove @Yield { @HDoubleNE @Graphic x } - doubleboxbelow @Yield { @HDoubleSE @Graphic x } - } - } - - def @HSRule - left rule - { - rule @Case - { - no @Yield {} - { yes single } @Yield { @HSingle @Graphic {} } - double @Yield { @HDouble @Graphic {} } - doubleboxabove @Yield { @HDouble @Graphic {} } - doubleboxbelow @Yield { @HDoubleBelow @Graphic {} } - } - } - - def @ZeroWidth - right x - { @OneCol { |0io x |0io } - } - - def @Line - { single @HSRule - } - - def @DoubleLine - { double @HSRule - } - - def @Rule - { - @OneRow - { - @ZeroWidth @HSingle @Graphic { ^|hmargin } - / @Line / - &1rt @ZeroWidth @HSingle @Graphic { |hmargin } - } - } - - def @DoubleRule - { - @OneRow - { - @ZeroWidth @HDouble @Graphic { ^|hmargin } - / @DoubleLine / - &1rt @ZeroWidth @HDouble @Graphic { |hmargin } - } - } - - def @VRule - left rule - right x - { - rule @Case - { - no @Yield {} - { yes single } @Yield @OneRow { /0io @VSingle @Graphic x /0io } - double @Yield @OneRow { /0io @VDouble @Graphic x /0io } - } - } - - def @VRuleRight - left rule - right x - { - rule @Case - { - no @Yield {} - {yes single} @Yield @OneRow { /0io @VSingle @Graphic x /0io } - double @Yield @OneRow { /0io @VDoubleRight @Graphic x /0io } - } - } - - def @VSRule - left rule - { - rule @Case - { - no @Yield {} - { yes single } @Yield { @VSingle @Graphic {} } - double @Yield { @VDouble @Graphic {} } - } - } - - def @VSRuleRight - left rule - { - rule @Case - { - no @Yield {} - {yes single} @Yield { @VSingle @Graphic {} } - double @Yield { @VDoubleRight @Graphic {} } - } - } - - def @Wrap - named ur { no } # Rule up above entry - named dr { no } # Rule down below entry - named vm { vmargin } # Vertical margin - right x # The object to be wrapped - { - ur @HSRule - ^/vm @OneCol @OneRow x - /vm dr @HSRule - } - - def @Sep - left x - named ur { no } # Rule up above entry - named dr { no } # Rule down below entry - named sr { no } # Rule separating x from y - named hm { hmargin } # Horizontal margin - named vm { vmargin } # Vertical margin - right y - { - def vr - { - sr @Case - { dft @Yield between - else @Yield sr - } - } - - x | @OneCol - { ur @MidHRule {|hm} - /vm - /vm dr @MidHRule {|hm} - } - | @OneCol - { vr @VRule { /vm } | ur @MidHRule {|hm} - /vm vr @VSRule | - /vm vr @VRule {^/vm } | dr @MidHRule {|hm} - } - | y - } - - def @NSep - left x - named hm { hmargin } - right y - { - x | @OneCol { |hm } | @OneCol { |hm } | y - } - - def @LeftEdge - named ur { no } # Rule up above entry - named dr { no } # Rule down below entry - named sr { no } # Rule separating x from y - named hm { hmargin } # Horizontal margin - named vm { vmargin } # Vertical margin - right x - { - sr @Case - { - no @Yield { x } - else @Yield - { @OneCol - { - sr @VRule { /vm } | ur @LeftHRule { |hm } - ^/vm sr @VSRule | - /vm sr @VRule { ^/vm } | dr @LeftHRule { |hm } - } - | x - } - } - } - - def @RightEdge - left x - named ur { no } # Rule up above entry - named dr { no } # Rule down below entry - named sr { no } # Rule separating x from y - named hm { hmargin } # Horizontal margin - named vm { vmargin } # Vertical margin - { - sr @Case - { - no @Yield { x } - else @Yield - { - x | @OneCol - { - ur @RightHRule { |hm } - /vm - /vm dr @RightHRule { |hm } - } - | @OneCol - { - sr @VRuleRight { /vm } - /vm sr @VSRuleRight - /vm sr @VRuleRight { ^/vm } - } - } - } - } - - def @DoRowa - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmta - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowb - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmtb - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowc - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmtc - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowd - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmtd - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowe - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmte - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowf - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmtf - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowg - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmtg - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowh - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmth - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowi - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmti - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - def @DoRowj - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named above { above } - named below { below } - named side { side } - named vmargin { vmargin } - { - @LeftEdge ur { above } dr { below } sr { side } vm { vmargin } - @Fmtj - A { A } B { B } C { C } D { D } E { E } - F { F } G { G } H { H } I { I } J { J } - K { K } L { L } M { M } N { N } O { O } - P { P } Q { Q } R { R } S { S } T { T } - U { U } V { V } W { W } X { X } Y { Y } - Z { Z } - @Col { @Wrap ur {above} dr {below} vm {vmargin} x} - ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y} - !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y} - !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y} - , { x @NSep y } - @RightEdge ur { above } dr { below } sr { side } vm { vmargin } - } - - macro @Rowa { / @DoRowa } - macro @Rowb { / @DoRowb } - macro @Rowc { / @DoRowc } - macro @Rowd { / @DoRowd } - macro @Rowe { / @DoRowe } - macro @Rowf { / @DoRowf } - macro @Rowg { / @DoRowg } - macro @Rowh { / @DoRowh } - macro @Rowi { / @DoRowi } - macro @Rowj { / @DoRowj } - - macro @FirstRowa { @DoRowa } - macro @FirstRowb { @DoRowb } - macro @FirstRowc { @DoRowc } - macro @FirstRowd { @DoRowd } - macro @FirstRowe { @DoRowe } - macro @FirstRowf { @DoRowf } - macro @FirstRowg { @DoRowg } - macro @FirstRowh { @DoRowh } - macro @FirstRowi { @DoRowi } - macro @FirstRowj { @DoRowj } - - macro @MarkRowa { ^/ @DoRowa } - macro @MarkRowb { ^/ @DoRowb } - macro @MarkRowc { ^/ @DoRowc } - macro @MarkRowd { ^/ @DoRowd } - macro @MarkRowe { ^/ @DoRowe } - macro @MarkRowf { ^/ @DoRowf } - macro @MarkRowg { ^/ @DoRowg } - macro @MarkRowh { ^/ @DoRowh } - macro @MarkRowi { ^/ @DoRowi } - macro @MarkRowj { ^/ @DoRowj } - - - @Body - -@End @Tab diff --git a/include/include/tabf.lpg b/include/include/tabf.lpg deleted file mode 100644 index 0094114..0000000 --- a/include/include/tabf.lpg +++ /dev/null @@ -1,118 +0,0 @@ -%%BeginResource: procset LoutTabPrependGraphic -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% PostScript @SysPrependGraphic file for @Tab % -% % -% This file has been placed in the public domain % -% by its author, Jeffrey H. Kingston % -% % -% To assist in avoiding name clashes, the names % -% of all these symbols begin with "ltab". % -% % -% Jeffrey H. Kingston % -% 24 September 1991 % -% 22 December 1992 % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% linewidth ltabhs - -% horizontal single line -/ltabhs -{ 0 0 moveto xsize 0 lineto - setlinewidth 0 setlinecap stroke -} def - -% linewidth ltabhsp - -% horizontal single line with projecting ends -/ltabhsp -{ 0 0 moveto xsize 0 lineto - setlinewidth 2 setlinecap stroke -} def - -% linewidth ltabhd - -% horizontal double line -/ltabhd -{ dup dup - 0 0 moveto xsize 0 lineto - 0 exch 3 mul moveto xsize exch 3 mul lineto - setlinewidth 0 setlinecap stroke -} def - -% linewidth ltabhdb - -% horizontal double line below mark -/ltabhdb -{ dup dup - 0 0 moveto xsize 0 lineto - 0 exch -3 mul moveto xsize exch -3 mul lineto - setlinewidth 0 setlinecap stroke -} def - -% linewidth ltabhdnw - -% horizontal double line with northwest corner -/ltabhdnw -{ dup dup dup dup - 0 0 moveto xsize 0 lineto - xsize exch 3 mul moveto - -3 mul exch 3 mul lineto - -3 mul 0 lineto - setlinewidth 0 setlinejoin 2 setlinecap stroke -} def - -% linewidth ltabhdne - -% horizontal double line with northeast corner -/ltabhdne -{ dup dup dup dup - 0 0 moveto xsize 0 lineto - 0 exch 3 mul moveto - 3 mul xsize add exch 3 mul lineto - 3 mul xsize add 0 lineto - setlinewidth 0 setlinejoin 2 setlinecap stroke -} def - -% linewidth ltabhdsw - -% horizontal double line with southwest corner -/ltabhdsw -{ dup dup dup dup - 0 0 moveto xsize 0 lineto - xsize exch -3 mul moveto - -3 mul exch -3 mul lineto - -3 mul 0 lineto - setlinewidth 0 setlinejoin 2 setlinecap stroke -} def - -% linewidth ltabhdse - -% horizontal double line with southeast corner -/ltabhdse -{ dup dup dup dup - 0 0 moveto xsize 0 lineto - 0 exch -3 mul moveto - 3 mul xsize add exch -3 mul lineto - 3 mul xsize add 0 lineto - setlinewidth 0 setlinejoin 2 setlinecap stroke -} def - -% linewidth ltabvs - -% vertical single line -/ltabvs -{ 0 0 moveto 0 ysize lineto - setlinewidth 0 setlinecap stroke -} def - -% linewidth ltabvd - -% vertical double line -/ltabvd -{ dup dup - 0 0 moveto 0 ysize lineto - -3 mul 0 moveto -3 mul ysize lineto - setlinewidth 0 setlinecap stroke -} def - -% linewidth ltabvdr - -% vertical double line to right of mark -/ltabvdr -{ dup dup - 0 0 moveto 0 ysize lineto - 3 mul 0 moveto 3 mul ysize lineto - setlinewidth 0 setlinecap stroke -} def -%%EndResource diff --git a/include/include/tbl b/include/include/tbl deleted file mode 100644 index 4e73092..0000000 --- a/include/include/tbl +++ /dev/null @@ -1,82 +0,0 @@ - -############################################################################### -# # -# Lout setup file for table printing # -# # -# Jeffrey H. Kingston # -# 5 February 1999 # -# # -# This file has been placed in the public domain by its author. # -# # -############################################################################### - -############################################################################### -# # -# The @SysInclude { tblf } line # -# # -# This line causes Lout to read the definitions for tables, and should # -# not be touched. # -# # -############################################################################### - -@SysInclude { tblf } - - -############################################################################### -# # -# The @TbleSetup @Use clause # -# # -# To change the default value of any option, delete the # at the start of # -# its line and change the value between braces. # -# # -############################################################################### - -@Use { @TblSetup - # paint { none } # colour of background - # texture { solid } # texture of paint background - # background { } # object in background - # font { } # font - # break { } # paragraph breaking style - # width { } # fixed width or "expand" - # height { } # fixed height - # indent { } # horizontal indent - # indentvertical { } # vertical indent - # strut { yes } # vertical strut - # struthorizontal { no } # horizontal strut - # margin { } # margin all round - # marginhorizontal { 0.6f @OrIfPlain 2s } # margin left, right of entry - # marginleft { } # margin left of entry - # marginright { } # margin right of entry - # marginvertical { 0.3f @OrIfPlain 2f } # margin above, below entry - # marginabove { } # margin above entry - # marginbelow { } # margin below entry - # rule { no } # rule all round cell - # rulehorizontal { } # rule above and below cell - # ruleabove { } # rule above cell - # rulebelow { } # rule below cell - # rulevertical { } # rule left and right of cell - # ruleleft { } # rule left of cell - # ruleright { } # rule right of cell - # rulewidth { 0.05f } # width (thickness) of rule - # rulehorizontalwidth { {} @OrIfPlain 1f } # width of above, below rules - # ruleabovewidth { } # width of above rule - # rulebelowwidth { } # width of below rule - # ruleverticalwidth { {} @OrIfPlain 1s } # width of left, right rules - # ruleleftwidth { } # width of left rule - # rulerightwidth { } # width of right rule - # rulegap { 0.15f } # gap between double rules - # rulehorizontalgap { {} @OrIfPlain 0f } # gap between dbl a&b rules - # ruleabovegap { } # gap between dbl above rules - # rulebelowgap { } # gap between dbl below rules - # ruleverticalgap { {} @OrIfPlain 0s } # gap between dbl l&r rules - # ruleleftgap { } # gap between dbl left rules - # rulerightgap { } # gap between dbl right rules - # rulecolour { black } # color of rules - # rulehorizontalcolour { } # color of above, below rules - # ruleabovecolour { } # color of above rules - # rulebelowcolour { } # color of below rules - # ruleverticalcolour { } # color of left, right rules - # ruleleftcolour { } # color of left rules - # rulerightcolour { } # color of right rules - # ruleplainchar { . } # plain text rule characters -} diff --git a/include/include/tblf b/include/include/tblf deleted file mode 100644 index e01fd16..0000000 --- a/include/include/tblf +++ /dev/null @@ -1,3218 +0,0 @@ - -############################################################################### -# # -# Lout @Tbl package for tables # -# # -# Version 1.0 (22 November 1998) # -# Version 1.1 (21 October 2001: improvements to handling of colour) # -# Jeffrey H. Kingston # -# # -# Based on the @Tab package (Jeffrey H. Kingston, September 1991). # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -@SysInclude { coltex } - -export @OrIfPlain -def @TOIP { - - def @OrIfPlain - left ps - right plain - { - @BackEnd @Case { - PlainText @Yield plain - else @Yield ps - } - } -} - -export @Tbl -def @TblSetup - import @TOIP named paint p { none } - import @TextureImport named texture t { solid } - import @TOIP named background bg {} - import @TOIP named font f {} - import @TOIP named break b {} - import @TOIP named width w {} - import @TOIP named height h {} - import @TOIP named indent i {} - import @TOIP named indentvertical iv {} - import @TOIP named strut s { yes } - import @TOIP named struthorizontal sh { no } - import @TOIP named margin m {} - import @TOIP named marginhorizontal mh { 0.6f @OrIfPlain 2s } - import @TOIP named marginleft ml {} - import @TOIP named marginright mr {} - import @TOIP named marginvertical mv { 0.3f @OrIfPlain 2f } - import @TOIP named marginabove ma {} - import @TOIP named marginbelow mb {} - import @TOIP named rule r { no } - import @TOIP named rulehorizontal rh {} - import @TOIP named ruleabove ra {} - import @TOIP named rulebelow rb {} - import @TOIP named rulevertical rv {} - import @TOIP named ruleleft rl {} - import @TOIP named ruleright rr {} - import @TOIP named rulewidth rw { 0.05f } - import @TOIP named rulehorizontalwidth rhw { {} @OrIfPlain 1f } - import @TOIP named ruleabovewidth raw {} - import @TOIP named rulebelowwidth rbw {} - import @TOIP named ruleverticalwidth rvw { {} @OrIfPlain 1s } - import @TOIP named ruleleftwidth rlw {} - import @TOIP named rulerightwidth rrw {} - import @TOIP named rulegap rg { 0.15f } - import @TOIP named rulehorizontalgap rhg { {} @OrIfPlain 0f } - import @TOIP named ruleabovegap rag {} - import @TOIP named rulebelowgap rbg {} - import @TOIP named ruleverticalgap rvg { {} @OrIfPlain 0s } - import @TOIP named ruleleftgap rlg {} - import @TOIP named rulerightgap rrg {} - import @TOIP named rulecolour rulecolor rc { black } - import @TOIP named rulehorizontalcolour rulehorizontalcolor rhc {} - import @TOIP named ruleabovecolour ruleabovecolor rac {} - import @TOIP named rulebelowcolour rulebelowcolor rbc {} - import @TOIP named ruleverticalcolour ruleverticalcolor rvc {} - import @TOIP named ruleleftcolour ruleleftcolor rlc {} - import @TOIP named rulerightcolour rulerightcolor rrc {} - import @TOIP named ruleplainchar rpc { . } - -@Begin - - def @Else - precedence 20 - associativity right - left x - right y - { - x @Case { - "" @Yield y - else @Yield x - } - } - - - ########################################################################### - # # - # Specific option values as the setup file knows them (i.e. Level 1) # - # # - ########################################################################### - - def setupp { p } - def setupt { t } - def setupbg { bg } - def setupf { f } - def setupb { b } - def setupw { w } - def setuph { h } - def setupi { i } - def setupiv { iv } - def setups { s } - def setupsh { sh } - def setupml { ml @Else mh @Else m } - def setupmr { mr @Else mh @Else m } - def setupma { ma @Else mv @Else m } - def setupmb { mb @Else mv @Else m } - def setupra { ra @Else rh @Else r } - def setuprb { rb @Else rh @Else r } - def setuprl { rl @Else rv @Else r } - def setuprr { rr @Else rv @Else r } - def setupraw { raw @Else rhw @Else rw } - def setuprbw { rbw @Else rhw @Else rw } - def setuprlw { rlw @Else rvw @Else rw } - def setuprrw { rrw @Else rvw @Else rw } - def setuprag { rag @Else rhg @Else rg } - def setuprbg { rbg @Else rhg @Else rg } - def setuprlg { rlg @Else rvg @Else rg } - def setuprrg { rrg @Else rvg @Else rg } - def setuprac { rac @Else rhc @Else rc } - def setuprbc { rbc @Else rhc @Else rc } - def setuprlc { rlc @Else rvc @Else rc } - def setuprrc { rrc @Else rvc @Else rc } - def setuprpc { rpc } - - - ########################################################################### - # # - # @Tbl symbol # - # # - ########################################################################### - - export - - @Row - @Rowa - @Rowb - @Rowc - @Rowd - @Rowe - @Rowf - @Rowg - @Rowh - - @FirstRow - @FirstRowa - @FirstRowb - @FirstRowc - @FirstRowd - @FirstRowe - @FirstRowf - @FirstRowg - @FirstRowh - - @MarkRow - @MarkRowa - @MarkRowb - @MarkRowc - @MarkRowd - @MarkRowe - @MarkRowf - @MarkRowg - @MarkRowh - - @NoBreakRow - @NoBreakRowa - @NoBreakRowb - @NoBreakRowc - @NoBreakRowd - @NoBreakRowe - @NoBreakRowf - @NoBreakRowg - @NoBreakRowh - - @HeaderRow - @HeaderRowa - @HeaderRowb - @HeaderRowc - @HeaderRowd - @HeaderRowe - @HeaderRowf - @HeaderRowg - @HeaderRowh - - @HeaderFirstRow - @HeaderFirstRowa - @HeaderFirstRowb - @HeaderFirstRowc - @HeaderFirstRowd - @HeaderFirstRowe - @HeaderFirstRowf - @HeaderFirstRowg - @HeaderFirstRowh - - @EndHeaderRow - - @NP - - def @Tbl - - # parameters for formatting the entire table - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - - # parameters for formatting @Rowa rows - named apaint ap {} - import @TextureImport named atexture at {} - named abackground abg {} - named afont af {} - named abreak ab {} - named awidth aw {} - named aheight ah {} - named aindent ai {} - named aindentvertical aiv {} - named astrut as {} - named astruthorizontal ash {} - named amargin am {} - named amarginhorizontal amh {} - named amarginleft aml {} - named amarginright amr {} - named amarginvertical amv {} - named amarginabove ama {} - named amarginbelow amb {} - named arule ar {} - named arulehorizontal arh {} - named aruleabove ara {} - named arulebelow arb {} - named arulevertical arv {} - named aruleleft arl {} - named aruleright arr {} - named arulewidth arw {} - named arulehorizontalwidth arhw {} - named aruleabovewidth araw {} - named arulebelowwidth arbw {} - named aruleverticalwidth arvw {} - named aruleleftwidth arlw {} - named arulerightwidth arrw {} - named arulegap arg {} - named arulehorizontalgap arhg {} - named aruleabovegap arag {} - named arulebelowgap arbg {} - named aruleverticalgap arvg {} - named aruleleftgap arlg {} - named arulerightgap arrg {} - named arulecolour arulecolor arc {} - named arulehorizontalcolour arulehorizontalcolor arhc {} - named aruleabovecolour aruleabovecolor arac {} - named arulebelowcolour arulebelowcolor arbc {} - named aruleverticalcolour aruleverticalcolor arvc {} - named aruleleftcolour aruleleftcolor arlc {} - named arulerightcolour arulerightcolor arrc {} - named aruleplainchar arpc {} - named aformat - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - - # parameters for formatting @Rowb rows - named bpaint bp {} - import @TextureImport named btexture bt {} - named bbackground bbg {} - named bfont bf {} - named bbreak bb {} - named bwidth bw {} - named bheight bh {} - named bindent bi {} - named bindentvertical biv {} - named bstrut bs {} - named bstruthorizontal bsh {} - named bmargin bm {} - named bmarginhorizontal bmh {} - named bmarginleft bml {} - named bmarginright bmr {} - named bmarginvertical bmv {} - named bmarginabove bma {} - named bmarginbelow bmb {} - named brule br {} - named brulehorizontal brh {} - named bruleabove bra {} - named brulebelow brb {} - named brulevertical brv {} - named bruleleft brl {} - named bruleright brr {} - named brulewidth brw {} - named brulehorizontalwidth brhw {} - named bruleabovewidth braw {} - named brulebelowwidth brbw {} - named bruleverticalwidth brvw {} - named bruleleftwidth brlw {} - named brulerightwidth brrw {} - named brulegap brg {} - named brulehorizontalgap brhg {} - named bruleabovegap brag {} - named brulebelowgap brbg {} - named bruleverticalgap brvg {} - named bruleleftgap brlg {} - named brulerightgap brrg {} - named brulecolour brulecolor brc {} - named brulehorizontalcolour brulehorizontalcolor brhc {} - named bruleabovecolour bruleabovecolor brac {} - named brulebelowcolour brulebelowcolor brbc {} - named bruleverticalcolour bruleverticalcolor brvc {} - named bruleleftcolour bruleleftcolor brlc {} - named brulerightcolour brulerightcolor brrc {} - named bruleplainchar brpc {} - named bformat - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - - # parameters for formatting @Rowc rows - named cpaint cp {} - import @TextureImport named ctexture ct {} - named cbackground cbg {} - named cfont cf {} - named cbreak cb {} - named cwidth cw {} - named cheight ch {} - named cindent ci {} - named cindentvertical civ {} - named cstrut cs {} - named cstruthorizontal csh {} - named cmargin cm {} - named cmarginhorizontal cmh {} - named cmarginleft cml {} - named cmarginright cmr {} - named cmarginvertical cmv {} - named cmarginabove cma {} - named cmarginbelow cmb {} - named crule cr {} - named crulehorizontal crh {} - named cruleabove cra {} - named crulebelow crb {} - named crulevertical crv {} - named cruleleft crl {} - named cruleright crr {} - named crulewidth crw {} - named crulehorizontalwidth crhw {} - named cruleabovewidth craw {} - named crulebelowwidth crbw {} - named cruleverticalwidth crvw {} - named cruleleftwidth crlw {} - named crulerightwidth crrw {} - named crulegap crg {} - named crulehorizontalgap crhg {} - named cruleabovegap crag {} - named crulebelowgap crbg {} - named cruleverticalgap crvg {} - named cruleleftgap crlg {} - named crulerightgap crrg {} - named crulecolour crulecolor crc {} - named crulehorizontalcolour crulehorizontalcolor crhc {} - named cruleabovecolour cruleabovecolor crac {} - named crulebelowcolour crulebelowcolor crbc {} - named cruleverticalcolour cruleverticalcolor crvc {} - named cruleleftcolour cruleleftcolor crlc {} - named crulerightcolour crulerightcolor crrc {} - named cruleplainchar crpc {} - named cformat - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - - # parameters for formatting @Rowd rows - named dpaint dp {} - import @TextureImport named dtexture dt {} - named dbackground dbg {} - named dfont df {} - named dbreak db {} - named dwidth dw {} - named dheight dh {} - named dindent di {} - named dindentvertical div {} - named dstrut ds {} - named dstruthorizontal dsh {} - named dmargin dm {} - named dmarginhorizontal dmh {} - named dmarginleft dml {} - named dmarginright dmr {} - named dmarginvertical dmv {} - named dmarginabove dma {} - named dmarginbelow dmb {} - named drule dr {} - named drulehorizontal drh {} - named druleabove dra {} - named drulebelow drb {} - named drulevertical drv {} - named druleleft drl {} - named druleright drr {} - named drulewidth drw {} - named drulehorizontalwidth drhw {} - named druleabovewidth draw {} - named drulebelowwidth drbw {} - named druleverticalwidth drvw {} - named druleleftwidth drlw {} - named drulerightwidth drrw {} - named drulegap drg {} - named drulehorizontalgap drhg {} - named druleabovegap drag {} - named drulebelowgap drbg {} - named druleverticalgap drvg {} - named druleleftgap drlg {} - named drulerightgap drrg {} - named drulecolour drulecolor drc {} - named drulehorizontalcolour drulehorizontalcolor drhc {} - named druleabovecolour druleabovecolor drac {} - named drulebelowcolour drulebelowcolor drbc {} - named druleverticalcolour druleverticalcolor drvc {} - named druleleftcolour druleleftcolor drlc {} - named drulerightcolour drulerightcolor drrc {} - named druleplainchar drpc {} - named dformat - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - - # parameters for formatting @Rowe rows - named epaint ep {} - import @TextureImport named etexture et {} - named ebackground ebg {} - named efont ef {} - named ebreak eb {} - named ewidth ew {} - named eheight eh {} - named eindent ei {} - named eindentvertical eiv {} - named estrut es {} - named estruthorizontal esh {} - named emargin em {} - named emarginhorizontal emh {} - named emarginleft eml {} - named emarginright emr {} - named emarginvertical emv {} - named emarginabove ema {} - named emarginbelow emb {} - named erule er {} - named erulehorizontal erh {} - named eruleabove era {} - named erulebelow erb {} - named erulevertical erv {} - named eruleleft erl {} - named eruleright err {} - named erulewidth erw {} - named erulehorizontalwidth erhw {} - named eruleabovewidth eraw {} - named erulebelowwidth erbw {} - named eruleverticalwidth ervw {} - named eruleleftwidth erlw {} - named erulerightwidth errw {} - named erulegap erg {} - named erulehorizontalgap erhg {} - named eruleabovegap erag {} - named erulebelowgap erbg {} - named eruleverticalgap ervg {} - named eruleleftgap erlg {} - named erulerightgap errg {} - named erulecolour erulecolor erc {} - named erulehorizontalcolour erulehorizontalcolor erhc {} - named eruleabovecolour eruleabovecolor erac {} - named erulebelowcolour erulebelowcolor erbc {} - named eruleverticalcolour eruleverticalcolor ervc {} - named eruleleftcolour eruleleftcolor erlc {} - named erulerightcolour erulerightcolor errc {} - named eruleplainchar erpc {} - named eformat - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - - # parameters for formatting @Rowf rows - named fpaint fp {} - import @TextureImport named ftexture ft {} - named fbackground fbg {} - named ffont ff {} - named fbreak fb {} - named fwidth fw {} - named fheight fh {} - named findent fi {} - named findentvertical fiv {} - named fstrut fs {} - named fstruthorizontal fsh {} - named fmargin fm {} - named fmarginhorizontal fmh {} - named fmarginleft fml {} - named fmarginright fmr {} - named fmarginvertical fmv {} - named fmarginabove fma {} - named fmarginbelow fmb {} - named frule fr {} - named frulehorizontal frh {} - named fruleabove fra {} - named frulebelow frb {} - named frulevertical frv {} - named fruleleft frl {} - named fruleright frr {} - named frulewidth frw {} - named frulehorizontalwidth frhw {} - named fruleabovewidth fraw {} - named frulebelowwidth frbw {} - named fruleverticalwidth frvw {} - named fruleleftwidth frlw {} - named frulerightwidth frrw {} - named frulegap frg {} - named frulehorizontalgap frhg {} - named fruleabovegap frag {} - named frulebelowgap frbg {} - named fruleverticalgap frvg {} - named fruleleftgap frlg {} - named frulerightgap frrg {} - named frulecolour frulecolor frc {} - named frulehorizontalcolour frulehorizontalcolor frhc {} - named fruleabovecolour fruleabovecolor frac {} - named frulebelowcolour frulebelowcolor frbc {} - named fruleverticalcolour fruleverticalcolor frvc {} - named fruleleftcolour fruleleftcolor frlc {} - named frulerightcolour frulerightcolor frrc {} - named fruleplainchar frpc {} - named fformat - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - - # parameters for formatting @Rowg rows - named gpaint gp {} - import @TextureImport named gtexture gt {} - named gbackground gbg {} - named gfont gf {} - named gbreak gb {} - named gwidth gw {} - named gheight gh {} - named gindent gi {} - named gindentvertical giv {} - named gstrut gs {} - named gstruthorizontal gsh {} - named gmargin gm {} - named gmarginhorizontal gmh {} - named gmarginleft gml {} - named gmarginright gmr {} - named gmarginvertical gmv {} - named gmarginabove gma {} - named gmarginbelow gmb {} - named grule gr {} - named grulehorizontal grh {} - named gruleabove gra {} - named grulebelow grb {} - named grulevertical grv {} - named gruleleft grl {} - named gruleright grr {} - named grulewidth grw {} - named grulehorizontalwidth grhw {} - named gruleabovewidth graw {} - named grulebelowwidth grbw {} - named gruleverticalwidth grvw {} - named gruleleftwidth grlw {} - named grulerightwidth grrw {} - named grulegap grg {} - named grulehorizontalgap grhg {} - named gruleabovegap grag {} - named grulebelowgap grbg {} - named gruleverticalgap grvg {} - named gruleleftgap grlg {} - named grulerightgap grrg {} - named grulecolour grulecolor grc {} - named grulehorizontalcolour grulehorizontalcolor grhc {} - named gruleabovecolour gruleabovecolor grac {} - named grulebelowcolour grulebelowcolor grbc {} - named gruleverticalcolour gruleverticalcolor grvc {} - named gruleleftcolour gruleleftcolor grlc {} - named grulerightcolour grulerightcolor grrc {} - named gruleplainchar grpc {} - named gformat - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - - # parameters for formatting @Rowh rows - named hpaint hp {} - import @TextureImport named htexture ht {} - named hbackground hbg {} - named hfont hf {} - named hbreak hb {} - named hwidth hw {} - named hheight hh {} - named hindent hi {} - named hindentvertical hiv {} - named hstrut hs {} - named hstruthorizontal hsh {} - named hmargin hm {} - named hmarginhorizontal hmh {} - named hmarginleft hml {} - named hmarginright hmr {} - named hmarginvertical hmv {} - named hmarginabove hma {} - named hmarginbelow hmb {} - named hrule hr {} - named hrulehorizontal hrh {} - named hruleabove hra {} - named hrulebelow hrb {} - named hrulevertical hrv {} - named hruleleft hrl {} - named hruleright hrr {} - named hrulewidth hrw {} - named hrulehorizontalwidth hrhw {} - named hruleabovewidth hraw {} - named hrulebelowwidth hrbw {} - named hruleverticalwidth hrvw {} - named hruleleftwidth hrlw {} - named hrulerightwidth hrrw {} - named hrulegap hrg {} - named hrulehorizontalgap hrhg {} - named hruleabovegap hrag {} - named hrulebelowgap hrbg {} - named hruleverticalgap hrvg {} - named hruleleftgap hrlg {} - named hrulerightgap hrrg {} - named hrulecolour hrulecolor hrc {} - named hrulehorizontalcolour hrulehorizontalcolor hrhc {} - named hruleabovecolour hruleabovecolor hrac {} - named hrulebelowcolour hrulebelowcolor hrbc {} - named hruleverticalcolour hruleverticalcolor hrvc {} - named hruleleftcolour hruleleftcolor hrlc {} - named hrulerightcolour hrulerightcolor hrrc {} - named hruleplainchar hrpc {} - named hformat - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - - body @Body # this is the right parameter of @Tbl - - { - - ####################################################################### - # # - # Specific option values as @Tbl knows them (i.e. Level 2) # - # # - ####################################################################### - - def tblp { p @Else setupp } - def tblt { t @Else setupt } - def tblbg { bg @Else setupbg } - def tblf { f @Else setupf } - def tblb { b @Else setupb } - def tblw { w @Else setupw } - def tblh { h @Else setuph } - def tbli { i @Else setupi } - def tbliv { iv @Else setupiv } - def tbls { s @Else setups } - def tblsh { sh @Else setupsh } - def tblml { ml @Else mh @Else m @Else setupml } - def tblmr { mr @Else mh @Else m @Else setupmr } - def tblma { ma @Else mv @Else m @Else setupma } - def tblmb { mb @Else mv @Else m @Else setupmb } - def tblra { ra @Else rh @Else r @Else setupra } - def tblrb { rb @Else rh @Else r @Else setuprb } - def tblrl { rl @Else rv @Else r @Else setuprl } - def tblrr { rr @Else rv @Else r @Else setuprr } - def tblraw { raw @Else rhw @Else rw @Else setupraw } - def tblrbw { rbw @Else rhw @Else rw @Else setuprbw } - def tblrlw { rlw @Else rvw @Else rw @Else setuprlw } - def tblrrw { rrw @Else rvw @Else rw @Else setuprrw } - def tblrag { rag @Else rhg @Else rg @Else setuprag } - def tblrbg { rbg @Else rhg @Else rg @Else setuprbg } - def tblrlg { rlg @Else rvg @Else rg @Else setuprlg } - def tblrrg { rrg @Else rvg @Else rg @Else setuprrg } - def tblrac { rac @Else rhc @Else rc @Else setuprac } - def tblrbc { rbc @Else rhc @Else rc @Else setuprbc } - def tblrlc { rlc @Else rvc @Else rc @Else setuprlc } - def tblrrc { rrc @Else rvc @Else rc @Else setuprrc } - def tblrpc { rpc @Else setuprpc } - - - def @DoCell - named compulsory p {} - named compulsory t {} - named compulsory bg {} - named compulsory f {} - named compulsory b {} - named compulsory w {} - named compulsory h {} - named compulsory i {} - named compulsory iv {} - named compulsory s {} - named compulsory sh {} - named compulsory ml {} - named compulsory mr {} - named compulsory ma {} - named compulsory mb {} - named compulsory ra {} - named compulsory rb {} - named compulsory rl {} - named compulsory rr {} - named compulsory raw {} - named compulsory rbw {} - named compulsory rlw {} - named compulsory rrw {} - named compulsory rag {} - named compulsory rbg {} - named compulsory rlg {} - named compulsory rrg {} - named compulsory rac {} - named compulsory rbc {} - named compulsory rlc {} - named compulsory rrc {} - named compulsory rpc {} - right @Body - { - - def @ZeroWidth right x - { - @OneCol { |0io x |0io } - } - - def @ZeroHeight right x - { - @OneRow { /0io x /0io } - } - - def @PDFBox - { - "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h" - } - - def @PDFAddPaint right col - { - col @Case { - none @Yield "" - else @Yield { "q" @ColourCommand col "f Q" } - } - } - - def @PSAddPaint right col - { - col @Case { - none @Yield "" - else @Yield { @ColourCommand col "fill" } - } - } - - def @FillBox left col right x - { - @BackEnd @Case { - PostScript @Yield { {"LoutBox" @PSAddPaint col } @Graphic x } - PDF @Yield { { @PDFBox @PDFAddPaint col "S" } @Graphic x } - PlainText @Yield { rpc @PlainGraphic x } - } - } - - def @HRule left col right thick - { - @ZeroHeight thick @High col @FillBox {} - # thick @High col @FillBox {} - } - - def @VRule left col right thick - { - @ZeroWidth thick @Wide col @FillBox {} - # thick @Wide col @FillBox {} - } - - def @DoubleHRule - left col - named gap {} - right thick - { - @OneCol { col @HRule thick /gap col @HRule thick } - } - - def @DoubleVRule - left col - named gap {} - right thick - { - @OneRow { col @VRule thick |gap col @VRule thick } - } - - def @MakeHRule - left col - named thick {} - named gap {} - right type - { - type @Case { - { none "" no } @Yield {} - { yes single } @Yield col @HRule thick - { double } @Yield col @DoubleHRule gap { gap } thick - } - } - - def @MakeVRule - left col - named thick {} - named gap {} - right type - { - type @Case { - { none "" no } @Yield {} - { yes single } @Yield col @VRule thick - { double } @Yield col @DoubleVRule gap { gap } thick - } - } - - def @RuleBox - left col - named hthick {} - named vthick {} - named htype {} - named vtype {} - { - htype @Case { - { none "" no } @Yield {} - else @Yield vtype @Case { - { none "" no } @Yield {} - else @Yield { - @ZeroWidth @ZeroHeight hthick @Wide vthick @High - col @FillBox {} - } - } - } - } - - def @AddRules - right x - { - { - rlc @MakeVRule thick { rlw } gap { rlg } rl - |0rt |1rt - rrc @MakeVRule thick { rrw } gap { rrg } rr - } @Background - { rac @MakeHRule thick { raw } gap { rag } ra - /0rt - /1rt - rbc @MakeHRule thick { rbw } gap { rbg } rb - } @Background - { - |1rt rac @RuleBox hthick { rrw } vthick { raw } htype { rr } vtype { ra } - /0rt - /1rt |1rt - rbc @RuleBox hthick { rrw } vthick { rbw } htype { rr } vtype { rb } - } @Background x - - } - - def @AddMargins - right x - { - @OneCol @OneRow { - ^|ml |mr - ^/ma | x | - /mb | | - } - } - - def @PaintBox right x - { - @BackEnd @Case { - PostScript @Yield { {"LoutBox" @ColourCommand p t "fill"} @Graphic x } - PDF @Yield { { @PDFBox @PDFAddPaint col "S" } @Graphic x } - PlainText @Yield { x } - } - } - - def @AddPaint - right x - { - p @Case { - { none nopaint no } @Yield x - else @Yield { @PaintBox x } - } - } - - def @Strut right x - { - def strutval right x - { - x @Case { - { no No "" } @Yield "0.0f" - { yes Yes } @Yield "1.0f" - else @Yield x - } - } - - def vs { "0.5w" @VShift { { strutval s } @High } } - def hs { { strutval sh } @Wide } - - @OneCol @OneRow { ^| hs ^/ vs | x } - } - - def @VSize right x - { - h @Case { - "" @Yield x - else @Yield { h @High x } - } - } - - def @HSize right x - { - w @Case { - "" @Yield x - "expand" @Yield { "40c" @Wide x } - else @Yield { w @Wide x } - } - } - - def @HIndent right x - { - i @Case { - left @Yield @OneCol { | x } - ctr @Yield @OneCol { |"0.5rt" x } - right @Yield @OneCol { |"1.0rt" x } - mctr @Yield @OneCol { |"0.5bx" x } - align @Yield @OneCol x - else @Yield @OneCol { |i x } - } - } - - def @VIndent right x - { - # note: the default value "" gives top alignment, - # but that is not a problem because we are by - # default putting in a vertical strut - - iv @Case { - top @Yield @OneRow { / x } - ctr @Yield @OneRow { /"0.5rt" x } - foot @Yield @OneRow { /"1.0rt" x } - mctr @Yield @OneRow { /"0.5bx" x } - align @Yield @OneRow x - else @Yield @OneRow { /iv x } - } - } - - @HSize @VSize @AddPaint bg @Background @AddRules - @HIndent @VIndent @AddMargins f @Font b @Break @Strut @Body - } - - # symbol for producing @Row rows - def @DoRow - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named compulsory format - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - named @Cell - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - right x - {} - {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values as @Row knows them (i.e. Level 6) # - # # - ################################################################### - - def rowp { p @Else tblp } - def rowt { t @Else tblt } - def rowbg { bg @Else tblbg } - def rowf { f @Else tblf } - def rowb { b @Else tblb } - def roww { w @Else tblw } - def rowh { h @Else tblh } - def rowi { i @Else tbli } - def rowiv { iv @Else tbliv } - def rows { s @Else tbls } - def rowsh { sh @Else tblsh } - def rowml { ml @Else mh @Else m @Else tblml } - def rowmr { mr @Else mh @Else m @Else tblmr } - def rowma { ma @Else mv @Else m @Else tblma } - def rowmb { mb @Else mv @Else m @Else tblmb } - def rowra { ra @Else rh @Else r @Else tblra } - def rowrb { rb @Else rh @Else r @Else tblrb } - def rowrl { rl @Else rv @Else r @Else tblrl } - def rowrr { rr @Else rv @Else r @Else tblrr } - def rowraw { raw @Else rhw @Else rw @Else tblraw } - def rowrbw { rbw @Else rhw @Else rw @Else tblrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tblrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tblrrw } - def rowrag { rag @Else rhg @Else rg @Else tblrag } - def rowrbg { rbg @Else rhg @Else rg @Else tblrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tblrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tblrrg } - def rowrac { rac @Else rhc @Else rc @Else tblrac } - def rowrbc { rbc @Else rhc @Else rc @Else tblrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tblrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tblrrc } - def rowrpc { rpc @Else tblrpc } - - format - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 7) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - # symbol for producing @Rowa rows - def @DoRowa - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values at "aoption" level (i.e. Level 3) # - # # - ################################################################### - - def tbxp { ap @Else tblp } - def tbxt { at @Else tblt } - def tbxbg { abg @Else tblbg } - def tbxf { af @Else tblf } - def tbxb { ab @Else tblb } - def tbxw { aw @Else tblw } - def tbxh { ah @Else tblh } - def tbxi { ai @Else tbli } - def tbxiv { aiv @Else tbliv } - def tbxs { as @Else tbls } - def tbxsh { ash @Else tblsh } - def tbxml { aml @Else amh @Else am @Else tblml } - def tbxmr { amr @Else amh @Else am @Else tblmr } - def tbxma { ama @Else amv @Else am @Else tblma } - def tbxmb { amb @Else amv @Else am @Else tblmb } - def tbxra { ara @Else arh @Else ar @Else tblra } - def tbxrb { arb @Else arh @Else ar @Else tblrb } - def tbxrl { arl @Else arv @Else ar @Else tblrl } - def tbxrr { arr @Else arv @Else ar @Else tblrr } - def tbxraw { araw @Else arhw @Else arw @Else tblraw } - def tbxrbw { arbw @Else arhw @Else arw @Else tblrbw } - def tbxrlw { arlw @Else arvw @Else arw @Else tblrlw } - def tbxrrw { arrw @Else arvw @Else arw @Else tblrrw } - def tbxrag { arag @Else arhg @Else arg @Else tblrag } - def tbxrbg { arbg @Else arhg @Else arg @Else tblrbg } - def tbxrlg { arlg @Else arvg @Else arg @Else tblrlg } - def tbxrrg { arrg @Else arvg @Else arg @Else tblrrg } - def tbxrac { arac @Else arhc @Else arc @Else tblrac } - def tbxrbc { arbc @Else arhc @Else arc @Else tblrbc } - def tbxrlc { arlc @Else arvc @Else arc @Else tblrlc } - def tbxrrc { arrc @Else arvc @Else arc @Else tblrrc } - def tbxrpc { arpc @Else tblrpc } - - ################################################################### - # # - # Specific option values at @Rowa level (i.e. Level 4) # - # # - ################################################################### - - def rowp { p @Else tbxp } - def rowt { t @Else tblt } - def rowbg { bg @Else tbxbg } - def rowf { f @Else tbxf } - def rowb { b @Else tbxb } - def roww { w @Else tbxw } - def rowh { h @Else tbxh } - def rowi { i @Else tbxi } - def rowiv { iv @Else tbxiv } - def rows { s @Else tbxs } - def rowsh { sh @Else tbxsh } - def rowml { ml @Else mh @Else m @Else tbxml } - def rowmr { mr @Else mh @Else m @Else tbxmr } - def rowma { ma @Else mv @Else m @Else tbxma } - def rowmb { mb @Else mv @Else m @Else tbxmb } - def rowra { ra @Else rh @Else r @Else tbxra } - def rowrb { rb @Else rh @Else r @Else tbxrb } - def rowrl { rl @Else rv @Else r @Else tbxrl } - def rowrr { rr @Else rv @Else r @Else tbxrr } - def rowraw { raw @Else rhw @Else rw @Else tbxraw } - def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw } - def rowrag { rag @Else rhg @Else rg @Else tbxrag } - def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg } - def rowrac { rac @Else rhc @Else rc @Else tbxrac } - def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc } - def rowrpc { rpc @Else tbxrpc } - - aformat - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 5) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - # symbol for producing @Rowb rows - def @DoRowb - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values at "boption" level (i.e. Level 3) # - # # - ################################################################### - - def tbxp { bp @Else tblp } - def tbxt { bt @Else tblt } - def tbxbg { bbg @Else tblbg } - def tbxf { bf @Else tblf } - def tbxb { bb @Else tblb } - def tbxw { bw @Else tblw } - def tbxh { bh @Else tblh } - def tbxi { bi @Else tbli } - def tbxiv { biv @Else tbliv } - def tbxs { bs @Else tbls } - def tbxsh { bsh @Else tblsh } - def tbxml { bml @Else bmh @Else bm @Else tblml } - def tbxmr { bmr @Else bmh @Else bm @Else tblmr } - def tbxma { bma @Else bmv @Else bm @Else tblma } - def tbxmb { bmb @Else bmv @Else bm @Else tblmb } - def tbxra { bra @Else brh @Else br @Else tblra } - def tbxrb { brb @Else brh @Else br @Else tblrb } - def tbxrl { brl @Else brv @Else br @Else tblrl } - def tbxrr { brr @Else brv @Else br @Else tblrr } - def tbxraw { braw @Else brhw @Else brw @Else tblraw } - def tbxrbw { brbw @Else brhw @Else brw @Else tblrbw } - def tbxrlw { brlw @Else brvw @Else brw @Else tblrlw } - def tbxrrw { brrw @Else brvw @Else brw @Else tblrrw } - def tbxrag { brag @Else brhg @Else brg @Else tblrag } - def tbxrbg { brbg @Else brhg @Else brg @Else tblrbg } - def tbxrlg { brlg @Else brvg @Else brg @Else tblrlg } - def tbxrrg { brrg @Else brvg @Else brg @Else tblrrg } - def tbxrac { brac @Else brhc @Else brc @Else tblrac } - def tbxrbc { brbc @Else brhc @Else brc @Else tblrbc } - def tbxrlc { brlc @Else brvc @Else brc @Else tblrlc } - def tbxrrc { brrc @Else brvc @Else brc @Else tblrrc } - def tbxrpc { brpc @Else tblrpc } - - ################################################################### - # # - # Specific option values at @Rowb level (i.e. Level 4) # - # # - ################################################################### - - def rowp { p @Else tbxp } - def rowt { t @Else tblt } - def rowbg { bg @Else tbxbg } - def rowf { f @Else tbxf } - def rowb { b @Else tbxb } - def roww { w @Else tbxw } - def rowh { h @Else tbxh } - def rowi { i @Else tbxi } - def rowiv { iv @Else tbxiv } - def rows { s @Else tbxs } - def rowsh { sh @Else tbxsh } - def rowml { ml @Else mh @Else m @Else tbxml } - def rowmr { mr @Else mh @Else m @Else tbxmr } - def rowma { ma @Else mv @Else m @Else tbxma } - def rowmb { mb @Else mv @Else m @Else tbxmb } - def rowra { ra @Else rh @Else r @Else tbxra } - def rowrb { rb @Else rh @Else r @Else tbxrb } - def rowrl { rl @Else rv @Else r @Else tbxrl } - def rowrr { rr @Else rv @Else r @Else tbxrr } - def rowraw { raw @Else rhw @Else rw @Else tbxraw } - def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw } - def rowrag { rag @Else rhg @Else rg @Else tbxrag } - def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg } - def rowrac { rac @Else rhc @Else rc @Else tbxrac } - def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc } - def rowrpc { rpc @Else tbxrpc } - - bformat - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 5) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - # symbol for producing @Rowc rows - def @DoRowc - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values at "coption" level (i.e. Level 3) # - # # - ################################################################### - - def tbxp { cp @Else tblp } - def tbxt { ct @Else tblt } - def tbxbg { cbg @Else tblbg } - def tbxf { cf @Else tblf } - def tbxb { cb @Else tblb } - def tbxw { cw @Else tblw } - def tbxh { ch @Else tblh } - def tbxi { ci @Else tbli } - def tbxiv { civ @Else tbliv } - def tbxs { cs @Else tbls } - def tbxsh { csh @Else tblsh } - def tbxml { cml @Else cmh @Else cm @Else tblml } - def tbxmr { cmr @Else cmh @Else cm @Else tblmr } - def tbxma { cma @Else cmv @Else cm @Else tblma } - def tbxmb { cmb @Else cmv @Else cm @Else tblmb } - def tbxra { cra @Else crh @Else cr @Else tblra } - def tbxrb { crb @Else crh @Else cr @Else tblrb } - def tbxrl { crl @Else crv @Else cr @Else tblrl } - def tbxrr { crr @Else crv @Else cr @Else tblrr } - def tbxraw { craw @Else crhw @Else crw @Else tblraw } - def tbxrbw { crbw @Else crhw @Else crw @Else tblrbw } - def tbxrlw { crlw @Else crvw @Else crw @Else tblrlw } - def tbxrrw { crrw @Else crvw @Else crw @Else tblrrw } - def tbxrag { crag @Else crhg @Else crg @Else tblrag } - def tbxrbg { crbg @Else crhg @Else crg @Else tblrbg } - def tbxrlg { crlg @Else crvg @Else crg @Else tblrlg } - def tbxrrg { crrg @Else crvg @Else crg @Else tblrrg } - def tbxrac { crac @Else crhc @Else crc @Else tblrac } - def tbxrbc { crbc @Else crhc @Else crc @Else tblrbc } - def tbxrlc { crlc @Else crvc @Else crc @Else tblrlc } - def tbxrrc { crrc @Else crvc @Else crc @Else tblrrc } - def tbxrpc { crpc @Else tblrpc } - - ################################################################### - # # - # Specific option values at @Rowc level (i.e. Level 4) # - # # - ################################################################### - - def rowp { p @Else tbxp } - def rowt { t @Else tblt } - def rowbg { bg @Else tbxbg } - def rowf { f @Else tbxf } - def rowb { b @Else tbxb } - def roww { w @Else tbxw } - def rowh { h @Else tbxh } - def rowi { i @Else tbxi } - def rowiv { iv @Else tbxiv } - def rows { s @Else tbxs } - def rowsh { sh @Else tbxsh } - def rowml { ml @Else mh @Else m @Else tbxml } - def rowmr { mr @Else mh @Else m @Else tbxmr } - def rowma { ma @Else mv @Else m @Else tbxma } - def rowmb { mb @Else mv @Else m @Else tbxmb } - def rowra { ra @Else rh @Else r @Else tbxra } - def rowrb { rb @Else rh @Else r @Else tbxrb } - def rowrl { rl @Else rv @Else r @Else tbxrl } - def rowrr { rr @Else rv @Else r @Else tbxrr } - def rowraw { raw @Else rhw @Else rw @Else tbxraw } - def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw } - def rowrag { rag @Else rhg @Else rg @Else tbxrag } - def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg } - def rowrac { rac @Else rhc @Else rc @Else tbxrac } - def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc } - def rowrpc { rpc @Else tbxrpc } - - cformat - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 5) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - # symbol for producing @Rowd rows - def @DoRowd - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values at "doption" level (i.e. Level 3) # - # # - ################################################################### - - def tbxp { dp @Else tblp } - def tbxt { dt @Else tblt } - def tbxbg { dbg @Else tblbg } - def tbxf { df @Else tblf } - def tbxb { db @Else tblb } - def tbxw { dw @Else tblw } - def tbxh { dh @Else tblh } - def tbxi { di @Else tbli } - def tbxiv { div @Else tbliv } - def tbxs { ds @Else tbls } - def tbxsh { dsh @Else tblsh } - def tbxml { dml @Else dmh @Else dm @Else tblml } - def tbxmr { dmr @Else dmh @Else dm @Else tblmr } - def tbxma { dma @Else dmv @Else dm @Else tblma } - def tbxmb { dmb @Else dmv @Else dm @Else tblmb } - def tbxra { dra @Else drh @Else dr @Else tblra } - def tbxrb { drb @Else drh @Else dr @Else tblrb } - def tbxrl { drl @Else drv @Else dr @Else tblrl } - def tbxrr { drr @Else drv @Else dr @Else tblrr } - def tbxraw { draw @Else drhw @Else drw @Else tblraw } - def tbxrbw { drbw @Else drhw @Else drw @Else tblrbw } - def tbxrlw { drlw @Else drvw @Else drw @Else tblrlw } - def tbxrrw { drrw @Else drvw @Else drw @Else tblrrw } - def tbxrag { drag @Else drhg @Else drg @Else tblrag } - def tbxrbg { drbg @Else drhg @Else drg @Else tblrbg } - def tbxrlg { drlg @Else drvg @Else drg @Else tblrlg } - def tbxrrg { drrg @Else drvg @Else drg @Else tblrrg } - def tbxrac { drac @Else drhc @Else drc @Else tblrac } - def tbxrbc { drbc @Else drhc @Else drc @Else tblrbc } - def tbxrlc { drlc @Else drvc @Else drc @Else tblrlc } - def tbxrrc { drrc @Else drvc @Else drc @Else tblrrc } - def tbxrpc { drpc @Else tblrpc } - - ################################################################### - # # - # Specific option values at @Rowd level (i.e. Level 4) # - # # - ################################################################### - - def rowp { p @Else tbxp } - def rowt { t @Else tblt } - def rowbg { bg @Else tbxbg } - def rowf { f @Else tbxf } - def rowb { b @Else tbxb } - def roww { w @Else tbxw } - def rowh { h @Else tbxh } - def rowi { i @Else tbxi } - def rowiv { iv @Else tbxiv } - def rows { s @Else tbxs } - def rowsh { sh @Else tbxsh } - def rowml { ml @Else mh @Else m @Else tbxml } - def rowmr { mr @Else mh @Else m @Else tbxmr } - def rowma { ma @Else mv @Else m @Else tbxma } - def rowmb { mb @Else mv @Else m @Else tbxmb } - def rowra { ra @Else rh @Else r @Else tbxra } - def rowrb { rb @Else rh @Else r @Else tbxrb } - def rowrl { rl @Else rv @Else r @Else tbxrl } - def rowrr { rr @Else rv @Else r @Else tbxrr } - def rowraw { raw @Else rhw @Else rw @Else tbxraw } - def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw } - def rowrag { rag @Else rhg @Else rg @Else tbxrag } - def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg } - def rowrac { rac @Else rhc @Else rc @Else tbxrac } - def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc } - def rowrpc { rpc @Else tbxrpc } - - dformat - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 5) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - # symbol for producing @Rowe rows - def @DoRowe - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values at "eoption" level (i.e. Level 3) # - # # - ################################################################### - - def tbxp { ep @Else tblp } - def tbxt { et @Else tblt } - def tbxbg { ebg @Else tblbg } - def tbxf { ef @Else tblf } - def tbxb { eb @Else tblb } - def tbxw { ew @Else tblw } - def tbxh { eh @Else tblh } - def tbxi { ei @Else tbli } - def tbxiv { eiv @Else tbliv } - def tbxs { es @Else tbls } - def tbxsh { esh @Else tblsh } - def tbxml { eml @Else emh @Else em @Else tblml } - def tbxmr { emr @Else emh @Else em @Else tblmr } - def tbxma { ema @Else emv @Else em @Else tblma } - def tbxmb { emb @Else emv @Else em @Else tblmb } - def tbxra { era @Else erh @Else er @Else tblra } - def tbxrb { erb @Else erh @Else er @Else tblrb } - def tbxrl { erl @Else erv @Else er @Else tblrl } - def tbxrr { err @Else erv @Else er @Else tblrr } - def tbxraw { eraw @Else erhw @Else erw @Else tblraw } - def tbxrbw { erbw @Else erhw @Else erw @Else tblrbw } - def tbxrlw { erlw @Else ervw @Else erw @Else tblrlw } - def tbxrrw { errw @Else ervw @Else erw @Else tblrrw } - def tbxrag { erag @Else erhg @Else erg @Else tblrag } - def tbxrbg { erbg @Else erhg @Else erg @Else tblrbg } - def tbxrlg { erlg @Else ervg @Else erg @Else tblrlg } - def tbxrrg { errg @Else ervg @Else erg @Else tblrrg } - def tbxrac { erac @Else erhc @Else erc @Else tblrac } - def tbxrbc { erbc @Else erhc @Else erc @Else tblrbc } - def tbxrlc { erlc @Else ervc @Else erc @Else tblrlc } - def tbxrrc { errc @Else ervc @Else erc @Else tblrrc } - def tbxrpc { erpc @Else tblrpc } - - ################################################################### - # # - # Specific option values at @Rowe level (i.e. Level 4) # - # # - ################################################################### - - def rowp { p @Else tbxp } - def rowt { t @Else tblt } - def rowbg { bg @Else tbxbg } - def rowf { f @Else tbxf } - def rowb { b @Else tbxb } - def roww { w @Else tbxw } - def rowh { h @Else tbxh } - def rowi { i @Else tbxi } - def rowiv { iv @Else tbxiv } - def rows { s @Else tbxs } - def rowsh { sh @Else tbxsh } - def rowml { ml @Else mh @Else m @Else tbxml } - def rowmr { mr @Else mh @Else m @Else tbxmr } - def rowma { ma @Else mv @Else m @Else tbxma } - def rowmb { mb @Else mv @Else m @Else tbxmb } - def rowra { ra @Else rh @Else r @Else tbxra } - def rowrb { rb @Else rh @Else r @Else tbxrb } - def rowrl { rl @Else rv @Else r @Else tbxrl } - def rowrr { rr @Else rv @Else r @Else tbxrr } - def rowraw { raw @Else rhw @Else rw @Else tbxraw } - def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw } - def rowrag { rag @Else rhg @Else rg @Else tbxrag } - def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg } - def rowrac { rac @Else rhc @Else rc @Else tbxrac } - def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc } - def rowrpc { rpc @Else tbxrpc } - - eformat - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 5) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - # symbol for producing @Rowf rows - def @DoRowf - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values at "foption" level (i.e. Level 3) # - # # - ################################################################### - - def tbxp { fp @Else tblp } - def tbxt { ft @Else tblt } - def tbxbg { fbg @Else tblbg } - def tbxf { ff @Else tblf } - def tbxb { fb @Else tblb } - def tbxw { fw @Else tblw } - def tbxh { fh @Else tblh } - def tbxi { fi @Else tbli } - def tbxiv { fiv @Else tbliv } - def tbxs { fs @Else tbls } - def tbxsh { fsh @Else tblsh } - def tbxml { fml @Else fmh @Else fm @Else tblml } - def tbxmr { fmr @Else fmh @Else fm @Else tblmr } - def tbxma { fma @Else fmv @Else fm @Else tblma } - def tbxmb { fmb @Else fmv @Else fm @Else tblmb } - def tbxra { fra @Else frh @Else fr @Else tblra } - def tbxrb { frb @Else frh @Else fr @Else tblrb } - def tbxrl { frl @Else frv @Else fr @Else tblrl } - def tbxrr { frr @Else frv @Else fr @Else tblrr } - def tbxraw { fraw @Else frhw @Else frw @Else tblraw } - def tbxrbw { frbw @Else frhw @Else frw @Else tblrbw } - def tbxrlw { frlw @Else frvw @Else frw @Else tblrlw } - def tbxrrw { frrw @Else frvw @Else frw @Else tblrrw } - def tbxrag { frag @Else frhg @Else frg @Else tblrag } - def tbxrbg { frbg @Else frhg @Else frg @Else tblrbg } - def tbxrlg { frlg @Else frvg @Else frg @Else tblrlg } - def tbxrrg { frrg @Else frvg @Else frg @Else tblrrg } - def tbxrac { frac @Else frhc @Else frc @Else tblrac } - def tbxrbc { frbc @Else frhc @Else frc @Else tblrbc } - def tbxrlc { frlc @Else frvc @Else frc @Else tblrlc } - def tbxrrc { frrc @Else frvc @Else frc @Else tblrrc } - def tbxrpc { frpc @Else tblrpc } - - ################################################################### - # # - # Specific option values at @Rowf level (i.e. Level 4) # - # # - ################################################################### - - def rowp { p @Else tbxp } - def rowt { t @Else tblt } - def rowbg { bg @Else tbxbg } - def rowf { f @Else tbxf } - def rowb { b @Else tbxb } - def roww { w @Else tbxw } - def rowh { h @Else tbxh } - def rowi { i @Else tbxi } - def rowiv { iv @Else tbxiv } - def rows { s @Else tbxs } - def rowsh { sh @Else tbxsh } - def rowml { ml @Else mh @Else m @Else tbxml } - def rowmr { mr @Else mh @Else m @Else tbxmr } - def rowma { ma @Else mv @Else m @Else tbxma } - def rowmb { mb @Else mv @Else m @Else tbxmb } - def rowra { ra @Else rh @Else r @Else tbxra } - def rowrb { rb @Else rh @Else r @Else tbxrb } - def rowrl { rl @Else rv @Else r @Else tbxrl } - def rowrr { rr @Else rv @Else r @Else tbxrr } - def rowraw { raw @Else rhw @Else rw @Else tbxraw } - def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw } - def rowrag { rag @Else rhg @Else rg @Else tbxrag } - def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg } - def rowrac { rac @Else rhc @Else rc @Else tbxrac } - def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc } - def rowrpc { rpc @Else tbxrpc } - - fformat - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 5) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - # symbol for producing @Rowg rows - def @DoRowg - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values at "doption" level (i.e. Level 3) # - # # - ################################################################### - - def tbxp { gp @Else tblp } - def tbxt { gt @Else tblt } - def tbxbg { gbg @Else tblbg } - def tbxf { gf @Else tblf } - def tbxb { gb @Else tblb } - def tbxw { gw @Else tblw } - def tbxh { gh @Else tblh } - def tbxi { gi @Else tbli } - def tbxiv { giv @Else tbliv } - def tbxs { gs @Else tbls } - def tbxsh { gsh @Else tblsh } - def tbxml { gml @Else gmh @Else gm @Else tblml } - def tbxmr { gmr @Else gmh @Else gm @Else tblmr } - def tbxma { gma @Else gmv @Else gm @Else tblma } - def tbxmb { gmb @Else gmv @Else gm @Else tblmb } - def tbxra { gra @Else grh @Else gr @Else tblra } - def tbxrb { grb @Else grh @Else gr @Else tblrb } - def tbxrl { grl @Else grv @Else gr @Else tblrl } - def tbxrr { grr @Else grv @Else gr @Else tblrr } - def tbxraw { graw @Else grhw @Else grw @Else tblraw } - def tbxrbw { grbw @Else grhw @Else grw @Else tblrbw } - def tbxrlw { grlw @Else grvw @Else grw @Else tblrlw } - def tbxrrw { grrw @Else grvw @Else grw @Else tblrrw } - def tbxrag { grag @Else grhg @Else grg @Else tblrag } - def tbxrbg { grbg @Else grhg @Else grg @Else tblrbg } - def tbxrlg { grlg @Else grvg @Else grg @Else tblrlg } - def tbxrrg { grrg @Else grvg @Else grg @Else tblrrg } - def tbxrac { grac @Else grhc @Else grc @Else tblrac } - def tbxrbc { grbc @Else grhc @Else grc @Else tblrbc } - def tbxrlc { grlc @Else grvc @Else grc @Else tblrlc } - def tbxrrc { grrc @Else grvc @Else grc @Else tblrrc } - def tbxrpc { grpc @Else tblrpc } - - ################################################################### - # # - # Specific option values at @Rowg level (i.e. Level 4) # - # # - ################################################################### - - def rowp { p @Else tbxp } - def rowt { t @Else tblt } - def rowbg { bg @Else tbxbg } - def rowf { f @Else tbxf } - def rowb { b @Else tbxb } - def roww { w @Else tbxw } - def rowh { h @Else tbxh } - def rowi { i @Else tbxi } - def rowiv { iv @Else tbxiv } - def rows { s @Else tbxs } - def rowsh { sh @Else tbxsh } - def rowml { ml @Else mh @Else m @Else tbxml } - def rowmr { mr @Else mh @Else m @Else tbxmr } - def rowma { ma @Else mv @Else m @Else tbxma } - def rowmb { mb @Else mv @Else m @Else tbxmb } - def rowra { ra @Else rh @Else r @Else tbxra } - def rowrb { rb @Else rh @Else r @Else tbxrb } - def rowrl { rl @Else rv @Else r @Else tbxrl } - def rowrr { rr @Else rv @Else r @Else tbxrr } - def rowraw { raw @Else rhw @Else rw @Else tbxraw } - def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw } - def rowrag { rag @Else rhg @Else rg @Else tbxrag } - def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg } - def rowrac { rac @Else rhc @Else rc @Else tbxrac } - def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc } - def rowrpc { rpc @Else tbxrpc } - - gformat - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 5) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - # symbol for producing @Rowh rows - def @DoRowh - named paint p {} - import @TextureImport named texture t {} - named background bg {} - named font f {} - named break b {} - named width w {} - named height h {} - named indent i {} - named indentvertical iv {} - named strut s {} - named struthorizontal sh {} - named margin m {} - named marginhorizontal mh {} - named marginleft ml {} - named marginright mr {} - named marginvertical mv {} - named marginabove ma {} - named marginbelow mb {} - named rule r {} - named rulehorizontal rh {} - named ruleabove ra {} - named rulebelow rb {} - named rulevertical rv {} - named ruleleft rl {} - named ruleright rr {} - named rulewidth rw {} - named rulehorizontalwidth rhw {} - named ruleabovewidth raw {} - named rulebelowwidth rbw {} - named ruleverticalwidth rvw {} - named ruleleftwidth rlw {} - named rulerightwidth rrw {} - named rulegap rg {} - named rulehorizontalgap rhg {} - named ruleabovegap rag {} - named rulebelowgap rbg {} - named ruleverticalgap rvg {} - named ruleleftgap rlg {} - named rulerightgap rrg {} - named rulecolour rulecolor rc {} - named rulehorizontalcolour rulehorizontalcolor rhc {} - named ruleabovecolour ruleabovecolor rac {} - named rulebelowcolour rulebelowcolor rbc {} - named ruleverticalcolour ruleverticalcolor rvc {} - named ruleleftcolour ruleleftcolor rlc {} - named rulerightcolour rulerightcolor rrc {} - named ruleplainchar rpc {} - named A {} named B {} named C {} named D {} named E {} - named F {} named G {} named H {} named I {} named J {} - named K {} named L {} named M {} named N {} named O {} - named P {} named Q {} named R {} named S {} named T {} - named U {} named V {} named W {} named X {} named Y {} - named Z {} - { - - ################################################################### - # # - # Specific option values at "hoption" level (i.e. Level 3) # - # # - ################################################################### - - def tbxp { hp @Else tblp } - def tbxt { ht @Else tblt } - def tbxbg { hbg @Else tblbg } - def tbxf { hf @Else tblf } - def tbxb { hb @Else tblb } - def tbxw { hw @Else tblw } - def tbxh { hh @Else tblh } - def tbxi { hi @Else tbli } - def tbxiv { hiv @Else tbliv } - def tbxs { hs @Else tbls } - def tbxsh { hsh @Else tblsh } - def tbxml { hml @Else hmh @Else hm @Else tblml } - def tbxmr { hmr @Else hmh @Else hm @Else tblmr } - def tbxma { hma @Else hmv @Else hm @Else tblma } - def tbxmb { hmb @Else hmv @Else hm @Else tblmb } - def tbxra { hra @Else hrh @Else hr @Else tblra } - def tbxrb { hrb @Else hrh @Else hr @Else tblrb } - def tbxrl { hrl @Else hrv @Else hr @Else tblrl } - def tbxrr { hrr @Else hrv @Else hr @Else tblrr } - def tbxraw { hraw @Else hrhw @Else hrw @Else tblraw } - def tbxrbw { hrbw @Else hrhw @Else hrw @Else tblrbw } - def tbxrlw { hrlw @Else hrvw @Else hrw @Else tblrlw } - def tbxrrw { hrrw @Else hrvw @Else hrw @Else tblrrw } - def tbxrag { hrag @Else hrhg @Else hrg @Else tblrag } - def tbxrbg { hrbg @Else hrhg @Else hrg @Else tblrbg } - def tbxrlg { hrlg @Else hrvg @Else hrg @Else tblrlg } - def tbxrrg { hrrg @Else hrvg @Else hrg @Else tblrrg } - def tbxrac { hrac @Else hrhc @Else hrc @Else tblrac } - def tbxrbc { hrbc @Else hrhc @Else hrc @Else tblrbc } - def tbxrlc { hrlc @Else hrvc @Else hrc @Else tblrlc } - def tbxrrc { hrrc @Else hrvc @Else hrc @Else tblrrc } - def tbxrpc { hrpc @Else tblrpc } - - ################################################################### - # # - # Specific option values at @Rowh level (i.e. Level 4) # - # # - ################################################################### - - def rowp { p @Else tbxp } - def rowt { t @Else tblt } - def rowbg { bg @Else tbxbg } - def rowf { f @Else tbxf } - def rowb { b @Else tbxb } - def roww { w @Else tbxw } - def rowh { h @Else tbxh } - def rowi { i @Else tbxi } - def rowiv { iv @Else tbxiv } - def rows { s @Else tbxs } - def rowsh { sh @Else tbxsh } - def rowml { ml @Else mh @Else m @Else tbxml } - def rowmr { mr @Else mh @Else m @Else tbxmr } - def rowma { ma @Else mv @Else m @Else tbxma } - def rowmb { mb @Else mv @Else m @Else tbxmb } - def rowra { ra @Else rh @Else r @Else tbxra } - def rowrb { rb @Else rh @Else r @Else tbxrb } - def rowrl { rl @Else rv @Else r @Else tbxrl } - def rowrr { rr @Else rv @Else r @Else tbxrr } - def rowraw { raw @Else rhw @Else rw @Else tbxraw } - def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw } - def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw } - def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw } - def rowrag { rag @Else rhg @Else rg @Else tbxrag } - def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg } - def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg } - def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg } - def rowrac { rac @Else rhc @Else rc @Else tbxrac } - def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc } - def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc } - def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc } - def rowrpc { rpc @Else tbxrpc } - - hformat - A { A } B { B } C { C } D { D } E { E } F { F } - G { G } H { H } I { I } J { J } K { K } L { L } - M { M } N { N } O { O } P { P } Q { Q } R { R } - S { S } T { T } U { U } V { V } W { W } X { X } - Y { Y } Z { Z } - @Cell { - - @DoCell - - ####################################################### - # # - # Specific option values to @Cell (i.e. Level 5) # - # # - ####################################################### - - p { p @Else rowp } - t { t @Else rowt } - bg { bg @Else rowbg } - f { f @Else rowf } - b { b @Else rowb } - w { w @Else roww } - h { h @Else rowh } - i { i @Else rowi } - iv { iv @Else rowiv } - s { s @Else rows } - sh { sh @Else rowsh } - ml { ml @Else mh @Else m @Else rowml } - mr { mr @Else mh @Else m @Else rowmr } - ma { ma @Else mv @Else m @Else rowma } - mb { mb @Else mv @Else m @Else rowmb } - ra { ra @Else rh @Else r @Else rowra } - rb { rb @Else rh @Else r @Else rowrb } - rl { rl @Else rv @Else r @Else rowrl } - rr { rr @Else rv @Else r @Else rowrr } - raw { raw @Else rhw @Else rw @Else rowraw } - rbw { rbw @Else rhw @Else rw @Else rowrbw } - rlw { rlw @Else rvw @Else rw @Else rowrlw } - rrw { rrw @Else rvw @Else rw @Else rowrrw } - rag { rag @Else rhg @Else rg @Else rowrag } - rbg { rbg @Else rhg @Else rg @Else rowrbg } - rlg { rlg @Else rvg @Else rg @Else rowrlg } - rrg { rrg @Else rvg @Else rg @Else rowrrg } - rac { rac @Else rhc @Else rc @Else rowrac } - rbc { rbc @Else rhc @Else rc @Else rowrbc } - rlc { rlc @Else rvc @Else rc @Else rowrlc } - rrc { rrc @Else rvc @Else rc @Else rowrrc } - rpc { rpc @Else rowrpc } - - x - } - } - - macro @Row { / @DoRow } - macro @Rowa { / @DoRowa } - macro @Rowb { / @DoRowb } - macro @Rowc { / @DoRowc } - macro @Rowd { / @DoRowd } - macro @Rowe { / @DoRowe } - macro @Rowf { / @DoRowf } - macro @Rowg { / @DoRowg } - macro @Rowh { / @DoRowh } - - macro @FirstRow { @DoRow } - macro @FirstRowa { @DoRowa } - macro @FirstRowb { @DoRowb } - macro @FirstRowc { @DoRowc } - macro @FirstRowd { @DoRowd } - macro @FirstRowe { @DoRowe } - macro @FirstRowf { @DoRowf } - macro @FirstRowg { @DoRowg } - macro @FirstRowh { @DoRowh } - - macro @MarkRow { ^/ @DoRow } - macro @MarkRowa { ^/ @DoRowa } - macro @MarkRowb { ^/ @DoRowb } - macro @MarkRowc { ^/ @DoRowc } - macro @MarkRowd { ^/ @DoRowd } - macro @MarkRowe { ^/ @DoRowe } - macro @MarkRowf { ^/ @DoRowf } - macro @MarkRowg { ^/ @DoRowg } - macro @MarkRowh { ^/ @DoRowh } - - macro @NoBreakRow { /0iu @DoRow } - macro @NoBreakRowa { /0iu @DoRowa } - macro @NoBreakRowb { /0iu @DoRowb } - macro @NoBreakRowc { /0iu @DoRowc } - macro @NoBreakRowd { /0iu @DoRowd } - macro @NoBreakRowe { /0iu @DoRowe } - macro @NoBreakRowf { /0iu @DoRowf } - macro @NoBreakRowg { /0iu @DoRowg } - macro @NoBreakRowh { /0iu @DoRowh } - - macro @HeaderRow { / @BeginHeaderComponent @DoRow } - macro @HeaderRowa { / @BeginHeaderComponent @DoRowa } - macro @HeaderRowb { / @BeginHeaderComponent @DoRowb } - macro @HeaderRowc { / @BeginHeaderComponent @DoRowc } - macro @HeaderRowd { / @BeginHeaderComponent @DoRowd } - macro @HeaderRowe { / @BeginHeaderComponent @DoRowe } - macro @HeaderRowf { / @BeginHeaderComponent @DoRowf } - macro @HeaderRowg { / @BeginHeaderComponent @DoRowg } - macro @HeaderRowh { / @BeginHeaderComponent @DoRowh } - - macro @HeaderFirstRow { @BeginHeaderComponent @DoRow } - macro @HeaderFirstRowa { @BeginHeaderComponent @DoRowa } - macro @HeaderFirstRowb { @BeginHeaderComponent @DoRowb } - macro @HeaderFirstRowc { @BeginHeaderComponent @DoRowc } - macro @HeaderFirstRowd { @BeginHeaderComponent @DoRowd } - macro @HeaderFirstRowe { @BeginHeaderComponent @DoRowe } - macro @HeaderFirstRowf { @BeginHeaderComponent @DoRowf } - macro @HeaderFirstRowg { @BeginHeaderComponent @DoRowg } - macro @HeaderFirstRowh { @BeginHeaderComponent @DoRowh } - - macro @EndHeaderRow { / @EndHeaderComponent } - - macro @NP { /"1.1b" } - - @Body - } - -@End @TblSetup diff --git a/include/include/ts b/include/include/ts deleted file mode 100644 index 2711633..0000000 --- a/include/include/ts +++ /dev/null @@ -1,108 +0,0 @@ - -############################################################################### -# # -# Lout @ToySetup package (Jeff Kingston, July 1993, updated October 1994) # -# # -# This file has been placed in the public domain by its author. # -# # -# In response to a user request I have put together this tiny package for # -# people to play with who want to start learning how to do page layout and # -# galleys with Lout. It produces a very simple sequence of pages. To # -# invoke the package, run "lout myfile > op" where myfile looks like this: # -# # -# @SysInclude { ts } # -# @Use { @ToySetup } # -# @Document # -# // # -# @Text { # -# Any text you like here, using @I, @B, @Heading, @PP, @LP, @DP, # -# @LeftDisplay, @IndentedDisplay, and @CenteredDisplay just as in # -# DocumentSetup. # -# } # -# # -############################################################################### - -@SysInclude { langdefs } - -export @I @B @Heading @PP @LP @DP @NP - @LeftDisplay @IndentedDisplay @CenteredDisplay - @Text @Document - -def @ToySetup - named @PageWidth { 21.0c } - named @PageHeight { 29.7c } -@Begin - - ########################################################################### - # # - # Font changes, headings, and paragraphs. # - # # - ########################################################################### - - def @I right x { Slope @Font x } - def @B right x { Bold @Font x } - def @Heading right x { ragged @Break @B x } - - macro @PP { //1.3vx 1.0f @Wide &0i } - macro @LP { //1.3vx } - macro @DP { //0.5v } - macro @NP { //1.1b } - - - ########################################################################### - # # - # Displays. # - # # - ########################################################################### - - def @DispPlace { @Galley } - - def @Disp into { @DispPlace&&preceding } - right x - { - @OneRow x - } - - macro @LeftDisplay { @DP | @DispPlace | @DP // @Disp } - macro @IndentedDisplay { @DP |2f @DispPlace | @DP // @Disp } - macro @CenteredDisplay { @DP |0.5rt @DispPlace | @DP // @Disp } - - - ########################################################################### - # # - # Page layout. # - # # - ########################################################################### - - def @TextPlace { @Galley } - - def @Text force into { @TextPlace&&preceding } - right x - { - x - } - - def @Page right x - { - @PageWidth @Wide @PageHeight @High - { Times Base 12p } @Font - { adjust nohyphen 14px } @Break - English @Language { 0 0 0 } @SetColour - { //1i ||1i - @HExpand @VExpand x - ||1i //1i - } - } - - def @PageList right num - { - @Page { |0.5rt - num - //0.4i @TextPlace } - // - @PageList @Next num - } - - def @Document { @PageList 1 } - -@End @ToySetup - -@SysDatabase @FontDef { fontdefs } # font definitions diff --git a/include/include/xrgb b/include/include/xrgb deleted file mode 100644 index 478f626..0000000 --- a/include/include/xrgb +++ /dev/null @@ -1,697 +0,0 @@ -############################################################################### -# # -# @Xrgb symbol # -# # -# Contributed by Mark Summerfield # -# Tested and installed by Jeff Kingston, 18 November 2002 # -# November 2002 # -# # -# Said to be the list of named colours known to the X-windows # -# system. There are 752 colours here, but many are listed twice # -# under different spellings of their names. # -# # -# I've deleted the else clause and moved "black" to the top. # -# This will ensure that if the user mis-types the colour, an # -# error message will be printed and "black" substituted. # -# # -# 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 # -# the Free Software Foundation; either Version 3, or (at your option) # -# any later version. # -# # -# This program is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with this program; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA # -# # -# As a special exception, when this file is read by Lout when processing # -# a Lout source document, you may use the result without restriction. # -# # -############################################################################### - -def @Xrgb right x { - x @Case { - { black } @Yield { rgb "0.000 0.000 0.000" } - { snow } @Yield { rgb "1.000 0.980 0.980" } - { ghostwhite } @Yield { rgb "0.973 0.973 1.000" } - { whitesmoke } @Yield { rgb "0.961 0.961 0.961" } - { gainsboro } @Yield { rgb "0.863 0.863 0.863" } - { floralwhite } @Yield { rgb "1.000 0.980 0.941" } - { oldlace } @Yield { rgb "0.992 0.961 0.902" } - { linen } @Yield { rgb "0.980 0.941 0.902" } - { antiquewhite } @Yield { rgb "0.980 0.922 0.843" } - { papayawhip } @Yield { rgb "1.000 0.937 0.835" } - { blanchedalmond } @Yield { rgb "1.000 0.922 0.804" } - { bisque } @Yield { rgb "1.000 0.894 0.769" } - { peachpuff } @Yield { rgb "1.000 0.855 0.725" } - { navajowhite } @Yield { rgb "1.000 0.871 0.678" } - { moccasin } @Yield { rgb "1.000 0.894 0.710" } - { cornsilk } @Yield { rgb "1.000 0.973 0.863" } - { ivory } @Yield { rgb "1.000 1.000 0.941" } - { lemonchiffon } @Yield { rgb "1.000 0.980 0.804" } - { seashell } @Yield { rgb "1.000 0.961 0.933" } - { honeydew } @Yield { rgb "0.941 1.000 0.941" } - { mintcream } @Yield { rgb "0.961 1.000 0.980" } - { azure } @Yield { rgb "0.941 1.000 1.000" } - { aliceblue } @Yield { rgb "0.941 0.973 1.000" } - { lavender } @Yield { rgb "0.902 0.902 0.980" } - { lavenderblush } @Yield { rgb "1.000 0.941 0.961" } - { mistyrose } @Yield { rgb "1.000 0.894 0.882" } - { white } @Yield { rgb "1.000 1.000 1.000" } - { darkslategray } @Yield { rgb "0.184 0.310 0.310" } - { darkslategrey } @Yield { rgb "0.184 0.310 0.310" } - { dimgray } @Yield { rgb "0.412 0.412 0.412" } - { dimgrey } @Yield { rgb "0.412 0.412 0.412" } - { slategray } @Yield { rgb "0.439 0.502 0.565" } - { slategrey } @Yield { rgb "0.439 0.502 0.565" } - { lightslategray } @Yield { rgb "0.467 0.533 0.600" } - { lightslategrey } @Yield { rgb "0.467 0.533 0.600" } - { gray } @Yield { rgb "0.745 0.745 0.745" } - { grey } @Yield { rgb "0.745 0.745 0.745" } - { lightgrey } @Yield { rgb "0.827 0.827 0.827" } - { lightgray } @Yield { rgb "0.827 0.827 0.827" } - { midnightblue } @Yield { rgb "0.098 0.098 0.439" } - { navy } @Yield { rgb "0.000 0.000 0.502" } - { navyblue } @Yield { rgb "0.000 0.000 0.502" } - { cornflowerblue } @Yield { rgb "0.392 0.584 0.929" } - { darkslateblue } @Yield { rgb "0.282 0.239 0.545" } - { slateblue } @Yield { rgb "0.416 0.353 0.804" } - { mediumslateblue } @Yield { rgb "0.482 0.408 0.933" } - { lightslateblue } @Yield { rgb "0.518 0.439 1.000" } - { mediumblue } @Yield { rgb "0.000 0.000 0.804" } - { royalblue } @Yield { rgb "0.255 0.412 0.882" } - { blue } @Yield { rgb "0.000 0.000 1.000" } - { dodgerblue } @Yield { rgb "0.118 0.565 1.000" } - { deepskyblue } @Yield { rgb "0.000 0.749 1.000" } - { skyblue } @Yield { rgb "0.529 0.808 0.922" } - { lightskyblue } @Yield { rgb "0.529 0.808 0.980" } - { steelblue } @Yield { rgb "0.275 0.510 0.706" } - { lightsteelblue } @Yield { rgb "0.690 0.769 0.871" } - { lightblue } @Yield { rgb "0.678 0.847 0.902" } - { powderblue } @Yield { rgb "0.690 0.878 0.902" } - { paleturquoise } @Yield { rgb "0.686 0.933 0.933" } - { darkturquoise } @Yield { rgb "0.000 0.808 0.820" } - { mediumturquoise } @Yield { rgb "0.282 0.820 0.800" } - { turquoise } @Yield { rgb "0.251 0.878 0.816" } - { cyan } @Yield { rgb "0.000 1.000 1.000" } - { lightcyan } @Yield { rgb "0.878 1.000 1.000" } - { cadetblue } @Yield { rgb "0.373 0.620 0.627" } - { mediumaquamarine } @Yield { rgb "0.400 0.804 0.667" } - { aquamarine } @Yield { rgb "0.498 1.000 0.831" } - { darkgreen } @Yield { rgb "0.000 0.392 0.000" } - { darkolivegreen } @Yield { rgb "0.333 0.420 0.184" } - { darkseagreen } @Yield { rgb "0.561 0.737 0.561" } - { seagreen } @Yield { rgb "0.180 0.545 0.341" } - { mediumseagreen } @Yield { rgb "0.235 0.702 0.443" } - { lightseagreen } @Yield { rgb "0.125 0.698 0.667" } - { palegreen } @Yield { rgb "0.596 0.984 0.596" } - { springgreen } @Yield { rgb "0.000 1.000 0.498" } - { lawngreen } @Yield { rgb "0.486 0.988 0.000" } - { green } @Yield { rgb "0.000 1.000 0.000" } - { chartreuse } @Yield { rgb "0.498 1.000 0.000" } - { mediumspringgreen } @Yield { rgb "0.000 0.980 0.604" } - { greenyellow } @Yield { rgb "0.678 1.000 0.184" } - { limegreen } @Yield { rgb "0.196 0.804 0.196" } - { yellowgreen } @Yield { rgb "0.604 0.804 0.196" } - { forestgreen } @Yield { rgb "0.133 0.545 0.133" } - { olivedrab } @Yield { rgb "0.420 0.557 0.137" } - { darkkhaki } @Yield { rgb "0.741 0.718 0.420" } - { khaki } @Yield { rgb "0.941 0.902 0.549" } - { palegoldenrod } @Yield { rgb "0.933 0.910 0.667" } - { lightgoldenrodyellow }@Yield{ rgb "0.980 0.980 0.824" } - { lightyellow } @Yield { rgb "1.000 1.000 0.878" } - { yellow } @Yield { rgb "1.000 1.000 0.000" } - { gold } @Yield { rgb "1.000 0.843 0.000" } - { lightgoldenrod } @Yield { rgb "0.933 0.867 0.510" } - { goldenrod } @Yield { rgb "0.855 0.647 0.125" } - { darkgoldenrod } @Yield { rgb "0.722 0.525 0.043" } - { rosybrown } @Yield { rgb "0.737 0.561 0.561" } - { indianred } @Yield { rgb "0.804 0.361 0.361" } - { saddlebrown } @Yield { rgb "0.545 0.271 0.075" } - { sienna } @Yield { rgb "0.627 0.322 0.176" } - { peru } @Yield { rgb "0.804 0.522 0.247" } - { burlywood } @Yield { rgb "0.871 0.722 0.529" } - { beige } @Yield { rgb "0.961 0.961 0.863" } - { wheat } @Yield { rgb "0.961 0.871 0.702" } - { sandybrown } @Yield { rgb "0.957 0.643 0.376" } - { tan } @Yield { rgb "0.824 0.706 0.549" } - { chocolate } @Yield { rgb "0.824 0.412 0.118" } - { firebrick } @Yield { rgb "0.698 0.133 0.133" } - { brown } @Yield { rgb "0.647 0.165 0.165" } - { darksalmon } @Yield { rgb "0.914 0.588 0.478" } - { salmon } @Yield { rgb "0.980 0.502 0.447" } - { lightsalmon } @Yield { rgb "1.000 0.627 0.478" } - { orange } @Yield { rgb "1.000 0.647 0.000" } - { darkorange } @Yield { rgb "1.000 0.549 0.000" } - { coral } @Yield { rgb "1.000 0.498 0.314" } - { lightcoral } @Yield { rgb "0.941 0.502 0.502" } - { tomato } @Yield { rgb "1.000 0.388 0.278" } - { orangered } @Yield { rgb "1.000 0.271 0.000" } - { red } @Yield { rgb "1.000 0.000 0.000" } - { hotpink } @Yield { rgb "1.000 0.412 0.706" } - { deeppink } @Yield { rgb "1.000 0.078 0.576" } - { pink } @Yield { rgb "1.000 0.753 0.796" } - { lightpink } @Yield { rgb "1.000 0.714 0.757" } - { palevioletred } @Yield { rgb "0.859 0.439 0.576" } - { maroon } @Yield { rgb "0.690 0.188 0.376" } - { mediumvioletred } @Yield { rgb "0.780 0.082 0.522" } - { violetred } @Yield { rgb "0.816 0.125 0.565" } - { magenta } @Yield { rgb "1.000 0.000 1.000" } - { violet } @Yield { rgb "0.933 0.510 0.933" } - { plum } @Yield { rgb "0.867 0.627 0.867" } - { orchid } @Yield { rgb "0.855 0.439 0.839" } - { mediumorchid } @Yield { rgb "0.729 0.333 0.827" } - { darkorchid } @Yield { rgb "0.600 0.196 0.800" } - { darkviolet } @Yield { rgb "0.580 0.000 0.827" } - { blueviolet } @Yield { rgb "0.541 0.169 0.886" } - { purple } @Yield { rgb "0.627 0.125 0.941" } - { mediumpurple } @Yield { rgb "0.576 0.439 0.859" } - { thistle } @Yield { rgb "0.847 0.749 0.847" } - { snow1 } @Yield { rgb "1.000 0.980 0.980" } - { snow2 } @Yield { rgb "0.933 0.914 0.914" } - { snow3 } @Yield { rgb "0.804 0.788 0.788" } - { snow4 } @Yield { rgb "0.545 0.537 0.537" } - { seashell1 } @Yield { rgb "1.000 0.961 0.933" } - { seashell2 } @Yield { rgb "0.933 0.898 0.871" } - { seashell3 } @Yield { rgb "0.804 0.773 0.749" } - { seashell4 } @Yield { rgb "0.545 0.525 0.510" } - { antiquewhite1 } @Yield { rgb "1.000 0.937 0.859" } - { antiquewhite2 } @Yield { rgb "0.933 0.875 0.800" } - { antiquewhite3 } @Yield { rgb "0.804 0.753 0.690" } - { antiquewhite4 } @Yield { rgb "0.545 0.514 0.471" } - { bisque1 } @Yield { rgb "1.000 0.894 0.769" } - { bisque2 } @Yield { rgb "0.933 0.835 0.718" } - { bisque3 } @Yield { rgb "0.804 0.718 0.620" } - { bisque4 } @Yield { rgb "0.545 0.490 0.420" } - { peachpuff1 } @Yield { rgb "1.000 0.855 0.725" } - { peachpuff2 } @Yield { rgb "0.933 0.796 0.678" } - { peachpuff3 } @Yield { rgb "0.804 0.686 0.584" } - { peachpuff4 } @Yield { rgb "0.545 0.467 0.396" } - { navajowhite1 } @Yield { rgb "1.000 0.871 0.678" } - { navajowhite2 } @Yield { rgb "0.933 0.812 0.631" } - { navajowhite3 } @Yield { rgb "0.804 0.702 0.545" } - { navajowhite4 } @Yield { rgb "0.545 0.475 0.369" } - { lemonchiffon1 } @Yield { rgb "1.000 0.980 0.804" } - { lemonchiffon2 } @Yield { rgb "0.933 0.914 0.749" } - { lemonchiffon3 } @Yield { rgb "0.804 0.788 0.647" } - { lemonchiffon4 } @Yield { rgb "0.545 0.537 0.439" } - { cornsilk1 } @Yield { rgb "1.000 0.973 0.863" } - { cornsilk2 } @Yield { rgb "0.933 0.910 0.804" } - { cornsilk3 } @Yield { rgb "0.804 0.784 0.694" } - { cornsilk4 } @Yield { rgb "0.545 0.533 0.471" } - { ivory1 } @Yield { rgb "1.000 1.000 0.941" } - { ivory2 } @Yield { rgb "0.933 0.933 0.878" } - { ivory3 } @Yield { rgb "0.804 0.804 0.757" } - { ivory4 } @Yield { rgb "0.545 0.545 0.514" } - { honeydew1 } @Yield { rgb "0.941 1.000 0.941" } - { honeydew2 } @Yield { rgb "0.878 0.933 0.878" } - { honeydew3 } @Yield { rgb "0.757 0.804 0.757" } - { honeydew4 } @Yield { rgb "0.514 0.545 0.514" } - { lavenderblush1 } @Yield { rgb "1.000 0.941 0.961" } - { lavenderblush2 } @Yield { rgb "0.933 0.878 0.898" } - { lavenderblush3 } @Yield { rgb "0.804 0.757 0.773" } - { lavenderblush4 } @Yield { rgb "0.545 0.514 0.525" } - { mistyrose1 } @Yield { rgb "1.000 0.894 0.882" } - { mistyrose2 } @Yield { rgb "0.933 0.835 0.824" } - { mistyrose3 } @Yield { rgb "0.804 0.718 0.710" } - { mistyrose4 } @Yield { rgb "0.545 0.490 0.482" } - { azure1 } @Yield { rgb "0.941 1.000 1.000" } - { azure2 } @Yield { rgb "0.878 0.933 0.933" } - { azure3 } @Yield { rgb "0.757 0.804 0.804" } - { azure4 } @Yield { rgb "0.514 0.545 0.545" } - { slateblue1 } @Yield { rgb "0.514 0.435 1.000" } - { slateblue2 } @Yield { rgb "0.478 0.404 0.933" } - { slateblue3 } @Yield { rgb "0.412 0.349 0.804" } - { slateblue4 } @Yield { rgb "0.278 0.235 0.545" } - { royalblue1 } @Yield { rgb "0.282 0.463 1.000" } - { royalblue2 } @Yield { rgb "0.263 0.431 0.933" } - { royalblue3 } @Yield { rgb "0.227 0.373 0.804" } - { royalblue4 } @Yield { rgb "0.153 0.251 0.545" } - { blue1 } @Yield { rgb "0.000 0.000 1.000" } - { blue2 } @Yield { rgb "0.000 0.000 0.933" } - { blue3 } @Yield { rgb "0.000 0.000 0.804" } - { blue4 } @Yield { rgb "0.000 0.000 0.545" } - { dodgerblue1 } @Yield { rgb "0.118 0.565 1.000" } - { dodgerblue2 } @Yield { rgb "0.110 0.525 0.933" } - { dodgerblue3 } @Yield { rgb "0.094 0.455 0.804" } - { dodgerblue4 } @Yield { rgb "0.063 0.306 0.545" } - { steelblue1 } @Yield { rgb "0.388 0.722 1.000" } - { steelblue2 } @Yield { rgb "0.361 0.675 0.933" } - { steelblue3 } @Yield { rgb "0.310 0.580 0.804" } - { steelblue4 } @Yield { rgb "0.212 0.392 0.545" } - { deepskyblue1 } @Yield { rgb "0.000 0.749 1.000" } - { deepskyblue2 } @Yield { rgb "0.000 0.698 0.933" } - { deepskyblue3 } @Yield { rgb "0.000 0.604 0.804" } - { deepskyblue4 } @Yield { rgb "0.000 0.408 0.545" } - { skyblue1 } @Yield { rgb "0.529 0.808 1.000" } - { skyblue2 } @Yield { rgb "0.494 0.753 0.933" } - { skyblue3 } @Yield { rgb "0.424 0.651 0.804" } - { skyblue4 } @Yield { rgb "0.290 0.439 0.545" } - { lightskyblue1 } @Yield { rgb "0.690 0.886 1.000" } - { lightskyblue2 } @Yield { rgb "0.643 0.827 0.933" } - { lightskyblue3 } @Yield { rgb "0.553 0.714 0.804" } - { lightskyblue4 } @Yield { rgb "0.376 0.482 0.545" } - { slategray1 } @Yield { rgb "0.776 0.886 1.000" } - { slategray2 } @Yield { rgb "0.725 0.827 0.933" } - { slategray3 } @Yield { rgb "0.624 0.714 0.804" } - { slategray4 } @Yield { rgb "0.424 0.482 0.545" } - { lightsteelblue1 } @Yield { rgb "0.792 0.882 1.000" } - { lightsteelblue2 } @Yield { rgb "0.737 0.824 0.933" } - { lightsteelblue3 } @Yield { rgb "0.635 0.710 0.804" } - { lightsteelblue4 } @Yield { rgb "0.431 0.482 0.545" } - { lightblue1 } @Yield { rgb "0.749 0.937 1.000" } - { lightblue2 } @Yield { rgb "0.698 0.875 0.933" } - { lightblue3 } @Yield { rgb "0.604 0.753 0.804" } - { lightblue4 } @Yield { rgb "0.408 0.514 0.545" } - { lightcyan1 } @Yield { rgb "0.878 1.000 1.000" } - { lightcyan2 } @Yield { rgb "0.820 0.933 0.933" } - { lightcyan3 } @Yield { rgb "0.706 0.804 0.804" } - { lightcyan4 } @Yield { rgb "0.478 0.545 0.545" } - { paleturquoise1 } @Yield { rgb "0.733 1.000 1.000" } - { paleturquoise2 } @Yield { rgb "0.682 0.933 0.933" } - { paleturquoise3 } @Yield { rgb "0.588 0.804 0.804" } - { paleturquoise4 } @Yield { rgb "0.400 0.545 0.545" } - { cadetblue1 } @Yield { rgb "0.596 0.961 1.000" } - { cadetblue2 } @Yield { rgb "0.557 0.898 0.933" } - { cadetblue3 } @Yield { rgb "0.478 0.773 0.804" } - { cadetblue4 } @Yield { rgb "0.325 0.525 0.545" } - { turquoise1 } @Yield { rgb "0.000 0.961 1.000" } - { turquoise2 } @Yield { rgb "0.000 0.898 0.933" } - { turquoise3 } @Yield { rgb "0.000 0.773 0.804" } - { turquoise4 } @Yield { rgb "0.000 0.525 0.545" } - { cyan1 } @Yield { rgb "0.000 1.000 1.000" } - { cyan2 } @Yield { rgb "0.000 0.933 0.933" } - { cyan3 } @Yield { rgb "0.000 0.804 0.804" } - { cyan4 } @Yield { rgb "0.000 0.545 0.545" } - { darkslategray1 } @Yield { rgb "0.592 1.000 1.000" } - { darkslategray2 } @Yield { rgb "0.553 0.933 0.933" } - { darkslategray3 } @Yield { rgb "0.475 0.804 0.804" } - { darkslategray4 } @Yield { rgb "0.322 0.545 0.545" } - { aquamarine1 } @Yield { rgb "0.498 1.000 0.831" } - { aquamarine2 } @Yield { rgb "0.463 0.933 0.776" } - { aquamarine3 } @Yield { rgb "0.400 0.804 0.667" } - { aquamarine4 } @Yield { rgb "0.271 0.545 0.455" } - { darkseagreen1 } @Yield { rgb "0.757 1.000 0.757" } - { darkseagreen2 } @Yield { rgb "0.706 0.933 0.706" } - { darkseagreen3 } @Yield { rgb "0.608 0.804 0.608" } - { darkseagreen4 } @Yield { rgb "0.412 0.545 0.412" } - { seagreen1 } @Yield { rgb "0.329 1.000 0.624" } - { seagreen2 } @Yield { rgb "0.306 0.933 0.580" } - { seagreen3 } @Yield { rgb "0.263 0.804 0.502" } - { seagreen4 } @Yield { rgb "0.180 0.545 0.341" } - { palegreen1 } @Yield { rgb "0.604 1.000 0.604" } - { palegreen2 } @Yield { rgb "0.565 0.933 0.565" } - { palegreen3 } @Yield { rgb "0.486 0.804 0.486" } - { palegreen4 } @Yield { rgb "0.329 0.545 0.329" } - { springgreen1 } @Yield { rgb "0.000 1.000 0.498" } - { springgreen2 } @Yield { rgb "0.000 0.933 0.463" } - { springgreen3 } @Yield { rgb "0.000 0.804 0.400" } - { springgreen4 } @Yield { rgb "0.000 0.545 0.271" } - { green1 } @Yield { rgb "0.000 1.000 0.000" } - { green2 } @Yield { rgb "0.000 0.933 0.000" } - { green3 } @Yield { rgb "0.000 0.804 0.000" } - { green4 } @Yield { rgb "0.000 0.545 0.000" } - { chartreuse1 } @Yield { rgb "0.498 1.000 0.000" } - { chartreuse2 } @Yield { rgb "0.463 0.933 0.000" } - { chartreuse3 } @Yield { rgb "0.400 0.804 0.000" } - { chartreuse4 } @Yield { rgb "0.271 0.545 0.000" } - { olivedrab1 } @Yield { rgb "0.753 1.000 0.243" } - { olivedrab2 } @Yield { rgb "0.702 0.933 0.227" } - { olivedrab3 } @Yield { rgb "0.604 0.804 0.196" } - { olivedrab4 } @Yield { rgb "0.412 0.545 0.133" } - { darkolivegreen1 } @Yield { rgb "0.792 1.000 0.439" } - { darkolivegreen2 } @Yield { rgb "0.737 0.933 0.408" } - { darkolivegreen3 } @Yield { rgb "0.635 0.804 0.353" } - { darkolivegreen4 } @Yield { rgb "0.431 0.545 0.239" } - { khaki1 } @Yield { rgb "1.000 0.965 0.561" } - { khaki2 } @Yield { rgb "0.933 0.902 0.522" } - { khaki3 } @Yield { rgb "0.804 0.776 0.451" } - { khaki4 } @Yield { rgb "0.545 0.525 0.306" } - { lightgoldenrod1 } @Yield { rgb "1.000 0.925 0.545" } - { lightgoldenrod2 } @Yield { rgb "0.933 0.863 0.510" } - { lightgoldenrod3 } @Yield { rgb "0.804 0.745 0.439" } - { lightgoldenrod4 } @Yield { rgb "0.545 0.506 0.298" } - { lightyellow1 } @Yield { rgb "1.000 1.000 0.878" } - { lightyellow2 } @Yield { rgb "0.933 0.933 0.820" } - { lightyellow3 } @Yield { rgb "0.804 0.804 0.706" } - { lightyellow4 } @Yield { rgb "0.545 0.545 0.478" } - { yellow1 } @Yield { rgb "1.000 1.000 0.000" } - { yellow2 } @Yield { rgb "0.933 0.933 0.000" } - { yellow3 } @Yield { rgb "0.804 0.804 0.000" } - { yellow4 } @Yield { rgb "0.545 0.545 0.000" } - { gold1 } @Yield { rgb "1.000 0.843 0.000" } - { gold2 } @Yield { rgb "0.933 0.788 0.000" } - { gold3 } @Yield { rgb "0.804 0.678 0.000" } - { gold4 } @Yield { rgb "0.545 0.459 0.000" } - { goldenrod1 } @Yield { rgb "1.000 0.757 0.145" } - { goldenrod2 } @Yield { rgb "0.933 0.706 0.133" } - { goldenrod3 } @Yield { rgb "0.804 0.608 0.114" } - { goldenrod4 } @Yield { rgb "0.545 0.412 0.078" } - { darkgoldenrod1 } @Yield { rgb "1.000 0.725 0.059" } - { darkgoldenrod2 } @Yield { rgb "0.933 0.678 0.055" } - { darkgoldenrod3 } @Yield { rgb "0.804 0.584 0.047" } - { darkgoldenrod4 } @Yield { rgb "0.545 0.396 0.031" } - { rosybrown1 } @Yield { rgb "1.000 0.757 0.757" } - { rosybrown2 } @Yield { rgb "0.933 0.706 0.706" } - { rosybrown3 } @Yield { rgb "0.804 0.608 0.608" } - { rosybrown4 } @Yield { rgb "0.545 0.412 0.412" } - { indianred1 } @Yield { rgb "1.000 0.416 0.416" } - { indianred2 } @Yield { rgb "0.933 0.388 0.388" } - { indianred3 } @Yield { rgb "0.804 0.333 0.333" } - { indianred4 } @Yield { rgb "0.545 0.227 0.227" } - { sienna1 } @Yield { rgb "1.000 0.510 0.278" } - { sienna2 } @Yield { rgb "0.933 0.475 0.259" } - { sienna3 } @Yield { rgb "0.804 0.408 0.224" } - { sienna4 } @Yield { rgb "0.545 0.278 0.149" } - { burlywood1 } @Yield { rgb "1.000 0.827 0.608" } - { burlywood2 } @Yield { rgb "0.933 0.773 0.569" } - { burlywood3 } @Yield { rgb "0.804 0.667 0.490" } - { burlywood4 } @Yield { rgb "0.545 0.451 0.333" } - { wheat1 } @Yield { rgb "1.000 0.906 0.729" } - { wheat2 } @Yield { rgb "0.933 0.847 0.682" } - { wheat3 } @Yield { rgb "0.804 0.729 0.588" } - { wheat4 } @Yield { rgb "0.545 0.494 0.400" } - { tan1 } @Yield { rgb "1.000 0.647 0.310" } - { tan2 } @Yield { rgb "0.933 0.604 0.286" } - { tan3 } @Yield { rgb "0.804 0.522 0.247" } - { tan4 } @Yield { rgb "0.545 0.353 0.169" } - { chocolate1 } @Yield { rgb "1.000 0.498 0.141" } - { chocolate2 } @Yield { rgb "0.933 0.463 0.129" } - { chocolate3 } @Yield { rgb "0.804 0.400 0.114" } - { chocolate4 } @Yield { rgb "0.545 0.271 0.075" } - { firebrick1 } @Yield { rgb "1.000 0.188 0.188" } - { firebrick2 } @Yield { rgb "0.933 0.173 0.173" } - { firebrick3 } @Yield { rgb "0.804 0.149 0.149" } - { firebrick4 } @Yield { rgb "0.545 0.102 0.102" } - { brown1 } @Yield { rgb "1.000 0.251 0.251" } - { brown2 } @Yield { rgb "0.933 0.231 0.231" } - { brown3 } @Yield { rgb "0.804 0.200 0.200" } - { brown4 } @Yield { rgb "0.545 0.137 0.137" } - { salmon1 } @Yield { rgb "1.000 0.549 0.412" } - { salmon2 } @Yield { rgb "0.933 0.510 0.384" } - { salmon3 } @Yield { rgb "0.804 0.439 0.329" } - { salmon4 } @Yield { rgb "0.545 0.298 0.224" } - { lightsalmon1 } @Yield { rgb "1.000 0.627 0.478" } - { lightsalmon2 } @Yield { rgb "0.933 0.584 0.447" } - { lightsalmon3 } @Yield { rgb "0.804 0.506 0.384" } - { lightsalmon4 } @Yield { rgb "0.545 0.341 0.259" } - { orange1 } @Yield { rgb "1.000 0.647 0.000" } - { orange2 } @Yield { rgb "0.933 0.604 0.000" } - { orange3 } @Yield { rgb "0.804 0.522 0.000" } - { orange4 } @Yield { rgb "0.545 0.353 0.000" } - { darkorange1 } @Yield { rgb "1.000 0.498 0.000" } - { darkorange2 } @Yield { rgb "0.933 0.463 0.000" } - { darkorange3 } @Yield { rgb "0.804 0.400 0.000" } - { darkorange4 } @Yield { rgb "0.545 0.271 0.000" } - { coral1 } @Yield { rgb "1.000 0.447 0.337" } - { coral2 } @Yield { rgb "0.933 0.416 0.314" } - { coral3 } @Yield { rgb "0.804 0.357 0.271" } - { coral4 } @Yield { rgb "0.545 0.243 0.184" } - { tomato1 } @Yield { rgb "1.000 0.388 0.278" } - { tomato2 } @Yield { rgb "0.933 0.361 0.259" } - { tomato3 } @Yield { rgb "0.804 0.310 0.224" } - { tomato4 } @Yield { rgb "0.545 0.212 0.149" } - { orangered1 } @Yield { rgb "1.000 0.271 0.000" } - { orangered2 } @Yield { rgb "0.933 0.251 0.000" } - { orangered3 } @Yield { rgb "0.804 0.216 0.000" } - { orangered4 } @Yield { rgb "0.545 0.145 0.000" } - { red1 } @Yield { rgb "1.000 0.000 0.000" } - { red2 } @Yield { rgb "0.933 0.000 0.000" } - { red3 } @Yield { rgb "0.804 0.000 0.000" } - { red4 } @Yield { rgb "0.545 0.000 0.000" } - { deeppink1 } @Yield { rgb "1.000 0.078 0.576" } - { deeppink2 } @Yield { rgb "0.933 0.071 0.537" } - { deeppink3 } @Yield { rgb "0.804 0.063 0.463" } - { deeppink4 } @Yield { rgb "0.545 0.039 0.314" } - { hotpink1 } @Yield { rgb "1.000 0.431 0.706" } - { hotpink2 } @Yield { rgb "0.933 0.416 0.655" } - { hotpink3 } @Yield { rgb "0.804 0.376 0.565" } - { hotpink4 } @Yield { rgb "0.545 0.227 0.384" } - { pink1 } @Yield { rgb "1.000 0.710 0.773" } - { pink2 } @Yield { rgb "0.933 0.663 0.722" } - { pink3 } @Yield { rgb "0.804 0.569 0.620" } - { pink4 } @Yield { rgb "0.545 0.388 0.424" } - { lightpink1 } @Yield { rgb "1.000 0.682 0.725" } - { lightpink2 } @Yield { rgb "0.933 0.635 0.678" } - { lightpink3 } @Yield { rgb "0.804 0.549 0.584" } - { lightpink4 } @Yield { rgb "0.545 0.373 0.396" } - { palevioletred1 } @Yield { rgb "1.000 0.510 0.671" } - { palevioletred2 } @Yield { rgb "0.933 0.475 0.624" } - { palevioletred3 } @Yield { rgb "0.804 0.408 0.537" } - { palevioletred4 } @Yield { rgb "0.545 0.278 0.365" } - { maroon1 } @Yield { rgb "1.000 0.204 0.702" } - { maroon2 } @Yield { rgb "0.933 0.188 0.655" } - { maroon3 } @Yield { rgb "0.804 0.161 0.565" } - { maroon4 } @Yield { rgb "0.545 0.110 0.384" } - { violetred1 } @Yield { rgb "1.000 0.243 0.588" } - { violetred2 } @Yield { rgb "0.933 0.227 0.549" } - { violetred3 } @Yield { rgb "0.804 0.196 0.471" } - { violetred4 } @Yield { rgb "0.545 0.133 0.322" } - { magenta1 } @Yield { rgb "1.000 0.000 1.000" } - { magenta2 } @Yield { rgb "0.933 0.000 0.933" } - { magenta3 } @Yield { rgb "0.804 0.000 0.804" } - { magenta4 } @Yield { rgb "0.545 0.000 0.545" } - { orchid1 } @Yield { rgb "1.000 0.514 0.980" } - { orchid2 } @Yield { rgb "0.933 0.478 0.914" } - { orchid3 } @Yield { rgb "0.804 0.412 0.788" } - { orchid4 } @Yield { rgb "0.545 0.278 0.537" } - { plum1 } @Yield { rgb "1.000 0.733 1.000" } - { plum2 } @Yield { rgb "0.933 0.682 0.933" } - { plum3 } @Yield { rgb "0.804 0.588 0.804" } - { plum4 } @Yield { rgb "0.545 0.400 0.545" } - { mediumorchid1 } @Yield { rgb "0.878 0.400 1.000" } - { mediumorchid2 } @Yield { rgb "0.820 0.373 0.933" } - { mediumorchid3 } @Yield { rgb "0.706 0.322 0.804" } - { mediumorchid4 } @Yield { rgb "0.478 0.216 0.545" } - { darkorchid1 } @Yield { rgb "0.749 0.243 1.000" } - { darkorchid2 } @Yield { rgb "0.698 0.227 0.933" } - { darkorchid3 } @Yield { rgb "0.604 0.196 0.804" } - { darkorchid4 } @Yield { rgb "0.408 0.133 0.545" } - { purple1 } @Yield { rgb "0.608 0.188 1.000" } - { purple2 } @Yield { rgb "0.569 0.173 0.933" } - { purple3 } @Yield { rgb "0.490 0.149 0.804" } - { purple4 } @Yield { rgb "0.333 0.102 0.545" } - { mediumpurple1 } @Yield { rgb "0.671 0.510 1.000" } - { mediumpurple2 } @Yield { rgb "0.624 0.475 0.933" } - { mediumpurple3 } @Yield { rgb "0.537 0.408 0.804" } - { mediumpurple4 } @Yield { rgb "0.365 0.278 0.545" } - { thistle1 } @Yield { rgb "1.000 0.882 1.000" } - { thistle2 } @Yield { rgb "0.933 0.824 0.933" } - { thistle3 } @Yield { rgb "0.804 0.710 0.804" } - { thistle4 } @Yield { rgb "0.545 0.482 0.545" } - { gray0 } @Yield { rgb "0.000 0.000 0.000" } - { grey0 } @Yield { rgb "0.000 0.000 0.000" } - { gray1 } @Yield { rgb "0.012 0.012 0.012" } - { grey1 } @Yield { rgb "0.012 0.012 0.012" } - { gray2 } @Yield { rgb "0.020 0.020 0.020" } - { grey2 } @Yield { rgb "0.020 0.020 0.020" } - { gray3 } @Yield { rgb "0.031 0.031 0.031" } - { grey3 } @Yield { rgb "0.031 0.031 0.031" } - { gray4 } @Yield { rgb "0.039 0.039 0.039" } - { grey4 } @Yield { rgb "0.039 0.039 0.039" } - { gray5 } @Yield { rgb "0.051 0.051 0.051" } - { grey5 } @Yield { rgb "0.051 0.051 0.051" } - { gray6 } @Yield { rgb "0.059 0.059 0.059" } - { grey6 } @Yield { rgb "0.059 0.059 0.059" } - { gray7 } @Yield { rgb "0.071 0.071 0.071" } - { grey7 } @Yield { rgb "0.071 0.071 0.071" } - { gray8 } @Yield { rgb "0.078 0.078 0.078" } - { grey8 } @Yield { rgb "0.078 0.078 0.078" } - { gray9 } @Yield { rgb "0.090 0.090 0.090" } - { grey9 } @Yield { rgb "0.090 0.090 0.090" } - { gray10 } @Yield { rgb "0.102 0.102 0.102" } - { grey10 } @Yield { rgb "0.102 0.102 0.102" } - { gray11 } @Yield { rgb "0.110 0.110 0.110" } - { grey11 } @Yield { rgb "0.110 0.110 0.110" } - { gray12 } @Yield { rgb "0.122 0.122 0.122" } - { grey12 } @Yield { rgb "0.122 0.122 0.122" } - { gray13 } @Yield { rgb "0.129 0.129 0.129" } - { grey13 } @Yield { rgb "0.129 0.129 0.129" } - { gray14 } @Yield { rgb "0.141 0.141 0.141" } - { grey14 } @Yield { rgb "0.141 0.141 0.141" } - { gray15 } @Yield { rgb "0.149 0.149 0.149" } - { grey15 } @Yield { rgb "0.149 0.149 0.149" } - { gray16 } @Yield { rgb "0.161 0.161 0.161" } - { grey16 } @Yield { rgb "0.161 0.161 0.161" } - { gray17 } @Yield { rgb "0.169 0.169 0.169" } - { grey17 } @Yield { rgb "0.169 0.169 0.169" } - { gray18 } @Yield { rgb "0.180 0.180 0.180" } - { grey18 } @Yield { rgb "0.180 0.180 0.180" } - { gray19 } @Yield { rgb "0.188 0.188 0.188" } - { grey19 } @Yield { rgb "0.188 0.188 0.188" } - { gray20 } @Yield { rgb "0.200 0.200 0.200" } - { grey20 } @Yield { rgb "0.200 0.200 0.200" } - { gray21 } @Yield { rgb "0.212 0.212 0.212" } - { grey21 } @Yield { rgb "0.212 0.212 0.212" } - { gray22 } @Yield { rgb "0.220 0.220 0.220" } - { grey22 } @Yield { rgb "0.220 0.220 0.220" } - { gray23 } @Yield { rgb "0.231 0.231 0.231" } - { grey23 } @Yield { rgb "0.231 0.231 0.231" } - { gray24 } @Yield { rgb "0.239 0.239 0.239" } - { grey24 } @Yield { rgb "0.239 0.239 0.239" } - { gray25 } @Yield { rgb "0.251 0.251 0.251" } - { grey25 } @Yield { rgb "0.251 0.251 0.251" } - { gray26 } @Yield { rgb "0.259 0.259 0.259" } - { grey26 } @Yield { rgb "0.259 0.259 0.259" } - { gray27 } @Yield { rgb "0.271 0.271 0.271" } - { grey27 } @Yield { rgb "0.271 0.271 0.271" } - { gray28 } @Yield { rgb "0.278 0.278 0.278" } - { grey28 } @Yield { rgb "0.278 0.278 0.278" } - { gray29 } @Yield { rgb "0.290 0.290 0.290" } - { grey29 } @Yield { rgb "0.290 0.290 0.290" } - { gray30 } @Yield { rgb "0.302 0.302 0.302" } - { grey30 } @Yield { rgb "0.302 0.302 0.302" } - { gray31 } @Yield { rgb "0.310 0.310 0.310" } - { grey31 } @Yield { rgb "0.310 0.310 0.310" } - { gray32 } @Yield { rgb "0.322 0.322 0.322" } - { grey32 } @Yield { rgb "0.322 0.322 0.322" } - { gray33 } @Yield { rgb "0.329 0.329 0.329" } - { grey33 } @Yield { rgb "0.329 0.329 0.329" } - { gray34 } @Yield { rgb "0.341 0.341 0.341" } - { grey34 } @Yield { rgb "0.341 0.341 0.341" } - { gray35 } @Yield { rgb "0.349 0.349 0.349" } - { grey35 } @Yield { rgb "0.349 0.349 0.349" } - { gray36 } @Yield { rgb "0.361 0.361 0.361" } - { grey36 } @Yield { rgb "0.361 0.361 0.361" } - { gray37 } @Yield { rgb "0.369 0.369 0.369" } - { grey37 } @Yield { rgb "0.369 0.369 0.369" } - { gray38 } @Yield { rgb "0.380 0.380 0.380" } - { grey38 } @Yield { rgb "0.380 0.380 0.380" } - { gray39 } @Yield { rgb "0.388 0.388 0.388" } - { grey39 } @Yield { rgb "0.388 0.388 0.388" } - { gray40 } @Yield { rgb "0.400 0.400 0.400" } - { grey40 } @Yield { rgb "0.400 0.400 0.400" } - { gray41 } @Yield { rgb "0.412 0.412 0.412" } - { grey41 } @Yield { rgb "0.412 0.412 0.412" } - { gray42 } @Yield { rgb "0.420 0.420 0.420" } - { grey42 } @Yield { rgb "0.420 0.420 0.420" } - { gray43 } @Yield { rgb "0.431 0.431 0.431" } - { grey43 } @Yield { rgb "0.431 0.431 0.431" } - { gray44 } @Yield { rgb "0.439 0.439 0.439" } - { grey44 } @Yield { rgb "0.439 0.439 0.439" } - { gray45 } @Yield { rgb "0.451 0.451 0.451" } - { grey45 } @Yield { rgb "0.451 0.451 0.451" } - { gray46 } @Yield { rgb "0.459 0.459 0.459" } - { grey46 } @Yield { rgb "0.459 0.459 0.459" } - { gray47 } @Yield { rgb "0.471 0.471 0.471" } - { grey47 } @Yield { rgb "0.471 0.471 0.471" } - { gray48 } @Yield { rgb "0.478 0.478 0.478" } - { grey48 } @Yield { rgb "0.478 0.478 0.478" } - { gray49 } @Yield { rgb "0.490 0.490 0.490" } - { grey49 } @Yield { rgb "0.490 0.490 0.490" } - { gray50 } @Yield { rgb "0.498 0.498 0.498" } - { grey50 } @Yield { rgb "0.498 0.498 0.498" } - { gray51 } @Yield { rgb "0.510 0.510 0.510" } - { grey51 } @Yield { rgb "0.510 0.510 0.510" } - { gray52 } @Yield { rgb "0.522 0.522 0.522" } - { grey52 } @Yield { rgb "0.522 0.522 0.522" } - { gray53 } @Yield { rgb "0.529 0.529 0.529" } - { grey53 } @Yield { rgb "0.529 0.529 0.529" } - { gray54 } @Yield { rgb "0.541 0.541 0.541" } - { grey54 } @Yield { rgb "0.541 0.541 0.541" } - { gray55 } @Yield { rgb "0.549 0.549 0.549" } - { grey55 } @Yield { rgb "0.549 0.549 0.549" } - { gray56 } @Yield { rgb "0.561 0.561 0.561" } - { grey56 } @Yield { rgb "0.561 0.561 0.561" } - { gray57 } @Yield { rgb "0.569 0.569 0.569" } - { grey57 } @Yield { rgb "0.569 0.569 0.569" } - { gray58 } @Yield { rgb "0.580 0.580 0.580" } - { grey58 } @Yield { rgb "0.580 0.580 0.580" } - { gray59 } @Yield { rgb "0.588 0.588 0.588" } - { grey59 } @Yield { rgb "0.588 0.588 0.588" } - { gray60 } @Yield { rgb "0.600 0.600 0.600" } - { grey60 } @Yield { rgb "0.600 0.600 0.600" } - { gray61 } @Yield { rgb "0.612 0.612 0.612" } - { grey61 } @Yield { rgb "0.612 0.612 0.612" } - { gray62 } @Yield { rgb "0.620 0.620 0.620" } - { grey62 } @Yield { rgb "0.620 0.620 0.620" } - { gray63 } @Yield { rgb "0.631 0.631 0.631" } - { grey63 } @Yield { rgb "0.631 0.631 0.631" } - { gray64 } @Yield { rgb "0.639 0.639 0.639" } - { grey64 } @Yield { rgb "0.639 0.639 0.639" } - { gray65 } @Yield { rgb "0.651 0.651 0.651" } - { grey65 } @Yield { rgb "0.651 0.651 0.651" } - { gray66 } @Yield { rgb "0.659 0.659 0.659" } - { grey66 } @Yield { rgb "0.659 0.659 0.659" } - { gray67 } @Yield { rgb "0.671 0.671 0.671" } - { grey67 } @Yield { rgb "0.671 0.671 0.671" } - { gray68 } @Yield { rgb "0.678 0.678 0.678" } - { grey68 } @Yield { rgb "0.678 0.678 0.678" } - { gray69 } @Yield { rgb "0.690 0.690 0.690" } - { grey69 } @Yield { rgb "0.690 0.690 0.690" } - { gray70 } @Yield { rgb "0.702 0.702 0.702" } - { grey70 } @Yield { rgb "0.702 0.702 0.702" } - { gray71 } @Yield { rgb "0.710 0.710 0.710" } - { grey71 } @Yield { rgb "0.710 0.710 0.710" } - { gray72 } @Yield { rgb "0.722 0.722 0.722" } - { grey72 } @Yield { rgb "0.722 0.722 0.722" } - { gray73 } @Yield { rgb "0.729 0.729 0.729" } - { grey73 } @Yield { rgb "0.729 0.729 0.729" } - { gray74 } @Yield { rgb "0.741 0.741 0.741" } - { grey74 } @Yield { rgb "0.741 0.741 0.741" } - { gray75 } @Yield { rgb "0.749 0.749 0.749" } - { grey75 } @Yield { rgb "0.749 0.749 0.749" } - { gray76 } @Yield { rgb "0.761 0.761 0.761" } - { grey76 } @Yield { rgb "0.761 0.761 0.761" } - { gray77 } @Yield { rgb "0.769 0.769 0.769" } - { grey77 } @Yield { rgb "0.769 0.769 0.769" } - { gray78 } @Yield { rgb "0.780 0.780 0.780" } - { grey78 } @Yield { rgb "0.780 0.780 0.780" } - { gray79 } @Yield { rgb "0.788 0.788 0.788" } - { grey79 } @Yield { rgb "0.788 0.788 0.788" } - { gray80 } @Yield { rgb "0.800 0.800 0.800" } - { grey80 } @Yield { rgb "0.800 0.800 0.800" } - { gray81 } @Yield { rgb "0.812 0.812 0.812" } - { grey81 } @Yield { rgb "0.812 0.812 0.812" } - { gray82 } @Yield { rgb "0.820 0.820 0.820" } - { grey82 } @Yield { rgb "0.820 0.820 0.820" } - { gray83 } @Yield { rgb "0.831 0.831 0.831" } - { grey83 } @Yield { rgb "0.831 0.831 0.831" } - { gray84 } @Yield { rgb "0.839 0.839 0.839" } - { grey84 } @Yield { rgb "0.839 0.839 0.839" } - { gray85 } @Yield { rgb "0.851 0.851 0.851" } - { grey85 } @Yield { rgb "0.851 0.851 0.851" } - { gray86 } @Yield { rgb "0.859 0.859 0.859" } - { grey86 } @Yield { rgb "0.859 0.859 0.859" } - { gray87 } @Yield { rgb "0.871 0.871 0.871" } - { grey87 } @Yield { rgb "0.871 0.871 0.871" } - { gray88 } @Yield { rgb "0.878 0.878 0.878" } - { grey88 } @Yield { rgb "0.878 0.878 0.878" } - { gray89 } @Yield { rgb "0.890 0.890 0.890" } - { grey89 } @Yield { rgb "0.890 0.890 0.890" } - { gray90 } @Yield { rgb "0.898 0.898 0.898" } - { grey90 } @Yield { rgb "0.898 0.898 0.898" } - { gray91 } @Yield { rgb "0.910 0.910 0.910" } - { grey91 } @Yield { rgb "0.910 0.910 0.910" } - { gray92 } @Yield { rgb "0.922 0.922 0.922" } - { grey92 } @Yield { rgb "0.922 0.922 0.922" } - { gray93 } @Yield { rgb "0.929 0.929 0.929" } - { grey93 } @Yield { rgb "0.929 0.929 0.929" } - { gray94 } @Yield { rgb "0.941 0.941 0.941" } - { grey94 } @Yield { rgb "0.941 0.941 0.941" } - { gray95 } @Yield { rgb "0.949 0.949 0.949" } - { grey95 } @Yield { rgb "0.949 0.949 0.949" } - { gray96 } @Yield { rgb "0.961 0.961 0.961" } - { grey96 } @Yield { rgb "0.961 0.961 0.961" } - { gray97 } @Yield { rgb "0.969 0.969 0.969" } - { grey97 } @Yield { rgb "0.969 0.969 0.969" } - { gray98 } @Yield { rgb "0.980 0.980 0.980" } - { grey98 } @Yield { rgb "0.980 0.980 0.980" } - { gray99 } @Yield { rgb "0.988 0.988 0.988" } - { grey99 } @Yield { rgb "0.988 0.988 0.988" } - { gray100 } @Yield { rgb "1.000 1.000 1.000" } - { grey100 } @Yield { rgb "1.000 1.000 1.000" } - { darkgrey } @Yield { rgb "0.663 0.663 0.663" } - { darkgray } @Yield { rgb "0.663 0.663 0.663" } - { darkblue } @Yield { rgb "0.000 0.000 0.545" } - { darkcyan } @Yield { rgb "0.000 0.545 0.545" } - { darkmagenta } @Yield { rgb "0.545 0.000 0.545" } - { darkred } @Yield { rgb "0.545 0.000 0.000" } - { lightgreen } @Yield { rgb "0.565 0.933 0.565" } - # else @Yield { rgb "0.000 0.000 0.000" } - } -} diff --git a/include/include/javascript b/include/javascript index 30ef871..30ef871 100644 --- a/include/include/javascript +++ b/include/javascript diff --git a/include/include/javascriptf b/include/javascriptf index a0bde1e..a0bde1e 100644 --- a/include/include/javascriptf +++ b/include/javascriptf diff --git a/include/npf b/include/npf index 1ba3de6..f7512ad 100644 --- a/include/npf +++ b/include/npf @@ -38,7 +38,7 @@ def @NonpareilSetup named style named @OrIfPlain left x right y { @BackEnd @Case { PlainText @Yield y else @Yield x } } - { symbol @OrIfPlain fixed } # print style + { fixed } # print style # the following options apply when style is "fixed" named fixedfont { Courier }# font family @@ -47,7 +47,7 @@ def @NonpareilSetup named fixedblanklinescale { 1.0 } # blank-line scale named fixedspace { lout } # spacing mode named fixedtabin { 8 } # tab interval - named fixedtabout { 8s } # tab width + named fixedtabout { 4s } # tab width named fixedidentifiers { Base } # identifier face named fixedkeywords { Base } # keyword face @@ -417,7 +417,10 @@ def @NonpareilSetup { @PO @BackEnd @Case { PlainText @Yield "." - else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } + else @Yield style @Case { + fixed @Yield "." + else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" } + } } } @@ -426,7 +429,10 @@ def @NonpareilSetup { @PO @BackEnd @Case { PlainText @Yield ".." - else @Yield { "1.4f" @Font "+0.04f" @VShift ".." &"0.05f" } + else @Yield style @Case { + fixed @Yield ".." + else @Yield { "1.4f" @Font "+0.04f" @VShift ".." &"0.05f" } + } } } diff --git a/include/include/old_graph b/include/old_graph index 87ebae3..87ebae3 100644 --- a/include/include/old_graph +++ b/include/old_graph diff --git a/include/include/old_graphf b/include/old_graphf index 4106555..4106555 100644 --- a/include/include/old_graphf +++ b/include/old_graphf diff --git a/include/pief b/include/pief index 15e60ac..2bb0001 100644 --- a/include/pief +++ b/include/pief @@ -114,7 +114,7 @@ def @PieSetup export @Slice def @Pie named save { save } - named totalweight { 100 } + named totalweight { totalweight } named radius { radius } import @PSLengths named initialangle { initialangle } named leftextra { leftextra } diff --git a/include/slidesf b/include/slidesf index 0c3d28d..0759817 100644 --- a/include/slidesf +++ b/include/slidesf @@ -373,7 +373,7 @@ def @OverheadSetup majortitle { @GetTitle } minortitle { @SaveTitle } intheorems { @OverheadNumInTheorems } - indisplays { OverheadNumInDisplays } + indisplays { @OverheadNumInDisplays } infigures { @OverheadNumInFigures } inrunners { @OverheadNumInRunners } @Format @Body diff --git a/include/include/tcl b/include/tcl index d54defe..d54defe 100644 --- a/include/include/tcl +++ b/include/tcl diff --git a/include/include/tclf b/include/tclf index fd83271..fd83271 100644 --- a/include/include/tclf +++ b/include/tclf |