From 5cf5182b44c08dfb2bc977ce5aa5ca6d03b36923 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 21 Jul 2022 03:00:45 +0000 Subject: CTAN sync 202207210300 --- macros/jptex/latex/gentombow/pxesopic.sty | 239 ++++++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 macros/jptex/latex/gentombow/pxesopic.sty (limited to 'macros/jptex/latex/gentombow/pxesopic.sty') diff --git a/macros/jptex/latex/gentombow/pxesopic.sty b/macros/jptex/latex/gentombow/pxesopic.sty new file mode 100644 index 0000000000..567b9d0a2d --- /dev/null +++ b/macros/jptex/latex/gentombow/pxesopic.sty @@ -0,0 +1,239 @@ +% +% pxesopic.sty +% written by Hironobu Yamashita (@aminophen) +% +% This package is part of the gentombow bundle. +% https://github.com/aminophen/gentombow +% +% This package is expected to be compatible with +% * eso-pic.sty +% 2015/07/21 v2.0g -- 2020/09/27 v2.0i +% +% -------------------------------------------------------------- +% [Note] +% The package ``pxesopic.sty'' relies heavily on internals +% of ``plautopatch.sty''. +% Also, ``pxesopic.sty'' is incompatible with ``memoir.cls''. +% -------------------------------------------------------------- +% + +%% package declaration +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pxesopic} + [2020/10/11 v0.4c Patch to eso-pic for tombow] + +%% preparations +\def\pxesop@pkgname{pxesopic} +\def\pxesop@error{\PackageError\pxesop@pkgname} +\def\pxesop@warn{\PackageWarningNoLine\pxesop@pkgname} +\let\pxesop@debug\@gobble +%\def\pxesop@debug#1{\typeout{\pxesop@pkgname: [DEBUG] #1}}% for debug + +\@ifclassloaded{memoir}{% + \pxesop@warn{This package should not be loaded with memoir.cls}}{} + +\@ifpackageloaded{eso-pic}{% + \pxesop@error{% + Package eso-pic is already loaded!\MessageBreak + Load pxesopic earlier}\@ehc +}{} + +%% hooks +\ifx\declare@file@substitution\@undefined + % LaTeX2e 2020-02-02 PL5 or older + \RequirePackage{filehook} + \let\pxesop@ExecuteAfterPackage=\AtEndOfPackageFile + \let\pxesop@ExecuteBeforePackage=\AtBeginOfPackageFile +\else + % LaTeX2e 2020-10-01 or newer + \def\pxesop@ExecuteAfterPackage#1{\AddToHook{package/after/#1}} + \def\pxesop@ExecuteBeforePackage#1{\AddToHook{package/before/#1}} +\fi + +%% the contents of \AtBeginShipout is dependent on \iftombow; +%% delay execution of \AtBeginShipout inside ``eso-pic.sty'' +%% until \AtBeginDocument, to support both (u)pLaTeX kernel +%% and ``gentombow.sty'' +\RequirePackage{atbegshi}% eso-pic requires atbegshi +\ifx\pfmtname\@undefined\else + \ifx\AtBegShi@Output\@undefined + % LaTeX2e 2020-10-01: an emulation by ``atbegshi-ltx.sty'' + % => pLaTeX2e 2020-10-01 natively supports it + \else + % older: the real ``atbegshi.sty'' is loaded + \IfFileExists{pxatbegshi.sty}{\RequirePackage{pxatbegshi}}{} + \fi +\fi +% +\pxesop@ExecuteBeforePackage{eso-pic}{\pxesop@before} +\pxesop@ExecuteAfterPackage{eso-pic}{\pxesop@after} +% +\def\pxesop@before{% + \let\pxesop@AtBeginShipout\AtBeginShipout + \def\AtBeginShipout##1{\def\pxesop@hook{##1}}% hide it + \pxesop@debug{\noexpand\AtBeginShipout disabled}% + \let\pxesop@before\relax +} +\def\pxesop@after{% + \let\AtBeginShipout\pxesop@AtBeginShipout % restore + \let\pxesop@AtBeginShipout\relax + \pxesop@debug{\noexpand\AtBeginShipout restored}% + \let\@unknownoptionerror\relax %% avoid an error + \pxesop@debug{\noexpand\@unknownoptionerror disabled}% + \let\pxesop@after\relax +} +%% + +%% load it; be careful not to cause unknown option error! +\expandafter\ifx\csname @unknownoptionerror\endcsname + \pxesop@error{Failed to save \noexpand\@unknownoptionerror}\@ehc +\fi +\let\pxesop@unknownoptionerror\@unknownoptionerror +% +\chardef\pxesop@status\z@ +\@ifpackageloaded{plautopatch}{% + \expandafter\ifx\csname platpc@begin@eso-pic\endcsname\relax + % ``plautopatch.sty'' is loaded but the macro is \relax + % => means that ``pxesopic.sty'' is automatically loaded + \@ifl@t@r{\fmtversion}{2020/10/01}{% + \chardef\pxesop@status\@ne + }{}% + \fi +}{} +% +%% pass all options to keyval-style ``eso-pic.sty'' +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eso-pic}} +\ProcessOptions\relax +\RequirePackage{eso-pic} +% +%% ensure internal dimensions added in ``eso-pic.sty'' v2.0i +\ifx\ESO@tempdima\@undefined \newdimen\ESO@tempdima \fi +\ifx\ESO@tempdimb\@undefined \newdimen\ESO@tempdimb \fi +% +%% recover the error +\ifnum\pxesop@status>\z@ % auto + \def\pxesop@pkgtohook{eso-pic}% + % note that ``plautopatch.sty'' discards the hook + % on LaTeX2e 2020-02-02 PL5 or older + \ifx\declare@file@substitution\@undefined + \let\pxesop@pkgtohook\pxesop@pkgname + % throw an error for unsupported usage + % [FIXME] the error below is actually unnecessary when + % none of ``eso-pic.sty'' options is used; how to detect that? + \pxesop@error{Try loading \pxesop@pkgname\space by hand}\@ehc + \fi +\else + \let\pxesop@pkgtohook\pxesop@pkgname +\fi +\pxesop@ExecuteAfterPackage\pxesop@pkgtohook{% + \let\@unknownoptionerror\pxesop@unknownoptionerror + \pxesop@debug{\noexpand\@unknownoptionerror restored}% +} +%% + +%% do it +%-- similar to bounddvi.sty (checked 2020/10/08 v8.2) +% detection of \iftombow availability is delayed until \AtBeginDocument, +% to support both (u)pLaTeX kernel and ``gentombow.sty'' +% Note: this package does not consider changing \iftombow status +% in the middle of a single document. +\AtBeginDocument{\pxesop@do} +\def\pxesop@do{% + \ifx\tombowtrue\@undefined + \pxesop@debug{Tombow feature unavailable, no patch applied}% + \let\pxesop@switch\pxesop@orig % skip if-tokens and restore + \fi + \pxesop@switch} +% +\def\pxesop@switch{% + \iftombow \pxesop@ensure@stock \pxesop@new + \else \pxesop@orig \fi} +% +\def\pxesop@ensure@stock{% + %\iftombow + % if \stockwidth/\stockheight are not available, + % define them now + \ifx\stockwidth\@undefined \newdimen\stockwidth \fi + \ifx\stockheight\@undefined \newdimen\stockheight \fi + % if \stockwidth already has effective value, do nothing; + % otherwise assume pLaTeX-style tombow and set it to + % \paperwidth + 2in (similar for \stockheight) + \ifdim\stockwidth>\z@\else + \stockwidth\paperwidth \advance\stockwidth2in + \fi + \ifdim\stockheight>\z@\else + \stockheight\paperheight \advance\stockheight2in + \fi + %\fi +} +%-- +% +%% for \iftombow is FALSE => restore from ``eso-pic.sty'' +\expandafter\def\expandafter\pxesop@orig\expandafter{% + \expandafter\AtBeginShipout\expandafter{\pxesop@hook}} +% +%% for \iftombow is TRUE => redefine by ``pxesopic.sty'' +\def\pxesop@new{% + %% \AtStockLowerLeft: based on TRUE of \ESO@isMEMOIR + \renewcommand\AtStockLowerLeft[1]{% + \begingroup + \ESO@tempdima=-\stockwidth + \advance\ESO@tempdima\paperwidth + \ESO@tempdimb=-\stockheight + \advance\ESO@tempdimb\paperheight + %% specific BEGIN + \advance\ESO@tempdima 1in\relax + \advance\ESO@tempdimb 1in\relax + \advance\ESO@tempdima \hoffset\relax + \advance\ESO@tempdimb \voffset\relax + %% specific END + \AtPageLowerLeft{% + \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){##1}% + }% + \endgroup + }% === + %% \AtStockUpperLeft: based on TRUE of \ESO@isMEMOIR + \renewcommand\AtStockUpperLeft[1]{% + \AtStockLowerLeft{% + \put(0,\LenToUnit{\stockheight}){##1}% + }% + }% === + %% \AtStockCenter: based on TRUE of \ESO@isMEMOIR + \renewcommand\AtStockCenter[1]{% + \AtStockLowerLeft{% + \put(\LenToUnit{.5\stockwidth},\LenToUnit{.5\stockheight}){##1}% + }% + }% + %% \AtTextUpperLeft: same as FALSE of \ESO@isMEMOIR + % (no change) + % + %% \AtBeginShipout: based on TRUE of \ESO@isMEMOIR + \AtBeginShipout{% + \ESO@tempdima=\dimexpr(\stockwidth-\paperwidth)/2\relax + \ESO@tempdimb=-\dimexpr(\stockheight+\paperheight)/2\relax + \ifESO@texcoord + \advance\ESO@tempdimb\paperheight % [FIXME] not sure! + \fi + %% specific BEGIN + \advance\ESO@tempdima -\hoffset\relax + \advance\ESO@tempdimb \voffset\relax + %% specific END + \nointerlineskip + \AtBeginShipoutUpperLeft{% + \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){% + \ESO@HookIIIBG\ESO@HookIBG\ESO@HookIIBG + \global\let\ESO@HookIIBG\@empty + }% + }% + \AtBeginShipoutUpperLeftForeground{% + \put(\LenToUnit{\ESO@tempdima},\LenToUnit{\ESO@tempdimb}){% + \ESO@HookIFG\ESO@HookIIFG\ESO@HookIIIFG + \global\let\ESO@HookIIFG\@empty + }% + }% + }% === +} +%% + +\endinput +%% EOF -- cgit v1.2.3