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