From 177eef25dd40b669810a53bb5c853ae7473ddbe1 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 15 Oct 2016 22:50:51 +0000 Subject: platex-tools (15oct16) git-svn-id: svn://tug.org/texlive/trunk@42263 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/platex-tools/plextarray.sty | 102 +++++++++++++++ .../tex/latex/platex-tools/plextdelarray.sty | 48 +++++++ .../tex/latex/platex-tools/pxeverysel.sty | 145 +++++++++++++++++++++ .../tex/latex/platex-tools/pxeveryshi.sty | 28 ++++ .../tex/latex/platex-tools/pxftnright.sty | 132 +++++++++++++++++++ 5 files changed, 455 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/platex-tools/plextarray.sty create mode 100644 Master/texmf-dist/tex/latex/platex-tools/plextdelarray.sty create mode 100644 Master/texmf-dist/tex/latex/platex-tools/pxeverysel.sty create mode 100644 Master/texmf-dist/tex/latex/platex-tools/pxeveryshi.sty create mode 100644 Master/texmf-dist/tex/latex/platex-tools/pxftnright.sty (limited to 'Master/texmf-dist/tex/latex/platex-tools') 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}} +% +%% 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 diff --git a/Master/texmf-dist/tex/latex/platex-tools/plextdelarray.sty b/Master/texmf-dist/tex/latex/platex-tools/plextdelarray.sty new file mode 100644 index 00000000000..b81a88b3323 --- /dev/null +++ b/Master/texmf-dist/tex/latex/platex-tools/plextdelarray.sty @@ -0,0 +1,48 @@ +% +% plextdelarray.sty +% written by Hironobu Yamashita (@aminophen) +% +% This package is part of the platex-tools bundle. +% https://github.com/aminophen/platex-tools +% +% This package `plextdelarray.sty' is based on: +% * delarray.sty in latex-tools (2014/10/28 v1.01) +% * plext.sty in platex (2016/08/20 v1.2a) +% + +\NeedsTeXFormat{pLaTeX2e} +\ProvidesPackage{plextdelarray} + [2016/09/11 v1.0 array delimiter package for plext and delarray] +\RequirePackage{plextarray} +\RequirePackage{delarray} + +%% patching internal code for array.sty and plext.sty +% +\def\@tabarray{\@ifnextchar<\p@tabarray{\p@tabarray}} +% +%% adopt from \p@tabarray (from plext.sty) +\def\p@tabarray<#1>{\m@th\@ifnextchar[%] + {\p@@array<#1>}{\p@@array<#1>[c]}} +% +%% adopt from \@@array (from delarray.sty) +\def\p@@array<#1>[#2]{\@ifnextchar\bgroup + {\let\@arrayleft\relax\let\@arrayright\relax\p@array<#1>[#2]}% + {\p@del@array<#1>[#2]}} +% +%% adopt from \@del@array (from delarray.sty) +\def\p@del@array<#1>[#2]#3#4#5{% + \setbox\z@\hbox{$\left#3\right#5$}% + \if#2c\def\@arrayleft{\left#3}\def\@arrayright{\right#5}% + \else\def\@arrayleft{\setbox\z@=\hbox\bgroup}% !!! + \def\@arrayright{\egroup% !!! + \dimen@=\dp\z@ + \advance\dimen@-\ht\z@ + \divide \dimen@ by \tw@ + \advance\dimen@ by\fontdimen22 \textfont\tw@ + \lower\dimen@\hbox{$\left#3\vcenter{\box\z@}\right#5$}}% !!! + \fi + \p@array<#1>[#2]{#4}} +% +%% all done + +\endinput diff --git a/Master/texmf-dist/tex/latex/platex-tools/pxeverysel.sty b/Master/texmf-dist/tex/latex/platex-tools/pxeverysel.sty new file mode 100644 index 00000000000..c73a8c4b657 --- /dev/null +++ b/Master/texmf-dist/tex/latex/platex-tools/pxeverysel.sty @@ -0,0 +1,145 @@ +% +% pxeverysel.sty +% originally written by Takayuki Yato (ZR) +% and modified by Hironobu Yamashita +% +% This package is distributed as part of the platex-tools bundle +% maintained by Hironobu Yamashita +% by courtesy of the original author. +% https://github.com/aminophen/platex-tools +% + +%% package declaration +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pxeverysel} + [2016/09/09 v0.4 Patch to everysel for (u)pLaTeX] + +%% if ctex classes/packages are already loaded, exit silently +\ifdefined\CTEXoptions % defined at least CTeX 2007/05/06 + \expandafter\endinput +\fi + +%% preparations +\def\pxys@pkgname{pxeverysel} +\def\pxys@warn{\PackageWarningNoLine\pxys@pkgname} + +%% load it +\RequirePackage{everysel} + +%% support for (u)pLaTeX font tracing +\@ifpackageloaded{tracefnt}{% + \ifx\kanjiskip\@undefined\else\ifx\ucs\@undefined + \RequirePackage{ptrace}\else\RequirePackage{uptrace}\fi\fi}{} + +%--------------------------------------- helpers + +%% unique tokens +\def\pxys@mark{\pxys@mark@} +\def\pxys@fin{\pxys@fin@} + +%% \pxys@patch@cmd\CMD{
}{}{}
+\@onlypreamble\pxys@patch@cmd
+\def\pxys@patch@cmd#1#2#3#4{%
+  \def\pxys@next##1#2##2#3##3\pxys@mark##4\pxys@fin{%
+    \ifx\pxys@mark##4\pxys@mark
+      \let\pxys@fragment\relax
+    \else
+      \def\pxys@fragment{##2}%
+      \def#1{##1#4##3}%
+    \fi}%
+  \expandafter\pxys@next#1\pxys@mark#2#3\pxys@mark\pxys@fin}
+
+%% \pxys@append@to\CSa\CSb
+\@onlypreamble\pxys@append@to
+\def\pxys@append@to#1#2{%
+  \expandafter\g@addto@macro\expandafter#1\expandafter{#2}}
+
+%% \pxys@term
+\let\pxys@term\relax
+
+%---------------------------------------
+
+%% variables
+\let\pxys@self@hook\@empty
+\let\pxys@everysel@hook\@empty
+\@onlypreamble\pxys@selectfont
+\let\pxys@selectfont\relax
+\@onlypreamble\pxys@org@selectfont
+\let\pxys@org@selectfont\relax
+\@onlypreamble\pxys@new@selectfont
+\let\pxys@new@selectfont\relax
+
+%% \@EverySelectfont@Init redefined
+\@onlypreamble\pxys@EverySelectfont@Init
+\let\pxys@EverySelectfont@Init\@EverySelectfont@Init
+\def\@EverySelectfont@Init{%
+  \pxys@preproc
+  \pxys@EverySelectfont@Init
+  \pxys@postproc}
+
+%% \pxys@preproc
+\@onlypreamble\pxys@preproc
+\def\pxys@preproc{%
+  % prepare
+  \expandafter\let\expandafter\pxys@selectfont
+      \csname selectfont \endcsname
+  \let\pxys@org@selectfont\pxys@selectfont
+  % extract "pre-\size@update" insertion
+  \pxys@append@to\pxys@selectfont\pxys@term
+  \pxys@patch@cmd\pxys@selectfont
+    {\pickup@font\font@name}{\size@update\pxys@term}%      % plfonts/ptrace
+    {\pickup@font\font@name\pxys@self@hook\pxys@everysel@hook
+     \size@update\enc@update}%
+  \ifx\pxys@fragment\relax
+    \let\pxys@selectfont\pxys@org@selectfont
+    % extract "pre-\enc@update" insertion
+    \pxys@patch@cmd\pxys@selectfont
+      {\pickup@font\font@name}{\size@update\enc@update}%   % ltfsstrc/tracefnt
+      {\pickup@font\font@name\pxys@self@hook\pxys@everysel@hook
+       \size@update\enc@update}%
+    \ifx\pxys@fragment\relax % failure
+      \let\pxys@selectfont\relax
+    \else
+      \pxys@append@to\pxys@self@hook\pxys@fragment
+    \fi
+  \else
+    \pxys@append@to\pxys@self@hook\pxys@fragment
+  \fi
+  \let\pxys@new@selectfont\pxys@selectfont
+  % prepare for everysel routine
+  \let\CheckCommand\@gobble
+  % hack for disabling duplicate font info
+  \expandafter\let\expandafter\pxys@ver@tracefnt
+    \csname ver@tracefnt.sty\endcsname
+  \expandafter\let\csname ver@tracefnt.sty\endcsname\@undefined}
+
+%% \pxys@postproc
+\@onlypreamble\pxys@postproc
+\def\pxys@postproc{%
+  % revert the hack for disabling duplicate font info
+  \expandafter\let\csname ver@tracefnt.sty\endcsname\pxys@ver@tracefnt
+  % post handling of everysel routine
+  \let\CheckCommand\pxys@CheckCommand
+  \let\pxys@CheckCommand\@undefined
+  \expandafter\let\expandafter\pxys@selectfont
+      \csname selectfont \endcsname
+  % extract the code insertion by everysel
+  \pxys@patch@cmd\pxys@selectfont
+    {\pickup@font\font@name}{\size@update\enc@update}{}%
+  \ifx\pxys@fragment\relax % failure
+    \let\pxys@new@selectfont\relax
+  \else % success
+    \pxys@append@to\pxys@everysel@hook\pxys@fragment
+  \fi
+  % commit the change
+  \ifx\pxys@new@selectfont\relax % failure
+    \let\pxys@selectfont\pxys@org@selectfont % revert
+    \pxys@warn{Failed in patching \string\selectfont}%
+  \else % success
+    \let\pxys@selectfont\pxys@new@selectfont
+  \fi
+  \expandafter\let\csname selectfont \endcsname\pxys@selectfont}
+
+%--------------------------------------- done
+\endinput
+%% EOF
diff --git a/Master/texmf-dist/tex/latex/platex-tools/pxeveryshi.sty b/Master/texmf-dist/tex/latex/platex-tools/pxeveryshi.sty
new file mode 100644
index 00000000000..8a534095d96
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/platex-tools/pxeveryshi.sty
@@ -0,0 +1,28 @@
+%
+% pxeveryshi.sty
+% written by Takayuki Yato (ZR)
+%
+% This package is distributed as part of the platex-tools bundle
+% maintained by Hironobu Yamashita
+% by courtesy of the original author.
+% https://github.com/aminophen/platex-tools
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxeveryshi}
+    [2012/05/19 v0.1 everyshi package for pLaTeX]
+\RequirePackageWithOptions{everyshi}
+%
+\def\@EveryShipout@Output{%
+  \setbox8\vbox{%
+    \yoko
+    \@EveryShipout@Hook
+    \@EveryShipout@AtNextHook
+    \global\setbox\@cclv=\box\@cclv
+  }%
+  \gdef\@EveryShipout@AtNextHook{}%
+  \@EveryShipout@Org@Shipout\box\@cclv
+}
+%
+\endinput
+%% EOF
diff --git a/Master/texmf-dist/tex/latex/platex-tools/pxftnright.sty b/Master/texmf-dist/tex/latex/platex-tools/pxftnright.sty
new file mode 100644
index 00000000000..f16fa403624
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/platex-tools/pxftnright.sty
@@ -0,0 +1,132 @@
+%
+% pxftnright.sty
+% written by Hironobu Yamashita (@aminophen)
+%
+% This package is part of the platex-tools bundle.
+% https://github.com/aminophen/platex-tools
+%
+% This package `pxftnright' is based on:
+%   * ftnright.sty in latex-tools (2014/10/28 v1.1f)
+%
+% Problems with ftnright to use with pLaTeX:
+%   * \@startcolumn is redefined
+%     (incompatible with vertical typesetting)
+%   * \@makecol is redefined
+%     (bottom float after footnote)
+%   * \@makefntext is redefined
+%     (incompatible with some pLaTeX classes)
+%   * \footnotesep is not suitable for vertical typesetting
+%     (rather a problem of \strutbox in pLaTeX2e kernel?)
+% so, this package provides patches.
+%
+
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesPackage{pxftnright}
+  [2016/09/07 v1.0 footnote layout package for pLaTeX]
+
+%% save \@makefntext definition from pLaTeX class
+\@ifpackageloaded{ftnright}{%
+  \PackageError{pxftnright}{%
+    Package ftnright is already loaded!\MessageBreak
+    Load pxftnright earlier}\@ehc
+}{}
+\let\pxftn@makefntext\@makefntext
+
+%% load ftnright package
+\RequirePackage{ftnright}
+
+%% patches for ftnright to work fine with pLaTeX
+%% This code is based on pLaTeX2e 2016/09/03 community ed.
+
+\def\@startcolumn{%
+ \ifx\@deferlist\@empty
+   \global\@fcolmadefalse
+   \global\@colroom\@colht
+ \else
+   \ifvoid\footins\else
+     \ftn@amount\ht\footins
+     \advance\ftn@amount\dp\footins
+     \advance\ftn@amount\skip\footins
+   \fi
+   \global\advance\@colht-\ftn@amount
+   \global\@colroom\@colht
+   \@xstartcol
+   \global\advance\@colht\ftn@amount
+   \global\advance\@colroom\ftn@amount
+ \fi
+ \if@fcolmade
+  \setbox\@cclv\box\@outputbox
+  \@makecol
+ \else
+%%%%% change for pLaTeX (import from \@reinserts in plcore)
+  \ifvoid\footins\else\insert\footins{%
+    \iftbox\footins\tate\else\yoko\fi
+    \unvbox\footins}\fi
+%%%%%
+ \fi}
+
+\def\@makecol{%
+%%%%% change for pLaTeX
+  \setbox\@outputbox\box\@cclv
+%%%%%
+ \if@firstcolumn
+  \if@twocolumn \else
+    \ifvoid\footins \else
+      \@latexerr{ftnright package
+                 used in one-column mode}%
+   {The ftnright package was designed to
+    work with LaTeX's standard^^Jtwocolumn
+    option. It does *not* work with the
+    multicol package.^^JSo please specify
+    `twocolumn' in the
+    \noexpand\documentclass command.}%
+      \shipout\box\footins \fi\fi
+  \ifnum\insertpenalties>\z@
+      \@latexerr{ftnright package
+                 scrambled footnotes}%
+    {There is too much footnote material in
+     the first column  and ftnright^^Jis
+     unable to cope with this.^^JYou need
+     to reduce the amount to get a properly
+     formatted page.}%
+  \fi
+ \fi
+  \xdef\@freelist{\@freelist\@midlist}%
+  \global \let \@midlist \@empty
+  \@combinefloats
+  \ifvbox\@kludgeins
+    \@makespecialcolbox
+  \else
+%%%%% change for pLaTeX (import from \@makecol in plcore)
+     \setbox\@outputbox \vbox to\@colht {%
+       \boxmaxdepth\maxdepth
+       \@texttop
+       \dimen@ \dp\@outputbox
+       \unvbox \@outputbox
+       \iftdir\vbox{\hskip\z@}\fi
+       \vskip -\dimen@
+       \@textbottom
+     \if@firstcolumn\else
+       \ifvoid\footins\else % for pLaTeX
+         \vskip \skip\footins
+         \color@begingroup
+            \normalcolor
+            \footnoterule
+            \unvbox \footins
+         \color@endgroup
+       \fi
+     \fi
+       }%
+%%%%%
+  \fi
+  \global\maxdepth\@maxdepth
+}
+
+%% adjust \footnotesep for vertical typesetting
+\AtBeginDocument
+  {\global\footnotesep\ht\iftdir\tstrutbox\else\strutbox\fi}
+
+%% restore \@makefntext
+\let\@makefntext\pxftn@makefntext
+
+\endinput
-- 
cgit v1.2.3