OSDN Git Service

lltjp-geometry.sty with margin note
[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 \AtBeginOfPackageFile{geometry}{%
22   \edef\Gm@ltj@topskip{\the\topskip}
23   \edef\Gm@ltj@headsep{\the\headsep}
24   \edef\Gm@ltj@footskip{\the\footskip}
25 }
26 \AtEndOfPackageFile{geometry}{%
27 \ifluatex
28   \ifnum\ltjgetparameter{direction}=3 \@ltj@@geometry@tatetrue\fi
29 \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}}%
41
42 % save length
43 \def\Gm@save{%
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}}%
69
70 % frame
71 \renewcommand*{\Gm@pageframes}{%
72   \vb@xt@\z@{%
73    \ifGm@showcrop
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{%
77        \let\protect\relax
78        \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,1,-3,3)\hfil\Gm@cropmark(1,1,3,3)}%
79        \vfil
80        \hb@xt@\Gm@layoutwidth{\Gm@cropmark(-1,-1,-3,-3)\hfil\Gm@cropmark(1,-1,3,-3)}}%
81      \hss}%
82     \vss}%
83    \fi%
84    \ifGm@showframe
85     \if@twoside
86      \ifodd\count\z@
87        \let\@themargin\oddsidemargin
88      \else
89        \let\@themargin\evensidemargin
90      \fi
91     \fi
92     \moveright\@themargin%
93     \vb@xt@\z@{%
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}%
100        \vskip\marginparsep
101      }\fi
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}%
107      }\fi%
108      \vskip\footskip\vb@xt@\z@{\vss\Gm@hruled}%
109      \vss}%
110     \fi%
111   }}%
112
113 \def\Gm@detall#1#2#3#4{%
114   \@tempcnta\z@
115   \if#1h
116     \let\Gm@mratio\Gm@hmarginratio
117     \edef\Gm@Dmratio{\if@twoside\Gm@Dhratiotwo\else\Gm@Dhratio\fi}%
118   \else
119     \let\Gm@mratio\Gm@vmarginratio
120     \edef\Gm@Dmratio{\Gm@Dvratio}%
121   \fi
122   \if#1h
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
126     \Gm@cnth\@tempcnta
127   \else
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
131     \Gm@cntv\@tempcnta
132   \fi
133   \ifcase\@tempcnta
134     \if#1h
135       \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
136     \else
137       \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
138     \fi
139     \Gm@detiiandiii{#2}{#3}{#4}%
140   \or
141     \ifx\Gm@mratio\@undefined
142       \if#1h
143         \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
144       \else
145         \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
146       \fi
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}%
151     \else
152       \Gm@setbyratio[f]{#1}{#4}{#3}%
153     \fi
154     \Gm@detiv{#2}{#3}{#4}{#2}%
155   \or\Gm@detiiandiii{#2}{#3}{#4}%
156   \or\Gm@detiv{#2}{#2}{#4}{#3}%
157   \or
158     \ifx\Gm@mratio\@undefined
159       \if#1h
160         \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
161       \else
162         \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
163       \fi
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}%
168     \else
169       \Gm@setbyratio[b]{#1}{#3}{#4}%
170     \fi
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}%
177   \else\fi}%
178 \def\Gm@clean{%
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
183   \ifGm@hbody\else
184     \let\Gm@hscale\@undefined
185     \let\Gm@width\@undefined
186     \let\Gm@textwidth\@undefined
187   \fi
188   \ifGm@vbody\else
189     \let\Gm@vscale\@undefined
190     \let\Gm@height\@undefined
191     \let\Gm@textheight\@undefined
192   \fi
193   }%
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').}%
199   \fi
200   \ifdim\paperheight>\p@\else
201     \PackageError{geometry}{%
202     \string\paperheight\space(\the\paperheight) too short}{%
203     Set a paper type (e.g., `a4paper').}%
204   \fi
205   \ifGm@swap@papersize
206     \setlength\@tempdima{\paperwidth}%
207     \setlength\paperwidth{\paperheight}%
208     \setlength\paperheight{\@tempdima}%
209   \fi
210   \ifGm@layout\else
211     \setlength\Gm@layoutwidth{\paperheight}%
212     \setlength\Gm@layoutheight{\paperwidth}%
213   \fi}%
214 \def\Gm@adjustbody{
215   \ifGm@hbody
216     \ifx\Gm@width\@undefined
217       \ifx\Gm@hscale\@undefined
218         \Gm@defbylen{width}{\Gm@Dhscale\Gm@layoutwidth}%
219       \else
220         \Gm@defbylen{width}{\Gm@hscale\Gm@layoutwidth}%
221       \fi
222     \fi
223     \ifx\Gm@textwidth\@undefined\else
224       \setlength\@tempdima{\Gm@textwidth}%
225       \ifGm@includemp
226         \advance\@tempdima\Gm@wd@mp
227       \fi
228       \ifGm@includehead
229         \addtolength\@tempdima{\headheight}%
230         \addtolength\@tempdima{\headsep}%
231       \fi
232       \ifGm@includefoot
233         \addtolength\@tempdima{\footskip}%
234       \fi
235       \edef\Gm@width{\the\@tempdima}%
236     \fi
237   \fi
238   \ifGm@vbody
239     \ifx\Gm@height\@undefined
240       \ifx\Gm@vscale\@undefined
241         \Gm@defbylen{height}{\Gm@Dvscale\Gm@layoutheight}%
242       \else
243         \Gm@defbylen{height}{\Gm@vscale\Gm@layoutheight}%
244       \fi
245     \fi
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
251           \@tempdima\topskip
252           \global\topskip\ht\tstrutbox
253           \PackageWarningNoLine{lltjp-geometry}%
254            {do not worry about  `\noexpand\topskip was changed ...'\MessageBreak
255               warning above}
256           \PackageWarningNoLine{lltjp-geometry}%
257             {\noexpand\topskip was changed from \the\@tempdima\space
258               to \the\topskip}
259         \fi}%
260       \setlength\@tempdima{\baselineskip}%
261       \multiply\@tempdima\Gm@lines
262       \addtolength\@tempdima{\topskip}%
263       \addtolength\@tempdima{-\baselineskip}%
264       \edef\Gm@textheight{\the\@tempdima}%
265     \fi
266     \ifx\Gm@textheight\@undefined\else
267       \edef\Gm@height{\Gm@textheight}%
268     \fi
269   \fi}%
270 \def\Gm@@process{%
271   \Gm@expandlengths
272   \Gm@adjustpaper
273   \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}%
274   \Gm@adjustmp
275   \Gm@adjustbody
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}%
285   \if@mparswitch
286     \setlength\evensidemargin{\Gm@rmargin}%
287     \addtolength\evensidemargin{-1\Gm@truedimen in}%
288     \ifGm@includemp
289       \advance\evensidemargin\Gm@even@mp
290     \fi
291   \else
292     \evensidemargin\oddsidemargin
293   \fi
294   \advance\oddsidemargin\Gm@bindingoffset
295   \addtolength\topmargin{-1\Gm@truedimen in}%
296   \ifGm@includehead
297     \addtolength\textwidth{-\headheight}%
298     \addtolength\textwidth{-\headsep}%
299   \else
300     \addtolength\topmargin{-\headheight}%
301     \addtolength\topmargin{-\headsep}%
302   \fi
303   \ifGm@includefoot
304     \addtolength\textwidth{-\footskip}%
305   \fi
306   \ifGm@includemp
307     \advance\textwidth-\Gm@wd@mp
308     \if@reversemargin
309       \advance\headsep\Gm@wd@mp
310     \else
311       \advance\footskip\Gm@wd@mp
312     \fi
313   \fi
314   \ifGm@heightrounded
315     \setlength\@tempdima{\textheight}%
316     \addtolength\@tempdima{-\topskip}%
317     \@tempcnta\@tempdima
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}%
326     \fi
327     \addtolength\@tempdimb{\topskip}%
328     \textheight\@tempdimb
329   \fi
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
335 \Gm@initall
336 \Gm@processconfig
337 \ProcessOptionsKV[c]{Gm}%
338 \Gm@setdefaultpaper
339 \ProcessOptionsKV[p]{Gm}%
340 \Gm@process
341 \fi}
342 \endinput