5 \NeedsTeXFormat{LaTeX2e}
6 \ProvidesPackage{lltjp-geometry}[2014/11/23 Patch to geometry for LuaTeX-ja with vertical writing mode]
7 \RequirePackage{ifluatex}
9 \newif\if@ltj@@geometry@tate
10 \@ltj@@geometry@tatefalse
12 \@ltj@@geometry@tatetrue
14 \global \setbox \@begindvibox
15 \vbox{\yoko\unvbox \@begindvibox #1}%
19 \RequirePackage{filehook}
21 \AtBeginOfPackageFile{geometry}{%
22 \edef\Gm@ltj@topskip{\the\topskip}
23 \edef\Gm@ltj@headsep{\the\headsep}
24 \edef\Gm@ltj@footskip{\the\footskip}
26 \AtEndOfPackageFile{geometry}{%
28 \ifnum\ltjgetparameter{direction}=3 \@ltj@@geometry@tatetrue\fi
30 \if@ltj@@geometry@tate
31 \define@key{Gm}{hdivide}{\Gm@parse@divide{#1}{tmargin}{width}{bmargin}}%
32 \define@key{Gm}{vdivide}{\Gm@parse@divide{#1}{rmargin}{height}{lmargin}}%
33 \define@key{Gm}{divide}{\Gm@parse@divide{#1}{tmargin}{width}{bmargin}%
34 \Gm@parse@divide{#1}{rmargin}{height}{lmargin}}%
35 \define@key{Gm}{hmargin}{\Gm@branch{#1}{tmargin}{bmargin}}%
36 \define@key{Gm}{vmargin}{\Gm@branch{#1}{rmargin}{lmargin}}%
37 \define@key{Gm}{margin}{\Gm@branch{#1}{tmargin}{rmargin}%
38 \Gm@branch{#1}{bmargin}{lmargin}}%
39 \define@key{Gm}{headsep}{\Gm@defbylen{ltj@headsep}{#1}}%
40 \define@key{Gm}{footskip}{\Gm@defbylen{ltj@footskip}{#1}}%
44 \Gm@savelength{paperwidth}%
45 \Gm@savelength{paperheight}%
46 \Gm@savelength{textwidth}%
47 \Gm@savelength{textheight}%
48 \Gm@savelength{evensidemargin}%
49 \Gm@savelength{oddsidemargin}%
50 \Gm@savelength{topmargin}%
51 \Gm@savelength{headheight}%
52 %\Gm@savelength{headsep}%
53 \Gm@savelength{topskip}%
54 %\Gm@savelength{footskip}%
55 \Gm@savelength{baselineskip}%
56 \Gm@savelength{marginparwidth}%
57 \Gm@savelength{marginparsep}%
58 \Gm@savelength{columnsep}%
59 \Gm@savelength{hoffset}%
60 \Gm@savelength{voffset}
61 \Gm@savelength{Gm@layoutwidth}%
62 \Gm@savelength{Gm@layoutheight}%
63 \Gm@savelength{Gm@layouthoffset}%
64 \Gm@savelength{Gm@layoutvoffset}%
65 \Gm@saveboolean{@twocolumn}%
66 \Gm@saveboolean{@twoside}%
67 \Gm@saveboolean{@mparswitch}%
68 \Gm@saveboolean{@reversemargin}}%
71 \renewcommand*{\Gm@pageframes}{%
74 \vb@xt@\z@{\vskip-1\Gm@truedimen in\vskip\Gm@layoutvoffset%
75 \hb@xt@\z@{\hskip-1\Gm@truedimen in\hskip\Gm@layouthoffset%
76 \vb@xt@\Gm@layoutheight{%
78 \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,1,-3,3)\hfil\Gm@cropmark(1,1,3,3)}%
80 \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,-1,-3,-3)\hfil\Gm@cropmark(1,-1,3,-3)}}%
87 \let\@themargin\oddsidemargin
89 \let\@themargin\evensidemargin
92 \moveright\@themargin%
94 \vskip\topmargin\vb@xt@\z@{\vss\Gm@hrule}%
95 \vskip\headheight\vb@xt@\z@{\vss\Gm@hruled}%
96 \vskip\headsep\vb@xt@\z@{\vss\Gm@hrule}%
97 \if@reversemargin\vb@xt@\z@{%
98 \vss\vb@xt@\z@{\vss\Gm@hrule}%
99 \vskip\marginparwidth\vb@xt@\z@{\vss\Gm@hrule}%
102 \hb@xt@\textwidth{\llap{\Gm@vrule}\hfil\Gm@vrule}%
103 \vb@xt@\z@{\vss\Gm@hruled}%
104 \unless\if@reversemargin\vb@xt@\z@{%
105 \vskip\marginparsep\vb@xt@\z@{\vss\Gm@hrule}%
106 \vskip\marginparwidth\vb@xt@\z@{\vss\Gm@hruled}%
108 \vskip\footskip\vb@xt@\z@{\vss\Gm@hruled}%
113 \def\Gm@detall#1#2#3#4{%
116 \let\Gm@mratio\Gm@hmarginratio
117 \edef\Gm@Dmratio{\if@twoside\Gm@Dhratiotwo\else\Gm@Dhratio\fi}%
119 \let\Gm@mratio\Gm@vmarginratio
120 \edef\Gm@Dmratio{\Gm@Dvratio}%
123 \ifx\Gm@tmargin\@undefined\else\advance\@tempcnta4\relax\fi
124 \ifGm@hbody\advance\@tempcnta2\relax\fi
125 \ifx\Gm@bmargin\@undefined\else\advance\@tempcnta1\relax\fi
128 \ifx\Gm@rmargin\@undefined\else\advance\@tempcnta4\relax\fi
129 \ifGm@vbody\advance\@tempcnta2\relax\fi
130 \ifx\Gm@lmargin\@undefined\else\advance\@tempcnta1\relax\fi
135 \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
137 \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
139 \Gm@detiiandiii{#2}{#3}{#4}%
141 \ifx\Gm@mratio\@undefined
143 \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
145 \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
147 \setlength\@tempdimc{\@nameuse{Gm@#4}}%
148 \Gm@detiiandiii{#2}{#3}{#4}%
149 \expandafter\let\csname Gm@#2\endcsname\@undefined
150 \Gm@defbylen{#4}{\@tempdimc}%
152 \Gm@setbyratio[f]{#1}{#4}{#3}%
154 \Gm@detiv{#2}{#3}{#4}{#2}%
155 \or\Gm@detiiandiii{#2}{#3}{#4}%
156 \or\Gm@detiv{#2}{#2}{#4}{#3}%
158 \ifx\Gm@mratio\@undefined
160 \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
162 \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
164 \setlength\@tempdimc{\@nameuse{Gm@#3}}%
165 \Gm@detiiandiii{#2}{#4}{#3}%
166 \expandafter\let\csname Gm@#2\endcsname\@undefined
167 \Gm@defbylen{#3}{\@tempdimc}%
169 \Gm@setbyratio[b]{#1}{#3}{#4}%
171 \Gm@detiv{#2}{#3}{#4}{#2}%
172 \or\Gm@detiv{#2}{#3}{#4}{#2}%
173 \or\Gm@detiv{#2}{#2}{#3}{#4}%
174 \or\Gm@warning{Over-specification in `#1'-direction.%
175 ^^J\@spaces `#2' (\@nameuse{Gm@#2}) is ignored}%
176 \Gm@detiv{#2}{#3}{#4}{#2}%
179 \ifnum\Gm@cnth<4\let\Gm@tmargin\@undefined\fi
180 \ifodd\Gm@cnth\else\let\Gm@bmargin\@undefined\fi
181 \ifnum\Gm@cntv<4\let\Gm@rmargin\@undefined\fi
182 \ifodd\Gm@cntv\else\let\Gm@lmargin\@undefined\fi
184 \let\Gm@hscale\@undefined
185 \let\Gm@width\@undefined
186 \let\Gm@textwidth\@undefined
189 \let\Gm@vscale\@undefined
190 \let\Gm@height\@undefined
191 \let\Gm@textheight\@undefined
194 \def\Gm@adjustpaper{%
195 \ifdim\paperwidth>\p@\else
196 \PackageError{geometry}{%
197 \string\paperwidth\space(\the\paperwidth) too short}{%
198 Set a paper type (e.g., `a4paper').}%
200 \ifdim\paperheight>\p@\else
201 \PackageError{geometry}{%
202 \string\paperheight\space(\the\paperheight) too short}{%
203 Set a paper type (e.g., `a4paper').}%
206 \setlength\@tempdima{\paperwidth}%
207 \setlength\paperwidth{\paperheight}%
208 \setlength\paperheight{\@tempdima}%
211 \setlength\Gm@layoutwidth{\paperheight}%
212 \setlength\Gm@layoutheight{\paperwidth}%
216 \ifx\Gm@width\@undefined
217 \ifx\Gm@hscale\@undefined
218 \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
220 \Gm@defbylen{width}{\Gm@hscale\Gm@layoutwidth}%
223 \ifx\Gm@textwidth\@undefined\else
224 \setlength\@tempdima{\Gm@textwidth}%
226 \advance\@tempdima\Gm@wd@mp
229 \addtolength\@tempdima{\headheight}%
230 \addtolength\@tempdima{\headsep}%
233 \addtolength\@tempdima{\footskip}%
235 \edef\Gm@width{\the\@tempdima}%
239 \ifx\Gm@height\@undefined
240 \ifx\Gm@vscale\@undefined
241 \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
243 \Gm@defbylen{height}{\Gm@vscale\Gm@layoutheight}%
246 \setlength\topskip\Gm@ltj@topskip
247 \ifx\Gm@lines\@undefined\else
248 \setlength\maxdepth{1\Cht}%
249 \setbox\z@=\hbox{\tate% next \ifdim must be executed in tate dir.
250 \ifdim\topskip<\ht\tstrutbox
252 \global\topskip\ht\tstrutbox
253 \PackageWarningNoLine{lltjp-geometry}%
254 {do not worry about `\noexpand\topskip was changed ...'\MessageBreak
256 \PackageWarningNoLine{lltjp-geometry}%
257 {\noexpand\topskip was changed from \the\@tempdima\space
260 \setlength\@tempdima{\baselineskip}%
261 \multiply\@tempdima\Gm@lines
262 \addtolength\@tempdima{\topskip}%
263 \addtolength\@tempdima{-\baselineskip}%
264 \edef\Gm@textheight{\the\@tempdima}%
266 \ifx\Gm@textheight\@undefined\else
267 \edef\Gm@height{\Gm@textheight}%
273 \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}%
276 \Gm@detall{h}{width}{tmargin}{bmargin}%
277 \Gm@detall{v}{height}{rmargin}{lmargin}%
278 \setlength\textwidth{\Gm@width}%
279 \setlength\textheight{\Gm@height}%
280 \setlength\headsep{\Gm@ltj@headsep}%
281 \setlength\footskip{\Gm@ltj@footskip}%
282 \setlength\topmargin{\Gm@tmargin}%
283 \setlength\oddsidemargin{\Gm@lmargin}%
284 \addtolength\oddsidemargin{-1\Gm@truedimen in}%
286 \setlength\evensidemargin{\Gm@rmargin}%
287 \addtolength\evensidemargin{-1\Gm@truedimen in}%
289 \advance\evensidemargin\Gm@even@mp
292 \evensidemargin\oddsidemargin
294 \advance\oddsidemargin\Gm@bindingoffset
295 \addtolength\topmargin{-1\Gm@truedimen in}%
297 \addtolength\textwidth{-\headheight}%
298 \addtolength\textwidth{-\headsep}%
300 \addtolength\topmargin{-\headheight}%
301 \addtolength\topmargin{-\headsep}%
304 \addtolength\textwidth{-\footskip}%
307 \advance\textwidth-\Gm@wd@mp
309 \advance\headsep\Gm@wd@mp
311 \advance\footskip\Gm@wd@mp
315 \setlength\@tempdima{\textheight}%
316 \addtolength\@tempdima{-\topskip}%
318 \@tempcntb\baselineskip
319 \divide\@tempcnta\@tempcntb
320 \setlength\@tempdimb{\baselineskip}%
321 \multiply\@tempdimb\@tempcnta
322 \advance\@tempdima-\@tempdimb
323 \multiply\@tempdima\tw@
324 \ifdim\@tempdima>\baselineskip
325 \addtolength\@tempdimb{\baselineskip}%
327 \addtolength\@tempdimb{\topskip}%
328 \textheight\@tempdimb
330 \advance\oddsidemargin\Gm@layoutvoffset%
331 \advance\evensidemargin\Gm@layoutvoffset%
332 \advance\topmargin\Gm@layouthoffset%
333 \addtolength\Gm@layoutheight{\Gm@bindingoffset}%
334 }% end of \Gm@@process
337 \ProcessOptionsKV[c]{Gm}%
339 \ProcessOptionsKV[p]{Gm}%