summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/platex-tools/plextarray.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-10-15 22:50:51 +0000
committerKarl Berry <karl@freefriends.org>2016-10-15 22:50:51 +0000
commit177eef25dd40b669810a53bb5c853ae7473ddbe1 (patch)
tree2678cb1a125a1d140de36493bd64185bf3437325 /Master/texmf-dist/tex/latex/platex-tools/plextarray.sty
parentcc71c12ada0ba4aa27acbb3ec40efa37826064fc (diff)
platex-tools (15oct16)
git-svn-id: svn://tug.org/texlive/trunk@42263 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/platex-tools/plextarray.sty')
-rw-r--r--Master/texmf-dist/tex/latex/platex-tools/plextarray.sty102
1 files changed, 102 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/platex-tools/plextarray.sty b/Master/texmf-dist/tex/latex/platex-tools/plextarray.sty
new file mode 100644
index 00000000000..210dba5dee6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/platex-tools/plextarray.sty
@@ -0,0 +1,102 @@
+%
+% plextarray.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the platex-tools bundle.
+% https://github.com/aminophen/platex-tools
+%
+% This package `plextarray.sty' is based on:
+% * array.sty in latex-tools (2016/10/06 v2.4d)
+% * plext.sty in platex (2016/08/20 v1.2a)
+% and lltjext.sty from LuaTeX-ja project.
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{plextarray}
+ [2016/10/07 v1.0f Tabular extension package for plext and array]
+\RequirePackage{plext}
+\RequirePackage{array}
+
+%% save definitions from array.sty
+\def\array{\col@sep\arraycolsep
+ \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\def\@halignto{}%
+ \@tabarray}
+\def\tabular{\def\@halignto{}\@tabular}
+\expandafter\def\csname tabular*\endcsname#1{%
+ \setlength\dimen@{#1}%
+ \edef\@halignto{to\the\dimen@}\@tabular}
+
+%% patching internal code for array.sty and plext.sty
+%
+\def\@startpbox#1{\bgroup
+ \box@dir\adjustbaseline %% added
+ \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 may be changed
+ % (box resister -> conditional macro) in the future;
+ % 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{}}
+\def\endtabular{\endarray $\egroup\null}
+\expandafter \let \csname endtabular*\endcsname = \endtabular
+%
+%% all done
+
+\endinput