diff options
Diffstat (limited to 'language/japanese/platex-tools/plextarray.sty')
-rw-r--r-- | language/japanese/platex-tools/plextarray.sty | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/language/japanese/platex-tools/plextarray.sty b/language/japanese/platex-tools/plextarray.sty new file mode 100644 index 0000000000..ee08eb0bbd --- /dev/null +++ b/language/japanese/platex-tools/plextarray.sty @@ -0,0 +1,121 @@ +% +% plextarray.sty +% written by Hironobu Yamashita (@aminophen) +% +% This package is part of the platex-tools bundle. +% https://github.com/aminophen/platex-tools +% +% This package is expected to be compatible with +% * array.sty in latex-tools +% (2016/10/06 v2.4d -- 2018/09/13 v2.4i) +% * plext.sty in platex +% (2001/09/26 v1.2 -- 2018/09/20 v1.2j) +% Largely based on lltjext.sty from LuaTeX-ja project. +% + +\NeedsTeXFormat{pLaTeX2e} +\ProvidesPackage{plextarray} + [2018/10/27 v1.1d Tabular extension package for plext and array] +\RequirePackage{plext} +\RequirePackage{plarray} + +%% save definitions from array.sty +% the <dir> option will be handled later in \@tabarray +\def\array{\col@sep\arraycolsep + \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\def\@halignto{}% + \@tabarray} +\def\tabular{\def\@halignto{}\@tabular} +%% merged definitions from array.sty and plext.sty +% take <dir> option first as in plext.sty, +% which will be passed to \@tabarray +\@namedef{tabular*}{\@ifnextchar<%> + {\p@stabular}{\p@stabular<Z>}} +\def\p@stabular<#1>#2{% + \setlength\dimen@{#2}% + \edef\@halignto{to\the\dimen@}\@tabular<#1>} + +%% patching internal code for array.sty and plext.sty +% +\@ifpackagelater{array}{2018/09/13}{\@firstoftwo}{\@secondoftwo} +{% = for 2018/09/13 v2.4i or newer +\def\@startpbox#1{\bgroup + \color@begingroup + \box@dir\adjustbaseline %% added + \setlength\hsize{#1}\@arrayparboxrestore + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% + }% +}% = +{% = for 2018/04/30 v2.4h or older +\def\@startpbox#1{\bgroup + \box@dir\adjustbaseline %% added + \setlength\hsize{#1}\@arrayparboxrestore + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% + }% +}% = +% +\def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray<Z>}} +% +%% merged \@array (from array.sty) and \p@array (from plext.sty) +\def\p@array<#1>[#2]#3{% + %%%%% new code for box direction + \let\box@dir\relax + \iftdir + \if #1y\relax + \let\box@dir\yoko + \@tempcnta=\z@ % \(y)strutbox + \else\if #1z\relax + \@rotswtrue + \let\box@dir\tate + \@tempcnta=\tw@ % \zstrutbox + \else + \let\box@dir\tate + \@tempcnta=\@ne % \tstrutbox + \fi\fi + \else + \if #1t\relax + \let\box@dir\tate + \@tempcnta=\@ne % \tstrutbox + \else + \let\box@dir\yoko + \@tempcnta=\z@ % \(y)strutbox + \fi + \fi + %%%%% new code end + \setbox \@arstrutbox \hbox{\box@dir %% add \box@dir + % the behavior of \strutbox has been changed + % (box resister -> conditional macro) in pLaTeX2e 2017/04/08; + % so, \strutbox should appear after \box@dir is applied. + \@tempcntb=\ifcase\@tempcnta\strutbox + \or\tstrutbox\or\zstrutbox\or\@ctrerr\fi + \@tempdima \ht \@tempcntb + \advance \@tempdima by\extrarowheight + \vrule \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \@tempcntb + \@width \z@}% + \fork@array@option<#1>[#2]% %% merged from plext + \begingroup + \@mkpream{#3}% + % following definition of \@preamble is from plext (\edef -> \xdef), + % but it's not the same as the one in array; why? + \xdef\@preamble{\ialign \noexpand \@halignto + \bgroup \tabskip \z@skip \@arstrut \@preamble + \tabskip \z@skip \cr}% + \endgroup + \@arrayleft + \@begin@alignbox %% defined inside \fork@array@option + \bgroup + \box@dir\adjustbaseline + \let\par\@empty + \let\@sharp##\let\protect\relax + \let\\\@arraycr\let\tabularnewline\\ + \lineskip\z@skip\baselineskip\z@skip\@preamble} +% +\def\endarray{\crcr \egroup \egroup \@end@alignbox \@arrayright \gdef\@preamble{}} +% +%% done + +\endinput |