-
Notifications
You must be signed in to change notification settings - Fork 0
/
bounddvi.sty
112 lines (103 loc) · 3.89 KB
/
bounddvi.sty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
%
% 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