% % plcollcell.sty % written by Hironobu Yamashita (@aminophen) % % This package is part of the plautopatch bundle. % https://github.com/aminophen/plautopatch % % This package is expected to be compatible with % * collcell.sty % (2011/02/27 v0.5) % * plarray.sty in platex-tools % (2018/03/12 v0.1e -- 2018/10/27 v0.1h) % \NeedsTeXFormat{pLaTeX2e} \ProvidesPackage{plcollcell} [2020/05/05 v0.1 Tabular extension package for pLaTeX/upLaTeX] \RequirePackageWithOptions{collcell} \RequirePackage{plarray}% collcell.sty requires array.sty %% code from plarray.sty (for pLaTeX2e 2018/03/09 or later) \def\plclcl@insert@column{% \the@toks \the \@tempcnta \relax \pltx@next@inhibitglue \ignorespaces \@sharp \unskip \removejfmglue \the@toks \the \count@ \relax} % -- check \ifx\insert@column\plclcl@insert@column\else \PackageWarningNoLine{pxcollcell} {Patch to \noexpand\collectcell unsupported} \expandafter\endinput \fi \let\plclcl@insert@column\@undefined %% \plclcl@patch@cmd\CMD{}{} \@onlypreamble\plclcl@patch@cmd \def\plclcl@patch@cmd#1#2#3{% \def\plclcl@next##1#2##2\plclcl@mark##3\plclcl@fin{% \ifx\plclcl@mark##3\plclcl@mark \let\plclcl@fragment\relax \else \def\plclcl@fragment{##2}% \def#1{##1#3##2}% \fi}% \expandafter\plclcl@next#1\plclcl@mark#2\plclcl@mark\plclcl@fin} % -- prepend (TODO: \kern0pt enables \inhibitglue effect. why?) \plclcl@patch@cmd\collcell@beforeuser {\ignorespaces} {\kern0pt\inhibitglue\ignorespaces} \ifx\plclcl@fragment\relax \PackageWarningNoLine{pxcollcell} {Patch to \noexpand\collcell@beforeuser failed} \fi %% code from collcell.sty \def\plclcl@collectcell#1#2\ignorespaces{% \begingroup \collect@cell@count\z@ \collect@cell@toks{}% \let\collect@cell@spaces\empty \def\collect@cell@end{% \expandafter\endgroup \expandafter\collcell@beforeuser \expandafter\ccell@swap\expandafter{\the\collect@cell@toks}{#1}% \collcell@afteruser }% \collect@cell@look#2% } % -- check \ifx\collectcell\plclcl@collectcell\else \PackageWarningNoLine{pxcollcell} {Patching \noexpand\collect@cell@arg but maybe unsafe} \fi \let\plclcl@collectcell\@undefined % -- redefine to skip \relax\pltx@next@inhibitglue \def\collectcell#1#2\relax\pltx@next@inhibitglue\ignorespaces{% \begingroup \collect@cell@count\z@ \collect@cell@toks{}% \let\collect@cell@spaces\empty \def\collect@cell@end{% \expandafter\endgroup \expandafter\collcell@beforeuser \expandafter\ccell@swap\expandafter{\the\collect@cell@toks}{#1}% \collcell@afteruser }% \collect@cell@look#2% } %% code from collcell.sty \def\plclcl@collect@cell@arg#1{% \cc@case \\{\collect@cell@cr#1}% \end{\collect@cell@checkend}% \csname{\collect@cell@checkcsname}% \unskip{% \let\collect@cell@spaces\empty %\collect@cell@addarg{#1}% do not include the \unskip \collect@cell@look% }% \@sharp{% \expandafter\collect@cell@addarg\expandafter{#1}% \collect@cell@look }% \collectcell{% \advance\collect@cell@count by \@ne \collect@cell@addcc% }% \endcollectcell{% \ifnum\collect@cell@count=\z@ \expandafter\collect@cell@end \else \expandafter\endgroup \expandafter\collect@cell@addarg\expandafter {\expandafter{\the\collect@cell@toks}}% \advance\collect@cell@count by \m@ne% \expandafter\collect@cell@look \fi }% \cci{% \collect@cell@look }% \default{% \expandafter\ccell@swap\expandafter {\csname endtabular*\endcsname\endtabular\endarray}{\in@{#1}}% \ifin@ \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi {\collect@cell@cr\\#1}% {% \collect@cell@addarg{#1}% \collect@cell@look }% }% \endcc@case } % -- check \ifx\collect@cell@arg\plclcl@collect@cell@arg\else \PackageWarningNoLine{pxcollcell} {Patching \noexpand\collect@cell@arg but maybe unsafe} \fi \let\plclcl@collect@cell@arg\@undefined % -- redefine to skip \removejfmglue \def\collect@cell@arg#1{% \cc@case \\{\collect@cell@cr#1}% \end{\collect@cell@checkend}% \csname{\collect@cell@checkcsname}% \unskip{% \let\collect@cell@spaces\empty %\collect@cell@addarg{#1}% do not include the \unskip \collect@cell@look% }% \@sharp{% \expandafter\collect@cell@addarg\expandafter{#1}% \collect@cell@look }% \collectcell{% \advance\collect@cell@count by \@ne \collect@cell@addcc% }% \endcollectcell{% \ifnum\collect@cell@count=\z@ \expandafter\collect@cell@end \else \expandafter\endgroup \expandafter\collect@cell@addarg\expandafter {\expandafter{\the\collect@cell@toks}}% \advance\collect@cell@count by \m@ne% \expandafter\collect@cell@look \fi }% \cci{% \collect@cell@look }% %%% BEGIN \removejfmglue{% \collect@cell@look }% %%% END \default{% \expandafter\ccell@swap\expandafter {\csname endtabular*\endcsname\endtabular\endarray}{\in@{#1}}% \ifin@ \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi {\collect@cell@cr\\#1}% {% \collect@cell@addarg{#1}% \collect@cell@look }% }% \endcc@case } %% all done \endinput