%% %% This is file `tabu.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% tabu.dtx (with options: `package') %% %% This is a generated file. %% %% tabu : 2010/11/18 v1.3 - tabu : Flexible LaTeX tabulars %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.3 of this license or (at your option) any later %% version. The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% %% This work consists of the main source file tabu.dtx %% and the derived files %% tabu.sty, tabu.pdf, tabu.ins %% %% tabu : Flexible LaTeX tabulars %% Copyright (C) 2010 by Florent Chervet %% \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{tabu}[2010/11/18 v1.3 - flexible LaTeX tabulars (FC)] \RequirePackage{array}[2008/09/09] \AtEndOfPackage{\tabu@AtEnd\let\tabu@AtEnd\@undefined} \let\tabu@AtEnd\@empty \def\TMP@EnsureCode#1#2{% \edef\tabu@AtEnd{% \tabu@AtEnd \catcode#1 \the\catcode#1\relax }% \catcode#1 #2\relax }% \TMP@EnsureCode \TMP@EnsureCode{33}{12} % ! \TMP@EnsureCode{124}{12}% | \TMP@EnsureCode{0}{12}% ^^@ \TMP@EnsureCode{36}{3}% $ = math shift \let\tabu@message\@gobble \def\tracingtabu{\let\tabu@message\message} \let\tabudefaulttarget\linewidth \DeclareOption{debugshow}{\tracingtabu} \DeclareOption{linegoal}{% \AtEndOfPackage{\RequirePackage{linegoal}[2010/10/31]}% \def\tabudefaulttarget{\linegoal}% \linegoal is \linewidth if not pdfTeX }% linegoal option \DeclareOption{delarray}{% \AtEndOfPackage{\RequirePackage{delarray}}% }% delarray option \DeclareOption{light}{% \AtEndOfPackage{% \let\tabu@prepnext@tok \prepnext@tok \let\tabu@save@decl \save@decl \let\tabu@rowfont \tabu@norowfont \let\tabucline \tabu@nocline \let\tabu@firstcline \relax \let\tabu@lines \relax } }% light option \def\tabu@norowfont{\PackageError{tabu} {\string\rowfont\space is not available with option `light'}\@ehd} \def\tabu@nocline{\PackageError{tabu} {\string\tabucline\space is not available with option `light'}\@ehd} \ProcessOptions \AtBeginDocument{% \@ifundefined{NC@rewrite@X}{\newcolumntype{X}{}}{}% new column X if not exists \expandafter\in@\expandafter\@arrayright\expandafter{\endarray}% \ifin@ \let\tabu@endarray\endarray \else \tabu@fix@arrayright \fi % \@ifpackageloaded{colortbl} \tabu@colortbltrue \tabu@colortblfalse } \newcount\tabu@cnt \newcount\tabu@nbcols \newcount\tabu@X@cols \newcount\tabu@start \newcount\tabu@stop \newdimen\tabu@target \newdimen\tabu@spreadtarget \newdimen\tabu@naturalX \newdimen\tabucolX \newdimen\tabu@X@sum \newif\iftabu@measuring \newif\iftabu@spread \newif\iftabu@nested \newif\iftabu@firstcline \newsavebox\tabu@box \chardef\tabu@arstrutbox=\@arstrutbox \let\tabu@vcenter \vcenter \def\tabu@gobblespace#1 {#1} \newcommand\tabu@NC@rewrite@X[1][]{\tabu@rewrite@X{#1}% \let\@halignto \relax \expandafter \NC@find \tabucolX@spec} \expandafter\def\csname NC@rewrite@\string\usetabu\endcsname#1{% \ifx\\#1\\\tabu@saveerr{}\else \@ifundefined{tabu@saved@\string#1} {\tabu@saveerr{#1}} {\let\tabu@rewrite@X \tabu@rewrite@Xrestore \def\tabu@temp{\xdef\tabu@usetabu{% \col@sep \the\col@sep\relax \arrayrulewidth \the\arrayrulewidth\relax \@tempdima \ht\@arstrutbox \advance\@tempdima -\extrarowheight \extrarowheight \the\extrarowheight\relax \advance\@tempdima \extrarowheight \ht\@arstrutbox \@tempdima \extratabsurround \the\extratabsurround\relax \doublerulesep \the\doublerulesep\relax}}% \aftergroup \tabu@usetabu \csname tabu@saved@\string#1\expandafter\endcsname}% \fi }% \NC@rewrite@\usetabu \expandafter\def\csname NC@find@\string\usetabu\endcsname#1\usetabu{\NC@{#1}} \expandafter\def\csname NC@rewrite@\string\tabu@rewritefirst\endcsname{% \ifx\tabu@lines\relax \NC@list\expandafter{\expandafter\NC@do \expandafter\usetabu \NC@do X\NC@do\tabu@rewritelast}% \else \NC@list\expandafter{\expandafter\NC@do \expandafter\usetabu \expandafter\NC@do \expandafter|\tabu@NC@list \NC@do X\NC@do\tabu@rewritelast}% \tabu@lines % defines NC@rewrite@| for tabu only (inside @mkpream group) \fi \let\save@decl \tabu@save@decl % inversion of tokens in text mode \let\NC@rewrite@X \tabu@NC@rewrite@X \aftergroup \tabu@global@temp \NC@find \tabu@rewritelast }% NC@rewrite@\tabu@rewritefirst \expandafter\def\csname NC@find@\string\tabu@rewritefirst\endcsname #1\tabu@rewritefirst{\NC@{#1}} \def\tabu@rewritefirst{% \edef\tabu@NC@list{\the\NC@list}% \NC@list{\NC@do \tabu@rewritefirst \NC@do *}% }% \tabu@rewritefirst \expandafter\def\csname NC@rewrite@\string\tabu@rewritelast\endcsname{% \global\NC@list\expandafter{\tabu@NC@list}% \futurelet \tabu@temp \tabu@rewritelast }% \NC@rewrite@\tabu@rewritelast \expandafter\def\csname NC@find@\string\tabu@rewritelast\endcsname #1\tabu@rewritelast{\NC@{#1}} \def\tabu@rewritelast{% \ifx \@halignto\relax % found a X column \let\tabu@temp \@empty %\aftergroup \tabu@addphantomline \ifx \tabu@halignto\relax % X column measure \aftergroup \tabu@prep@TRIAL \else \aftergroup \tabu@setup@everycr \fi \else \ifdim \tabu@target=\z@ \let\tabu@temp \@empty \else \if |\noexpand\tabu@temp \def\tabu@temp{@{\extracolsep\@flushglue}}\else \if !\noexpand\tabu@temp \def\tabu@temp{@{\extracolsep\@flushglue}}\else \def\tabu@temp{!{\extracolsep\@flushglue}}\fi\fi \fi \aftergroup\tabu@setup@everycr \fi \let\@halignto \tabu@halignto \expandafter\NC@find \tabu@temp }% \tabu@rewritelast %%\newtoks\tabu@everycr@tok \newif\iftabu@colortbl \def\tabu@nowrite{% cancels a \write command (tabularx method) \begingroup \def\let{\afterassignment\endgroup\toks@}% \afterassignment\let\count@ }% \tabu@nowrite \let\tabu@write\write \def\tabu{% \ifmmode \def\endtabu{\endarray}% \else \def\endtabu{\endtabular}\fi \tabu@setup \tabu@settarget }% \tabu \def\tabu@setup{% \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln \let\@preamerror \@preamerr % arydshln \let\endarray \tabu@endarray % colortbl & arydshln (delarray) \let\tabu@global@temp \@empty \let\tabu@global@X \@empty \ifx\verbatim \tabu@sanitizetext \tabu@nestedtrue \def\tabu@aligndefault{t}\def\tabudefaulttarget{\linewidth}% \else \tabu@nestedfalse \def\tabu@aligndefault{c}% \global\tabu@footnotes{}% \aftergroup\the\aftergroup\tabu@footnotes \ifdim\parindent>\z@ \ifx\linewidth\tabudefaulttarget \everypar\expandafter{% % correction for indentation \the\everypar\everypar\expandafter{\the\everypar}% \setbox\z@=\lastbox \ifdim\wd\z@>\z@ \advance\linewidth -\wd\z@\fi \box\z@ }% \fi\fi \fi \let\@footnotetext \tabu@footnotetext \let\@xfootnotenext\tabu@xfootnotetext \let\centering \tabu@centering \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft \let\@trivlist \tabu@trivlist % \let\tabudecimal \tabu@tabudecimal \let\verbatim \tabu@sanitizetext \let\fbox \tabu@fbox \let\prepnext@tok \tabu@prepnext@tok % \let\rowfont \tabu@rowfont \everycr{}\let\tabu@everycr \everycr \tabu@spreadfalse \tabu@measuringfalse \edef\tabu@hfuzz{\ifdim\hfuzz<.1\p@ .1\p@\else\the\hfuzz\fi}% \tabu@rewritefirst }% \tabu@setup \def\tabu@save@decl{% no inversion on tokens when not in math mode \ifcat$\d@llarend \toks\count@\expandafter\expandafter\expandafter{% \expandafter\@nextchar \the\toks\count@}% \else \toks\count@\expandafter\expandafter\expandafter{% \expandafter\the\expandafter\toks\expandafter\count@\@nextchar}% \fi }% \tabu@save@decl \def\tabu@settarget{\futurelet\@let@token \tabu@sett@rget} \def\tabu@sett@rget{\tabu@target\z@ \ifcase \ifx \bgroup\@let@token 0\else \ifx [\@let@token 0\else \ifx \@sptoken\@let@token 1\else \if t\@let@token 2\else \if s\@let@token 3\else \m@ne\fi\fi\fi\fi\fi\relax \expandafter\tabu@begin \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget \or \expandafter\tabu@to \or \expandafter\tabu@spread \else\expandafter\tabu@begin \fi }% \tabu@sett@rget \def\tabu@to to{\def\@halignto{to}\tabu@gettarget} \def\tabu@spread spread{\tabu@spreadtrue\def\@halignto{spread}\tabu@gettarget} \def\tabu@gettarget{\afterassignment\tabu@begin\tabu@target} \def\tabu@begin#1#{% \edef\@halignto{\ifdim\tabu@target>\z@ \@halignto\the\tabu@target\fi}% \let\tabu@halignto \@halignto \expandafter\@testopt\expandafter\tabu@@begin \tabu@aligndefault #1\@nil }% \tabu@begin \def\tabu@@begin[#1]#2\@nil#3{% \edef\tabu@align{#1}% \edef\tabu@saved{% \ifmmode \col@sep \the\arraycolsep \else \col@sep \the\tabcolsep \fi\relax \arrayrulewidth \the\arrayrulewidth\relax \extrarowheight \the\extrarowheight\relax \extratabsurround \the\extratabsurround\relax \doublerulesep \the\doublerulesep\relax}% \expandafter\def\expandafter\tabu@saved\expandafter{\tabu@saved \tabu@temp \edef\tabu@halignto{to\the\tabu@target}\NC@find #3}% \ifmmode \expandafter\array \else \expandafter\tabular \fi [{#1}]#2{\tabu@rewritefirst #3}% }% \tabu@@begin \newtoks\tabu@footnotes \long\def\tabu@footnotetext#1{% \edef\@tempa{\the\tabu@footnotes \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% \global\tabu@footnotes\expandafter{\@tempa{#1}}}% \long\def\tabu@xfootnotetext[#1]#2{% \global\tabu@footnotes\expandafter{\the\tabu@footnotes \footnotetext[{#1}]{#2}}} \def\tabu@rewrite@X#1{\tabu@Xarg{#1}% \iftabu@spread \tabu@rewrite@Xspread \else \tabu@rewrite@Xto \fi }% \tabu@rewrite@X \def\tabu@rewrite@Xnested#1{\in@ ${#1}\ifin@ \def\tabucolX@spec{>{$}p{\tabucolX}<{$}}\else \def\tabucolX@spec{p{\tabucolX}}\fi} \def\tabu@rewrite@Xrestore#1{\tabu@Xarg{#1}\let\tabucolX@spec\tabu@temp}% \def\tabu@rewrite@Xto{% \iftabu@measuring % not the first X column found in preamble \xdef\tabu@global@X {\tabu@global@X \advance\tabu@X@sum \the\tabu@X@sum\relax}% \else % first X column found in preamble \tabu@measuringtrue \ifdim\tabu@target=\z@ \setlength \tabu@target \tabudefaulttarget \fi \xdef\tabu@global@X{% \tabu@X@sum \the\tabu@X@sum\relax \tabu@target \the\tabu@target\relax}% \let\tabu@halignto \relax \fi }% \tabu@rewrite@Xto \def\tabu@rewrite@Xspread{% tabu spread with X columns: we need to store each coef \iftabu@measuring % not the first X column found in preamble \advance\tabu@X@cols \@ne \expandafter\let\csname tabu@X\the\tabu@X@cols\endcsname \relax \xdef\tabu@global@X {\tabu@global@X \advance\tabu@X@cols\@ne \advance\tabu@X@sum \the\tabu@X@sum\relax \def\csname tabu@X\the\tabu@X@cols\endcsname{\strip@pt\tabu@X@sum}}% \else % first X column found in preamble \tabu@measuringtrue \tabu@X@cols \@ne \tabu@spreadtarget=\tabu@target \setlength \tabu@target \tabudefaulttarget \expandafter\let\csname tabu@X\the\tabu@X@cols\endcsname \relax \xdef\tabu@global@X {% \tabu@X@cols \@ne \tabu@X@sum \the\tabu@X@sum\relax \tabu@target \the\tabu@target\relax \tabu@spreadtarget \the\tabu@spreadtarget\relax \def\csname tabu@X\the\tabu@X@cols\endcsname{\strip@pt\tabu@X@sum}}% \let\tabu@halignto \relax \fi }% \tabu@rewrite@Xspread \def\tabu@Xarg#1{% \ifx\\#1\\% \tabu@X@sum \p@ \def\tabucolX@spec{p{\tabucolX}}% \edef\tabu@temp{p{\the\tabucolX}}% \else \tabu@X@sum \z@ \let\tabucolX@align \@empty \let\tabucolX@spec \@empty \let\tabu@Xmath \relax \tabu@Xparse {}#1\relax\@nnil \fi }% \tabu@Xarg \def\tabu@Xparse#1{\futurelet\@let@token\tabu@Xtest} \expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} \def\tabu@Xtest{% \ifcase \ifx \@nnil\@let@token \z@ \else \ifx \relax\@let@token \m@ne\else \if ,\@let@token \m@ne\else \if p\@let@token 1\else \if m\@let@token 2\else \if b\@let@token 3\else \if l\@let@token 4\else \if c\@let@token 5\else \if r\@let@token 6\else \if .\@let@token 7\else \ifx \@sptoken\@let@token 8\else \if L\@let@token 9\else \if C\@let@token 10\else \if R\@let@token 11\else \ifcat $\@let@token 12\else 13\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax \tabucolX@do \expandafter\remove@to@nnil \or \tabu@Xcolspec{p}% \or \tabu@Xcolspec{m}% \or \tabu@Xcolspec{b}% \or \tabu@Xalign{>{\raggedright}}% \or \tabu@Xalign{>{\centering}}% \or \tabu@Xalign{>{\raggedleft}}% \or \expandafter\tabu@Xcoef \or \expandafter\tabu@Xparsespace \or \tabu@Xalign{>{\RaggedRight}}% \or \tabu@Xalign{>{\Centering}}% \or \tabu@Xalign{>{\RaggedLeft}}% \or \let\tabu@Xmath=$\expandafter\tabu@Xparse \or \tabu@Xcoef{}% \else \expandafter\tabu@Xparse \fi }% \tabu@Xtest \def\tabu@Xalign#1{% \ifx \tabucolX@align\@empty \else \PackageWarning{tabu} {Duplicate horizontal alignment specification}\fi \def\tabucolX@align{#1}\expandafter\tabu@Xparse }% \tabu@Xalign \def\tabu@Xcolspec#1{% \ifx\tabucolX@spec\@empty\else \PackageWarning{tabu} {Duplicate vertical alignment specification}\fi \def\tabucolX@spec{#1}\expandafter\tabu@Xparse }% \tabu@Xcolspec \def\tabu@Xcoef#1{\def\@tempa{#1}% \afterassignment\tabu@Xc@ef \tabu@cnt }% \tabu@Xcoef \def\tabu@Xc@ef{% \advance\tabu@X@sum \@tempa\the\tabu@cnt\p@ \tabu@Xparse{}% }% \tabu@Xc@ef \def\tabucolX@do{% \ifx\tabucolX@spec\@empty \def\tabucolX@spec{p}\fi \ifdim \tabu@X@sum=\z@ \tabu@X@sum \p@\fi \begingroup \edef\tabucolX@spec##1{\tabucolX@spec{##1}}% \edef\tabu@temp{\dimexpr\strip@pt\tabu@X@sum \tabucolX \relax}% \toks@\expandafter{\tabucolX@align}% \edef\x{% \def\noexpand\tabu@temp{% \ifx \tabu@Xmath\relax\else >{$}\fi \the\toks@ \tabucolX@spec{\the\tabu@temp}% \ifx \tabu@Xmath\relax\else <{$}\fi}% \def\noexpand\tabucolX@spec{% \ifx \tabu@Xmath\relax\else >{$}\fi \the\toks@ \tabucolX@spec{\tabu@temp}% \ifx \tabu@Xmath\relax\else <{$}\fi}% }\expandafter\endgroup\x }% \tabucolX@do \def\tabu@prep@TRIAL{% \let\tabu@savedpreamble \@preamble \def\savetabu {\tabu@saveX}% \begingroup\iffalse{\fi\ifnum0=`}\fi \tabu@setup@TRIAL \iftabu@spread % first trial only \advance\tabu@X@cols \@ne \expandafter\let\csname tabu@X\the\tabu@X@cols\endcsname \@undefined \tabu@X@cols \z@ \tabu@naturalX \z@ \tabucolX \z@ \let\tabu@naturalX@max \z@ \let\tabu@naturalX@min \z@ \let\tabu@startpboxORI \@startpbox \let\@startpbox \tabu@spread@startpbox \else \tabucolX = \tabu@target \fi \tabu@cnt \z@ % number of trials \def\tabu@lasttry{\m@ne\p@}% \tabu@arrayleft@measure }% \tabu@prep@TRIAL \def\tabu@setup@TRIAL{\tabu@global@X \let\tabu@rewrite@X \tabu@rewrite@Xnested \def\tabudefaulttarget{\linewidth}% \def\@elt##1{\global\value{##1}\the\value{##1}\relax}% \xdef\tabu@global@X {\cl@@ckpt}\let\@elt \relax \hbadness\@M \hfuzz\maxdimen \let\hbadness \@tempcnta \let\hfuzz \@tempdima \let\write \tabu@nowrite \let\@footnotetext\@gobble \let\tabu@saveX \@gobble \tabu@TRIAL@hook }% \tabu@setup@TRIAL \let\tabu@TRIAL@hook\@empty \newcommand\tabuDisableCommands[1]{\g@addto@macro\tabu@TRIAL@hook{#1}} \def\tabu@arrayleft@measure#1\bgroup{% \def\tabu@Xfinish{\ifnum0=`{\fi\iffalse}\fi\endgroup\tabu@global@X #1\bgroup}% \toks@{% \tabu@setup@everycr \let\@preamble\tabu@savedpreamble}% \tabu@collect }% \tabu@arrayleft@measure \def\tabu@collect{\catcode`\^^@=13\def\tabu@stack{b}\tabu@collectbody} \long\def\tabu@collectbody#1\end#2{% \edef\tabu@stack{\tabu@pushbegins #1\begin\end\expandafter\@gobble\tabu@stack}% \ifx\tabu@stack\@empty \toks@\expandafter{\the\toks@#1}\def\tabu@endenvir{\end{#2}}% \expandafter\tabu@TRIAL \else \toks@\expandafter{\the\toks@#1\end{#2}}% \expandafter\tabu@collectbody \fi }% \tabu@collectbody \long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi} \def\tabu@TRIAL{\setbox\tabu@box \hbox\bgroup $\@arrayleft \if c\tabu@align\vcenter\else\vbox\fi\bgroup \the\toks@ \tabu@endTRIAL}% constant \def\tabu@endTRIAL{\endarray$\egroup \iftabu@spread \tabu@spreadfalse \let\@startpbox \tabu@startpboxORI \tabu@spreadarith % \else \tabu@arith \fi \iftabu@measuring \tabu@measuringfalse \expandafter \tabu@TRIAL % \else \toks@\expandafter\expandafter\expandafter{% \the\expandafter\toks@ \tabu@endenvir}% \expandafter \tabu@Xfinish \the\toks@ % \fi }% \tabu@endTRIAL \def\tabu@arith{% \advance\tabu@cnt \@ne %% \showbox\tabu@box \ifdim \tabu@lasttry=\wd\tabu@box \tabu@message{\tabu@header Reached minimum width. Backing up}% \else \edef\tabu@lasttry{\the\wd\tabu@box}% \tabu@message{\tabu@message@arith}% \ifdim \dimexpr \wd \tabu@box - \tabu@target <\tabu@hfuzz \tabu@message{\tabu@message@reached}% \xdef\tabu@global@X {\tabu@target\the\tabu@target\relax \tabu@global@X \tabucolX \the\tabucolX\relax}% \else \advance\tabucolX -\dimexpr(\wd\tabu@box-\tabu@target-\tabu@X@sum/65536) *65536/\tabu@X@sum\relax \ifdim \tabucolX<\z@ {\let\write\tabu@write\PackageWarning{tabu} {X Columns too narrow (table too wide)\MessageBreak}}% \tabucolX=1em% \else \tabu@measuringtrue \fi \fi \fi }% \tabu@arith \def\tabu@spreadarith{% \tabu@naturalX \tabu@naturalX@max\relax \tabucolX \tabu@naturalX@min\relax \tabu@message{\tabu@message@spread}% \ifdim \dimexpr \wd\tabu@box + \tabu@spreadtarget <\tabu@target \advance\tabu@spreadtarget \dimexpr\wd\tabu@box-\tabu@naturalX+\tabucolX\relax \ifdim \tabu@spreadtarget <\tabu@target \tabu@target = \tabu@spreadtarget \fi \tabu@message{\expandafter\tabu@msg@align \the\tabu@target {}{}{}{}{}\@@}% \tabu@message{\ifdim \tabu@spreadtarget>\tabu@target (tabu) default target used.\fi}% \else \tabu@message{\expandafter\tabu@msg@align \the\tabu@target { }{}{}{}{}\@@} \tabu@message{(tabu)\ifdim\wd\tabu@box<\tabu@target spread too large\else tabu spread is useless here\fi, default target used.}% \fi \xdef\tabu@halignto {to\the\tabu@target}% \tabucolX \tabu@target \tabu@measuringtrue }% \tabu@spreadarith \def\tabu@message@arith{\tabu@header \expandafter\tabu@msg@align \the\tabucolX { }{ }{ }{ }{}\@@ \expandafter\tabu@msg@align \the\wd\tabu@box { }{ }{ }{ }{}\@@ \expandafter\tabu@msg@align \the\tabu@target { }{ }{ }{ }{}\@@ \expandafter\tabu@msg@align \the\tabu@X@sum {}{}{}{}{}\@@ \expandafter\tabu@msg@align \the\dimexpr(\tabu@target-\wd\tabu@box) *65536/\tabu@X@sum\relax {}{}{}{}{}\@@} \def\tabu@message@spread{\tabu@spreadheader \expandafter\tabu@msg@align \the\tabu@spreadtarget {}{}{}{}{}\@@ \expandafter\tabu@msg@align \the\wd\tabu@box {}{}{}{}{}\@@ \expandafter\tabu@msg@align \the\tabucolX {}{}{}{}{}\@@ \expandafter\tabu@msg@align \expandafter-\the\tabu@naturalX {}{}{}{}{}\@@} \def\tabu@message@reached{\tabu@header \expandafter\tabu@msg@align \the\tabucolX { }{ }{ }{ }{}\@@ ******** Reached Target : hfuzz=\tabu@hfuzz\space ********^^J} \def\do#1{% \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% \ifnum##1<10 #1#1#1\else \ifnum##1<100 #1#1\else \ifnum##1<\@m #1\fi\fi\fi ##1.##2##3##4##5##6##7##8#1}% \def\tabu@header{% \ifnum\tabu@cnt=\@ne (tabu) Try#1#1#1#1tabu X#1#1#1#1#1#1tabu Width#1#1#1#1#1Target% #1#1#1#1#1#1#1#1#1Coefs#1#1#1#1#1#1#1Update^^J\fi (tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt)#1#1}% \def\tabu@spreadheader{% (tabu) Try#1#1#1#1Spread#1#1#1tabu Width#1#1#1#1#1Min Nat.#1#1#1#1Nat.X% #1#1#1#1#1#1#1#1#1New Target^^J% (tabu)spread}% }\do{ } \def\tabu@spread@startpbox#1{\bgroup \in@{\tabucolX}{#1}% \ifin@ \let\vss\relax\let\vfil\vss\let\vfill\vss\let\vskip\@tempskipa \hbox to\tabu@target\bgroup\aftergroup\tabu@spread@endhbox\hfil \else \expandafter\@gobble\tabu@startpboxORI{#1}% \@gobble \bgroup \fi }% \tabu@spread@startpbox \def\tabu@spread@endhbox{% \ifnum\badness>\@M % \global\tabu@naturalX \tabu@target \else \setbox\tabu@box\lastbox \setbox\tabu@box\hbox{\unhbox\tabu@box}% \global\advance\tabu@X@cols \@ne \ifcsname tabu@X\the\tabu@X@cols\endcsname \global\advance\tabu@naturalX \wd\tabu@box \else \global\tabu@X@cols \@ne \global\tabu@naturalX \wd\tabu@box \fi \ifdim \tabu@naturalX@max<\tabu@naturalX \xdef\tabu@naturalX@max{\the\tabu@naturalX}% \fi \ifdim \tabu@naturalX@min<\dimexpr \wd\tabu@box * \tabu@X@sum / (65536*\csname tabu@X\the\tabu@X@cols\endcsname)\relax \xdef\tabu@naturalX@min{\the\dimexpr \wd\tabu@box * \tabu@X@sum / (65536*\csname tabu@X\the\tabu@X@cols\endcsname)\relax}% \fi \fi \box\tabu@box \egroup % end of \vtop (measure) }% \tabu@spread@endhbox \newcommand*\tabuvline@rewrite[1][]{\tabuvline@arg{#1}% \expandafter \NC@find \tabu@temp} \def\tabu@vline#1{\vrule width#1} \def\tabuvline@arg#1{% \ifx\\#1\\% \def\tabu@temp{!{\tabu@vline\arrayrulewidth}}% \else \futurelet \tabu@temp \tabuvline@argi #1\p@\p@\@nnil \tabuvline@argiii \fi }% \tabuvline@arg \def\tabuvline@argi{% \let\tabu@color \@empty \ifcat A\noexpand\tabu@temp \@tempdima\arrayrulewidth \expandafter\tabu@getlinecolor \else \expandafter\tabuvline@argii \fi }% \tabuvline@argi \def\tabuvline@argii#1\@nnil{% \tabu@maybecolor \@tempdima #1 \@nnil }% \tabuvline@argii \def\tabuvline@argiii{% \edef\tabu@temp{!{\color@begingroup\tabu@color \noexpand\tabu@vline{\the\@tempdima}\color@endgroup}}% }% \tabuvline@argiii { \expandafter\let\csname NC@find@|\endcsname\relax \expandafter\let\csname NC@rewrite@|\endcsname\relax \xdef\tabu@lines{% \let\csname NC@find@|\endcsname \noexpand\tabuvlines@find \let\csname NC@rewrite@|\endcsname \noexpand\tabuvline@rewrite }% \tabu@vline } \def\tabuvlines@find#1|{\NC@{#1}} \def\tabu@setup@everycr{% \tabu@firstclinetrue \let\tabu@first@cline \z@ \def\tabu@restoreeverycr {\let\everycr \tabu@everycr}% \def\everycr{\afterassignment\tabu@restoreeverycr \@temptokena}% \tabu@everycr\expandafter{\the\tabu@everycr \noalign{% \ifcase\tabu@first@cline \global\let\tabu@first@cline \tw@ \or\global\let\tabu@first@cline \tw@ \or\global\tabu@firstclinefalse \global\let\tabu@first@cline \m@ne \fi}% \tabu@rowfontreset }% }% \tabu@setup@everycr \def\tabuphantomline{\crcr\noalign{% \global\let\@arstrutbox \voidb@x \iftabu@colortbl \xdef\tabu@minrowclearance{\the\minrowclearance}% \global\minrowclearance \z@ \fi \global\let\vcenter \vbox \iftabu@nested\vspace*{\dimexpr\extrarowheight-\ht\@arstrutbox}\fi \toks@{}\count@\@ne \@whilenum\count@<\tabu@nbcols\do{\advance\count@\@ne \toks@\expandafter{\the\toks@&}}% \toks@\expandafter{\the\toks@ \cr\noalign{% \global\let\@arstrutbox \tabu@arstrutbox \global\let\vcenter \tabu@vcenter \iftabu@colortbl \global\minrowclearance \tabu@minrowclearance\relax\fi \global\let\tabu@first@cline \@ne}}% \expandafter}\the\toks@ }% \tabuphantomline \def\tabu@linedash{4pt}% \def\tabu@dashgap{4pt}% \def\tabucline{\noalign{\ifnum0=`}\fi\@ifstar {\@tempswatrue\tabu@cline} {\@tempswafalse\tabu@cline}}% \newcommand*\tabu@cline[2][]{% \tabu@startstop{#2}\tabu@getlinespec{#1}\@multicnt\@ne \ifnum\tabu@start>\tabu@stop \the\toks@ \else\ifx\tabu@xleaders\relax\the\toks@ \else \toks@{\ifnum0=`{\fi}\noalign{\global\let\@arstrutbox \voidb@x}}% %% \iftabu@firstcline\if\tabu@align t\vskip-\ht\@arstrutbox\fi\fi \@whilenum\@multicnt<\tabu@start\do{\advance\@multicnt\@ne \toks@\expandafter{\the\toks@ &}}% \loop \toks@\expandafter{\the\toks@ \omit }% \ifnum \@multicnt=\@ne \expandafter \tabu@add \csname tabu@tok@\the\@multicnt L\endcsname \@nil \fi \ifcase 0\if@tempswa\else\ifnum \@multicnt<\tabu@stop 1\fi\fi\relax \toks@\expandafter{\the\toks@ \color@begingroup}% \toks@\expandafter\expandafter\expandafter{\expandafter\the \expandafter\toks@ \tabu@xleaders \color@endgroup}% \fi \ifcase 0\if@tempswa\else\ifnum \@multicnt<\tabu@stop 1\fi\fi % \expandafter \tabu@add \csname tabu@tok@\the\@multicnt R\endcsname \@nil \fi \ifnum\@multicnt<\tabu@stop \advance\@multicnt\@ne \if@tempswa \toks@\expandafter{\the\toks@ &}% \else \toks@\expandafter{\the\toks@ \span}\fi \repeat \@whilenum\@multicnt<\tabu@nbcols\do{\advance\@multicnt\@ne \toks@\expandafter{\the\toks@ &}}% \toks@\expandafter{\the\toks@ \cr \noalign{% \global\let\@arstrutbox \tabu@arstrutbox}}% %% \message{LIGNE AJOUTEE:\the\toks@}% \the\toks@ \fi\fi }% \tabucline \def\tabu@add #1\@nil{\toks@\expandafter{\the\toks@ #1\ifmmode$\fi}} \def\tabu@startstop#1{\tabu@start@stop #1\relax 1-\tabu@nbcols\@nnil} \def\tabu@start@stop #1-#2\@nnil{% \@defaultunits \tabu@start \number0#1\relax\@nnil \@defaultunits \tabu@stop \number0#2\relax\@nnil \ifnum\tabu@start>\tabu@nbcols\tabu@start=\tabu@nbcols\else \ifnum\tabu@start>\z@\else \tabu@start=\@ne \fi\fi \ifnum\tabu@stop>\tabu@nbcols \tabu@stop\tabu@nbcols \else \ifnum\tabu@stop>\z@\else \tabu@stop=\tabu@nbcols \fi\fi }% \tabu@start@stop \def\tabu@getlinespec#1{\let\tabu@xleaders \relax \@defaultunits \let\@tempa=#1 \relax\@nnil \ifx\@tempa\relax \let\tabu@xleaders \tabu@defaultleaders\else \ifx\@tempa\hbox \tabu@defleaders{#1}\else \ifx\@tempa\box \tabu@defleaders{#1}\else \ifx\@tempa\copy \tabu@defleaders{#1}\else \ifcsname tabu@line@style@\detokenize{#1}\endcsname \csname tabu@line@style@\detokenize{#1}\endcsname \else \tabu@getline{#1\p@ on0pt off0pt}\fi\fi\fi\fi\fi }% \tabu@getlinespec \def\tabu@defleaders#1{% \def\tabu@xleaders{\xleaders\hbox{\lower.5\extrarowheight#1}\tabu@leaderfill}} \def\tabucline@warn#1{\PackageWarning{tabu} {Undefined line syle: #1 \MessageBreak Using default line style instead}% \let\tabu@xleaders \tabu@defaultleaders }% \tabucline@warn \def\tabu@getline#1{\tabu@lineon #1 \@nil on\tabu@linedash \p@ \@nil\@nnil{#1}} \def\tabu@maybecolor{\ifx\tabu@color\@empty \afterassignment\tabu@colortest \else \@defaultunits\fi} \def\tabu@lineon #1on#2\@nil#3\@nnil#4{% \let\tabu@color \@empty \@defaultunits \let\@tempa=#1 \relax\@nnil \ifcase 0\ifx o\@tempa 1\else\ifcat A\noexpand\@tempa 2\fi\fi\relax \tabu@maybecolor \@tempdima #1\arrayrulewidth \p@\@nnil \tabu@maybecolor \@tempdimb #2\p@ \@nnil \tabu@lineoff #1 on#2 off\tabu@dashgap \p@ \@nnil \or\@tempdima \arrayrulewidth \tabu@maybecolor \@tempdimb #2\p@ \@nnil \tabu@lineoff #1 on#2 off\tabu@dashgap \p@ \@nnil \else \tabu@maybecolor \@tempdima \arrayrulewidth #1\p@\@nnil \ifx\tabu@color\@empty \tabucline@warn{#4}\else \@tempdimb \z@ \tabu@lineoff off0pt \p@\@nnil \fi \fi }% \tabu@lineon \def\tabu@lineoff #1off#2\@nnil{% \tabu@maybecolor \@tempdimc #2\p@ \@nnil \ifdim \@tempdimb=\z@ \ifdim \@tempdimc>\z@ \@tempdimb \tabu@dashgap\relax\fi\fi \ifdim \@tempdimc=\z@ \ifdim \@tempdimb>\z@ \@tempdimc \tabu@linedash\relax\fi\fi \ifdim \@tempdima<\z@ \else \ifdim \@tempdimb<\z@ \else \ifdim \@tempdimc<\z@ \else \edef \tabu@xleaders{\tabu@color\xleaders \ifdim\@tempdimc>\z@ \hbox\bgroup \kern\the\dimexpr\@tempdimc/2\relax\fi \noexpand\iftabu@firstcline \vrule depth\dimexpr\the\@tempdima \ifdim\@tempdimb>\z@ width\the\@tempdimb\fi \noexpand\else \vrule height\dimexpr-\extrarowheight+\the\@tempdima depth\dimexpr\extrarowheight \ifdim\@tempdimb>\z@ width\the\@tempdimb\fi \noexpand\fi \ifdim\@tempdimc>\z@ \kern\the\dimexpr\@tempdimc/2\egroup\fi \tabu@leaderfill}% \fi\fi\fi }% \tabu@lineoff \def\tabu@colortest{\futurelet\tabu@temp\tabu@linecolor} \def\tabu@linecolor{% \ifcase 0\if ,\noexpand\tabu@temp\else \ifx\relax\tabu@temp\else \ifx \@sptoken\tabu@temp1\else \ifcat A\noexpand\tabu@temp2\else 3\fi\fi\fi\fi\relax \def\tabu@next##1{\futurelet\tabu@temp\tabu@linecolor}% \or\def\tabu@next{\tabu@gobblespace{\futurelet\tabu@temp\tabu@linecolor}}% \or\let\tabu@next\tabu@getlinecolor \else\expandafter\remove@to@nnil \fi \tabu@next }% \tabu@linecolor \def\tabu@getlinecolor#1\p@{% \edef\@tempa{\zap@space #1 \@empty}% \ifcsname\string\color@\@tempa\endcsname \edef\tabu@color{\noexpand\noexpand\noexpand\color{\@tempa}}% \set@color \fi\remove@to@nnil }% \tabu@getlinecolor \def\tabulinestyle#1{\@for\@tempa:=#1\do{\expandafter\tabu@linestyle\@tempa==\@nil}} \def\tabu@linestyle#1=#2=#3\@nil{% \begingroup \tabu@getlinespec {#2}\expandafter\gdef \csname tabu@line@style@\detokenize{#1}\expandafter\endcsname \expandafter{\expandafter\def\expandafter\tabu@xleaders \expandafter{\tabu@xleaders}}% \endgroup }% \tabu@linestyle \expandafter\def \csname tabu@line@style@\endcsname {% \let\tabu@xleaders \tabu@defaultleaders}% \def\tabu@defaultleaders{\leaders \iftabu@firstcline \vrule depth \arrayrulewidth \else \vrule height\dimexpr-\extrarowheight+\arrayrulewidth depth \extrarowheight \fi \tabu@leaderfill} \let\tabu@leaderfill \hfil {\catcode32=13\relax\catcode`\^^@=13\relax \gdef\tabu@verb{\@sanitize\makeatletter\catcode`\^=7\edef\^{\string^}% \catcode32=13\let =\ \catcode`\^^@=13\def^^@{\par}\endlinechar\m@ne}% } \newcommand\tabu@sanitizetext[1][\ttfamily]{\begingroup \tabu@verb #1\tabu@s@nitizetext} \long\def\tabu@s@nitizetext#1{\@makeother\{\@makeother\}% \everyeof{\noexpand}\scantokens{#1}\endgroup} \def\tabu@tabudecimal#1{% \def\tabu@decimal{#1}\@temptokena{}% \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces \tabu@scandecimal }% \tabudecimal \def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} \def\tabu@skipdecimal#1{#1\tabu@scandecimal} \def\tabu@getdecimal@ignorespaces{% \ifcase 0\ifx\tabu@temp\ignorespaces\else \ifx\tabu@temp\@sptoken1\else 2\fi\fi\relax \let\tabu@getdecimal@ \tabu@getdecimal \expandafter\tabu@skipdecimal \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal \else \expandafter\tabu@skipdecimal \fi }% \tabu@getdecimal@ignorespaces \def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% \tabu@scandecimal} \def\do#1{% \def\tabu@get@decimalspace#1{% \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% }\do{ } \def\tabu@getdecimal{% \ifcase 0\ifx 0\tabu@temp\else \ifx 1\tabu@temp\else \ifx 2\tabu@temp\else \ifx 3\tabu@temp\else \ifx 4\tabu@temp\else \ifx 5\tabu@temp\else \ifx 6\tabu@temp\else \ifx 7\tabu@temp\else \ifx 8\tabu@temp\else \ifx 9\tabu@temp\else \ifx .\tabu@temp\else \ifx ,\tabu@temp\else \ifx -\tabu@temp\else \ifx +\tabu@temp\else \ifx e\tabu@temp\else \ifx E\tabu@temp\else \ifx\tabu@cellleft\tabu@temp1\else \ifx\ignorespaces\tabu@temp1\else \ifx\@sptoken\tabu@temp2\else 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax \expandafter\tabu@get@decimal \or \expandafter\tabu@skipdecimal \or \expandafter\tabu@get@decimalspace \else\expandafter\tabu@printdecimal \fi }% \tabu@getdecimal \def\tabu@printdecimal{% \edef\tabu@temp{\the\@temptokena}% \ifx\tabu@temp\@empty\else \ifx\tabu@temp\space\else \expandafter\tabu@decimal\expandafter{\the\@temptokena}% \fi\fi }% \tabu@printdecimal \newcommand*\savetabu[1]{\noalign{% \ifx\\#1\\\tabu@savewarn{}{The tabu will not be saved}\else \@ifundefined{tabu@save@\string#1}{}{\tabu@savewarn{#1}{Overwritting}}% {\toks@\expandafter{\tabu@saved}% \expandafter\xdef\csname tabu@saved@\string#1\endcsname{% \tabu@target\the\tabu@target\relax \the\toks@}}% \fi}% }% \savetabu \def\tabu@saveX#1{\noalign{% \ifx\\#1\\\tabu@savewarn{}{The tabu will not be saved}\else \@ifundefined{tabu@saved@\string#1}{}{\tabu@savewarn{#1}{Overwritting}}% {\toks@\expandafter{\tabu@saved}% \expandafter\xdef\csname tabu@saved@\string#1\endcsname{% \tabucolX\the\tabucolX\relax \tabu@target\the\tabu@target\relax \the\toks@}}% \fi}% }% \tabu@saveX \def\tabu@savewarn#1#2{\PackageInfo{tabu} {User-name `#1' already used for \string\savetabu \MessageBreak #2}}% \def\tabu@saveerr#1{\PackageError{tabu} {User-name `#1' is unknown for \string\usetabu \MessageBreak I cannot restore an unknown preamble!}\@ehd} \def\tabu@rowfont{\noalign{\ifnum0=`}\fi\tabu@row@font} \newcommand*\tabu@row@font[2][]{% \global\let\tabu@rowfontreset \tabu@rowfont@reset \global\let\tabu@@cellleft \tabu@cellleft \global\let\tabu@@cellright \tabu@cellright \gdef\tabu@cellfont{#2}% \ifcsname tabu@cell@#1\endcsname % row alignment \csname tabu@cell@#1\endcsname \fi \toks@\expandafter {\tabu@cellleft\tabu@cellfont}% inside \noalign group ok \xdef\tabu@cellleft {\the\toks@}% \ifnum0=`{\fi}% end of noalign group }% \rowfont \def\tabu@rowfont@reset{% \noalign{% \global\let\tabu@rowfontreset \@empty \global\let\tabu@cellleft \tabu@@cellleft \global\let\tabu@cellright \tabu@@cellright \global\let\tabu@cellfont \@empty \global\let\tabu@celllalign \@empty \global\let\tabu@cellralign \@empty }% }% \tabu@rowfont@reset \let\tabu@rowfontreset\@empty \newif\iftabu@cellright \AtBeginDocument{\let\array@prepnext@tok \prepnext@tok }% original definition \def\tabu@prepnext@tok{% \ifnum \count@<\z@ % \@tempcnta \@M % \tabu@nbcols\z@ \gdef\tabu@global@temp{\tabu@nbcols\z@}% \expandafter\let\csname tabu@tok@1L\endcsname \relax \tabu@cellrightfalse \else \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left \advance \tabu@nbcols\@ne \expandafter\let\csname tabu@tok@\the\tabu@nbcols R\endcsname \relax \expandafter\gdef\expandafter\tabu@global@temp\expandafter{% \tabu@global@temp \advance\tabu@nbcols\@ne}% \iftabu@cellright % before-previous token is right and is finished \tabu@cellrightfalse % \tabu@savetok R\tabu@preptokenright \fi \ifnum \tabu@nbcols=\@ne \tabu@savetok L% LEFT token is always empty unless >{...} \fi \tabu@preptokenleft \or % (case 1) previous token is right \tabu@savetok R\tabu@cellrighttrue \else % special column: do not change the token \ifnum \tabu@nbcols>\z@ %special column: always on the right of normal one \tabu@savetok R% \else % unless this is the very first column (\tabu@nbcols=0) \advance\tabu@nbcols\@ne \tabu@savetok L\advance\tabu@nbcols\m@ne \fi \iftabu@cellright % before-previous token is right \tabu@cellrightfalse \tabu@preptokenright \fi \fi % \ifcase \fi \array@prepnext@tok }% \tabu@prepnext@tok \def\tabu@preptokenright{% \advance \count@ \m@ne \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% \advance \count@ \@ne }% \tabu@preptokenright \def\tabu@preptokenleft{\toks\count@\expandafter {\expandafter\tabu@celllalign \the\toks\count@ \tabu@cellleft}% }% \tabu@preptokenleft \def\tabu@savetok#1{\begingroup \expandafter\tabu@savet@k\csname tabu@tok@\the\tabu@nbcols #1\endcsname }% \tabu@savetok \def\tabu@savet@k#1{% \@temptokena\toks\count@ \ifx#1\relax\else \@temptokena\expandafter\expandafter \expandafter{\expandafter#1\the\@temptokena}% \fi \@temptokena\expandafter{\expandafter\def\expandafter#1\expandafter{% \the\@temptokena}}% \toks@\expandafter\expandafter\expandafter{\expandafter\tabu@global@temp \the\@temptokena}% \xdef\tabu@global@temp{\the\toks@}% \expandafter\endgroup \the\@temptokena }% \tabu@savetok \let\tabu@cellleft\@empty \let\tabu@cellright\@empty \def\tabu@celllalign{\tabu@cellleft}% row font spec. applies to pre-column material \let\tabu@cellralign\@empty \let\tabu@cellfont\@empty \def\tabu@cell@l{% force alignment to left \gdef\tabu@celllalign{\tabu@removehfil \raggedright\arraybackslash \tabu@cellleft}% \gdef\tabu@cellralign{\tabu@flush1\tabu@ignorehfil}% \toks@\expandafter{\tabu@cellleft\raggedright\arraybackslash}% local \xdef\tabu@cellleft{\the\toks@}% }% \tabu@cell@l \def\tabu@cell@c{% force alignment to center \gdef\tabu@celllalign{\tabu@removehfil \centering\arraybackslash \tabu@flush{.5}\tabu@cellleft}% \gdef\tabu@cellralign{\tabu@flush{.5}\tabu@ignorehfil}% \toks@\expandafter{\tabu@cellleft\centering\arraybackslash}% local \xdef\tabu@cellleft{\the\toks@}% }% \tabu@cell@c \def\tabu@cell@r{% force alignment to right \gdef\tabu@celllalign{\tabu@removehfil \raggedleft\arraybackslash \tabu@flush1\tabu@cellleft}% \gdef\tabu@cellralign{\tabu@ignorehfil}% \toks@\expandafter{\tabu@cellleft\raggedleft\arraybackslash}% local \xdef\tabu@cellleft{\the\toks@}% }% \tabu@cell@r \def\tabu@cell@j{% force justification (for p, m, b columns) \gdef\tabu@celllalign{\tabu@justify\tabu@cellleft}% \global\let\tabu@cellralign\@empty \toks@\expandafter{\tabu@cellleft\tabu@justify}% local (noalign grp) \xdef\tabu@cellleft{\the\toks@}% }% \tabu@cell@j \def\tabu@justify{% \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip \parfillskip\@flushglue }% \tabu@justify %% ragged2e settings \def\tabu@cell@L{% force alignment to left (ragged2e) \gdef\tabu@celllalign{\tabu@removehfil \RaggedRight\arraybackslash \tabu@cellleft}% \gdef\tabu@cellralign{\tabu@flush1\tabu@ignorehfil}% \toks@\expandafter{\tabu@cellleft\RaggedRight\arraybackslash}% \xdef\tabu@cellleft{\the\toks@}% }% \tabu@cell@L \def\tabu@cell@C{% force alignment to center (ragged2e) \gdef\tabu@celllalign{\tabu@removehfil \Centering\arraybackslash \tabu@flush{.5}\tabu@cellleft}% \gdef\tabu@cellralign{\tabu@flush{.5}\tabu@ignorehfil}% \toks@\expandafter{\tabu@cellleft\Centering\arraybackslash}% \xdef\tabu@cellleft{\the\toks@}% }% \tabu@cell@C \def\tabu@cell@R{% force alignment to right (ragged2e) \gdef\tabu@celllalign{\tabu@removehfil \RaggedLeft\arraybackslash \tabu@flush1\tabu@cellleft}% \gdef\tabu@cellralign{\tabu@ignorehfil}% \toks@\expandafter{\tabu@cellleft\RaggedLeft\arraybackslash}% \xdef\tabu@cellleft{\the\toks@}% }% \tabu@cell@R \def\tabu@cell@J{% force justification (ragged2e) \gdef\tabu@celllallign{\justifying\arraybackslash\tabu@cellleft}% \global\let\tabu@cellralign\@empty \toks@\expandafter{\tabu@cellleft\justifying\arraybackslash}% \xdef\tabu@cellleft{\the\toks@}% }% \tabu@cell@J \def\tabu@flush#1{% \iftabu@colortbl % colortbl uses \hfill rather than \hfil \hskip \ifnum\currentgrouptype>13 \stretch{#1}% \else\ifdim#1pt<1pt \tabu@cellskip \else \stretch{#1} \fi\fi \relax \else % array.sty \ifnum \currentgrouptype>13\relax \hfil \hskip1sp \fi \fi }% \tabu@flush \AtBeginDocument{% \@ifpackageloaded{ragged2e} {} {\let\tabu@cell@L \tabu@cell@l \let\tabu@cell@R \tabu@cell@r \let\tabu@cell@C \tabu@cell@c \let\tabu@cell@J \tabu@cell@j }% }% AtBeginDocument \newskip\tabu@cellskip \let\tabu@hfil\hfil \let\tabu@hfill\hfill \let\tabu@hskip\hskip \def\tabu@removehfil{% \iftabu@colortbl \unkern \tabu@cellskip = \lastskip \ifnum\gluestretchorder\tabu@cellskip = \tw@ \hskip-\tabu@cellskip \else \tabu@cellskip = \z@skip \fi \else \ifdim\lastskip=1sp\unskip\fi \ifnum\gluestretchorder\lastskip = \@ne \hfilneg % \hfilneg for array.sty but not for colortbl... \fi \fi }% \tabu@removehfil \def\tabu@ignorehfil{% \aftergroup\tabu@nohfil }% \tabu@ignorehfil \def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil \def\hfil{\let\hfil\tabu@hfil}% local to (alignment template) group }% \tabu@nohfil \AtBeginDocument{% \@ifpackageloaded{colortbl} {% \def\tabu@nohfil{% \def\hfil{\let\hfil\tabu@hfil}% local to (alignment template) group \def\hfill{\let\hfill\tabu@hfill}% (colortbl uses \hfill) pfff... \def\hskip##1\relax{\let\hskip\tabu@hskip}}% local }% @ifpackageloaded colortbl {}% }% AtBeginDocument \def\tabu@fbox{% \leavevmode \let\color@bgroup\bgroup \def\color@egroup{\endgraf\egroup}% \afterassignment\tabu@begin@fbox \setbox\@tempboxa \hbox }% \tabu@fbox \def\tabu@begin@fbox{\color@bgroup\kern\fboxsep\aftergroup\tabu@end@fbox} \def\tabu@end@fbox{\kern\fboxsep\color@egroup\@frameb@x\relax} \expandafter\def\expandafter\tabu@centering\expandafter{% \centering\arraybackslash} \expandafter\def\expandafter\tabu@raggedleft\expandafter{% \raggedleft\arraybackslash} \expandafter\def\expandafter\tabu@raggedright\expandafter{% \raggedright\arraybackslash} \AtBeginDocument{% \expandafter\def\expandafter\tabu@trivlist\expandafter{% \expandafter\let\expandafter\\\expandafter\@centercr\@trivlist}% }% \def\tabu@fix@arrayright{% \@ifpackageloaded{arydshln} {% \@ifpackageloaded{colortbl} {%% colortbl + arydshln \def\tabu@endarray{% \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % \@arrayright % \gdef\@preamble{}% }}% \endarray {%% arydshln / no colortbl \def\tabu@endarray{% \adl@endarray \egroup \adl@arrayrestore \egroup % \@arrayright % \gdef\@preamble{}% }}% \endarray }% {% \@ifpackageloaded{colortbl} {%% colortbl / no arydshln \def\tabu@endarray{% \crcr \egroup \egroup \@arrayright % \gdef\@preamble{}\CT@end }}% {\PackageWarning{tabu} {\string\@arrayright\space is missing from the \MessageBreak definition of \string\endarray. \MessageBreak Comptability with delarray.sty is broken.}}% }% }% \tabu@fix@arrayright \def\tabu@adl@xarraydashrule#1#2#3{% \ifnum\@lastchclass=\adl@class@start\else \ifnum\@lastchclass=\@ne\else \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) \adl@leftrulefalse \fi\fi % must be treated the same \fi \ifadl@zwvrule\else \ifadl@inactive\else \@addtopreamble{\vrule\@width\arrayrulewidth \@height\z@ \@depth\z@}\fi \fi \ifadl@leftrule \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% {\number#1}#3}% \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% {\number#2}#3} \fi }% \tabu@adl@xarraydashrule \def\tabu@adl@act@endpbox{% \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox \egroup \adl@colhtdp \box\adl@box \hfil }% \tabu@adl@act@endpbox \endinput %% %% End of file `tabu.sty'.