# -*- mode: Perl -*-
# /=====================================================================\ #
# |  tabulary                                                           | #
# | Implementation for LaTeXML                                          | #
# |=====================================================================| #
# | Part of LaTeXML:                                                    | #
# |  Public domain software, produced as part of work done by the       | #
# |  United States Government & not subject to copyright in the US.     | #
# |---------------------------------------------------------------------| #
# | Bruce Miller <bruce.miller@nist.gov>                        #_#     | #
# | http://dlmf.nist.gov/LaTeXML/                              (o o)    | #
# \=========================================================ooo==U==ooo=/ #
package LaTeXML::Package::Pool;
use strict;
use warnings;
use LaTeXML::Package;

RequirePackage('array');

# \tabularx{Dimension}[]{}
DefMacro('\tabulary{}[]{}',
  '\@tabular@bindings{#3}[vattach=#2,width=#1]\@@tabulary{#1}[#2]{#3}\@start@alignment', locked => 1);
DefMacro('\endtabulary',
  '\@finish@alignment\@end@tabulary', locked => 1);
DefPrimitive('\@end@tabulary', sub { $_[0]->egroup; });
DefConstructor('\@@tabulary{Dimension}[] Undigested DigestedBody',
  '#4',
  reversion    => '\begin{tabulary}{#1}[#2]{#3}#4\end{tabulary}',
  beforeDigest => sub { $_[0]->bgroup; },
  mode         => 'text');

# Like l,c,r,j, but set like p w/o explicit width...
DefColumnType('L', sub {
    $LaTeXML::BUILD_TEMPLATE->addColumn(before => Tokens(T_CS('\vtop'), T_BEGIN),
      after => Tokens(T_END),
      align => 'left'); return; });
DefColumnType('C', sub {
    $LaTeXML::BUILD_TEMPLATE->addColumn(before => Tokens(T_CS('\vtop'), T_BEGIN),
      after => Tokens(T_END),
      align => 'center'); return; });
DefColumnType('R', sub {
    $LaTeXML::BUILD_TEMPLATE->addColumn(before => Tokens(T_CS('\vtop'), T_BEGIN),
      after => Tokens(T_END),
      align => 'right'); return; });
DefColumnType('J', sub {
    $LaTeXML::BUILD_TEMPLATE->addColumn(before => Tokens(T_CS('\vtop'), T_BEGIN),
      after => Tokens(T_END),
      align => 'justify'); return; });

# stub in for macros that try to redefine it.
DefMacro('\TY@tabular', '\relax');

1;