% % bounddvi.sty % 2020/10/08 v8.2-v7.0 h.y.acetaminophen [at] gmail.com % 2004/12/15 v6.0-v1.0 inoue [at] ma.ns.tcu.ac.jp % % This package, originally written by Koichi Inoue % and modified by Hironobu Yamashita, is distributed % as part of the gentombow bundle. % https://github.com/aminophen/gentombow % \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bounddvi}[2020/10/08 v8.2 bounddvi] % Note: graphics/color drivers % - dvips.def 2016/07/10 v3.1a or later % - dvipdfmx.def 2016/07/10 v4.12 or later % emit papersize special _only_ when \Gin@setpagesizetrue % and \mag = 1000. When graphicx(s) or color is used with % setpagesize option (= default since 2016) and \mag equals % to 1000, we can exploit its routine. % (they are using \AtBeginDocument{\AtBeginDvi{...}}) % However, these .def files do _not_ care about tombow; so, % we set \stock{width,height} to invoke stock test in those % files (probably meant for memoir.cls). % detection of \iftombow status is delayed until \AtBeginDocument, % to support both (u)pLaTeX kernel and ``gentombow.sty'' \def\bddv@maybe@ensure@stock{% \ifx\tombowtrue\@undefined \let\bddv@ensure@stock\relax % skip if-tokens \fi \bddv@ensure@stock} % when \iftombow == \iftrue, we also need \stock{width,height} \def\bddv@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 } % prepare actual papersize special \def\bddv@emit@papersize{% \begingroup % if \stockwidth/\stockheight are defined & have effective % values, copy them to \paperwidth/\paperheight % for current group \ifx\stockwidth\@undefined\else \ifdim\stockwidth>\z@ \paperwidth\stockwidth \fi\fi \ifx\stockheight\@undefined\else \ifdim\stockheight>\z@ \paperheight\stockheight \fi\fi % adjust for \mag and emit papersize special \divide\paperwidth\@m\multiply\paperwidth\mag \divide\paperheight\@m\multiply\paperheight\mag \special{papersize=\the\paperwidth,\the\paperheight}% \endgroup } %% Since LaTeX2e 2020-10-01, \@begindocumenthook is deprecated %% and \UseHook{begindocument} etc. are used. %% This code appends papersize special to the _end_ of the hook. %% (Note: support for old dvips is removed.) \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \IfFormatAtLeastTF{2020-10-01}{% \AtBeginDocument{% \bddv@maybe@ensure@stock \AtBeginDvi{\bddv@emit@papersize}}% \endinput }{} %% The rest of this package is meant for %% LaTeX2e 2020-02-02 PL5 or older. % following code is almost equivalent to % \AtBeginDocument{\AtBeginDvi{...}} % however, we put into the _beginning_ of \@begindocumenthook; % this ensures proper papersize when old dvips % (TeX Live 2016 or earlier) is used. % also, note that old pLaTeX (before 2016/07/01) needs \yoko % at the beginning of \AtBeginDvi. \begingroup \def\@prependto@begindocumenthook{% \bddv@maybe@ensure@stock \global\setbox\@begindvibox\vbox{% \csname yoko\endcsname\unvbox\@begindvibox \bddv@emit@papersize}} \toks@\expandafter\expandafter\expandafter {\expandafter\@prependto@begindocumenthook\@begindocumenthook} \xdef\@begindocumenthook{\the\toks@} % append papersize special again to the _end_ of the % current \@begindocumenthook; this will be meaningful e.g. when % geometry is loaded before bounddvi. % (geometry adds \AtBeginDocument{\AtBeginDvi{...}} specification) \expandafter\g@addto@macro\expandafter\@begindocumenthook \expandafter{\@prependto@begindocumenthook} \endgroup \endinput