OSDN Git Service

46ee0e4f031b099a0794146e3f8e8adf4212f16e
[luatex-ja/luatexja.git] / src / patches / lltjp-geometry.sty
1 %
2 % lltjp-geometry.sty
3 %
4
5 \NeedsTeXFormat{LaTeX2e}
6 \ProvidesPackage{lltjp-geometry}[2014/11/23 Patch to geometry for LuaTeX-ja with vertical writing mode]
7 \RequirePackage{ifluatex}
8
9 \newif\if@ltj@@geometry@tate
10 \@ltj@@geometry@tatefalse
11 \ifluatex\else % pTeX
12   \@ltj@@geometry@tatetrue
13 \def \AtBeginDvi #1{%
14   \global \setbox \@begindvibox
15     \vbox{\yoko\unvbox \@begindvibox #1}%
16 }
17 \fi
18
19 \RequirePackage{filehook}
20
21
22 \AtEndOfPackageFile{geometry}{%
23 \ifluatex
24   \ifnum\ltjgetparameter{direction}=3 \@ltj@@geometry@tatetrue\fi
25 \fi
26 \typeout{\meaning\if@ltj@@geometry@tate}
27 \if@ltj@@geometry@tate
28 \define@key{Gm}{hdivide}{\Gm@parse@divide{#1}{tmargin}{width}{bmargin}}%
29 \define@key{Gm}{vdivide}{\Gm@parse@divide{#1}{rmargin}{height}{lmargin}}%
30 \define@key{Gm}{divide}{\Gm@parse@divide{#1}{tmargin}{width}{bmargin}%
31   \Gm@parse@divide{#1}{rmargin}{height}{lmargin}}%
32 \define@key{Gm}{hmargin}{\Gm@branch{#1}{tmargin}{bmargin}}%
33 \define@key{Gm}{vmargin}{\Gm@branch{#1}{rmargin}{lmargin}}%
34 \define@key{Gm}{margin}{\Gm@branch{#1}{tmargin}{rmargin}%
35   \Gm@branch{#1}{bmargin}{lmargin}}%
36 \def\Gm@detall#1#2#3#4{%
37   \@tempcnta\z@
38   \if#1h
39     \let\Gm@mratio\Gm@hmarginratio
40     \edef\Gm@Dmratio{\if@twoside\Gm@Dhratiotwo\else\Gm@Dhratio\fi}%
41   \else
42     \let\Gm@mratio\Gm@vmarginratio
43     \edef\Gm@Dmratio{\Gm@Dvratio}%
44   \fi
45   \if#1h
46     \ifx\Gm@tmargin\@undefined\else\advance\@tempcnta4\relax\fi
47     \ifGm@hbody\advance\@tempcnta2\relax\fi
48     \ifx\Gm@bmargin\@undefined\else\advance\@tempcnta1\relax\fi
49     \Gm@cnth\@tempcnta
50   \else
51     \ifx\Gm@rmargin\@undefined\else\advance\@tempcnta4\relax\fi
52     \ifGm@vbody\advance\@tempcnta2\relax\fi
53     \ifx\Gm@lmargin\@undefined\else\advance\@tempcnta1\relax\fi
54     \Gm@cntv\@tempcnta
55   \fi
56   \ifcase\@tempcnta
57     \if#1h
58       \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
59     \else
60       \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
61     \fi
62     \Gm@detiiandiii{#2}{#3}{#4}%
63   \or
64     \ifx\Gm@mratio\@undefined
65       \if#1h
66         \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
67       \else
68         \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
69       \fi
70       \setlength\@tempdimc{\@nameuse{Gm@#4}}%
71       \Gm@detiiandiii{#2}{#3}{#4}%
72       \expandafter\let\csname Gm@#2\endcsname\@undefined
73       \Gm@defbylen{#4}{\@tempdimc}%
74     \else
75       \Gm@setbyratio[f]{#1}{#4}{#3}%
76     \fi
77     \Gm@detiv{#2}{#3}{#4}{#2}%
78   \or\Gm@detiiandiii{#2}{#3}{#4}%
79   \or\Gm@detiv{#2}{#2}{#4}{#3}%
80   \or
81     \ifx\Gm@mratio\@undefined
82       \if#1h
83         \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
84       \else
85         \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
86       \fi
87       \setlength\@tempdimc{\@nameuse{Gm@#3}}%
88       \Gm@detiiandiii{#2}{#4}{#3}%
89       \expandafter\let\csname Gm@#2\endcsname\@undefined
90       \Gm@defbylen{#3}{\@tempdimc}%
91     \else
92       \Gm@setbyratio[b]{#1}{#3}{#4}%
93     \fi
94     \Gm@detiv{#2}{#3}{#4}{#2}%
95   \or\Gm@detiv{#2}{#3}{#4}{#2}%
96   \or\Gm@detiv{#2}{#2}{#3}{#4}%
97   \or\Gm@warning{Over-specification in `#1'-direction.%
98                   ^^J\@spaces `#2' (\@nameuse{Gm@#2}) is ignored}%
99     \Gm@detiv{#2}{#3}{#4}{#2}%
100   \else\fi}%
101 \def\Gm@clean{%
102   \ifnum\Gm@cnth<4\let\Gm@tmargin\@undefined\fi
103   \ifodd\Gm@cnth\else\let\Gm@bmargin\@undefined\fi
104   \ifnum\Gm@cntv<4\let\Gm@rmargin\@undefined\fi
105   \ifodd\Gm@cntv\else\let\Gm@lmargin\@undefined\fi
106   \ifGm@hbody\else
107     \let\Gm@hscale\@undefined
108     \let\Gm@width\@undefined
109     \let\Gm@textwidth\@undefined
110   \fi
111   \ifGm@vbody\else
112     \let\Gm@vscale\@undefined
113     \let\Gm@height\@undefined
114     \let\Gm@textheight\@undefined
115   \fi
116   }%
117 \def\Gm@adjustpaper{%
118   \ifdim\paperwidth>\p@\else
119     \PackageError{geometry}{%
120     \string\paperwidth\space(\the\paperwidth) too short}{%
121     Set a paper type (e.g., `a4paper').}%
122   \fi
123   \ifdim\paperheight>\p@\else
124     \PackageError{geometry}{%
125     \string\paperheight\space(\the\paperheight) too short}{%
126     Set a paper type (e.g., `a4paper').}%
127   \fi
128   \ifGm@swap@papersize
129     \setlength\@tempdima{\paperwidth}%
130     \setlength\paperwidth{\paperheight}%
131     \setlength\paperheight{\@tempdima}%
132   \fi
133   \ifGm@layout\else
134     \setlength\Gm@layoutwidth{\paperheight}%
135     \setlength\Gm@layoutheight{\paperwidth}%
136   \fi}%
137 \def\Gm@adjustbody{
138   \ifGm@hbody
139     \ifx\Gm@width\@undefined
140       \ifx\Gm@hscale\@undefined
141         \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
142       \else
143         \Gm@defbylen{width}{\Gm@hscale\Gm@layoutwidth}%
144       \fi
145     \fi
146     \ifx\Gm@textwidth\@undefined\else
147       \setlength\@tempdima{\Gm@textwidth}%
148       \ifGm@includemp
149         \advance\@tempdima\Gm@wd@mp
150       \fi
151       \ifGm@includehead
152         \addtolength\@tempdima{\headheight}%
153         \addtolength\@tempdima{\headsep}%
154       \fi
155       \ifGm@includefoot
156         \addtolength\@tempdima{\footskip}%
157       \fi
158       \edef\Gm@width{\the\@tempdima}%
159     \fi
160   \fi
161   \ifGm@vbody
162     \ifx\Gm@height\@undefined
163       \ifx\Gm@vscale\@undefined
164         \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
165       \else
166         \Gm@defbylen{height}{\Gm@vscale\Gm@layoutheight}%
167       \fi
168     \fi
169     \ifx\Gm@lines\@undefined\else
170       \setlength\maxdepth{1\Cht}%
171       \setlength\topskip{.5\maxdepth}%
172       \ifdim\topskip<\ht\tstrutbox
173         \setlength\@tempdima{\topskip}%
174         \setlength\topskip{\ht\tstrutbox}%
175         \Gm@warning{\noexpand\topskip was changed from \the\@tempdima\space
176           to \the\topskip}%
177       \fi
178       \setlength\@tempdima{\baselineskip}%
179       \multiply\@tempdima\Gm@lines
180       \addtolength\@tempdima{\topskip}%
181       \addtolength\@tempdima{-\baselineskip}%
182       \edef\Gm@textheight{\the\@tempdima}%
183     \fi
184     \ifx\Gm@textheight\@undefined\else
185       \edef\Gm@height{\Gm@textheight}%
186     \fi
187   \fi}%
188 \def\Gm@@process{%
189   \Gm@expandlengths
190   \Gm@adjustpaper
191   \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}%
192   \Gm@adjustmp
193   \Gm@adjustbody
194   \Gm@detall{h}{width}{tmargin}{bmargin}%
195   \Gm@detall{v}{height}{rmargin}{lmargin}%
196   \setlength\textwidth{\Gm@width}%
197   \setlength\textheight{\Gm@height}%
198   \setlength\topmargin{\Gm@tmargin}%
199   \setlength\oddsidemargin{\Gm@lmargin}%
200   \addtolength\oddsidemargin{-1\Gm@truedimen in}%
201   \ifGm@includemp
202     \advance\textheight-\Gm@wd@mp
203     \advance\oddsidemargin\Gm@odd@mp
204   \fi
205   \if@mparswitch
206     \setlength\evensidemargin{\Gm@rmargin}%
207     \addtolength\evensidemargin{-1\Gm@truedimen in}%
208     \ifGm@includemp
209       \advance\evensidemargin\Gm@even@mp
210     \fi
211   \else
212     \evensidemargin\oddsidemargin
213   \fi
214   \advance\oddsidemargin\Gm@bindingoffset
215   \addtolength\topmargin{-1\Gm@truedimen in}%
216   \ifGm@includehead
217     \addtolength\textwidth{-\headheight}%
218     \addtolength\textwidth{-\headsep}%
219   \else
220     \addtolength\topmargin{-\headheight}%
221     \addtolength\topmargin{-\headsep}%
222   \fi
223   \ifGm@includefoot
224     \addtolength\textwidth{-\footskip}%
225   \fi
226   \ifGm@heightrounded
227     \setlength\@tempdima{\textheight}%
228     \addtolength\@tempdima{-\topskip}%
229     \@tempcnta\@tempdima
230     \@tempcntb\baselineskip
231     \divide\@tempcnta\@tempcntb
232     \setlength\@tempdimb{\baselineskip}%
233     \multiply\@tempdimb\@tempcnta
234     \advance\@tempdima-\@tempdimb
235     \multiply\@tempdima\tw@
236     \ifdim\@tempdima>\baselineskip
237       \addtolength\@tempdimb{\baselineskip}%
238     \fi
239     \addtolength\@tempdimb{\topskip}%
240     \textheight\@tempdimb
241   \fi
242   \advance\oddsidemargin\Gm@layoutvoffset%
243   \advance\evensidemargin\Gm@layoutvoffset%
244   \advance\topmargin\Gm@layouthoffset%
245   \addtolength\Gm@layoutheight{\Gm@bindingoffset}%
246 }% end of \Gm@@process
247 \Gm@initall
248 \Gm@processconfig
249 \ProcessOptionsKV[c]{Gm}%
250 \Gm@setdefaultpaper
251 \ProcessOptionsKV[p]{Gm}%
252 \Gm@process
253 \fi}
254 \endinput