4.5 Tables and Arrays

  4.5.1 Tabular and Array
  4.5.2 Horizontal Borders
  4.5.3 Long Tables
  4.5.4 Obey Lines and Alignments
  4.5.5 multirow
  4.5.6 multirow
  4.5.7 colortbl.sty

<..<article, report, book..>
 \ConfigureEnv{table}
    {\ifvmode \IgnorePar\fi \EndP
     \HCode{<para role="table"><blockquote>}}
    {\ifvmode \IgnorePar\fi \EndP
     \HCode{</blockquote></para>}}
    {}{}
-_-_-

4.5.1 Tabular and Array

<..configure docbook Preamble..>+
 \:CheckOption{debug-} \if:Option
     \def\IgnoreDebug#1{}
 \else
     \def\IgnoreDebug#1{#1}
 \fi
-_-_-

<..latex tables..>
 \Configure{tabular}
    {\IgnorePar\EndP \halignTB{tabular}%
     \HCode{<informaltable><tgroup cols="\ar:cnt">}%
     <.tabular colspec width.>%
     \HCode{<tbody>}}
    {\HCode{</tbody></tgroup></informaltable>}\ShowPar}
    {\HCode{<row>}}
    {\HCode{</row>}}
    {\HCode{<entry\Hnewline}\halignTD
     \ifnum \HMultispan>1
        \tmp:cnt=\HCol \advance\tmp:cnt by \HMultispan
        \advance\tmp:cnt by -1
        \HCode{ namest="c\HCol"  \IgnoreDebug{nameend="c\the\tmp:cnt"}}\fi
     \HCode{>}\par\ShowPar}
    {\ifvmode\IgnorePar\fi \EndP \HCode{</entry>}}
-_-_-

[test data]

<..latex tables..>+
 \HAssign\tabularN=0
 \Configure{halignTB<>}{tabular}{<>\HAlign}
 \Configure{halignTB}
    {\halignTBL}
    {}
-_-_-

<..configure docbook-mml latex..>+
 \Configure{halignTB}
    {\ifmathml \HCode{<\:MT table }\fi \halignTBL}
    {\ifmathml \HCode{>}\fi}
-_-_-

<..configure docbook-mml array..>
 \Configure{halignTB}
    {\ifmathml \HCode{<\:MT table }\fi \halignTBL}
    {\ifmathml \HCode{>}\fi}
-_-_-

<..tabular colspec width..>
 \tmp:cnt = 0
 \loop
 \ifnum \tmp:cnt < \ar:cnt
    \advance\tmp:cnt by 1
    {\HAssign\HCol=\tmp:cnt
    \HCode{<colspec colname="c\HCol"
              \expandafter\expandafter\expandafter\ifx
                                        \HColWidth\relax\else
                  colwidth="\HColWidth"
              \fi
           />}}%
 \repeat
-_-_-

<..latex tables..>+
 \Configure{halignTD} {}{}
    {<}{\HCode{ align="left"}}
    {-}{\HCode{ align="center"}}
    {>}{\HCode{ align="right"}}
    {^}{\HCode{ valign="top"}}
    {=}{\HCode{ valign="middle"}}
    {|}{\HCode{ valign="middle"}}
    {_}{\HCode{ valign="bottom"}}
    {p}{\HCode{ align="char"}}
    {m}{\HCode{ align="left" valign="middle"}}
    {b}{\HCode{ align="left" valign="middle"}}
    {}
-_-_-

<..configure docbook-mml latex..>+
 \Configure{halignTD} {}{}
    {<}{\ifmathml \HCode{ \a:mathml columnalign="left"}\else
         \HCode{ align="left" }\fi}
    {-}{\ifmathml \HCode{ \a:mathml columnalign="center"}\else
         \HCode{ align="center" }\fi}
    {>}{\ifmathml \HCode{ \a:mathml columnalign="right"}\else
         \HCode{ align="right" }\fi}
    {^}{\ifmathml \HCode{ \a:mathml rowalign="top"}\else
         \HCode{ valign="top" }\fi}
    {=}{\ifmathml \HCode{ \a:mathml rowalign="baseline"}\else
         \HCode{ valign="baseline" }\fi}
    {|}{\ifmathml \HCode{ \a:mathml rowalign="center"}\else
         \HCode{ valign="middle" }\fi}
    {_}{\ifmathml \HCode{ \a:mathml rowalign="bottom"}\else
         \HCode{ valign="bottom" }\fi}
    {p}{\ifmathml \HCode{ \a:mathml columnalign="left"}\else
         \HCode{ align="left"}\fi}
    {}
-_-_-

<..latex tables..>+
 \Configure{hline}{}
 \Configure{//[]}{}
-_-_-

4.5.2 Horizontal Borders

<..latex tables..>+
 \Configure{HBorder}
    {<row\Hnewline role="hline">}
       {<entry rowsep="1"></entry>}
    {</row>}
    {<row\Hnewline role="cline">}
       {<entry rowsep="0"></entry>}
       {<entry rowsep="1"></entry>}
    {</row>}
    {<row\Hnewline role="vspace">}
        {<entry rowsep="1"\Hnewline></entry>}
    {</row>}
 \Configure{putHBorder}{\HCode{\HBorder}}
-_-_-

<..configure docbook-mml latex..>+
 \def\:MM{\ifmathml \a:mathml m\fi}
 \Configure{HBorder}
    {<\ifmathml \a:mathml mtr class\else row role\fi ="hline">}
    {\ifmathml  <\a:mathml mtd><mo> \string&\#x0332; </mo></\a:mathml mtd>\else
                <entry rowsep="1"></entry>\fi}
    {</\ifmathml \a:mathml mtr\else row\fi>}
    {<\ifmathml \a:mathml mtr class\else row role\fi ="cline">}
    {\ifmathml <\a:mathml mtd></\a:mathml mtd>\else
              <entry rowsep="0"></entry>\fi}
    {\ifmathml<\a:mathml mtd><mo> \string&\#x0332; </mo></\a:mathml mtd>\else
              <entry rowsep="1"></entry>\fi}
    {</\ifmathml \a:mathml mtr\else row\fi>}
    {<\ifmathml \a:mathml mtr class\else row role\fi ="vspace">}
    {\ifmathml <\a:mathml mtd></\a:mathml mtd>\else
            <entry rowsep="1"\Hnewline>\string&\#x00A0;</entry>\fi}
    {</\ifmathml \a:mathml mtr\else row\fi>}
-_-_-

<..configure docbook latex..>+
 \Configure{xcline}{\ht:special{t4ht=<!--dirt-->}}
-_-_-

<..mml hline..>
 
-_-_-

 
   \let\VBorder=\empty   \let\AllColMargins=\empty
   \Configure{VBorder}
      {\let\VBorder=\empty \let\AllColMargins=\empty
       \global\let\GROUPS=\empty \HAssign\NewGroup = 0
       \gHAdvance\Next:TableNo by 1 \global\let\TableNo=\Next:TableNo }
      {\xdef\VBorder{\VBorder\ifnum \NewGroup> 0 </colgroup>\fi}
       \HAssign\NewGroup = 0  \gdef\GROUPS{rules="groups"}}
      {\Advance:\NewGroup by 1
       \ifnum \NewGroup=1 \xdef\VBorder{\VBorder<colgroup
           xml:id="TBL-\TableNo-\ar:cnt g">}\fi
       \xdef\VBorder{\VBorder<col\Hnewline xml:id="TBL-\TableNo
          -\ar:cnt"\xml:empty>}\xdef\AllColMargins{\AllColMargins1}}
      {\xdef\AllColMargins{\AllColMargins 0}}

<..latex tables..>+
 \HAssign\Next:TableNo=0 \global\let\TableNo=\Next:TableNo
-_-_-

<..latex tables..>+
 \Configure{hline}{\ifx \ar:cnt\:UnDef\else
       \o:noalign:{<.hline body for array/tabular.>}%
       \expandafter\ignoreEndTr
    \fi}
-_-_-

<..hline body for array/tabular..>
 \append:def\hline:s{\a:HBorder}%
 \def\:tempb{\ifnum \tmp:cnt<\ar:cnt
     \advance\tmp:cnt by 1 \append:def\hline:s{\b:HBorder}%
     \expandafter\:tempb
   \fi }%
 \tmp:cnt=0 \:tempb
 \append:def\hline:s{\c:HBorder}\global\let\hline:s=\hline:s
-_-_-

 
 \Configure{//[]}{\ifx \ar:cnt\:UnDef
    \else\o:noalign:{<.vspace body for array/tabular.>}\fi}

<..vspace body for array/tabular..>
 \append:def\vspc:s{\h:HBorder}%
 \def\:tempb{\ifnum \tmp:cnt<\ar:cnt
     \advance\tmp:cnt by 1 \append:def\vspc:s{\i:HBorder}%
     \expandafter\:tempb
   \fi }
 \tmp:cnt0 \:tempb
 \append:def\vspc:s{\j:HBorder}\global\let\vspc:s\vspc:s
-_-_-

4.5.3 Long Tables

<..configure docbook longtable..>
 \Configure{longtable}
    {\IgnorePar\EndP
     \HCode{<informaltable}\halignTB{longtable}%
     \HCode{><tgroup cols="\ar:cnt"><tbody>}}
    {\HCode{</tbody></tgroup></informaltable>}\ShowPar}
    {\HCode{<row \Hnewline}\halignTR\HCode{>}}
    {\r:HA}
    {\HCode{<entry}%
     \halignTD
     \ifnum \HMultispan>1
        \tmp:cnt=\HCol \advance\tmp:cnt by \HMultispan
        \advance\tmp:cnt by -1
        \HCode{ namest="c\HCol"  \IgnoreDebug{nameend="c\the\tmp:cnt"}}\fi
     \HCode{\Hnewline role="td}<.tabular td align.>%
     \HCode{">}<.td save EndP.>%
     <.start array par box.>\PushStack\Table:Stck\TableNo}
    {\PopStack\Table:Stck\TableNo <.end array par box.>\d:HA}
 \Configure{halignTB<>}{longtable}{\HCode{role="longtable"\Hnewline
                                             }<>\HAlign}
 \Configure{longtableparbox}{\IgnorePar\leavevmode\ShowPar\par}
-_-_-

<..configure docbook longtable..>+
 \def\r:HA{\HCode{</row>}}
 \def\d:HA{\ifvmode \IgnorePar \fi \EndP\HCode{</entry>}<.td recall EndP.>}
-_-_-

<..configure docbook tex4ht..>+
 \newif\ifHCond
-_-_-

<..show input line no..>
 <!--l. \the\inputlineno-->%
-_-_-

<..td save EndP..>
 \SaveEndP
-_-_-

<..td recall EndP..>
 \RecallEndP
-_-_-

<..start array par box..>
 \par  \ShowPar
-_-_-

<..end array par box..>
 \IgnorePar \EndP
-_-_-

4.5.4 Obey Lines and Alignments

<..obey lines..>
 \Configure{verb}{}{}
-_-_-

<..latex, plain..>
 \Configure{obeylines}
    {\ifvmode \IgnorePar \EndP
        \HCode{<blockquote role="obeylines-v">}%
        \gdef\ob:ln{blockquote}%
     \else \HCode{<remark role="obeylines-h">}%
        \gdef\ob:ln{remark}%
     \fi
    }
    {\ht:special{t4ht=</\ob:ln>}\ShowPar} {\hbox{\HCode{<!--br /-->}}}
-_-_-

<..latex etc..>+
 \ConfigureEnv{center}
    {} {\ShowPar} {}{}
 \Configure{centerline}
    {\ifvmode \IgnorePar\fi\HCode{<!--centerline-->}}
    {\HCode{<!--/centerline-->}}
 \Configure{leftline}
    {\ifvmode \IgnorePar\fi\HCode{<!--leftline-->}}
    {\HCode{<!--/leftline-->}}
 \Configure{rightline}
    {\ifvmode \IgnorePar\fi\HCode{<!--rightline-->}}
    {\HCode{<!--/rightline-->}}
-_-_-

4.5.5 multirow

<..configure docbook multirow..>
 \Configure{multirow}
     {\HCode{<blockquote
         role="multirow"><para role="\the\@tempcnta">}}
     {\HCode{</para></blockquote>}}
-_-_-

4.5.6 multirow

<..configure docbook dcolumn..>
 \Configure{dcolumn}
   {\HCode{<blockquote role="align-char"><para role="\Dpoint">}}
   {\HCode{</para></blockquote>}}
-_-_-

4.5.7 colortbl.sty

<..configure docbook colortbl WAIT..>
 \HAssign\Table:No=0
 \HAssign\TableNo=0
 \HAssign\Prev:Col=0
 \HAssign\HRow=0
 
 \Configure{@classz}
    {\let\begin:current@color=\relax
     \let\end:current@color=\relax }
    {%
      \ifx \CT@column@color\relax \else
      \ifx \CT@column@color\empty \else{%
          \def\CT@color{\@ifnextchar[\color:ii\color:i}%
          \CT@column@color<.par del.>%
          \edef\:temp{\noexpand\add:color
             {background-color}{\:temp}{\ar:cnt}}\:temp
      }\fi \fi
    }
    {\begin:current@color}
    {\end:current@color}
 \Configure{rowcolor}{\row:clr}
 \def\row:clr#1{{%
 %  \HAdvance\HRow by 1
   \add:color{background-color}{#1}{\HRow-}}}
 \Configure{text-colortbl}
   {\add:color{color}{\current@color}{\HRow-\HCol}}
 \Configure{cell-colortbl}
    {\add:color{background-color}{\current@color}{\HRow-\HCol}}
 \def\add:color#1#2#3{%
   \Configure{SetHColor}{\Css{ \#TBL-\TableNo-#3{ #1:\HColor }}}{#2}}
-_-_-