<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns='http://www.w3.org/1999/xhtml'> <head> <title>doc_inner/doxygen/latex/tabu_doxygen.sty</title> <meta name='robots' content='noindex,nofollow' /> <meta name='generator' content='GLOBAL-6.6.5' /> <meta http-equiv='Content-Style-Type' content='text/css' /> <link rel='stylesheet' type='text/css' href='../style.css' /> </head> <body> <a id='TOP' name='TOP'></a><h2 class='header'><a href='../mains.html'>root</a>/<a href='../files/2927.html'>doc_inner</a>/<a href='../files/2928.html'>doxygen</a>/<a href='../files/2929.html'>latex</a>/tabu_doxygen.sty</h2> <em class='comment'>/* [<][>][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em> <hr /> <pre> <a id='L1' name='L1'></a>%% <a id='L2' name='L2'></a>%% This is file `tabu.sty', <a id='L3' name='L3'></a>%% generated with the docstrip utility. <a id='L4' name='L4'></a>%% <a id='L5' name='L5'></a>%% The original source files were: <a id='L6' name='L6'></a>%% <a id='L7' name='L7'></a>%% tabu.dtx (with options: `package') <a id='L8' name='L8'></a>%% <a id='L9' name='L9'></a>%% This is a generated file. <a id='L10' name='L10'></a>%% Copyright (FC) 2010-2011 - lppl <a id='L11' name='L11'></a>%% <a id='L12' name='L12'></a>%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars <a id='L13' name='L13'></a>%% <a id='L14' name='L14'></a>%% ********************************************************************************************** <a id='L15' name='L15'></a>%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal <a id='L16' name='L16'></a>%% \begin{tabu} to <dimen>{ preamble } => target specified <a id='L17' name='L17'></a>%% \begin{tabu} spread <dimen>{ preamble } => target relative to the ``natural width'' <a id='L18' name='L18'></a>%% <a id='L19' name='L19'></a>%% tabu works in text and in math modes. <a id='L20' name='L20'></a>%% <a id='L21' name='L21'></a>%% X columns: automatic width adjustment + horizontal and vertical alignment <a id='L22' name='L22'></a>%% \begin{tabu} { X[4c] X[1c] X[-2ml] } <a id='L23' name='L23'></a>%% <a id='L24' name='L24'></a>%% Horizontal lines and / or leaders: <a id='L25' name='L25'></a>%% \hline\hline => double horizontal line <a id='L26' name='L26'></a>%% \firsthline\hline => for nested tabulars <a id='L27' name='L27'></a>%% \lasthline\hline => for nested tabulars <a id='L28' name='L28'></a>%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) <a id='L29' name='L29'></a>%% Automatic lines / leaders : <a id='L30' name='L30'></a>%% \everyrow{\hline\hline} <a id='L31' name='L31'></a>%% <a id='L32' name='L32'></a>%% Vertical lines and / or leaders: <a id='L33' name='L33'></a>%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } <a id='L34' name='L34'></a>%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } <a id='L35' name='L35'></a>%% <a id='L36' name='L36'></a>%% Fixed vertical spacing adjustment: <a id='L37' name='L37'></a>%% \extrarowheight=<dimen> \extrarowdepth=<dimen> <a id='L38' name='L38'></a>%% or: \extrarowsep=<dimen> => may be prefixed by \global <a id='L39' name='L39'></a>%% <a id='L40' name='L40'></a>%% Dynamic vertical spacing adjustment: <a id='L41' name='L41'></a>%% \abovetabulinesep=<dimen> \belowtabulinesep=<dimen> <a id='L42' name='L42'></a>%% or: \tabulinesep=<dimen> => may be prefixed by \global <a id='L43' name='L43'></a>%% <a id='L44' name='L44'></a>%% delarray.sty shortcuts: in math and text modes <a id='L45' name='L45'></a>%% \begin{tabu} .... \({ preamble }\) <a id='L46' name='L46'></a>%% <a id='L47' name='L47'></a>%% Algorithms reports: <a id='L48' name='L48'></a>%% \tracingtabu=1 \tracingtabu=2 <a id='L49' name='L49'></a>%% <a id='L50' name='L50'></a>%% ********************************************************************************************** <a id='L51' name='L51'></a>%% <a id='L52' name='L52'></a>%% This work may be distributed and/or modified under the <a id='L53' name='L53'></a>%% conditions of the LaTeX Project Public License, either <a id='L54' name='L54'></a>%% version 1.3 of this license or (at your option) any later <a id='L55' name='L55'></a>%% version. The latest version of this license is in <a id='L56' name='L56'></a>%% http://www.latex-project.org/lppl.txt <a id='L57' name='L57'></a>%% <a id='L58' name='L58'></a>%% This work consists of the main source file tabu.dtx <a id='L59' name='L59'></a>%% and the derived files <a id='L60' name='L60'></a>%% tabu.sty, tabu.pdf, tabu.ins <a id='L61' name='L61'></a>%% <a id='L62' name='L62'></a>%% tabu : Flexible LaTeX tabulars <a id='L63' name='L63'></a>%% lppl copyright 2010-2011 by FC <florent.chervet@free.fr> <a id='L64' name='L64'></a>%% <a id='L65' name='L65'></a> <a id='L66' name='L66'></a>\NeedsTeXFormat{LaTeX2e}[2005/12/01] <a id='L67' name='L67'></a>\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] <a id='L68' name='L68'></a>\RequirePackage{array}[2008/09/09] <a id='L69' name='L69'></a>\RequirePackage{varwidth}[2009/03/30] <a id='L70' name='L70'></a>\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} <a id='L71' name='L71'></a>\let\tabu@AtEnd\@empty <a id='L72' name='L72'></a>\def\TMP@EnsureCode#1={% <a id='L73' name='L73'></a> \edef\tabu@AtEnd{\tabu@AtEnd <a id='L74' name='L74'></a> \catcode#1 \the\catcode#1}% <a id='L75' name='L75'></a> \catcode#1=% <a id='L76' name='L76'></a>}% \TMP@EnsureCode <a id='L77' name='L77'></a>\TMP@EnsureCode 33 = 12 % ! <a id='L78' name='L78'></a>\TMP@EnsureCode 58 = 12 % : (for siunitx) <a id='L79' name='L79'></a>\TMP@EnsureCode124 = 12 % | <a id='L80' name='L80'></a>\TMP@EnsureCode 36 = 3 % $ = math shift <a id='L81' name='L81'></a>\TMP@EnsureCode 38 = 4 % & = tab alignment character <a id='L82' name='L82'></a>\TMP@EnsureCode 32 = 10 % space <a id='L83' name='L83'></a>\TMP@EnsureCode 94 = 7 % ^ <a id='L84' name='L84'></a>\TMP@EnsureCode 95 = 8 % _ <a id='L85' name='L85'></a>%% Constants -------------------------------------------------------- <a id='L86' name='L86'></a>\newcount \c@taburow \def\thetaburow {\number\c@taburow} <a id='L87' name='L87'></a>\newcount \tabu@nbcols <a id='L88' name='L88'></a>\newcount \tabu@cnt <a id='L89' name='L89'></a>\newcount \tabu@Xcol <a id='L90' name='L90'></a>\let\tabu@start \@tempcnta <a id='L91' name='L91'></a>\let\tabu@stop \@tempcntb <a id='L92' name='L92'></a>\newcount \tabu@alloc \tabu@alloc=\m@ne <a id='L93' name='L93'></a>\newcount \tabu@nested <a id='L94' name='L94'></a>\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} <a id='L95' name='L95'></a>\newdimen \tabu@target <a id='L96' name='L96'></a>\newdimen \tabu@spreadtarget <a id='L97' name='L97'></a>\newdimen \tabu@naturalX <a id='L98' name='L98'></a>\newdimen \tabucolX <a id='L99' name='L99'></a>\let\tabu@DELTA \@tempdimc <a id='L100' name='L100'></a>\let\tabu@thick \@tempdima <a id='L101' name='L101'></a>\let\tabu@on \@tempdimb <a id='L102' name='L102'></a>\let\tabu@off \@tempdimc <a id='L103' name='L103'></a>\newdimen \tabu@Xsum <a id='L104' name='L104'></a>\newdimen \extrarowdepth <a id='L105' name='L105'></a>\newdimen \abovetabulinesep <a id='L106' name='L106'></a>\newdimen \belowtabulinesep <a id='L107' name='L107'></a>\newdimen \tabustrutrule \tabustrutrule \z@ <a id='L108' name='L108'></a>\newtoks \tabu@thebody <a id='L109' name='L109'></a>\newtoks \tabu@footnotes <a id='L110' name='L110'></a>\newsavebox \tabu@box <a id='L111' name='L111'></a>\newsavebox \tabu@arstrutbox <a id='L112' name='L112'></a>\newsavebox \tabu@hleads <a id='L113' name='L113'></a>\newsavebox \tabu@vleads <a id='L114' name='L114'></a>\newif \iftabu@colortbl <a id='L115' name='L115'></a>\newif \iftabu@siunitx <a id='L116' name='L116'></a>\newif \iftabu@measuring <a id='L117' name='L117'></a>\newif \iftabu@spread <a id='L118' name='L118'></a>\newif \iftabu@negcoef <a id='L119' name='L119'></a>\newif \iftabu@everyrow <a id='L120' name='L120'></a>\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} <a id='L121' name='L121'></a>\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} <a id='L122' name='L122'></a>\newif \iftabu@long <a id='L123' name='L123'></a>\newif \iftabuscantokens <a id='L124' name='L124'></a>\def\tabu@rescan {\tabu@verbatim \scantokens } <a id='L125' name='L125'></a>%% Utilities (for internal usage) ----------------------------------- <a id='L126' name='L126'></a>\def\tabu@gobblespace #1 {#1} <a id='L127' name='L127'></a>\def\tabu@gobbletoken #1#2{#1} <a id='L128' name='L128'></a>\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} <a id='L129' name='L129'></a>\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble <a id='L130' name='L130'></a> \else\ifx \@sptoken\@let@token <a id='L131' name='L131'></a> \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX <a id='L132' name='L132'></a> \fi\fi <a id='L133' name='L133'></a>}% \tabu@gobblex <a id='L134' name='L134'></a>\def\tabu@X{^^J} <a id='L135' name='L135'></a>{\obeyspaces <a id='L136' name='L136'></a>\global\let\tabu@spxiii= % saves an active space (for \ifx) <a id='L137' name='L137'></a>\gdef\tabu@@spxiii{ }} <a id='L138' name='L138'></a>\def\tabu@ifenvir {% only for \multicolumn <a id='L139' name='L139'></a> \expandafter\tabu@if@nvir\csname\@currenvir\endcsname <a id='L140' name='L140'></a>}% \tabu@ifenvir <a id='L141' name='L141'></a>\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else <a id='L142' name='L142'></a> \ifx\longtabu#1first\else <a id='L143' name='L143'></a> second\fi\fi oftwo\endcsname <a id='L144' name='L144'></a>}% \tabu@ifenvir <a id='L145' name='L145'></a>\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} <a id='L146' name='L146'></a>{\catcode`\&=3 <a id='L147' name='L147'></a>\gdef\tabu@strtrim #1{% #1 = control sequence to trim <a id='L148' name='L148'></a> \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi <a id='L149' name='L149'></a> \let\tabu@c@l@r \@empty \let#1\@empty <a id='L150' name='L150'></a> \else \expandafter \tabu@trimspaces #1&#1\@nnil <a id='L151' name='L151'></a> \fi <a id='L152' name='L152'></a>}% \tabu@strtrim <a id='L153' name='L153'></a>\gdef\tabu@trimspaces #1&#2\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& &#2}% <a id='L154' name='L154'></a>\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} <a id='L155' name='L155'></a>\gdef\tabu@lastspace #1&#2&#3{\def #3{#1}% <a id='L156' name='L156'></a> \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi <a id='L157' name='L157'></a> \tabu@trimspaces #1&#3\@nnil} <a id='L158' name='L158'></a>}% \catcode <a id='L159' name='L159'></a>\def\tabu@sanitizearg #1#2{{% <a id='L160' name='L160'></a> \csname \ifcsname if@safe@actives\endcsname % <babel> <a id='L161' name='L161'></a> @safe@activestrue\else <a id='L162' name='L162'></a> relax\fi \endcsname <a id='L163' name='L163'></a> \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% <a id='L164' name='L164'></a> \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% <a id='L165' name='L165'></a>}% \tabu@sanitizearg <a id='L166' name='L166'></a>\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% <a id='L167' name='L167'></a> \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! <a id='L168' name='L168'></a>}% \tabu@textbar <a id='L169' name='L169'></a>\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} <a id='L170' name='L170'></a>\def\tabu@everyrow@egroup{% <a id='L171' name='L171'></a> \iftabu@everyrow \expandafter \endgroup \the\toks@ <a id='L172' name='L172'></a> \else \ifnum0=`{\fi}% <a id='L173' name='L173'></a> \fi <a id='L174' name='L174'></a>}% \tabu@everyrow@egroup <a id='L175' name='L175'></a>\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule <a id='L176' name='L176'></a> height \arraystretch \dimexpr\ht\strutbox+\extrarowheight <a id='L177' name='L177'></a> depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth <a id='L178' name='L178'></a> width \z@}% <a id='L179' name='L179'></a>}% \tabu@arstrut <a id='L180' name='L180'></a>\def\tabu@rearstrut {% <a id='L181' name='L181'></a> \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax <a id='L182' name='L182'></a> \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax <a id='L183' name='L183'></a> \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima <a id='L184' name='L184'></a> \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi <a id='L185' name='L185'></a> \tabu@mkarstrut <a id='L186' name='L186'></a> \fi <a id='L187' name='L187'></a>}% \tabu@rearstrut <a id='L188' name='L188'></a>\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} <a id='L189' name='L189'></a>\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox <a id='L190' name='L190'></a> \hbox to\z@{\hbox to\z@{\hss <a id='L191' name='L191'></a> {\tabu@DBG{cyan}\vrule <a id='L192' name='L192'></a> height \arraystretch \dimexpr\ht\strutbox+\extrarowheight <a id='L193' name='L193'></a> depth \z@ <a id='L194' name='L194'></a> width \tabustrutrule}\kern-\tabustrutrule <a id='L195' name='L195'></a> {\tabu@DBG{pink}\vrule <a id='L196' name='L196'></a> height \z@ <a id='L197' name='L197'></a> depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth <a id='L198' name='L198'></a> width \tabustrutrule}}}% <a id='L199' name='L199'></a>}% \tabu@DBG@arstrut <a id='L200' name='L200'></a>\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ <a id='L201' name='L201'></a> \@nextchar}}% <a id='L202' name='L202'></a>\def\tabu@savedecl{\ifcat$\d@llarend\else <a id='L203' name='L203'></a> \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode <a id='L204' name='L204'></a>}% \tabu@savedecl <a id='L205' name='L205'></a>\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} <a id='L206' name='L206'></a>\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } <a id='L207' name='L207'></a>\let\tabu@trialh@@k \@empty <a id='L208' name='L208'></a>\def\tabu@nowrite #1#{{\afterassignment}\toks@} <a id='L209' name='L209'></a>\let\tabu@write\write <a id='L210' name='L210'></a>\let\tabu@immediate\immediate <a id='L211' name='L211'></a>\def\tabu@WRITE{\begingroup <a id='L212' name='L212'></a> \def\immediate\write{\aftergroup\endgroup <a id='L213' name='L213'></a> \tabu@immediate\tabu@write}% <a id='L214' name='L214'></a>}% \tabu@WRITE <a id='L215' name='L215'></a>\expandafter\def\expandafter\tabu@GenericError\expandafter{% <a id='L216' name='L216'></a> \expandafter\tabu@WRITE\GenericError} <a id='L217' name='L217'></a>\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} <a id='L218' name='L218'></a>\def\tabu@noxfootnote [#1]{\@gobble} <a id='L219' name='L219'></a>\def\tabu@nocolor #1#{\@gobble} <a id='L220' name='L220'></a>\newcommand*\tabu@norowcolor[2][]{} <a id='L221' name='L221'></a>\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% <a id='L222' name='L222'></a> \futurelet\@let@token \tabu@m@ybesiunitx} <a id='L223' name='L223'></a>\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% <a id='L224' name='L224'></a> \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi <a id='L225' name='L225'></a> \tabu@temp}% \tabu@m@ybesiunitx <a id='L226' name='L226'></a>}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname <a id='L227' name='L227'></a>\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% <a id='L228' name='L228'></a>%% Fixed vertical spacing adjustment: \extrarowsep ------------------ <a id='L229' name='L229'></a>\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% <a id='L230' name='L230'></a> \iftabu@everyrow \aftergroup\tabu@Gextra <a id='L231' name='L231'></a> \else \aftergroup\tabu@n@Gextra <a id='L232' name='L232'></a> \fi <a id='L233' name='L233'></a> \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra <a id='L234' name='L234'></a>}% \extrarowsep <a id='L235' name='L235'></a>\def\tabu@extra {\@ifnextchar_% <a id='L236' name='L236'></a> {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} <a id='L237' name='L237'></a> {\ifx ^\@let@token \def\tabu@temp{% <a id='L238' name='L238'></a> \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% <a id='L239' name='L239'></a> \else \let\tabu@temp \@empty <a id='L240' name='L240'></a> \afterassignment \tabu@setextrasep \extrarowdepth <a id='L241' name='L241'></a> \fi \tabu@temp}% <a id='L242' name='L242'></a>}% \tabu@extra <a id='L243' name='L243'></a>\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} <a id='L244' name='L244'></a>\def\tabu@extr@ #1#2{\@ifnextchar^% <a id='L245' name='L245'></a> {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} <a id='L246' name='L246'></a> {\ifx _\@let@token \def\tabu@temp{% <a id='L247' name='L247'></a> \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% <a id='L248' name='L248'></a> \else \let\tabu@temp \@empty <a id='L249' name='L249'></a> \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth <a id='L250' name='L250'></a> \fi \tabu@temp}% <a id='L251' name='L251'></a>}% \tabu@extr@ <a id='L252' name='L252'></a>\def\tabu@setextrasep {\extrarowheight=\extrarowdepth <a id='L253' name='L253'></a> \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth <a id='L254' name='L254'></a>}% \tabu@setextrasep <a id='L255' name='L255'></a>\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} <a id='L256' name='L256'></a>\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} <a id='L257' name='L257'></a>\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} <a id='L258' name='L258'></a>\let\tabu@C@extra \z@ <a id='L259' name='L259'></a>\let\tabu@G@extra \@empty <a id='L260' name='L260'></a>%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- <a id='L261' name='L261'></a>\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% <a id='L262' name='L262'></a> \iftabu@everyrow \aftergroup\tabu@Glinesep <a id='L263' name='L263'></a> \else \aftergroup\tabu@n@Glinesep <a id='L264' name='L264'></a> \fi <a id='L265' name='L265'></a> \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep <a id='L266' name='L266'></a>}% \tabulinesep <a id='L267' name='L267'></a>\def\tabu@linesep {\@ifnextchar_% <a id='L268' name='L268'></a> {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} <a id='L269' name='L269'></a> {\ifx ^\@let@token \def\tabu@temp{% <a id='L270' name='L270'></a> \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% <a id='L271' name='L271'></a> \else \let\tabu@temp \@empty <a id='L272' name='L272'></a> \afterassignment \tabu@setlinesep \abovetabulinesep <a id='L273' name='L273'></a> \fi \tabu@temp}% <a id='L274' name='L274'></a>}% \tabu@linesep <a id='L275' name='L275'></a>\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} <a id='L276' name='L276'></a>\def\tabu@sets@p #1#2{\@ifnextchar^% <a id='L277' name='L277'></a> {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} <a id='L278' name='L278'></a> {\ifx _\@let@token \def\tabu@temp{% <a id='L279' name='L279'></a> \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% <a id='L280' name='L280'></a> \else \let\tabu@temp \@empty <a id='L281' name='L281'></a> \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep <a id='L282' name='L282'></a> \fi \tabu@temp}% <a id='L283' name='L283'></a>}% \tabu@sets@p <a id='L284' name='L284'></a>\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep <a id='L285' name='L285'></a> \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep <a id='L286' name='L286'></a>}% \tabu@setlinesep <a id='L287' name='L287'></a>\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} <a id='L288' name='L288'></a>\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} <a id='L289' name='L289'></a>\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} <a id='L290' name='L290'></a>\let\tabu@C@linesep \z@ <a id='L291' name='L291'></a>\let\tabu@G@linesep \@empty <a id='L292' name='L292'></a>%% \global\extrarowsep and \global\tabulinesep ------------------- <a id='L293' name='L293'></a>\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% <a id='L294' name='L294'></a> \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% <a id='L295' name='L295'></a>}% \tabu@Gsave <a id='L296' name='L296'></a>\def\tabu@Grestore#1#2{% <a id='L297' name='L297'></a> \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax <a id='L298' name='L298'></a> \ifcat$\the\toks\currentgrouplevel$\else <a id='L299' name='L299'></a> \global\let#1\@empty \global\let#2\z@ <a id='L300' name='L300'></a> \the\toks\currentgrouplevel <a id='L301' name='L301'></a> \fi <a id='L302' name='L302'></a>}% \tabu@Grestore <a id='L303' name='L303'></a>%% Setting code for every row --------------------------------------- <a id='L304' name='L304'></a>\newcommand*\everyrow{\tabu@everyrow@bgroup <a id='L305' name='L305'></a> \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop <a id='L306' name='L306'></a>}% \everyrow <a id='L307' name='L307'></a>\def\tabu@evrstartstop {\@ifnextchar^% <a id='L308' name='L308'></a> {\afterassignment \tabu@evrstartstop \tabu@stop=}% <a id='L309' name='L309'></a> {\ifx ^\@let@token <a id='L310' name='L310'></a> \afterassignment\tabu@evrstartstop \tabu@start=% <a id='L311' name='L311'></a> \else \afterassignment\tabu@everyr@w \toks@ <a id='L312' name='L312'></a> \fi}% <a id='L313' name='L313'></a>}% \tabu@evrstartstop <a id='L314' name='L314'></a>\def\tabu@everyr@w {% <a id='L315' name='L315'></a> \xdef\tabu@everyrow{% <a id='L316' name='L316'></a> \noexpand\tabu@everyrowfalse <a id='L317' name='L317'></a> \let\noalign \relax <a id='L318' name='L318'></a> \noexpand\tabu@rowfontreset <a id='L319' name='L319'></a> \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors <a id='L320' name='L320'></a> \let\noexpand\tabu@docline \noexpand\tabu@docline@evr <a id='L321' name='L321'></a> \the\toks@ <a id='L322' name='L322'></a> \noexpand\tabu@evrh@@k <a id='L323' name='L323'></a> \noexpand\tabu@rearstrut <a id='L324' name='L324'></a> \global\advance\c@taburow \@ne}% <a id='L325' name='L325'></a> \iftabu@everyrow \toks@\expandafter <a id='L326' name='L326'></a> {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% <a id='L327' name='L327'></a> \else \xdef\tabu@evr@G{\the\toks@}% <a id='L328' name='L328'></a> \fi <a id='L329' name='L329'></a> \tabu@everyrow@egroup <a id='L330' name='L330'></a>}% \tabu@everyr@w <a id='L331' name='L331'></a>\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only <a id='L332' name='L332'></a>\tabu@evr{} <a id='L333' name='L333'></a>%% line style and leaders ------------------------------------------- <a id='L334' name='L334'></a>\newcommand*\newtabulinestyle [1]{% <a id='L335' name='L335'></a> {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% <a id='L336' name='L336'></a>}% \newtabulinestyle <a id='L337' name='L337'></a>\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% <a id='L338' name='L338'></a> \tabu@sanitizearg {#1}\@tempa <a id='L339' name='L339'></a> \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi <a id='L340' name='L340'></a> \global\expandafter\let <a id='L341' name='L341'></a> \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi <a id='L342' name='L342'></a>}% \tabu@newlinestyle <a id='L343' name='L343'></a>\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% <a id='L344' name='L344'></a> \iftabu@everyrow <a id='L345' name='L345'></a> \toks@\expandafter{\expandafter \def \expandafter <a id='L346' name='L346'></a> \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% <a id='L347' name='L347'></a> \gdef\tabu@ls@{\tabu@ls@L}% <a id='L348' name='L348'></a> \else <a id='L349' name='L349'></a> \global\let\tabu@ls@G \tabu@thestyle <a id='L350' name='L350'></a> \gdef\tabu@ls@{\tabu@ls@G}% <a id='L351' name='L351'></a> \fi <a id='L352' name='L352'></a> \tabu@everyrow@egroup <a id='L353' name='L353'></a>}% \tabulinestyle <a id='L354' name='L354'></a>\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} <a id='L355' name='L355'></a>\def\tabu@rulecolor #1{\toks@{}% <a id='L356' name='L356'></a> \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% <a id='L357' name='L357'></a> \tabu@temp <a id='L358' name='L358'></a> \tabu@rulearc <a id='L359' name='L359'></a>}% \tabu@rulecolor <a id='L360' name='L360'></a>\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp <a id='L361' name='L361'></a> \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% <a id='L362' name='L362'></a> \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% <a id='L363' name='L363'></a> \fi <a id='L364' name='L364'></a> \tabu@temp <a id='L365' name='L365'></a>}% \tabu@ruledrsc@ <a id='L366' name='L366'></a>\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} <a id='L367' name='L367'></a>\def\tabu@rule@drsc@ #1#2{% <a id='L368' name='L368'></a> \iftabu@everyrow <a id='L369' name='L369'></a> \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% <a id='L370' name='L370'></a> \else \toks@{\def\CT@drsc@{\color #1{#2}}}% <a id='L371' name='L371'></a> \fi <a id='L372' name='L372'></a> \else <a id='L373' name='L373'></a> \ifx \\#1#2\\\global\let\CT@drsc@ \relax <a id='L374' name='L374'></a> \else \gdef\CT@drsc@{\color #1{#2}}% <a id='L375' name='L375'></a> \fi <a id='L376' name='L376'></a> \fi <a id='L377' name='L377'></a> \tabu@rulearc <a id='L378' name='L378'></a>}% \tabu@rule@drsc@ <a id='L379' name='L379'></a>\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} <a id='L380' name='L380'></a>\def\tabu@rule@arc@ #1#2{% <a id='L381' name='L381'></a> \iftabu@everyrow <a id='L382' name='L382'></a> \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% <a id='L383' name='L383'></a> \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% <a id='L384' name='L384'></a> \fi <a id='L385' name='L385'></a> \toks@\expandafter{\the\toks@ <a id='L386' name='L386'></a> \let\tabu@arc@L \CT@arc@ <a id='L387' name='L387'></a> \let\tabu@drsc@L \CT@drsc@ <a id='L388' name='L388'></a> \ignorespaces}% <a id='L389' name='L389'></a> \else <a id='L390' name='L390'></a> \ifx \\#1#2\\\gdef\CT@arc@{}% <a id='L391' name='L391'></a> \else \gdef\CT@arc@{\color #1{#2}}% <a id='L392' name='L392'></a> \fi <a id='L393' name='L393'></a> \global\let\tabu@arc@G \CT@arc@ <a id='L394' name='L394'></a> \global\let\tabu@drsc@G \CT@drsc@ <a id='L395' name='L395'></a> \fi <a id='L396' name='L396'></a> \tabu@everyrow@egroup <a id='L397' name='L397'></a>}% \tabu@rule@arc@ <a id='L398' name='L398'></a>\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} <a id='L399' name='L399'></a>\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} <a id='L400' name='L400'></a>\def\tabu@rowc@lors #1#2#3{% <a id='L401' name='L401'></a> \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil <a id='L402' name='L402'></a> \@defaultunits \tabu@start =\number0#1\relax \@nnil <a id='L403' name='L403'></a> \ifnum \count@<\tw@ \count@=\tw@ \fi <a id='L404' name='L404'></a> \advance\tabu@start \m@ne <a id='L405' name='L405'></a> \ifnum \tabu@start<\z@ \tabu@start \z@ \fi <a id='L406' name='L406'></a> \tabu@rowcolorseries #3\in@..\in@ \@nnil <a id='L407' name='L407'></a>}% \tabu@rowcolors <a id='L408' name='L408'></a>\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% <a id='L409' name='L409'></a> \ifx \in@#1\relax <a id='L410' name='L410'></a> \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% <a id='L411' name='L411'></a> \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ <a id='L412' name='L412'></a> \fi <a id='L413' name='L413'></a> \else <a id='L414' name='L414'></a> \ifx \\#2\\\tabu@rowcolorserieserror \fi <a id='L415' name='L415'></a> \tabu@sanitizearg{#1}\tabu@temp <a id='L416' name='L416'></a> \tabu@sanitizearg{#2}\@tempa <a id='L417' name='L417'></a> \advance\count@ \m@ne <a id='L418' name='L418'></a> \iftabu@everyrow <a id='L419' name='L419'></a> \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% <a id='L420' name='L420'></a> \ifnum ##2=\c@taburow <a id='L421' name='L421'></a> \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi <a id='L422' name='L422'></a> \ifnum \c@taburow<##2 \else <a id='L423' name='L423'></a> \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ <a id='L424' name='L424'></a> \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi <a id='L425' name='L425'></a> \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% <a id='L426' name='L426'></a> \rowcolor{tabu@rc@\the\tabu@nested}\fi}% <a id='L427' name='L427'></a> }\edef\x{\noexpand\tabu@rc@ {\the\count@} <a id='L428' name='L428'></a> {\the\tabu@start} <a id='L429' name='L429'></a> {\tabu@temp} <a id='L430' name='L430'></a> {\@tempa}% <a id='L431' name='L431'></a> }\x <a id='L432' name='L432'></a> \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% <a id='L433' name='L433'></a> \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% <a id='L434' name='L434'></a> \else % inside \noalign <a id='L435' name='L435'></a> \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% <a id='L436' name='L436'></a> \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% <a id='L437' name='L437'></a> \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% <a id='L438' name='L438'></a> \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% <a id='L439' name='L439'></a> \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% <a id='L440' name='L440'></a> \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne <a id='L441' name='L441'></a> \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi <a id='L442' name='L442'></a> \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% <a id='L443' name='L443'></a> \rowcolor{tabu@rc@\the\tabu@nested}}% <a id='L444' name='L444'></a> }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x <a id='L445' name='L445'></a> \global\let\tabu@rc@G \tabu@rc@ <a id='L446' name='L446'></a> \fi <a id='L447' name='L447'></a> \fi <a id='L448' name='L448'></a> \tabu@everyrow@egroup <a id='L449' name='L449'></a>}% \tabu@rowcolorseries <a id='L450' name='L450'></a>\tabuDisableCommands {\let\tabu@rc@ \@empty } <a id='L451' name='L451'></a>\def\tabu@rowcolorserieserror {\PackageError{tabu} <a id='L452' name='L452'></a> {Invalid syntax for \string\taburowcolors <a id='L453' name='L453'></a> \MessageBreak Please look at the documentation!}\@ehd <a id='L454' name='L454'></a>}% \tabu@rowcolorserieserror <a id='L455' name='L455'></a>\newcommand*\tabureset {% <a id='L456' name='L456'></a> \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ <a id='L457' name='L457'></a> \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% <a id='L458' name='L458'></a>}% \tabureset <a id='L459' name='L459'></a>%% Parsing the line styles ------------------------------------------ <a id='L460' name='L460'></a>\def\tabu@getline #1{\begingroup <a id='L461' name='L461'></a> \csname \ifcsname if@safe@actives\endcsname % <babel> <a id='L462' name='L462'></a> @safe@activestrue\else <a id='L463' name='L463'></a> relax\fi \endcsname <a id='L464' name='L464'></a> \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa <a id='L465' name='L465'></a> \let\tabu@thestyle \relax <a id='L466' name='L466'></a> \ifcsname tabu@linestyle@\@tempa \endcsname <a id='L467' name='L467'></a> \edef\tabu@thestyle{\endgroup <a id='L468' name='L468'></a> \def\tabu@thestyle{\expandafter\noexpand <a id='L469' name='L469'></a> \csname tabu@linestyle@\@tempa\endcsname}% <a id='L470' name='L470'></a> }\tabu@thestyle <a id='L471' name='L471'></a> \else \expandafter\tabu@definestyle \tabu@temp \@nil <a id='L472' name='L472'></a> \fi <a id='L473' name='L473'></a>}% \tabu@getline <a id='L474' name='L474'></a>\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter <a id='L475' name='L475'></a> \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen <a id='L476' name='L476'></a> \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined <a id='L477' name='L477'></a> \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs <a id='L478' name='L478'></a> \def\tabu@temp{\tabu@getparam{thick}}% <a id='L479' name='L479'></a> \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% <a id='L480' name='L480'></a> \fi <a id='L481' name='L481'></a> {% <a id='L482' name='L482'></a> \let\tabu@ \relax <a id='L483' name='L483'></a> \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) <a id='L484' name='L484'></a> \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% <a id='L485' name='L485'></a> \expandafter}\expandafter <a id='L486' name='L486'></a> \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) <a id='L487' name='L487'></a> \def\;{\def\:}% <a id='L488' name='L488'></a> \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) <a id='L489' name='L489'></a> \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) <a id='L490' name='L490'></a> \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi <a id='L491' name='L491'></a> \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi <a id='L492' name='L492'></a> \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi <a id='L493' name='L493'></a> \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen <a id='L494' name='L494'></a> \tabu@on \tabulineon \fi\fi <a id='L495' name='L495'></a> \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen <a id='L496' name='L496'></a> \tabu@off \tabulineoff \fi\fi <a id='L497' name='L497'></a> \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi <a id='L498' name='L498'></a> \in@true % <leaders> <a id='L499' name='L499'></a> \else \in@false % <rule> <a id='L500' name='L500'></a> \fi <a id='L501' name='L501'></a> \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% <a id='L502' name='L502'></a> \else \edef\tabu@thick{\the\tabu@thick}% <a id='L503' name='L503'></a> \fi <a id='L504' name='L504'></a> \edef \tabu@thestyle ##1##2{\endgroup <a id='L505' name='L505'></a> \def\tabu@thestyle{% <a id='L506' name='L506'></a> \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} <a id='L507' name='L507'></a> {\the\tabu@on}{##1} <a id='L508' name='L508'></a> {\the\tabu@off}{##2}% <a id='L509' name='L509'></a> \else \noexpand\tabu@rulesstyle <a id='L510' name='L510'></a> {##1\vrule width \tabu@thick}% <a id='L511' name='L511'></a> {##1\leaders \hrule height \tabu@thick \hfil}% <a id='L512' name='L512'></a> \fi}% <a id='L513' name='L513'></a> }\expandafter \expandafter <a id='L514' name='L514'></a> \expandafter \tabu@thestyle \expandafter <a id='L515' name='L515'></a> \expandafter \expandafter <a id='L516' name='L516'></a> {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% <a id='L517' name='L517'></a>}% \tabu@definestyle <a id='L518' name='L518'></a>{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active <a id='L519' name='L519'></a> \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} <a id='L520' name='L520'></a> \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} <a id='L521' name='L521'></a>}% \catcode <a id='L522' name='L522'></a>\def\tabu@oxiii #1{% <a id='L523' name='L523'></a> \ifcase \ifx n#1\z@ \else <a id='L524' name='L524'></a> \ifx f#1\@ne\else <a id='L525' name='L525'></a> \tw@ \fi\fi <a id='L526' name='L526'></a> \expandafter\tabu@onxiii <a id='L527' name='L527'></a> \or \expandafter\tabu@ofxiii <a id='L528' name='L528'></a> \else o% <a id='L529' name='L529'></a> \fi#1}% <a id='L530' name='L530'></a>\def\tabu@onxiii #1#2{% <a id='L531' name='L531'></a> \ifcase \ifx !#2\tw@ \else <a id='L532' name='L532'></a> \ifcat.\noexpand#2\z@ \else <a id='L533' name='L533'></a> \ifx \tabu@spxiii#2\@ne\else <a id='L534' name='L534'></a> \tw@ \fi\fi\fi <a id='L535' name='L535'></a> \tabu@getparam{on}#2\expandafter\@gobble <a id='L536' name='L536'></a> \or \expandafter\tabu@onxiii % (space is active) <a id='L537' name='L537'></a> \else o\expandafter\@firstofone <a id='L538' name='L538'></a> \fi{#1#2}}% <a id='L539' name='L539'></a>\def\tabu@ofxiii #1#2{% <a id='L540' name='L540'></a> \ifx #2f\expandafter\tabu@offxiii <a id='L541' name='L541'></a> \else o\expandafter\@firstofone <a id='L542' name='L542'></a> \fi{#1#2}} <a id='L543' name='L543'></a>\def\tabu@offxiii #1#2{% <a id='L544' name='L544'></a> \ifcase \ifx !#2\tw@ \else <a id='L545' name='L545'></a> \ifcat.\noexpand#2\z@ \else <a id='L546' name='L546'></a> \ifx\tabu@spxiii#2\@ne \else <a id='L547' name='L547'></a> \tw@ \fi\fi\fi <a id='L548' name='L548'></a> \tabu@getparam{off}#2\expandafter\@gobble <a id='L549' name='L549'></a> \or \expandafter\tabu@offxiii % (space is active) <a id='L550' name='L550'></a> \else o\expandafter\@firstofone <a id='L551' name='L551'></a> \fi{#1#2}} <a id='L552' name='L552'></a>\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} <a id='L553' name='L553'></a>\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef <a id='L554' name='L554'></a> \ifx \tabu@#1\else % no more spec <a id='L555' name='L555'></a> \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi <a id='L556' name='L556'></a>}% \tabu@getcolor <a id='L557' name='L557'></a>\def\tabu@getc@l@r #1\tabu@ {% <a id='L558' name='L558'></a> \def\tabu@temp{#1}\tabu@strtrim \tabu@temp <a id='L559' name='L559'></a> \ifx \tabu@temp\@empty <a id='L560' name='L560'></a> \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists <a id='L561' name='L561'></a> \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r <a id='L562' name='L562'></a> \else \let\tabu@c@lon \tabu@c@l@r <a id='L563' name='L563'></a> \fi <a id='L564' name='L564'></a> %\else \tabu@warncolour{\tabu@temp}% <a id='L565' name='L565'></a> \fi%\fi <a id='L566' name='L566'></a> \tabu@ % next spec <a id='L567' name='L567'></a>}% \tabu@getc@l@r <a id='L568' name='L568'></a>\def\tabu@warncolour #1{\PackageWarning{tabu} <a id='L569' name='L569'></a> {Color #1 is not defined. Default color used}% <a id='L570' name='L570'></a>}% \tabu@warncolour <a id='L571' name='L571'></a>\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% <a id='L572' name='L572'></a> \ifx \tabu@leaders\tabu@leaders@G \else <a id='L573' name='L573'></a> \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi <a id='L574' name='L574'></a>}% \tabu@leadersstyle <a id='L575' name='L575'></a>\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined <a id='L576' name='L576'></a> \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% <a id='L577' name='L577'></a>}% \tabu@rulesstyle <a id='L578' name='L578'></a>%% The leaders boxes ------------------------------------------------ <a id='L579' name='L579'></a>\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color <a id='L580' name='L580'></a> {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor <a id='L581' name='L581'></a> {% % but the leaders boxes should have colors ! <a id='L582' name='L582'></a> \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% <a id='L583' name='L583'></a> \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% <a id='L584' name='L584'></a> \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% <a id='L585' name='L585'></a> \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% <a id='L586' name='L586'></a> \global\let\tabu@thehleaders \tabu@theleaders <a id='L587' name='L587'></a> }% <a id='L588' name='L588'></a> {% <a id='L589' name='L589'></a> \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% <a id='L590' name='L590'></a> \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% <a id='L591' name='L591'></a> \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% <a id='L592' name='L592'></a> \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% <a id='L593' name='L593'></a> \global\let\tabu@thevleaders \tabu@theleaders <a id='L594' name='L594'></a> }% <a id='L595' name='L595'></a> \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% <a id='L596' name='L596'></a> }% <a id='L597' name='L597'></a>}% \tabu@LEADERS <a id='L598' name='L598'></a>\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} <a id='L599' name='L599'></a>\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color <a id='L600' name='L600'></a> \global\setbox \tabu@leads=\@box{% <a id='L601' name='L601'></a> {#3\tabu@therule{#1}{#2}}% <a id='L602' name='L602'></a> \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi <a id='L603' name='L603'></a> {#3\tabu@therule{#1}{#2}}}% <a id='L604' name='L604'></a> \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss <a id='L605' name='L605'></a> {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% <a id='L606' name='L606'></a> \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% <a id='L607' name='L607'></a> {##1\tabu@therule{#1}{#2}}% <a id='L608' name='L608'></a> \xleaders \copy\tabu@leads \@ss <a id='L609' name='L609'></a> \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% <a id='L610' name='L610'></a> }\tabu@theleaders{#3}% <a id='L611' name='L611'></a>}% \tabu@l@@d@rs <a id='L612' name='L612'></a>%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- <a id='L613' name='L613'></a>\newcommand*\tabu {\tabu@longfalse <a id='L614' name='L614'></a> \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% <a id='L615' name='L615'></a> \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi <a id='L616' name='L616'></a> \expandafter\let\csname tabu*\endcsname \tabu <a id='L617' name='L617'></a> \expandafter\def\csname endtabu*\endcsname{\endtabu}% <a id='L618' name='L618'></a> \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget <a id='L619' name='L619'></a>}% {tabu} <a id='L620' name='L620'></a>\let\tabu@tabular \tabular % <For LyX: some users redefine \tabular...> <a id='L621' name='L621'></a>\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} <a id='L622' name='L622'></a>\newcommand*\longtabu {\tabu@longtrue <a id='L623' name='L623'></a> \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi <a id='L624' name='L624'></a> \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% <a id='L625' name='L625'></a> \LTchunksize=\@M <a id='L626' name='L626'></a> \expandafter\let\csname tabu*\endcsname \tabu <a id='L627' name='L627'></a> \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% <a id='L628' name='L628'></a> \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } <a id='L629' name='L629'></a> \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget <a id='L630' name='L630'></a>}% {longtabu} <a id='L631' name='L631'></a>\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} <a id='L632' name='L632'></a>\def\tabu@nolongtabu{\PackageError{tabu} <a id='L633' name='L633'></a> {longtabu requires the longtable package}\@ehd} <a id='L634' name='L634'></a>%% Read the target and then : \tabular or \@array ------------------ <a id='L635' name='L635'></a>\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } <a id='L636' name='L636'></a>\def\tabu@sett@rget {\tabu@target \z@ <a id='L637' name='L637'></a> \ifcase \ifx \bgroup\@let@token \z@ \else <a id='L638' name='L638'></a> \ifx \@sptoken\@let@token \@ne \else <a id='L639' name='L639'></a> \if t\@let@token \tw@ \else <a id='L640' name='L640'></a> \if s\@let@token \thr@@\else <a id='L641' name='L641'></a> \z@\fi\fi\fi\fi <a id='L642' name='L642'></a> \expandafter\tabu@begin <a id='L643' name='L643'></a> \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget <a id='L644' name='L644'></a> \or \expandafter\tabu@to <a id='L645' name='L645'></a> \or \expandafter\tabu@spread <a id='L646' name='L646'></a> \fi <a id='L647' name='L647'></a>}% \tabu@sett@rget <a id='L648' name='L648'></a>\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} <a id='L649' name='L649'></a>\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} <a id='L650' name='L650'></a>\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } <a id='L651' name='L651'></a>\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } <a id='L652' name='L652'></a>\def\tabu@linegoalt@rget {% <a id='L653' name='L653'></a> \ifx \tabu@temp\LNGL@setlinegoal <a id='L654' name='L654'></a> \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal <a id='L655' name='L655'></a> \tabu@begin <a id='L656' name='L656'></a>}% \tabu@linegoalt@rget <a id='L657' name='L657'></a>\def\tabu@begin #1#{% <a id='L658' name='L658'></a> \iftabu@measuring \expandafter\tabu@nestedmeasure \fi <a id='L659' name='L659'></a> \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty <a id='L660' name='L660'></a> \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% <a id='L661' name='L661'></a> \fi <a id='L662' name='L662'></a> \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil <a id='L663' name='L663'></a>}% \tabu@begin <a id='L664' name='L664'></a>\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup <a id='L665' name='L665'></a> \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% <a id='L666' name='L666'></a> \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% <a id='L667' name='L667'></a>}% \tabu@tabu@ <a id='L668' name='L668'></a>\def\tabu@nestedmeasure {% <a id='L669' name='L669'></a> \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax <a id='L670' name='L670'></a> \tabu@spreadtrue <a id='L671' name='L671'></a> \else \begingroup \iffalse{\fi \ifnum0=`}\fi <a id='L672' name='L672'></a> \toks@{}\def\tabu@stack{b}% <a id='L673' name='L673'></a> \expandafter\tabu@collectbody\expandafter\tabu@quickrule <a id='L674' name='L674'></a> \expandafter\endgroup <a id='L675' name='L675'></a> \fi <a id='L676' name='L676'></a>}% \tabu@nestedmeasure <a id='L677' name='L677'></a>\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} <a id='L678' name='L678'></a>%% \tabu@setup \tabu@init \tabu@indent <a id='L679' name='L679'></a>\def\tabu@setup{\tabu@alloc@ <a id='L680' name='L680'></a> \ifcase \tabu@nested <a id='L681' name='L681'></a> \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ <a id='L682' name='L682'></a> \let\tabu@afterendpar \par <a id='L683' name='L683'></a> \fi\fi\fi <a id='L684' name='L684'></a> \def\tabu@aligndefault{c}\tabu@init \tabu@indent <a id='L685' name='L685'></a> \else % <nested tabu> <a id='L686' name='L686'></a> \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth <a id='L687' name='L687'></a> \fi <a id='L688' name='L688'></a> \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined <a id='L689' name='L689'></a> \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% <a id='L690' name='L690'></a> \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... <a id='L691' name='L691'></a> \let\@endpbox \tabu@endpbox % idem " " " " " " <a id='L692' name='L692'></a> \let\@tabarray \tabu@tabarray % idem " " " " " " <a id='L693' name='L693'></a> \tabu@setcleanup \tabu@setreset <a id='L694' name='L694'></a>}% \tabu@setup <a id='L695' name='L695'></a>\def\tabu@init{\tabu@starttimer \tabu@measuringfalse <a id='L696' name='L696'></a> \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% <a id='L697' name='L697'></a> \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline <a id='L698' name='L698'></a> \let\firstline \tabu@firstline \let\lastline \tabu@lastline <a id='L699' name='L699'></a> \let\hline \tabu@hline \let\@xhline \tabu@xhline <a id='L700' name='L700'></a> \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox <a id='L701' name='L701'></a> \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi <a id='L702' name='L702'></a> \tabu@trivlist %<restore \\=\@normalcr inside lists> <a id='L703' name='L703'></a> \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext <a id='L704' name='L704'></a> \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering <a id='L705' name='L705'></a> \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft <a id='L706' name='L706'></a> \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering <a id='L707' name='L707'></a> \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft <a id='L708' name='L708'></a> \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont <a id='L709' name='L709'></a> \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x <a id='L710' name='L710'></a> \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar <a id='L711' name='L711'></a> \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok <a id='L712' name='L712'></a> \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn <a id='L713' name='L713'></a> \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! <a id='L714' name='L714'></a> \let\tabu@endpbox \@endpbox % idem " " " " " " " <a id='L715' name='L715'></a> \let\tabu@tabarray \@tabarray % idem " " " " " " " <a id='L716' name='L716'></a> \tabu@adl@fix \let\endarray \tabu@endarray % <fix> colortbl & arydshln (delarray) <a id='L717' name='L717'></a> \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi <a id='L718' name='L718'></a>}% \tabu@init <a id='L719' name='L719'></a>\def\tabu@indent{% correction for indentation <a id='L720' name='L720'></a> \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget <a id='L721' name='L721'></a> \everypar\expandafter{% <a id='L722' name='L722'></a> \the\everypar\everypar\expandafter{\the\everypar}% <a id='L723' name='L723'></a> \setbox\z@=\lastbox <a id='L724' name='L724'></a> \ifdim\wd\z@>\z@ \edef\tabu@thetarget <a id='L725' name='L725'></a> {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi <a id='L726' name='L726'></a> \box\z@}% <a id='L727' name='L727'></a> \fi\fi <a id='L728' name='L728'></a>}% \tabu@indent <a id='L729' name='L729'></a>\def\tabu@setcleanup {% saves last global assignments <a id='L730' name='L730'></a> \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax <a id='L731' name='L731'></a> \def\tabu@aftergroupcleanup{% <a id='L732' name='L732'></a> \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% <a id='L733' name='L733'></a> \else <a id='L734' name='L734'></a> \def\tabu@aftergroupcleanup{% <a id='L735' name='L735'></a> \aftergroup\aftergroup\aftergroup\tabu@cleanup <a id='L736' name='L736'></a> \let\tabu@aftergroupcleanup \relax}% <a id='L737' name='L737'></a> \fi <a id='L738' name='L738'></a> \let\tabu@arc@Gsave \tabu@arc@G <a id='L739' name='L739'></a> \let\tabu@arc@G \tabu@arc@L % <init> <a id='L740' name='L740'></a> \let\tabu@drsc@Gsave \tabu@drsc@G <a id='L741' name='L741'></a> \let\tabu@drsc@G \tabu@drsc@L % <init> <a id='L742' name='L742'></a> \let\tabu@ls@Gsave \tabu@ls@G <a id='L743' name='L743'></a> \let\tabu@ls@G \tabu@ls@L % <init> <a id='L744' name='L744'></a> \let\tabu@rc@Gsave \tabu@rc@G <a id='L745' name='L745'></a> \let\tabu@rc@G \tabu@rc@L % <init> <a id='L746' name='L746'></a> \let\tabu@evr@Gsave \tabu@evr@G <a id='L747' name='L747'></a> \let\tabu@evr@G \tabu@evr@L % <init> <a id='L748' name='L748'></a> \let\tabu@celllalign@save \tabu@celllalign <a id='L749' name='L749'></a> \let\tabu@cellralign@save \tabu@cellralign <a id='L750' name='L750'></a> \let\tabu@cellleft@save \tabu@cellleft <a id='L751' name='L751'></a> \let\tabu@cellright@save \tabu@cellright <a id='L752' name='L752'></a> \let\tabu@@celllalign@save \tabu@@celllalign <a id='L753' name='L753'></a> \let\tabu@@cellralign@save \tabu@@cellralign <a id='L754' name='L754'></a> \let\tabu@@cellleft@save \tabu@@cellleft <a id='L755' name='L755'></a> \let\tabu@@cellright@save \tabu@@cellright <a id='L756' name='L756'></a> \let\tabu@rowfontreset@save \tabu@rowfontreset <a id='L757' name='L757'></a> \let\tabu@@rowfontreset@save\tabu@@rowfontreset <a id='L758' name='L758'></a> \let\tabu@rowfontreset \@empty <a id='L759' name='L759'></a> \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset <a id='L760' name='L760'></a> \edef\c@taburow@save {\the\c@taburow}% <a id='L761' name='L761'></a> \edef\tabu@naturalX@save {\the\tabu@naturalX}% <a id='L762' name='L762'></a> \let\tabu@naturalXmin@save \tabu@naturalXmin <a id='L763' name='L763'></a> \let\tabu@naturalXmax@save \tabu@naturalXmax <a id='L764' name='L764'></a> \let\tabu@mkarstrut@save \tabu@mkarstrut <a id='L765' name='L765'></a> \edef\tabu@clarstrut{% <a id='L766' name='L766'></a> \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax <a id='L767' name='L767'></a> \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax <a id='L768' name='L768'></a> \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% <a id='L769' name='L769'></a>}% \tabu@setcleanup <a id='L770' name='L770'></a>\def\tabu@cleanup {\begingroup <a id='L771' name='L771'></a> \globaldefs\@ne \tabu@everyrowtrue <a id='L772' name='L772'></a> \let\tabu@arc@G \tabu@arc@Gsave <a id='L773' name='L773'></a> \let\CT@arc@ \tabu@arc@G <a id='L774' name='L774'></a> \let\tabu@drsc@G \tabu@drsc@Gsave <a id='L775' name='L775'></a> \let\CT@drsc@ \tabu@drsc@G <a id='L776' name='L776'></a> \let\tabu@ls@G \tabu@ls@Gsave <a id='L777' name='L777'></a> \let\tabu@ls@ \tabu@ls@G <a id='L778' name='L778'></a> \let\tabu@rc@G \tabu@rc@Gsave <a id='L779' name='L779'></a> \let\tabu@rc@ \tabu@rc@G <a id='L780' name='L780'></a> \let\CT@do@color \relax <a id='L781' name='L781'></a> \let\tabu@evr@G \tabu@evr@Gsave <a id='L782' name='L782'></a> \let\tabu@celllalign \tabu@celllalign@save <a id='L783' name='L783'></a> \let\tabu@cellralign \tabu@cellralign@save <a id='L784' name='L784'></a> \let\tabu@cellleft \tabu@cellleft@save <a id='L785' name='L785'></a> \let\tabu@cellright \tabu@cellright@save <a id='L786' name='L786'></a> \let\tabu@@celllalign \tabu@@celllalign@save <a id='L787' name='L787'></a> \let\tabu@@cellralign \tabu@@cellralign@save <a id='L788' name='L788'></a> \let\tabu@@cellleft \tabu@@cellleft@save <a id='L789' name='L789'></a> \let\tabu@@cellright \tabu@@cellright@save <a id='L790' name='L790'></a> \let\tabu@rowfontreset \tabu@rowfontreset@save <a id='L791' name='L791'></a> \let\tabu@@rowfontreset \tabu@@rowfontreset@save <a id='L792' name='L792'></a> \tabu@naturalX =\tabu@naturalX@save <a id='L793' name='L793'></a> \let\tabu@naturalXmax \tabu@naturalXmax@save <a id='L794' name='L794'></a> \let\tabu@naturalXmin \tabu@naturalXmin@save <a id='L795' name='L795'></a> \let\tabu@mkarstrut \tabu@mkarstrut@save <a id='L796' name='L796'></a> \c@taburow =\c@taburow@save <a id='L797' name='L797'></a> \ifcase \tabu@nested \tabu@alloc \m@ne\fi <a id='L798' name='L798'></a> \endgroup % <end of \globaldefs> <a id='L799' name='L799'></a> \ifcase \tabu@nested <a id='L800' name='L800'></a> \the\tabu@footnotes \global\tabu@footnotes{}% <a id='L801' name='L801'></a> \tabu@afterendpar \tabu@elapsedtime <a id='L802' name='L802'></a> \fi <a id='L803' name='L803'></a> \tabu@clarstrut <a id='L804' name='L804'></a> \everyrow\expandafter {\tabu@evr@G}% <a id='L805' name='L805'></a>}% \tabu@cleanup <a id='L806' name='L806'></a>\let\tabu@afterendpar \relax <a id='L807' name='L807'></a>\def\tabu@setreset {% <a id='L808' name='L808'></a> \edef\tabu@savedparams {% \relax for \tabu@message@save <a id='L809' name='L809'></a> \ifmmode \col@sep \the\arraycolsep <a id='L810' name='L810'></a> \else \col@sep \the\tabcolsep \fi \relax <a id='L811' name='L811'></a> \arrayrulewidth \the\arrayrulewidth \relax <a id='L812' name='L812'></a> \doublerulesep \the\doublerulesep \relax <a id='L813' name='L813'></a> \extratabsurround \the\extratabsurround \relax <a id='L814' name='L814'></a> \extrarowheight \the\extrarowheight \relax <a id='L815' name='L815'></a> \extrarowdepth \the\extrarowdepth \relax <a id='L816' name='L816'></a> \abovetabulinesep \the\abovetabulinesep \relax <a id='L817' name='L817'></a> \belowtabulinesep \the\belowtabulinesep \relax <a id='L818' name='L818'></a> \def\noexpand\arraystretch{\arraystretch}% <a id='L819' name='L819'></a> \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% <a id='L820' name='L820'></a> \begingroup <a id='L821' name='L821'></a> \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu <a id='L822' name='L822'></a> \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi <a id='L823' name='L823'></a> \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi <a id='L824' name='L824'></a> \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L <a id='L825' name='L825'></a> \expandafter \endgroup \expandafter <a id='L826' name='L826'></a> \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena <a id='L827' name='L827'></a> \let\tabu@arc@G \tabu@arc@L <a id='L828' name='L828'></a> \let\tabu@drsc@G \tabu@drsc@L <a id='L829' name='L829'></a> \let\tabu@ls@G \tabu@ls@L <a id='L830' name='L830'></a> \let\tabu@rc@G \tabu@rc@L <a id='L831' name='L831'></a> \let\tabu@evr@G \tabu@evr@L}% <a id='L832' name='L832'></a> \def\tabu@reset{\tabu@savedparams <a id='L833' name='L833'></a> \tabu@everyrowtrue \c@taburow \z@ <a id='L834' name='L834'></a> \let\CT@arc@ \tabu@arc@L <a id='L835' name='L835'></a> \let\CT@drsc@ \tabu@drsc@L <a id='L836' name='L836'></a> \let\tabu@ls@ \tabu@ls@L <a id='L837' name='L837'></a> \let\tabu@rc@ \tabu@rc@L <a id='L838' name='L838'></a> \global\tabu@alloc \tabu@alloc@save <a id='L839' name='L839'></a> \everyrow\expandafter{\tabu@evr@L}}% <a id='L840' name='L840'></a>}% \tabu@reset <a id='L841' name='L841'></a>\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} <a id='L842' name='L842'></a>\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} <a id='L843' name='L843'></a>%% The Rewriting Process ------------------------------------------- <a id='L844' name='L844'></a>\def\tabu@newcolumntype #1{% <a id='L845' name='L845'></a> \expandafter\tabu@new@columntype <a id='L846' name='L846'></a> \csname NC@find@\string#1\expandafter\endcsname <a id='L847' name='L847'></a> \csname NC@rewrite@\string#1\endcsname <a id='L848' name='L848'></a> {#1}% <a id='L849' name='L849'></a>}% \tabu@newcolumntype <a id='L850' name='L850'></a>\def\tabu@new@columntype #1#2#3{% <a id='L851' name='L851'></a> \def#1##1#3{\NC@{##1}}% <a id='L852' name='L852'></a> \let#2\relax \newcommand*#2% <a id='L853' name='L853'></a>}% \tabu@new@columntype <a id='L854' name='L854'></a>\def\tabu@privatecolumntype #1{% <a id='L855' name='L855'></a> \expandafter\tabu@private@columntype <a id='L856' name='L856'></a> \csname NC@find@\string#1\expandafter\endcsname <a id='L857' name='L857'></a> \csname NC@rewrite@\string#1\expandafter\endcsname <a id='L858' name='L858'></a> \csname tabu@NC@find@\string#1\expandafter\endcsname <a id='L859' name='L859'></a> \csname tabu@NC@rewrite@\string#1\endcsname <a id='L860' name='L860'></a> {#1}% <a id='L861' name='L861'></a>}% \tabu@privatecolumntype <a id='L862' name='L862'></a>\def\tabu@private@columntype#1#2#3#4{% <a id='L863' name='L863'></a> \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% <a id='L864' name='L864'></a> \tabu@new@columntype#3#4% <a id='L865' name='L865'></a>}% \tabu@private@columntype <a id='L866' name='L866'></a>\let\tabu@privatecolumns \@empty <a id='L867' name='L867'></a>\newcommand*\tabucolumn [1]{\expandafter \def \expandafter <a id='L868' name='L868'></a> \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns <a id='L869' name='L869'></a> \NC@do #1}}% <a id='L870' name='L870'></a>\let\tabu@highprioritycolumns \@empty <a id='L871' name='L871'></a>%% The | ``column'' : rewriting process -------------------------- <a id='L872' name='L872'></a>\tabu@privatecolumntype |{\tabu@rewritevline} <a id='L873' name='L873'></a>\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% <a id='L874' name='L874'></a> \expandafter \NC@find \tabu@rewritten} <a id='L875' name='L875'></a>\def\tabu@lines #1{% <a id='L876' name='L876'></a> \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi <a id='L877' name='L877'></a> \NC@list\expandafter{\the\NC@list \NC@do #1}% <a id='L878' name='L878'></a>}% \tabu@lines@ <a id='L879' name='L879'></a>\def\tabu@vlinearg #1{% <a id='L880' name='L880'></a> \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% <a id='L881' name='L881'></a> \else\tabu@getline {#1}% <a id='L882' name='L882'></a> \fi <a id='L883' name='L883'></a> \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% <a id='L884' name='L884'></a> }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% <a id='L885' name='L885'></a> \expandafter \tabu@keepls \tabu@thestyle \@nil <a id='L886' name='L886'></a>}% \tabu@vlinearg <a id='L887' name='L887'></a>\def\tabu@keepls #1\@nil{% <a id='L888' name='L888'></a> \ifcat $\@cdr #1\@nil $% <a id='L889' name='L889'></a> \ifx \relax#1\else <a id='L890' name='L890'></a> \ifx \tabu@ls@#1\else <a id='L891' name='L891'></a> \let#1\relax <a id='L892' name='L892'></a> \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer <a id='L893' name='L893'></a> \tabu@savels\noexpand#1}\fi\fi\fi <a id='L894' name='L894'></a>}% \tabu@keepls <a id='L895' name='L895'></a>\def\tabu@thevline {\begingroup <a id='L896' name='L896'></a> \ifdefined\tabu@leaders <a id='L897' name='L897'></a> \setbox\@tempboxa=\vtop to\dimexpr <a id='L898' name='L898'></a> \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% <a id='L899' name='L899'></a> \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox <a id='L900' name='L900'></a> \box\@tempboxa <a id='L901' name='L901'></a> \else <a id='L902' name='L902'></a> \tabu@thevrule <a id='L903' name='L903'></a> \fi \endgroup <a id='L904' name='L904'></a>}% \tabu@thevline <a id='L905' name='L905'></a>\def\tabu@savels #1{% <a id='L906' name='L906'></a> \expandafter\let\csname\string#1\endcsname #1% <a id='L907' name='L907'></a> \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset <a id='L908' name='L908'></a> \tabu@resetls#1}}% <a id='L909' name='L909'></a>\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% <a id='L910' name='L910'></a>%% \multicolumn inside tabu environment ----------------------------- <a id='L911' name='L911'></a>\tabu@newcolumntype \tabu@rewritemulticolumn{% <a id='L912' name='L912'></a> \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group <a id='L913' name='L913'></a> \NC@list{\NC@do *}\tabu@textbar \tabu@lines <a id='L914' name='L914'></a> \tabu@savedecl <a id='L915' name='L915'></a> \tabu@privatecolumns <a id='L916' name='L916'></a> \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% <a id='L917' name='L917'></a> \let\tabu@savels \relax <a id='L918' name='L918'></a> \NC@find <a id='L919' name='L919'></a>}% \tabu@rewritemulticolumn <a id='L920' name='L920'></a>\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} <a id='L921' name='L921'></a>\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} <a id='L922' name='L922'></a>\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup <a id='L923' name='L923'></a> \tabu@everyrowtrue <a id='L924' name='L924'></a> \NC@list{\NC@do \tabu@rewritemulticolumn}% <a id='L925' name='L925'></a> \expandafter\@gobbletwo % gobbles \multispan{#1} <a id='L926' name='L926'></a> \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% <a id='L927' name='L927'></a> {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi <a id='L928' name='L928'></a> {#3}}% <a id='L929' name='L929'></a>}% \tabu@multic@lumn <a id='L930' name='L930'></a>%% The X column(s): rewriting process ----------------------------- <a id='L931' name='L931'></a>\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} <a id='L932' name='L932'></a>\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } <a id='L933' name='L933'></a>\def\tabu@siunitx #1{\@ifnextchar \bgroup <a id='L934' name='L934'></a> {\tabu@rewriteX@Ss{#1}} <a id='L935' name='L935'></a> {\tabu@nosiunitx{#1}}} <a id='L936' name='L936'></a>\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% <a id='L937' name='L937'></a> \@defaultunits \let\tabu@temp =#2\relax\@nnil <a id='L938' name='L938'></a> \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi <a id='L939' name='L939'></a> \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% <a id='L940' name='L940'></a> }\expandafter\NC@find \the\@temptokena \relax <a id='L941' name='L941'></a> }\expandafter\NC@rewrite@S \@gobble #2\relax <a id='L942' name='L942'></a> \else \tabu@siunitxerror <a id='L943' name='L943'></a> \fi <a id='L944' name='L944'></a> \expandafter \NC@find \tabu@rewritten <a id='L945' name='L945'></a>}% \tabu@rewriteX@Ss <a id='L946' name='L946'></a>\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! <a id='L947' name='L947'></a> \MessageBreak X column can only embed siunitx S or s columns}\@ehd <a id='L948' name='L948'></a>}% \tabu@siunitxerror <a id='L949' name='L949'></a>\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% <a id='L950' name='L950'></a> \iftabu@measuring <a id='L951' name='L951'></a> \else \tabu@measuringtrue % first X column found in the preamble <a id='L952' name='L952'></a> \let\@halignto \relax \let\tabu@halignto \relax <a id='L953' name='L953'></a> \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ <a id='L954' name='L954'></a> \else \tabu@spreadtarget \z@ \fi <a id='L955' name='L955'></a> \ifdim \tabu@target=\z@ <a id='L956' name='L956'></a> \setlength\tabu@target \tabu@thetarget <a id='L957' name='L957'></a> \tabu@message{\tabu@message@defaulttarget}% <a id='L958' name='L958'></a> \else \tabu@message{\tabu@message@target}\fi <a id='L959' name='L959'></a> \fi <a id='L960' name='L960'></a>}% \tabu@rewriteX <a id='L961' name='L961'></a>\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax <a id='L962' name='L962'></a> \def\tabu@rewritten{l}} <a id='L963' name='L963'></a>\def\tabu@Xarg #1#2#3{% <a id='L964' name='L964'></a> \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty <a id='L965' name='L965'></a> \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty <a id='L966' name='L966'></a> \ifx\\#1\\% <shortcut when no option> <a id='L967' name='L967'></a> \def\tabu@rewritten{p}\tabucolX \p@ % <default coef = 1> <a id='L968' name='L968'></a> \else <a id='L969' name='L969'></a> \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ <a id='L970' name='L970'></a> \tabu@Xparse {}#1\relax <a id='L971' name='L971'></a> \fi <a id='L972' name='L972'></a> \tabu@Xrewritten{#2}{#3}% <a id='L973' name='L973'></a>}% \tabu@Xarg <a id='L974' name='L974'></a>\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} <a id='L975' name='L975'></a>\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} <a id='L976' name='L976'></a>\def\tabu@Xtest{% <a id='L977' name='L977'></a> \ifcase \ifx \relax\@let@token \z@ \else <a id='L978' name='L978'></a> \if ,\@let@token \m@ne\else <a id='L979' name='L979'></a> \if p\@let@token 1\else <a id='L980' name='L980'></a> \if m\@let@token 2\else <a id='L981' name='L981'></a> \if b\@let@token 3\else <a id='L982' name='L982'></a> \if l\@let@token 4\else <a id='L983' name='L983'></a> \if c\@let@token 5\else <a id='L984' name='L984'></a> \if r\@let@token 6\else <a id='L985' name='L985'></a> \if j\@let@token 7\else <a id='L986' name='L986'></a> \if L\@let@token 8\else <a id='L987' name='L987'></a> \if C\@let@token 9\else <a id='L988' name='L988'></a> \if R\@let@token 10\else <a id='L989' name='L989'></a> \if J\@let@token 11\else <a id='L990' name='L990'></a> \ifx \@sptoken\@let@token 12\else <a id='L991' name='L991'></a> \if .\@let@token 13\else <a id='L992' name='L992'></a> \if -\@let@token 13\else <a id='L993' name='L993'></a> \ifcat $\@let@token 14\else <a id='L994' name='L994'></a> 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax <a id='L995' name='L995'></a> \or \tabu@Xtype {p}% <a id='L996' name='L996'></a> \or \tabu@Xtype {m}% <a id='L997' name='L997'></a> \or \tabu@Xtype {b}% <a id='L998' name='L998'></a> \or \tabu@Xalign \raggedright\relax <a id='L999' name='L999'></a> \or \tabu@Xalign \centering\relax <a id='L1000' name='L1000'></a> \or \tabu@Xalign \raggedleft\relax <a id='L1001' name='L1001'></a> \or \tabu@Xalign \tabu@justify\relax <a id='L1002' name='L1002'></a> \or \tabu@Xalign \RaggedRight\raggedright <a id='L1003' name='L1003'></a> \or \tabu@Xalign \Centering\centering <a id='L1004' name='L1004'></a> \or \tabu@Xalign \RaggedLeft\raggedleft <a id='L1005' name='L1005'></a> \or \tabu@Xalign \justifying\tabu@justify <a id='L1006' name='L1006'></a> \or \expandafter \tabu@Xparsespace <a id='L1007' name='L1007'></a> \or \expandafter \tabu@Xcoef <a id='L1008' name='L1008'></a> \or \expandafter \tabu@Xm@th <a id='L1009' name='L1009'></a> \or \tabu@Xcoef{}% <a id='L1010' name='L1010'></a> \else\expandafter \tabu@Xparse <a id='L1011' name='L1011'></a> \fi <a id='L1012' name='L1012'></a>}% \tabu@Xtest <a id='L1013' name='L1013'></a>\def\tabu@Xalign #1#2{% <a id='L1014' name='L1014'></a> \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} <a id='L1015' name='L1015'></a> {Duplicate horizontal alignment specification}\fi <a id='L1016' name='L1016'></a> \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax <a id='L1017' name='L1017'></a> \else \def\tabu@Xlcr{#2}\let#2\relax\fi <a id='L1018' name='L1018'></a> \expandafter\tabu@Xparse <a id='L1019' name='L1019'></a>}% \tabu@Xalign <a id='L1020' name='L1020'></a>\def\tabu@Xtype #1{% <a id='L1021' name='L1021'></a> \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} <a id='L1022' name='L1022'></a> {Duplicate vertical alignment specification}\fi <a id='L1023' name='L1023'></a> \def\tabu@rewritten{#1}\expandafter\tabu@Xparse <a id='L1024' name='L1024'></a>}% \tabu@Xtype <a id='L1025' name='L1025'></a>\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% <a id='L1026' name='L1026'></a> \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi <a id='L1027' name='L1027'></a>}% \tabu@Xcoef <a id='L1028' name='L1028'></a>\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ <a id='L1029' name='L1029'></a> \tabu@Xparse{}% <a id='L1030' name='L1030'></a>}% \tabu@Xc@ef <a id='L1031' name='L1031'></a>\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} <a id='L1032' name='L1032'></a>\def\tabu@Xd@sp{\let\tabu@Xmath=$% <a id='L1033' name='L1033'></a> \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% <a id='L1034' name='L1034'></a> \expandafter\tabu@Xparse <a id='L1035' name='L1035'></a> \else \expandafter\tabu@Xparse\expandafter{\expandafter}% <a id='L1036' name='L1036'></a> \fi <a id='L1037' name='L1037'></a>}% \tabu@Xd@sp <a id='L1038' name='L1038'></a>\def\tabu@Xrewritten {% <a id='L1039' name='L1039'></a> \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi <a id='L1040' name='L1040'></a> \ifdim \tabucolX<\z@ \tabu@negcoeftrue <a id='L1041' name='L1041'></a> \else\ifdim \tabucolX=\z@ \tabucolX \p@ <a id='L1042' name='L1042'></a> \fi\fi <a id='L1043' name='L1043'></a> \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% <a id='L1044' name='L1044'></a> \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% <a id='L1045' name='L1045'></a> \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% <a id='L1046' name='L1046'></a> >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% <a id='L1047' name='L1047'></a> \tabu@rewritten {\tabu@hsize \tabu@temp}% <a id='L1048' name='L1048'></a> <{##2\ifx$\tabu@Xmath$\fi}}% <a id='L1049' name='L1049'></a> }\tabu@rewritten <a id='L1050' name='L1050'></a>}% \tabu@Xrewritten <a id='L1051' name='L1051'></a>\def\tabu@hsize #1#2{% <a id='L1052' name='L1052'></a> \ifdim #2\p@<\z@ <a id='L1053' name='L1053'></a> \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else <a id='L1054' name='L1054'></a> \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi <a id='L1055' name='L1055'></a> \fi <a id='L1056' name='L1056'></a> \else #2\tabucolX <a id='L1057' name='L1057'></a> \fi <a id='L1058' name='L1058'></a>}% \tabu@hsize <a id='L1059' name='L1059'></a>%% \usetabu and \preamble: rewriting process --------------------- <a id='L1060' name='L1060'></a>\tabu@privatecolumntype \usetabu [1]{% <a id='L1061' name='L1061'></a> \ifx\\#1\\\tabu@saveerr{}\else <a id='L1062' name='L1062'></a> \@ifundefined{tabu@saved@\string#1} <a id='L1063' name='L1063'></a> {\tabu@saveerr{#1}} <a id='L1064' name='L1064'></a> {\let\tabu@rewriteX \tabu@rewriteXrestore <a id='L1065' name='L1065'></a> \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% <a id='L1066' name='L1066'></a> \fi <a id='L1067' name='L1067'></a>}% \NC@rewrite@\usetabu <a id='L1068' name='L1068'></a>\tabu@privatecolumntype \preamble [1]{% <a id='L1069' name='L1069'></a> \ifx\\#1\\\tabu@saveerr{}\else <a id='L1070' name='L1070'></a> \@ifundefined{tabu@saved@\string#1} <a id='L1071' name='L1071'></a> {\tabu@saveerr{#1}} <a id='L1072' name='L1072'></a> {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% <a id='L1073' name='L1073'></a> \fi <a id='L1074' name='L1074'></a>}% \NC@rewrite@\preamble <a id='L1075' name='L1075'></a>%% Controlling the rewriting process ------------------------------- <a id='L1076' name='L1076'></a>\tabu@newcolumntype \tabu@rewritefirst{% <a id='L1077' name='L1077'></a> \iftabu@long \aftergroup \tabu@longpream % <the whole implementation is here !> <a id='L1078' name='L1078'></a> \else \aftergroup \tabu@pream <a id='L1079' name='L1079'></a> \fi <a id='L1080' name='L1080'></a> \let\tabu@ \relax \let\tabu@hsize \relax <a id='L1081' name='L1081'></a> \let\tabu@Xcoefs \@empty \let\tabu@savels \relax <a id='L1082' name='L1082'></a> \tabu@Xcol \z@ \tabu@cnt \tw@ <a id='L1083' name='L1083'></a> \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse <a id='L1084' name='L1084'></a> \global\setbox\@arstrutbox \box\@arstrutbox <a id='L1085' name='L1085'></a> \NC@list{\NC@do *}\tabu@textbar \tabu@lines <a id='L1086' name='L1086'></a> \NC@list\expandafter{\the\NC@list \NC@do X}% <a id='L1087' name='L1087'></a> \iftabu@siunitx % <siunitx S and s columns> <a id='L1088' name='L1088'></a> \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi <a id='L1089' name='L1089'></a> \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% <a id='L1090' name='L1090'></a> \expandafter\def\expandafter\tabu@NC@list\expandafter{% <a id='L1091' name='L1091'></a> \the\expandafter\NC@list \tabu@NC@list}% % * | X S <original> <a id='L1092' name='L1092'></a> \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu <a id='L1093' name='L1093'></a> \expandafter \NC@do \expandafter\preamble <a id='L1094' name='L1094'></a> \the\NC@list \NC@do \tabu@rewritemiddle <a id='L1095' name='L1095'></a> \NC@do \tabu@rewritelast}% <a id='L1096' name='L1096'></a> \tabu@savedecl <a id='L1097' name='L1097'></a> \tabu@privatecolumns <a id='L1098' name='L1098'></a> \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle <a id='L1099' name='L1099'></a>}% NC@rewrite@\tabu@rewritefirst <a id='L1100' name='L1100'></a>\tabu@newcolumntype \tabu@rewritemiddle{% <a id='L1101' name='L1101'></a> \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast <a id='L1102' name='L1102'></a>}% \NC@rewrite@\tabu@rewritemiddle <a id='L1103' name='L1103'></a>\tabu@newcolumntype \tabu@rewritelast{% <a id='L1104' name='L1104'></a> \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne <a id='L1105' name='L1105'></a> \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle <a id='L1106' name='L1106'></a> \NC@do \tabu@rewritelast}% <a id='L1107' name='L1107'></a> \else \let\tabu@prev\tabu@temp <a id='L1108' name='L1108'></a> \fi <a id='L1109' name='L1109'></a> \ifcase \tabu@cnt \expandafter\tabu@endrewrite <a id='L1110' name='L1110'></a> \else \expandafter\NC@find \expandafter\tabu@rewritemiddle <a id='L1111' name='L1111'></a> \fi <a id='L1112' name='L1112'></a>}% \NC@rewrite@\tabu@rewritelast <a id='L1113' name='L1113'></a>%% Choosing the strategy -------------------------------------------- <a id='L1114' name='L1114'></a>\def\tabu@endrewrite {% <a id='L1115' name='L1115'></a> \let\tabu@temp \NC@find <a id='L1116' name='L1116'></a> \ifx \@arrayright\relax \let\@arrayright \@empty \fi <a id='L1117' name='L1117'></a> \count@=% <a id='L1118' name='L1118'></a> \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print <a id='L1119' name='L1119'></a> \iftabu@measuring <a id='L1120' name='L1120'></a> \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer <a id='L1121' name='L1121'></a> \tabu@target \csname tabu@\the\tabu@nested.T\endcsname <a id='L1122' name='L1122'></a> \tabucolX \csname tabu@\the\tabu@nested.X\endcsname <a id='L1123' name='L1123'></a> \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% <a id='L1124' name='L1124'></a> \fi <a id='L1125' name='L1125'></a> \else\iftabu@measuring 4 % X columns <a id='L1126' name='L1126'></a> \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer <a id='L1127' name='L1127'></a> \tabu@target \the\tabu@target <a id='L1128' name='L1128'></a> \tabu@spreadtarget \the\tabu@spreadtarget}% <a id='L1129' name='L1129'></a> \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% <a id='L1130' name='L1130'></a> \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% <a id='L1131' name='L1131'></a> \let\tabu@Xcoefs \relax <a id='L1132' name='L1132'></a> \else\ifcase\tabu@nested \thr@@ % outer, no X <a id='L1133' name='L1133'></a> \global\let\tabu@afterendpar \relax <a id='L1134' name='L1134'></a> \else \@ne % inner, no X, outer in mode 1 or 2 <a id='L1135' name='L1135'></a> \fi <a id='L1136' name='L1136'></a> \ifdefined\tabu@usetabu <a id='L1137' name='L1137'></a> \else \ifdim\tabu@target=\z@ <a id='L1138' name='L1138'></a> \else \let\tabu@temp \tabu@extracolsep <a id='L1139' name='L1139'></a> \fi\fi <a id='L1140' name='L1140'></a> \fi <a id='L1141' name='L1141'></a> \fi <a id='L1142' name='L1142'></a> \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% <a id='L1143' name='L1143'></a> \tabu@temp <a id='L1144' name='L1144'></a>}% \tabu@endrewrite <a id='L1145' name='L1145'></a>\def\tabu@extracolsep{\@defaultunits \expandafter\let <a id='L1146' name='L1146'></a> \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil <a id='L1147' name='L1147'></a> \ifx \tabu@temp\@sptoken <a id='L1148' name='L1148'></a> \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep <a id='L1149' name='L1149'></a> \else <a id='L1150' name='L1150'></a> \edef\tabu@temp{\noexpand\NC@find <a id='L1151' name='L1151'></a> \if |\noexpand\tabu@temp @% <a id='L1152' name='L1152'></a> \else\if !\noexpand\tabu@temp @% <a id='L1153' name='L1153'></a> \else !% <a id='L1154' name='L1154'></a> \fi\fi <a id='L1155' name='L1155'></a> {\noexpand\extracolsep\noexpand\@flushglue}}% <a id='L1156' name='L1156'></a> \fi <a id='L1157' name='L1157'></a> \tabu@temp <a id='L1158' name='L1158'></a>}% \tabu@extrac@lsep <a id='L1159' name='L1159'></a>%% Implementing the strategy ---------------------------------------- <a id='L1160' name='L1160'></a>\long\def\tabu@pream #1\@preamble {% <a id='L1161' name='L1161'></a> \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup <a id='L1162' name='L1162'></a> \NC@list\expandafter {\tabu@NC@list}% in case of nesting... <a id='L1163' name='L1163'></a> \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi <a id='L1164' name='L1164'></a> \let\tabu@savedpreamble \@preamble <a id='L1165' name='L1165'></a> \global\let\tabu@elapsedtime \relax <a id='L1166' name='L1166'></a> \tabu@thebody ={#1\tabu@aftergroupcleanup}% <a id='L1167' name='L1167'></a> \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody <a id='L1168' name='L1168'></a> \@preamble}% <a id='L1169' name='L1169'></a> \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) <a id='L1170' name='L1170'></a> \tabu@select <a id='L1171' name='L1171'></a>}% \tabu@pream <a id='L1172' name='L1172'></a>\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% <a id='L1173' name='L1173'></a> \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup <a id='L1174' name='L1174'></a> \NC@list\expandafter {\tabu@NC@list}% in case of nesting... <a id='L1175' name='L1175'></a> \let\tabu@savedpreamble \@preamble <a id='L1176' name='L1176'></a> \global\let\tabu@elapsedtime \relax <a id='L1177' name='L1177'></a> \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% <a id='L1178' name='L1178'></a> \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) <a id='L1179' name='L1179'></a> \tabu@select <a id='L1180' name='L1180'></a>}% \tabu@longpream <a id='L1181' name='L1181'></a>\def\tabu@select {% <a id='L1182' name='L1182'></a> \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi <a id='L1183' name='L1183'></a> \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi <a id='L1184' name='L1184'></a> \ifcase \count@ <a id='L1185' name='L1185'></a> \global\let\tabu@elapsedtime \relax <a id='L1186' name='L1186'></a> \tabu@seteverycr <a id='L1187' name='L1187'></a> \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) <a id='L1188' name='L1188'></a> \or % exit in vertical measure + struts per cell because no X and outer in mode 3 <a id='L1189' name='L1189'></a> \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% <a id='L1190' name='L1190'></a> \def\tabu@cellralign{\tabu@verticalspacing}% <a id='L1191' name='L1191'></a> \tabu@seteverycr <a id='L1192' name='L1192'></a> \expandafter \tabuthepreamble <a id='L1193' name='L1193'></a> \or % exit without measure because no X and outer in mode 4 <a id='L1194' name='L1194'></a> \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty <a id='L1195' name='L1195'></a> \tabu@seteverycr <a id='L1196' name='L1196'></a> \expandafter \tabuthepreamble <a id='L1197' name='L1197'></a> \else % needs trials <a id='L1198' name='L1198'></a> \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty <a id='L1199' name='L1199'></a> \tabu@savecounters <a id='L1200' name='L1200'></a> \expandafter \tabu@setstrategy <a id='L1201' name='L1201'></a> \fi <a id='L1202' name='L1202'></a>}% \tabu@select <a id='L1203' name='L1203'></a>\def\tabu@@ {\gdef\tabu@mkpreambuffer} <a id='L1204' name='L1204'></a>%% Protections to set up before trials ------------------------------ <a id='L1205' name='L1205'></a>\def\tabu@setstrategy {\begingroup % <trials group> <a id='L1206' name='L1206'></a> \tabu@trialh@@k \tabu@cnt \z@ % number of trials <a id='L1207' name='L1207'></a> \hbadness \@M \let\hbadness \@tempcnta <a id='L1208' name='L1208'></a> \hfuzz \maxdimen \let\hfuzz \@tempdima <a id='L1209' name='L1209'></a> \let\write \tabu@nowrite\let\GenericError \tabu@GenericError <a id='L1210' name='L1210'></a> \let\savetabu \@gobble \let\tabudefaulttarget \linewidth <a id='L1211' name='L1211'></a> \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote <a id='L1212' name='L1212'></a> \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor <a id='L1213' name='L1213'></a> \let\tabu@aftergroupcleanup \relax % only after the last trial <a id='L1214' name='L1214'></a> \tabu@mkpreambuffer <a id='L1215' name='L1215'></a> \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init <a id='L1216' name='L1216'></a> \def\tabu@lasttry{\m@ne\p@}\fi <a id='L1217' name='L1217'></a> \begingroup \iffalse{\fi \ifnum0=`}\fi <a id='L1218' name='L1218'></a> \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % <a id='L1219' name='L1219'></a> \tabu@collectbody \tabu@strategy % <a id='L1220' name='L1220'></a>}% \tabu@setstrategy <a id='L1221' name='L1221'></a>\def\tabu@savecounters{% <a id='L1222' name='L1222'></a> \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% <a id='L1223' name='L1223'></a> \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax <a id='L1224' name='L1224'></a>}% \tabu@savecounters <a id='L1225' name='L1225'></a>\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) <a id='L1226' name='L1226'></a> \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs <a id='L1227' name='L1227'></a> \ifdim \dimen@>\z@ <a id='L1228' name='L1228'></a> \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax <a id='L1229' name='L1229'></a> \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi <a id='L1230' name='L1230'></a> \fi <a id='L1231' name='L1231'></a>}% \tabucolX@init <a id='L1232' name='L1232'></a>\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum <a id='L1233' name='L1233'></a> \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ <a id='L1234' name='L1234'></a> \else -#2\p@ \tabu@negcoeftrue <a id='L1235' name='L1235'></a> \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax <a id='L1236' name='L1236'></a> \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi <a id='L1237' name='L1237'></a> \tabu@wddef{#1}{0pt}% <a id='L1238' name='L1238'></a> \fi <a id='L1239' name='L1239'></a>}% \tabu@Xinit <a id='L1240' name='L1240'></a>%% Collecting the environment body ---------------------------------- <a id='L1241' name='L1241'></a>\long\def\tabu@collectbody #1#2\end #3{% <a id='L1242' name='L1242'></a> \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% <a id='L1243' name='L1243'></a> \ifx \tabu@stack\@empty <a id='L1244' name='L1244'></a> \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% <a id='L1245' name='L1245'></a> \def\tabu@end@envir{\end{#3}}% <a id='L1246' name='L1246'></a> \iftabuscantokens <a id='L1247' name='L1247'></a> \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% <a id='L1248' name='L1248'></a> \else \def\tabu@endenvir {\let\endarray \@empty <a id='L1249' name='L1249'></a> \end{#3}\tabu@gobbleX}% <a id='L1250' name='L1250'></a> \fi <a id='L1251' name='L1251'></a> \else \def\tabu@endenvir {\end{#3}}\fi}% <a id='L1252' name='L1252'></a> \let\tabu@collectbody \tabu@endofcollect <a id='L1253' name='L1253'></a> \else\def\tabu@temp{#3}% <a id='L1254' name='L1254'></a> \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% <a id='L1255' name='L1255'></a> \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% <a id='L1256' name='L1256'></a> \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% <a id='L1257' name='L1257'></a> \else \toks@\expandafter{\the\toks@ #2\end{#3}}% <a id='L1258' name='L1258'></a> \fi\fi\fi <a id='L1259' name='L1259'></a> \fi <a id='L1260' name='L1260'></a> \tabu@collectbody{#1}% <a id='L1261' name='L1261'></a>}% \tabu@collectbody <a id='L1262' name='L1262'></a>\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% <a id='L1263' name='L1263'></a>\def\tabu@endofcollect #1{\ifnum0=`{}\fi <a id='L1264' name='L1264'></a> \expandafter\endgroup \the\toks@ #1% <a id='L1265' name='L1265'></a>}% \tabu@endofcollect <a id='L1266' name='L1266'></a>%% The trials: switching between strategies ------------------------- <a id='L1267' name='L1267'></a>\def\tabu@strategy {\relax % stops \count@ assignment ! <a id='L1268' name='L1268'></a> \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) <a id='L1269' name='L1269'></a> \expandafter \tabu@endoftrials <a id='L1270' name='L1270'></a> \or % case 1 = exit in vertical measure (outer in mode 3) <a id='L1271' name='L1271'></a> \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% <a id='L1272' name='L1272'></a> \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% <a id='L1273' name='L1273'></a> \expandafter \tabu@endoftrials <a id='L1274' name='L1274'></a> \or % case 2 = exit with a rule replacing the table (outer in mode 4) <a id='L1275' name='L1275'></a> \expandafter \tabu@quickend <a id='L1276' name='L1276'></a> \or % case 3 = outer is in mode 3 because of no X <a id='L1277' name='L1277'></a> \begingroup <a id='L1278' name='L1278'></a> \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% <a id='L1279' name='L1279'></a> \def\tabu@cellralign{\tabu@verticalspacing}% <a id='L1280' name='L1280'></a> \expandafter \tabu@measuring <a id='L1281' name='L1281'></a> \else % case 4 = horizontal measure <a id='L1282' name='L1282'></a> \begingroup <a id='L1283' name='L1283'></a> \global\let\tabu@elapsedtime \tabu@message@etime <a id='L1284' name='L1284'></a> \long\def\multicolumn##1##2##3{\multispan{##1}}% <a id='L1285' name='L1285'></a> \let\tabu@startpboxORI \@startpbox <a id='L1286' name='L1286'></a> \iftabu@spread <a id='L1287' name='L1287'></a> \def\tabu@naturalXmax {\z@}% <a id='L1288' name='L1288'></a> \let\tabu@naturalXmin \tabu@naturalXmax <a id='L1289' name='L1289'></a> \tabu@evr{\global\tabu@naturalX \z@}% <a id='L1290' name='L1290'></a> \let\@startpbox \tabu@startpboxmeasure <a id='L1291' name='L1291'></a> \else\iftabu@negcoef <a id='L1292' name='L1292'></a> \let\@startpbox \tabu@startpboxmeasure <a id='L1293' name='L1293'></a> \else \let\@startpbox \tabu@startpboxquick <a id='L1294' name='L1294'></a> \fi\fi <a id='L1295' name='L1295'></a> \expandafter \tabu@measuring <a id='L1296' name='L1296'></a> \fi <a id='L1297' name='L1297'></a>}% \tabu@strategy <a id='L1298' name='L1298'></a>\def\tabu@measuring{\expandafter \tabu@trial \expandafter <a id='L1299' name='L1299'></a> \count@ \the\count@ \tabu@endtrial <a id='L1300' name='L1300'></a>}% \tabu@measuring <a id='L1301' name='L1301'></a>\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} <a id='L1302' name='L1302'></a>\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr <a id='L1303' name='L1303'></a> \ifx \tabu@savecounters\relax \else <a id='L1304' name='L1304'></a> \let\tabu@savecounters \relax \tabu@clckpt \fi <a id='L1305' name='L1305'></a> $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi <a id='L1306' name='L1306'></a> \expandafter{\expandafter \tabuthepreamble <a id='L1307' name='L1307'></a> \the\tabu@thebody <a id='L1308' name='L1308'></a> \csname tabu@adl@endtrial\endcsname <a id='L1309' name='L1309'></a> \endarray}$\egroup % got \tabu@box <a id='L1310' name='L1310'></a>}% \tabu@shorttrial <a id='L1311' name='L1311'></a>\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr <a id='L1312' name='L1312'></a> \ifx \tabu@savecounters\relax \else <a id='L1313' name='L1313'></a> \let\tabu@savecounters \relax \tabu@clckpt \fi <a id='L1314' name='L1314'></a> \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi <a id='L1315' name='L1315'></a> \expandafter{\expandafter \tabuthepreamble <a id='L1316' name='L1316'></a> \the\tabu@thebody <a id='L1317' name='L1317'></a> \tabuendlongtrial}\egroup % got \tabu@box <a id='L1318' name='L1318'></a>}% \tabu@longtrial <a id='L1319' name='L1319'></a>\def\tabuendlongtrial{% no @ allowed for \scantokens <a id='L1320' name='L1320'></a> \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne <a id='L1321' name='L1321'></a> \LT@get@widths <a id='L1322' name='L1322'></a>}% \tabuendlongtrial <a id='L1323' name='L1323'></a>\def\tabu@adl@endtrial{% <arydshln in nested trials - problem for global column counters!> <a id='L1324' name='L1324'></a> \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! <a id='L1325' name='L1325'></a>\def\tabu@seteverycr {\tabu@reset <a id='L1326' name='L1326'></a> \everycr \expandafter{\the\everycr \tabu@everycr}% <a id='L1327' name='L1327'></a> \let\everycr \tabu@noeverycr % <for ialign> <a id='L1328' name='L1328'></a>}% \tabu@seteverycr <a id='L1329' name='L1329'></a>\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} <a id='L1330' name='L1330'></a>\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} <a id='L1331' name='L1331'></a>\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} <a id='L1332' name='L1332'></a>\def\tabu@endoftrials {% <a id='L1333' name='L1333'></a> \iftabuscantokens \expandafter\@firstoftwo <a id='L1334' name='L1334'></a> \else \expandafter\@secondoftwo <a id='L1335' name='L1335'></a> \fi <a id='L1336' name='L1336'></a> {\expandafter \tabu@closetrialsgroup \expandafter <a id='L1337' name='L1337'></a> \tabu@rescan \expandafter{% <a id='L1338' name='L1338'></a> \expandafter\tabuthepreamble <a id='L1339' name='L1339'></a> \the\expandafter\tabu@thebody <a id='L1340' name='L1340'></a> \iftabu@long \else \endarray \fi}} <a id='L1341' name='L1341'></a> {\expandafter\tabu@closetrialsgroup \expandafter <a id='L1342' name='L1342'></a> \tabuthepreamble <a id='L1343' name='L1343'></a> \the\tabu@thebody}% <a id='L1344' name='L1344'></a> \tabu@endenvir % Finish ! <a id='L1345' name='L1345'></a>}% \tabu@endoftrials <a id='L1346' name='L1346'></a>\def\tabu@closetrialsgroup {% <a id='L1347' name='L1347'></a> \toks@\expandafter{\tabu@endenvir}% <a id='L1348' name='L1348'></a> \edef\tabu@bufferX{\endgroup <a id='L1349' name='L1349'></a> \tabucolX \the\tabucolX <a id='L1350' name='L1350'></a> \tabu@target \the\tabu@target <a id='L1351' name='L1351'></a> \tabu@cnt \the\tabu@cnt <a id='L1352' name='L1352'></a> \def\noexpand\tabu@endenvir{\the\toks@}% <a id='L1353' name='L1353'></a> %Quid de \@halignto = \tabu@halignto ?? <a id='L1354' name='L1354'></a> }% \tabu@bufferX <a id='L1355' name='L1355'></a> \tabu@bufferX <a id='L1356' name='L1356'></a> \ifcase\tabu@nested % print out (outer in mode 0) <a id='L1357' name='L1357'></a> \global\tabu@cnt \tabu@cnt <a id='L1358' name='L1358'></a> \tabu@evr{\tabu@verticaldynamicadjustment}% <a id='L1359' name='L1359'></a> \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty <a id='L1360' name='L1360'></a> \let\@finalstrut \tabu@finalstrut <a id='L1361' name='L1361'></a> \else % vertical measure of nested tabu <a id='L1362' name='L1362'></a> \tabu@evr{\tabu@verticalinit}% <a id='L1363' name='L1363'></a> \tabu@celllalign@def{\tabu@verticalmeasure}% <a id='L1364' name='L1364'></a> \def\tabu@cellralign{\tabu@verticalspacing}% <a id='L1365' name='L1365'></a> \fi <a id='L1366' name='L1366'></a> \tabu@clckpt \let\@halignto \tabu@halignto <a id='L1367' name='L1367'></a> \let\@halignto \@empty <a id='L1368' name='L1368'></a> \tabu@seteverycr <a id='L1369' name='L1369'></a> \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ <a id='L1370' name='L1370'></a> \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) <a id='L1371' name='L1371'></a> \fi\fi <a id='L1372' name='L1372'></a>}% \tabu@closetrialsgroup <a id='L1373' name='L1373'></a>\def\tabu@quickend {\expandafter \endgroup \expandafter <a id='L1374' name='L1374'></a> \tabu@target \the\tabu@target \tabu@quickrule <a id='L1375' name='L1375'></a> \let\endarray \relax \tabu@endenvir <a id='L1376' name='L1376'></a>}% \tabu@quickend <a id='L1377' name='L1377'></a>\def\tabu@endtrial {\relax % stops \count@ assignment ! <a id='L1378' name='L1378'></a> \ifcase \count@ \tabu@err % case 0 = impossible here <a id='L1379' name='L1379'></a> \or \tabu@err % case 1 = impossible here <a id='L1380' name='L1380'></a> \or \tabu@err % case 2 = impossible here <a id='L1381' name='L1381'></a> \or % case 3 = outer goes into mode 0 <a id='L1382' name='L1382'></a> \def\tabu@bufferX{\endgroup}\count@ \z@ <a id='L1383' name='L1383'></a> \else % case 4 = outer goes into mode 3 <a id='L1384' name='L1384'></a> \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) <a id='L1385' name='L1385'></a> \else \tabu@arith % or 2 (outer in mode 4) <a id='L1386' name='L1386'></a> \fi <a id='L1387' name='L1387'></a> \count@=% <a id='L1388' name='L1388'></a> \ifcase\tabu@nested \thr@@ % outer goes into mode 3 <a id='L1389' name='L1389'></a> \else\iftabu@measuring \tw@ % outer is in mode 4 <a id='L1390' name='L1390'></a> \else \@ne % outer is in mode 3 <a id='L1391' name='L1391'></a> \fi\fi <a id='L1392' name='L1392'></a> \edef\tabu@bufferX{\endgroup <a id='L1393' name='L1393'></a> \tabucolX \the\tabucolX <a id='L1394' name='L1394'></a> \tabu@target \the\tabu@target}% <a id='L1395' name='L1395'></a> \fi <a id='L1396' name='L1396'></a> \expandafter \tabu@bufferX \expandafter <a id='L1397' name='L1397'></a> \count@ \the\count@ \tabu@strategy <a id='L1398' name='L1398'></a>}% \tabu@endtrial <a id='L1399' name='L1399'></a>\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} <a id='L1400' name='L1400'></a>%% The algorithms: compute the widths / stop or go on --------------- <a id='L1401' name='L1401'></a>\def\tabu@arithnegcoef {% <a id='L1402' name='L1402'></a> \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs <a id='L1403' name='L1403'></a>}% \tabu@arithnegcoef <a id='L1404' name='L1404'></a>\def\tabu@arith@negcoef #1#2{% <a id='L1405' name='L1405'></a> \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition <a id='L1406' name='L1406'></a> \advance\@tempdima #2\tabucolX <a id='L1407' name='L1407'></a> \else <a id='L1408' name='L1408'></a> \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated <a id='L1409' name='L1409'></a> \advance\dimen@ -#2\p@ <a id='L1410' name='L1410'></a> \advance\@tempdima -#2\tabucolX <a id='L1411' name='L1411'></a> \else <a id='L1412' name='L1412'></a> \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised <a id='L1413' name='L1413'></a> \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised <a id='L1414' name='L1414'></a> \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) <a id='L1415' name='L1415'></a> \fi <a id='L1416' name='L1416'></a> \fi <a id='L1417' name='L1417'></a> \fi <a id='L1418' name='L1418'></a>}% \tabu@arith@negcoef <a id='L1419' name='L1419'></a>\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ <a id='L1420' name='L1420'></a> \ifdim \@tempdima=\z@ <a id='L1421' name='L1421'></a> \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% <a id='L1422' name='L1422'></a> \else <a id='L1423' name='L1423'></a> \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} <a id='L1424' name='L1424'></a> *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% <a id='L1425' name='L1425'></a> \fi <a id='L1426' name='L1426'></a>}% \tabu@givespace <a id='L1427' name='L1427'></a>\def\tabu@arith {\advance\tabu@cnt \@ne <a id='L1428' name='L1428'></a> \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi <a id='L1429' name='L1429'></a> \tabu@arithnegcoef <a id='L1430' name='L1430'></a> \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % <incompressible material> <a id='L1431' name='L1431'></a> \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax <a id='L1432' name='L1432'></a> \tabu@message{\tabu@message@arith}% <a id='L1433' name='L1433'></a> \ifdim \tabu@DELTA <\tabu@hfuzz <a id='L1434' name='L1434'></a> \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? <a id='L1435' name='L1435'></a> \let\tabu@ \tabu@givespace \tabu@Xcoefs <a id='L1436' name='L1436'></a> \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message <a id='L1437' name='L1437'></a> \else % already converged: nothing to do but nearly impossible... <a id='L1438' name='L1438'></a> \fi <a id='L1439' name='L1439'></a> \tabucolX \maxdimen <a id='L1440' name='L1440'></a> \tabu@measuringfalse <a id='L1441' name='L1441'></a> \else % need for narrower X columns <a id='L1442' name='L1442'></a> \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax <a id='L1443' name='L1443'></a> \tabu@measuringtrue <a id='L1444' name='L1444'></a> \@whilesw \iftabu@measuring\fi {% <a id='L1445' name='L1445'></a> \advance\tabu@cnt \@ne <a id='L1446' name='L1446'></a> \tabu@arithnegcoef <a id='L1447' name='L1447'></a> \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here <a id='L1448' name='L1448'></a> \tabu@message{\tabu@header <a id='L1449' name='L1449'></a> \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ <a id='L1450' name='L1450'></a> \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ <a id='L1451' name='L1451'></a> \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ <a id='L1452' name='L1452'></a> \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ <a id='L1453' name='L1453'></a> \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else <a id='L1454' name='L1454'></a> \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ <a id='L1455' name='L1455'></a> \fi}% <a id='L1456' name='L1456'></a> \ifdim -\tabu@DELTA<\tabu@hfuzz <a id='L1457' name='L1457'></a> \advance\@tempdima \@tempdimb % for message <a id='L1458' name='L1458'></a> \tabu@measuringfalse <a id='L1459' name='L1459'></a> \else <a id='L1460' name='L1460'></a> \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax <a id='L1461' name='L1461'></a> \fi <a id='L1462' name='L1462'></a> }% <a id='L1463' name='L1463'></a> \fi <a id='L1464' name='L1464'></a> \tabu@message{\tabu@message@reached}% <a id='L1465' name='L1465'></a> \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt <a id='L1466' name='L1466'></a> \tabucolX \the\tabucolX <a id='L1467' name='L1467'></a> \tabu@target \the\tabu@target}% <a id='L1468' name='L1468'></a>}% \tabu@arith <a id='L1469' name='L1469'></a>\def\tabu@spreadarith {% <a id='L1470' name='L1470'></a> \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs <a id='L1471' name='L1471'></a> \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% <a id='L1472' name='L1472'></a> \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax <a id='L1473' name='L1473'></a> \iftabu@measuring <a id='L1474' name='L1474'></a> \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax <a id='L1475' name='L1475'></a> \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% <a id='L1476' name='L1476'></a> \else <a id='L1477' name='L1477'></a> \tabu@message{\tabu@message@spreadarith}% <a id='L1478' name='L1478'></a> \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target <a id='L1479' name='L1479'></a> \tabu@message{(tabu) spread <a id='L1480' name='L1480'></a> \ifdim \@tempdimc>\tabu@target useless here: default target used% <a id='L1481' name='L1481'></a> \else too large: reduced to fit default target\fi.}% <a id='L1482' name='L1482'></a> \else <a id='L1483' name='L1483'></a> \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax <a id='L1484' name='L1484'></a> \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% <a id='L1485' name='L1485'></a> \fi <a id='L1486' name='L1486'></a> \begingroup \let\tabu@wddef \@gobbletwo <a id='L1487' name='L1487'></a> \@tempdimb \@tempdima <a id='L1488' name='L1488'></a> \tabucolX@init <a id='L1489' name='L1489'></a> \tabu@arithnegcoef <a id='L1490' name='L1490'></a> \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax <a id='L1491' name='L1491'></a> \expandafter\endgroup \expandafter\tabucolX \the\tabucolX <a id='L1492' name='L1492'></a> \tabu@arith <a id='L1493' name='L1493'></a> \fi <a id='L1494' name='L1494'></a>}% \tabu@spreadarith <a id='L1495' name='L1495'></a>\def\tabu@spread@arith #1#2{% <a id='L1496' name='L1496'></a> \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ <a id='L1497' name='L1497'></a> \else \advance\@tempdima \tabu@wd{#1}\relax <a id='L1498' name='L1498'></a> \fi <a id='L1499' name='L1499'></a>}% \tabu@spread@arith <a id='L1500' name='L1500'></a>%% Reporting in the .log file --------------------------------------- <a id='L1501' name='L1501'></a>\def\tabu@message@defaulttarget{% <a id='L1502' name='L1502'></a> \ifnum\tabu@nested=\z@^^J(tabu) Default target: <a id='L1503' name='L1503'></a> \ifx\tabudefaulttarget\linewidth \string\linewidth <a id='L1504' name='L1504'></a> \ifdim \tabu@thetarget=\linewidth \else <a id='L1505' name='L1505'></a> -\the\dimexpr\linewidth-\tabu@thetarget\fi = <a id='L1506' name='L1506'></a> \else\ifx\tabudefaulttarget\linegoal\string\linegoal= <a id='L1507' name='L1507'></a> \fi\fi <a id='L1508' name='L1508'></a> \else (tabu) Default target (nested): \fi <a id='L1509' name='L1509'></a> \the\tabu@target \on@line <a id='L1510' name='L1510'></a> \ifnum\tabu@nested=\z@ , page \the\c@page\fi} <a id='L1511' name='L1511'></a>\def\tabu@message@target {^^J(tabu) Target specified: <a id='L1512' name='L1512'></a> \the\tabu@target \on@line, page \the\c@page} <a id='L1513' name='L1513'></a>\def\tabu@message@arith {\tabu@header <a id='L1514' name='L1514'></a> \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ <a id='L1515' name='L1515'></a> \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ <a id='L1516' name='L1516'></a> \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ <a id='L1517' name='L1517'></a> \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ <a id='L1518' name='L1518'></a> \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else <a id='L1519' name='L1519'></a> \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ <a id='L1520' name='L1520'></a> \fi <a id='L1521' name='L1521'></a>}% \tabu@message@arith <a id='L1522' name='L1522'></a>\def\tabu@message@spreadarith {\tabu@spreadheader <a id='L1523' name='L1523'></a> \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ <a id='L1524' name='L1524'></a> \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ <a id='L1525' name='L1525'></a> \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ <a id='L1526' name='L1526'></a> \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ <a id='L1527' name='L1527'></a> \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target <a id='L1528' name='L1528'></a> \else \@tempdimc+\tabu@spreadtarget \fi <a id='L1529' name='L1529'></a> {}{}{}{}{}\@@} <a id='L1530' name='L1530'></a>\def\tabu@message@negcoef #1#2{ <a id='L1531' name='L1531'></a> \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: <a id='L1532' name='L1532'></a> \space width = \tabu@wd {#1} <a id='L1533' name='L1533'></a> \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname <a id='L1534' name='L1534'></a> \ifdim -\tabu@pt#2\tabucolX<\tabu@target <a id='L1535' name='L1535'></a> < \number-\rem@pt#2 X <a id='L1536' name='L1536'></a> = \the\dimexpr -\tabu@pt#2\tabucolX \relax <a id='L1537' name='L1537'></a> \else <a id='L1538' name='L1538'></a> <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} <a id='L1539' name='L1539'></a>\def\tabu@message@reached{\tabu@header <a id='L1540' name='L1540'></a> ******* Reached Target: <a id='L1541' name='L1541'></a> hfuzz = \tabu@hfuzz\on@line\space *******} <a id='L1542' name='L1542'></a>\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% <a id='L1543' name='L1543'></a> \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: <a id='L1544' name='L1544'></a> \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec <a id='L1545' name='L1545'></a> \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) <a id='L1546' name='L1546'></a> -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax <a id='L1547' name='L1547'></a> *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space <a id='L1548' name='L1548'></a> cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} <a id='L1549' name='L1549'></a>\def\tabu@message@verticalsp {% <a id='L1550' name='L1550'></a> \ifdim \@tempdima>\tabu@ht <a id='L1551' name='L1551'></a> \ifdim \@tempdimb>\tabu@dp <a id='L1552' name='L1552'></a> \expandafter\expandafter\expandafter\string\tabu@ht = <a id='L1553' name='L1553'></a> \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ <a id='L1554' name='L1554'></a> \expandafter\expandafter\expandafter\string\tabu@dp = <a id='L1555' name='L1555'></a> \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% <a id='L1556' name='L1556'></a> \else <a id='L1557' name='L1557'></a> \expandafter\expandafter\expandafter\string\tabu@ht = <a id='L1558' name='L1558'></a> \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% <a id='L1559' name='L1559'></a> \fi <a id='L1560' name='L1560'></a> \else\ifdim \@tempdimb>\tabu@dp <a id='L1561' name='L1561'></a> \tabu@spaces\tabu@spaces\tabu@spaces <a id='L1562' name='L1562'></a> \expandafter\expandafter\expandafter\string\tabu@dp = <a id='L1563' name='L1563'></a> \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi <a id='L1564' name='L1564'></a> \fi <a id='L1565' name='L1565'></a>}% \tabu@message@verticalsp <a id='L1566' name='L1566'></a>\edef\tabu@spaces{\@spaces} <a id='L1567' name='L1567'></a>\def\tabu@strippt{\expandafter\tabu@pt\the} <a id='L1568' name='L1568'></a>{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} <a id='L1569' name='L1569'></a>\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} <a id='L1570' name='L1570'></a>\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} <a id='L1571' name='L1571'></a>\def\do #1{% <a id='L1572' name='L1572'></a> \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% <a id='L1573' name='L1573'></a> \ifnum##1<10 #1 #1\else <a id='L1574' name='L1574'></a> \ifnum##1<100 #1 \else <a id='L1575' name='L1575'></a> \ifnum##1<\@m #1\fi\fi\fi <a id='L1576' name='L1576'></a> ##1.##2##3##4##5##6##7##8#1}% <a id='L1577' name='L1577'></a> \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% <a id='L1578' name='L1578'></a> \def\tabu@titles{\ifnum \tabu@nested=\z@ <a id='L1579' name='L1579'></a> (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target <a id='L1580' name='L1580'></a> #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% <a id='L1581' name='L1581'></a> \def\tabu@spreadheader{% <a id='L1582' name='L1582'></a> (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. <a id='L1583' name='L1583'></a> #1 New Target^^J% <a id='L1584' name='L1584'></a> (tabu) sprd} <a id='L1585' name='L1585'></a> \def\tabu@message@save {\begingroup <a id='L1586' name='L1586'></a> \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} <a id='L1587' name='L1587'></a> \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt <a id='L1588' name='L1588'></a> \dimexpr####1\p@{ }{ }}}% <a id='L1589' name='L1589'></a> \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% <a id='L1590' name='L1590'></a> \let\CT@arc@ \relax \let\@preamble \@gobble <a id='L1591' name='L1591'></a> \let\tabu@savedpream \@firstofone <a id='L1592' name='L1592'></a> \let\tabu@savedparams \@firstofone <a id='L1593' name='L1593'></a> \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% <a id='L1594' name='L1594'></a> \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% <a id='L1595' name='L1595'></a> \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% <a id='L1596' name='L1596'></a> \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% <a id='L1597' name='L1597'></a> \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% <a id='L1598' name='L1598'></a> \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% <a id='L1599' name='L1599'></a> \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% <a id='L1600' name='L1600'></a> \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% <a id='L1601' name='L1601'></a> \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% <a id='L1602' name='L1602'></a> \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% <a id='L1603' name='L1603'></a> \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% <a id='L1604' name='L1604'></a> \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% <a id='L1605' name='L1605'></a> \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% <a id='L1606' name='L1606'></a> \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% <a id='L1607' name='L1607'></a> \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% <a id='L1608' name='L1608'></a> \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% <a id='L1609' name='L1609'></a> \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% <a id='L1610' name='L1610'></a> \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% <a id='L1611' name='L1611'></a> \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% <a id='L1612' name='L1612'></a> \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% <a id='L1613' name='L1613'></a> \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo <a id='L1614' name='L1614'></a> \tabu@message{% <a id='L1615' name='L1615'></a> (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% <a id='L1616' name='L1616'></a> \tabu@usetabu \@nil^^J}% <a id='L1617' name='L1617'></a> \endgroup} <a id='L1618' name='L1618'></a>}\do{ } <a id='L1619' name='L1619'></a>%% Measuring the natural width (varwidth) - store the results ------- <a id='L1620' name='L1620'></a>\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop <a id='L1621' name='L1621'></a> \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% <a id='L1622' name='L1622'></a> \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? <a id='L1623' name='L1623'></a> \iftabu@spread \else % if spread -> measure <a id='L1624' name='L1624'></a> \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure <a id='L1625' name='L1625'></a> \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) <a id='L1626' name='L1626'></a> \tabu@measuringtrue % for the quick option... <a id='L1627' name='L1627'></a> \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi <a id='L1628' name='L1628'></a> \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target <a id='L1629' name='L1629'></a> \tabu@target=\tabu@temp\tabucolX \fi\fi <a id='L1630' name='L1630'></a> \setbox\tabu@box \hbox \bgroup <a id='L1631' name='L1631'></a> \begin{varwidth}\tabu@target <a id='L1632' name='L1632'></a> \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... <a id='L1633' name='L1633'></a> \narrowragged \arraybackslash \parfillskip \@flushglue <a id='L1634' name='L1634'></a> \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi <a id='L1635' name='L1635'></a> \bgroup \aftergroup\tabu@endpboxmeasure <a id='L1636' name='L1636'></a> \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi <a id='L1637' name='L1637'></a> \else \expandafter\@gobble <a id='L1638' name='L1638'></a> \tabu@startpboxquick{#1}% \@gobble \bgroup <a id='L1639' name='L1639'></a> \fi <a id='L1640' name='L1640'></a>}% \tabu@startpboxmeasure <a id='L1641' name='L1641'></a>\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty <a id='L1642' name='L1642'></a> \bgroup\color@begingroup} <a id='L1643' name='L1643'></a>\def\tabu@endpboxmeasure {% <a id='L1644' name='L1644'></a> \@finalstrut \@arstrutbox <a id='L1645' name='L1645'></a> \end{varwidth}\egroup % <got my \tabu@box> <a id='L1646' name='L1646'></a> \ifdim \tabu@temp\p@ <\z@ % neg coef <a id='L1647' name='L1647'></a> \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box <a id='L1648' name='L1648'></a> \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% <a id='L1649' name='L1649'></a> \tabu@debug{\tabu@message@endpboxmeasure}% <a id='L1650' name='L1650'></a> \fi <a id='L1651' name='L1651'></a> \else % spread coef>0 <a id='L1652' name='L1652'></a> \global\advance \tabu@naturalX \wd\tabu@box <a id='L1653' name='L1653'></a> \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax <a id='L1654' name='L1654'></a> \ifdim \tabu@naturalXmax <\tabu@naturalX <a id='L1655' name='L1655'></a> \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi <a id='L1656' name='L1656'></a> \ifdim \tabu@naturalXmin <\@tempdima <a id='L1657' name='L1657'></a> \xdef\tabu@naturalXmin {\the\@tempdima}\fi <a id='L1658' name='L1658'></a> \fi <a id='L1659' name='L1659'></a> \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target <a id='L1660' name='L1660'></a>}% \tabu@endpboxmeasure <a id='L1661' name='L1661'></a>\def\tabu@wddef #1{\expandafter\xdef <a id='L1662' name='L1662'></a> \csname tabu@\the\tabu@nested.W\number#1\endcsname} <a id='L1663' name='L1663'></a>\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} <a id='L1664' name='L1664'></a>\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd <a id='L1665' name='L1665'></a> \the\tabu@Xcol. X[\tabu@temp]: <a id='L1666' name='L1666'></a> target = \the\tabucolX \space <a id='L1667' name='L1667'></a> \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol <a id='L1668' name='L1668'></a> =\tabu@wd\tabu@Xcol <a id='L1669' name='L1669'></a>}% \tabu@message@endpboxmeasure <a id='L1670' name='L1670'></a>\def\tabu@startpboxquick {\bgroup <a id='L1671' name='L1671'></a> \let\@startpbox \tabu@startpboxORI % restore immediately <a id='L1672' name='L1672'></a> \let\tabu \tabu@quick % \begin is expanded before... <a id='L1673' name='L1673'></a> \expandafter\@gobble \@startpbox % gobbles \bgroup <a id='L1674' name='L1674'></a>}% \tabu@startpboxquick <a id='L1675' name='L1675'></a>\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi <a id='L1676' name='L1676'></a> \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick <a id='L1677' name='L1677'></a>}% \tabu@quick <a id='L1678' name='L1678'></a>\def\tabu@endquick {% <a id='L1679' name='L1679'></a> \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else <a id='L1680' name='L1680'></a> \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax <a id='L1681' name='L1681'></a> \endgroup <a id='L1682' name='L1682'></a> \else \let\endtabu \relax <a id='L1683' name='L1683'></a> \tabu@end@envir <a id='L1684' name='L1684'></a> \fi <a id='L1685' name='L1685'></a>}% \tabu@quick <a id='L1686' name='L1686'></a>\def\tabu@endtabu {\end{tabu}} <a id='L1687' name='L1687'></a>\def\tabu@endtabus {\end{tabu*}} <a id='L1688' name='L1688'></a>%% Measuring the heights and depths - store the results ------------- <a id='L1689' name='L1689'></a>\def\tabu@verticalmeasure{\everypar{}% <a id='L1690' name='L1690'></a> \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group <a id='L1691' name='L1691'></a> \setbox\tabu@box =\hbox\bgroup <a id='L1692' name='L1692'></a> \let\tabu@verticalspacing \tabu@verticalsp@lcr <a id='L1693' name='L1693'></a> \d@llarbegin % after \hbox ... <a id='L1694' name='L1694'></a> \else <a id='L1695' name='L1695'></a> \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop <a id='L1696' name='L1696'></a> \else\ifnum\currentgrouptype=12\vcenter <a id='L1697' name='L1697'></a> \else\vbox\fi\fi}% <a id='L1698' name='L1698'></a> \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup <a id='L1699' name='L1699'></a> \let\tabu@verticalspacing \tabu@verticalsp@pmb <a id='L1700' name='L1700'></a> \fi <a id='L1701' name='L1701'></a>}% \tabu@verticalmeasure <a id='L1702' name='L1702'></a>\def\tabu@verticalsp@lcr{% <a id='L1703' name='L1703'></a> \d@llarend \egroup % <got my \tabu@box> <a id='L1704' name='L1704'></a> \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep <a id='L1705' name='L1705'></a> \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax <a id='L1706' name='L1706'></a> \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi <a id='L1707' name='L1707'></a> \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi <a id='L1708' name='L1708'></a> \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi <a id='L1709' name='L1709'></a> \noindent\vrule height\@tempdima depth\@tempdimb <a id='L1710' name='L1710'></a>}% \tabu@verticalsp@lcr <a id='L1711' name='L1711'></a>\def\tabu@verticalsp@pmb{% inserts struts as needed <a id='L1712' name='L1712'></a> \par \expandafter\egroup <a id='L1713' name='L1713'></a> \expandafter$\expandafter <a id='L1714' name='L1714'></a> \egroup \expandafter <a id='L1715' name='L1715'></a> \@tempdimc \the\prevdepth <a id='L1716' name='L1716'></a> \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep <a id='L1717' name='L1717'></a> \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax <a id='L1718' name='L1718'></a> \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi <a id='L1719' name='L1719'></a> \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi <a id='L1720' name='L1720'></a> \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi <a id='L1721' name='L1721'></a> \let\@finalstrut \@gobble <a id='L1722' name='L1722'></a> \hrule height\@tempdima depth\@tempdimb width\hsize <a id='L1723' name='L1723'></a>%% \box\tabu@box <a id='L1724' name='L1724'></a>}% \tabu@verticalsp@pmb <a id='L1725' name='L1725'></a> <a id='L1726' name='L1726'></a>\def\tabu@verticalinit{% <a id='L1727' name='L1727'></a> \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! <a id='L1728' name='L1728'></a> \advance\c@taburow \@ne <a id='L1729' name='L1729'></a> \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% <a id='L1730' name='L1730'></a> \advance\c@taburow \m@ne <a id='L1731' name='L1731'></a>}% \tabu@verticalinit <a id='L1732' name='L1732'></a>\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} <a id='L1733' name='L1733'></a>\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} <a id='L1734' name='L1734'></a>\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} <a id='L1735' name='L1735'></a>\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} <a id='L1736' name='L1736'></a>\def\tabu@verticaldynamicadjustment {% <a id='L1737' name='L1737'></a> \advance\c@taburow \@ne <a id='L1738' name='L1738'></a> \extrarowheight \dimexpr\tabu@ht - \ht\strutbox <a id='L1739' name='L1739'></a> \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox <a id='L1740' name='L1740'></a> \let\arraystretch \@empty <a id='L1741' name='L1741'></a> \advance\c@taburow \m@ne <a id='L1742' name='L1742'></a>}% \tabu@verticaldynamicadjustment <a id='L1743' name='L1743'></a>\def\tabuphantomline{\crcr \noalign{% <a id='L1744' name='L1744'></a> {\globaldefs \@ne <a id='L1745' name='L1745'></a> \setbox\@arstrutbox \box\voidb@x <a id='L1746' name='L1746'></a> \let\tabu@@celllalign \tabu@celllalign <a id='L1747' name='L1747'></a> \let\tabu@@cellralign \tabu@cellralign <a id='L1748' name='L1748'></a> \let\tabu@@cellleft \tabu@cellleft <a id='L1749' name='L1749'></a> \let\tabu@@cellright \tabu@cellright <a id='L1750' name='L1750'></a> \let\tabu@@thevline \tabu@thevline <a id='L1751' name='L1751'></a> \let\tabu@celllalign \@empty <a id='L1752' name='L1752'></a> \let\tabu@cellralign \@empty <a id='L1753' name='L1753'></a> \let\tabu@cellright \@empty <a id='L1754' name='L1754'></a> \let\tabu@cellleft \@empty <a id='L1755' name='L1755'></a> \let\tabu@thevline \relax}% <a id='L1756' name='L1756'></a> \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% <a id='L1757' name='L1757'></a> \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr <a id='L1758' name='L1758'></a> \noalign{\tabu@rearstrut <a id='L1759' name='L1759'></a> {\globaldefs\@ne <a id='L1760' name='L1760'></a> \let\tabu@celllalign \tabu@@celllalign <a id='L1761' name='L1761'></a> \let\tabu@cellralign \tabu@@cellralign <a id='L1762' name='L1762'></a> \let\tabu@cellleft \tabu@@cellleft <a id='L1763' name='L1763'></a> \let\tabu@cellright \tabu@@cellright <a id='L1764' name='L1764'></a> \let\tabu@thevline \tabu@@thevline}}}% <a id='L1765' name='L1765'></a> \expandafter}\the\toks@ <a id='L1766' name='L1766'></a>}% \tabuphantomline <a id='L1767' name='L1767'></a>%% \firsthline and \lasthline corrections --------------------------- <a id='L1768' name='L1768'></a>\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} <a id='L1769' name='L1769'></a>\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} <a id='L1770' name='L1770'></a>\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} <a id='L1771' name='L1771'></a>\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} <a id='L1772' name='L1772'></a>\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) <a id='L1773' name='L1773'></a> \noalign{\ifnum0=`}\fi <a id='L1774' name='L1774'></a> {\CT@arc@\hrule height\arrayrulewidth}% <a id='L1775' name='L1775'></a> \futurelet \tabu@temp \tabu@xhline <a id='L1776' name='L1776'></a>}% \tabu@hline <a id='L1777' name='L1777'></a>\def\tabu@xhline{% <a id='L1778' name='L1778'></a> \ifx \tabu@temp \hline <a id='L1779' name='L1779'></a> {\ifx \CT@drsc@\relax \vskip <a id='L1780' name='L1780'></a> \else\ifx \CT@drsc@\@empty \vskip <a id='L1781' name='L1781'></a> \else \CT@drsc@\hrule height <a id='L1782' name='L1782'></a> \fi\fi <a id='L1783' name='L1783'></a> \doublerulesep}% <a id='L1784' name='L1784'></a> \fi <a id='L1785' name='L1785'></a> \ifnum0=`{\fi}% <a id='L1786' name='L1786'></a>}% \tabu@xhline <a id='L1787' name='L1787'></a>\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ <a id='L1788' name='L1788'></a> \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% <a id='L1789' name='L1789'></a> \tabu@hlineAZsurround <a id='L1790' name='L1790'></a>}% \tabu@hlineAZ <a id='L1791' name='L1791'></a>\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% <a id='L1792' name='L1792'></a> \extratabsurround #1\let\tabucline \tabucline@scan <a id='L1793' name='L1793'></a> \let\hline \tabu@hlinescan \let\firsthline \hline <a id='L1794' name='L1794'></a> \let\cline \tabu@clinescan \let\lasthline \hline <a id='L1795' name='L1795'></a> \expandafter \futurelet \expandafter \tabu@temp <a id='L1796' name='L1796'></a> \expandafter \tabu@nexthlineAZ \tabu@temp <a id='L1797' name='L1797'></a>}% \tabu@hlineAZsurround <a id='L1798' name='L1798'></a>\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} <a id='L1799' name='L1799'></a>\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} <a id='L1800' name='L1800'></a>\def\tabucline@scan{\@testopt \tabucline@sc@n {}} <a id='L1801' name='L1801'></a>\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} <a id='L1802' name='L1802'></a>\def\tabu@nexthlineAZ{% <a id='L1803' name='L1803'></a> \ifx \tabu@temp\hline \else <a id='L1804' name='L1804'></a> \ifx \tabu@temp\cline \else <a id='L1805' name='L1805'></a> \ifx \tabu@temp\tabucline \else <a id='L1806' name='L1806'></a> \tabu@hlinecorrection <a id='L1807' name='L1807'></a> \fi\fi\fi <a id='L1808' name='L1808'></a>}% \tabu@nexthlineAZ <a id='L1809' name='L1809'></a>\def\tabu@xhlineAZ #1{% <a id='L1810' name='L1810'></a> \toks@\expandafter{\the\toks@ #1}% <a id='L1811' name='L1811'></a> \@tempdimc \tabu@thick % The last line width <a id='L1812' name='L1812'></a> \ifcase\count@ \@tempdimb \tabu@thick % The first line width <a id='L1813' name='L1813'></a> \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax <a id='L1814' name='L1814'></a> \fi <a id='L1815' name='L1815'></a> \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ <a id='L1816' name='L1816'></a>}% \tabu@xhlineAZ <a id='L1817' name='L1817'></a>\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 <a id='L1818' name='L1818'></a> \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ <a id='L1819' name='L1819'></a> \edef\firsthline{% <local in \noalign> <a id='L1820' name='L1820'></a> \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule <a id='L1821' name='L1821'></a> height \the\dimexpr\@tempdima+\extratabsurround <a id='L1822' name='L1822'></a> depth \dp\@arstrutbox <a id='L1823' name='L1823'></a> width \tabustrutrule}\hss}\cr <a id='L1824' name='L1824'></a> \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb <a id='L1825' name='L1825'></a> +\dp\@arstrutbox \relax}% <a id='L1826' name='L1826'></a> \the\toks@ <a id='L1827' name='L1827'></a> }\ifnum0=`{\fi <a id='L1828' name='L1828'></a> \expandafter}\firsthline % we are then ! <a id='L1829' name='L1829'></a>}% \tabu@firsthlinecorrection <a id='L1830' name='L1830'></a>\def\tabu@lasthlinecorrection{% <a id='L1831' name='L1831'></a> \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc <a id='L1832' name='L1832'></a> \edef\lasthline{% <local in \noalign> <a id='L1833' name='L1833'></a> \the\toks@ <a id='L1834' name='L1834'></a> \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% <a id='L1835' name='L1835'></a> \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule <a id='L1836' name='L1836'></a> depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ <a id='L1837' name='L1837'></a> +\extratabsurround-\@tempdimc <a id='L1838' name='L1838'></a> height \z@ <a id='L1839' name='L1839'></a> width \tabustrutrule}\hss}\cr <a id='L1840' name='L1840'></a> }\ifnum0=`{\fi <a id='L1841' name='L1841'></a> \expandafter}\lasthline % we are then ! <a id='L1842' name='L1842'></a>}% \tabu@lasthlinecorrection <a id='L1843' name='L1843'></a>\def\tabu@LT@@hline{% <a id='L1844' name='L1844'></a> \ifx\LT@next\hline <a id='L1845' name='L1845'></a> \global\let\LT@next \@gobble <a id='L1846' name='L1846'></a> \ifx \CT@drsc@\relax <a id='L1847' name='L1847'></a> \gdef\CT@LT@sep{% <a id='L1848' name='L1848'></a> \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% <a id='L1849' name='L1849'></a> \else <a id='L1850' name='L1850'></a> \gdef\CT@LT@sep{% <a id='L1851' name='L1851'></a> \multispan\LT@cols{% <a id='L1852' name='L1852'></a> \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% <a id='L1853' name='L1853'></a> \fi <a id='L1854' name='L1854'></a> \else <a id='L1855' name='L1855'></a> \global\let\LT@next\empty <a id='L1856' name='L1856'></a> \gdef\CT@LT@sep{% <a id='L1857' name='L1857'></a> \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% <a id='L1858' name='L1858'></a> \fi <a id='L1859' name='L1859'></a> \ifnum0=`{\fi}% <a id='L1860' name='L1860'></a> \multispan\LT@cols <a id='L1861' name='L1861'></a> {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr <a id='L1862' name='L1862'></a> \CT@LT@sep <a id='L1863' name='L1863'></a> \multispan\LT@cols <a id='L1864' name='L1864'></a> {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr <a id='L1865' name='L1865'></a> \noalign{\penalty\@M}% <a id='L1866' name='L1866'></a> \LT@next <a id='L1867' name='L1867'></a>}% \tabu@LT@@hline <a id='L1868' name='L1868'></a>%% Horizontal lines : \tabucline ------------------------------------ <a id='L1869' name='L1869'></a>\let\tabu@start \@tempcnta <a id='L1870' name='L1870'></a>\let\tabu@stop \@tempcntb <a id='L1871' name='L1871'></a>\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} <a id='L1872' name='L1872'></a>\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% <a id='L1873' name='L1873'></a> \ifnum \tabu@stop<\z@ \toks@{}% <a id='L1874' name='L1874'></a> \else \tabu@clinearg{#1}\tabu@thestyle <a id='L1875' name='L1875'></a> \edef\tabucline{\toks@{% <a id='L1876' name='L1876'></a> \ifnum \tabu@start>\z@ \omit <a id='L1877' name='L1877'></a> \tabu@multispan\tabu@start {\span\omit}&\fi <a id='L1878' name='L1878'></a> \omit \tabu@multispan\tabu@stop {\span\omit}% <a id='L1879' name='L1879'></a> \tabu@thehline\cr <a id='L1880' name='L1880'></a> }}\tabucline <a id='L1881' name='L1881'></a> \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% <a id='L1882' name='L1882'></a> \fi <a id='L1883' name='L1883'></a> \futurelet \tabu@temp \tabu@xcline <a id='L1884' name='L1884'></a>}% \tabu@cline <a id='L1885' name='L1885'></a>\def\tabu@clinearg #1{% <a id='L1886' name='L1886'></a> \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ <a id='L1887' name='L1887'></a> \else \@defaultunits \expandafter\let\expandafter\@tempa <a id='L1888' name='L1888'></a> \romannumeral-`\0#1\relax \@nnil <a id='L1889' name='L1889'></a> \ifx \hbox\@tempa \tabu@clinebox{#1}% <a id='L1890' name='L1890'></a> \else\ifx \box\@tempa \tabu@clinebox{#1}% <a id='L1891' name='L1891'></a> \else\ifx \vbox\@tempa \tabu@clinebox{#1}% <a id='L1892' name='L1892'></a> \else\ifx \vtop\@tempa \tabu@clinebox{#1}% <a id='L1893' name='L1893'></a> \else\ifx \copy\@tempa \tabu@clinebox{#1}% <a id='L1894' name='L1894'></a> \else\ifx \leaders\@tempa \tabu@clineleads{#1}% <a id='L1895' name='L1895'></a> \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% <a id='L1896' name='L1896'></a> \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% <a id='L1897' name='L1897'></a> \else\tabu@getline {#1}% <a id='L1898' name='L1898'></a> \fi\fi\fi\fi\fi\fi\fi\fi <a id='L1899' name='L1899'></a> \fi <a id='L1900' name='L1900'></a>}% \tabu@clinearg <a id='L1901' name='L1901'></a>\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} <a id='L1902' name='L1902'></a>\def\tabu@clineleads #1{% <a id='L1903' name='L1903'></a> \let\tabu@thestyle \relax \let\tabu@leaders \@undefined <a id='L1904' name='L1904'></a> \gdef\tabu@thehrule{#1}} <a id='L1905' name='L1905'></a>\def\tabu@thehline{\begingroup <a id='L1906' name='L1906'></a> \ifdefined\tabu@leaders <a id='L1907' name='L1907'></a> \noexpand\tabu@thehleaders <a id='L1908' name='L1908'></a> \else \noexpand\tabu@thehrule <a id='L1909' name='L1909'></a> \fi \endgroup <a id='L1910' name='L1910'></a>}% \tabu@thehline <a id='L1911' name='L1911'></a>\def\tabu@xcline{% <a id='L1912' name='L1912'></a> \ifx \tabu@temp\tabucline <a id='L1913' name='L1913'></a> \toks@\expandafter{\the\toks@ \noalign <a id='L1914' name='L1914'></a> {\ifx\CT@drsc@\relax \vskip <a id='L1915' name='L1915'></a> \else \CT@drsc@\hrule height <a id='L1916' name='L1916'></a> \fi <a id='L1917' name='L1917'></a> \doublerulesep}}% <a id='L1918' name='L1918'></a> \fi <a id='L1919' name='L1919'></a> \tabu@docline <a id='L1920' name='L1920'></a>}% \tabu@xcline <a id='L1921' name='L1921'></a>\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} <a id='L1922' name='L1922'></a>\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% <a id='L1923' name='L1923'></a> \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} <a id='L1924' name='L1924'></a>\def\tabu@multispan #1#2{% <a id='L1925' name='L1925'></a> \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan <a id='L1926' name='L1926'></a> \else \expandafter\@gobbletwo <a id='L1927' name='L1927'></a> \fi {#1-1}{#2}% <a id='L1928' name='L1928'></a>}% \tabu@multispan <a id='L1929' name='L1929'></a>\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} <a id='L1930' name='L1930'></a>\def\tabu@start@stop #1-#2\@nnil{% <a id='L1931' name='L1931'></a> \@defaultunits \tabu@start\number 0#1\relax \@nnil <a id='L1932' name='L1932'></a> \@defaultunits \tabu@stop \number 0#2\relax \@nnil <a id='L1933' name='L1933'></a> \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne <a id='L1934' name='L1934'></a> \else\ifnum \tabu@stop=\z@ \tabu@nbcols <a id='L1935' name='L1935'></a> \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols <a id='L1936' name='L1936'></a> \else \tabu@stop <a id='L1937' name='L1937'></a> \fi\fi\fi <a id='L1938' name='L1938'></a> \advance\tabu@start \m@ne <a id='L1939' name='L1939'></a> \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi <a id='L1940' name='L1940'></a>}% \tabu@start@stop <a id='L1941' name='L1941'></a>%% Numbers: siunitx S columns (and \tabudecimal) ------------------- <a id='L1942' name='L1942'></a>\def\tabu@tabudecimal #1{% <a id='L1943' name='L1943'></a> \def\tabu@decimal{#1}\@temptokena{}% <a id='L1944' name='L1944'></a> \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces <a id='L1945' name='L1945'></a> \tabu@scandecimal <a id='L1946' name='L1946'></a>}% \tabu@tabudecimal <a id='L1947' name='L1947'></a>\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} <a id='L1948' name='L1948'></a>\def\tabu@skipdecimal#1{#1\tabu@scandecimal} <a id='L1949' name='L1949'></a>\def\tabu@getdecimal@ignorespaces{% <a id='L1950' name='L1950'></a> \ifcase 0\ifx\tabu@temp\ignorespaces\else <a id='L1951' name='L1951'></a> \ifx\tabu@temp\@sptoken1\else <a id='L1952' name='L1952'></a> 2\fi\fi\relax <a id='L1953' name='L1953'></a> \let\tabu@getdecimal@ \tabu@getdecimal <a id='L1954' name='L1954'></a> \expandafter\tabu@skipdecimal <a id='L1955' name='L1955'></a> \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal <a id='L1956' name='L1956'></a> \else \expandafter\tabu@skipdecimal <a id='L1957' name='L1957'></a> \fi <a id='L1958' name='L1958'></a>}% \tabu@getdecimal@ignorespaces <a id='L1959' name='L1959'></a>\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% <a id='L1960' name='L1960'></a> \tabu@scandecimal} <a id='L1961' name='L1961'></a>\def\do#1{% <a id='L1962' name='L1962'></a> \def\tabu@get@decimalspace#1{% <a id='L1963' name='L1963'></a> \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% <a id='L1964' name='L1964'></a>}\do{ } <a id='L1965' name='L1965'></a>\let\tabu@@tabudecimal \tabu@tabudecimal <a id='L1966' name='L1966'></a>\def\tabu@getdecimal{% <a id='L1967' name='L1967'></a> \ifcase 0\ifx 0\tabu@temp\else <a id='L1968' name='L1968'></a> \ifx 1\tabu@temp\else <a id='L1969' name='L1969'></a> \ifx 2\tabu@temp\else <a id='L1970' name='L1970'></a> \ifx 3\tabu@temp\else <a id='L1971' name='L1971'></a> \ifx 4\tabu@temp\else <a id='L1972' name='L1972'></a> \ifx 5\tabu@temp\else <a id='L1973' name='L1973'></a> \ifx 6\tabu@temp\else <a id='L1974' name='L1974'></a> \ifx 7\tabu@temp\else <a id='L1975' name='L1975'></a> \ifx 8\tabu@temp\else <a id='L1976' name='L1976'></a> \ifx 9\tabu@temp\else <a id='L1977' name='L1977'></a> \ifx .\tabu@temp\else <a id='L1978' name='L1978'></a> \ifx ,\tabu@temp\else <a id='L1979' name='L1979'></a> \ifx -\tabu@temp\else <a id='L1980' name='L1980'></a> \ifx +\tabu@temp\else <a id='L1981' name='L1981'></a> \ifx e\tabu@temp\else <a id='L1982' name='L1982'></a> \ifx E\tabu@temp\else <a id='L1983' name='L1983'></a> \ifx\tabu@cellleft\tabu@temp1\else <a id='L1984' name='L1984'></a> \ifx\ignorespaces\tabu@temp1\else <a id='L1985' name='L1985'></a> \ifx\@sptoken\tabu@temp2\else <a id='L1986' name='L1986'></a> 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax <a id='L1987' name='L1987'></a> \expandafter\tabu@get@decimal <a id='L1988' name='L1988'></a> \or \expandafter\tabu@skipdecimal <a id='L1989' name='L1989'></a> \or \expandafter\tabu@get@decimalspace <a id='L1990' name='L1990'></a> \else\expandafter\tabu@printdecimal <a id='L1991' name='L1991'></a> \fi <a id='L1992' name='L1992'></a>}% \tabu@getdecimal <a id='L1993' name='L1993'></a>\def\tabu@printdecimal{% <a id='L1994' name='L1994'></a> \edef\tabu@temp{\the\@temptokena}% <a id='L1995' name='L1995'></a> \ifx\tabu@temp\@empty\else <a id='L1996' name='L1996'></a> \ifx\tabu@temp\space\else <a id='L1997' name='L1997'></a> \expandafter\tabu@decimal\expandafter{\the\@temptokena}% <a id='L1998' name='L1998'></a> \fi\fi <a id='L1999' name='L1999'></a>}% \tabu@printdecimal <a id='L2000' name='L2000'></a>%% Verbatim inside X columns ---------------------------------------- <a id='L2001' name='L2001'></a>\def\tabu@verbatim{% <a id='L2002' name='L2002'></a> \let\verb \tabu@verb <a id='L2003' name='L2003'></a> \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd <a id='L2004' name='L2004'></a>}% \tabu@verbatim <a id='L2005' name='L2005'></a>\let\tabu@ltx@verb \verb <a id='L2006' name='L2006'></a>\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} <a id='L2007' name='L2007'></a>\def\tabu@fancyvrb {% <a id='L2008' name='L2008'></a> \def\tabu@FV@DefineCheckEnd ##1{% <a id='L2009' name='L2009'></a> \def\tabu@FV@DefineCheckEnd{% <a id='L2010' name='L2010'></a> ##1% <original definition (if fancyvrb is loaded)> <a id='L2011' name='L2011'></a> \let\FV@CheckEnd \tabu@FV@CheckEnd <a id='L2012' name='L2012'></a> \let\FV@@CheckEnd \tabu@FV@@CheckEnd <a id='L2013' name='L2013'></a> \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd <a id='L2014' name='L2014'></a> \edef\FV@EndScanning{% <a id='L2015' name='L2015'></a> \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% <a id='L2016' name='L2016'></a> \global\let\noexpand\FV@EnvironName\relax <a id='L2017' name='L2017'></a> \noexpand\next}% <a id='L2018' name='L2018'></a> \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% <a id='L2019' name='L2019'></a> }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} <a id='L2020' name='L2020'></a>}% \tabu@fancyvrb <a id='L2021' name='L2021'></a>\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} <a id='L2022' name='L2022'></a>\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} <a id='L2023' name='L2023'></a>\begingroup <a id='L2024' name='L2024'></a>\catcode`\[1 \catcode`\]2 <a id='L2025' name='L2025'></a>\@makeother\{ \@makeother\} <a id='L2026' name='L2026'></a> \edef\x[\endgroup <a id='L2027' name='L2027'></a> \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% <a id='L2028' name='L2028'></a> ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} <a id='L2029' name='L2029'></a>\def\tabu@FV@ListProcessLine #1{% <a id='L2030' name='L2030'></a> \hbox {%to \hsize{% <a id='L2031' name='L2031'></a> \kern\leftmargin <a id='L2032' name='L2032'></a> \hbox {%to \linewidth{% <a id='L2033' name='L2033'></a> \FV@LeftListNumber <a id='L2034' name='L2034'></a> \FV@LeftListFrame <a id='L2035' name='L2035'></a> \FancyVerbFormatLine{#1}\hss <a id='L2036' name='L2036'></a>%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) <a id='L2037' name='L2037'></a>%% \FV@RightListFrame}% <a id='L2038' name='L2038'></a> \FV@RightListFrame <a id='L2039' name='L2039'></a> \FV@RightListNumber}% <a id='L2040' name='L2040'></a>%% DG/SR modification end <a id='L2041' name='L2041'></a> \hss}} <a id='L2042' name='L2042'></a>%% \savetabu -------------------------------------------------------- <a id='L2043' name='L2043'></a>\newcommand*\savetabu[1]{\noalign{% <a id='L2044' name='L2044'></a> \tabu@sanitizearg{#1}\tabu@temp <a id='L2045' name='L2045'></a> \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else <a id='L2046' name='L2046'></a> \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% <a id='L2047' name='L2047'></a> \ifdefined\tabu@restored \expandafter\let <a id='L2048' name='L2048'></a> \csname tabu@saved@\tabu@temp \endcsname \tabu@restored <a id='L2049' name='L2049'></a> \else {\tabu@save}% <a id='L2050' name='L2050'></a> \fi <a id='L2051' name='L2051'></a> \fi}% <a id='L2052' name='L2052'></a>}% \savetabu <a id='L2053' name='L2053'></a>\def\tabu@save {% <a id='L2054' name='L2054'></a> \toks0\expandafter{\tabu@saved@}% <a id='L2055' name='L2055'></a> \iftabu@negcoef <a id='L2056' name='L2056'></a> \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% <a id='L2057' name='L2057'></a> \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi <a id='L2058' name='L2058'></a> \toks1\expandafter{\tabu@savedpream}% <a id='L2059' name='L2059'></a> \toks2\expandafter{\tabu@savedpreamble}% <a id='L2060' name='L2060'></a> \let\@preamble \relax <a id='L2061' name='L2061'></a> \let\tabu@savedpream \relax \let\tabu@savedparams \relax <a id='L2062' name='L2062'></a> \edef\tabu@preamble{% <a id='L2063' name='L2063'></a> \def\noexpand\tabu@aligndefault{\tabu@align}% <a id='L2064' name='L2064'></a> \def\tabu@savedparams {\noexpand\the\toks0}% <a id='L2065' name='L2065'></a> \def\tabu@savedpream {\noexpand\the\toks1}}% <a id='L2066' name='L2066'></a> \edef\tabu@usetabu{% <a id='L2067' name='L2067'></a> \def\@preamble {\noexpand\the\toks2}% <a id='L2068' name='L2068'></a> \tabu@target \the\tabu@target \relax <a id='L2069' name='L2069'></a> \tabucolX \the\tabucolX \relax <a id='L2070' name='L2070'></a> \tabu@nbcols \the\tabu@nbcols \relax <a id='L2071' name='L2071'></a> \def\noexpand\tabu@aligndefault{\tabu@align}% <a id='L2072' name='L2072'></a> \def\tabu@savedparams {\noexpand\the\toks0}% <a id='L2073' name='L2073'></a> \def\tabu@savedpream {\noexpand\the\toks1}}% <a id='L2074' name='L2074'></a> \let\tabu@aligndefault \relax \let\@sharp \relax <a id='L2075' name='L2075'></a> \edef\@tempa{\noexpand\tabu@s@ved <a id='L2076' name='L2076'></a> {\tabu@usetabu} <a id='L2077' name='L2077'></a> {\tabu@preamble} <a id='L2078' name='L2078'></a> {\the\toks1}}\@tempa <a id='L2079' name='L2079'></a> \tabu@message@save <a id='L2080' name='L2080'></a>}% \tabu@save <a id='L2081' name='L2081'></a>\long\def\tabu@s@ved #1#2#3{% <a id='L2082' name='L2082'></a> \def\tabu@usetabu{#1}% <for \tabu@message@save> <a id='L2083' name='L2083'></a> \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% <a id='L2084' name='L2084'></a> \ifodd ##1% \usetabu <a id='L2085' name='L2085'></a> \tabu@measuringfalse \tabu@spreadfalse % Just in case... <a id='L2086' name='L2086'></a> \gdef\tabu@usetabu {% <a id='L2087' name='L2087'></a> \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi <a id='L2088' name='L2088'></a> \global\let\tabu@usetabu \@undefined <a id='L2089' name='L2089'></a> \def\@halignto {to\tabu@target}% <a id='L2090' name='L2090'></a> #1% <a id='L2091' name='L2091'></a> \ifx \tabu@align\tabu@aligndefault@text <a id='L2092' name='L2092'></a> \ifnum \tabu@nested=\z@ <a id='L2093' name='L2093'></a> \let\tabu@align \tabu@aligndefault \fi\fi}% <a id='L2094' name='L2094'></a> \else % \preamble <a id='L2095' name='L2095'></a> \gdef\tabu@preamble {% <a id='L2096' name='L2096'></a> \global\let\tabu@preamble \@undefined <a id='L2097' name='L2097'></a> #2% <a id='L2098' name='L2098'></a> \ifx \tabu@align\tabu@aligndefault@text <a id='L2099' name='L2099'></a> \ifnum \tabu@nested=\z@ <a id='L2100' name='L2100'></a> \let\tabu@align \tabu@aligndefault \fi\fi}% <a id='L2101' name='L2101'></a> \fi <a id='L2102' name='L2102'></a> #3}% <a id='L2103' name='L2103'></a>}% \tabu@s@ved <a id='L2104' name='L2104'></a>\def\tabu@aligndefault@text {\tabu@aligndefault}% <a id='L2105' name='L2105'></a>\def\tabu@warn@usetabu {\PackageWarning{tabu} <a id='L2106' name='L2106'></a> {Specifying a target with \string\usetabu\space is useless <a id='L2107' name='L2107'></a> \MessageBreak The target cannot be changed!}} <a id='L2108' name='L2108'></a>\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} <a id='L2109' name='L2109'></a>\def\tabu@savewarn#1#2{\PackageInfo{tabu} <a id='L2110' name='L2110'></a> {User-name `#1' already used for \string\savetabu <a id='L2111' name='L2111'></a> \MessageBreak #2}}% <a id='L2112' name='L2112'></a>\def\tabu@saveerr#1{\PackageError{tabu} <a id='L2113' name='L2113'></a> {User-name `#1' is unknown for \string\usetabu <a id='L2114' name='L2114'></a> \MessageBreak I cannot restore an unknown preamble!}\@ehd} <a id='L2115' name='L2115'></a>%% \rowfont --------------------------------------------------------- <a id='L2116' name='L2116'></a>\newskip \tabu@cellskip <a id='L2117' name='L2117'></a>\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi <a id='L2118' name='L2118'></a> {\ifnum0=`}\fi \tabu@row@font} <a id='L2119' name='L2119'></a>\newcommand*\tabu@row@font[2][]{% <a id='L2120' name='L2120'></a> \ifnum7=\currentgrouptype <a id='L2121' name='L2121'></a> \global\let\tabu@@cellleft \tabu@cellleft <a id='L2122' name='L2122'></a> \global\let\tabu@@cellright \tabu@cellright <a id='L2123' name='L2123'></a> \global\let\tabu@@celllalign \tabu@celllalign <a id='L2124' name='L2124'></a> \global\let\tabu@@cellralign \tabu@cellralign <a id='L2125' name='L2125'></a> \global\let\tabu@@rowfontreset\tabu@rowfontreset <a id='L2126' name='L2126'></a> \fi <a id='L2127' name='L2127'></a> \global\let\tabu@rowfontreset \tabu@rowfont@reset <a id='L2128' name='L2128'></a> \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% <a id='L2129' name='L2129'></a> \ifcsname tabu@cell@#1\endcsname % row alignment <a id='L2130' name='L2130'></a> \csname tabu@cell@#1\endcsname \fi <a id='L2131' name='L2131'></a> \ifnum0=`{\fi}% end of group / noalign group <a id='L2132' name='L2132'></a>}% \rowfont <a id='L2133' name='L2133'></a>\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% <a id='L2134' name='L2134'></a>\def\tabu@rowfont@reset{% <a id='L2135' name='L2135'></a> \global\let\tabu@rowfontreset \tabu@@rowfontreset <a id='L2136' name='L2136'></a> \global\let\tabu@cellleft \tabu@@cellleft <a id='L2137' name='L2137'></a> \global\let\tabu@cellright \tabu@@cellright <a id='L2138' name='L2138'></a> \global\let\tabu@cellfont \@empty <a id='L2139' name='L2139'></a> \global\let\tabu@celllalign \tabu@@celllalign <a id='L2140' name='L2140'></a> \global\let\tabu@cellralign \tabu@@cellralign <a id='L2141' name='L2141'></a>}% \tabu@@rowfontreset <a id='L2142' name='L2142'></a>\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl <a id='L2143' name='L2143'></a>%% \tabu@prepnext@tok ----------------------------------------------- <a id='L2144' name='L2144'></a>\newif \iftabu@cellright <a id='L2145' name='L2145'></a>\def\tabu@prepnext@tok{% <a id='L2146' name='L2146'></a> \ifnum \count@<\z@ % <first initialisation> <a id='L2147' name='L2147'></a> \@tempcnta \@M % <not initialized by array.sty> <a id='L2148' name='L2148'></a> \tabu@nbcols\z@ <a id='L2149' name='L2149'></a> \let\tabu@fornoopORI \@fornoop <a id='L2150' name='L2150'></a> \tabu@cellrightfalse <a id='L2151' name='L2151'></a> \else <a id='L2152' name='L2152'></a> \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left <a id='L2153' name='L2153'></a> \advance \tabu@nbcols \@ne <a id='L2154' name='L2154'></a> \iftabu@cellright % before-previous token is right and is finished <a id='L2155' name='L2155'></a> \tabu@cellrightfalse % <only once> <a id='L2156' name='L2156'></a> \tabu@righttok <a id='L2157' name='L2157'></a> \fi <a id='L2158' name='L2158'></a> \tabu@lefttok <a id='L2159' name='L2159'></a> \or % (case 1) previous token is right <a id='L2160' name='L2160'></a> \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop <a id='L2161' name='L2161'></a> \else % special column: do not change the token <a id='L2162' name='L2162'></a> \iftabu@cellright % before-previous token is right <a id='L2163' name='L2163'></a> \tabu@cellrightfalse <a id='L2164' name='L2164'></a> \tabu@righttok <a id='L2165' name='L2165'></a> \fi <a id='L2166' name='L2166'></a> \fi % \ifcase <a id='L2167' name='L2167'></a> \fi <a id='L2168' name='L2168'></a> \tabu@prepnext@tokORI <a id='L2169' name='L2169'></a>}% \tabu@prepnext@tok <a id='L2170' name='L2170'></a>\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} <a id='L2171' name='L2171'></a>\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% <a id='L2172' name='L2172'></a> \ifx \in@#2\else <a id='L2173' name='L2173'></a> \let\@fornoop \tabu@fornoopORI <a id='L2174' name='L2174'></a> \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% <a id='L2175' name='L2175'></a> \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% <a id='L2176' name='L2176'></a> \expandafter\prepnext@tok <a id='L2177' name='L2177'></a> \fi <a id='L2178' name='L2178'></a>}% \tabu@lastnoop <a id='L2179' name='L2179'></a>\def\tabu@righttok{% <a id='L2180' name='L2180'></a> \advance \count@ \m@ne <a id='L2181' name='L2181'></a> \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% <a id='L2182' name='L2182'></a> \advance \count@ \@ne <a id='L2183' name='L2183'></a>}% \tabu@righttok <a id='L2184' name='L2184'></a>\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign <a id='L2185' name='L2185'></a> \the\toks\count@ \tabu@cellleft}% after because of $ <a id='L2186' name='L2186'></a>}% \tabu@lefttok <a id='L2187' name='L2187'></a>%% Neutralisation of glues ------------------------------------------ <a id='L2188' name='L2188'></a>\let\tabu@cellleft \@empty <a id='L2189' name='L2189'></a>\let\tabu@cellright \@empty <a id='L2190' name='L2190'></a>\tabu@celllalign@def{\tabu@cellleft}% <a id='L2191' name='L2191'></a>\let\tabu@cellralign \@empty <a id='L2192' name='L2192'></a>\def\tabu@cell@align #1#2#3{% <a id='L2193' name='L2193'></a> \let\tabu@maybesiunitx \toks@ \tabu@celllalign <a id='L2194' name='L2194'></a> \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% <a id='L2195' name='L2195'></a> \toks@\expandafter{\tabu@cellralign #2}% <a id='L2196' name='L2196'></a> \xdef\tabu@cellralign{\the\toks@}% <a id='L2197' name='L2197'></a> \toks@\expandafter{\tabu@cellleft #3}% <a id='L2198' name='L2198'></a> \xdef\tabu@cellleft{\the\toks@}% <a id='L2199' name='L2199'></a>}% \tabu@cell@align <a id='L2200' name='L2200'></a>\def\tabu@cell@l{% force alignment to left <a id='L2201' name='L2201'></a> \tabu@cell@align <a id='L2202' name='L2202'></a> {\tabu@removehfil \raggedright \tabu@cellleft}% left <a id='L2203' name='L2203'></a> {\tabu@flush1\tabu@ignorehfil}% right <a id='L2204' name='L2204'></a> \raggedright <a id='L2205' name='L2205'></a>}% \tabu@cell@l <a id='L2206' name='L2206'></a>\def\tabu@cell@c{% force alignment to center <a id='L2207' name='L2207'></a> \tabu@cell@align <a id='L2208' name='L2208'></a> {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} <a id='L2209' name='L2209'></a> {\tabu@flush{.5}\tabu@ignorehfil} <a id='L2210' name='L2210'></a> \centering <a id='L2211' name='L2211'></a>}% \tabu@cell@c <a id='L2212' name='L2212'></a>\def\tabu@cell@r{% force alignment to right <a id='L2213' name='L2213'></a> \tabu@cell@align <a id='L2214' name='L2214'></a> {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} <a id='L2215' name='L2215'></a> \tabu@ignorehfil <a id='L2216' name='L2216'></a> \raggedleft <a id='L2217' name='L2217'></a>}% \tabu@cell@r <a id='L2218' name='L2218'></a>\def\tabu@cell@j{% force justification (for p, m, b columns) <a id='L2219' name='L2219'></a> \tabu@cell@align <a id='L2220' name='L2220'></a> {\tabu@justify\tabu@cellleft} <a id='L2221' name='L2221'></a> {} <a id='L2222' name='L2222'></a> \tabu@justify <a id='L2223' name='L2223'></a>}% \tabu@cell@j <a id='L2224' name='L2224'></a>\def\tabu@justify{% <a id='L2225' name='L2225'></a> \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip <a id='L2226' name='L2226'></a> \parfillskip\@flushglue <a id='L2227' name='L2227'></a>}% \tabu@justify <a id='L2228' name='L2228'></a>%% ragged2e settings <a id='L2229' name='L2229'></a>\def\tabu@cell@L{% force alignment to left (ragged2e) <a id='L2230' name='L2230'></a> \tabu@cell@align <a id='L2231' name='L2231'></a> {\tabu@removehfil \RaggedRight \tabu@cellleft} <a id='L2232' name='L2232'></a> {\tabu@flush 1\tabu@ignorehfil} <a id='L2233' name='L2233'></a> \RaggedRight <a id='L2234' name='L2234'></a>}% \tabu@cell@L <a id='L2235' name='L2235'></a>\def\tabu@cell@C{% force alignment to center (ragged2e) <a id='L2236' name='L2236'></a> \tabu@cell@align <a id='L2237' name='L2237'></a> {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} <a id='L2238' name='L2238'></a> {\tabu@flush{.5}\tabu@ignorehfil} <a id='L2239' name='L2239'></a> \Centering <a id='L2240' name='L2240'></a>}% \tabu@cell@C <a id='L2241' name='L2241'></a>\def\tabu@cell@R{% force alignment to right (ragged2e) <a id='L2242' name='L2242'></a> \tabu@cell@align <a id='L2243' name='L2243'></a> {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} <a id='L2244' name='L2244'></a> \tabu@ignorehfil <a id='L2245' name='L2245'></a> \RaggedLeft <a id='L2246' name='L2246'></a>}% \tabu@cell@R <a id='L2247' name='L2247'></a>\def\tabu@cell@J{% force justification (ragged2e) <a id='L2248' name='L2248'></a> \tabu@cell@align <a id='L2249' name='L2249'></a> {\justifying \tabu@cellleft} <a id='L2250' name='L2250'></a> {} <a id='L2251' name='L2251'></a> \justifying <a id='L2252' name='L2252'></a>}% \tabu@cell@J <a id='L2253' name='L2253'></a>\def\tabu@flush#1{% <a id='L2254' name='L2254'></a> \iftabu@colortbl % colortbl uses \hfill rather than \hfil <a id='L2255' name='L2255'></a> \hskip \ifnum13<\currentgrouptype \stretch{#1}% <a id='L2256' name='L2256'></a> \else \ifdim#1pt<\p@ \tabu@cellskip <a id='L2257' name='L2257'></a> \else \stretch{#1} <a id='L2258' name='L2258'></a> \fi\fi \relax <a id='L2259' name='L2259'></a> \else % array.sty <a id='L2260' name='L2260'></a> \ifnum 13<\currentgrouptype <a id='L2261' name='L2261'></a> \hfil \hskip1sp \relax \fi <a id='L2262' name='L2262'></a> \fi <a id='L2263' name='L2263'></a>}% \tabu@flush <a id='L2264' name='L2264'></a>\let\tabu@hfil \hfil <a id='L2265' name='L2265'></a>\let\tabu@hfill \hfill <a id='L2266' name='L2266'></a>\let\tabu@hskip \hskip <a id='L2267' name='L2267'></a>\def\tabu@removehfil{% <a id='L2268' name='L2268'></a> \iftabu@colortbl <a id='L2269' name='L2269'></a> \unkern \tabu@cellskip =\lastskip <a id='L2270' name='L2270'></a> \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip <a id='L2271' name='L2271'></a> \else \tabu@cellskip \z@skip <a id='L2272' name='L2272'></a> \fi <a id='L2273' name='L2273'></a> \else <a id='L2274' name='L2274'></a> \ifdim\lastskip=1sp\unskip\fi <a id='L2275' name='L2275'></a> \ifnum\gluestretchorder\lastskip =\@ne <a id='L2276' name='L2276'></a> \hfilneg % \hfilneg for array.sty but not for colortbl... <a id='L2277' name='L2277'></a> \fi <a id='L2278' name='L2278'></a> \fi <a id='L2279' name='L2279'></a>}% \tabu@removehfil <a id='L2280' name='L2280'></a>\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} <a id='L2281' name='L2281'></a>\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil <a id='L2282' name='L2282'></a> \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group <a id='L2283' name='L2283'></a>}% \tabu@nohfil <a id='L2284' name='L2284'></a>\def\tabu@colortblalignments {% if colortbl <a id='L2285' name='L2285'></a> \def\tabu@nohfil{% <a id='L2286' name='L2286'></a> \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group <a id='L2287' name='L2287'></a> \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... <a id='L2288' name='L2288'></a> \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local <a id='L2289' name='L2289'></a>}% \tabu@colortblalignments <a id='L2290' name='L2290'></a>%% Taking care of footnotes and hyperfootnotes ---------------------- <a id='L2291' name='L2291'></a>\long\def\tabu@footnotetext #1{% <a id='L2292' name='L2292'></a> \edef\@tempa{\the\tabu@footnotes <a id='L2293' name='L2293'></a> \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% <a id='L2294' name='L2294'></a> \global\tabu@footnotes\expandafter{\@tempa {#1}}}% <a id='L2295' name='L2295'></a>\long\def\tabu@xfootnotetext [#1]#2{% <a id='L2296' name='L2296'></a> \global\tabu@footnotes\expandafter{\the\tabu@footnotes <a id='L2297' name='L2297'></a> \footnotetext [{#1}]{#2}}} <a id='L2298' name='L2298'></a>\let\tabu@xfootnote \@xfootnote <a id='L2299' name='L2299'></a>\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} <a id='L2300' name='L2300'></a>\long\def\tabu@Hy@xfootnote [#1]{% <a id='L2301' name='L2301'></a> \begingroup <a id='L2302' name='L2302'></a> \value\@mpfn #1\relax <a id='L2303' name='L2303'></a> \protected@xdef \@thefnmark {\thempfn}% <a id='L2304' name='L2304'></a> \endgroup <a id='L2305' name='L2305'></a> \@footnotemark \tabu@Hy@ftntxt {#1}% <a id='L2306' name='L2306'></a>}% \tabu@Hy@xfootnote <a id='L2307' name='L2307'></a>\long\def\tabu@Hy@ftntxt #1#2{% <a id='L2308' name='L2308'></a> \edef\@tempa{% <a id='L2309' name='L2309'></a> \the\tabu@footnotes <a id='L2310' name='L2310'></a> \begingroup <a id='L2311' name='L2311'></a> \value\@mpfn #1\relax <a id='L2312' name='L2312'></a> \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% <a id='L2313' name='L2313'></a> \expandafter \noexpand \expandafter <a id='L2314' name='L2314'></a> \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% <a id='L2315' name='L2315'></a> }% <a id='L2316' name='L2316'></a> \global\tabu@footnotes\expandafter{\@tempa {#2}% <a id='L2317' name='L2317'></a> \endgroup}% <a id='L2318' name='L2318'></a>}% \tabu@Hy@ftntxt <a id='L2319' name='L2319'></a>\long\def\tabu@Hy@footnotetext #1#2{% <a id='L2320' name='L2320'></a> \H@@footnotetext{% <a id='L2321' name='L2321'></a> \ifHy@nesting <a id='L2322' name='L2322'></a> \hyper@@anchor {#1}{#2}% <a id='L2323' name='L2323'></a> \else <a id='L2324' name='L2324'></a> \Hy@raisedlink{% <a id='L2325' name='L2325'></a> \hyper@@anchor {#1}{\relax}% <a id='L2326' name='L2326'></a> }% <a id='L2327' name='L2327'></a> \def\@currentHref {#1}% <a id='L2328' name='L2328'></a> \let\@currentlabelname \@empty <a id='L2329' name='L2329'></a> #2% <a id='L2330' name='L2330'></a> \fi <a id='L2331' name='L2331'></a> }% <a id='L2332' name='L2332'></a>}% \tabu@Hy@footnotetext <a id='L2333' name='L2333'></a>%% No need for \arraybackslash ! ------------------------------------ <a id='L2334' name='L2334'></a>\def\tabu@latextwoe {% <a id='L2335' name='L2335'></a>\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} <a id='L2336' name='L2336'></a>\tabu@temp \tabu@centering \centering \arraybackslash <a id='L2337' name='L2337'></a>\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash <a id='L2338' name='L2338'></a>\tabu@temp \tabu@raggedright \raggedright \arraybackslash <a id='L2339' name='L2339'></a>}% \tabu@latextwoe <a id='L2340' name='L2340'></a>\def\tabu@raggedtwoe {% <a id='L2341' name='L2341'></a>\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} <a id='L2342' name='L2342'></a>\tabu@temp \tabu@Centering \Centering \arraybackslash <a id='L2343' name='L2343'></a>\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash <a id='L2344' name='L2344'></a>\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash <a id='L2345' name='L2345'></a>\tabu@temp \tabu@justifying \justifying \arraybackslash <a id='L2346' name='L2346'></a>}% \tabu@raggedtwoe <a id='L2347' name='L2347'></a>\def\tabu@normalcrbackslash{\let\\\@normalcr} <a id='L2348' name='L2348'></a>\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% <a id='L2349' name='L2349'></a> \expandafter\tabu@normalcrbackslash \@trivlist}} <a id='L2350' name='L2350'></a>%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- <a id='L2351' name='L2351'></a>\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} <a id='L2352' name='L2352'></a>\def\tabu@beginfbox {\bgroup \kern\fboxsep <a id='L2353' name='L2353'></a> \bgroup\aftergroup\tabu@endfbox} <a id='L2354' name='L2354'></a>\def\tabu@endfbox {\kern\fboxsep\egroup\egroup <a id='L2355' name='L2355'></a> \@frameb@x\relax} <a id='L2356' name='L2356'></a>\def\tabu@color@b@x #1#2{\leavevmode \bgroup <a id='L2357' name='L2357'></a> \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% <a id='L2358' name='L2358'></a> \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox <a id='L2359' name='L2359'></a>}% \tabu@color@b@x <a id='L2360' name='L2360'></a>\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup <a id='L2361' name='L2361'></a> \aftergroup\tabu@endcolor@b@x \set@color} <a id='L2362' name='L2362'></a>\def\tabu@endcolor@b@x {\kern\fboxsep \egroup <a id='L2363' name='L2363'></a> \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ <a id='L2364' name='L2364'></a> \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ <a id='L2365' name='L2365'></a> \tabu@docolor@b@x \egroup <a id='L2366' name='L2366'></a>}% \tabu@endcolor@b@x <a id='L2367' name='L2367'></a>%% Corrections (arydshln, delarray, colortbl) ----------------------- <a id='L2368' name='L2368'></a>\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray <a id='L2369' name='L2369'></a> \iftabu@colortbl <a id='L2370' name='L2370'></a> \ifdefined\adl@array % <colortbl + arydshln> <a id='L2371' name='L2371'></a> \def\tabu@endarray{% <a id='L2372' name='L2372'></a> \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup %<original> <a id='L2373' name='L2373'></a> \@arrayright % <FC> <a id='L2374' name='L2374'></a> \gdef\@preamble{}}% <FC> <a id='L2375' name='L2375'></a> \else % <colortbl / no arydshln> <a id='L2376' name='L2376'></a> \def\tabu@endarray{% <a id='L2377' name='L2377'></a> \crcr \egroup \egroup %<original> <a id='L2378' name='L2378'></a> \@arrayright % <FC> <a id='L2379' name='L2379'></a> \gdef\@preamble{}\CT@end}% <a id='L2380' name='L2380'></a> \fi <a id='L2381' name='L2381'></a> \else <a id='L2382' name='L2382'></a> \ifdefined\adl@array % <arydshln / no colortbl> <a id='L2383' name='L2383'></a> \def\tabu@endarray{% <a id='L2384' name='L2384'></a> \adl@endarray \egroup \adl@arrayrestore \egroup %<original> <a id='L2385' name='L2385'></a> \@arrayright % <FC> <a id='L2386' name='L2386'></a> \gdef\@preamble{}}% <FC> <a id='L2387' name='L2387'></a> \else % <no arydshln / no colotbl + \@arrayright missing> <a id='L2388' name='L2388'></a> \PackageWarning{tabu} <a id='L2389' name='L2389'></a> {\string\@arrayright\space is missing from the <a id='L2390' name='L2390'></a> \MessageBreak definition of \string\endarray. <a id='L2391' name='L2391'></a> \MessageBreak Compatibility with delarray.sty is broken.}% <a id='L2392' name='L2392'></a> \fi\fi <a id='L2393' name='L2393'></a>}% \tabu@fix@arrayright <a id='L2394' name='L2394'></a>\def\tabu@adl@xarraydashrule #1#2#3{% <a id='L2395' name='L2395'></a> \ifnum\@lastchclass=\adl@class@start\else <a id='L2396' name='L2396'></a> \ifnum\@lastchclass=\@ne\else <a id='L2397' name='L2397'></a> \ifnum\@lastchclass=5 \else % <FC> @-arg (class 5) and !-arg (class 1) <a id='L2398' name='L2398'></a> \adl@leftrulefalse \fi\fi % must be treated the same <a id='L2399' name='L2399'></a> \fi <a id='L2400' name='L2400'></a> \ifadl@zwvrule\else \ifadl@inactive\else <a id='L2401' name='L2401'></a> \@addtopreamble{\vrule\@width\arrayrulewidth <a id='L2402' name='L2402'></a> \@height\z@ \@depth\z@}\fi \fi <a id='L2403' name='L2403'></a> \ifadl@leftrule <a id='L2404' name='L2404'></a> \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% <a id='L2405' name='L2405'></a> {\number#1}#3}% <a id='L2406' name='L2406'></a> \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% <a id='L2407' name='L2407'></a> {\number#2}#3} <a id='L2408' name='L2408'></a> \fi <a id='L2409' name='L2409'></a>}% \tabu@adl@xarraydashrule <a id='L2410' name='L2410'></a>\def\tabu@adl@act@endpbox {% <a id='L2411' name='L2411'></a> \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox <a id='L2412' name='L2412'></a> \egroup \egroup <a id='L2413' name='L2413'></a> \adl@colhtdp \box\adl@box \hfil <a id='L2414' name='L2414'></a>}% \tabu@adl@act@endpbox <a id='L2415' name='L2415'></a>\def\tabu@adl@fix {% <a id='L2416' name='L2416'></a> \let\adl@xarraydashrule \tabu@adl@xarraydashrule % <fix> arydshln <a id='L2417' name='L2417'></a> \let\adl@act@endpbox \tabu@adl@act@endpbox % <fix> arydshln <a id='L2418' name='L2418'></a> \let\adl@act@@endpbox \tabu@adl@act@endpbox % <fix> arydshln <a id='L2419' name='L2419'></a> \let\@preamerror \@preamerr % <fix> arydshln <a id='L2420' name='L2420'></a>}% \tabu@adl@fix <a id='L2421' name='L2421'></a>%% Correction for longtable' \@startbox definition ------------------ <a id='L2422' name='L2422'></a>%% => \everypar is ``missing'' : TeX should be in vertical mode <a id='L2423' name='L2423'></a>\def\tabu@LT@startpbox #1{% <a id='L2424' name='L2424'></a> \bgroup <a id='L2425' name='L2425'></a> \let\@footnotetext\LT@p@ftntext <a id='L2426' name='L2426'></a> \setlength\hsize{#1}% <a id='L2427' name='L2427'></a> \@arrayparboxrestore <a id='L2428' name='L2428'></a> \everypar{% <a id='L2429' name='L2429'></a> \vrule \@height \ht\@arstrutbox \@width \z@ <a id='L2430' name='L2430'></a> \everypar{}}% <a id='L2431' name='L2431'></a>}% \tabu@LT@startpbox <a id='L2432' name='L2432'></a>%% \tracingtabu and the package options ------------------ <a id='L2433' name='L2433'></a>\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} <a id='L2434' name='L2434'></a>\DeclareOption{linegoal}{% <a id='L2435' name='L2435'></a> \AtEndOfPackage{% <a id='L2436' name='L2436'></a> \RequirePackage{linegoal}[2010/12/07]% <a id='L2437' name='L2437'></a> \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX <a id='L2438' name='L2438'></a>}} <a id='L2439' name='L2439'></a>\DeclareOption{scantokens}{\tabuscantokenstrue} <a id='L2440' name='L2440'></a>\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} <a id='L2441' name='L2441'></a>\def\tracingtabu {\begingroup\@ifnextchar=% <a id='L2442' name='L2442'></a> {\afterassignment\tabu@tracing\count@} <a id='L2443' name='L2443'></a> {\afterassignment\tabu@tracing\count@1\relax}} <a id='L2444' name='L2444'></a>\def\tabu@tracing{\expandafter\endgroup <a id='L2445' name='L2445'></a> \expandafter\tabu@tr@cing \the\count@ \relax <a id='L2446' name='L2446'></a>}% \tabu@tracing <a id='L2447' name='L2447'></a>\def\tabu@tr@cing #1\relax {% <a id='L2448' name='L2448'></a> \ifnum#1>\thr@@ \let\tabu@tracinglines\message <a id='L2449' name='L2449'></a> \else \let\tabu@tracinglines\@gobble <a id='L2450' name='L2450'></a> \fi <a id='L2451' name='L2451'></a> \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG <a id='L2452' name='L2452'></a> \def\tabu@mkarstrut {\tabu@DBG@arstrut}% <a id='L2453' name='L2453'></a> \tabustrutrule 1.5\p@ <a id='L2454' name='L2454'></a> \else \let\tabu@DBG \@gobble <a id='L2455' name='L2455'></a> \def\tabu@mkarstrut {\tabu@arstrut}% <a id='L2456' name='L2456'></a> \tabustrutrule \z@ <a id='L2457' name='L2457'></a> \fi <a id='L2458' name='L2458'></a> \ifnum#1>\@ne \let\tabu@debug \message <a id='L2459' name='L2459'></a> \else \let\tabu@debug \@gobble <a id='L2460' name='L2460'></a> \fi <a id='L2461' name='L2461'></a> \ifnum#1>\z@ <a id='L2462' name='L2462'></a> \let\tabu@message \message <a id='L2463' name='L2463'></a> \let\tabu@tracing@save \tabu@message@save <a id='L2464' name='L2464'></a> \let\tabu@starttimer \tabu@pdftimer <a id='L2465' name='L2465'></a> \else <a id='L2466' name='L2466'></a> \let\tabu@message \@gobble <a id='L2467' name='L2467'></a> \let\tabu@tracing@save \@gobble <a id='L2468' name='L2468'></a> \let\tabu@starttimer \relax <a id='L2469' name='L2469'></a> \fi <a id='L2470' name='L2470'></a>}% \tabu@tr@cing <a id='L2471' name='L2471'></a>%% Setup \AtBeginDocument <a id='L2472' name='L2472'></a>\AtBeginDocument{\tabu@AtBeginDocument} <a id='L2473' name='L2473'></a>\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined <a id='L2474' name='L2474'></a> \ifdefined\arrayrulecolor \tabu@colortbltrue % <colortbl> <a id='L2475' name='L2475'></a> \tabu@colortblalignments % different glues are used <a id='L2476' name='L2476'></a> \else \tabu@colortblfalse \fi <a id='L2477' name='L2477'></a> \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi <a id='L2478' name='L2478'></a> \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi <a id='L2479' name='L2479'></a> \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ <a id='L2480' name='L2480'></a> \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % <siunitx: ok> <a id='L2481' name='L2481'></a> \expandafter\ifx <a id='L2482' name='L2482'></a> \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax <a id='L2483' name='L2483'></a> \tabu@siunitxtrue <a id='L2484' name='L2484'></a> \else \let\tabu@maybesiunitx \@firstofone % <not siunitx: setup> <a id='L2485' name='L2485'></a> \let\tabu@siunitx \tabu@nosiunitx <a id='L2486' name='L2486'></a> \tabu@siunitxfalse <a id='L2487' name='L2487'></a> \fi <a id='L2488' name='L2488'></a> \ifdefined\adl@array % <arydshln> <a id='L2489' name='L2489'></a> \else \let\tabu@adl@fix \relax <a id='L2490' name='L2490'></a> \let\tabu@adl@endtrial \@empty \fi <a id='L2491' name='L2491'></a> \ifdefined\longtable % <longtable> <a id='L2492' name='L2492'></a> \else \let\longtabu \tabu@nolongtabu \fi <a id='L2493' name='L2493'></a> \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi <a id='L2494' name='L2494'></a> \csname\ifcsname ifHy@hyperfootnotes\endcsname % <hyperfootnotes> <a id='L2495' name='L2495'></a> ifHy@hyperfootnotes\else iffalse\fi\endcsname <a id='L2496' name='L2496'></a> \let\tabu@footnotetext \tabu@Hy@ftntext <a id='L2497' name='L2497'></a> \let\tabu@xfootnote \tabu@Hy@xfootnote \fi <a id='L2498' name='L2498'></a> \ifdefined\FV@DefineCheckEnd% <fancyvrb> <a id='L2499' name='L2499'></a> \tabu@fancyvrb \fi <a id='L2500' name='L2500'></a> \ifdefined\color % <color / xcolor> <a id='L2501' name='L2501'></a> \let\tabu@color \color <a id='L2502' name='L2502'></a> \def\tabu@leavevmodecolor ##1{% <a id='L2503' name='L2503'></a> \def\tabu@leavevmodecolor {\leavevmode ##1}% <a id='L2504' name='L2504'></a> }\expandafter\tabu@leavevmodecolor\expandafter{\color}% <a id='L2505' name='L2505'></a> \else <a id='L2506' name='L2506'></a> \let\tabu@color \tabu@nocolor <a id='L2507' name='L2507'></a> \let\tabu@leavevmodecolor \@firstofone \fi <a id='L2508' name='L2508'></a> \tabu@latextwoe <a id='L2509' name='L2509'></a> \ifdefined\@raggedtwoe@everyselectfont % <ragged2e> <a id='L2510' name='L2510'></a> \tabu@raggedtwoe <a id='L2511' name='L2511'></a> \else <a id='L2512' name='L2512'></a> \let\tabu@cell@L \tabu@cell@l <a id='L2513' name='L2513'></a> \let\tabu@cell@R \tabu@cell@r <a id='L2514' name='L2514'></a> \let\tabu@cell@C \tabu@cell@c <a id='L2515' name='L2515'></a> \let\tabu@cell@J \tabu@cell@j \fi <a id='L2516' name='L2516'></a> \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% <a id='L2517' name='L2517'></a> \ifin@ \let\tabu@endarray \endarray <a id='L2518' name='L2518'></a> \else \tabu@fix@arrayright \fi% <fix for colortbl & arydshln (delarray)> <a id='L2519' name='L2519'></a> \everyrow{}% <a id='L2520' name='L2520'></a>}% \tabu@AtBeginDocument <a id='L2521' name='L2521'></a>\def\tabu@warn@cellspace{% <a id='L2522' name='L2522'></a> \PackageWarning{tabu}{% <a id='L2523' name='L2523'></a> Package cellspace has some limitations <a id='L2524' name='L2524'></a> \MessageBreak And redefines some macros of array.sty. <a id='L2525' name='L2525'></a> \MessageBreak Please use \string\tabulinesep\space to control <a id='L2526' name='L2526'></a> \MessageBreak vertical spacing of lines inside tabu environment}% <a id='L2527' name='L2527'></a>}% \tabu@warn@cellspace <a id='L2528' name='L2528'></a>%% tabu Package initialisation <a id='L2529' name='L2529'></a>\tabuscantokensfalse <a id='L2530' name='L2530'></a>\let\tabu@arc@G \relax <a id='L2531' name='L2531'></a>\let\tabu@drsc@G \relax <a id='L2532' name='L2532'></a>\let\tabu@evr@G \@empty <a id='L2533' name='L2533'></a>\let\tabu@rc@G \@empty <a id='L2534' name='L2534'></a>\def\tabu@ls@G {\tabu@linestyle@}% <a id='L2535' name='L2535'></a>\let\tabu@@rowfontreset \@empty % <init> <a id='L2536' name='L2536'></a>\let\tabu@@celllalign \@empty <a id='L2537' name='L2537'></a>\let\tabu@@cellralign \@empty <a id='L2538' name='L2538'></a>\let\tabu@@cellleft \@empty <a id='L2539' name='L2539'></a>\let\tabu@@cellright \@empty <a id='L2540' name='L2540'></a>\def\tabu@naturalXmin {\z@} <a id='L2541' name='L2541'></a>\def\tabu@naturalXmax {\z@} <a id='L2542' name='L2542'></a>\let\tabu@rowfontreset \@empty <a id='L2543' name='L2543'></a>\def\tabulineon {4pt}\let\tabulineoff \tabulineon <a id='L2544' name='L2544'></a>\tabu@everyrowtrue <a id='L2545' name='L2545'></a>\ifdefined\pdfelapsedtime % <pdfTeX> <a id='L2546' name='L2546'></a> \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% <a id='L2547' name='L2547'></a>\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax <a id='L2548' name='L2548'></a>\fi <a id='L2549' name='L2549'></a>\tracingtabu=\z@ <a id='L2550' name='L2550'></a>\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ <a id='L2551' name='L2551'></a>\tabulinestyle{} <a id='L2552' name='L2552'></a>\taburowcolors{} <a id='L2553' name='L2553'></a>\let\tabudefaulttarget \linewidth <a id='L2554' name='L2554'></a>\ProcessOptions* % \ProcessOptions* is quicker ! <a id='L2555' name='L2555'></a>\endinput <a id='L2556' name='L2556'></a>%% <a id='L2557' name='L2557'></a>%% End of file `tabu.sty'. </pre> <hr /> <a id='BOTTOM' name='BOTTOM'></a> <em class='comment'>/* [<][>][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em> </body> </html>