source: SMC4LRT/geometry.sty

Last change on this file was 3666, checked in by vronk, 11 years ago

adding images, frontmater, userdocs, build
update main files: thesis and outline + utils

File size: 38.9 KB
Line 
1%%
2%% This is file `geometry.sty',
3%% generated with the docstrip utility.
4%%
5%% The original source files were:
6%%
7%% geometry.dtx  (with options: `package')
8%%
9%% Copyright (C) 1996-2010
10%% by Hideo Umeki <latexgeometry@gmail.com>
11%%
12%% This work may be distributed and/or modified under the conditions of
13%% the LaTeX Project Public License, either version 1.3c of this license
14%% or (at your option) any later version. The latest version of this
15%% license is in
16%%    http://www.latex-project.org/lppl.txt
17%% and version 1.3c or later is part of all distributions of LaTeX
18%% version 2005/12/01 or later.
19%%
20%% This work is "maintained" (as per the LPPL maintenance status)
21%% by Hideo Umeki.
22%%
23%% This work consists of the files geometry.dtx and
24%% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex.
25%%
26\NeedsTeXFormat{LaTeX2e}
27\ProvidesPackage{geometry}
28  [2010/03/13 v5.3 Page Geometry]
29\RequirePackage{keyval}%
30\RequirePackage{ifpdf}%
31\RequirePackage{ifvtex}%
32\newif\ifGm@verbose
33\newif\ifGm@landscape
34\newif\ifGm@swap@papersize\Gm@swap@papersizefalse
35\newif\ifGm@includehead
36\newif\ifGm@includefoot
37\newif\ifGm@includemp
38\newif\ifGm@hbody
39\newif\ifGm@vbody
40\newif\ifGm@heightrounded
41\newif\ifGm@showframe
42\newif\ifGm@showcrop
43\newif\ifGm@pass\Gm@passfalse
44\newif\ifGm@resetpaper
45\newif\ifGm@layout
46\newif\ifGm@newgm
47\newcount\Gm@cnth
48\newcount\Gm@cntv
49\newcount\c@Gm@tempcnt
50\newdimen\Gm@bindingoffset
51\newdimen\Gm@wd@mp
52\newdimen\Gm@odd@mp
53\newdimen\Gm@even@mp
54\newdimen\Gm@layoutwidth
55\newdimen\Gm@layoutheight
56\newdimen\Gm@layouthoffset
57\newdimen\Gm@layoutvoffset
58\newtoks\Gm@dimlist
59\def\Gm@warning#1{\PackageWarningNoLine{geometry}{#1}}%
60\def\ifGm@preamble#1{%
61  \ifGm@newgm
62   \Gm@warning{`#1': not available in `\string\newgeometry'; skipped}%
63  \else
64    \expandafter\@firstofone
65  \fi}%
66\def\Gm@Dhratio{1:1}% = left:right default for oneside
67\def\Gm@Dhratiotwo{2:3}% = inner:outer default for twoside.
68\def\Gm@Dvratio{2:3}% = top:bottom default
69\def\Gm@Dhscale{0.7}%
70\def\Gm@Dvscale{0.7}%
71\def\Gm@dvips{dvips}%
72\def\Gm@dvipdfm{dvipdfm}%
73\def\Gm@pdftex{pdftex}%
74\def\Gm@xetex{xetex}%
75\def\Gm@vtex{vtex}%
76\def\Gm@true{true}%
77\def\Gm@false{false}%
78\edef\Gm@orgpw{\the\paperwidth}%
79\edef\Gm@orgph{\the\paperheight}%
80\def\Gm@savelength#1{%
81  \g@addto@macro\Gm@restore{\expandafter\noexpand\expandafter\csname
82  #1\endcsname\expandafter=\expandafter\the\csname #1\endcsname\relax}}
83\def\Gm@saveboolean#1{%
84  \csname if#1\endcsname
85    \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1true\endcsname}%
86  \else
87    \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1false\endcsname}%
88  \fi}%
89\def\Gm@restore{}%
90\def\Gm@save{%
91  \Gm@savelength{paperwidth}%
92  \Gm@savelength{paperheight}%
93  \Gm@savelength{textwidth}%
94  \Gm@savelength{textheight}%
95  \Gm@savelength{evensidemargin}%
96  \Gm@savelength{oddsidemargin}%
97  \Gm@savelength{topmargin}%
98  \Gm@savelength{headheight}%
99  \Gm@savelength{headsep}%
100  \Gm@savelength{topskip}%
101  \Gm@savelength{footskip}%
102  \Gm@savelength{baselineskip}%
103  \Gm@savelength{marginparwidth}%
104  \Gm@savelength{marginparsep}%
105  \Gm@savelength{columnsep}%
106  \Gm@savelength{hoffset}%
107  \Gm@savelength{voffset}
108  \Gm@savelength{Gm@layouthoffset}%
109  \Gm@savelength{Gm@layoutvoffset}%
110  \Gm@saveboolean{@twocolumn}%
111  \Gm@saveboolean{@twoside}%
112  \Gm@saveboolean{@mparswitch}%
113  \Gm@saveboolean{@reversemargin}}%
114\def\Gm@initnewgm{%
115  \Gm@dimlist={}
116  \Gm@hbodyfalse
117  \Gm@vbodyfalse
118  \Gm@heightroundedfalse
119  \Gm@includeheadfalse
120  \Gm@includefootfalse
121  \Gm@includempfalse
122  \let\Gm@width\@undefined
123  \let\Gm@height\@undefined
124  \let\Gm@textwidth\@undefined
125  \let\Gm@textheight\@undefined
126  \let\Gm@lines\@undefined
127  \let\Gm@hscale\@undefined
128  \let\Gm@vscale\@undefined
129  \let\Gm@hmarginratio\@undefined
130  \let\Gm@vmarginratio\@undefined
131  \let\Gm@lmargin\@undefined
132  \let\Gm@rmargin\@undefined
133  \let\Gm@tmargin\@undefined
134  \let\Gm@bmargin\@undefined
135  \Gm@layoutfalse
136  \Gm@layouthoffset\z@
137  \Gm@layoutvoffset\z@
138  \Gm@bindingoffset\z@}%
139\def\Gm@initall{%
140  \let\Gm@driver\@empty
141  \let\Gm@truedimen\@empty
142  \let\Gm@paper\@undefined
143  \Gm@resetpaperfalse
144  \Gm@landscapefalse
145  \Gm@verbosefalse
146  \Gm@showframefalse
147  \Gm@showcropfalse
148  \Gm@newgmfalse
149  \Gm@initnewgm}%
150\def\Gm@setdriver#1{%
151  \expandafter\let\expandafter\Gm@driver\csname Gm@#1\endcsname}%
152\def\Gm@unsetdriver#1{%
153  \expandafter\ifx\csname Gm@#1\endcsname\Gm@driver\let\Gm@driver\@empty\fi}%
154\def\Gm@setbool{\@dblarg\Gm@@setbool}%
155\def\Gm@setboolrev{\@dblarg\Gm@@setboolrev}%
156\def\Gm@@setbool[#1]#2#3{\Gm@doif{#1}{#3}{\csname Gm@#2\Gm@bool\endcsname}}%
157\def\Gm@@setboolrev[#1]#2#3{\Gm@doifelse{#1}{#3}%
158  {\csname Gm@#2\Gm@false\endcsname}{\csname Gm@#2\Gm@true\endcsname}}%
159\def\Gm@doif#1#2#3{%
160  \lowercase{\def\Gm@bool{#2}}%
161  \ifx\Gm@bool\@empty
162    \let\Gm@bool\Gm@true
163  \fi
164  \ifx\Gm@bool\Gm@true
165  \else
166    \ifx\Gm@bool\Gm@false
167    \else
168      \let\Gm@bool\relax
169    \fi
170  \fi
171  \ifx\Gm@bool\relax
172    \Gm@warning{`#1' should be set to `true' or `false'}%
173  \else
174    #3
175  \fi}%
176\def\Gm@doifelse#1#2#3#4{%
177  \Gm@doif{#1}{#2}{\ifx\Gm@bool\Gm@true #3\else #4\fi}}%
178\def\Gm@reverse#1{%
179  \csname ifGm@#1\endcsname
180  \csname Gm@#1false\endcsname\else\csname Gm@#1true\endcsname\fi}%
181\def\Gm@defbylen#1#2{%
182  \setlength\@tempdima{#2}%
183  \expandafter\edef\csname Gm@#1\endcsname{\the\@tempdima}}%
184\def\Gm@defbycnt#1#2{%
185  \setcounter{Gm@tempcnt}{#2}%
186  \expandafter\edef\csname Gm@#1\endcsname{\the\value{Gm@tempcnt}}}%
187\def\Gm@sep@ratio#1:#2{\@tempcnta=#1\@tempcntb=#2}%
188\def\Gm@setbyratio[#1]#2#3#4{% determine #4 by ratio
189  \expandafter\Gm@sep@ratio\Gm@mratio\relax
190  \if#1b
191    \edef\@@tempa{\the\@tempcnta}%
192    \@tempcnta=\@tempcntb
193    \@tempcntb=\@@tempa\relax
194  \fi
195  \expandafter\setlength\expandafter\@tempdimb\expandafter
196    {\csname Gm@#3\endcsname}%
197  \ifnum\@tempcntb>\z@
198    \multiply\@tempdimb\@tempcnta
199    \divide\@tempdimb\@tempcntb
200  \fi
201  \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimb}}%
202\def\Gm@detiv#1#2#3#4{% determine #4.
203  \expandafter\setlength\expandafter\@tempdima\expandafter
204    {\csname Gm@layout#1\endcsname}%
205  \expandafter\setlength\expandafter\@tempdimb\expandafter
206    {\csname Gm@#2\endcsname}%
207  \addtolength\@tempdima{-\@tempdimb}%
208  \expandafter\setlength\expandafter\@tempdimb\expandafter
209    {\csname Gm@#3\endcsname}%
210  \addtolength\@tempdima{-\@tempdimb}%
211  \ifdim\@tempdima<\z@
212    \Gm@warning{`#4' results in NEGATIVE (\the\@tempdima).%
213    ^^J\@spaces `#2' or `#3' should be shortened in length}%
214  \fi
215  \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdima}}%
216\def\Gm@detiiandiii#1#2#3{% determine #2 and #3.
217  \expandafter\setlength\expandafter\@tempdima\expandafter
218    {\csname Gm@layout#1\endcsname}%
219  \expandafter\setlength\expandafter\@tempdimb\expandafter
220    {\csname Gm@#1\endcsname}%
221  \addtolength\@tempdima{-\@tempdimb}%
222  \ifdim\@tempdima<\z@
223    \Gm@warning{`#2' and `#3' result in NEGATIVE (\the\@tempdima).%
224                  ^^J\@spaces `#1' should be shortened in length}%
225  \fi
226  \ifx\Gm@mratio\@undefined
227    \expandafter\Gm@sep@ratio\Gm@Dmratio\relax
228  \else
229    \expandafter\Gm@sep@ratio\Gm@mratio\relax
230    \ifnum\@tempcntb>\z@\else
231      \Gm@warning{margin ratio a:b should be non-zero; default used}%
232      \expandafter\Gm@sep@ratio\Gm@Dmratio\relax
233    \fi
234  \fi
235  \@tempdimb=\@tempdima
236  \advance\@tempcntb\@tempcnta
237  \divide\@tempdima\@tempcntb
238  \multiply\@tempdima\@tempcnta
239  \advance\@tempdimb-\@tempdima
240  \expandafter\edef\csname Gm@#2\endcsname{\the\@tempdima}%
241  \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimb}}%
242\def\Gm@detall#1#2#3#4{%
243  \@tempcnta\z@
244  \if#1h
245    \let\Gm@mratio\Gm@hmarginratio
246    \edef\Gm@Dmratio{\if@twoside\Gm@Dhratiotwo\else\Gm@Dhratio\fi}%
247  \else
248    \let\Gm@mratio\Gm@vmarginratio
249    \edef\Gm@Dmratio{\Gm@Dvratio}%
250  \fi
251  \if#1h
252    \ifx\Gm@lmargin\@undefined\else\advance\@tempcnta4\relax\fi
253    \ifGm@hbody\advance\@tempcnta2\relax\fi
254    \ifx\Gm@rmargin\@undefined\else\advance\@tempcnta1\relax\fi
255    \Gm@cnth\@tempcnta
256  \else
257    \ifx\Gm@tmargin\@undefined\else\advance\@tempcnta4\relax\fi
258    \ifGm@vbody\advance\@tempcnta2\relax\fi
259    \ifx\Gm@bmargin\@undefined\else\advance\@tempcnta1\relax\fi
260    \Gm@cntv\@tempcnta
261  \fi
262  \ifcase\@tempcnta
263    \if#1h
264      \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}%
265    \else
266      \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}%
267    \fi
268    \Gm@detiiandiii{#2}{#3}{#4}%
269  \or
270    \ifx\Gm@mratio\@undefined
271      \if#1h
272        \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}%
273      \else
274        \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}%
275      \fi
276      \setlength\@tempdimc{\@nameuse{Gm@#4}}%
277      \Gm@detiiandiii{#2}{#3}{#4}%
278      \expandafter\let\csname Gm@#2\endcsname\@undefined
279      \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimc}%
280    \else
281      \Gm@setbyratio[f]{#1}{#4}{#3}%
282    \fi
283    \Gm@detiv{#2}{#3}{#4}{#2}%
284  \or\Gm@detiiandiii{#2}{#3}{#4}%
285  \or\Gm@detiv{#2}{#2}{#4}{#3}%
286  \or
287    \ifx\Gm@mratio\@undefined
288      \if#1h
289        \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}%
290      \else
291        \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}%
292      \fi
293      \setlength\@tempdimc{\@nameuse{Gm@#3}}%
294      \Gm@detiiandiii{#2}{#4}{#3}%
295      \expandafter\let\csname Gm@#2\endcsname\@undefined
296      \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimc}%
297    \else
298      \Gm@setbyratio[b]{#1}{#3}{#4}%
299    \fi
300    \Gm@detiv{#2}{#3}{#4}{#2}%
301  \or\Gm@detiv{#2}{#3}{#4}{#2}%
302  \or\Gm@detiv{#2}{#2}{#3}{#4}%
303  \or\Gm@warning{Over-specification in `#1'-direction.%
304                  ^^J\@spaces `#2' (\@nameuse{Gm@#2}) is ignored}%
305    \Gm@detiv{#2}{#3}{#4}{#2}%
306  \else\fi}%
307\def\Gm@clean{%
308  \ifnum\Gm@cnth<4\let\Gm@lmargin\@undefined\fi
309  \ifodd\Gm@cnth\else\let\Gm@rmargin\@undefined\fi
310  \ifnum\Gm@cntv<4\let\Gm@tmargin\@undefined\fi
311  \ifodd\Gm@cntv\else\let\Gm@bmargin\@undefined\fi
312  \ifGm@hbody\else
313    \let\Gm@hscale\@undefined
314    \let\Gm@width\@undefined
315    \let\Gm@textwidth\@undefined
316  \fi
317  \ifGm@vbody\else
318    \let\Gm@vscale\@undefined
319    \let\Gm@height\@undefined
320    \let\Gm@textheight\@undefined
321  \fi
322  }%
323\def\Gm@parse@divide#1#2#3#4{%
324  \def\Gm@star{*}%
325  \@tempcnta\z@
326  \@for\Gm@tmp:=#1\do{%
327    \expandafter\KV@@sp@def\expandafter\Gm@frag\expandafter{\Gm@tmp}%
328    \edef\Gm@value{\Gm@frag}%
329    \ifcase\@tempcnta\relax\edef\Gm@key{#2}%
330      \or\edef\Gm@key{#3}%
331      \else\edef\Gm@key{#4}%
332    \fi
333    \@nameuse{Gm@set\Gm@key false}%
334    \ifx\empty\Gm@value\else
335    \ifx\Gm@star\Gm@value\else
336      \setkeys{Gm}{\Gm@key=\Gm@value}%
337    \fi\fi
338    \advance\@tempcnta\@ne}%
339  \let\Gm@star\relax}%
340\def\Gm@branch#1#2#3{%
341  \@tempcnta\z@
342  \@for\Gm@tmp:=#1\do{%
343    \KV@@sp@def\Gm@frag{\Gm@tmp}%
344    \edef\Gm@value{\Gm@frag}%
345    \ifcase\@tempcnta\relax% cnta == 0
346      \setkeys{Gm}{#2=\Gm@value}%
347    \or% cnta == 1
348      \setkeys{Gm}{#3=\Gm@value}%
349    \else\fi
350    \advance\@tempcnta\@ne}%
351  \ifnum\@tempcnta=\@ne
352    \setkeys{Gm}{#3=\Gm@value}%
353  \fi}%
354\def\Gm@magtooffset{%
355  \@tempdima=\mag\Gm@truedimen sp%
356  \@tempdimb=1\Gm@truedimen in%
357  \divide\@tempdimb\@tempdima
358  \multiply\@tempdimb\@m
359  \addtolength{\hoffset}{1\Gm@truedimen in}%
360  \addtolength{\voffset}{1\Gm@truedimen in}%
361  \addtolength{\hoffset}{-\the\@tempdimb}%
362  \addtolength{\voffset}{-\the\@tempdimb}}%
363\def\Gm@setlength#1#2{%
364  \let\Gm@len=\relax\let\Gm@td=\relax
365  \edef\addtolist{\noexpand\Gm@dimlist=%
366  {\the\Gm@dimlist \Gm@len{#1}{#2}}}\addtolist}%
367\def\Gm@expandlengths{%
368  \def\Gm@td{\Gm@truedimen}%
369  \def\Gm@len##1##2{\setlength{##1}{##2}}%
370  \the\Gm@dimlist}%
371\def\Gm@setsize#1(#2,#3)#4{%
372  \let\Gm@td\relax
373  \expandafter\Gm@setlength\csname #1width\endcsname{#2\Gm@td #4}%
374  \expandafter\Gm@setlength\csname #1height\endcsname{#3\Gm@td #4}%
375  \ifGm@landscape\Gm@swap@papersizetrue\else\Gm@swap@papersizefalse\fi}%
376\def\Gm@setpaper@ifpre#1{%
377  \ifGm@preamble{#1}{\def\Gm@paper{#1}\@nameuse{Gm@#1}{paper}}}%
378\@namedef{Gm@a0paper}#1{\Gm@setsize{#1}(841,1189){mm}}% ISO A0
379\@namedef{Gm@a1paper}#1{\Gm@setsize{#1}(594,841){mm}}% ISO A1
380\@namedef{Gm@a2paper}#1{\Gm@setsize{#1}(420,594){mm}}% ISO A2
381\@namedef{Gm@a3paper}#1{\Gm@setsize{#1}(297,420){mm}}% ISO A3
382\@namedef{Gm@a4paper}#1{\Gm@setsize{#1}(210,297){mm}}% ISO A4
383\@namedef{Gm@a5paper}#1{\Gm@setsize{#1}(148,210){mm}}% ISO A5
384\@namedef{Gm@a6paper}#1{\Gm@setsize{#1}(105,148){mm}}% ISO A6
385\@namedef{Gm@b0paper}#1{\Gm@setsize{#1}(1000,1414){mm}}% ISO B0
386\@namedef{Gm@b1paper}#1{\Gm@setsize{#1}(707,1000){mm}}% ISO B1
387\@namedef{Gm@b2paper}#1{\Gm@setsize{#1}(500,707){mm}}% ISO B2
388\@namedef{Gm@b3paper}#1{\Gm@setsize{#1}(353,500){mm}}% ISO B3
389\@namedef{Gm@b4paper}#1{\Gm@setsize{#1}(250,353){mm}}% ISO B4
390\@namedef{Gm@b5paper}#1{\Gm@setsize{#1}(176,250){mm}}% ISO B5
391\@namedef{Gm@b6paper}#1{\Gm@setsize{#1}(125,176){mm}}% ISO B6
392\@namedef{Gm@b0j}#1{\Gm@setsize{#1}(1030,1456){mm}}% JIS B0
393\@namedef{Gm@b1j}#1{\Gm@setsize{#1}(728,1030){mm}}% JIS B1
394\@namedef{Gm@b2j}#1{\Gm@setsize{#1}(515,728){mm}}% JIS B2
395\@namedef{Gm@b3j}#1{\Gm@setsize{#1}(364,515){mm}}% JIS B3
396\@namedef{Gm@b4j}#1{\Gm@setsize{#1}(257,364){mm}}% JIS B4
397\@namedef{Gm@b5j}#1{\Gm@setsize{#1}(182,257){mm}}% JIS B5
398\@namedef{Gm@b6j}#1{\Gm@setsize{#1}(128,182){mm}}% JIS B6
399\@namedef{Gm@ansiapaper}#1{\Gm@setsize{#1}(8.5,11){in}}%
400\@namedef{Gm@ansibpaper}#1{\Gm@setsize{#1}(11,17){in}}%
401\@namedef{Gm@ansicpaper}#1{\Gm@setsize{#1}(17,22){in}}%
402\@namedef{Gm@ansidpaper}#1{\Gm@setsize{#1}(22,34){in}}%
403\@namedef{Gm@ansiepaper}#1{\Gm@setsize{#1}(34,44){in}}%
404\@namedef{Gm@letterpaper}#1{\Gm@setsize{#1}(8.5,11){in}}%
405\@namedef{Gm@legalpaper}#1{\Gm@setsize{#1}(8.5,14){in}}%
406\@namedef{Gm@executivepaper}#1{\Gm@setsize{#1}(7.25,10.5){in}}%
407\@namedef{Gm@screen}#1{\Gm@setsize{#1}(225,180){mm}}%
408\define@key{Gm}{paper}{\setkeys{Gm}{#1}}%
409\let\KV@Gm@papername\KV@Gm@paper
410\define@key{Gm}{a0paper}[true]{\Gm@setpaper@ifpre{a0paper}}%
411\define@key{Gm}{a1paper}[true]{\Gm@setpaper@ifpre{a1paper}}%
412\define@key{Gm}{a2paper}[true]{\Gm@setpaper@ifpre{a2paper}}%
413\define@key{Gm}{a3paper}[true]{\Gm@setpaper@ifpre{a3paper}}%
414\define@key{Gm}{a4paper}[true]{\Gm@setpaper@ifpre{a4paper}}%
415\define@key{Gm}{a5paper}[true]{\Gm@setpaper@ifpre{a5paper}}%
416\define@key{Gm}{a6paper}[true]{\Gm@setpaper@ifpre{a6paper}}%
417\define@key{Gm}{b0paper}[true]{\Gm@setpaper@ifpre{b0paper}}%
418\define@key{Gm}{b1paper}[true]{\Gm@setpaper@ifpre{b1paper}}%
419\define@key{Gm}{b2paper}[true]{\Gm@setpaper@ifpre{b2paper}}%
420\define@key{Gm}{b3paper}[true]{\Gm@setpaper@ifpre{b3paper}}%
421\define@key{Gm}{b4paper}[true]{\Gm@setpaper@ifpre{b4paper}}%
422\define@key{Gm}{b5paper}[true]{\Gm@setpaper@ifpre{b5paper}}%
423\define@key{Gm}{b6paper}[true]{\Gm@setpaper@ifpre{b6paper}}%
424\define@key{Gm}{b0j}[true]{\Gm@setpaper@ifpre{b0j}}%
425\define@key{Gm}{b1j}[true]{\Gm@setpaper@ifpre{b1j}}%
426\define@key{Gm}{b2j}[true]{\Gm@setpaper@ifpre{b2j}}%
427\define@key{Gm}{b3j}[true]{\Gm@setpaper@ifpre{b3j}}%
428\define@key{Gm}{b4j}[true]{\Gm@setpaper@ifpre{b4j}}%
429\define@key{Gm}{b5j}[true]{\Gm@setpaper@ifpre{b5j}}%
430\define@key{Gm}{b6j}[true]{\Gm@setpaper@ifpre{b6j}}%
431\define@key{Gm}{ansiapaper}[true]{\Gm@setpaper@ifpre{ansiapaper}}%
432\define@key{Gm}{ansibpaper}[true]{\Gm@setpaper@ifpre{ansibpaper}}%
433\define@key{Gm}{ansicpaper}[true]{\Gm@setpaper@ifpre{ansicpaper}}%
434\define@key{Gm}{ansidpaper}[true]{\Gm@setpaper@ifpre{ansidpaper}}%
435\define@key{Gm}{ansiepaper}[true]{\Gm@setpaper@ifpre{ansiepaper}}%
436\define@key{Gm}{letterpaper}[true]{\Gm@setpaper@ifpre{letterpaper}}%
437\define@key{Gm}{legalpaper}[true]{\Gm@setpaper@ifpre{legalpaper}}%
438\define@key{Gm}{executivepaper}[true]{\Gm@setpaper@ifpre{executivepaper}}%
439\define@key{Gm}{screen}[true]{\Gm@setpaper@ifpre{screen}}%
440\define@key{Gm}{paperwidth}{\ifGm@preamble{paperwidth}{%
441  \Gm@setlength\paperwidth{#1}}}%
442\define@key{Gm}{paperheight}{\ifGm@preamble{paperheight}{%
443  \Gm@setlength\paperheight{#1}}}%
444\define@key{Gm}{papersize}{\ifGm@preamble{papersize}{%
445  \Gm@branch{#1}{paperwidth}{paperheight}}}%
446\define@key{Gm}{layout}{\Gm@layouttrue\@nameuse{Gm@#1}{Gm@layout}}%
447\let\KV@Gm@layoutname\KV@Gm@layout
448\define@key{Gm}{layoutwidth}{\Gm@layouttrue\Gm@setlength\Gm@layoutwidth{#1}}%
449\define@key{Gm}{layoutheight}{\Gm@layouttrue\Gm@setlength\Gm@layoutheight{#1}}%
450\define@key{Gm}{layoutsize}{\Gm@branch{#1}{layoutwidth}{layoutheight}}%
451\define@key{Gm}{landscape}[true]{\ifGm@preamble{landscape}{%
452  \Gm@doifelse{landscape}{#1}%
453  {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}%
454  {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}}}%
455\define@key{Gm}{portrait}[true]{\ifGm@preamble{portrait}{%
456  \Gm@doifelse{portrait}{#1}%
457  {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}%
458  {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}}}%
459\define@key{Gm}{hscale}{\Gm@hbodytrue\edef\Gm@hscale{#1}}%
460\define@key{Gm}{vscale}{\Gm@vbodytrue\edef\Gm@vscale{#1}}%
461\define@key{Gm}{scale}{\Gm@branch{#1}{hscale}{vscale}}%
462\define@key{Gm}{width}{\Gm@hbodytrue\Gm@defbylen{width}{#1}}%
463\define@key{Gm}{height}{\Gm@vbodytrue\Gm@defbylen{height}{#1}}%
464\define@key{Gm}{total}{\Gm@branch{#1}{width}{height}}%
465\let\KV@Gm@totalwidth\KV@Gm@width
466\let\KV@Gm@totalheight\KV@Gm@height
467\define@key{Gm}{textwidth}{\Gm@hbodytrue\Gm@defbylen{textwidth}{#1}}%
468\define@key{Gm}{textheight}{\Gm@vbodytrue\Gm@defbylen{textheight}{#1}}%
469\define@key{Gm}{text}{\Gm@branch{#1}{textwidth}{textheight}}%
470\let\KV@Gm@body\KV@Gm@text
471\define@key{Gm}{lines}{\Gm@vbodytrue\Gm@defbycnt{lines}{#1}}%
472\define@key{Gm}{includehead}[true]{\Gm@setbool{includehead}{#1}}%
473\define@key{Gm}{includefoot}[true]{\Gm@setbool{includefoot}{#1}}%
474\define@key{Gm}{includeheadfoot}[true]{\Gm@doifelse{includeheadfoot}{#1}%
475  {\Gm@includeheadtrue\Gm@includefoottrue}%
476  {\Gm@includeheadfalse\Gm@includefootfalse}}%
477\define@key{Gm}{includemp}[true]{\Gm@setbool{includemp}{#1}}%
478\define@key{Gm}{includeall}[true]{\Gm@doifelse{includeall}{#1}%
479  {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}%
480  {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}}%
481\define@key{Gm}{ignorehead}[true]{%
482  \Gm@setboolrev[ignorehead]{includehead}{#1}}%
483\define@key{Gm}{ignorefoot}[true]{%
484  \Gm@setboolrev[ignorefoot]{includefoot}{#1}}%
485\define@key{Gm}{ignoreheadfoot}[true]{\Gm@doifelse{ignoreheadfoot}{#1}%
486  {\Gm@includeheadfalse\Gm@includefootfalse}%
487  {\Gm@includeheadtrue\Gm@includefoottrue}}%
488\define@key{Gm}{ignoremp}[true]{%
489  \Gm@setboolrev[ignoremp]{includemp}{#1}}%
490\define@key{Gm}{ignoreall}[true]{\Gm@doifelse{ignoreall}{#1}%
491  {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}%
492  {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}}%
493\define@key{Gm}{heightrounded}[true]{\Gm@setbool{heightrounded}{#1}}%
494\define@key{Gm}{hdivide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}}%
495\define@key{Gm}{vdivide}{\Gm@parse@divide{#1}{tmargin}{height}{bmargin}}%
496\define@key{Gm}{divide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}%
497  \Gm@parse@divide{#1}{tmargin}{height}{bmargin}}%
498\define@key{Gm}{lmargin}{\Gm@defbylen{lmargin}{#1}}%
499\define@key{Gm}{rmargin}{\Gm@defbylen{rmargin}{#1}}%
500\let\KV@Gm@left\KV@Gm@lmargin
501\let\KV@Gm@inner\KV@Gm@lmargin
502\let\KV@Gm@innermargin\KV@Gm@lmargin
503\let\KV@Gm@right\KV@Gm@rmargin
504\let\KV@Gm@outer\KV@Gm@rmargin
505\let\KV@Gm@outermargin\KV@Gm@rmargin
506\define@key{Gm}{tmargin}{\Gm@defbylen{tmargin}{#1}}%
507\define@key{Gm}{bmargin}{\Gm@defbylen{bmargin}{#1}}%
508\let\KV@Gm@top\KV@Gm@tmargin
509\let\KV@Gm@bottom\KV@Gm@bmargin
510\define@key{Gm}{hmargin}{\Gm@branch{#1}{lmargin}{rmargin}}%
511\define@key{Gm}{vmargin}{\Gm@branch{#1}{tmargin}{bmargin}}%
512\define@key{Gm}{margin}{\Gm@branch{#1}{lmargin}{tmargin}%
513  \Gm@branch{#1}{rmargin}{bmargin}}%
514\define@key{Gm}{hmarginratio}{\edef\Gm@hmarginratio{#1}}%
515\define@key{Gm}{vmarginratio}{\edef\Gm@vmarginratio{#1}}%
516\define@key{Gm}{marginratio}{\Gm@branch{#1}{hmarginratio}{vmarginratio}}%
517\let\KV@Gm@hratio\KV@Gm@hmarginratio
518\let\KV@Gm@vratio\KV@Gm@vmarginratio
519\let\KV@Gm@ratio\KV@Gm@marginratio
520\define@key{Gm}{hcentering}[true]{\Gm@doifelse{hcentering}{#1}%
521  {\def\Gm@hmarginratio{1:1}}{}}%
522\define@key{Gm}{vcentering}[true]{\Gm@doifelse{vcentering}{#1}%
523  {\def\Gm@vmarginratio{1:1}}{}}%
524\define@key{Gm}{centering}[true]{\Gm@doifelse{centering}{#1}%
525  {\def\Gm@hmarginratio{1:1}\def\Gm@vmarginratio{1:1}}{}}%
526\define@key{Gm}{twoside}[true]{\Gm@doifelse{twoside}{#1}%
527  {\@twosidetrue\@mparswitchtrue}{\@twosidefalse\@mparswitchfalse}}%
528\define@key{Gm}{asymmetric}[true]{\Gm@doifelse{asymmetric}{#1}%
529  {\@twosidetrue\@mparswitchfalse}{}}%
530\define@key{Gm}{bindingoffset}{\Gm@setlength\Gm@bindingoffset{#1}}%
531\define@key{Gm}{headheight}{\Gm@setlength\headheight{#1}}%
532\define@key{Gm}{headsep}{\Gm@setlength\headsep{#1}}%
533\define@key{Gm}{footskip}{\Gm@setlength\footskip{#1}}%
534\let\KV@Gm@head\KV@Gm@headheight
535\let\KV@Gm@foot\KV@Gm@footskip
536\define@key{Gm}{nohead}[true]{\Gm@doifelse{nohead}{#1}%
537  {\Gm@setlength\headheight\z@\Gm@setlength\headsep\z@}{}}%
538\define@key{Gm}{nofoot}[true]{\Gm@doifelse{nofoot}{#1}%
539  {\Gm@setlength\footskip\z@}{}}%
540\define@key{Gm}{noheadfoot}[true]{\Gm@doifelse{noheadfoot}{#1}%
541  {\Gm@setlength\headheight\z@\Gm@setlength\headsep
542  \z@\Gm@setlength\footskip\z@}{}}%
543\define@key{Gm}{footnotesep}{\Gm@setlength{\skip\footins}{#1}}%
544\define@key{Gm}{marginparwidth}{\Gm@setlength\marginparwidth{#1}}%
545\let\KV@Gm@marginpar\KV@Gm@marginparwidth
546\define@key{Gm}{marginparsep}{\Gm@setlength\marginparsep{#1}}%
547\define@key{Gm}{nomarginpar}[true]{\Gm@doifelse{nomarginpar}{#1}%
548  {\Gm@setlength\marginparwidth\z@\Gm@setlength\marginparsep\z@}{}}%
549\define@key{Gm}{columnsep}{\Gm@setlength\columnsep{#1}}%
550\define@key{Gm}{hoffset}{\Gm@setlength\hoffset{#1}}%
551\define@key{Gm}{voffset}{\Gm@setlength\voffset{#1}}%
552\define@key{Gm}{offset}{\Gm@branch{#1}{hoffset}{voffset}}%
553\define@key{Gm}{layouthoffset}{\Gm@setlength\Gm@layouthoffset{#1}}%
554\define@key{Gm}{layoutvoffset}{\Gm@setlength\Gm@layoutvoffset{#1}}%
555\define@key{Gm}{layoutoffset}{\Gm@branch{#1}{layouthoffset}{layoutvoffset}}%
556\define@key{Gm}{twocolumn}[true]{%
557  \Gm@doif{twocolumn}{#1}{\csname @twocolumn\Gm@bool\endcsname}}%
558\define@key{Gm}{onecolumn}[true]{%
559  \Gm@doifelse{onecolumn}{#1}{\@twocolumnfalse}{\@twocolumntrue}}%
560\define@key{Gm}{reversemp}[true]{%
561  \Gm@doif{reversemp}{#1}{\csname @reversemargin\Gm@bool\endcsname}}%
562\define@key{Gm}{reversemarginpar}[true]{%
563  \Gm@doif{reversemarginpar}{#1}{\csname @reversemargin\Gm@bool\endcsname}}%
564\define@key{Gm}{driver}{\ifGm@preamble{driver}{%
565  \edef\@@tempa{#1}\edef\@@auto{auto}\edef\@@none{none}%
566  \ifx\@@tempa\@empty\let\Gm@driver\relax\else
567  \ifx\@@tempa\@@none\let\Gm@driver\relax\else
568  \ifx\@@tempa\@@auto\let\Gm@driver\@empty\else
569  \setkeys{Gm}{#1}\fi\fi\fi\let\@@auto\relax\let\@@none\relax}}%
570\define@key{Gm}{dvips}[true]{\ifGm@preamble{dvips}{%
571  \Gm@doifelse{dvips}{#1}{\Gm@setdriver{dvips}}{\Gm@unsetdriver{dvips}}}}%
572\define@key{Gm}{dvipdfm}[true]{\ifGm@preamble{dvipdfm}{%
573  \Gm@doifelse{dvipdfm}{#1}{\Gm@setdriver{dvipdfm}}{\Gm@unsetdriver{dvipdfm}}}}%
574\define@key{Gm}{pdftex}[true]{\ifGm@preamble{pdftex}{%
575  \Gm@doifelse{pdftex}{#1}{\Gm@setdriver{pdftex}}{\Gm@unsetdriver{pdftex}}}}%
576\define@key{Gm}{xetex}[true]{\ifGm@preamble{xetex}{%
577  \Gm@doifelse{xetex}{#1}{\Gm@setdriver{xetex}}{\Gm@unsetdriver{xetex}}}}%
578\define@key{Gm}{vtex}[true]{\ifGm@preamble{vtex}{%
579  \Gm@doifelse{vtex}{#1}{\Gm@setdriver{vtex}}{\Gm@unsetdriver{vtex}}}}%
580\define@key{Gm}{verbose}[true]{\ifGm@preamble{verbose}{\Gm@setbool{verbose}{#1}}}%
581\define@key{Gm}{reset}[true]{\ifGm@preamble{reset}{%
582  \Gm@doifelse{reset}{#1}{\Gm@restore@org\Gm@initall
583  \ProcessOptionsKV[c]{Gm}\Gm@setdefaultpaper}{}}}%
584\define@key{Gm}{resetpaper}[true]{\ifGm@preamble{resetpaper}{%
585  \Gm@setbool{resetpaper}{#1}}}%
586\define@key{Gm}{mag}{\ifGm@preamble{mag}{\mag=#1}}%
587\define@key{Gm}{truedimen}[true]{\ifGm@preamble{truedimen}{%
588  \Gm@doifelse{truedimen}{#1}{\let\Gm@truedimen\Gm@true}%
589  {\let\Gm@truedimen\@empty}}}%
590\define@key{Gm}{pass}[true]{\ifGm@preamble{pass}{\Gm@setbool{pass}{#1}}}%
591\define@key{Gm}{showframe}[true]{\Gm@setbool{showframe}{#1}}%
592\define@key{Gm}{showcrop}[true]{\Gm@setbool{showcrop}{#1}}%
593\def\Gm@setdefaultpaper{%
594  \ifx\Gm@paper\@undefined
595    \Gm@setsize{paper}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}%
596    \Gm@setsize{Gm@layout}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}%
597    \Gm@swap@papersizefalse
598  \fi}%
599\def\Gm@adjustpaper{%
600  \ifdim\paperwidth>\p@\else
601    \PackageError{geometry}{%
602    \string\paperwidth\space(\the\paperwidth) too short}{%
603    Set a paper type (e.g., `a4paper').}%
604  \fi
605  \ifdim\paperheight>\p@\else
606    \PackageError{geometry}{%
607    \string\paperheight\space(\the\paperheight) too short}{%
608    Set a paper type (e.g., `a4paper').}%
609  \fi
610  \ifGm@swap@papersize
611    \setlength\@tempdima{\paperwidth}%
612    \setlength\paperwidth{\paperheight}%
613    \setlength\paperheight{\@tempdima}%
614  \fi
615  \ifGm@layout\else
616    \let\Gm@layoutwidth\paperwidth
617    \let\Gm@layoutheight\paperheight
618  \fi}%
619\def\Gm@checkmp{%
620  \ifGm@includemp\else
621    \@tempcnta\z@\@tempcntb\@ne
622    \if@twocolumn
623      \@tempcnta\@ne
624    \else
625      \if@reversemargin
626        \@tempcnta\@ne\@tempcntb\z@
627      \fi
628    \fi
629    \@tempdima\marginparwidth
630    \advance\@tempdima\marginparsep
631    \ifnum\@tempcnta=\@ne
632      \@tempdimc\@tempdima
633      \setlength\@tempdimb{\Gm@lmargin}%
634      \advance\@tempdimc-\@tempdimb
635      \ifdim\@tempdimc>\z@
636        \Gm@warning{The marginal notes overrun the paper edge.^^J
637        \@spaces Add \the\@tempdimc\space and more to the left margin}%
638      \fi
639    \fi
640    \ifnum\@tempcntb=\@ne
641      \@tempdimc\@tempdima
642      \setlength\@tempdimb{\Gm@rmargin}%
643      \advance\@tempdimc-\@tempdimb
644      \ifdim\@tempdimc>\z@
645        \Gm@warning{The marginal notes overrun the paper.^^J
646        \@spaces Add \the\@tempdimc\space and more to the right margin}%
647      \fi
648    \fi
649  \fi}%
650\def\Gm@adjustmp{%
651  \ifGm@includemp
652    \@tempdimb\marginparwidth
653    \advance\@tempdimb\marginparsep
654    \Gm@wd@mp\@tempdimb
655    \Gm@odd@mp\z@
656    \Gm@even@mp\z@
657    \if@twocolumn
658      \Gm@wd@mp2\@tempdimb
659      \Gm@odd@mp\@tempdimb
660      \Gm@even@mp\@tempdimb
661    \else
662      \if@reversemargin
663        \Gm@odd@mp\@tempdimb
664        \if@mparswitch\else
665          \Gm@even@mp\@tempdimb
666        \fi
667      \else
668        \if@mparswitch
669          \Gm@even@mp\@tempdimb
670        \fi
671      \fi
672    \fi
673  \fi}%
674\def\Gm@adjustbody{
675  \ifGm@hbody
676    \ifx\Gm@width\@undefined
677      \ifx\Gm@hscale\@undefined
678        \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}%
679      \else
680        \edef\Gm@width{\Gm@hscale\Gm@layoutwidth}%
681      \fi
682    \fi
683    \ifx\Gm@textwidth\@undefined\else
684      \setlength\@tempdima{\Gm@textwidth}%
685      \ifGm@includemp
686        \advance\@tempdima\Gm@wd@mp
687      \fi
688      \edef\Gm@width{\the\@tempdima}%
689    \fi
690  \fi
691  \ifGm@vbody
692    \ifx\Gm@height\@undefined
693      \ifx\Gm@vscale\@undefined
694        \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}%
695      \else
696        \edef\Gm@height{\Gm@vscale\Gm@layoutheight}%
697      \fi
698    \fi
699    \ifx\Gm@lines\@undefined\else
700      \ifdim\topskip<\ht\strutbox
701        \setlength\@tempdima{\topskip}%
702        \setlength\topskip{\ht\strutbox}%
703        \Gm@warning{\noexpand\topskip was changed from \the\@tempdima\space
704        to \the\topskip}%
705      \fi
706      \setlength\@tempdima{\baselineskip}%
707      \multiply\@tempdima\Gm@lines
708      \addtolength\@tempdima{\topskip}%
709      \addtolength\@tempdima{-\baselineskip}%
710      \edef\Gm@textheight{\the\@tempdima}%
711    \fi
712    \ifx\Gm@textheight\@undefined\else
713      \setlength\@tempdima{\Gm@textheight}%
714      \ifGm@includehead
715        \addtolength\@tempdima{\headheight}%
716        \addtolength\@tempdima{\headsep}%
717      \fi
718      \ifGm@includefoot
719        \addtolength\@tempdima{\footskip}%
720      \fi
721      \edef\Gm@height{\the\@tempdima}%
722    \fi
723  \fi}%
724\def\Gm@process{%
725  \ifGm@pass
726    \Gm@restore@org
727  \else
728    \Gm@@process
729  \fi}%
730\def\Gm@@process{%
731  \Gm@expandlengths
732  \Gm@adjustpaper
733  \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}%
734  \Gm@adjustmp
735  \Gm@adjustbody
736  \Gm@detall{h}{width}{lmargin}{rmargin}%
737  \Gm@detall{v}{height}{tmargin}{bmargin}%
738  \setlength\textwidth{\Gm@width}%
739  \setlength\textheight{\Gm@height}%
740  \setlength\topmargin{\Gm@tmargin}%
741  \setlength\oddsidemargin{\Gm@lmargin}%
742  \addtolength\oddsidemargin{-1\Gm@truedimen in}%
743  \ifGm@includemp
744    \advance\textwidth-\Gm@wd@mp
745    \advance\oddsidemargin\Gm@odd@mp
746  \fi
747  \if@mparswitch
748    \setlength\evensidemargin{\Gm@rmargin}%
749    \addtolength\evensidemargin{-1\Gm@truedimen in}%
750    \ifGm@includemp
751      \advance\evensidemargin\Gm@even@mp
752    \fi
753  \else
754    \evensidemargin\oddsidemargin
755  \fi
756  \advance\oddsidemargin\Gm@bindingoffset
757  \addtolength\topmargin{-1\Gm@truedimen in}%
758  \ifGm@includehead
759    \addtolength\textheight{-\headheight}%
760    \addtolength\textheight{-\headsep}%
761  \else
762    \addtolength\topmargin{-\headheight}%
763    \addtolength\topmargin{-\headsep}%
764  \fi
765  \ifGm@includefoot
766    \addtolength\textheight{-\footskip}%
767  \fi
768  \ifGm@heightrounded
769    \setlength\@tempdima{\textheight}%
770    \addtolength\@tempdima{-\topskip}%
771    \@tempcnta\@tempdima
772    \@tempcntb\baselineskip
773    \divide\@tempcnta\@tempcntb
774    \setlength\@tempdimb{\baselineskip}%
775    \multiply\@tempdimb\@tempcnta
776    \advance\@tempdima-\@tempdimb
777    \multiply\@tempdima\tw@
778    \ifdim\@tempdima>\baselineskip
779      \addtolength\@tempdimb{\baselineskip}%
780    \fi
781    \addtolength\@tempdimb{\topskip}%
782    \textheight\@tempdimb
783  \fi
784  \advance\oddsidemargin\Gm@layouthoffset%
785  \advance\evensidemargin\Gm@layouthoffset%
786  \advance\topmargin\Gm@layoutvoffset%
787  \addtolength\Gm@layoutwidth{\Gm@bindingoffset}%
788  }% end of \Gm@@process
789\def\Gm@detectdriver{%
790  \ifx\Gm@driver\@empty
791    \typeout{*geometry* driver: auto-detecting}%
792    \ifpdf
793      \Gm@setdriver{pdftex}%
794    \else
795      \Gm@setdriver{dvips}%
796    \fi
797    \ifvtex
798      \Gm@setdriver{vtex}%
799    \fi
800    \@ifundefined{XeTeXversion}{}{\Gm@setdriver{xetex}}%
801  \else
802    \ifx\Gm@driver\Gm@xetex %%
803      \@ifundefined{XeTeXversion}{\Gm@warning{%
804            Wrong driver setting: `xetex'; trying `pdftex' driver}%
805            \Gm@setdriver{pdftex}}{}%
806    \fi
807    \ifx\Gm@driver\Gm@vtex
808      \ifvtex\else
809        \Gm@warning{Wrong driver setting: `vtex'; trying `dvips' driver}%
810        \Gm@setdriver{dvips}%
811      \fi
812    \fi
813  \fi
814  \ifx\Gm@driver\relax
815    \typeout{*geometry* detected driver: <none>}%
816  \else
817    \typeout{*geometry* detected driver: \Gm@driver}%
818  \fi}%
819\def\Gm@showparams#1{%
820  \ifGm@pass\else
821   \setlength\@tempdima{\Gm@width}\edef\Gm@width{\the\@tempdima}%
822   \setlength\@tempdima{\Gm@height}\edef\Gm@height{\the\@tempdima}%
823  \fi
824  \ifGm@verbose\expandafter\typeout\else\expandafter\wlog\fi
825  {\Gm@logcontent{#1}}}%
826\def\Gm@showdim#1{* \string#1=\the#1^^J}%
827\def\Gm@showbool#1{\@nameuse{ifGm@#1}#1\space\fi}%
828\def\Gm@logcontent#1{%
829  *geometry* verbose mode - [ #1 ] result:^^J%
830  \ifGm@pass * pass (ignores the geometry layout)^^J%
831  \else
832  * driver: \if\Gm@driver\relax <none>\else\Gm@driver\fi^^J%
833  * paper: \ifx\Gm@paper\@undefined\the\paperwidth,
834    \the\paperheight\space(class default)\else\Gm@paper\fi^^J%
835  * layout: \ifGm@layout \the\Gm@layoutwidth, \the\Gm@layoutheight
836  \else\ifx\Gm@paper\@undefined\the\paperwidth,
837     \the\paperheight\else\Gm@paper\fi\fi^^J%
838  \@ifundefined{Gm@lines}{}{* lines: \Gm@lines^^J}%
839  \@ifundefined{Gm@hmarginratio}{}{* hratio: \Gm@hmarginratio^^J}%
840  \@ifundefined{Gm@vmarginratio}{}{* vratio: \Gm@vmarginratio^^J}%
841  \ifdim\Gm@bindingoffset=\z@\else
842  * bindingoffset: \the\Gm@bindingoffset^^J\fi
843  * switch(es): %
844   \Gm@showbool{landscape}%
845   \Gm@showbool{includehead}%
846   \Gm@showbool{includefoot}%
847   \Gm@showbool{includemp}%
848   \if@twoside twoside\space\fi%
849   \if@mparswitch\else\if@twoside asymmetric\space\fi\fi%
850   \Gm@showbool{heightrounded}%
851   \ifx\Gm@truedimen\@empty\else truedimen\space\fi%
852  ^^J%
853  * h-part:(L,W,R)=(\Gm@lmargin, \Gm@width, \Gm@rmargin)^^J%
854  * v-part:(T,H,B)=(\Gm@tmargin, \Gm@height, \Gm@bmargin)^^J%
855  \fi
856  \Gm@showdim{\paperwidth}%
857  \Gm@showdim{\paperheight}%
858  \Gm@showdim{\textwidth}%
859  \Gm@showdim{\textheight}%
860  \Gm@showdim{\oddsidemargin}%
861  \Gm@showdim{\evensidemargin}%
862  \Gm@showdim{\topmargin}%
863  \Gm@showdim{\headheight}%
864  \Gm@showdim{\headsep}%
865  \Gm@showdim{\footskip}%
866  \Gm@showdim{\marginparwidth}%
867  \Gm@showdim{\marginparsep}%
868  \Gm@showdim{\columnsep}%
869  * \string\skip\string\footins=\the\skip\footins^^J%
870  \Gm@showdim{\hoffset}%
871  \Gm@showdim{\voffset}%
872  \Gm@showdim{\mag}%
873  * \string\@twocolumn\if@twocolumn true\else false\fi^^J%
874  * \string\@twoside\if@twoside true\else false\fi^^J%
875  * \string\@mparswitch\if@mparswitch true\else false\fi^^J%
876  * \string\@reversemargin\if@reversemargin true\else false\fi^^J%
877  * (1in=72.27pt, 1cm=28.453pt)^^J}%
878\def\Gm@cropmark(#1,#2,#3,#4){%
879  \begin{picture}(0,0)
880    \setlength\unitlength{1truemm}\thinlines
881    \put(0,0){\line(#1,#2){5}}
882    \put(0,0){\line(#3,#4){5}}
883  \end{picture}}%
884\newcommand*{\Gm@vrules@mpi}{%
885  \hb@xt@\@tempdima{\llap{\vrule height\textheight}\ignorespaces
886  \hskip \textwidth\vrule height\textheight\hskip \marginparsep
887  \llap{\vrule height\textheight}\hfil\vrule height\textheight}}%
888\newcommand*{\Gm@vrules@mpii}{%
889  \hb@xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep
890  \llap{\vrule height\textheight}\ignorespaces
891  \hskip \marginparwidth\rlap{\vrule height\textheight}\hskip \marginparsep
892  \llap{\vrule height\textheight}\hskip\textwidth\rlap{\vrule height\textheight}\hss}}%
893\providecommand*\vb@xt@{\vbox to}%
894\newcommand*{\Gm@pageframes}{%
895  \vb@xt@\z@{\baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@%
896   \ifGm@showcrop
897    \vb@xt@\z@{\vskip-1\Gm@truedimen in\vskip\Gm@layoutvoffset%
898     \hb@xt@\z@{\hskip-1\Gm@truedimen in\hskip\Gm@layouthoffset%
899      \vb@xt@\Gm@layoutheight{%
900       \let\protect\relax
901       \hb@xt@\Gm@layoutwidth{\Gm@cropmark(1,0,0,-1)\hfil\Gm@cropmark(-1,0,0,-1)}%
902       \vfil
903       \hb@xt@\Gm@layoutwidth{\Gm@cropmark(1,0,0,1)\hfil\Gm@cropmark(-1,0,0,1)}}%
904     \hss}%
905    \vss}%
906   \fi%
907   \ifGm@showframe
908    \if@twoside
909     \ifodd\count\z@
910       \let\@themargin\oddsidemargin
911     \else
912       \let\@themargin\evensidemargin
913     \fi
914    \fi
915    \moveright\@themargin%
916    \vb@xt@\z@{%
917     \vskip\topmargin\vb@xt@\z@{\vss\hrule width\textwidth}%
918     \vskip\headheight\vb@xt@\z@{\vss\hrule width\textwidth}%
919     \vskip\headsep\vb@xt@\z@{\vss\hrule width\textwidth}
920     \@tempdima\textwidth
921     \advance\@tempdima by \marginparsep
922     \advance\@tempdima by \marginparwidth
923     \if@mparswitch
924      \ifodd\count\z@
925       \Gm@vrules@mpi
926      \else
927       \Gm@vrules@mpii
928      \fi
929     \else
930      \Gm@vrules@mpi
931     \fi
932     \vb@xt@\z@{\vss\hrule width\textwidth}%
933     \vskip\footskip\vb@xt@\z@{\vss\hrule width\textwidth}%
934     \vss}%
935    \fi%
936  }}%
937\let\Gm@shipout\shipout
938\newcommand*{\gm@shipi}{%
939  \ifvoid\@cclv\expandafter\aftergroup\fi\gm@shipii}%
940\newcommand*\gm@shipii{%
941  \ifvoid\@cclv
942    \Gm@shipout\box\@cclv
943  \else
944    \ifGm@showframe
945      \Gm@shipout\vbox{\Gm@pageframes\ifvbox\@cclv\unvbox\else\box\fi\@cclv}%
946    \else\ifGm@showcrop
947      \Gm@shipout\vbox{\Gm@pageframes\ifvbox\@cclv\unvbox\else\box\fi\@cclv}%
948    \else
949      \Gm@shipout\box\@cclv
950    \fi\fi
951  \fi}
952\def\ProcessOptionsKV{\@ifnextchar[%]
953  {\@ProcessOptionsKV}{\@ProcessOptionsKV[]}}%
954\def\@ProcessOptionsKV[#1]#2{%
955  \let\@tempa\@empty
956  \@tempcnta\z@
957  \if#1p\@tempcnta\@ne\else\if#1c\@tempcnta\tw@\fi\fi
958  \ifodd\@tempcnta
959   \edef\@tempa{\@ptionlist{\@currname.\@currext}}%
960  \else
961    \@for\CurrentOption:=\@classoptionslist\do{%
962      \@ifundefined{KV@#2@\CurrentOption}%
963      {}{\edef\@tempa{\@tempa,\CurrentOption,}}}%
964    \ifnum\@tempcnta=\z@
965      \edef\@tempa{\@tempa,\@ptionlist{\@currname.\@currext}}%
966    \fi
967  \fi
968  \edef\@tempa{\noexpand\setkeys{#2}{\@tempa}}%
969  \@tempa
970  \AtEndOfPackage{\let\@unprocessedoptions\relax}}%
971\def\Gm@setkeys{\setkeys{Gm}}%
972\def\Gm@processconfig{%
973  \let\Gm@origExecuteOptions\ExecuteOptions
974  \let\ExecuteOptions\Gm@setkeys
975  \InputIfFileExists{geometry.cfg}{}{}
976  \let\ExecuteOptions\Gm@origExecuteOptions}%
977\Gm@save
978\edef\Gm@restore@org{\Gm@restore}%
979\Gm@initall
980\Gm@processconfig
981\ProcessOptionsKV[c]{Gm}%
982\Gm@setdefaultpaper
983\ProcessOptionsKV[p]{Gm}%
984\Gm@process
985\AtBeginDocument{%
986  \Gm@savelength{paperwidth}%
987  \Gm@savelength{paperheight}%
988  \edef\Gm@restore@org{\Gm@restore}%
989  \ifGm@resetpaper
990    \edef\Gm@pw{\Gm@orgpw}%
991    \edef\Gm@ph{\Gm@orgph}%
992  \else
993    \edef\Gm@pw{\the\paperwidth}%
994    \edef\Gm@ph{\the\paperheight}%
995  \fi
996  \ifGm@pass\else
997    \ifnum\mag=\@m\else
998      \Gm@magtooffset
999      \divide\paperwidth\@m
1000      \multiply\paperwidth\the\mag
1001      \divide\paperheight\@m
1002      \multiply\paperheight\the\mag
1003    \fi
1004  \fi
1005  \Gm@detectdriver
1006  \ifx\Gm@driver\Gm@xetex
1007    \@ifundefined{pdfpagewidth}{}{%
1008      \setlength\pdfpagewidth{\Gm@pw}%
1009      \setlength\pdfpageheight{\Gm@ph}}%
1010    \ifnum\mag=\@m\else
1011      \ifx\Gm@truedimen\Gm@true
1012        \setlength\paperwidth{\Gm@pw}%
1013        \setlength\paperheight{\Gm@ph}%
1014      \fi
1015    \fi
1016  \fi
1017  \ifx\Gm@driver\Gm@pdftex
1018    \@ifundefined{pdfpagewidth}{}{%
1019      \setlength\pdfpagewidth{\Gm@pw}%
1020      \setlength\pdfpageheight{\Gm@ph}}%
1021    \ifnum\mag=\@m\else
1022      \@tempdima=\mag sp%
1023      \@ifundefined{pdfhorigin}{}{%
1024        \divide\pdfhorigin\@tempdima
1025        \multiply\pdfhorigin\@m
1026        \divide\pdfvorigin\@tempdima
1027        \multiply\pdfvorigin\@m}%
1028      \ifx\Gm@truedimen\Gm@true
1029        \setlength\paperwidth{\Gm@pw}%
1030        \setlength\paperheight{\Gm@ph}%
1031      \fi
1032    \fi
1033  \fi
1034  \ifx\Gm@driver\Gm@vtex
1035    \@ifundefined{mediawidth}{}{%
1036      \mediawidth=\paperwidth
1037      \mediaheight=\paperheight}%
1038    \ifvtexdvi
1039      \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
1040    \fi
1041  \fi
1042  \ifx\Gm@driver\Gm@dvips
1043    \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
1044    \ifx\Gm@driver\Gm@dvips\ifGm@landscape
1045      \AtBeginDvi{\special{! /landplus90 true store}}%
1046    \fi\fi
1047  \else\ifx\Gm@driver\Gm@dvipdfm
1048    \ifcase\ifx\AtBeginShipoutFirst\relax\@ne\else
1049        \ifx\AtBeginShipoutFirst\@undefined\@ne\else\z@\fi\fi
1050      \AtBeginShipoutFirst{\special{papersize=\the\paperwidth,\the\paperheight}}%
1051    \or
1052      \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
1053    \fi
1054  \fi\fi
1055  \ifGm@showframe
1056    \renewcommand*{\shipout}{\afterassignment\gm@shipi\setbox\@cclv=}
1057  \else\ifGm@showcrop
1058    \renewcommand*{\shipout}{\afterassignment\gm@shipi\setbox\@cclv=}
1059  \fi\fi
1060  \Gm@save
1061  \edef\Gm@restore@pkg{\Gm@restore}%
1062  \ifGm@verbose\ifGm@pass\else\Gm@checkmp\fi\fi
1063  \Gm@showparams{preamble}%
1064  \let\Gm@pw\relax
1065  \let\Gm@ph\relax
1066  }% end of \AtBeginDocument
1067\newcommand{\geometry}[1]{%
1068  \Gm@clean
1069  \setkeys{Gm}{#1}%
1070  \Gm@process}%
1071\@onlypreamble\geometry
1072\DeclareRobustCommand\Gm@changelayout{%
1073  \setlength{\@colht}{\textheight}
1074  \setlength{\@colroom}{\textheight}%
1075  \setlength{\vsize}{\textheight}
1076  \setlength{\columnwidth}{\textwidth}%
1077  \if@twocolumn%
1078    \advance\columnwidth-\columnsep
1079    \divide\columnwidth\tw@%
1080    \@firstcolumntrue%
1081  \fi%
1082  \setlength{\hsize}{\columnwidth}%
1083  \setlength{\linewidth}{\hsize}}%
1084\newcommand\newgeometry[1]{%
1085  \clearpage
1086  \Gm@restore@org
1087  \Gm@initnewgm
1088  \Gm@newgmtrue
1089  \setkeys{Gm}{#1}%
1090  \Gm@newgmfalse
1091  \Gm@process
1092  \ifnum\mag=\@m\else\Gm@magtooffset\fi
1093  \Gm@changelayout
1094  \Gm@showparams{newgeometry}}%
1095\newcommand\restoregeometry{%
1096  \clearpage
1097  \Gm@restore@pkg
1098  \Gm@changelayout}%
1099\newcommand*\savegeometry[1]{%
1100  \Gm@save
1101  \expandafter\edef\csname Gm@restore@@#1\endcsname{\Gm@restore}}%
1102\newcommand*\loadgeometry[1]{%
1103  \clearpage
1104  \@ifundefined{Gm@restore@@#1}{%
1105    \PackageError{geometry}{%
1106    \string\loadgeometry : name `#1' undefined}{%
1107    The name `#1' should be predefined with \string\savegeometry}%
1108  }{\@nameuse{Gm@restore@@#1}%
1109  \Gm@changelayout}}%
1110\endinput
1111%%
1112%% End of file `geometry.sty'.
Note: See TracBrowser for help on using the repository browser.