############################################################################### # # # 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. # # # ############################################################################### @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