sawine@0: %% sawine@0: %% This is file `geometry.sty', sawine@0: %% generated with the docstrip utility. sawine@0: %% sawine@0: %% The original source files were: sawine@0: %% sawine@0: %% geometry.dtx (with options: `package') sawine@0: %% sawine@0: %% Copyright (C) 1996-2010 sawine@0: %% by Hideo Umeki sawine@0: %% sawine@0: %% This work may be distributed and/or modified under the conditions of sawine@0: %% the LaTeX Project Public License, either version 1.3c of this license sawine@0: %% or (at your option) any later version. The latest version of this sawine@0: %% license is in sawine@0: %% http://www.latex-project.org/lppl.txt sawine@0: %% and version 1.3c or later is part of all distributions of LaTeX sawine@0: %% version 2005/12/01 or later. sawine@0: %% sawine@0: %% This work is "maintained" (as per the LPPL maintenance status) sawine@0: %% by Hideo Umeki. sawine@0: %% sawine@0: %% This work consists of the files geometry.dtx and sawine@0: %% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex. sawine@0: %% sawine@0: \NeedsTeXFormat{LaTeX2e} sawine@0: \ProvidesPackage{geometry} sawine@0: [2010/03/13 v5.3 Page Geometry] sawine@0: \RequirePackage{keyval}% sawine@0: \RequirePackage{ifpdf}% sawine@0: %\RequirePackage{ifvtex}% sawine@0: \newif\ifGm@verbose sawine@0: \newif\ifGm@landscape sawine@0: \newif\ifGm@swap@papersize\Gm@swap@papersizefalse sawine@0: \newif\ifGm@includehead sawine@0: \newif\ifGm@includefoot sawine@0: \newif\ifGm@includemp sawine@0: \newif\ifGm@hbody sawine@0: \newif\ifGm@vbody sawine@0: \newif\ifGm@heightrounded sawine@0: \newif\ifGm@showframe sawine@0: \newif\ifGm@showcrop sawine@0: \newif\ifGm@pass\Gm@passfalse sawine@0: \newif\ifGm@resetpaper sawine@0: \newif\ifGm@layout sawine@0: \newif\ifGm@newgm sawine@0: \newcount\Gm@cnth sawine@0: \newcount\Gm@cntv sawine@0: \newcount\c@Gm@tempcnt sawine@0: \newdimen\Gm@bindingoffset sawine@0: \newdimen\Gm@wd@mp sawine@0: \newdimen\Gm@odd@mp sawine@0: \newdimen\Gm@even@mp sawine@0: \newdimen\Gm@layoutwidth sawine@0: \newdimen\Gm@layoutheight sawine@0: \newdimen\Gm@layouthoffset sawine@0: \newdimen\Gm@layoutvoffset sawine@0: \newtoks\Gm@dimlist sawine@0: \def\Gm@warning#1{\PackageWarningNoLine{geometry}{#1}}% sawine@0: \def\ifGm@preamble#1{% sawine@0: \ifGm@newgm sawine@0: \Gm@warning{`#1': not available in `\string\newgeometry'; skipped}% sawine@0: \else sawine@0: \expandafter\@firstofone sawine@0: \fi}% sawine@0: \def\Gm@Dhratio{1:1}% = left:right default for oneside sawine@0: \def\Gm@Dhratiotwo{2:3}% = inner:outer default for twoside. sawine@0: \def\Gm@Dvratio{2:3}% = top:bottom default sawine@0: \def\Gm@Dhscale{0.7}% sawine@0: \def\Gm@Dvscale{0.7}% sawine@0: \def\Gm@dvips{dvips}% sawine@0: \def\Gm@dvipdfm{dvipdfm}% sawine@0: \def\Gm@pdftex{pdftex}% sawine@0: \def\Gm@xetex{xetex}% sawine@0: \def\Gm@vtex{vtex}% sawine@0: \def\Gm@true{true}% sawine@0: \def\Gm@false{false}% sawine@0: \edef\Gm@orgpw{\the\paperwidth}% sawine@0: \edef\Gm@orgph{\the\paperheight}% sawine@0: \def\Gm@savelength#1{% sawine@0: \g@addto@macro\Gm@restore{\expandafter\noexpand\expandafter\csname sawine@0: #1\endcsname\expandafter=\expandafter\the\csname #1\endcsname\relax}} sawine@0: \def\Gm@saveboolean#1{% sawine@0: \csname if#1\endcsname sawine@0: \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1true\endcsname}% sawine@0: \else sawine@0: \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1false\endcsname}% sawine@0: \fi}% sawine@0: \def\Gm@restore{}% sawine@0: \def\Gm@save{% sawine@0: \Gm@savelength{paperwidth}% sawine@0: \Gm@savelength{paperheight}% sawine@0: \Gm@savelength{textwidth}% sawine@0: \Gm@savelength{textheight}% sawine@0: \Gm@savelength{evensidemargin}% sawine@0: \Gm@savelength{oddsidemargin}% sawine@0: \Gm@savelength{topmargin}% sawine@0: \Gm@savelength{headheight}% sawine@0: \Gm@savelength{headsep}% sawine@0: \Gm@savelength{topskip}% sawine@0: \Gm@savelength{footskip}% sawine@0: \Gm@savelength{baselineskip}% sawine@0: \Gm@savelength{marginparwidth}% sawine@0: \Gm@savelength{marginparsep}% sawine@0: \Gm@savelength{columnsep}% sawine@0: \Gm@savelength{hoffset}% sawine@0: \Gm@savelength{voffset} sawine@0: \Gm@savelength{Gm@layouthoffset}% sawine@0: \Gm@savelength{Gm@layoutvoffset}% sawine@0: \Gm@saveboolean{@twocolumn}% sawine@0: \Gm@saveboolean{@twoside}% sawine@0: \Gm@saveboolean{@mparswitch}% sawine@0: \Gm@saveboolean{@reversemargin}}% sawine@0: \def\Gm@initnewgm{% sawine@0: \Gm@dimlist={} sawine@0: \Gm@hbodyfalse sawine@0: \Gm@vbodyfalse sawine@0: \Gm@heightroundedfalse sawine@0: \Gm@includeheadfalse sawine@0: \Gm@includefootfalse sawine@0: \Gm@includempfalse sawine@0: \let\Gm@width\@undefined sawine@0: \let\Gm@height\@undefined sawine@0: \let\Gm@textwidth\@undefined sawine@0: \let\Gm@textheight\@undefined sawine@0: \let\Gm@lines\@undefined sawine@0: \let\Gm@hscale\@undefined sawine@0: \let\Gm@vscale\@undefined sawine@0: \let\Gm@hmarginratio\@undefined sawine@0: \let\Gm@vmarginratio\@undefined sawine@0: \let\Gm@lmargin\@undefined sawine@0: \let\Gm@rmargin\@undefined sawine@0: \let\Gm@tmargin\@undefined sawine@0: \let\Gm@bmargin\@undefined sawine@0: \Gm@layoutfalse sawine@0: \Gm@layouthoffset\z@ sawine@0: \Gm@layoutvoffset\z@ sawine@0: \Gm@bindingoffset\z@}% sawine@0: \def\Gm@initall{% sawine@0: \let\Gm@driver\@empty sawine@0: \let\Gm@truedimen\@empty sawine@0: \let\Gm@paper\@undefined sawine@0: \Gm@resetpaperfalse sawine@0: \Gm@landscapefalse sawine@0: \Gm@verbosefalse sawine@0: \Gm@showframefalse sawine@0: \Gm@showcropfalse sawine@0: \Gm@newgmfalse sawine@0: \Gm@initnewgm}% sawine@0: \def\Gm@setdriver#1{% sawine@0: \expandafter\let\expandafter\Gm@driver\csname Gm@#1\endcsname}% sawine@0: \def\Gm@unsetdriver#1{% sawine@0: \expandafter\ifx\csname Gm@#1\endcsname\Gm@driver\let\Gm@driver\@empty\fi}% sawine@0: \def\Gm@setbool{\@dblarg\Gm@@setbool}% sawine@0: \def\Gm@setboolrev{\@dblarg\Gm@@setboolrev}% sawine@0: \def\Gm@@setbool[#1]#2#3{\Gm@doif{#1}{#3}{\csname Gm@#2\Gm@bool\endcsname}}% sawine@0: \def\Gm@@setboolrev[#1]#2#3{\Gm@doifelse{#1}{#3}% sawine@0: {\csname Gm@#2\Gm@false\endcsname}{\csname Gm@#2\Gm@true\endcsname}}% sawine@0: \def\Gm@doif#1#2#3{% sawine@0: \lowercase{\def\Gm@bool{#2}}% sawine@0: \ifx\Gm@bool\@empty sawine@0: \let\Gm@bool\Gm@true sawine@0: \fi sawine@0: \ifx\Gm@bool\Gm@true sawine@0: \else sawine@0: \ifx\Gm@bool\Gm@false sawine@0: \else sawine@0: \let\Gm@bool\relax sawine@0: \fi sawine@0: \fi sawine@0: \ifx\Gm@bool\relax sawine@0: \Gm@warning{`#1' should be set to `true' or `false'}% sawine@0: \else sawine@0: #3 sawine@0: \fi}% sawine@0: \def\Gm@doifelse#1#2#3#4{% sawine@0: \Gm@doif{#1}{#2}{\ifx\Gm@bool\Gm@true #3\else #4\fi}}% sawine@0: \def\Gm@reverse#1{% sawine@0: \csname ifGm@#1\endcsname sawine@0: \csname Gm@#1false\endcsname\else\csname Gm@#1true\endcsname\fi}% sawine@0: \def\Gm@defbylen#1#2{% sawine@0: \setlength\@tempdima{#2}% sawine@0: \expandafter\edef\csname Gm@#1\endcsname{\the\@tempdima}}% sawine@0: \def\Gm@defbycnt#1#2{% sawine@0: \setcounter{Gm@tempcnt}{#2}% sawine@0: \expandafter\edef\csname Gm@#1\endcsname{\the\value{Gm@tempcnt}}}% sawine@0: \def\Gm@sep@ratio#1:#2{\@tempcnta=#1\@tempcntb=#2}% sawine@0: \def\Gm@setbyratio[#1]#2#3#4{% determine #4 by ratio sawine@0: \expandafter\Gm@sep@ratio\Gm@mratio\relax sawine@0: \if#1b sawine@0: \edef\@@tempa{\the\@tempcnta}% sawine@0: \@tempcnta=\@tempcntb sawine@0: \@tempcntb=\@@tempa\relax sawine@0: \fi sawine@0: \expandafter\setlength\expandafter\@tempdimb\expandafter sawine@0: {\csname Gm@#3\endcsname}% sawine@0: \ifnum\@tempcntb>\z@ sawine@0: \multiply\@tempdimb\@tempcnta sawine@0: \divide\@tempdimb\@tempcntb sawine@0: \fi sawine@0: \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimb}}% sawine@0: \def\Gm@detiv#1#2#3#4{% determine #4. sawine@0: \expandafter\setlength\expandafter\@tempdima\expandafter sawine@0: {\csname Gm@layout#1\endcsname}% sawine@0: \expandafter\setlength\expandafter\@tempdimb\expandafter sawine@0: {\csname Gm@#2\endcsname}% sawine@0: \addtolength\@tempdima{-\@tempdimb}% sawine@0: \expandafter\setlength\expandafter\@tempdimb\expandafter sawine@0: {\csname Gm@#3\endcsname}% sawine@0: \addtolength\@tempdima{-\@tempdimb}% sawine@0: \ifdim\@tempdima<\z@ sawine@0: \Gm@warning{`#4' results in NEGATIVE (\the\@tempdima).% sawine@0: ^^J\@spaces `#2' or `#3' should be shortened in length}% sawine@0: \fi sawine@0: \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdima}}% sawine@0: \def\Gm@detiiandiii#1#2#3{% determine #2 and #3. sawine@0: \expandafter\setlength\expandafter\@tempdima\expandafter sawine@0: {\csname Gm@layout#1\endcsname}% sawine@0: \expandafter\setlength\expandafter\@tempdimb\expandafter sawine@0: {\csname Gm@#1\endcsname}% sawine@0: \addtolength\@tempdima{-\@tempdimb}% sawine@0: \ifdim\@tempdima<\z@ sawine@0: \Gm@warning{`#2' and `#3' result in NEGATIVE (\the\@tempdima).% sawine@0: ^^J\@spaces `#1' should be shortened in length}% sawine@0: \fi sawine@0: \ifx\Gm@mratio\@undefined sawine@0: \expandafter\Gm@sep@ratio\Gm@Dmratio\relax sawine@0: \else sawine@0: \expandafter\Gm@sep@ratio\Gm@mratio\relax sawine@0: \ifnum\@tempcntb>\z@\else sawine@0: \Gm@warning{margin ratio a:b should be non-zero; default used}% sawine@0: \expandafter\Gm@sep@ratio\Gm@Dmratio\relax sawine@0: \fi sawine@0: \fi sawine@0: \@tempdimb=\@tempdima sawine@0: \advance\@tempcntb\@tempcnta sawine@0: \divide\@tempdima\@tempcntb sawine@0: \multiply\@tempdima\@tempcnta sawine@0: \advance\@tempdimb-\@tempdima sawine@0: \expandafter\edef\csname Gm@#2\endcsname{\the\@tempdima}% sawine@0: \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimb}}% sawine@0: \def\Gm@detall#1#2#3#4{% sawine@0: \@tempcnta\z@ sawine@0: \if#1h sawine@0: \let\Gm@mratio\Gm@hmarginratio sawine@0: \edef\Gm@Dmratio{\if@twoside\Gm@Dhratiotwo\else\Gm@Dhratio\fi}% sawine@0: \else sawine@0: \let\Gm@mratio\Gm@vmarginratio sawine@0: \edef\Gm@Dmratio{\Gm@Dvratio}% sawine@0: \fi sawine@0: \if#1h sawine@0: \ifx\Gm@lmargin\@undefined\else\advance\@tempcnta4\relax\fi sawine@0: \ifGm@hbody\advance\@tempcnta2\relax\fi sawine@0: \ifx\Gm@rmargin\@undefined\else\advance\@tempcnta1\relax\fi sawine@0: \Gm@cnth\@tempcnta sawine@0: \else sawine@0: \ifx\Gm@tmargin\@undefined\else\advance\@tempcnta4\relax\fi sawine@0: \ifGm@vbody\advance\@tempcnta2\relax\fi sawine@0: \ifx\Gm@bmargin\@undefined\else\advance\@tempcnta1\relax\fi sawine@0: \Gm@cntv\@tempcnta sawine@0: \fi sawine@0: \ifcase\@tempcnta sawine@0: \if#1h sawine@0: \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}% sawine@0: \else sawine@0: \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}% sawine@0: \fi sawine@0: \Gm@detiiandiii{#2}{#3}{#4}% sawine@0: \or sawine@0: \ifx\Gm@mratio\@undefined sawine@0: \if#1h sawine@0: \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}% sawine@0: \else sawine@0: \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}% sawine@0: \fi sawine@0: \setlength\@tempdimc{\@nameuse{Gm@#4}}% sawine@0: \Gm@detiiandiii{#2}{#3}{#4}% sawine@0: \expandafter\let\csname Gm@#2\endcsname\@undefined sawine@0: \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimc}% sawine@0: \else sawine@0: \Gm@setbyratio[f]{#1}{#4}{#3}% sawine@0: \fi sawine@0: \Gm@detiv{#2}{#3}{#4}{#2}% sawine@0: \or\Gm@detiiandiii{#2}{#3}{#4}% sawine@0: \or\Gm@detiv{#2}{#2}{#4}{#3}% sawine@0: \or sawine@0: \ifx\Gm@mratio\@undefined sawine@0: \if#1h sawine@0: \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}% sawine@0: \else sawine@0: \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}% sawine@0: \fi sawine@0: \setlength\@tempdimc{\@nameuse{Gm@#3}}% sawine@0: \Gm@detiiandiii{#2}{#4}{#3}% sawine@0: \expandafter\let\csname Gm@#2\endcsname\@undefined sawine@0: \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimc}% sawine@0: \else sawine@0: \Gm@setbyratio[b]{#1}{#3}{#4}% sawine@0: \fi sawine@0: \Gm@detiv{#2}{#3}{#4}{#2}% sawine@0: \or\Gm@detiv{#2}{#3}{#4}{#2}% sawine@0: \or\Gm@detiv{#2}{#2}{#3}{#4}% sawine@0: \or\Gm@warning{Over-specification in `#1'-direction.% sawine@0: ^^J\@spaces `#2' (\@nameuse{Gm@#2}) is ignored}% sawine@0: \Gm@detiv{#2}{#3}{#4}{#2}% sawine@0: \else\fi}% sawine@0: \def\Gm@clean{% sawine@0: \ifnum\Gm@cnth<4\let\Gm@lmargin\@undefined\fi sawine@0: \ifodd\Gm@cnth\else\let\Gm@rmargin\@undefined\fi sawine@0: \ifnum\Gm@cntv<4\let\Gm@tmargin\@undefined\fi sawine@0: \ifodd\Gm@cntv\else\let\Gm@bmargin\@undefined\fi sawine@0: \ifGm@hbody\else sawine@0: \let\Gm@hscale\@undefined sawine@0: \let\Gm@width\@undefined sawine@0: \let\Gm@textwidth\@undefined sawine@0: \fi sawine@0: \ifGm@vbody\else sawine@0: \let\Gm@vscale\@undefined sawine@0: \let\Gm@height\@undefined sawine@0: \let\Gm@textheight\@undefined sawine@0: \fi sawine@0: }% sawine@0: \def\Gm@parse@divide#1#2#3#4{% sawine@0: \def\Gm@star{*}% sawine@0: \@tempcnta\z@ sawine@0: \@for\Gm@tmp:=#1\do{% sawine@0: \expandafter\KV@@sp@def\expandafter\Gm@frag\expandafter{\Gm@tmp}% sawine@0: \edef\Gm@value{\Gm@frag}% sawine@0: \ifcase\@tempcnta\relax\edef\Gm@key{#2}% sawine@0: \or\edef\Gm@key{#3}% sawine@0: \else\edef\Gm@key{#4}% sawine@0: \fi sawine@0: \@nameuse{Gm@set\Gm@key false}% sawine@0: \ifx\empty\Gm@value\else sawine@0: \ifx\Gm@star\Gm@value\else sawine@0: \setkeys{Gm}{\Gm@key=\Gm@value}% sawine@0: \fi\fi sawine@0: \advance\@tempcnta\@ne}% sawine@0: \let\Gm@star\relax}% sawine@0: \def\Gm@branch#1#2#3{% sawine@0: \@tempcnta\z@ sawine@0: \@for\Gm@tmp:=#1\do{% sawine@0: \KV@@sp@def\Gm@frag{\Gm@tmp}% sawine@0: \edef\Gm@value{\Gm@frag}% sawine@0: \ifcase\@tempcnta\relax% cnta == 0 sawine@0: \setkeys{Gm}{#2=\Gm@value}% sawine@0: \or% cnta == 1 sawine@0: \setkeys{Gm}{#3=\Gm@value}% sawine@0: \else\fi sawine@0: \advance\@tempcnta\@ne}% sawine@0: \ifnum\@tempcnta=\@ne sawine@0: \setkeys{Gm}{#3=\Gm@value}% sawine@0: \fi}% sawine@0: \def\Gm@magtooffset{% sawine@0: \@tempdima=\mag\Gm@truedimen sp% sawine@0: \@tempdimb=1\Gm@truedimen in% sawine@0: \divide\@tempdimb\@tempdima sawine@0: \multiply\@tempdimb\@m sawine@0: \addtolength{\hoffset}{1\Gm@truedimen in}% sawine@0: \addtolength{\voffset}{1\Gm@truedimen in}% sawine@0: \addtolength{\hoffset}{-\the\@tempdimb}% sawine@0: \addtolength{\voffset}{-\the\@tempdimb}}% sawine@0: \def\Gm@setlength#1#2{% sawine@0: \let\Gm@len=\relax\let\Gm@td=\relax sawine@0: \edef\addtolist{\noexpand\Gm@dimlist=% sawine@0: {\the\Gm@dimlist \Gm@len{#1}{#2}}}\addtolist}% sawine@0: \def\Gm@expandlengths{% sawine@0: \def\Gm@td{\Gm@truedimen}% sawine@0: \def\Gm@len##1##2{\setlength{##1}{##2}}% sawine@0: \the\Gm@dimlist}% sawine@0: \def\Gm@setsize#1(#2,#3)#4{% sawine@0: \let\Gm@td\relax sawine@0: \expandafter\Gm@setlength\csname #1width\endcsname{#2\Gm@td #4}% sawine@0: \expandafter\Gm@setlength\csname #1height\endcsname{#3\Gm@td #4}% sawine@0: \ifGm@landscape\Gm@swap@papersizetrue\else\Gm@swap@papersizefalse\fi}% sawine@0: \def\Gm@setpaper@ifpre#1{% sawine@0: \ifGm@preamble{#1}{\def\Gm@paper{#1}\@nameuse{Gm@#1}{paper}}}% sawine@0: \@namedef{Gm@a0paper}#1{\Gm@setsize{#1}(841,1189){mm}}% ISO A0 sawine@0: \@namedef{Gm@a1paper}#1{\Gm@setsize{#1}(594,841){mm}}% ISO A1 sawine@0: \@namedef{Gm@a2paper}#1{\Gm@setsize{#1}(420,594){mm}}% ISO A2 sawine@0: \@namedef{Gm@a3paper}#1{\Gm@setsize{#1}(297,420){mm}}% ISO A3 sawine@0: \@namedef{Gm@a4paper}#1{\Gm@setsize{#1}(210,297){mm}}% ISO A4 sawine@0: \@namedef{Gm@a5paper}#1{\Gm@setsize{#1}(148,210){mm}}% ISO A5 sawine@0: \@namedef{Gm@a6paper}#1{\Gm@setsize{#1}(105,148){mm}}% ISO A6 sawine@0: \@namedef{Gm@b0paper}#1{\Gm@setsize{#1}(1000,1414){mm}}% ISO B0 sawine@0: \@namedef{Gm@b1paper}#1{\Gm@setsize{#1}(707,1000){mm}}% ISO B1 sawine@0: \@namedef{Gm@b2paper}#1{\Gm@setsize{#1}(500,707){mm}}% ISO B2 sawine@0: \@namedef{Gm@b3paper}#1{\Gm@setsize{#1}(353,500){mm}}% ISO B3 sawine@0: \@namedef{Gm@b4paper}#1{\Gm@setsize{#1}(250,353){mm}}% ISO B4 sawine@0: \@namedef{Gm@b5paper}#1{\Gm@setsize{#1}(176,250){mm}}% ISO B5 sawine@0: \@namedef{Gm@b6paper}#1{\Gm@setsize{#1}(125,176){mm}}% ISO B6 sawine@0: \@namedef{Gm@b0j}#1{\Gm@setsize{#1}(1030,1456){mm}}% JIS B0 sawine@0: \@namedef{Gm@b1j}#1{\Gm@setsize{#1}(728,1030){mm}}% JIS B1 sawine@0: \@namedef{Gm@b2j}#1{\Gm@setsize{#1}(515,728){mm}}% JIS B2 sawine@0: \@namedef{Gm@b3j}#1{\Gm@setsize{#1}(364,515){mm}}% JIS B3 sawine@0: \@namedef{Gm@b4j}#1{\Gm@setsize{#1}(257,364){mm}}% JIS B4 sawine@0: \@namedef{Gm@b5j}#1{\Gm@setsize{#1}(182,257){mm}}% JIS B5 sawine@0: \@namedef{Gm@b6j}#1{\Gm@setsize{#1}(128,182){mm}}% JIS B6 sawine@0: \@namedef{Gm@ansiapaper}#1{\Gm@setsize{#1}(8.5,11){in}}% sawine@0: \@namedef{Gm@ansibpaper}#1{\Gm@setsize{#1}(11,17){in}}% sawine@0: \@namedef{Gm@ansicpaper}#1{\Gm@setsize{#1}(17,22){in}}% sawine@0: \@namedef{Gm@ansidpaper}#1{\Gm@setsize{#1}(22,34){in}}% sawine@0: \@namedef{Gm@ansiepaper}#1{\Gm@setsize{#1}(34,44){in}}% sawine@0: \@namedef{Gm@letterpaper}#1{\Gm@setsize{#1}(8.5,11){in}}% sawine@0: \@namedef{Gm@legalpaper}#1{\Gm@setsize{#1}(8.5,14){in}}% sawine@0: \@namedef{Gm@executivepaper}#1{\Gm@setsize{#1}(7.25,10.5){in}}% sawine@0: \@namedef{Gm@screen}#1{\Gm@setsize{#1}(225,180){mm}}% sawine@0: \define@key{Gm}{paper}{\setkeys{Gm}{#1}}% sawine@0: \let\KV@Gm@papername\KV@Gm@paper sawine@0: \define@key{Gm}{a0paper}[true]{\Gm@setpaper@ifpre{a0paper}}% sawine@0: \define@key{Gm}{a1paper}[true]{\Gm@setpaper@ifpre{a1paper}}% sawine@0: \define@key{Gm}{a2paper}[true]{\Gm@setpaper@ifpre{a2paper}}% sawine@0: \define@key{Gm}{a3paper}[true]{\Gm@setpaper@ifpre{a3paper}}% sawine@0: \define@key{Gm}{a4paper}[true]{\Gm@setpaper@ifpre{a4paper}}% sawine@0: \define@key{Gm}{a5paper}[true]{\Gm@setpaper@ifpre{a5paper}}% sawine@0: \define@key{Gm}{a6paper}[true]{\Gm@setpaper@ifpre{a6paper}}% sawine@0: \define@key{Gm}{b0paper}[true]{\Gm@setpaper@ifpre{b0paper}}% sawine@0: \define@key{Gm}{b1paper}[true]{\Gm@setpaper@ifpre{b1paper}}% sawine@0: \define@key{Gm}{b2paper}[true]{\Gm@setpaper@ifpre{b2paper}}% sawine@0: \define@key{Gm}{b3paper}[true]{\Gm@setpaper@ifpre{b3paper}}% sawine@0: \define@key{Gm}{b4paper}[true]{\Gm@setpaper@ifpre{b4paper}}% sawine@0: \define@key{Gm}{b5paper}[true]{\Gm@setpaper@ifpre{b5paper}}% sawine@0: \define@key{Gm}{b6paper}[true]{\Gm@setpaper@ifpre{b6paper}}% sawine@0: \define@key{Gm}{b0j}[true]{\Gm@setpaper@ifpre{b0j}}% sawine@0: \define@key{Gm}{b1j}[true]{\Gm@setpaper@ifpre{b1j}}% sawine@0: \define@key{Gm}{b2j}[true]{\Gm@setpaper@ifpre{b2j}}% sawine@0: \define@key{Gm}{b3j}[true]{\Gm@setpaper@ifpre{b3j}}% sawine@0: \define@key{Gm}{b4j}[true]{\Gm@setpaper@ifpre{b4j}}% sawine@0: \define@key{Gm}{b5j}[true]{\Gm@setpaper@ifpre{b5j}}% sawine@0: \define@key{Gm}{b6j}[true]{\Gm@setpaper@ifpre{b6j}}% sawine@0: \define@key{Gm}{ansiapaper}[true]{\Gm@setpaper@ifpre{ansiapaper}}% sawine@0: \define@key{Gm}{ansibpaper}[true]{\Gm@setpaper@ifpre{ansibpaper}}% sawine@0: \define@key{Gm}{ansicpaper}[true]{\Gm@setpaper@ifpre{ansicpaper}}% sawine@0: \define@key{Gm}{ansidpaper}[true]{\Gm@setpaper@ifpre{ansidpaper}}% sawine@0: \define@key{Gm}{ansiepaper}[true]{\Gm@setpaper@ifpre{ansiepaper}}% sawine@0: \define@key{Gm}{letterpaper}[true]{\Gm@setpaper@ifpre{letterpaper}}% sawine@0: \define@key{Gm}{legalpaper}[true]{\Gm@setpaper@ifpre{legalpaper}}% sawine@0: \define@key{Gm}{executivepaper}[true]{\Gm@setpaper@ifpre{executivepaper}}% sawine@0: \define@key{Gm}{screen}[true]{\Gm@setpaper@ifpre{screen}}% sawine@0: \define@key{Gm}{paperwidth}{\ifGm@preamble{paperwidth}{% sawine@0: \Gm@setlength\paperwidth{#1}}}% sawine@0: \define@key{Gm}{paperheight}{\ifGm@preamble{paperheight}{% sawine@0: \Gm@setlength\paperheight{#1}}}% sawine@0: \define@key{Gm}{papersize}{\ifGm@preamble{papersize}{% sawine@0: \Gm@branch{#1}{paperwidth}{paperheight}}}% sawine@0: \define@key{Gm}{layout}{\Gm@layouttrue\@nameuse{Gm@#1}{Gm@layout}}% sawine@0: \let\KV@Gm@layoutname\KV@Gm@layout sawine@0: \define@key{Gm}{layoutwidth}{\Gm@layouttrue\Gm@setlength\Gm@layoutwidth{#1}}% sawine@0: \define@key{Gm}{layoutheight}{\Gm@layouttrue\Gm@setlength\Gm@layoutheight{#1}}% sawine@0: \define@key{Gm}{layoutsize}{\Gm@branch{#1}{layoutwidth}{layoutheight}}% sawine@0: \define@key{Gm}{landscape}[true]{\ifGm@preamble{landscape}{% sawine@0: \Gm@doifelse{landscape}{#1}% sawine@0: {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}% sawine@0: {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}}}% sawine@0: \define@key{Gm}{portrait}[true]{\ifGm@preamble{portrait}{% sawine@0: \Gm@doifelse{portrait}{#1}% sawine@0: {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}% sawine@0: {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}}}% sawine@0: \define@key{Gm}{hscale}{\Gm@hbodytrue\edef\Gm@hscale{#1}}% sawine@0: \define@key{Gm}{vscale}{\Gm@vbodytrue\edef\Gm@vscale{#1}}% sawine@0: \define@key{Gm}{scale}{\Gm@branch{#1}{hscale}{vscale}}% sawine@0: \define@key{Gm}{width}{\Gm@hbodytrue\Gm@defbylen{width}{#1}}% sawine@0: \define@key{Gm}{height}{\Gm@vbodytrue\Gm@defbylen{height}{#1}}% sawine@0: \define@key{Gm}{total}{\Gm@branch{#1}{width}{height}}% sawine@0: \let\KV@Gm@totalwidth\KV@Gm@width sawine@0: \let\KV@Gm@totalheight\KV@Gm@height sawine@0: \define@key{Gm}{textwidth}{\Gm@hbodytrue\Gm@defbylen{textwidth}{#1}}% sawine@0: \define@key{Gm}{textheight}{\Gm@vbodytrue\Gm@defbylen{textheight}{#1}}% sawine@0: \define@key{Gm}{text}{\Gm@branch{#1}{textwidth}{textheight}}% sawine@0: \let\KV@Gm@body\KV@Gm@text sawine@0: \define@key{Gm}{lines}{\Gm@vbodytrue\Gm@defbycnt{lines}{#1}}% sawine@0: \define@key{Gm}{includehead}[true]{\Gm@setbool{includehead}{#1}}% sawine@0: \define@key{Gm}{includefoot}[true]{\Gm@setbool{includefoot}{#1}}% sawine@0: \define@key{Gm}{includeheadfoot}[true]{\Gm@doifelse{includeheadfoot}{#1}% sawine@0: {\Gm@includeheadtrue\Gm@includefoottrue}% sawine@0: {\Gm@includeheadfalse\Gm@includefootfalse}}% sawine@0: \define@key{Gm}{includemp}[true]{\Gm@setbool{includemp}{#1}}% sawine@0: \define@key{Gm}{includeall}[true]{\Gm@doifelse{includeall}{#1}% sawine@0: {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}% sawine@0: {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}}% sawine@0: \define@key{Gm}{ignorehead}[true]{% sawine@0: \Gm@setboolrev[ignorehead]{includehead}{#1}}% sawine@0: \define@key{Gm}{ignorefoot}[true]{% sawine@0: \Gm@setboolrev[ignorefoot]{includefoot}{#1}}% sawine@0: \define@key{Gm}{ignoreheadfoot}[true]{\Gm@doifelse{ignoreheadfoot}{#1}% sawine@0: {\Gm@includeheadfalse\Gm@includefootfalse}% sawine@0: {\Gm@includeheadtrue\Gm@includefoottrue}}% sawine@0: \define@key{Gm}{ignoremp}[true]{% sawine@0: \Gm@setboolrev[ignoremp]{includemp}{#1}}% sawine@0: \define@key{Gm}{ignoreall}[true]{\Gm@doifelse{ignoreall}{#1}% sawine@0: {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}% sawine@0: {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}}% sawine@0: \define@key{Gm}{heightrounded}[true]{\Gm@setbool{heightrounded}{#1}}% sawine@0: \define@key{Gm}{hdivide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}}% sawine@0: \define@key{Gm}{vdivide}{\Gm@parse@divide{#1}{tmargin}{height}{bmargin}}% sawine@0: \define@key{Gm}{divide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}% sawine@0: \Gm@parse@divide{#1}{tmargin}{height}{bmargin}}% sawine@0: \define@key{Gm}{lmargin}{\Gm@defbylen{lmargin}{#1}}% sawine@0: \define@key{Gm}{rmargin}{\Gm@defbylen{rmargin}{#1}}% sawine@0: \let\KV@Gm@left\KV@Gm@lmargin sawine@0: \let\KV@Gm@inner\KV@Gm@lmargin sawine@0: \let\KV@Gm@innermargin\KV@Gm@lmargin sawine@0: \let\KV@Gm@right\KV@Gm@rmargin sawine@0: \let\KV@Gm@outer\KV@Gm@rmargin sawine@0: \let\KV@Gm@outermargin\KV@Gm@rmargin sawine@0: \define@key{Gm}{tmargin}{\Gm@defbylen{tmargin}{#1}}% sawine@0: \define@key{Gm}{bmargin}{\Gm@defbylen{bmargin}{#1}}% sawine@0: \let\KV@Gm@top\KV@Gm@tmargin sawine@0: \let\KV@Gm@bottom\KV@Gm@bmargin sawine@0: \define@key{Gm}{hmargin}{\Gm@branch{#1}{lmargin}{rmargin}}% sawine@0: \define@key{Gm}{vmargin}{\Gm@branch{#1}{tmargin}{bmargin}}% sawine@0: \define@key{Gm}{margin}{\Gm@branch{#1}{lmargin}{tmargin}% sawine@0: \Gm@branch{#1}{rmargin}{bmargin}}% sawine@0: \define@key{Gm}{hmarginratio}{\edef\Gm@hmarginratio{#1}}% sawine@0: \define@key{Gm}{vmarginratio}{\edef\Gm@vmarginratio{#1}}% sawine@0: \define@key{Gm}{marginratio}{\Gm@branch{#1}{hmarginratio}{vmarginratio}}% sawine@0: \let\KV@Gm@hratio\KV@Gm@hmarginratio sawine@0: \let\KV@Gm@vratio\KV@Gm@vmarginratio sawine@0: \let\KV@Gm@ratio\KV@Gm@marginratio sawine@0: \define@key{Gm}{hcentering}[true]{\Gm@doifelse{hcentering}{#1}% sawine@0: {\def\Gm@hmarginratio{1:1}}{}}% sawine@0: \define@key{Gm}{vcentering}[true]{\Gm@doifelse{vcentering}{#1}% sawine@0: {\def\Gm@vmarginratio{1:1}}{}}% sawine@0: \define@key{Gm}{centering}[true]{\Gm@doifelse{centering}{#1}% sawine@0: {\def\Gm@hmarginratio{1:1}\def\Gm@vmarginratio{1:1}}{}}% sawine@0: \define@key{Gm}{twoside}[true]{\Gm@doifelse{twoside}{#1}% sawine@0: {\@twosidetrue\@mparswitchtrue}{\@twosidefalse\@mparswitchfalse}}% sawine@0: \define@key{Gm}{asymmetric}[true]{\Gm@doifelse{asymmetric}{#1}% sawine@0: {\@twosidetrue\@mparswitchfalse}{}}% sawine@0: \define@key{Gm}{bindingoffset}{\Gm@setlength\Gm@bindingoffset{#1}}% sawine@0: \define@key{Gm}{headheight}{\Gm@setlength\headheight{#1}}% sawine@0: \define@key{Gm}{headsep}{\Gm@setlength\headsep{#1}}% sawine@0: \define@key{Gm}{footskip}{\Gm@setlength\footskip{#1}}% sawine@0: \let\KV@Gm@head\KV@Gm@headheight sawine@0: \let\KV@Gm@foot\KV@Gm@footskip sawine@0: \define@key{Gm}{nohead}[true]{\Gm@doifelse{nohead}{#1}% sawine@0: {\Gm@setlength\headheight\z@\Gm@setlength\headsep\z@}{}}% sawine@0: \define@key{Gm}{nofoot}[true]{\Gm@doifelse{nofoot}{#1}% sawine@0: {\Gm@setlength\footskip\z@}{}}% sawine@0: \define@key{Gm}{noheadfoot}[true]{\Gm@doifelse{noheadfoot}{#1}% sawine@0: {\Gm@setlength\headheight\z@\Gm@setlength\headsep sawine@0: \z@\Gm@setlength\footskip\z@}{}}% sawine@0: \define@key{Gm}{footnotesep}{\Gm@setlength{\skip\footins}{#1}}% sawine@0: \define@key{Gm}{marginparwidth}{\Gm@setlength\marginparwidth{#1}}% sawine@0: \let\KV@Gm@marginpar\KV@Gm@marginparwidth sawine@0: \define@key{Gm}{marginparsep}{\Gm@setlength\marginparsep{#1}}% sawine@0: \define@key{Gm}{nomarginpar}[true]{\Gm@doifelse{nomarginpar}{#1}% sawine@0: {\Gm@setlength\marginparwidth\z@\Gm@setlength\marginparsep\z@}{}}% sawine@0: \define@key{Gm}{columnsep}{\Gm@setlength\columnsep{#1}}% sawine@0: \define@key{Gm}{hoffset}{\Gm@setlength\hoffset{#1}}% sawine@0: \define@key{Gm}{voffset}{\Gm@setlength\voffset{#1}}% sawine@0: \define@key{Gm}{offset}{\Gm@branch{#1}{hoffset}{voffset}}% sawine@0: \define@key{Gm}{layouthoffset}{\Gm@setlength\Gm@layouthoffset{#1}}% sawine@0: \define@key{Gm}{layoutvoffset}{\Gm@setlength\Gm@layoutvoffset{#1}}% sawine@0: \define@key{Gm}{layoutoffset}{\Gm@branch{#1}{layouthoffset}{layoutvoffset}}% sawine@0: \define@key{Gm}{twocolumn}[true]{% sawine@0: \Gm@doif{twocolumn}{#1}{\csname @twocolumn\Gm@bool\endcsname}}% sawine@0: \define@key{Gm}{onecolumn}[true]{% sawine@0: \Gm@doifelse{onecolumn}{#1}{\@twocolumnfalse}{\@twocolumntrue}}% sawine@0: \define@key{Gm}{reversemp}[true]{% sawine@0: \Gm@doif{reversemp}{#1}{\csname @reversemargin\Gm@bool\endcsname}}% sawine@0: \define@key{Gm}{reversemarginpar}[true]{% sawine@0: \Gm@doif{reversemarginpar}{#1}{\csname @reversemargin\Gm@bool\endcsname}}% sawine@0: \define@key{Gm}{driver}{\ifGm@preamble{driver}{% sawine@0: \edef\@@tempa{#1}\edef\@@auto{auto}\edef\@@none{none}% sawine@0: \ifx\@@tempa\@empty\let\Gm@driver\relax\else sawine@0: \ifx\@@tempa\@@none\let\Gm@driver\relax\else sawine@0: \ifx\@@tempa\@@auto\let\Gm@driver\@empty\else sawine@0: \setkeys{Gm}{#1}\fi\fi\fi\let\@@auto\relax\let\@@none\relax}}% sawine@0: \define@key{Gm}{dvips}[true]{\ifGm@preamble{dvips}{% sawine@0: \Gm@doifelse{dvips}{#1}{\Gm@setdriver{dvips}}{\Gm@unsetdriver{dvips}}}}% sawine@0: \define@key{Gm}{dvipdfm}[true]{\ifGm@preamble{dvipdfm}{% sawine@0: \Gm@doifelse{dvipdfm}{#1}{\Gm@setdriver{dvipdfm}}{\Gm@unsetdriver{dvipdfm}}}}% sawine@0: \define@key{Gm}{pdftex}[true]{\ifGm@preamble{pdftex}{% sawine@0: \Gm@doifelse{pdftex}{#1}{\Gm@setdriver{pdftex}}{\Gm@unsetdriver{pdftex}}}}% sawine@0: \define@key{Gm}{xetex}[true]{\ifGm@preamble{xetex}{% sawine@0: \Gm@doifelse{xetex}{#1}{\Gm@setdriver{xetex}}{\Gm@unsetdriver{xetex}}}}% sawine@0: \define@key{Gm}{vtex}[true]{\ifGm@preamble{vtex}{% sawine@0: \Gm@doifelse{vtex}{#1}{\Gm@setdriver{vtex}}{\Gm@unsetdriver{vtex}}}}% sawine@0: \define@key{Gm}{verbose}[true]{\ifGm@preamble{verbose}{\Gm@setbool{verbose}{#1}}}% sawine@0: \define@key{Gm}{reset}[true]{\ifGm@preamble{reset}{% sawine@0: \Gm@doifelse{reset}{#1}{\Gm@restore@org\Gm@initall sawine@0: \ProcessOptionsKV[c]{Gm}\Gm@setdefaultpaper}{}}}% sawine@0: \define@key{Gm}{resetpaper}[true]{\ifGm@preamble{resetpaper}{% sawine@0: \Gm@setbool{resetpaper}{#1}}}% sawine@0: \define@key{Gm}{mag}{\ifGm@preamble{mag}{\mag=#1}}% sawine@0: \define@key{Gm}{truedimen}[true]{\ifGm@preamble{truedimen}{% sawine@0: \Gm@doifelse{truedimen}{#1}{\let\Gm@truedimen\Gm@true}% sawine@0: {\let\Gm@truedimen\@empty}}}% sawine@0: \define@key{Gm}{pass}[true]{\ifGm@preamble{pass}{\Gm@setbool{pass}{#1}}}% sawine@0: \define@key{Gm}{showframe}[true]{\Gm@setbool{showframe}{#1}}% sawine@0: \define@key{Gm}{showcrop}[true]{\Gm@setbool{showcrop}{#1}}% sawine@0: \def\Gm@setdefaultpaper{% sawine@0: \ifx\Gm@paper\@undefined sawine@0: \Gm@setsize{paper}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}% sawine@0: \Gm@setsize{Gm@layout}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}% sawine@0: \Gm@swap@papersizefalse sawine@0: \fi}% sawine@0: \def\Gm@adjustpaper{% sawine@0: \ifdim\paperwidth>\p@\else sawine@0: \PackageError{geometry}{% sawine@0: \string\paperwidth\space(\the\paperwidth) too short}{% sawine@0: Set a paper type (e.g., `a4paper').}% sawine@0: \fi sawine@0: \ifdim\paperheight>\p@\else sawine@0: \PackageError{geometry}{% sawine@0: \string\paperheight\space(\the\paperheight) too short}{% sawine@0: Set a paper type (e.g., `a4paper').}% sawine@0: \fi sawine@0: \ifGm@swap@papersize sawine@0: \setlength\@tempdima{\paperwidth}% sawine@0: \setlength\paperwidth{\paperheight}% sawine@0: \setlength\paperheight{\@tempdima}% sawine@0: \fi sawine@0: \ifGm@layout\else sawine@0: \let\Gm@layoutwidth\paperwidth sawine@0: \let\Gm@layoutheight\paperheight sawine@0: \fi}% sawine@0: \def\Gm@checkmp{% sawine@0: \ifGm@includemp\else sawine@0: \@tempcnta\z@\@tempcntb\@ne sawine@0: \if@twocolumn sawine@0: \@tempcnta\@ne sawine@0: \else sawine@0: \if@reversemargin sawine@0: \@tempcnta\@ne\@tempcntb\z@ sawine@0: \fi sawine@0: \fi sawine@0: \@tempdima\marginparwidth sawine@0: \advance\@tempdima\marginparsep sawine@0: \ifnum\@tempcnta=\@ne sawine@0: \@tempdimc\@tempdima sawine@0: \setlength\@tempdimb{\Gm@lmargin}% sawine@0: \advance\@tempdimc-\@tempdimb sawine@0: \ifdim\@tempdimc>\z@ sawine@0: \Gm@warning{The marginal notes overrun the paper edge.^^J sawine@0: \@spaces Add \the\@tempdimc\space and more to the left margin}% sawine@0: \fi sawine@0: \fi sawine@0: \ifnum\@tempcntb=\@ne sawine@0: \@tempdimc\@tempdima sawine@0: \setlength\@tempdimb{\Gm@rmargin}% sawine@0: \advance\@tempdimc-\@tempdimb sawine@0: \ifdim\@tempdimc>\z@ sawine@0: \Gm@warning{The marginal notes overrun the paper.^^J sawine@0: \@spaces Add \the\@tempdimc\space and more to the right margin}% sawine@0: \fi sawine@0: \fi sawine@0: \fi}% sawine@0: \def\Gm@adjustmp{% sawine@0: \ifGm@includemp sawine@0: \@tempdimb\marginparwidth sawine@0: \advance\@tempdimb\marginparsep sawine@0: \Gm@wd@mp\@tempdimb sawine@0: \Gm@odd@mp\z@ sawine@0: \Gm@even@mp\z@ sawine@0: \if@twocolumn sawine@0: \Gm@wd@mp2\@tempdimb sawine@0: \Gm@odd@mp\@tempdimb sawine@0: \Gm@even@mp\@tempdimb sawine@0: \else sawine@0: \if@reversemargin sawine@0: \Gm@odd@mp\@tempdimb sawine@0: \if@mparswitch\else sawine@0: \Gm@even@mp\@tempdimb sawine@0: \fi sawine@0: \else sawine@0: \if@mparswitch sawine@0: \Gm@even@mp\@tempdimb sawine@0: \fi sawine@0: \fi sawine@0: \fi sawine@0: \fi}% sawine@0: \def\Gm@adjustbody{ sawine@0: \ifGm@hbody sawine@0: \ifx\Gm@width\@undefined sawine@0: \ifx\Gm@hscale\@undefined sawine@0: \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}% sawine@0: \else sawine@0: \edef\Gm@width{\Gm@hscale\Gm@layoutwidth}% sawine@0: \fi sawine@0: \fi sawine@0: \ifx\Gm@textwidth\@undefined\else sawine@0: \setlength\@tempdima{\Gm@textwidth}% sawine@0: \ifGm@includemp sawine@0: \advance\@tempdima\Gm@wd@mp sawine@0: \fi sawine@0: \edef\Gm@width{\the\@tempdima}% sawine@0: \fi sawine@0: \fi sawine@0: \ifGm@vbody sawine@0: \ifx\Gm@height\@undefined sawine@0: \ifx\Gm@vscale\@undefined sawine@0: \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}% sawine@0: \else sawine@0: \edef\Gm@height{\Gm@vscale\Gm@layoutheight}% sawine@0: \fi sawine@0: \fi sawine@0: \ifx\Gm@lines\@undefined\else sawine@0: \ifdim\topskip<\ht\strutbox sawine@0: \setlength\@tempdima{\topskip}% sawine@0: \setlength\topskip{\ht\strutbox}% sawine@0: \Gm@warning{\noexpand\topskip was changed from \the\@tempdima\space sawine@0: to \the\topskip}% sawine@0: \fi sawine@0: \setlength\@tempdima{\baselineskip}% sawine@0: \multiply\@tempdima\Gm@lines sawine@0: \addtolength\@tempdima{\topskip}% sawine@0: \addtolength\@tempdima{-\baselineskip}% sawine@0: \edef\Gm@textheight{\the\@tempdima}% sawine@0: \fi sawine@0: \ifx\Gm@textheight\@undefined\else sawine@0: \setlength\@tempdima{\Gm@textheight}% sawine@0: \ifGm@includehead sawine@0: \addtolength\@tempdima{\headheight}% sawine@0: \addtolength\@tempdima{\headsep}% sawine@0: \fi sawine@0: \ifGm@includefoot sawine@0: \addtolength\@tempdima{\footskip}% sawine@0: \fi sawine@0: \edef\Gm@height{\the\@tempdima}% sawine@0: \fi sawine@0: \fi}% sawine@0: \def\Gm@process{% sawine@0: \ifGm@pass sawine@0: \Gm@restore@org sawine@0: \else sawine@0: \Gm@@process sawine@0: \fi}% sawine@0: \def\Gm@@process{% sawine@0: \Gm@expandlengths sawine@0: \Gm@adjustpaper sawine@0: \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}% sawine@0: \Gm@adjustmp sawine@0: \Gm@adjustbody sawine@0: \Gm@detall{h}{width}{lmargin}{rmargin}% sawine@0: \Gm@detall{v}{height}{tmargin}{bmargin}% sawine@0: \setlength\textwidth{\Gm@width}% sawine@0: \setlength\textheight{\Gm@height}% sawine@0: \setlength\topmargin{\Gm@tmargin}% sawine@0: \setlength\oddsidemargin{\Gm@lmargin}% sawine@0: \addtolength\oddsidemargin{-1\Gm@truedimen in}% sawine@0: \ifGm@includemp sawine@0: \advance\textwidth-\Gm@wd@mp sawine@0: \advance\oddsidemargin\Gm@odd@mp sawine@0: \fi sawine@0: \if@mparswitch sawine@0: \setlength\evensidemargin{\Gm@rmargin}% sawine@0: \addtolength\evensidemargin{-1\Gm@truedimen in}% sawine@0: \ifGm@includemp sawine@0: \advance\evensidemargin\Gm@even@mp sawine@0: \fi sawine@0: \else sawine@0: \evensidemargin\oddsidemargin sawine@0: \fi sawine@0: \advance\oddsidemargin\Gm@bindingoffset sawine@0: \addtolength\topmargin{-1\Gm@truedimen in}% sawine@0: \ifGm@includehead sawine@0: \addtolength\textheight{-\headheight}% sawine@0: \addtolength\textheight{-\headsep}% sawine@0: \else sawine@0: \addtolength\topmargin{-\headheight}% sawine@0: \addtolength\topmargin{-\headsep}% sawine@0: \fi sawine@0: \ifGm@includefoot sawine@0: \addtolength\textheight{-\footskip}% sawine@0: \fi sawine@0: \ifGm@heightrounded sawine@0: \setlength\@tempdima{\textheight}% sawine@0: \addtolength\@tempdima{-\topskip}% sawine@0: \@tempcnta\@tempdima sawine@0: \@tempcntb\baselineskip sawine@0: \divide\@tempcnta\@tempcntb sawine@0: \setlength\@tempdimb{\baselineskip}% sawine@0: \multiply\@tempdimb\@tempcnta sawine@0: \advance\@tempdima-\@tempdimb sawine@0: \multiply\@tempdima\tw@ sawine@0: \ifdim\@tempdima>\baselineskip sawine@0: \addtolength\@tempdimb{\baselineskip}% sawine@0: \fi sawine@0: \addtolength\@tempdimb{\topskip}% sawine@0: \textheight\@tempdimb sawine@0: \fi sawine@0: \advance\oddsidemargin\Gm@layouthoffset% sawine@0: \advance\evensidemargin\Gm@layouthoffset% sawine@0: \advance\topmargin\Gm@layoutvoffset% sawine@0: \addtolength\Gm@layoutwidth{\Gm@bindingoffset}% sawine@0: }% end of \Gm@@process sawine@0: \def\Gm@detectdriver{% sawine@0: \ifx\Gm@driver\@empty sawine@0: \typeout{*geometry* driver: auto-detecting}% sawine@0: \ifpdf sawine@0: \Gm@setdriver{pdftex}% sawine@0: \else sawine@0: \Gm@setdriver{dvips}% sawine@0: \fi sawine@0: %\ifvtex sawine@0: % \Gm@setdriver{vtex}% sawine@0: %\fi sawine@0: \@ifundefined{XeTeXversion}{}{\Gm@setdriver{xetex}}% sawine@0: \else sawine@0: \ifx\Gm@driver\Gm@xetex %% sawine@0: \@ifundefined{XeTeXversion}{\Gm@warning{% sawine@0: Wrong driver setting: `xetex'; trying `pdftex' driver}% sawine@0: \Gm@setdriver{pdftex}}{}% sawine@0: \fi sawine@0: \ifx\Gm@driver\Gm@vtex sawine@0: %\ifvtex\else sawine@0: % \Gm@warning{Wrong driver setting: `vtex'; trying `dvips' driver}% sawine@0: %\Gm@setdriver{dvips}% sawine@0: %\fi sawine@0: \fi sawine@0: \fi sawine@0: \ifx\Gm@driver\relax sawine@0: \typeout{*geometry* detected driver: }% sawine@0: \else sawine@0: \typeout{*geometry* detected driver: \Gm@driver}% sawine@0: \fi}% sawine@0: \def\Gm@showparams#1{% sawine@0: \ifGm@pass\else sawine@0: \setlength\@tempdima{\Gm@width}\edef\Gm@width{\the\@tempdima}% sawine@0: \setlength\@tempdima{\Gm@height}\edef\Gm@height{\the\@tempdima}% sawine@0: \fi sawine@0: \ifGm@verbose\expandafter\typeout\else\expandafter\wlog\fi sawine@0: {\Gm@logcontent{#1}}}% sawine@0: \def\Gm@showdim#1{* \string#1=\the#1^^J}% sawine@0: \def\Gm@showbool#1{\@nameuse{ifGm@#1}#1\space\fi}% sawine@0: \def\Gm@logcontent#1{% sawine@0: *geometry* verbose mode - [ #1 ] result:^^J% sawine@0: \ifGm@pass * pass (ignores the geometry layout)^^J% sawine@0: \else sawine@0: * driver: \if\Gm@driver\relax \else\Gm@driver\fi^^J% sawine@0: * paper: \ifx\Gm@paper\@undefined\the\paperwidth, sawine@0: \the\paperheight\space(class default)\else\Gm@paper\fi^^J% sawine@0: * layout: \ifGm@layout \the\Gm@layoutwidth, \the\Gm@layoutheight sawine@0: \else\ifx\Gm@paper\@undefined\the\paperwidth, sawine@0: \the\paperheight\else\Gm@paper\fi\fi^^J% sawine@0: \@ifundefined{Gm@lines}{}{* lines: \Gm@lines^^J}% sawine@0: \@ifundefined{Gm@hmarginratio}{}{* hratio: \Gm@hmarginratio^^J}% sawine@0: \@ifundefined{Gm@vmarginratio}{}{* vratio: \Gm@vmarginratio^^J}% sawine@0: \ifdim\Gm@bindingoffset=\z@\else sawine@0: * bindingoffset: \the\Gm@bindingoffset^^J\fi sawine@0: * switch(es): % sawine@0: \Gm@showbool{landscape}% sawine@0: \Gm@showbool{includehead}% sawine@0: \Gm@showbool{includefoot}% sawine@0: \Gm@showbool{includemp}% sawine@0: \if@twoside twoside\space\fi% sawine@0: \if@mparswitch\else\if@twoside asymmetric\space\fi\fi% sawine@0: \Gm@showbool{heightrounded}% sawine@0: \ifx\Gm@truedimen\@empty\else truedimen\space\fi% sawine@0: ^^J% sawine@0: * h-part:(L,W,R)=(\Gm@lmargin, \Gm@width, \Gm@rmargin)^^J% sawine@0: * v-part:(T,H,B)=(\Gm@tmargin, \Gm@height, \Gm@bmargin)^^J% sawine@0: \fi sawine@0: \Gm@showdim{\paperwidth}% sawine@0: \Gm@showdim{\paperheight}% sawine@0: \Gm@showdim{\textwidth}% sawine@0: \Gm@showdim{\textheight}% sawine@0: \Gm@showdim{\oddsidemargin}% sawine@0: \Gm@showdim{\evensidemargin}% sawine@0: \Gm@showdim{\topmargin}% sawine@0: \Gm@showdim{\headheight}% sawine@0: \Gm@showdim{\headsep}% sawine@0: \Gm@showdim{\footskip}% sawine@0: \Gm@showdim{\marginparwidth}% sawine@0: \Gm@showdim{\marginparsep}% sawine@0: \Gm@showdim{\columnsep}% sawine@0: * \string\skip\string\footins=\the\skip\footins^^J% sawine@0: \Gm@showdim{\hoffset}% sawine@0: \Gm@showdim{\voffset}% sawine@0: \Gm@showdim{\mag}% sawine@0: * \string\@twocolumn\if@twocolumn true\else false\fi^^J% sawine@0: * \string\@twoside\if@twoside true\else false\fi^^J% sawine@0: * \string\@mparswitch\if@mparswitch true\else false\fi^^J% sawine@0: * \string\@reversemargin\if@reversemargin true\else false\fi^^J% sawine@0: * (1in=72.27pt, 1cm=28.453pt)^^J}% sawine@0: \def\Gm@cropmark(#1,#2,#3,#4){% sawine@0: \begin{picture}(0,0) sawine@0: \setlength\unitlength{1truemm}\thinlines sawine@0: \put(0,0){\line(#1,#2){5}} sawine@0: \put(0,0){\line(#3,#4){5}} sawine@0: \end{picture}}% sawine@0: \newcommand*{\Gm@vrules@mpi}{% sawine@0: \hb@xt@\@tempdima{\llap{\vrule height\textheight}\ignorespaces sawine@0: \hskip \textwidth\vrule height\textheight\hskip \marginparsep sawine@0: \llap{\vrule height\textheight}\hfil\vrule height\textheight}}% sawine@0: \newcommand*{\Gm@vrules@mpii}{% sawine@0: \hb@xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep sawine@0: \llap{\vrule height\textheight}\ignorespaces sawine@0: \hskip \marginparwidth\rlap{\vrule height\textheight}\hskip \marginparsep sawine@0: \llap{\vrule height\textheight}\hskip\textwidth\rlap{\vrule height\textheight}\hss}}% sawine@0: \providecommand*\vb@xt@{\vbox to}% sawine@0: \newcommand*{\Gm@pageframes}{% sawine@0: \vb@xt@\z@{\baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@% sawine@0: \ifGm@showcrop sawine@0: \vb@xt@\z@{\vskip-1\Gm@truedimen in\vskip\Gm@layoutvoffset% sawine@0: \hb@xt@\z@{\hskip-1\Gm@truedimen in\hskip\Gm@layouthoffset% sawine@0: \vb@xt@\Gm@layoutheight{% sawine@0: \let\protect\relax sawine@0: \hb@xt@\Gm@layoutwidth{\Gm@cropmark(1,0,0,-1)\hfil\Gm@cropmark(-1,0,0,-1)}% sawine@0: \vfil sawine@0: \hb@xt@\Gm@layoutwidth{\Gm@cropmark(1,0,0,1)\hfil\Gm@cropmark(-1,0,0,1)}}% sawine@0: \hss}% sawine@0: \vss}% sawine@0: \fi% sawine@0: \ifGm@showframe sawine@0: \if@twoside sawine@0: \ifodd\count\z@ sawine@0: \let\@themargin\oddsidemargin sawine@0: \else sawine@0: \let\@themargin\evensidemargin sawine@0: \fi sawine@0: \fi sawine@0: \moveright\@themargin% sawine@0: \vb@xt@\z@{% sawine@0: \vskip\topmargin\vb@xt@\z@{\vss\hrule width\textwidth}% sawine@0: \vskip\headheight\vb@xt@\z@{\vss\hrule width\textwidth}% sawine@0: \vskip\headsep\vb@xt@\z@{\vss\hrule width\textwidth} sawine@0: \@tempdima\textwidth sawine@0: \advance\@tempdima by \marginparsep sawine@0: \advance\@tempdima by \marginparwidth sawine@0: \if@mparswitch sawine@0: \ifodd\count\z@ sawine@0: \Gm@vrules@mpi sawine@0: \else sawine@0: \Gm@vrules@mpii sawine@0: \fi sawine@0: \else sawine@0: \Gm@vrules@mpi sawine@0: \fi sawine@0: \vb@xt@\z@{\vss\hrule width\textwidth}% sawine@0: \vskip\footskip\vb@xt@\z@{\vss\hrule width\textwidth}% sawine@0: \vss}% sawine@0: \fi% sawine@0: }}% sawine@0: \let\Gm@shipout\shipout sawine@0: \newcommand*{\gm@shipi}{% sawine@0: \ifvoid\@cclv\expandafter\aftergroup\fi\gm@shipii}% sawine@0: \newcommand*\gm@shipii{% sawine@0: \ifvoid\@cclv sawine@0: \Gm@shipout\box\@cclv sawine@0: \else sawine@0: \ifGm@showframe sawine@0: \Gm@shipout\vbox{\Gm@pageframes\ifvbox\@cclv\unvbox\else\box\fi\@cclv}% sawine@0: \else\ifGm@showcrop sawine@0: \Gm@shipout\vbox{\Gm@pageframes\ifvbox\@cclv\unvbox\else\box\fi\@cclv}% sawine@0: \else sawine@0: \Gm@shipout\box\@cclv sawine@0: \fi\fi sawine@0: \fi} sawine@0: \def\ProcessOptionsKV{\@ifnextchar[%] sawine@0: {\@ProcessOptionsKV}{\@ProcessOptionsKV[]}}% sawine@0: \def\@ProcessOptionsKV[#1]#2{% sawine@0: \let\@tempa\@empty sawine@0: \@tempcnta\z@ sawine@0: \if#1p\@tempcnta\@ne\else\if#1c\@tempcnta\tw@\fi\fi sawine@0: \ifodd\@tempcnta sawine@0: \edef\@tempa{\@ptionlist{\@currname.\@currext}}% sawine@0: \else sawine@0: \@for\CurrentOption:=\@classoptionslist\do{% sawine@0: \@ifundefined{KV@#2@\CurrentOption}% sawine@0: {}{\edef\@tempa{\@tempa,\CurrentOption,}}}% sawine@0: \ifnum\@tempcnta=\z@ sawine@0: \edef\@tempa{\@tempa,\@ptionlist{\@currname.\@currext}}% sawine@0: \fi sawine@0: \fi sawine@0: \edef\@tempa{\noexpand\setkeys{#2}{\@tempa}}% sawine@0: \@tempa sawine@0: \AtEndOfPackage{\let\@unprocessedoptions\relax}}% sawine@0: \def\Gm@setkeys{\setkeys{Gm}}% sawine@0: \def\Gm@processconfig{% sawine@0: \let\Gm@origExecuteOptions\ExecuteOptions sawine@0: \let\ExecuteOptions\Gm@setkeys sawine@0: \InputIfFileExists{geometry.cfg}{}{} sawine@0: \let\ExecuteOptions\Gm@origExecuteOptions}% sawine@0: \Gm@save sawine@0: \edef\Gm@restore@org{\Gm@restore}% sawine@0: \Gm@initall sawine@0: \Gm@processconfig sawine@0: \ProcessOptionsKV[c]{Gm}% sawine@0: \Gm@setdefaultpaper sawine@0: \ProcessOptionsKV[p]{Gm}% sawine@0: \Gm@process sawine@0: \AtBeginDocument{% sawine@0: \Gm@savelength{paperwidth}% sawine@0: \Gm@savelength{paperheight}% sawine@0: \edef\Gm@restore@org{\Gm@restore}% sawine@0: \ifGm@resetpaper sawine@0: \edef\Gm@pw{\Gm@orgpw}% sawine@0: \edef\Gm@ph{\Gm@orgph}% sawine@0: \else sawine@0: \edef\Gm@pw{\the\paperwidth}% sawine@0: \edef\Gm@ph{\the\paperheight}% sawine@0: \fi sawine@0: \ifGm@pass\else sawine@0: \ifnum\mag=\@m\else sawine@0: \Gm@magtooffset sawine@0: \divide\paperwidth\@m sawine@0: \multiply\paperwidth\the\mag sawine@0: \divide\paperheight\@m sawine@0: \multiply\paperheight\the\mag sawine@0: \fi sawine@0: \fi sawine@0: \Gm@detectdriver sawine@0: \ifx\Gm@driver\Gm@xetex sawine@0: \@ifundefined{pdfpagewidth}{}{% sawine@0: \setlength\pdfpagewidth{\Gm@pw}% sawine@0: \setlength\pdfpageheight{\Gm@ph}}% sawine@0: \ifnum\mag=\@m\else sawine@0: \ifx\Gm@truedimen\Gm@true sawine@0: \setlength\paperwidth{\Gm@pw}% sawine@0: \setlength\paperheight{\Gm@ph}% sawine@0: \fi sawine@0: \fi sawine@0: \fi sawine@0: \ifx\Gm@driver\Gm@pdftex sawine@0: \@ifundefined{pdfpagewidth}{}{% sawine@0: \setlength\pdfpagewidth{\Gm@pw}% sawine@0: \setlength\pdfpageheight{\Gm@ph}}% sawine@0: \ifnum\mag=\@m\else sawine@0: \@tempdima=\mag sp% sawine@0: \@ifundefined{pdfhorigin}{}{% sawine@0: \divide\pdfhorigin\@tempdima sawine@0: \multiply\pdfhorigin\@m sawine@0: \divide\pdfvorigin\@tempdima sawine@0: \multiply\pdfvorigin\@m}% sawine@0: \ifx\Gm@truedimen\Gm@true sawine@0: \setlength\paperwidth{\Gm@pw}% sawine@0: \setlength\paperheight{\Gm@ph}% sawine@0: \fi sawine@0: \fi sawine@0: \fi sawine@0: \ifx\Gm@driver\Gm@vtex sawine@0: \@ifundefined{mediawidth}{}{% sawine@0: \mediawidth=\paperwidth sawine@0: \mediaheight=\paperheight}% sawine@0: %\ifvtexdvi sawine@0: % \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% sawine@0: %\fi sawine@0: \fi sawine@0: \ifx\Gm@driver\Gm@dvips sawine@0: \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% sawine@0: \ifx\Gm@driver\Gm@dvips\ifGm@landscape sawine@0: \AtBeginDvi{\special{! /landplus90 true store}}% sawine@0: \fi\fi sawine@0: \else\ifx\Gm@driver\Gm@dvipdfm sawine@0: \ifcase\ifx\AtBeginShipoutFirst\relax\@ne\else sawine@0: \ifx\AtBeginShipoutFirst\@undefined\@ne\else\z@\fi\fi sawine@0: \AtBeginShipoutFirst{\special{papersize=\the\paperwidth,\the\paperheight}}% sawine@0: \or sawine@0: \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% sawine@0: \fi sawine@0: \fi\fi sawine@0: \ifGm@showframe sawine@0: \renewcommand*{\shipout}{\afterassignment\gm@shipi\setbox\@cclv=} sawine@0: \else\ifGm@showcrop sawine@0: \renewcommand*{\shipout}{\afterassignment\gm@shipi\setbox\@cclv=} sawine@0: \fi\fi sawine@0: \Gm@save sawine@0: \edef\Gm@restore@pkg{\Gm@restore}% sawine@0: \ifGm@verbose\ifGm@pass\else\Gm@checkmp\fi\fi sawine@0: \Gm@showparams{preamble}% sawine@0: \let\Gm@pw\relax sawine@0: \let\Gm@ph\relax sawine@0: }% end of \AtBeginDocument sawine@0: \newcommand{\geometry}[1]{% sawine@0: \Gm@clean sawine@0: \setkeys{Gm}{#1}% sawine@0: \Gm@process}% sawine@0: \@onlypreamble\geometry sawine@0: \DeclareRobustCommand\Gm@changelayout{% sawine@0: \setlength{\@colht}{\textheight} sawine@0: \setlength{\@colroom}{\textheight}% sawine@0: \setlength{\vsize}{\textheight} sawine@0: \setlength{\columnwidth}{\textwidth}% sawine@0: \if@twocolumn% sawine@0: \advance\columnwidth-\columnsep sawine@0: \divide\columnwidth\tw@% sawine@0: \@firstcolumntrue% sawine@0: \fi% sawine@0: \setlength{\hsize}{\columnwidth}% sawine@0: \setlength{\linewidth}{\hsize}}% sawine@0: \newcommand\newgeometry[1]{% sawine@0: \clearpage sawine@0: \Gm@restore@org sawine@0: \Gm@initnewgm sawine@0: \Gm@newgmtrue sawine@0: \setkeys{Gm}{#1}% sawine@0: \Gm@newgmfalse sawine@0: \Gm@process sawine@0: \ifnum\mag=\@m\else\Gm@magtooffset\fi sawine@0: \Gm@changelayout sawine@0: \Gm@showparams{newgeometry}}% sawine@0: \newcommand\restoregeometry{% sawine@0: \clearpage sawine@0: \Gm@restore@pkg sawine@0: \Gm@changelayout}% sawine@0: \newcommand*\savegeometry[1]{% sawine@0: \Gm@save sawine@0: \expandafter\edef\csname Gm@restore@@#1\endcsname{\Gm@restore}}% sawine@0: \newcommand*\loadgeometry[1]{% sawine@0: \clearpage sawine@0: \@ifundefined{Gm@restore@@#1}{% sawine@0: \PackageError{geometry}{% sawine@0: \string\loadgeometry : name `#1' undefined}{% sawine@0: The name `#1' should be predefined with \string\savegeometry}% sawine@0: }{\@nameuse{Gm@restore@@#1}% sawine@0: \Gm@changelayout}}% sawine@0: \endinput sawine@0: %% sawine@0: %% End of file `geometry.sty'.