%% %% This is file `tabulary.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% tabulary.dtx (with options: `package') %% DRAFT VERSION %% %% File `tabulary.dtx'. %% Copyright (C) 1995 1996 2003 2008 2024 David Carlisle %% This file may be distributed under the terms of the LPPL. %% See README.txt for details. %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tabulary} [2024/06/04 v0.11 tabulary package (DPC)] \DeclareRelease{v0.10}{1995/10/08}{tabulary-v010.sty} \DeclareCurrentRelease{}{2024-06-01} \RequirePackage{array}[2024/05/23] \catcode`\Z=14 \DeclareOption{debugshow}{\catcode`\Z=9\relax} \ProcessOptions \def\arraybackslash{\let\\=\@arraycr} \def\@finalstrut#1{% \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1} \newcount\TY@count \def\tabulary{% \let\TY@final\tabular \let\endTY@final\endtabular \TY@tabular} \def\TY@tabular#1{% \edef\TY@{\@currenvir}% {\ifnum0=`}\fi \@ovxx\TY@linewidth \@ovyy\TY@tablewidth \count@\z@ \@tempswatrue \@whilesw\if@tempswa\fi{% \advance\count@\@ne \expandafter\ifx\csname TY@F\the\count@\endcsname\relax \@tempswafalse \else \expandafter\let\csname TY@SF\the\count@\expandafter\endcsname \csname TY@F\the\count@\endcsname \global\expandafter\let\csname TY@F\the\count@\endcsname\relax \expandafter\let\csname TY@S\the\count@\expandafter\endcsname \csname TY@\the\count@\endcsname \fi}% \global\TY@count\@ne \TY@width\xdef{0pt}% \global\TY@tablewidth\z@ \global\TY@linewidth#1\relax Z\message{^^J^^JTable^^J% Z Target Width: \the\TY@linewidth^^J% Z \string\tabcolsep: \the\tabcolsep\space Z \string\arrayrulewidth: \the\arrayrulewidth\space Z \string\doublerulesep: \the\doublerulesep^^J% Z \string\tymin: \the\tymin\space Z \string\tymax: \the\tymax^^J}% \let\@classz\TY@classz \let\verb\TX@verb \toks@{}\TY@get@body} \let\TY@@mkpream\@mkpream \ExplSyntaxOn \def\TY@mkpream{% \def\@addamp{% \if@firstamp \@firstampfalse \else \global\advance\TY@count\@ne \edef\@preamble{\@preamble & \noexpand\tbl_update_cell_data:}\fi \TY@width\xdef{0pt}}% \def\@acol{% \TY@subwidth\col@sep \@addtopreamble{\hskip\col@sep}}% \let\@arrayrule\TY@arrayrule \let\@classvi\TY@classvi \def\@classv{\save@decl \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@__tbl \sbox\z@{\d@llarbegin\@nextchar\d@llarend}% \TY@subwidth{\wd\z@}% \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}% \prepnext@tok}% \global\let\@mkpream\TY@@mkpream \TY@@mkpream} \ExplSyntaxOff \def\TY@arrayrule{% \TY@subwidth\arrayrulewidth \@addtopreamble \vline} \def\TY@classvi{\ifcase \@lastchclass \@acol \or \TY@subwidth\doublerulesep \@addtopreamble{\hskip \doublerulesep}\or \@acol \or \@classvii \fi} \def\TY@tab{% \setbox\z@\hbox\bgroup \let\[$\let\]$% \let\equation$\let\endequation$% \col@sep\tabcolsep \let\d@llarbegin\begingroup\let\d@llarend\endgroup \let\@mkpream\TY@mkpream \def\multicolumn##1##2##3{\multispan##1\relax}% \CT@start\TY@tabarray} \def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}} \def\TY@array[#1]{\@array[t]} \def\TY@width#1{% \expandafter#1\csname TY@\the\TY@count\endcsname} \def\TY@subwidth#1{% \TY@width\dimen@ \advance\dimen@-#1\relax \TY@width\xdef{\the\dimen@}% \global\advance\TY@linewidth-#1\relax} \def\endtabulary{% \SuspendTagging {tabulary}% \gdef\@halignto{}% \def\@elt##1{\global\value{##1}\the\value{##1}\relax}% \edef\TY@ckpt{\cl@@ckpt}% \expandafter\TY@tab\the\toks@ \crcr\omit {\xdef\TY@save@row{}% \loop \advance\TY@count\m@ne \ifnum\TY@count>\z@ \xdef\TY@save@row{\TY@save@row&\omit}% \repeat}\TY@save@row \endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1 \unskip\global\setbox1=\lastbox}\egroup \ResumeTagging {tabulary}% \dimen@\TY@linewidth \divide\dimen@\TY@count \ifdim\dimen@<\tymin \TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}% \tymin\dimen@ \fi \setbox\tw@=\hbox{\unhbox\@ne \loop \@tempdima=\lastskip \ifdim\@tempdima>\z@ Z \message{ecs=\the\@tempdima^^J}% \global\advance\TY@linewidth-\@tempdima \fi \unskip \setbox\tw@=\lastbox \ifhbox\tw@ Z \message{Col \the\TY@count: Initial=\the\wd\tw@\space}% \ifdim\wd\tw@>\tymax \wd\tw@\tymax Z \message{> max\space}% Z \else Z \message{ \@spaces\space}% \fi \TY@width\dimen@ Z \message{\the\dimen@\space}% \advance\dimen@\wd\tw@ Z \message{Final=\the\dimen@\space}% \TY@width\xdef{\the\dimen@}% \ifdim\dimen@<\tymin Z \message{< tymin}% \global\advance\TY@linewidth-\dimen@ \expandafter\xdef\csname TY@F\the\TY@count\endcsname {\the\dimen@}% \else \expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@ Z \message{***}% \global\advance\TY@linewidth-\dimen@ \expandafter\xdef\csname TY@F\the\TY@count\endcsname {\the\dimen@}% \else Z \message{> tymin}% \global\advance\TY@tablewidth\dimen@ \global\expandafter\let\csname TY@F\the\TY@count\endcsname \maxdimen \fi\fi \advance\TY@count\m@ne \repeat}% \TY@checkmin \TY@checkmin \TY@checkmin \TY@checkmin \TY@count\z@ \let\TY@box\TY@box@v \TY@ckpt {\expandafter\TY@final\the\toks@\endTY@final}% \count@\z@ \@tempswatrue \@whilesw\if@tempswa\fi{% \advance\count@\@ne \expandafter\ifx\csname TY@SF\the\count@\endcsname\relax \@tempswafalse \else \global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname \csname TY@SF\the\count@\endcsname \global\expandafter\let\csname TY@\the\count@\expandafter\endcsname \csname TY@S\the\count@\endcsname \fi}% \TY@linewidth\@ovxx \TY@tablewidth\@ovyy \ifnum0=`{\fi}} \def\TY@checkmin{% \let\TY@checkmin\relax \ifdim\TY@tablewidth>\z@ \Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth \ifdim\TY@tablewidth <\TY@linewidth \def\TY@ratio{1}% \fi \else \TY@warn{No suitable columns!}% \def\TY@ratio{1}% \fi \count@\z@ Z \message{^^JLine Width: \the\TY@linewidth, Z Natural Width: \the\TY@tablewidth, Z Ratio: \TY@ratio^^J}% \@tempdima\z@ \loop \ifnum\count@<\TY@count \advance\count@\@ne \ifdim\csname TY@F\the\count@\endcsname>\tymin \dimen@\csname TY@\the\count@\endcsname \dimen@\TY@ratio\dimen@ \ifdim\dimen@<\tymin Z \message{Column \the\count@\space ->}% \global\expandafter\let\csname TY@F\the\count@\endcsname\tymin \global\advance\TY@linewidth-\tymin \global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname \let\TY@checkmin\TY@@checkmin \else \expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}% \advance\@tempdima\csname TY@F\the\count@\endcsname \fi \fi Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }% \repeat Z \message{^^JTotal:\the\@tempdima^^J}% } \let\TY@@checkmin\TY@checkmin \newdimen\TY@linewidth \def\tyformat{\everypar{{\nobreak\hskip\z@skip}}} \newdimen\tymin \tymin=10pt \newdimen\tymax \tymax=2\textwidth \def\@testpach{\@chclass \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else \ifnum \@lastchclass=7 5 \else \ifnum \@lastchclass=8 \tw@ \else \ifnum \@lastchclass=9 \thr@@ \else \z@ \ifnum \@lastchclass = 10 \else \edef\@nextchar{\expandafter\string\@nextchar}% \@chnum \if \@nextchar c\z@ \else \if \@nextchar l\@ne \else \if \@nextchar r\tw@ \else \if \@nextchar C7 \else \if \@nextchar L8 \else \if \@nextchar R9 \else \if \@nextchar J10 \else \z@ \@chclass \if\@nextchar |\@ne \else \if \@nextchar !6 \else \if \@nextchar @7 \else \if \@nextchar <8 \else \if \@nextchar >9 \else 10 \@chnum \if \@nextchar m\thr@@\else \if \@nextchar p4 \else \if \@nextchar b5 \else \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi} \def\TY@classz{% \@classx \@tempcnta\count@ \ifx\TY@box\TY@box@v \global\advance\TY@count\@ne \fi \let\centering c% \let\raggedright\noindent \let\raggedleft\indent \let\arraybackslash\relax \prepnext@tok \ifnum\@chnum<6 \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ \fi \ifnum\@chnum=6 \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ \fi \@addtopreamble{% \ifcase\@chnum \hfil\hskip1sp% \d@llarbegin\insert@column\d@llarend\do@row@strut\hfil \or \hskip1sp% \d@llarbegin \insert@column \d@llarend\do@row@strut\hfil \or \hfil\hskip1sp% \d@llarbegin \insert@column \d@llarend\do@row@strut \or \setbox\ar@mcellbox\vbox \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \ar@align@mcell \do@row@strut\or \vtop \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \or \vbox \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \or \d@llarbegin \insert@column \d@llarend \do@row@strut \or% dubious "s" case \TY@box\centering\or \TY@box\raggedright\or \TY@box\raggedleft\or \TY@box\relax \fi}\prepnext@tok} \def\TY@box#1{% \ifx\centering#1% \hfil\hskip1sp% \d@llarbegin\insert@column\d@llarend\do@row@strut \hfil \else \ifx\raggedright#1% \hskip1sp% \d@llarbegin \insert@column \d@llarend\do@row@strut \hfil \else \ifx\raggedleft#1% \hfil\hskip1sp% \kern\z@ \d@llarbegin \insert@column \d@llarend\do@row@strut \else \ifx\relax#1% \d@llarbegin \insert@column \d@llarend\do@row@strut \fi \fi \fi \fi} \def\TY@box@v#1{% \vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}% #1\arraybackslash\tyformat \insert@pcolumn\@endpbox} \newdimen\TY@tablewidth \def\Gscale@div#1#2#3{% \setlength\dimen@{#3}% \ifdim\dimen@=\z@ \PackageError{graphics}{Division by 0}\@eha \dimen@#2% \fi \edef\@tempd{\the\dimen@}% \setlength\dimen@{#2}% \count@65536\relax \ifdim\dimen@<\z@ \dimen@-\dimen@ \count@-\count@ \fi \loop \ifdim\dimen@<8192\p@ \dimen@\tw@\dimen@ \divide\count@\tw@ \repeat \dimen@ii=\@tempd\relax \divide\dimen@ii\count@ \divide\dimen@\dimen@ii \edef#1{\strip@pt\dimen@}} \long\def\TY@get@body#1\end {\toks@\expandafter{\the\toks@#1}\TY@find@end} \def\TY@find@end#1{% \def\@tempa{#1}% \ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa \else\toks@\expandafter {\the\toks@\end{#1}}\expandafter\TY@get@body\fi} \def\TY@warn{% \PackageWarning{tabulary}} \catcode`\Z=11 \AtBeginDocument{ \@ifpackageloaded{colortbl}{% \expandafter\def\expandafter\@mkpream\expandafter#\expandafter1% \expandafter{% \expandafter\let\expandafter\CT@setup\expandafter\relax \expandafter\let\expandafter\CT@color\expandafter\relax \expandafter\let\expandafter\CT@do@color\expandafter\relax \expandafter\let\expandafter\color\expandafter\relax \expandafter\let\expandafter\CT@column@color\expandafter\relax \expandafter\let\expandafter\CT@row@color\expandafter\relax \expandafter\let\expandafter\CT@cell@color\expandafter\relax \@mkpream{#1}} \let\TY@@mkpream\@mkpream \def\TY@classz{% \@classx \@tempcnta\count@ \ifx\TY@box\TY@box@v \global\advance\TY@count\@ne \fi \let\centering c% \let\raggedright\noindent \let\raggedleft\indent \let\arraybackslash\relax \prepnext@tok \expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil \ifnum\@chnum<6 \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ \fi \ifnum\@chnum=6 \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ \fi \@addtopreamble{% \setbox\z@\hbox\bgroup\bgroup \ifcase\@chnum \hskip\stretch{.5}\kern\z@ \d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<< \d@llarbegin \insert@column \d@llarend \hfill \or \hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or \setbox\ar@mcellbox\vbox \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \ar@align@mcell \do@row@strut \or \vtop \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \or \vbox \@startpbox{\@nextchar}\insert@pcolumn \@endpbox \or \d@llarbegin \insert@pcolumn \d@llarend \or% dubious s case \TY@box\centering\or \TY@box\raggedright\or \TY@box\raggedleft\or \TY@box\relax \fi \egroup\egroup \begingroup \CT@setup \CT@column@color \CT@row@color \CT@cell@color \CT@do@color \endgroup \@tempdima\ht\z@ \advance\@tempdima\minrowclearance \vrule\@height\@tempdima\@width\z@ \unhbox\z@ }\prepnext@tok}% \def\TY@arrayrule{% \TY@subwidth\arrayrulewidth \@addtopreamble{{\CT@arc@\vline}}}% \def\TY@classvi{\ifcase \@lastchclass \@acol \or \TY@subwidth\doublerulesep \ifx\CT@drsc@\relax \@addtopreamble{\hskip\doublerulesep}% \else \@addtopreamble{{\CT@drsc@\vrule\@width\doublerulesep}}% \fi\or \@acol \or \@classvii \fi}% }{% \let\CT@start\relax } } {\uccode`\*=`\ % \uppercase{\gdef\TX@verb{% \leavevmode\null\TX@vwarn {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces \@ifstar{\let~*\TX@vb}{\TX@vb}}}} \def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}% \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!} \def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= } \begingroup \catcode`\*=\catcode`\# \catcode`\#=12 \gdef\TX@vfirst{% \if\@tempa#% \def\@tempb{\TX@v@#}% \else \let\@tempb\TX@v@ \if\@tempa\space~\else\@tempa\fi \fi \@tempb} \gdef\TX@v@*1 *2{% \TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2} \gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2} \endgroup \def\TX@vwarn{% \@warning{\noexpand\verb may be unreliable inside tabularx/y}% \global\let\TX@vwarn\@empty} \ExplSyntaxOn \cs_set:Npn \@tempa #1 { \int_compare:nNnT \g__tbl_col_int > 0 { \tbl_count_missing_cells:n {#1} \cr } } \ifx\@tempa\tbl_crcr:n \cs_set:Npn \tbl_crcr:n #1 { \int_compare:nNnT \g__tbl_col_int > 0 { \tbl_count_missing_cells:n {#1} } \crcr } \fi \let\@tempa\@undefined \ExplSyntaxOff \endinput %% %% End of file `tabulary.sty'.