aboutsummaryrefslogtreecommitdiffstats
path: root/include/tabf
diff options
context:
space:
mode:
authorJeffrey H. Kingston <jeff@it.usyd.edu.au>2010-09-14 19:21:41 +0000
committerJeffrey H. Kingston <jeff@it.usyd.edu.au>2010-09-14 19:21:41 +0000
commit71bdb35d52747e6d7d9f55df4524d57c2966be94 (patch)
tree480ee5eefccc40d5f3331cc52d66f722fd19bfb9 /include/tabf
parentb41263ea7578fa9742486135c762803b52794105 (diff)
downloadlout-71bdb35d52747e6d7d9f55df4524d57c2966be94.tar.gz
Lout 3.17.
git-svn-id: http://svn.savannah.nongnu.org/svn/lout/trunk@2 9365b830-b601-4143-9ba8-b4a8e2c3339c
Diffstat (limited to 'include/tabf')
-rw-r--r--include/tabf936
1 files changed, 936 insertions, 0 deletions
diff --git a/include/tabf b/include/tabf
new file mode 100644
index 0000000..bc1e0c8
--- /dev/null
+++ b/include/tabf
@@ -0,0 +1,936 @@
+
+###############################################################################
+# #
+# 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