From 3f4fd4565adac9247f538f16229dc5f8f1d3c80f Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Wed, 26 Mar 2025 18:23:38 +0100 Subject: [PATCH] better table layout --- src/romanian/DocumentationRon.gf | 208 +++++++++++-------------------- 1 file changed, 75 insertions(+), 133 deletions(-) diff --git a/src/romanian/DocumentationRon.gf b/src/romanian/DocumentationRon.gf index 8d76c6c1..14faa38f 100644 --- a/src/romanian/DocumentationRon.gf +++ b/src/romanian/DocumentationRon.gf @@ -11,31 +11,26 @@ lin InflectionA, InflectionA2 = \x -> { t="a" ; s1="" ; s2=frameTable ( - tr (intagAttr "th" "rowspan=\"25\"" "s" ++ th "AF Masc Sg Indef ANomAcc" ++ td (x.s ! AF Masc Sg Indef ANomAcc)) ++ - tr (th "Masc Sg Indef gen/dat" ++ td (x.s ! AF Masc Sg Indef AGenDat)) ++ - tr (th "Masc Sg Indef voc" ++ td (x.s ! AF Masc Sg Indef AVoc)) ++ - tr (th "Masc Sg Def nom/acc" ++ td (x.s ! AF Masc Sg Def ANomAcc)) ++ - tr (th "Masc Sg Def gen/dat" ++ td (x.s ! AF Masc Sg Def AGenDat)) ++ - tr (th "Masc Sg Def voc" ++ td (x.s ! AF Masc Sg Def AVoc)) ++ - tr (th "Masc Pl Indef nom/acc" ++ td (x.s ! AF Masc Pl Indef ANomAcc)) ++ - tr (th "Masc Pl Indef gen/dat" ++ td (x.s ! AF Masc Pl Indef AGenDat)) ++ - tr (th "Masc Pl Indef voc" ++ td (x.s ! AF Masc Pl Indef AVoc)) ++ - tr (th "Masc Pl Def nom/acc" ++ td (x.s ! AF Masc Pl Def ANomAcc)) ++ - tr (th "Masc Pl Def gen/dat" ++ td (x.s ! AF Masc Pl Def AGenDat)) ++ - tr (th "Masc Pl Def voc" ++ td (x.s ! AF Masc Pl Def AVoc)) ++ - tr (th "Fem Sg Indef nom/acc" ++ td (x.s ! AF Fem Sg Indef ANomAcc)) ++ - tr (th "Fem Sg Indef gen/dat" ++ td (x.s ! AF Fem Sg Indef AGenDat)) ++ - tr (th "Fem Sg Indef voc" ++ td (x.s ! AF Fem Sg Indef AVoc)) ++ - tr (th "Fem Sg Def nom/acc" ++ td (x.s ! AF Fem Sg Def ANomAcc)) ++ - tr (th "Fem Sg Def gen/dat" ++ td (x.s ! AF Fem Sg Def AGenDat)) ++ - tr (th "Fem Sg Def voc" ++ td (x.s ! AF Fem Sg Def AVoc)) ++ - tr (th "Fem Pl Indef nom/acc" ++ td (x.s ! AF Fem Pl Indef ANomAcc)) ++ - tr (th "Fem Pl Indef gen/dat" ++ td (x.s ! AF Fem Pl Indef AGenDat)) ++ - tr (th "Fem Pl Indef voc" ++ td (x.s ! AF Fem Pl Indef AVoc)) ++ - tr (th "Fem Pl Def nom/acc" ++ td (x.s ! AF Fem Pl Def ANomAcc)) ++ - tr (th "Fem Pl Def gen/dat" ++ td (x.s ! AF Fem Pl Def AGenDat)) ++ - tr (th "Fem Pl Def voc" ++ td (x.s ! AF Fem Pl Def AVoc)) ++ - tr (th "" ++ td (x.s ! AA))) ; + tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++ + tr (intagAttr "th" "colspan=\"4\"" "Indef") ++ + tr (intagAttr "th" "rowspan=\"3\"" "masc" ++ + th "nom/acc" ++ td (x.s ! AF Masc Sg Indef ANomAcc) ++ td (x.s ! AF Masc Pl Indef ANomAcc)) ++ + tr (th "gen/dat" ++ td (x.s ! AF Masc Sg Indef AGenDat) ++ td (x.s ! AF Masc Pl Indef AGenDat)) ++ + tr (th "voc" ++ td (x.s ! AF Masc Sg Indef AVoc) ++ td (x.s ! AF Masc Pl Indef AVoc)) ++ + tr (intagAttr "th" "rowspan=\"3\"" "fem" ++ + th "nom/acc" ++ td (x.s ! AF Fem Sg Indef ANomAcc) ++ td (x.s ! AF Fem Pl Indef ANomAcc)) ++ + tr (th "gen/dat" ++ td (x.s ! AF Fem Sg Indef AGenDat) ++ td (x.s ! AF Fem Pl Indef AGenDat)) ++ + tr (th "voc" ++ td (x.s ! AF Fem Sg Indef AVoc) ++ td (x.s ! AF Fem Pl Indef AVoc)) ++ + tr (intagAttr "th" "colspan=\"4\"" "Def") ++ + tr (intagAttr "th" "rowspan=\"3\"" "masc" ++ + th "om/acc" ++ td (x.s ! AF Masc Sg Def ANomAcc) ++ td (x.s ! AF Masc Pl Def ANomAcc)) ++ + tr (th "gen/dat" ++ td (x.s ! AF Masc Sg Def AGenDat) ++ td (x.s ! AF Masc Pl Def AGenDat)) ++ + tr (th "voc" ++ td (x.s ! AF Masc Sg Def AVoc) ++ td (x.s ! AF Masc Pl Def AVoc)) ++ + tr (intagAttr "th" "rowspan=\"3\"" "fem" ++ + th "nom/acc" ++ td (x.s ! AF Fem Sg Def ANomAcc) ++ td (x.s ! AF Fem Pl Def ANomAcc)) ++ + tr (th "gen/dat" ++ td (x.s ! AF Fem Sg Def AGenDat) ++ td (x.s ! AF Fem Pl Def AGenDat)) ++ + tr (th "voc" ++ td (x.s ! AF Fem Sg Def AVoc) ++ td (x.s ! AF Fem Pl Def AVoc))) ++ + paragraph (x.s ! AA) ; s3=[] } ; lin InflectionAdA = \x -> { @@ -197,7 +192,7 @@ oper inflNoun : Noun -> Str = \x -> frameTable ( tr (th "" ++ th "Sg" ++ th "Pl") ++ - tr (intagAttr "th" "colspan=\"3\"" "Indef") ++ + tr (intagAttr "th" "colspan=\"3\"" "Indef") ++ tr (th "nom/acc" ++ td (x.s ! Sg ! Indef ! ANomAcc) ++ td (x.s ! Pl ! Indef ! ANomAcc)) ++ tr (th "gen/dat" ++ td (x.s ! Sg ! Indef ! AGenDat) ++ td (x.s ! Pl ! Indef ! AGenDat)) ++ tr (th "voc" ++ td (x.s ! Sg ! Indef ! AVoc) ++ td (x.s ! Pl ! Indef ! AVoc)) ++ @@ -207,114 +202,61 @@ oper tr (th "voc" ++ td (x.s ! Sg ! Def ! AVoc) ++ td (x.s ! Pl ! Def ! AVoc))) ; inflVerb : Verb -> Str = \x -> + heading1 "Infinitive" ++ + paragraph (x.s ! Inf) ++ + heading1 "Indicative" ++ frameTable ( - tr (th "Inf" ++ td (x.s ! Inf)) ++ - tr (th "Indi Presn Sg P1" ++ td (x.s ! Indi Presn Sg P1)) ++ - tr (th "Indi Presn Sg P2" ++ td (x.s ! Indi Presn Sg P2)) ++ - tr (th "Indi Presn Sg P3" ++ td (x.s ! Indi Presn Sg P3)) ++ - tr (th "Indi Presn Pl P1" ++ td (x.s ! Indi Presn Pl P1)) ++ - tr (th "Indi Presn Pl P2" ++ td (x.s ! Indi Presn Pl P2)) ++ - tr (th "Indi Presn Pl P3" ++ td (x.s ! Indi Presn Pl P3)) ++ - tr (th "Indi Imparf Sg P1" ++ td (x.s ! Indi Imparf Sg P1)) ++ - tr (th "Indi Imparf Sg P2" ++ td (x.s ! Indi Imparf Sg P2)) ++ - tr (th "Indi Imparf Sg P3" ++ td (x.s ! Indi Imparf Sg P3)) ++ - tr (th "Indi Imparf Pl P1" ++ td (x.s ! Indi Imparf Pl P1)) ++ - tr (th "Indi Imparf Pl P2" ++ td (x.s ! Indi Imparf Pl P2)) ++ - tr (th "Indi Imparf Pl P3" ++ td (x.s ! Indi Imparf Pl P3)) ++ - tr (th "Indi PSimple Sg P1" ++ td (x.s ! Indi PSimple Sg P1)) ++ - tr (th "Indi PSimple Sg P2" ++ td (x.s ! Indi PSimple Sg P2)) ++ - tr (th "Indi PSimple Sg P3" ++ td (x.s ! Indi PSimple Sg P3)) ++ - tr (th "Indi PSimple Pl P1" ++ td (x.s ! Indi PSimple Pl P1)) ++ - tr (th "Indi PSimple Pl P2" ++ td (x.s ! Indi PSimple Pl P2)) ++ - tr (th "Indi PSimple Pl P3" ++ td (x.s ! Indi PSimple Pl P3)) ++ - tr (th "Indi PPerfect Sg P1" ++ td (x.s ! Indi PPerfect Sg P1)) ++ - tr (th "Indi PPerfect Sg P2" ++ td (x.s ! Indi PPerfect Sg P2)) ++ - tr (th "Indi PPerfect Sg P3" ++ td (x.s ! Indi PPerfect Sg P3)) ++ - tr (th "Indi PPerfect Pl P1" ++ td (x.s ! Indi PPerfect Pl P1)) ++ - tr (th "Indi PPerfect Pl P2" ++ td (x.s ! Indi PPerfect Pl P2)) ++ - tr (th "Indi PPerfect Pl P3" ++ td (x.s ! Indi PPerfect Pl P3)) ++ - tr (th "Subjo SPres Sg P1" ++ td (x.s ! Subjo SPres Sg P1)) ++ - tr (th "Subjo SPres Sg P2" ++ td (x.s ! Subjo SPres Sg P2)) ++ - tr (th "Subjo SPres Sg P3" ++ td (x.s ! Subjo SPres Sg P3)) ++ - tr (th "Subjo SPres Pl P1" ++ td (x.s ! Subjo SPres Pl P1)) ++ - tr (th "Subjo SPres Pl P2" ++ td (x.s ! Subjo SPres Pl P2)) ++ - tr (th "Subjo SPres Pl P3" ++ td (x.s ! Subjo SPres Pl P3)) ++ - tr (th "Imper SgP2" ++ td (x.s ! Imper SgP2)) ++ - tr (th "Imper PlP1" ++ td (x.s ! Imper PlP1)) ++ - tr (th "Imper PlP2" ++ td (x.s ! Imper PlP2)) ++ - tr (th "Ger" ++ td (x.s ! Ger)) ++ - tr (th "PPasse Masc Sg Indef ANomAcc" ++ td (x.s ! PPasse Masc Sg Indef ANomAcc)) ++ - tr (th "PPasse Masc Sg Indef AGenDat" ++ td (x.s ! PPasse Masc Sg Indef AGenDat)) ++ - tr (th "PPasse Masc Sg Indef AVoc" ++ td (x.s ! PPasse Masc Sg Indef AVoc)) ++ - tr (th "PPasse Masc Sg Def ANomAcc" ++ td (x.s ! PPasse Masc Sg Def ANomAcc)) ++ - tr (th "PPasse Masc Sg Def AGenDat" ++ td (x.s ! PPasse Masc Sg Def AGenDat)) ++ - tr (th "PPasse Masc Sg Def AVoc" ++ td (x.s ! PPasse Masc Sg Def AVoc)) ++ - tr (th "PPasse Masc Pl Indef ANomAcc" ++ td (x.s ! PPasse Masc Pl Indef ANomAcc)) ++ - tr (th "PPasse Masc Pl Indef AGenDat" ++ td (x.s ! PPasse Masc Pl Indef AGenDat)) ++ - tr (th "PPasse Masc Pl Indef AVoc" ++ td (x.s ! PPasse Masc Pl Indef AVoc)) ++ - tr (th "PPasse Masc Pl Def ANomAcc" ++ td (x.s ! PPasse Masc Pl Def ANomAcc)) ++ - tr (th "PPasse Masc Pl Def AGenDat" ++ td (x.s ! PPasse Masc Pl Def AGenDat)) ++ - tr (th "PPasse Masc Pl Def AVoc" ++ td (x.s ! PPasse Masc Pl Def AVoc)) ++ - tr (th "PPasse Fem Sg Indef ANomAcc" ++ td (x.s ! PPasse Fem Sg Indef ANomAcc)) ++ - tr (th "PPasse Fem Sg Indef AGenDat" ++ td (x.s ! PPasse Fem Sg Indef AGenDat)) ++ - tr (th "PPasse Fem Sg Indef AVoc" ++ td (x.s ! PPasse Fem Sg Indef AVoc)) ++ - tr (th "PPasse Fem Sg Def ANomAcc" ++ td (x.s ! PPasse Fem Sg Def ANomAcc)) ++ - tr (th "PPasse Fem Sg Def AGenDat" ++ td (x.s ! PPasse Fem Sg Def AGenDat)) ++ - tr (th "PPasse Fem Sg Def AVoc" ++ td (x.s ! PPasse Fem Sg Def AVoc)) ++ - tr (th "PPasse Fem Pl Indef ANomAcc" ++ td (x.s ! PPasse Fem Pl Indef ANomAcc)) ++ - tr (th "PPasse Fem Pl Indef AGenDat" ++ td (x.s ! PPasse Fem Pl Indef AGenDat)) ++ - tr (th "PPasse Fem Pl Indef AVoc" ++ td (x.s ! PPasse Fem Pl Indef AVoc)) ++ - tr (th "PPasse Fem Pl Def ANomAcc" ++ td (x.s ! PPasse Fem Pl Def ANomAcc)) ++ - tr (th "PPasse Fem Pl Def AGenDat" ++ td (x.s ! PPasse Fem Pl Def AGenDat)) ++ - tr (th "PPasse Fem Pl Def AVoc" ++ td (x.s ! PPasse Fem Pl Def AVoc)) ++ - tr (intagAttr "th" "rowspan=\"48\"" "isRefl" ++ intagAttr "th" "rowspan=\"4\"" "{g=Masc; n=Sg; p=P1}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P1}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P1}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P1}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P1}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Masc; n=Sg; p=P2}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P2}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P2}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P2}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P2}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Masc; n=Sg; p=P3}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P3}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P3}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P3}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Masc; n=Sg; p=P3}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Masc; n=Pl; p=P1}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P1}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P1}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P1}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P1}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Masc; n=Pl; p=P2}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P2}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P2}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P2}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P2}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Masc; n=Pl; p=P3}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P3}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P3}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P3}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Masc; n=Pl; p=P3}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Fem; n=Sg; p=P1}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P1}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P1}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P1}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P1}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Fem; n=Sg; p=P2}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P2}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P2}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P2}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P2}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Fem; n=Sg; p=P3}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P3}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P3}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P3}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Fem; n=Sg; p=P3}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Fem; n=Pl; p=P1}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P1}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P1}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P1}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P1}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Fem; n=Pl; p=P2}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P2}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P2}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P2}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P2}).s ! Imperative)) ++ - tr (intagAttr "th" "rowspan=\"4\"" "{g=Fem; n=Pl; p=P3}" ++ intagAttr "th" "rowspan=\"4\"" "s" ++ th "Normal" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P3}).s ! Normal)) ++ - tr (th "Composite" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P3}).s ! Composite)) ++ - tr (th "Short" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P3}).s ! Short)) ++ - tr (th "Imperative" ++ td ((x.isRefl ! {g=Fem; n=Pl; p=P3}).s ! Imperative))) ; + tr (th "" ++ th "Sg" ++ th "Pl") ++ + tr (intagAttr "th" "colspan=\"3\"" "Presn") ++ + tr (th "1p" ++ td (x.s ! Indi Presn Sg P1) ++ td (x.s ! Indi Presn Pl P1)) ++ + tr (th "2p" ++ td (x.s ! Indi Presn Sg P2) ++ td (x.s ! Indi Presn Pl P2)) ++ + tr (th "3p" ++ td (x.s ! Indi Presn Sg P3) ++ td (x.s ! Indi Presn Pl P3)) ++ + tr (intagAttr "th" "colspan=\"3\"" "Imparf") ++ + tr (th "1p" ++ td (x.s ! Indi Imparf Sg P1) ++ td (x.s ! Indi Imparf Pl P1)) ++ + tr (th "2p" ++ td (x.s ! Indi Imparf Sg P2) ++ td (x.s ! Indi Imparf Pl P2)) ++ + tr (th "3p" ++ td (x.s ! Indi Imparf Sg P3) ++ td (x.s ! Indi Imparf Pl P3)) ++ + tr (intagAttr "th" "colspan=\"3\"" "Simple") ++ + tr (th "1p" ++ td (x.s ! Indi PSimple Sg P1) ++ td (x.s ! Indi PSimple Pl P1)) ++ + tr (th "2p" ++ td (x.s ! Indi PSimple Sg P2) ++ td (x.s ! Indi PSimple Pl P2)) ++ + tr (th "3p" ++ td (x.s ! Indi PSimple Sg P3) ++ td (x.s ! Indi PSimple Pl P3)) ++ + tr (intagAttr "th" "colspan=\"3\"" "Perfect") ++ + tr (th "1p" ++ td (x.s ! Indi PPerfect Sg P1) ++ td (x.s ! Indi PPerfect Pl P1)) ++ + tr (th "2p" ++ td (x.s ! Indi PPerfect Sg P2) ++ td (x.s ! Indi PPerfect Pl P2)) ++ + tr (th "3p" ++ td (x.s ! Indi PPerfect Sg P3) ++ td (x.s ! Indi PPerfect Pl P3))) ++ + heading1 "Subjunctive" ++ + frameTable ( + tr (th "" ++ th "Sg" ++ th "Pl") ++ + tr (th "1p" ++ td (x.s ! Subjo SPres Sg P1) ++ td (x.s ! Subjo SPres Pl P1)) ++ + tr (th "2p" ++ td (x.s ! Subjo SPres Sg P2) ++ td (x.s ! Subjo SPres Pl P2)) ++ + tr (th "3p" ++ td (x.s ! Subjo SPres Sg P3) ++ td (x.s ! Subjo SPres Pl P3))) ++ + heading1 "Imperative" ++ + frameTable ( + tr (th "Sg 2p" ++ td (x.s ! Imper SgP2)) ++ + tr (th "Pl 1p" ++ td (x.s ! Imper PlP1)) ++ + tr (th "Pl 2p" ++ td (x.s ! Imper PlP2))) ++ + heading1 "Gerund" ++ + paragraph (x.s ! Ger) ++ + heading1 "Passe" ++ + frameTable ( + tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++ + tr (intagAttr "th" "colspan=\"4\"" "Indef") ++ + tr (intagAttr "th" "rowspan=\"3\"" "masc" ++ + th "nom/acc" ++ td (x.s ! PPasse Masc Sg Indef ANomAcc) ++ td (x.s ! PPasse Masc Pl Indef ANomAcc)) ++ + tr (th "gen/dat" ++ td (x.s ! PPasse Masc Sg Indef AGenDat) ++ td (x.s ! PPasse Masc Pl Indef AGenDat)) ++ + tr (th "voc" ++ td (x.s ! PPasse Masc Sg Indef AVoc) ++ td (x.s ! PPasse Masc Pl Indef AVoc)) ++ + tr (intagAttr "th" "rowspan=\"3\"" "fem" ++ + th "nom/acc" ++ td (x.s ! PPasse Fem Sg Indef ANomAcc) ++ td (x.s ! PPasse Fem Pl Indef ANomAcc)) ++ + tr (th "gen/dat" ++ td (x.s ! PPasse Fem Sg Indef AGenDat) ++ td (x.s ! PPasse Fem Pl Indef AGenDat)) ++ + tr (th "voc" ++ td (x.s ! PPasse Fem Sg Indef AVoc) ++ td (x.s ! PPasse Fem Pl Indef AVoc)) ++ + tr (intagAttr "th" "colspan=\"4\"" "Def") ++ + tr (intagAttr "th" "rowspan=\"3\"" "masc" ++ + th "nom/acc" ++ td (x.s ! PPasse Masc Sg Def ANomAcc) ++ td (x.s ! PPasse Masc Pl Def ANomAcc)) ++ + tr (th "gen/dat" ++ td (x.s ! PPasse Masc Sg Def AGenDat) ++ td (x.s ! PPasse Masc Pl Def AGenDat)) ++ + tr (th "voc" ++ td (x.s ! PPasse Masc Sg Def AVoc) ++ td (x.s ! PPasse Masc Pl Def AVoc)) ++ + tr (intagAttr "th" "rowspan=\"3\"" "fem" ++ + th "nom/acc" ++ td (x.s ! PPasse Fem Sg Def ANomAcc) ++ td (x.s ! PPasse Fem Pl Def ANomAcc)) ++ + tr (th "gen/dat" ++ td (x.s ! PPasse Fem Sg Def AGenDat) ++ td (x.s ! PPasse Fem Pl Def AGenDat)) ++ + tr (th "voc" ++ td (x.s ! PPasse Fem Sg Def AVoc) ++ td (x.s ! PPasse Fem Pl Def AVoc))) ; lin NoDefinition t = {s=t.s};