blob: bc1e0c820257f9a665821ffe6345a573a4ea45a1 [file] [log] [blame]
###############################################################################
# #
# 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