texlive[53299] Master/texmf-dist: geometry (2jan20)

commits+karl at tug.org commits+karl at tug.org
Thu Jan 2 23:07:32 CET 2020


Revision: 53299
          http://tug.org/svn/texlive?view=revision&revision=53299
Author:   karl
Date:     2020-01-02 23:07:32 +0100 (Thu, 02 Jan 2020)
Log Message:
-----------
geometry (2jan20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/geometry/README.md
    trunk/Master/texmf-dist/doc/latex/geometry/changes.txt
    trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples.tex
    trunk/Master/texmf-dist/doc/latex/geometry/geometry.cfg
    trunk/Master/texmf-dist/doc/latex/geometry/geometry.pdf
    trunk/Master/texmf-dist/source/latex/geometry/geometry.drv
    trunk/Master/texmf-dist/source/latex/geometry/geometry.dtx
    trunk/Master/texmf-dist/source/latex/geometry/geometry.ins
    trunk/Master/texmf-dist/tex/latex/geometry/geometry.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/geometry/geometry-de.pdf
    trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples-de.tex
    trunk/Master/texmf-dist/source/latex/geometry/geometry-de.drv
    trunk/Master/texmf-dist/source/latex/geometry/geometry-de.dtx
    trunk/Master/texmf-dist/source/latex/geometry/geometry-de.ins

Modified: trunk/Master/texmf-dist/doc/latex/geometry/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/geometry/README.md	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/doc/latex/geometry/README.md	2020-01-02 22:07:32 UTC (rev 53299)
@@ -1,10 +1,10 @@
-LaTeX Package: Geometry 2010/09/12 v5.6
+LaTeX Package: Geometry 2020/01/02 v5.9
 ----------------------------------------
 Flexible and complete interface to document dimensions.
 
 Copyright (C) 1996-2010
 by Hideo Umeki <latexgeometry at gmail.com>
-Copyright (C) 2018
+Copyright (C) 2018-202
 Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
 
 Abstract:
@@ -18,6 +18,10 @@
 
 Recent changes:
 
+[Release 5.9]
+Do not load ifxetex and ifpdf packages (use combined iftex package)
+Include German translation of the documentation.
+
 [Release 5.8]
 Add xdvipdfmx and dvipdfmx alias for dvipdfm option.
 
@@ -28,9 +32,11 @@
 
 Files:
   * README.md         -  this file
-  * changes.txt    -  history of changes
-  * geometry.dtx   -  including sources and documentation
-  * geometry.pdf   -  print-ready documentation
+  * changes.txt       -  history of changes
+  * geometry.dtx      -  including sources and documentation
+  * geometry.pdf      -  print-ready documentation
+  * geometry-de.dtx   -  German translation
+  * geometry-de.pdf   -  German translation
 
 Installation: 
 [manual installation]

Modified: trunk/Master/texmf-dist/doc/latex/geometry/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/geometry/changes.txt	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/doc/latex/geometry/changes.txt	2020-01-02 22:07:32 UTC (rev 53299)
@@ -1,3 +1,7 @@
+2020-01-02 Release 5.9
+  * Include German translation (previously distributed as geometry-de on ctan)
+  * Use iftex versions of \ifxetex, \ifpdf
+
 2018-04-16 Release 5.8
   * Documentation fixes.
   * (x)dvipdfmx alias for dvipdfm otion.

Added: trunk/Master/texmf-dist/doc/latex/geometry/geometry-de.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/geometry/geometry-de.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/geometry/geometry-de.pdf	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/doc/latex/geometry/geometry-de.pdf	2020-01-02 22:07:32 UTC (rev 53299)

Property changes on: trunk/Master/texmf-dist/doc/latex/geometry/geometry-de.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples-de.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples-de.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples-de.tex	2020-01-02 22:07:32 UTC (rev 53299)
@@ -0,0 +1,73 @@
+%%
+%% This is file `geometry-samples-de.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% geometry-de.dtx  (with options: `samples')
+%% 
+%% Copyright (C) 1996-2010
+%% by Hideo Umeki <latexgeometry at gmail.com>
+%% Copyright (C) 2018-2020
+%% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
+%% 
+%% This work may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3c of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in
+%%    http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This work is "maintained" (as per the LPPL maintenance status)
+%% by David Carlisle.
+%% 
+%% This work consists of the files geometry.dtx and
+%% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex.
+%% 
+\documentclass[12pt]{article}% uses letterpaper by default
+% \documentclass[12pt,a4paper]{article}% for A4 paper
+%---------------------------------------------------------------
+% Edit and uncomment one of the settings below
+%---------------------------------------------------------------
+% \usepackage{geometry}
+% \usepackage[centering]{geometry}
+% \usepackage[width=10cm,vscale=.7]{geometry}
+% \usepackage[margin=1cm, papersize={12cm,19cm}, resetpaper]{geometry}
+% \usepackage[margin=1cm,includeheadfoot]{geometry}
+\usepackage[margin=1cm,includeheadfoot,includemp]{geometry}
+% \usepackage[margin=1cm,bindingoffset=1cm,twoside]{geometry}
+% \usepackage[hmarginratio=2:1, vmargin=2cm]{geometry}
+% \usepackage[hscale=0.5,twoside]{geometry}
+% \usepackage[hscale=0.5,asymmetric]{geometry}
+% \usepackage[hscale=0.5,heightrounded]{geometry}
+% \usepackage[left=1cm,right=4cm,top=2cm,includefoot]{geometry}
+% \usepackage[lines=20,left=2cm,right=6cm,top=2cm,twoside]{geometry}
+% \usepackage[width=15cm, marginparwidth=3cm, includemp]{geometry}
+% \usepackage[hdivide={1cm,,2cm}, vdivide={3cm,8in,}, nohead]{geometry}
+% \usepackage[headsep=20pt, head=40pt,foot=20pt,includeheadfoot]{geometry}
+% \usepackage[text={6in,8in}, top=2cm, left=2cm]{geometry}
+% \usepackage[centering,includemp,twoside,landscape]{geometry}
+% \usepackage[mag=1414,margin=2cm]{geometry}
+% \usepackage[mag=1414,margin=2truecm,truedimen]{geometry}
+% \usepackage[a5paper, landscape, twocolumn, twoside,
+%    left=2cm, hmarginratio=2:1, includemp, marginparwidth=43pt,
+%    bottom=1cm, foot=.7cm, includefoot, textheight=11cm, heightrounded,
+%    columnsep=1cm,verbose]{geometry}
+%---------------------------------------------------------------
+% No need to change below
+%---------------------------------------------------------------
+\geometry{verbose,showframe}% the options appended.
+\usepackage{lipsum}% for dummy text of 150 paragraphs
+\newcommand\mynote{\marginpar[\raggedright
+A sample margin note in the left side.]%
+{\raggedright A sample margin note.}}%
+\newcommand\myfootnote{\footnote{This is a sample footnote text.}}
+\begin{document}
+\lipsum[1-2]\mynote\lipsum[3-4]\mynote
+\lipsum[5-11]\mynote\lipsum[12]\myfootnote
+\lipsum[13-22]\mynote\lipsum[23-32]
+\end{document}
+\endinput
+%%
+%% End of file `geometry-samples-de.tex'.


Property changes on: trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples-de.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples.tex	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/doc/latex/geometry/geometry-samples.tex	2020-01-02 22:07:32 UTC (rev 53299)
@@ -8,7 +8,7 @@
 %% 
 %% Copyright (C) 1996-2010
 %% by Hideo Umeki <latexgeometry at gmail.com>
-%% Copyright (C) 2018
+%% Copyright (C) 2018-2020
 %% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
 %% 
 %% This work may be distributed and/or modified under the conditions of

Modified: trunk/Master/texmf-dist/doc/latex/geometry/geometry.cfg
===================================================================
--- trunk/Master/texmf-dist/doc/latex/geometry/geometry.cfg	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/doc/latex/geometry/geometry.cfg	2020-01-02 22:07:32 UTC (rev 53299)
@@ -8,7 +8,7 @@
 %% 
 %% Copyright (C) 1996-2010
 %% by Hideo Umeki <latexgeometry at gmail.com>
-%% Copyright (C) 2018
+%% Copyright (C) 2018-2020
 %% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
 %% 
 %% This work may be distributed and/or modified under the conditions of

Modified: trunk/Master/texmf-dist/doc/latex/geometry/geometry.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/source/latex/geometry/geometry-de.drv
===================================================================
--- trunk/Master/texmf-dist/source/latex/geometry/geometry-de.drv	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/geometry/geometry-de.drv	2020-01-02 22:07:32 UTC (rev 53299)
@@ -0,0 +1,49 @@
+%%
+%% This is file `geometry-de.drv',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% geometry-de.dtx  (with options: `driver')
+%% 
+%% Copyright (C) 1996-2010
+%% by Hideo Umeki <latexgeometry at gmail.com>
+%% Copyright (C) 2018-2020
+%% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
+%% 
+%% This work may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3c of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in
+%%    http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This work is "maintained" (as per the LPPL maintenance status)
+%% by David Carlisle.
+%% 
+%% This work consists of the files geometry.dtx and
+%% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex.
+%% 
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{geometry.drv}
+\documentclass{ltxdoc}
+\usepackage[colorlinks, linkcolor=blue]{hyperref}
+\usepackage{graphicx}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage[a4paper, hmargin=2.5cm, vmargin=1cm, includeheadfoot]{geometry}
+\usepackage{charter}
+\DeclareRobustCommand\XeTeX{%
+      X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}%
+      \kern-.15em\TeX}
+\DeclareRobustCommand\XeLaTeX{%
+      X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}%
+      \kern-.15em\LaTeX}
+\begin{document}
+ \DocInput{geometry-de.dtx}
+\end{document}
+\endinput
+%%
+%% End of file `geometry-de.drv'.


Property changes on: trunk/Master/texmf-dist/source/latex/geometry/geometry-de.drv
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/geometry/geometry-de.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/geometry/geometry-de.dtx	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/geometry/geometry-de.dtx	2020-01-02 22:07:32 UTC (rev 53299)
@@ -0,0 +1,3865 @@
+% \iffalse meta-comment
+%
+% Copyright 1996-2010 by Hideo Umeki <latexgeometry at gmail.com>
+% Copyright 2018  Hideo Umeki and David Carlisle
+%
+% LaTeX Package: Geometry
+% -----------------------
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, either version 1.3c of this license
+% or (at your option) any later version. The latest version of this
+% license is in
+%    http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work is "maintained" (as per the LPPL maintenance status)
+% by David Carlisle
+%
+% This work consists of the files geometry.dtx and
+% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex.
+%
+% * Distribution
+%    CTAN: macros/latex/contrib/geometry/README.md
+%    CTAN: macros/latex/contrib/geometry/changes.txt
+%    CTAN: macros/latex/contrib/geometry/geometry.ins
+%    CTAN: macros/latex/contrib/geometry/geometry.dtx
+%    CTAN: macros/latex/contrib/geometry/geometry.pdf
+%    CTAN: macros/latex/contrib/geometry/geometry-de.dtx
+%    CTAN: macros/latex/contrib/geometry/geometry-de.pdf
+%
+% * See README for installation.
+%        
+%<*ignore>
+\begingroup
+  \def\x{LaTeX2e}
+\expandafter\endgroup
+\ifcase 0\ifx\install y1\fi\expandafter
+         \ifx\csname processbatchFile\endcsname\relax\else1\fi
+         \ifx\fmtname\x\else 1\fi\relax
+\else\csname fi\endcsname
+%</ignore>
+%<package|driver>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{geometry}
+%<package>  [2020/01/02 v5.9 Page Geometry]
+%<*install>
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: geometry 2020/01/02 v5.9 Page Geometry}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+Copyright (C) 1996-2010
+by Hideo Umeki <latexgeometry at gmail.com>
+Copyright (C) 2018-2020
+by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3c of this license
+or (at your option) any later version. The latest version of this
+license is in
+   http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work is "maintained" (as per the LPPL maintenance status)
+by David Carlisle.
+
+This work consists of the files geometry.dtx and
+the derived files: geometry.{sty,ins,drv}, geometry-samples.tex.
+
+\endpreamble
+
+\generate{%
+  \file{geometry-de.ins}{\from{geometry-de.dtx}{install}}%
+  \file{geometry-de.drv}{\from{geometry-de.dtx}{driver}}%
+  \usedir{tex/latex/geometry}%
+%  \file{geometry-de.sty}{\from{geometry-de.dtx}{package}}%
+%  \file{geometry-de.cfg}{\from{geometry-de.dtx}{config}}%
+  \file{geometry-samples-de.tex}{\from{geometry-de.dtx}{samples}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by LaTeX:}
+\Msg{*}
+\Msg{* \space\space geometry.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `geometry.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+\endbatchfile
+%</install>
+%<*ignore>
+\fi
+%</ignore>
+%<*driver>
+\ProvidesFile{geometry.drv}
+\documentclass{ltxdoc}
+\usepackage[colorlinks, linkcolor=blue]{hyperref}
+\usepackage{graphicx}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage[a4paper, hmargin=2.5cm, vmargin=1cm, includeheadfoot]{geometry}
+\usepackage{charter}
+\DeclareRobustCommand\XeTeX{%
+      X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}%
+      \kern-.15em\TeX}
+\DeclareRobustCommand\XeLaTeX{%
+      X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}%
+      \kern-.15em\LaTeX}
+\begin{document}
+ \DocInput{geometry-de.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \GetFileInfo{geometry.sty}
+%
+% \title{Das \textsf{geometry} Paket}
+% \date{\filedate\ \fileversion}
+% \author{Hideo Umeki\\\url{https://github.com/davidcarlisle/geometry}\\\begin{small}Die Übersetzung wurde angefertigt von Hans-Martin Haase
+% (\texttt{hmhaase at pclinuxosusers.de})\end{small}}
+%
+% \MakeShortVerb{|}
+%
+% \def\OpenB{{\ttfamily\char`\{}}
+% \def\Comma{{\ttfamily\char`,}}
+% \def\CloseB{{\ttfamily\char`\}}}
+% \def\Gm{\textsf{geometry}}
+% \newcommand\argii[2]{\OpenB\meta{#1}\Comma\meta{#2}\CloseB}
+% \newcommand\argiii[3]{\OpenB\meta{#1}\Comma\meta{#2}\Comma\meta{#3}\CloseB}
+% \newcommand\vargii[2]{\OpenB#1\Comma#2\CloseB}
+% \newcommand\vargiii[3]{\OpenB#1\Comma#2\Comma#3\CloseB}
+% \newcommand\OR{\ \strut\vrule width .4pt\ }
+% \newcommand\gpart[1]{\textsf{\textsl{\color[rgb]{.0,.45,.7}#1}}}%
+% \newcommand\glen[1]{\textsf{#1}}
+% \newenvironment{key}[2]{\expandafter\macro\expandafter{`#2'}}{\endmacro}
+% \newenvironment{Options}%
+%  {\begin{list}{}{%
+%   \renewcommand{\makelabel}[1]{\texttt{##1}\hfil}%
+%   \setlength{\itemsep}{-.5\parsep}
+%   \settowidth{\labelwidth}{\texttt{xxxxxxxxxxx\space}}%
+%   \setlength{\leftmargin}{\labelwidth}%
+%   \addtolength{\leftmargin}{\labelsep}}%
+%   \raggedright}
+%  {\end{list}}
+% \newenvironment{Spec}%
+%  {\begin{list}{}{%
+%   \renewcommand{\makelabel}[1]{\fbox{##1}\hfil}%
+%   \setlength{\itemsep}{-.5\parsep}
+%   \settowidth{\labelwidth}{\texttt{S(x,x)}}%
+%   \setlength{\leftmargin}{\labelwidth}%
+%   \addtolength{\leftmargin}{\labelsep}%
+%   \addtolength{\leftmargin}{2em}%
+%   \setlength{\rightmargin}{2em}}%
+%   \raggedright}
+%  {\end{list}}
+% \def\Ss(#1,#2){\textsf{S(#1,#2)}}%
+% \def\Sp(#1,#2,#3){\mbox{|(#1,#2,#3)|}}%
+% \def\onlypre{\llap{$^{\dagger\:}$}}%
+%
+% \maketitle
+%
+% \begin{abstract}
+% Dieses Paket bietet einen flexiblen und einfachen Weg die Seitenmaße zu verändern.
+% Sie können das Seitenlayout mit intuitiven Parametern verändern. Ein Beispiel,
+% wenn Sie den Abstand von jedem Rand der Seite auf 2\,cm setzen möchten,
+% können Sie einfach |\usepackage[margin=2cm]{geometry}| eingeben. 
+% Das Seitenlayout kann in der Mitte des Dokuments verändert werden, mit dem Befehl
+% |\newgeometry|.  
+% \end{abstract}
+%
+% \section{Vorwort zu Version 5}
+%
+% \begin{itemize}
+%  \item \textbf{Das Seitenlayout in der Mitte des Dokuments ändern.}\par
+%   Die neuen Befehle \cs{newgeometry\{$\cdots$\}} und
+%   \cs{restoregeometry} erlauben es dem Benutzer, die Seitenmaße in der Mitte
+%   des Dokuments zu verändern. \cs{newgeometry} stimmt fast mit  
+%   \cs{geometry} überein, ausgenommen das \cs{newgeometry} alle Optionen,
+%   die in der Präambel spezifiziert sind, deaktiviert und überspringt die Optionen, die sich auf die Seitengröße beziehen:
+%    |landscape|, |portrait| und die Seitengrößenoptionen (solche wie
+%    |papersize|, |paper=a4paper| und andere).
+%  \item \textbf{Eine neue Reihe von Optionen, um den Layoutbereich zu spezifizieren.}\par
+%   Die Optionen, die für den Bereich angegeben wurden, in dem die Seitenmaße
+%   berechnet werden, sind hinzugefügt wurden: \textsf{layout}, \textsf{layoutsize}, 
+%   \textsf{layoutwidth}, \textsf{layoutheight} und weitere.
+%   Diese Möglichkeiten sind hilfreich, falls das angegebene Layout auf eine andere
+%   Papiergröße angewendet soll.  Wenn beispielsweise |a4paper|
+%   und |layout=a5paper| verwendet wird, dann benutzt das \Gm\ Paket das `A5' statt `A4' Layout, um
+%   die Ränder für die Papiergröße zu berechen.
+%  \item \textbf{Eine neue Treiberoption |xetex|.}\par
+%   Die neue Treiberoption |xetex| wurde hinzugefügt. Die Routine für die automatische Treiberdetektion
+%   ist überarbeitet worden, sodass ein Fehler mit einer nicht definierten
+%   Kontrollsequenz vermieden werden konnte. Beachte, dass `geometry.cfg' in \TeX{} Live, welches
+%   die Autodetektionsroutine deaktiviert und |pdftex| benutzt, nicht mehr
+%   nötig ist und es keine Probleme gibt, obwohl dies dennoch existiert.
+%   Um |xetex| einzustellen, ist es dringend empfohlen \XeLaTeX{} zu verwenden.
+%  \item \textbf{Neue Papiergröße für JIS B-Serien und ISO C-Serien.}\par
+%   Die Papiergrößenvoreinstellungen |b0j| bis |b6j| für JIS (Japanese Industrial Standards) B-Serien und
+%   |c0paper| bis |c6paper| für ISO C-Serien
+%   (v5.4$\sim$) wurden hinzugefügt.
+%  \item \textbf{Veränderung des Standards für nicht angegebenen Rand.}\par
+%   In der Vorversion wurde dann, wenn man nur einen Rand angab, z.\,B.
+%   |bottom=1cm|, von \Gm\ der andere Rand mit 
+%   diesem Randverhältnis (1:1 standardmäßig für die vertikalen Maße) gesetzt
+%   und man bekam in diesem Fall |top=1cm|.
+%   Die Version 5 stellt die Textkörpergröße auf den |scale|
+%   ($=0.7$) ein und bestimmt den nicht angegebenen Rand. (Siehe Kapitel~\ref{sec:rules}) 
+%  \item \textbf{Die Optionen |showframe| und |showcrop| arbeiten auf jeder Seite.}\par
+%   Mit der |showframe| Option werden die Seitenränder auf jeder Seite angezeigt.
+%   Des Weiteren druckt die neue |showcrop| Option Schittmarken auf jede Ecke des
+%   Layoutbereichs auf jeder Seite. Bedenken sie, dass die Marken unsichtbar sein werden,
+%   solange die Layoutgröße nicht schmaler wie die Papiergröße gemacht wird.
+%   Version 5.4 führt einen neuen |\shipout| Überladeprozess ein, der das
+%   \textsf{atbegshi} Paket benutzt, so wird das \textsf{atbegshi} Paket
+%   benötigt, wenn die showframe oder showcrop Option angegeben wird.
+%  \item \textbf{Laden von geometry.cfg vor der Verarbeitung der Klassenoptionen.}\par
+%    In der Vorgängerversion wurde \textsf{geometry.cfg} nach dem
+%    Verarbeiten der Dokumentklassenoptionen geladen. Jetzt, da die Konfigurationsdatei vor der Abarbeitung der 
+%	 Klassenoptionen geladen wird, können sie das Verhalten,
+%	 wie es in \textsf{geometry.cfg} angegeben ist, durch das Hinzufügen von
+%	 Optionen in der |\documentclass| oder genauso gut in |\usepackage| und |\geometry| verändern.
+%  \item \textbf{Beseitigte Optionen: |compat2| und |twosideshift|.}
+%	 Die Version 5 ist nicht länger mit den Vorgängerversionen kompatibel.
+%	 |compat2| und |twisideshift| wurden zur Vereinfachung entfernt.
+% \end{itemize}
+%
+% \section{Einführung}
+%
+% Die Maße für das Seitenlayout in \LaTeX\ einzustellen ist nicht so einfach.
+% Sie müssen dafür verschiedene ursprüngliche \LaTeX -Maße anpassen, um einen Textbereich
+% dort zu platzieren, wo sie ihn angezeigt haben möchten.
+% Wenn sie einen Textbereich ihres Dokuments zentrieren wollen, 
+% dann müssen sie beispielsweise die systemeigenen Maße wie folgt angeben:
+% \begin{quote}
+%    |\usepackage{calc}|\\
+%    |\setlength\textwidth{7in}|\\
+%    |\setlength\textheight{10in}|\\
+%    |\setlength\oddsidemargin{(\paperwidth-\textwidth)/2 - 1in}|\\
+%    |\setlength\topmargin{(\paperheight-\textheight|\\
+%    |                      -\headheight-\headsep-\footskip)/2 - 1in}|.
+% \end{quote}
+% Ohne das Paket \texttt{calc} würde das obere Beispiel noch
+% schwierigere Einstellungen benötigen. Das Paket \Gm\ bietet einen einfachen
+% Weg, die Parameter des Seitenlayouts zu konfigurieren. In diesem Fall müssen sie nur
+% dies einstellen:
+% \begin{quote}
+%    |\usepackage[text={7in,10in},centering]{geometry}|. 
+% \end{quote}
+% Neben dem Zentrierungsproblem, ist das Einstellen der Ränder von jeder Kante des Blattes aus
+% ebenso problematisch. Aber \Gm\ erledigt dies ebenso einfach.
+% Wenn sie jeden Rand auf 1.5\,in setzen wollen, dann können sie
+% \begin{quote}
+%    |\usepackage[margin=1.5in]{geometry}| 
+% \end{quote}
+% eingeben.
+% Weil das geometry Paket eine Autovervollständigung besitzt,
+% werden nicht angegebene Maße automatisch festgelegt.
+% Das \Gm\ Paket wird auch nützlich sein, wenn sie das Seitenlayout beispielsweise nach
+% den folgenden strikten Instruktionen einstellen müssen:
+% \begin{quote}\slshape
+%   Die vollständig erlaubte Breite des Textbereiches ist $6.5$, bei einer Höhe von $8.75$
+%   Inches (englische Zoll). Der obere Rand auf jeder Seite soll $1.2$ Inches von
+%   der oberen Kante der Seite aus betragen. Der linke Rand sollte $0.9$ Inch von der linken Kante entfernt sein. 
+%   Die Fußzeile mit der Seitenzahl sollte am unteren Ende des Textbereiches sein.
+% \end{quote}
+% In diesem Fall können sie bei der Benutzung von \Gm\
+% \begin{quote}
+% |\usepackage[total={6.5in,8.75in},|\\
+% |            top=1.2in, left=0.9in, includefoot]{geometry}|.
+% \end{quote}
+% eingeben.
+%
+% Die Konfiguration eines Textbereiches in einem Schriftstück mit dem Textsatzprogramm hat einige
+% Ähnlichkeiten mit dem Platzieren eines Fensters auf dem Hintergrund beim Fenstermanager des Betriebssystems. 
+% Der Name `geometry' kommt von der |geometry|-Option, die genutzt wird, um die Größe und Lokalisierung eines Fensters
+% beim X-Window-System anzugeben.
+%
+% \section{Seitengeometrie}
+%
+% Abbildung~\ref{fig:layout} zeigt die Seitenlayoutsmaße , die
+% im \Gm\ Paket definiert sind.
+% Das Seitenlayout beinhaltet einen \gpart{total body} (druckbaren Bereich) und \gpart{margins} (Ränder). 
+% Der \gpart{total body} besteht aus einem \gpart{body} (Textbereich) mit einem optionalen
+% \gpart{header} (Kopf), \gpart{footer} (Fuß) und Randbemerkungen (\gpart{marginpar}).
+% Es gibt vier Ränder: \gpart{left} (links), \gpart{right} (rechts), \gpart{top} (oben) und
+% \gpart{bottom} (unten). Für zweiseitige Dokumente, sollten horizontale Ränder \gpart{inner} (innen) und \gpart{outer} 
+% (außen) genannt werden.
+% \begin{quote}
+%  \begin{tabular}{rcl}
+%   \gpart{paper}&:&\gpart{total body} und
+%   \gpart{margins}\\
+%   \gpart{total body}&:&\gpart{body} (Textbereich)\quad
+%             (optionaler \gpart{head}, \gpart{foot} und \gpart{marginpar})\\
+%   \gpart{margins}&:&\gpart{left} (\gpart{inner}), 
+%      \gpart{right} (\gpart{outer}), \gpart{top} und \gpart{bottom}
+%   \end{tabular}
+% \end{quote}
+% Jeder Rand wird von der korrespondierenden Kante des Blattes gemessen. 
+% Zum Beispiel, linker Rand (innerer Rand) meint eine horizontale Entfernung
+% zwischen der linken (inneren) Kante des Blattes und der des \emph{total body} (druckbaren Bereichs).
+% Deshalb sind der linke und obere Rand in \Gm\ anders als das natürliche Maß
+% \cs{leftmargin} und \cs{topmargin} definiert.
+% Die Größe eines Body (Textbereichs) kann durch \cs{textwidth} (Textbreite) und
+% \cs{textheight} (Texthöhe) angepasst werden. 
+% Die Maße für die Seite, den druckbaren Bereich und die Ränder stehen in folgenden Beziehungen.
+% \begin{eqnarray}
+%  \label{eq:paperwidth}
+%  |paperwidth (Seitenbreite)| &=& |left (links)|+|width (Breite)|+|right (rechts)| \\
+%  |paperheight (Seitenhöhe)| &=& |top (oben)|+|height (Höhe)|+|bottom (unten)|
+%  \label{eq:paperheight}
+% \end{eqnarray}
+%
+% \begin{figure}[h]
+%  \centering\small
+%  {\unitlength=.65pt
+%  \begin{picture}(450,250)(0,-10)
+%  \put(20,0){\framebox(170,230){}}
+%  \put(20,235){\makebox(170,230)[br]{\gpart{Seite}}}
+%  \begingroup\thicklines
+%  \put(40,30){\framebox(120,170){}}\endgroup
+%  \put(40,30){\makebox(120,165)[tr]{\gpart{druckbarer Bereich}~}}
+%  \put(45,30){\makebox(0,170)[l]{|Höhe|}}
+%  \put(40,35){\makebox(120,0)[bc]{|Breite|}}
+%  \put(50,-20){\makebox(120,0)[bc]{|Seitenbreite|}}
+%  \put(10,45){\makebox(0,170)[r]{|Seitenhöhe|}}
+%  \put(90,200){\makebox(0,30)[lc]{|oben|}}
+%  \put(90,0){\makebox(0,30)[lc]{|unten|}}
+%  \put(10,70){\makebox(0,0)[r]{|links|}}
+%  \put(10,55){\makebox(0,0)[r]{(|innen|)}}
+%  \put(200,70){\makebox(0,0)[l]{|rechts|}}
+%  \put(200,55){\makebox(0,0)[l]{(|außen|)}}
+%  \put(80,230){\vector(0,-1){30}}\put(80,30){\vector(0,-1){30}}
+%  \put(80,200){\vector(0,1){30}}\put(80,0){\vector(0,1){30}}
+%  \put(20,70){\vector(1,0){20}}\put(40,70){\vector(-1,0){20}}
+%  \put(160,70){\vector(1,0){30}}\put(190,70){\vector(-1,0){30}}
+%  \multiput(160,30)(5,0){24}{\line(1,0){2}}
+%  \multiput(160,200)(5,0){24}{\line(1,0){2}}
+%  \begingroup\thicklines
+%  \put(280,30){\framebox(120,170){}}\endgroup
+%  \put(283,133){\makebox(0,12)[l]{|Texthöhe|}}
+%  \put(295,130){\vector(0,-1){100}}\put(295,150){\vector(0,1){50}}
+%  \multiput(280,220)(5,0){24}{\line(1,0){3}}
+%  \put(280,208){\makebox(120,20)[bc]{\gpart{Kopf}}}
+%  \multiput(280,207)(5,0){24}{\line(1,0){3}}
+%  \put(420,225){\makebox(0,0)[l]{|Kopfhöhe|}}
+%  \put(418,225){\line(-2,-1){20}}
+%  \put(420,213){\makebox(0,0)[l]{|Kopftrennung|}}
+%  \put(418,213){\line(-2,-1){20}}
+%  \put(420,12){\makebox(0,0)[l]{|Fußbereich|}}
+%  \put(418,12){\line(-2,1){20}}
+%  \put(280,40){\makebox(120,140)[c]{\gpart{Textkörper}}}
+%  \put(305,45){\vector(-1,0){25}}\put(375,45){\vector(1,0){25}}
+%  \put(80,230){\vector(0,-1){30}}\put(80,30){\vector(0,-1){30}}
+%  \put(280,48){\makebox(120,0)[c]{|Textbreite|}}
+%  \put(280,15){\makebox(120,10)[c]{\gpart{Fuß}}}
+%  \multiput(280,14)(5,0){24}{\line(1,0){2}}
+%  \put(410,30){\dashbox{3}(30,170){}}
+%  \put(415,30){\makebox(30,170)[l]{\gpart{Randnotiz}}}
+%  \put(425,45){\vector(-1,0){15}}\put(425,45){\vector(1,0){15}}
+%  \put(450,70){\makebox(0,0)[l]{|Randnotiztrennung|}}
+%  \put(448,70){\line(-3,-1){43}}
+%  \put(450,45){\makebox(0,0)[l]{|Randnotizbreite|}}
+%  \end{picture}}
+%  \caption[Namen der Maße für \Gm]{%
+%  \begin{minipage}[t]{.8\textwidth}\raggedright\small
+%  Namen von Maßen, die im \Gm\ Paket genutzt werden:
+%  |width| $=$ |textwidth (Textbreite)| und |height| $=$ |textheight (Texthöhe)| sind Standard.
+%  |left (links)|, |right (rechts)|, |top (oben)| und |bottom (unten)| sind Ränder. 
+%  Wenn die Ränder auf der Rückseite durch die |twoside (Zweiseitigkeit)| Option getauscht werden,
+%  dann werden die Ränder, die mit |left| und |right| angegeben wurden, für die inneren und äußeren Ränder genutzt.
+%  |inner (innen)| und |outer (außen)| sind Pseudonyme für |left| und |right|.
+%  \end{minipage}}
+%  \label{fig:layout}
+% \end{figure}
+%
+% \begin{figure}[h]
+%  \centering\small
+%  {\unitlength=.65pt
+%  \begin{picture}(490,280)(0,-10)
+%  \put(60,250){\makebox(120,0)[bl]{\textbf{(a)}~\textit{Standard}}}%
+%  \put(20,0){\framebox(170,230){}}
+%  \put(20,230){\makebox(170,15)[r]{\gpart{Seite}}}
+%  \begingroup\thicklines
+%  \put(40,30){\framebox(120,165){}}\endgroup
+%  \put(70,165){\vector(0,1){30}}
+%  \put(55,145){\makebox(0,20)[lc]{|Texthöhe|}}
+%  \put(70,145){\vector(0,-1){115}}
+%  \multiput(40,203)(5,0){24}{\line(1,0){3}}
+%  \multiput(40,213)(5,0){24}{\line(1,0){3}}
+%  \multiput(40,10)(5,0){24}{\line(1,0){3}}
+%  \put(40,203){\makebox(120,20)[bc]{\gpart{Kopf}}}
+%  \put(40,40){\makebox(120,140)[c]{\gpart{Textkörper}}}
+%  \put(40,11){\makebox(120,10)[c]{\gpart{Fuß}}}
+%  \put(150,230){\vector(0,-1){35}}\put(150,30){\vector(0,-1){30}}
+%  \put(150,195){\vector(0,1){35}}\put(150,0){\vector(0,1){30}}
+%  \put(160,197){\makebox(0,30)[lc]{|oben|}}
+%  \put(160,0){\makebox(0,30)[lc]{|unten|}}
+%  \multiput(160,30)(5,0){24}{\line(1,0){2}}
+%  \multiput(160,195)(5,0){24}{\line(1,0){2}}
+%  \put(255,250){\makebox(120,0)[bl]
+%      {\textbf{(b)}~|includehead| und |includefoot|}}%
+%  \put(260,0){\framebox(170,230){}}
+%  \put(260,230){\makebox(170,15)[r]{\gpart{Seite}}}
+%  \begingroup\thicklines
+%  \put(280,30){\framebox(120,165){}}\endgroup
+%  \put(310,152){\vector(0,1){25}}
+%  \put(295,130){\makebox(0,20)[lc]{|Texthöhe|}}
+%  \put(310,130){\vector(0,-1){80}}
+%  \multiput(280,184)(5,0){24}{\line(1,0){3}}
+%  \multiput(280,177)(5,0){24}{\line(1,0){3}}
+%  \multiput(280,50)(5,0){24}{\line(1,0){3}}
+%  \put(280,184){\makebox(120,10)[c]{\gpart{Kopf}}}
+%  \put(280,40){\makebox(120,140)[c]{\gpart{Textkörper}}}
+%  \put(400,140){\line(1,1){45}}
+%  \put(437,187){\makebox(50,10)[l]{\gpart{druckbarer Bereich}}}
+%  \put(280,31){\makebox(120,10)[c]{\gpart{Fuß}}}
+%  \put(370,230){\vector(0,-1){35}}\put(370,30){\vector(0,-1){30}}
+%  \put(370,195){\vector(0,1){35}}\put(370,0){\vector(0,1){30}}
+%  \put(380,197){\makebox(0,30)[lc]{|oben|}}
+%  \put(380,0){\makebox(0,30)[lc]{|unten|}}
+%  \end{picture}}
+%  \caption[Ein Effekt von \texttt{includehead} und \texttt{includefoot}.]{%
+%  \begin{minipage}[t]{.8\textwidth}\raggedright\small
+%    |includehead| und |includefoot| schließen den Kopf und den Fuß mit
+%    in den \gpart{total body} (druckbaren Bereich) ein. \textbf{(a)} |height| $=$ |textheight| (Standard).
+%    \textbf{(b)} |height| $=$ |textheight| $+$ |headheight| $+$ |headsep| $+$ 
+%    |footskip|, wenn |includehead| und |includefoot| aktiv. Wenn der obere und untere Rand angegeben ist
+%    führt |includehead| und |includefoot| dazu, dass die |Texthöhe| verringert wird.
+%  \end{minipage}}
+%  \label{fig:includes}
+% \end{figure}
+%
+% Die |Breite| und |Höhe| des druckbaren Bereichs wird definiert:
+% \begin{eqnarray}
+%  \label{eq:width}
+%  |width| &:=& |textwidth| \quad( +\>  |marginparsep|* + |marginparwidth|** )\\
+%  |height| &:=& |textheight| \quad(+\> |headheight|*** + |headsep|**** + |footskip|***** )
+%  \label{eq:height}
+% \end{eqnarray}
+% * 	Randnotiztrennung
+% ** 	Randnotizbreite
+% *** 	Kopfhöhe
+% **** 	Kopftrennung
+% ***** Fußbereich\\
+% In Gleichung (\ref{eq:width}) ist standardmäßig |width:=textwidth|, 
+% während |marginparsep| und |marginparwidth| nur in der |width (Breite)| enthalten sind,
+% wenn die |includemp| Option auf |true| gesetzt ist. 
+% In Gleichung (\ref{eq:height}) ist standardmäßig |height:=textheight|. 
+% Falls |includehead| auf |true| gesetzt ist, dann werden |headheight| und |headsep|
+% als Teil der Höhe (|height|) betrachtet.
+% Auf dem selben Weg, nimmt |includefoot| |footskip| in |height| auf. 
+% Abbildung~\ref{fig:includes} zeigt, wie diese Optionen
+% in der vertikalen Richtung arbeiten.
+%
+% Folglich besteht das Seitenlayout aus drei Teilen (Längen) in jeder
+% Richtung: ein Textkörper und zwei Ränder. Wenn zwei der Ränder explizit angegeben sind,
+% dann sind die anderen offensichtlich und müssen nicht angegeben werden.
+% Abbildung~\ref{fig:Labc} zeigt ein einfaches Modell der Seitenmaße. 
+% Falls eine Länge |L| gegeben ist und eingeteilt ist in den Textkörper |b|, die Ränder |a| und |c|, dann ist offensichtlich, 
+% dass
+% \begin{equation}
+%   |L|=|a|+|b|+|c|  \label{eq:Labc}
+% \end{equation}
+% Die Spezifikation mit zwei von drei (|a|, |b| und |c|) festgelegten, ist explizit lösbar.
+% Wenn zwei oder mehr der übrigen nicht angegeben sind, kann
+% Gleichung~(\ref{eq:Labc}) nicht ohne eine andere Beziehung zwischen ihnen gelöst werden.
+% Falls alle Werte angegeben sind, dann muss überprüft werden, ob diese Gleichung ~(\ref{eq:Labc}) genügen,
+% da es zu viele Angaben sind oder es ist `überspezifiziert'.
+%
+% \begin{figure}[h]
+%  \centering
+%  {\unitlength=0.8pt
+%  \begin{picture}(300,60)(0,-5)
+%  \begingroup\linethickness{5pt}
+%  \put(0,5){\textcolor{green}{\line(1,0){60}}}
+%  \put(60,5){\textcolor{black}{\line(1,0){160}}}
+%  \put(220,5){\textcolor{green}{\line(1,0){80}}}
+%  \endgroup
+%  \put(0,15){\makebox(60,10)[b]{|a|}}
+%  \put(60,0){\line(0,1){20}}
+%  \put(60,15){\makebox(160,10)[b]{|b|}}
+%  \put(220,0){\line(0,1){20}}
+%  \put(220,15){\makebox(80,10)[b]{|c|}}
+%  \put(0,0){\line(0,1){50}}
+%  \put(150,35){\vector(-1,0){150}}
+%  \put(0,40){\makebox(300,10){|L|}}
+%  \put(150,35){\vector(1,0){150}}
+%  \put(300,0){\line(0,1){50}}
+%  \end{picture}}
+%  \caption{Ein einfaches Modell der Seitenmaße.}
+%  \label{fig:Labc}
+% \end{figure}
+%
+% Das \Gm\ Paket besitzt einen Autovervollständigungsmechanismus, der vor dem
+% Ärger der Angabe von Seitenlayoutmaßen schützt. Zum Beispiel
+% können sie das Folgende
+% \begin{quote}
+%  |\usepackage[width=14cm, left=3cm]{geometry}|
+% \end{quote}
+% auf A4-Papier einstellen. In diesem Fall müssen sie den rechten Rand nicht angeben.
+% Die Details der Autovervollständigung werden in Kapitel~\ref{sec:rules} beschrieben.
+%
+%
+%
+%
+%
+% \section{Benutzerschnittstelle}
+%
+% \subsection{Befehle}
+%
+% Das \Gm\ Paket unterstützt die folgenden Befehle:
+% \begin{itemize}\setlength{\itemsep}{-.5\parsep}
+%  \item |\geometry{|\meta{Optionen}|}|
+%  \item |\newgeometry{|\meta{Optionen}|}| und |\restoregeometry|
+%  \item |\savegeometry{|\meta{Name}|}| und |\loadgeometry{|\meta{Name}|}|
+% \end{itemize}
+%
+% |\geometry{|\meta{Optionen}|}|
+% verändert das Seitenlayout entsprechend den angegebenen Optionen im Argument.
+% Dieser Befehl, wenn überhaupt, sollte nur in der Präambel platziert werden
+% (vor |\begin{document}|).
+% 
+% Das \Gm\ Paket kann als Teil einer Klasse oder eines weiteren Pakets, das sie im Dokument benutzen,
+% genutzt werden. Der Befehl \cs{geometry} kann einige der Einstellungen in der Präambel
+% überschreiben. Eine mehrfache Nutzung von \cs{geometry}
+% ist erlaubt und wird dann mit den verbundenen Optionen ausgeführt.
+% Wenn \Gm\ noch nicht geladen ist, können sie nur
+% |\usepackage[|\meta{Optionen}|]{geometry}| anstelle von \cs{geometry} nutzen.
+%
+% \medskip
+% |\newgeometry{|\meta{Optionen}|}|
+% verändert das Seitenlayout innerhalb des Dokuments. \cs{newgeometry} ist fast
+% gleich mit \cs{geometry}, ausgenommen, dass \cs{newgeometry} alle Optionen,
+% die von \cs{usepackage} und \cs{geometry} in
+% der Präambel vorgenommen wurden, deaktiviert. 
+% \cs{restoregeometry}
+% stellt das Seitenlayout, wie es in der Präambel angegeben ist, wieder her. Dieser Befehl
+% besitzt keine Argumente. Lesen sie Kapitel~\ref{sec:midchange} für Details.
+%
+% \medskip
+% |\savegeometry{|\meta{Name}|}|
+% speichert die Seitenmaße als \meta{Name}, wo sie
+% diesen Befehl nutzen.\\
+% |\loadgeometry{|\meta{Name}|}|
+% lädt die Seitenmaße, die als \meta{Name} gespeichert wurden. Lesen sie
+% Kapitel~\ref{sec:midchange} für Details.
+%
+% \subsection{Optionales Argument}
+%
+% Das \Gm\ Paket übernimmt die \textsf{keyval} Schnittstelle
+% `\meta{Schlüssel}=\meta{Wert}' für das optionale Argument von
+% \cs{usepackage}, \cs{geometry} und \cs{newgeometry}.
+% 
+% Das Argument beinhaltet eine Liste von kommaseparierten \textsf{keyval}
+% Optionen und besitzt folgende Grundregeln:
+% \begin{itemize}\setlength{\itemsep}{-.5\parsep}
+% \item Mehrfache Zeilen sind erlaubt, während es leere nicht sind.
+% \item Jedes Leerzeichen zwischen den Wörtern wird ignoriert.
+% \item Die Reihenfolge der Optionen ist grundlegend unabhängig.
+% (Es gibt einige Ausnahmen. Lesen sie Kapitel~\ref{sec:optionorder} für Details.)
+% \end{itemize}
+%  Zum Beispiel ist
+% \begin{quote}
+% |\usepackage[ a5paper ,  hmargin = { 3cm,|\\
+% |                .8in } , height|\\
+% |         =  10in ]{geometry}|
+% \end{quote}
+% äquivalent zu 
+% \begin{quote}
+%   |\usepackage[height=10in,a5paper,hmargin={3cm,0.8in}]{geometry}|
+% \end{quote}
+% Einigen Optionen ist es erlaubt, Unterlisten zu haben, z.\,B. |{3cm,0.8in}|.
+% Beachten sie, dass die Reihenfolge der Werte in der Liste bedeutsam ist.
+% Die obere Einstellung ist ebenso äquivalent zu Folgendem:
+% \begin{quote}
+%   |\usepackage{geometry}|\\
+%   |\geometry{height=10in,a5paper,hmargin={3cm,0.8in}}|
+% \end{quote}
+% oder
+% \begin{quote}
+%   |\usepackage[a5paper]{geometry}|\\
+%   |\geometry{hmargin={3cm,0.8in},height=8in}|\\
+%   |\geometry{height=10in}|.
+% \end{quote}
+% Folglich hängt die mehrfache Nutzung von \cs{geometry} die Optionen aneinander.
+%
+% \Gm\ unterstützt das Paket 
+% \textsl{calc}\footnote{CTAN:~\texttt{macros/latex/required/tools}}.
+% Zum Beispiel,
+% \begin{quote}
+%   |\usepackage{calc}|\\
+%   |\usepackage[textheight=20\baselineskip+10pt]{geometry}|
+% \end{quote}
+%
+% \subsection{Optionstypen}
+% \Gm\ Optionen sind in vier Typen eingeteilt:
+%
+% \begin{enumerate}\itemsep=0pt
+% \item \textbf{Wahrheitswerttyp}
+%
+%  Er nimmt einen Wahrheitswert an (|true (wahr)| oder |false (falsch)|). Falls kein Wert angegeben ist,
+%    wird standardmäßig |true (wahr)| eingesetzt.
+%    \begin{quote}
+%       \meta{Schlüssel}|=true|\OR|false|.\\
+%       \meta{Schlüssel} ohne Wert ist äquivalent zu 
+%       \meta{Schlüssel}|=true|.
+%    \end{quote}
+%    \textit{Beispiele:}~ |verbose=true|, |includehead|, 
+%    |twoside=false|.\\
+%    Der Papiername ist eine Ausnahme. Der bevorzugte Papiername sollte ohne Wert
+%    angegeben werden. Welcher Wert auch immer gegeben ist er wird ignoriert. Zum
+%    Beispiel ist |a4paper=XXX| äquivalent zu |a4paper|.
+%
+% \item \textbf{Typ mit einzelnem Wert}
+%
+%   Man benötigt einen zwingenden Wert.
+%    \begin{quote}
+%    \meta{Schlüssel}|=|\meta{Wert}.
+%    \end{quote}
+%    \textit{Beispiele:}~ |width=7in|, |left=1.25in|,
+%    |footskip=1cm|, |height=.86\paperheight|.
+%
+% \item \textbf{Typ mit zwei Werten}
+%
+%    Man benötigt ein Paar von kommagetrennten Werten in geschweiften Klammern. Die zwei Werte können
+%    zu einem gekürzt werden, wenn beide identisch sind.
+%    \begin{quote}
+%    \meta{Schlüssel}|=|\argii{Wert1}{Wert2}.\\
+%    \meta{Schlüssel}|=|\meta{Wert} ist äquivalent zu 
+%              \meta{Schlüssel}|=|\argii{Wert}{Wert}.
+%    \end{quote}
+%    \textit{Beispiele:}~ |hmargin={1.5in,1in}|, |scale=0.8|,
+%    |body={7in,10in}|.
+%
+% \item \textbf{Typ mit drei Werten}
+%
+%    Man benötigt drei zwingende Werte, kommagetrennte Werte in geschweiften Klammern.
+%    \begin{quote}
+%    \meta{Schlüssel}|=|\argiii{Wert1}{Wert2}{Wert3}
+%    \end{quote}
+%    Jeder Wert muss ein Maß sein oder Null. Falls sie einen leeren Wert angeben
+%    oder `|*|', dies bedeutet Null, dann wird der übergebene Wert dem Autovervollständigungsmechanismus zugeführt. 
+%    Sie müssen mindestens ein Maß angeben, typischerweise aber zwei.
+%    Sie können für alle Werte Null einsetzen,
+%    aber das macht keinen Sinn.
+%    \textit{Beispiele:}\\
+%    \hspace*{2em} |hdivide={2cm,*,1cm}|, |vdivide={3cm,19cm, }|,
+%                   |divide={1in,*,1in}|.
+% \end{enumerate}
+%
+% \section{Details zu Optionen}
+%
+% Dieses Kapitel beschreibt alle Optionen, die in \Gm{} verfügbar sind.
+% Optionen mit einem Dolch $^\dagger$ sind nicht vorhanden 
+% als Argumente von \cs{newgeometry} (Lesen sie Kapitel~\ref{sec:midchange}).
+%
+% \subsection{Papiergröße}\label{sec:paper}
+% 
+% Die Optionen unten dienen zum Einstellen der Größe des Papiers/Mediums und der Orientierung.
+% \begin{Options}
+% \item[\onlypre paper (Papier)\OR papername (Papiername)] ~\\ 
+%  gibt die Papiergröße anhand des Namens an. |paper=|\meta{Papiername}.
+%  Für besseren Komfort können sie den Papiernamen ohne |paper=| angeben.
+%  |a4paper| ist beispielsweise äquivalent zu |paper=a4paper|.
+% \item[\onlypre \vtop{
+%  \hbox{a0paper, a1paper, a2paper, a3paper, a4paper, a5paper, a6paper,}
+%  \hbox{b0paper, b1paper, b2paper, b3paper, b4paper, b5paper, b6paper,}
+%  \hbox{c0paper, c1paper, c2paper, c3paper, c4paper, c5paper, c6paper,}
+%  \hbox{b0j, b1j, b2j, b3j, b4j, b5j, b6j,}
+%  \hbox{ansiapaper, ansibpaper, ansicpaper, ansidpaper, ansiepaper,}
+%  \hbox{letterpaper, executivepaper, legalpaper}}]~\\[1ex] 
+%    gibt den Papiernamen an.  Der Wert wird ignoriert, sogar wenn einer angegeben wird.
+%    Beispielsweise hat das Folgende den gleichen Effekt:
+%    |a5paper|, |a5paper=true|, |a5paper=false| und so weiter.
+%   |a[0-6]paper|, |b[0-6]paper| und |c[0-6]paper| sind ISO A, B und C
+%   Serien von Papiergrößen.
+%   Die JIS (Japanischer Industriestandard) A-Serien ist identisch zu den
+%   ISO A-Serien, aber die JIS B-Serien sind von den ISO B-Serien verschieden.
+%   |b[0-6]j| sollte für die JIS B-Serien genutzt werden. 
+% \item[\onlypre screen] eine spezielle Papiergröße mit (B,H) = (225\,mm,180\,mm).
+%    Für Präsentationen mit dem PC und einem Beamer kann ``|screen,centering|'',
+%    in Verbindung mit `slide' in der Dokumentklasse nützlich sein.
+% \item[\onlypre paperwidth] Breite des Papiers. |paperwidth=|\meta{Länge}.
+% \item[\onlypre paperheight] Höhe des Papiers. |paperheight=|\meta{Länge}.
+% \item[\onlypre papersize] Breite und Höhe des Papiers. 
+%    |papersize=|\argii{Breite}{Höhe} oder |papersize=|\meta{Länge}.
+% \item[\onlypre landscape] wechselt die Papierorientierung in den Landschaftsmodus.
+% \item[\onlypre portrait] wechselt die Papierorientierung in den Portraitsmodus.
+%    Dies ist das Gleiche wie |landscape=false|.
+% \end{Options}
+%
+% Die Optionen für den Papiernamen (z.\,B., |a4paper|) und die Orientierung
+% (|portrait| und |landscape|) können als Dokumentklassenoptionen benutzt werden. 
+% Zum Beispiel können sie\\ |\documentclass[a4paper,landscape]{article}| eingeben, 
+% dann werden |a4paper| und |landscape| auch in \Gm\ abgearbeitet.
+% Dies ist ebenso im Fall von |twoside (zweiseitig)| und |twocolumn (zweispaltig)|
+% (Lesen sie auch Kapitel~\ref{sec:dimension}).
+%
+% \subsection{Layoutgröße}
+%
+%  Sie können den Layoutbereich mit den Optionen, die in diesem Kapitel beschrieben sind, ungeachtet der Papiergröße, angeben.
+%  Die Optionen helfen das angegebene Layout auf unterschiedlichen
+%  Papiergrößen zu drucken. Wenn sie beispielsweise |a4paper| und |layout=a5paper| nutzen, dann
+%  benutzt das Paket das `A5' Layout, um die Ränder auf dem `A4' Papier zu berechnen.
+%  Die Layoutgröße wird genauso groß wie die des Papiers.
+%  Die Optionen für die Layoutgröße sind mittels \cs{newgeometry} erreichbar,
+%  sodass sie die Layoutgröße in der Mitte des Dokuments verändern können.
+%  Die Papiergröße selbst kann so nicht geändert werden.
+%  Abbildung~\ref{fig:layoutandpaper} zeigt, was die Unterschiede zwischen
+%  |layout| und |paper| sind.
+% \begin{Options}
+% \item[layout] gibt die Layoutgröße vom Papiernamen an.
+% |layout=|\meta{Papiername}. Alle Papiernamen, die in \Gm\ definiert sind, sind wählbar.
+% Lesen sie auch Kapitel~\ref{sec:paper} für mehr Details.
+% \item[layoutwidth] Breite des Layouts. |layoutwidth=|\meta{Länge}.
+% \item[layoutheight] Höhe des Layouts. |layoutheight=|\meta{Länge}.
+% \item[layoutsize] Breite und Höhe des Layouts.
+%    |layoutsize=|\argii{Breite}{Höhe} oder |layoutsize=|\meta{Länge}.
+% \item[layouthoffset] gibt den horizontalen Versatz von der linken Kante des Papiers an.
+% |layouthoffset=|\meta{Länge}.
+% \item[layoutvoffset] gibt den vertikalen Versatz von der oberen Kante des Papiers an.
+% |layoutvoffset=|\meta{Länge}.
+% \item[layoutoffset] gibt beides, horizontalen und vertikalen Versatz an. 
+%  |layoutoffset=|\argii{hoffset}{voffset} oder |layoutsize=|\meta{Länge}.
+% \end{Options}
+% \begin{figure}[h]
+%  \centering\small
+%  {\unitlength=.6pt
+%  \begin{picture}(450,250)(0,-10)
+%  \put(20,0){\makebox(168,12)[r]{\gpart{Papier}}}
+%  \put(20,0){\framebox(170,230){}}
+%  \put(21,40){\dashbox{3}(140,189){}}
+%  \put(21,28){\makebox(140,12)[r]{\gpart{Layout}}}
+%  \put(40,50){\makebox(100,10){\gpart{Fuß}}}
+%  \put(40,50){\line(1,0){100}}
+%  \put(40,65){\framebox(100,125){\gpart{Textbereich}}}
+%  \put(40,200){\framebox(100,10){\gpart{Kopf}}}
+%  \put(20,230){\makebox(140,20){|Layoutbreite|}}
+%  \put(40,240){\vector(-1,0){20}}
+%  \put(140,240){\vector(1,0){20}}
+%  \put(10,145){\vector(0,1){85}}
+%  \put(15,125){\makebox(0,20)[r]{|Layouthöhe|}}
+%  \put(10,125){\vector(0,-1){85}}
+%  \put(280,0){\makebox(168,12)[r]{\gpart{Papier}}}
+%  \put(280,0){\framebox(170,230){}}
+%  \put(293,35){\dashbox{3}(140,189){}}
+%  \put(293,23){\makebox(140,12)[r]{\gpart{Layout}}}
+%  \put(312,45){\makebox(100,10){\gpart{Fuß}}}
+%  \put(312,45){\line(1,0){100}}
+%  \put(312,60){\framebox(100,125){\gpart{Textbereich}}}
+%  \put(312,195){\framebox(100,10){\gpart{Kopf}}}
+%  \put(235,230){\makebox(80,20)[l]{|layouthoffset|}}
+%  \put(260,210){\vector(1,0){20}}
+%  \put(308,210){\vector(-1,0){15}}
+%  \put(260,210){\line(-1,2){10}}
+%  \put(355,230){\makebox(100,20){|layoutvoffset|}}
+%  \put(350,250){\vector(0,-1){20}}
+%  \put(350,209){\vector(0,1){15}}
+%  \end{picture}}
+%  \caption[Layout und Papier]{%
+%  \begin{minipage}[t]{.7\textwidth}\raggedright\small
+%  Die Maße sind mit denen der Layoutgröße verwandt. Beachte, dass die Layoutgrößenvorgaben
+%  zu der Größe des Papiers korrespondieren, sodass sie die meisten layoutbezogenen Optionen
+%  nicht explizit angeben müssen.
+%  \end{minipage}}
+%  \label{fig:layoutandpaper}
+% \end{figure}
+% 
+% \subsection{Größe des Textbereichs}\label{sec:body}
+%
+% Die Optionen, die die Größe des \gpart{druckbaren Bereichs} angeben, werden in diesem Kapitel beschrieben.
+%
+% \begin{Options}
+% \item[hscale]
+%    Verhältnis der Breite des \gpart{druckbaren Bereichs} zur \cs{paperwidth (Papierbreite)}. 
+%    |hscale=|\meta{h-scale}, z.\,B. |hscale=0.8| ist äquivalent zu
+%    |width=0.8|\cs{paperwidth (Papierbreite)}. (|0.7| ist der Standard)
+% \item[vscale]
+%    Verhältnis der Höhe des \gpart{druckbaren Bereichs} zur \cs{paperheight (Papierhöhe)}, z.\,B.
+%    |vscale=|\meta{v-scale}. (|0.7| ist der Standard) |vscale=0.9| ist äquivalent
+%    zu |height=0.9|\cs{paperheight (Papierhöhe)}.
+% \item[scale] Verhältnis des \gpart{druckbaren Bereichs} zum Papier.
+%    |scale=|\argii{h-scale}{v-scale} oder |scale=|\meta{scale}.
+%    (|0.7| ist der Standard)
+% \item[width\OR totalwidth] ~\\
+%    Breite des \gpart{druckbaren Bereichs}. |width=|\meta{Länge} oder
+%    |totalwidth=|\meta{Länge}. Dieses Maß korrespondiert zur |textwidth (Textbreite)|,
+%    aber wenn |includemp| auf |true| gesetzt ist, dann ist die |Breite| $\ge$ |Textbreite|, 
+%    weil die |Breite| die Breite der Randnotizen beinhaltet.
+%    Wenn die |Textbreite| und die |Breite| gleichzeitig angegeben werden, 
+%    dann hat die |Textbreite| eine höhere Priorität als die |Breite|.
+% \item[height\OR totalheight] ~\\
+%    Höhe des \gpart{druckbaren Bereichs}, wobei Kopf und Fuß standardmäßig ausgeschlossen sind.
+%    Wenn |includehead| oder |includefoot| gesetzt ist, dann beinhaltet die |height (Höhe)|
+%    den Kopf oder den Fuß der Seite sowie die |textheight (Texthöhe)|.
+%    |height=|\meta{Länge} oder |totalheight=|\meta{Länge}. Falls beide,
+%    |textheight (Texthöhe)| und |height (Höhe)|, angegeben sind, wird die |height (Höhe)| ignoriert werden.
+% \item[total] Breite und Höhe des \gpart{druckbaren Bereichs}.\\
+%    |total=|\argii{Breite}{Höhe} oder |total=|\meta{Länge}.
+% \item[textwidth] gibt die \cs{textwidth (Textbreite)}, die Breite des \gpart{Körpers} 
+%    (der Textbereich) an. |textwidth=|\meta{Länge}.
+% \item[textheight] gibt die \cs{textheight (Texthöhe)}, die Höhe des
+%    \gpart{Körpers} (der Textkörper) an. |textheight=|\meta{Länge}.
+% \item[text\OR body] gibt beides, die \cs{textwidth (Textbreite)} und \cs{textheight (Texthöhe)}
+%    des Körpers der Seite an. |body=|\argii{Breite}{Höhe} oder
+%    |text=|\meta{Länge}.
+% \item[lines] erlaubt dem Benutzer, die \cs{textheight (Texthöhe)} durch die Anzahl
+%    der Zeilen anzugeben. |lines|=\meta{ganzzahliger Wert}.
+% \item[includehead] schließt den Kopf der Seite, die \cs{headheight (Kopfhöhe)}
+%    und \cs{headsep (Kopftrennung)} in den \gpart{druckbaren Bereich} ein. Diese Option ist in den Voreinstellungen durch
+%    |false| deaktiviert. Es ist das Gegenteil von |ignorehead|. Betrachten sie auch
+%    Abbildung~\ref{fig:includes} und Abbildung~\ref{fig:modes}.
+% \item[includefoot] schließt den Fuß der Seite, \cs{footskip (Fußbereich)},
+%    in den \gpart{druckbaren Bereich} ein. Es ist das Gegenteil von |ignorefoot|.
+%    Die Voreinstellung ist |false| (deaktiviert). Betrachten sie auch Abbildung~\ref{fig:includes} und
+%    Abbildung~\ref{fig:modes}.
+% \item[includeheadfoot]~\\ 
+%    setzt beides, |includehead| und |includefoot|, auf |true|, dies ist das Gegenteil
+%    von |ignoreheadfoot|. Betrachten sie auch Abbildung~\ref{fig:includes} und
+%    Abbildung~\ref{fig:modes}.
+% \item[includemp] schließt die Randnotizen, die \cs{marginparwidth (Randnotizbreite)}
+%    und \cs{marginparsep (Randnotiztrennung)} in den \gpart{Körper} ein, wenn die horizontalen Maße
+%    berechnet werden.
+% \item[includeall] setzt beides, |includeheadfoot| und |includemp| auf
+%    |true| (aktiv). Betrachten sie auch Abbildung~\ref{fig:modes}.
+% \item[ignorehead] missachtet den Kopf der Seite,
+%    |headheight (Kopfhöhe)| und |headsep (Kopftrennung)|, sind ausschlaggebend für das vertikale Layout, aber diese ändern
+%    dessen Längen nichts. Es ist äquivalent zu |includehead=false|. Diese Option ist mit
+%    |true| voreingestellt. Lesen sie auch |includehead|.
+% \item[ignorefoot] missachtet den Fuß der Seite, der |footskip (Fußbereich)|,
+%    ist ausschlaggebend für das vertikale Layout, aber dies ändert die Länge nicht.
+%    Diese Voreinstellung der Option ist |true|. Lesen sie auch |includefoot|.
+% \item[ignoreheadfoot]~\\ setzt beides, |ignorehead| und |ignorefoot|
+%    auf |true|. Lesen sie auch |includeheadfoot|.
+% \item[ignoremp] vernachlässigt die Randnotizen bei der Berechnung der horizontalen
+%    Ränder (der Standard ist |true|). Wenn die Randnotizen die Seite überfüllen,
+%    dann wird eine Warnmeldung angezeigt werden, wenn |verbose=true| aktiviert ist.
+%    Sehen sie auch |includemp| und Abbildung~\ref{fig:modes}.
+% \item[ignoreall] setzt beides, |ignoreheadfoot| und |ignoremp| auf |true|. 
+%    Lesen sie auch |includeall|.
+% \item[heightrounded]~\\
+%    Diese Option rundet die \cs{textheight (Texthöhe)}, um \textit{n}-Mal mehr (\textit{n}:
+%    ist eine ganze Zahl) \cs{baselineskip} plus \cs{topskip}, um 
+%    ``underfull vbox'' in manchen Fällen zu vermeiden. Zum Beispiel, wenn die \cs{textheight (Texthöhe)}
+%    486pt ist, mit \cs{baselineskip} 12pt und \cs{topskip} 10pt, dann
+%    \begin{quote}
+%      $(39\times12\textrm{pt}+10\textrm{pt}=)\: 478\textrm{pt}
+%       < 486\textrm{pt} < 
+%      490\textrm{pt} \:(=40\times12\textrm{pt}+10\textrm{pt})$,
+%    \end{quote}
+%    als Ergebnis wird die \cs{textheight (Texthöhe)} auf 490\,pt aufgerundet. |heightrounded=false|
+%    ist voreingestellt.
+% \end{Options}
+%
+% Abbildung~\ref{fig:modes} illustriert die verschiedenen Layouttypen mit den verschiedenen Layoutmodi.
+% Die Maße für einen Kopf und einen Fuß können durch den
+% |nohead|- oder |nofoot|-Modus kontrolliert werden, dies setzt jede Länge auf 0\,pt.
+% Auf der anderen Seite verändern Optionen mit dem Präfix |ignore| \textit{nicht}
+% die korrespondierenden, ursprünglichen Maße.
+%
+%
+% Die folgenden Optionen können den Körper und die Ränder gleichzeitig angeben, mit
+% drei kommagetrennten Werten in geschweiften Klammern.
+%
+% \begin{figure}[h]
+%  \centering\small
+%  {\unitlength=.65pt
+%  \begin{picture}(460,525)(0,0)
+%  \put( 20,310){\framebox(120,170){}}
+%  \put( 20,507){\makebox(120,0)[bl]%
+%  {\textbf{(a)}~|includeheadfoot|}}
+%  \put( 20,460){\line(1,0){120}}\put( 20,450){\line(1,0){120}}
+%  \put( 20,330){\line(1,0){120}}
+%  \put( 20,485){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}}
+%  \put( 20,335){\makebox(120,0)[bc]{|Textbreite|}}
+%  \put(150,470){\makebox(0,0)[l]{|headheight|}}
+%  \put(150,450){\makebox(0,0)[l]{|headsep|}}
+%  \put(150,390){\makebox(0,0)[l]{|textheight|}}
+%  \put(150,320){\makebox(0,0)[l]{|Fußbereich|}}
+%  \put( 10,460){\makebox(120,20)[bc]{\gpart{Kopf}}}
+%  \put( 10,320){\makebox(120,140)[c]{\gpart{Körper}}}
+%  \put( 10,310){\makebox(120,10)[c]{\gpart{Fuß}}}
+%  \put(250,310){\framebox(120,170){}}
+%  \put(250,507){\makebox(120,0)[bl]%
+%  {\textbf{(b)}~|includeall|}}
+%  \put(250,460){\line(1,0){95}}\put(250,450){\line(1,0){95}}
+%  \put(250,330){\line(1,0){95}}\put(345,330){\line(0,1){120}}
+%  \put(350,330){\line(0,1){120}}\put(350,450){\line(1,0){20}}
+%  \put(350,330){\line(1,0){20}}
+%  \put(250,485){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}}
+%  \put(250,460){\makebox(95,20)[bc]{\gpart{Kopf}}}
+%  \put(250,320){\makebox(95,140)[c]{\gpart{Fuß}}}
+%  \put(385,390){\makebox(95,0)[cl]%
+%  {\gpart{\shortstack[l]{Rand-\\notiz}}}}
+%  \put(250,310){\makebox(95,10)[c]{\gpart{Fuß}}}
+%  \put(250,335){\makebox(95,0)[bc]{|textwidth|}}
+%  \multiput(360, 390)(4,0){6}{\line(1,0){2}}
+%  \multiput(348,333)(0,-4){12}{\line(0,1){2}}
+%  \multiput(360,333)(0,-4){8}{\line(0,1){2}}
+%  \put(355,292){\makebox(0,0)[bl]{|marginparwidth|}}
+%  \put(345,275){\makebox(0,0)[bl]{|marginparsep|}}
+%  \put( 20, 40){\framebox(120,170){}}
+%  \put( 20,237){\makebox(120,0)[bl]%
+%  {\textbf{(c)}~|includefoot|}}
+%  \put( 20, 60){\line(1,0){120}}
+%  \put( 20,215){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}}
+%  \put(150,130){\makebox(0,0)[l]{|textheight|}}
+%  \put(150, 50){\makebox(0,0)[l]{|footskip|}}
+%  \put( 20, 50){\makebox(120,160)[c]{\gpart{Körper}}}
+%  \put( 20, 40){\makebox(120,10)[c]{\gpart{Fuß}}}
+%  \put( 20, 65){\makebox(120,10)[c]{|textwidth|}}
+%  \put(250, 40){\framebox(120,170){}}
+%  \put(250,237){\makebox(120,0)[bl]%
+%  {\textbf{(d)}~|includefoot,includemp|}}
+%  \put(250, 60){\line(1,0){95}}\put(350, 60){\line(1,0){20}}
+%  \put(250,215){\makebox(120,0)[br]{\gpart{druckbarer Bereich}}}
+%  \put(250, 50){\makebox(95,160)[c]{\gpart{Körper}}}
+%  \put(385,130){\makebox(95,0)[cl]%
+%  {\gpart{\shortstack[l]{Rand-\\notiz}}}}
+%  \put(250, 40){\makebox(95,10)[c]{\gpart{Fuß}}}
+%  \put(250, 65){\makebox(95,0)[bc]{|textwidth|}}
+%  \put(345, 60){\line(0,1){150}}\put(350, 60){\line(0,1){150}}
+%  \multiput(360, 130)(4,0){6}{\line(1,0){2}}
+%  \multiput(348, 63)(0,-4){12}{\line(0,1){2}}
+%  \multiput(360, 63)(0,-4){8}{\line(0,1){2}}
+%  \put(355,22){\makebox(0,0)[bl]{|marginparwidth|}}
+%  \put(345, 5){\makebox(0,0)[bl]{|marginparsep|}}
+%  \end{picture}}
+%  \caption[Musterlayout für den \gpart{druckbaren Bereich} mit verschiedenen 
+%     Layoutmodi]{%
+%  \begin{minipage}[t]{.8\textwidth}\small
+%    Musterlayouts für den \gpart{druckbaren Bereich} mit verschiedenen Veränderungen.
+%    (a) |includeheadfoot|, (b) |includeall|, (c) |includefoot|
+%     und (d) |includefoot,includemp|. 
+%    Wenn |reversemp| auf |true| gesetzt ist, dann werden die Orte
+%    für die Randnotizen auf jeder Seite getauscht.
+%    Die Option |twoside| tauscht beides, die Ränder und die Randnotizen auf der Rückseite.
+%    Beachten sie, dass die Randnotiz gedruckt wird, falls vorhanden, trotz das
+%    |ignoremp| oder |includemp=false| und Überlauf der Seite, in einigen Fällen.
+%  \end{minipage}}
+%  \label{fig:modes}
+% \end{figure}
+%
+% \begin{Options}
+% \item[hdivide] horizontale Aufteilung (links,Breite,rechts).
+%   |hdivide=|\argiii{linker Rand}{Breite}{rechter Rand}. 
+%   Beachten sie, dass sie nicht alle drei Parameter eingeben sollten.
+%   Die beste Möglichkeit der Nutzung dieser Option ist die Angabe von zwei der drei Parameter und 
+%   das Freilassen des verbliebenen mit Null(nichts) oder `|*|'. Zum Beispiel, wenn sie 
+%   |hdivide={2cm,15cm, }| einstellen, dann wird der Rand von der rechtsseitigen Kante der Seite
+%   die Rechnung bestimmen |paperwidth-2cm-15cm|.
+% \item[vdivide] vertikale Aufteilung (oben,Höhe,unten).
+%   |vdivide=|\argiii{oberer Rand}{Höhe}{unterer Rand}.
+% \item[divide] |divide=|\vargiii{$A$}{$B$}{$C$} wird interpretiert als 
+%   |hdivide=|\vargiii{$A$}{$B$}{$C$} und |vdivide=|\vargiii{$A$}{$B$}{$C$}.
+% \end{Options}
+%
+% \subsection{Randgröße}\label{sec:margin}
+%
+% Die Optionen zum Spezifizieren der Größe der Ränder sind unten aufgelistet.
+%
+% \begin{Options}
+% \item[left\OR lmargin\OR inner]~\\
+%    linker Rand (für einseitige Dokumente) oder innerer Rand (für zweiseitige Dokumente) des 
+%    \gpart{druckbaren Bereichs}. Mit anderen Worten, es ist die Distanz zwischen der linken (inneren)
+%    Kante des Papiers und der des \gpart{druckbaren Bereichs}. |left=|\meta{Länge}.
+%    |inner (innen)| hat keine besondere Bedeutung, nur eine alternative für |left| und |lmargin|.
+% \item[right\OR rmargin\OR outer]~\\ 
+%    rechter oder äußerer Rand des \gpart{druckbaren Bereichs}. |right=|\meta{Länge}.
+% \item[top\OR tmargin] oberer Rand der Seite. |top=|\meta{Länge}.
+%    Beachten sie, dass diese Option nichts mit dem ursprünglichen Maß 
+%    \cs{topmargin} zu tun hat.
+% \item[bottom\OR bmargin]~\\ 
+%    unterer Rand der Seite. |bottom=|\meta{Länge}.
+% \item[hmargin] linker und rechter Rand.
+%   |hmargin=|\argii{linker Rand}{rechter Rand} oder |hmargin=|\meta{Länge}.
+% \item[vmargin] oberer und unterer Rand.
+%   |vmargin=|\argii{oberer Rand}{unterer Rand} oder |vmargin=|\meta{Länge}.
+% \item[margin] |margin=|\vargii{$A$}{$B$} ist äquivalent zu 
+%   |hmargin=|\vargii{$A$}{$B$} und |vmargin=|\vargii{$A$}{$B$}.
+%   |margin=|$A$ wird automatisch erweitert zu |hmargin=|$A$ und |vmargin=|$A$.
+% \item[hmarginratio]
+%   Verhältnis des horizontalen Rands des |linken| (inneren) zum |rechten| (äußeren). 
+%   Der Wert des \meta{Verhältnisses} sollte mit zwei Werten, die durch einen Doppelpunkt getrennt sind, 
+%   angegeben werden. Jeder Wert sollte eine positive ganze Zahl kleiner 100 sein,
+%   um einen arithmetischen Überlauf zu verhindern, z.\,B. |2:3| anstatt |1:1.5|.
+%   Das Standardverhältnis ist |1:1| für einseitige Dokumente, |2:3| für zweiseitige.
+% \item[vmarginratio]
+%    Verhältnis des vertikalen Randes, des |oberen| Randes zum |unteren|. Das Standardverhältnis ist |2:3|.
+% \item[marginratio\OR ratio]~\\
+%    horizontale und vertikale Randverhältnisse.
+%   |marginratio=|\argii{horizontales Verhältnis}{vertikales Verhältnis} oder
+%   |marginratio=|\meta{Verhältnis}.
+% \item[hcentering] aktiviert die automatische horizontale Zentrierung und ist
+%   äquivalent zu |hmarginratio=1:1|. Es ist für die Option oneside auf |true| gesetzt.
+%   Lesen sie auch |hmarginratio|.
+% \item[vcentering] aktiviert die automatische vertikale Zentrierung und ist
+%   äquivalent zu |vmarginratio=1:1|. Diese Option ist standardmäßig auf |false| gesetzt.
+%   Lesen sie auch |vmarginratio|.
+% \item[centering] aktiviert die automatische Zentrierung und ist äquivalent zu
+%   |marginratio=1:1|. Lesen sie auch |marginratio|. Der Standard ist |false|.
+% \item[twoside] wechselt das Layout in den twoside (zweiseitigen) Modus, wobei der linke und der rechte Rand auf der
+%   Rückseite vertauscht wird. Die Option setzt einen \cs{@twoside} und \cs{@mparswitch} 
+%   Schalter. Lesen sie auch |asymmetric|.
+% \item[asymmetric] führt ein zweiseitiges Layout ein, wobei die Ränder nicht getauscht werden
+%   auf alternativen Seiten (durch die Einstellung \cs{oddsidemargin} zu 
+%   \cs{evensidemargin} |+| |bindingoffset|) und die Randnotizen
+%   immer auf der selben Seite bleiben. Diese Option kann als Alternative für die
+%   twoside Option genutzt werden. Lesen sie auch |twoside|.
+% \item[bindingoffset]~\\ entfernt einen angegeben Raum 
+%   von der linken Seite bei oneside oder der inneren Seite bei
+%   twoside. |bindingoffset=|\meta{Länge}. Dies ist nützlich, wenn die Seiten durch eine 
+%   Pressbindung verbunden sind (glued, stitched, stapled \ldots).
+%   Betrachten sie auch Abbildung~\ref{fig:bindingoffset}.
+% \item[hdivide] Siehe Beschreibung im Kapitel~\ref{sec:body}.
+% \item[vdivide] Siehe Beschreibung im Kapitel~\ref{sec:body}.
+% \item[divide] Siehe Beschreibung im Kapitel~\ref{sec:body}.
+% \end{Options}
+% \begin{figure}[h]
+%  \centering\small
+%  {\unitlength=.65pt
+%  \begin{picture}(500,270)(0,0)
+%  \put(20,0){\framebox(170,230){}}
+%  \put(20,255){\makebox(80,20)[l]{\textbf{a)}~jede Seite für oneside oder}}
+%  \put(20,240){\makebox(80,20)[l]{\hspace{3ex}eine einzelne Seite für twoside}}
+%  \put(110,225){\makebox(80,20)[r]{\gpart{Papier}}}
+%  \put(55,37){\framebox(110,170)[tc]{\gpart{druckbarer Bereich}}}
+%  \multiput(38,0)(0,7){33}{\line(0,1){4}}
+%  \put(38,100){\vector(1,0){17}}\put(55,100){\vector(-1,0){17}}
+%  \put(60,95){\makebox(80,10)[l]{|left|}}
+%  \put(60,80){\makebox(80,10)[l]{(|inner|)}}
+%  \put(165,100){\vector(1,0){25}}\put(190,100){\vector(-1,0){25}}
+%  \put(195,95){\makebox(80,10)[l]{|right|}}
+%  \put(195,80){\makebox(80,10)[l]{(|outer|)}}
+%  \put(20,16){\vector(1,0){18}}
+%  \put(45,10){\makebox(80,10)[bl]{|bindingoffset|}}
+%  \put(280,255){\makebox(80,20)[l]{\textbf{b)}~ (Rück-) Seiten für twoside}}
+%  \put(280,0){\framebox(170,230){}}
+%  \put(370,225){\makebox(80,20)[r]{\gpart{Papier}}}
+%  \put(305,37){\framebox(110,170)[tc]{\gpart{druckbarer Bereich}}}
+%  \multiput(432,0)(0,7){33}{\line(0,1){4}}
+%  \put(280,100){\vector(1,0){25}}\put(305,100){\vector(-1,0){25}}
+%  \put(310,95){\makebox(80,10)[l]{|outer|}}
+%  \put(310,80){\makebox(80,10)[l]{(|right|)}}
+%  \put(415,100){\vector(1,0){17}}\put(432,100){\vector(-1,0){17}}
+%  \put(373,95){\makebox(80,10)[l]{|inner|}}
+%  \put(373,80){\makebox(80,10)[l]{(|left|)}}
+%  \put(450,16){\vector(-1,0){18}}
+%  \put(330,10){\makebox(80,10)[bl]{|bindingoffset|}}
+%  \end{picture}}
+%  \caption[\texttt{bindingoffset} Option]{%
+%   \begin{minipage}[t]{.8\textwidth}\raggedright\small
+%   Die Option |bindingoffset| fügt eine angegebene Länge zum inneren Rand hinzu.
+%   Beachten sie, dass die |twoside| Option die horizontalen Ränder und die Randnotizen
+%   zusammen mit |bindingoffset| auf jeder Seite tauscht (siehe
+%   \textbf{b)}), aber die |asymmetric| Option unterdrücke den Tausch der Ränder und der Randnotizen
+%   (aber |bindingoffset| wird dennoch getauscht).
+%   \end{minipage}}
+%  \label{fig:bindingoffset}
+% \end{figure}
+%
+% \subsection{Ursprüngliche Maße}\label{sec:dimension}
+%
+% Die unteren Optionen überschreiben die ursprünglichen Maße von \LaTeX\ und die Veränderungen für das Seitenlayout
+% (Betrachten sie auch die rechte Seite in Abbildung~\ref{fig:layout}).
+%
+% \begin{Options}
+% \item[headheight\OR head]~\\
+%    modifiziert die \cs{headheight}, die Höhe des Kopfes.
+%    |headheight=|\meta{Länge} oder |head=|\meta{Länge}.
+% \item[headsep] modifiziert die \cs{headsep}, die Abtrennung zwischen dem Kopfbereich und dem Text
+%    (body). |headsep=|\meta{Länge}.
+% \item[footskip\OR foot]~\\ modifiziert den \cs{footskip}, die Distanzabtrennung zwischen
+%    der Grundlinie der letzten Zeile des Textes und der Grundlinie des Fußes.
+%    |footskip=|\meta{Länge} oder |foot=|\meta{Länge}.
+% \item[nohead] entfernt den Platz für den Kopf der Seite, dies ist äquivalent zu
+%    \cs{headheight}|=0pt| und \cs{headsep}|=0pt|.
+% \item[nofoot] entfernt den Platz für den Fuß der Seite, dies ist äquivalent zu
+%    \cs{footskip}|=0\,pt|.
+% \item[noheadfoot] ist äquivalent zu |nohead| und |nofoot|, dies bedeutet, dass
+%    \cs{headheight}, \cs{headsep} und \cs{footskip} alle auf |0pt| eingestellt werden.
+% \item[footnotesep] verändert die Maße \cs{skip}\cs{footins}, die Abtrennung zwischen
+%    dem unteren Ende des Textkörpers und dem oberen Ende des Fußnotentextes.
+% \item[marginparwidth\OR marginpar]~\\ 
+%    modifiziert die \cs{marginparwidth}, die Breite der Randnotizen.
+%    |marginparwidth=|\meta{Länge}.
+% \item[marginparsep] modifiziert die \cs{marginparsep}, die Abtrennung zwischen
+%    dem Körper und den Randnotizen. |marginparsep=|\meta{Länge}.
+% \item[nomarginpar] schrumpft den Platz für die Randnotizen auf 0\,pt, dies
+%    ist äquivalent zu \cs{marginparwidth}|=0pt| und \cs{marginparsep}|=0pt|.
+% \item[columnsep] modifiziert die \cs{columnsep}, die Abtrennung zwischen zwei
+%    Spalten im |twocolumn| Modus.
+% \item[hoffset]  modifiziert \cs{hoffset}. |hoffset=|\meta{Länge}.
+% \item[voffset]  modifiziert \cs{voffset}. |voffset=|\meta{Länge}.
+% \item[offset] horizontaler und vertikaler Versatz.\\
+%    |offset=|\argii{hoffset}{voffset} oder |offset=|\meta{Länge}.
+% \item[twocolumn] aktiviert den |twocolumn| Modus mit \cs{@twocolumntrue}.
+%   |twocolumn=false| bezeichnet den onecolumn Modus (Modus mit einer Spalte) mit \cs{@twocolumnfalse}.
+%   Anstatt |twocolumn=false|, können sie |onecolumn| angeben (die Vorgabe ist
+%   |true|)
+% \item[onecolumn] arbeitet als |twocolumn=false|. Auf der anderen Seite ist
+%   |onecolumn=false| äquivalent zu |twocolumn|. 
+% \item[twoside] aktiviert beides, \cs{@twosidetrue} und \cs{@mparswitchtrue}.
+%   Lesen sie auch Kapitel~\ref{sec:margin}.
+% \item[textwidth] lässt sie die \cs{textwidth (Textbreite)} direkt einstellen. Lesen sie auch Kapitel~\ref{sec:body}.
+% \item[textheight] lässt sie die \cs{textheight (Texthöhe)} direkt einstellen. Lesen sie auch Kapitel~\ref{sec:body}.
+% \item[reversemp\OR reversemarginpar]~\\
+%   sorgt dafür, dass die Randnotizen am (inneren) linken Rand erscheinen, mit
+%   \cs{@reversemargintrue}. Die Option verändert nichts am |includemp| Modus.
+%   Diese Option ist mit |false| voreingestellt.
+% \end{Options}
+%
+% \subsection{Treiber}\label{sec:drivers}
+% 
+% Dieses Paket unterstützt die Treiber |dvips|, |dvipdfm|, |pdftex|, |luatex|, |xetex| und
+% |vtex|. Sie können auch |dvipdfm| für \textsf{dvipdfmx} einstellen und
+% \textsf{xdvipdfmx}. |pdftex| für \textsf{pdflatex}, und |vtex| für die
+% V\TeX{} Umgebung.
+% Die Treiberoptionen sind exklusiv. Der Treiber kann durch beides eingestellt werden,
+% |driver=|\meta{Treibername} oder die direkte Angabe eines Treibers wie |pdftex|.
+% Standardmäßig nimmt \Gm\ den Treiber, der am besten zum benutzten System passt.
+% Deshalb müssen sie in den meisten Fällen keinen Treiber angeben.
+% Wie auch immer, wenn sie |dvipdfm| benutzen wollen, dann sollten sie dies explizit angeben.
+%
+% \begin{Options}
+% \item[\onlypre driver] gibt den Treibernamen mit |driver=|\meta{Treibername} an. 
+% |dvips|, |dvipdfm|, |pdftex|, |vtex|, |xetex|, |auto| und |none| sind
+% als Treibername einsetzbar. Außer den Namen für |auto| und |none| können
+% alle Treiber direkt mit dem Namen, ohne |driver=|, angegeben werden.
+% |driver=auto| schaltet die automatische Detektion ein, egal was die vorherigen Einstellungen waren. 
+% |driver=none| schaltet die automatische Detektion ab und es wird kein Treiber gewählt. Dies
+% könnte nützlich sein, wenn sie wollen, dass andere Pakete die Treibereinstellungen herausfinden sollen.
+% Ein Beispiel: Wenn sie das \textsf{crop} Paket mit \Gm{} nutzen wollen,
+% dann sollten sie |\usepackage[driver=none]{geometry}| aufrufen, bevor
+% sie das \textsf{crop} Paket aufrufen.
+% \item[\onlypre dvips] schreibt die Papiergröße in die dvi Ausgabe, mit dem \cs{special}
+%     Makro. Wenn sie \textsl{dvips} als DVI-zu-PS Treiber nutzen, dann
+%     brauchen sie, wenn sie beispielsweise ein Dokument mit |\geometry{a3paper,landscape}|
+%     auf A3-Papier mit der landscape Orientierung drucken wollen, die Optionen
+%     ``|-t a3 -t landscape|'' für \textsl{dvips} nicht. 
+% \item[\onlypre dvipdfm] arbeitet wie |dvips|, ausgenommen die landscape Korrektur.
+%      Sie können diese Option einschalten, wenn sie \textsf{dvipdfmx} nutzen und
+%      \textsf{xdvipdfmx}, um die dvi Ausgabe zu erzeugen.
+% \item[\onlypre pdftex] setzt \cs{pdfpagewidth} und \cs{pdfpageheight}
+%      intern.
+% \item[\onlypre xetex] ist dasselbe wie |pdftex|, ausgenommen das Ignorieren von
+%     |\pdf{h,v}origin|, das in \XeLaTeX{} nicht definiert ist. Diese Option wurde in 5. Version eingeführt.
+%     Beachten sie, dass die `geometry.cfg' in \TeX{} Live, welche die
+%     automatische Detektionsroutine deaktiviert und |pdftex| einstellt, nicht länger notwendig ist.
+%     Trotzdem gibt es keine Probleme, sogar wenn die Datei nicht gelöscht wird.
+%     Anstatt |xetex|, können sie |dvipdfm| angeben, mit \XeLaTeX{},
+%     wenn sie die Besonderheiten von dvipdfm nutzen wollen, die \XeTeX{} unterstützt.
+% \item[\onlypre vtex] setzt die Maße \cs{mediawidth} und \cs{mediaheight}
+%     für V\TeX. Wenn dieser Treiber ausgewählt ist (explizit oder automatisch),
+%     wird \Gm\ den Ausgabemodus (DVI, PDF oder PS), der in V\TeX gewählt ist, selbstständig herausfinden
+%     und die richtigen Einstellungen für ihn machen.
+% \end{Options}
+% Wenn der explizit angegebene Treiber nicht zum benutzten Textsatzprogramm passt,
+% dann wird der Standardtreiber |dvips| ausgewählt.
+%
+% \subsection{Sonstige Optionen}
+%
+%  Die sonstigen nützlichen Optionen werden jetzt beschrieben.
+%
+% \begin{Options}
+% \item[\onlypre verbose] zeigt die Parameterergebnisse im Terminal an.
+%   |verbose=false| (Standard) schreibt diese nur in die Log-Datei.
+% \item[\onlypre reset] setzt die Layoutmaße zurück und nimmt die Einstellungen an,
+%   die vor dem Laden von \Gm\ vorgegeben waren. Die Optionen, die in 
+%   |geometry.cfg| angegeben sind, werden auch entfernt.
+%   Beachten sie, dass dies nicht |pass| und |mag| mit |truedimen| zurücksetzen kann.
+%   |reset=false| hat keine Auswirkungen und kann ein vorheriges
+%   |reset|(|=true|), falls es dies gibt, nicht aufheben. Zum Beispiel, wenn sie
+%   \begin{quote}
+%     |\documentclass[landscape]{article}|\\
+%     |\usepackage[twoside,reset,left=2cm]{geometry}|
+%   \end{quote}
+%   eingeben, mit |\ExecuteOptions{scale=0.9}| in |geometry.cfg|,
+%   dann bleiben |landscape| und |left=2cm| wirksam
+%   und |scale=0.9| und |twoside| sind unwirksam.
+% \item[\onlypre mag] setzt den Vergrößerungswert (\cs{mag}) und modifiziert automatisch 
+%   \cs{hoffset} und \cs{voffset} entsprechend der Vergrößerung.
+%   |mag=|\meta{Wert}. Beachten sie, dass \meta{Wert} ein ganzzahliger Wert sein sollte,
+%   wobei 1000 die Normalgröße ist. Ein Beispiel: |mag=1414| mit |a4paper|
+%   bietet eine erweiterte Druckgröße in |a3paper|, welches $1.414$
+%   (=$\sqrt{2}$) mal größer als |a4paper| ist. Die Vergrößerung der Schriftart benötigt extra
+%   Speicherplatz. \textbf{Beachten sie, dass die Einstellung über jeder anderen
+%   Einstellung mit `true' Maßen stehen sollte, solchen Maßen wie |1.5truein|, |2truecm|
+%   und so weiter.} Lesen sie auch die |truedimen| Option.
+% \item[\onlypre truedimen] verändert alle internen expliziten Maßwerte in 
+%   \textit{true} Maße, z.\,B. wird |1in| zu |1truein|.
+%   Typischerweise wird diese Option zusammen mit der |mag| Option genutzt. Beachten sie, dass
+%   dies unwirksam gegenüber extern angegebenen Maßen ist. Ein Beispiel:
+%   Wenn sie ``\texttt{mag=1440, margin=10pt, truedimen}'' einstellen, dann sind die Ränder nicht
+%   `true' aber vergrößert. Wenn sie exakte Ränder wollen, dann sollten sie stattdessen wie folgt definieren
+%   ``\texttt{mag=1440, margin=10truept, truedimen}''.
+% \item[\onlypre pass] deaktiviert alle geometry Optionen und Berechnungen,
+%   ausgenommen |verbose| und |showframe|. Es ist unabhängig von der Reihenfolge und kann
+%   für das Überprüfen des Seitenlayouts der Dokumentklasse, sonstiger Pakete
+%   und manuellen Einstellungen ohne \Gm\ genutzt werden.
+% \item[\onlypre showframe] zeigt sichtbare Ränder um den Textbereich und die Seite
+%   und die Linien für den Kopf und den Fuß auf der ersten Seite.
+% \item[\onlypre showcrop] druckt Schnittmarken auf jede Ecke des benutzerdefinierten
+%  Layoutbereichs.
+% \end{Options}
+%
+% \section{Verarbeitungsoptionen}\label{sec:process}
+% 
+% \subsection{Reihenfolge des Ladens}\label{sec:loadorder}
+%
+% Wenn es eine |geometry.cfg| gibt, irgendwo wo es \TeX{} finden kann, dann lädt \Gm\ diese
+% zuerst. Ein Beispiel: In |geometry.cfg| können sie
+% |\ExecuteOptions{a4paper}| schreiben, welches A4-Format als das Standardpapier angibt.
+% Grundlegend können sie alle Optionen, die in \Gm\ definiert sind, mit
+% |\ExecuteOptions{}| nutzen.
+% 
+% Die Reihenfolge des Ladens in der Präambel ihres Dokuments ist wie folgt:
+% \begin{enumerate}
+%  \item |geometry.cfg|, wenn sie existiert.
+%  \item Optionen, die mit |\documentclass[|\meta{Optionen}|]{...}| angegeben werden.
+%  \item Optionen, die mit |\usepackage[|\meta{Optionen}|]{geometry}| angegeben werden.
+%  \item Optionen, die mit |\geometry{|\meta{Optionen}|}| angegeben werden. Die jeweilige Option
+%  kann mehrfach aufgerufen werden. (Die |reset| Option wird alle Optionen,
+%  die in |\usepackage{geometry}| oder |\geometry| angegeben wurden,
+%  zurücksetzen.)
+% \end{enumerate}
+%
+% \subsection{Reihenfolge der Optionen}\label{sec:optionorder}
+%
+% Die Spezifikation der \Gm\ Optionen ist unabhängig von der Reihenfolge
+% und überschreibt die vorherigen gleichartigen Einstellungen.
+% Ein Beispiel: 
+% \begin{center}
+% |[left=2cm, right=3cm]| ist äquivalent zu 
+% |[right=3cm, left=2cm]|.
+% \end{center}
+% Der mehrfache Aufruf der Optionen überschreibt die jeweiligen vorherigen
+% Einstellungen. Auch hier ein Beispiel: 
+% \begin{center}
+%  |[verbose=true, verbose=false]| das Ergebnis ist |verbose=false|. 
+% \end{center}
+% |[hmargin={3cm,2cm}, left=1cm]| ist das Gleiche wie |hmargin={1cm,2cm}|, 
+% wobei der linke (oder innere) Rand durch |left=1cm| überschrieben wird. 
+%
+% |reset| und |mag| sind Ausnahmen.
+% Die |reset| Option entfernt alle geometry Optionen (ausgenommen |pass|)
+% davor. Wenn sie
+% \begin{quote}
+% |\documentclass[landscape]{article}|\\
+% |\usepackage[margin=1cm,twoside]{geometry}|\\
+% |\geometry{a5paper, reset, left=2cm}|
+% \end{quote}
+% einstellen, dann werden |margin=1cm| (Rand), |twoside| und |a5paper| entfernt und 
+% ist gelegentlich äquivalent zu
+% \begin{quote}
+% |\documentclass[landscape]{article}|\\
+% |\usepackage[left=2cm]{geometry}|
+% \end{quote}
+%
+% Die |mag| Option sollte vor jeder anderen Einstellungen mit
+% `true' Länge, solche wie |left=1.5truecm|, |width=5truein| und so weiter, stehen.
+% Die |\mag| Option kann vor dem Aufruf dieses Pakets stehen.
+%
+% \subsection{Priorität}\label{sec:priority}
+%  
+% Es gibt verschiedene Wege die Maße des \gpart{Körpers} einzustellen:
+% |scale|, |total|, |text| und |lines|. Das \Gm\ Paket gibt den konkreteren Spezifikationen
+% eine höhere Priorität. Hier ist die Prioritätsregel
+% für den \gpart{Textkörper}.
+% \[\begin{array}{c}
+% \textrm{Priorität:}\qquad\textrm{niedrig}\quad
+%    \longrightarrow\quad\textrm{hoch}\\[1em]
+% \left\{\begin{array}{l}|hscale|\\|vscale|\\|scale|
+%        \end{array}\right\} <
+% \left\{\begin{array}{l}|width|\\|height|\\|total|
+%        \end{array}\right\} <
+% \left\{\begin{array}{l}|textwidth|\\|textheight|
+%         \\|text|\end{array}\right\} < |lines|.
+% \end{array}\]
+% Ein Beispiel: 
+% \begin{quote}
+%  |\usepackage[hscale=0.8, textwidth=7in, width=18cm]{geometry}|
+% \end{quote}
+% ist das Gleiche wie |\usepackage[textwidth=7in]{geometry}|. Ein weiteres Beispiel:
+% \begin{quote}
+%  |\usepackage[lines=30, scale=0.8, text=7in]{geometry}|
+% \end{quote}
+% resultiert in \texttt{[lines=30, textwidth=7in]}.
+%
+% \subsection{Standards}\label{sec:defaults}
+%
+% Dieses Kapitel summiert die Standardeinstellungen für die automatische Vervollständigung,
+% die später beschrieben wird.
+% 
+% Das Standardverhältnis für den vertikalen Rand ist $2/3$, namentlich,
+% \begin{equation}
+%  |top| : |bottom| = 2 : 3 \qquad\textit{Standard}.
+% \end{equation}
+% Was den horizontalen Rand betrifft, hängen die Standardwerte davon ab,
+% ob das Dokument einseitig oder zweiseitig ist,
+% \begin{equation}
+%  |left|\;(|inner|) : |right|\;(|outer|) 
+%       = \left\{ \begin{array}{ll}
+%              1 : 1 \qquad\textit{Standard für oneside},\\
+%              2 : 3 \qquad\textit{Standard für twoside}.
+%         \end{array}\right.
+% \end{equation}
+% Offensichtlich ist, dass der Standard für den horizontalen Rand für einseitig (oneside) `centering' ist.
+%
+% Das \Gm\ Paket besitzt folgende Standardeinstellungen für
+% \textit{onesided (einseitige)} Dokumente:
+% \begin{itemize}\setlength{\itemsep}{-.5\parsep}
+%   \item |scale=0.7| (\gpart{Textkörper} ist $0.7 \times \gpart{Papier}$)
+%   \item |marginratio={1:1, 2:3}| (1:1 für horizontal und 2:3 für vertikale Ränder)
+%   \item |ignoreall| (der Kopf, der Fuß, die Randnotizen sind ausgeschlossen, 
+%   wenn die Größe des \gpart{Körpers (body)} berechnet wird.)
+% \end{itemize}
+% Für \textit{twosided (zweiseitige)} Dokumente mit der |twoside| Option, ist die Standardeinstellung
+% die gleiche, wie bei \textit{onesided (einseitigen)}, ausgenommen, dass das horizontale Randverhältnis
+% auf |2:3| gesetzt wird.
+%
+% Zusätzliche Optionen überschreiben die vorher angegebenen Maße.\\
+% 
+% \subsection{Autovervollständigung} \label{sec:rules}
+%
+% Abbildung~\ref{fig:specrule} zeigt schematisch, wie viele Spezifikationsmuster
+% existieren und wie sie die Zweideutigkeiten der Spezifikationen lösen können.
+% Jede Achse zeigt die Anzahl der Längen,
+% die explizit für den Körper und die Ränder angegeben werden müssen. \Ss($m$,$b$) zeigt die
+% Spezifikation mit einer Menge an Zahlen $(\gpart{Rand},\gpart{Körper})=(m,b)$.
+%
+% Ein Beispiel: Die Spezifikation |width=14cm, left=3cm| ist kategorisiert in
+% \Ss(1,1), welches eine ad\-äquate Spezifikation ist. Wenn sie
+% |right=4cm| hinzufügen, dann wird es \Ss(2,1) sein und überspezifiziert. 
+% Wenn nur |width=14cm| gegeben ist, dann ist es in \Ss(0,1) unterspezifiziert. 
+%
+% Das \Gm\ Paket besitzt einen Autovervollständigungsmechanismus, der, wenn
+% die Layoutparameter unter- oder überspezifiziert sind,
+% die Unstimmigkeiten herausarbeitet und dann die Standards nutzt und andere
+% Verhältnisse. Hier sind die Spezifikationen und die Vervollständigungsregeln.
+%
+% \begin{figure}[h]
+%  \centering
+%  {\unitlength=1pt
+%  \begin{picture}(400,150)(40,0)
+%  \put(1,49){\makebox(90,49)[r]{\large 0}}
+%  \put(1,1){\makebox(70,99)[r]{\large \gpart{Textkörper}}}
+%  \put(1,1){\makebox(90,49)[r]{\large 1}}
+%  \put(100,100){\makebox(99,20){\large 0}}
+%  \put(100,50){\framebox(99,49){}}
+%  \put(100,80){\makebox(99,15){\Ss(0,0)}}
+%  \put(100,50){\makebox(99,49){benutze |scale|}}
+%  {\linethickness{1pt}%
+%  \put(150,35){\line(0,1){30}}
+%  \put(150,35){\line(-1,3){4}}
+%  \put(150,35){\line(1,3){4}}}
+%  \put(100,0){\framebox(99,49){}}
+%  \put(100,2){\makebox(99,15){\Ss(0,1)}}
+%  \put(100,0){\makebox(99,49){nutze |marginratio|}}
+%  \put(200,120){\makebox(99,12){\large \gpart{Rand}}}
+%  \put(200,100){\makebox(99,20){\large 1}}
+%  \put(200,50){\framebox(99,49){benutze |scale|}}
+%  \put(200,55){\makebox(89,10)[r]{\scriptsize\shortstack[l]{wenn |ratio|\\angegeben}}}
+%  \put(200,2){\makebox(99,15){\Ss(1,1)}}
+%  {\linethickness{1pt}%
+%  \put(250,35){\line(0,1){30}}
+%  \put(250,35){\line(-1,3){4}}
+%  \put(250,35){\line(1,3){4}}}
+%  {\linethickness{1pt}%
+%  \put(225,25){\line(-1,0){35}}
+%  \put(225,25){\line(-3,-1){12}}
+%  \put(225,25){\line(-3,1){12}}}
+%  \put(200,80){\makebox(99,15){\Ss(1,0)}}
+%  \put(200,0){\framebox(99,49){\textcolor{red}{\textit{lösbar}}}}
+%  \put(300,100){\makebox(99,20){\large 2}}
+%  \put(300,80){\makebox(99,15){\Ss(2,0)}}
+%  \put(300,50){\framebox(99,49){\textcolor{red}{\textit{lösbar}}}}
+%  \put(300,0){\framebox(99,49){vergesse den |body|}}
+%  \put(300,2){\makebox(99,15){\Ss(2,1)}}
+%  {\linethickness{1pt}%
+%  \multiput(290,65)(5,0){6}{\line(1,0){3}}
+%  \put(320,65){\line(-3,-1){12}}
+%  \put(320,65){\line(-3,1){12}}}
+%  {\linethickness{1pt}%
+%  \put(350,65){\line(0,-1){30}}
+%  \put(350,65){\line(-1,-3){4}}
+%  \put(350,65){\line(1,-3){4}}}
+%  \end{picture}}
+%  \caption[Spezifikationen und Komplettierungsregeln]{%
+%  \begin{minipage}[t]{.7\textwidth}\raggedright\small
+%  Die Spezifikationen \Ss(0,0) zu \Ss(2,1) und die Komplettierungsregeln
+%  (Pfeile). Spalten- und Zeilennummern bezeichnen die Anzahl der explizit
+%  angegebenen Längen für den Rand und den Körper. \Ss($m$,$b$) bezeichnet eine
+%  Spezifikation mit einer Menge an Zahlen $(\gpart{Rand},\gpart{Körper})=(m,b)$. 
+%  \end{minipage}}
+%  \label{fig:specrule}
+% \end{figure}
+%
+% \begin{Spec}
+% \item[\Ss(0,0)]
+% Es ist nichts angegeben. Das \Gm\ Paket gibt für den \gpart{body (Körper)} den
+% Standard |scale| ($=0.7$) vor. \\ Ein Beispiel: |width (Breite)| wird auf
+% $|0.7|\times|layoutwidth|$ eingestellt. Beachten sie, dass standardmäßig die |layoutwidth| 
+% und |layoutheight| (Layoutbreite und -höhe) gleich der |\paperwidth| und |\paperheight| (Papierbreite und -höhe)
+% sein werden.
+% Demnach wird \Ss(0,0) zu \Ss(0,1). Siehe auch \Ss(0,1).
+% \bigskip
+%
+% \item[\Ss(0,1)]
+% Nur der \gpart{body} ist angegeben, wie z.\,B. |width=7in|, |lines=20|,
+% |body={20cm,24cm}|, |scale=0.9| und so weiter.
+% Dann setzt \Gm\ die Ränder mithilfe des Randverhältnisses.
+% Falls kein Verhältnis angegeben ist, wird das Standardverhältnis genutzt.
+% Das Standardverhältnis für das vertikale Randverhältnis ist wie folgt definiert:
+% \begin{equation}
+%  |top| : |bottom| = 2 : 3 \qquad\textit{Standard}.
+% \end{equation}
+% Was das horizontale Verhältnis betrifft, hängt das Standardverhältnis davon ab,
+% ob das Dokument einseitig oder zweiseitig ist.
+% \begin{equation}
+%  |left|\;(|inner|) : |right|\;(|outer|) 
+%       = \left\{ \begin{array}{ll}
+%              1 : 1 \qquad\textit{Der Standard bei einseitig},\\
+%              2 : 3 \qquad\textit{Der Standard bei zweiseitig}.
+%         \end{array}\right.
+% \end{equation}
+% Wenn zum Beispiel auf A4-Papier die |height=22cm| angegeben ist, 
+% dann berechnet \Gm\ den |top (oberen)| Rand wie folgt:
+% \begin{equation}
+%   \begin{array}{ll}
+%   |top| &= ( |layoutheight| - |height| ) \times 2/5 \\
+%         &= (29.7-22)\times2/5 = 3.08\textrm{(cm)}
+%   \end{array}
+% \end{equation}
+% Demnach sind der |top (obere)| Rand und die |height (Höhe)| des Körpers bestimmt wurden, die
+% Spezifikation für die Vertikale wird also zu \Ss(1,1) und
+% alle Parameter können gelöst werden.
+% \bigskip
+%
+% \item[\Ss(1,0)]
+% Nur ein Rand ist angegeben, wie |bottom=2cm|, |left=1in|,
+% |top=3cm| und so weiter.
+%
+% \begin{itemize}
+% \item \textbf{Wenn das Randverhältnis \textit{nicht} angegeben ist}, dann nimmt \Gm\
+% den Standard für |scale| ($=0.7$) für den \gpart{body} an. 
+% Wenn beispielsweise |top=2.4cm| angegeben ist, dann setzt \Gm\
+% \begin{center}
+%     $|height|= |0.7|\times|layoutheight|$ 
+%            ~~($=|0.7\paperheight|$ by default),
+% \end{center}
+% dann wird \Ss(1,0) zu \Ss(1,1), wobei der |bottom| mit
+% $|layoutheight|-(|height|+|top|)$ berechnet wird und in 6.51\,cm auf A4-Papier resultiert,
+% wenn die Layoutgröße gleich der Papiergröße ist.
+% \medskip
+% \item \textbf{Wenn das Randverhältnis angegeben ist}, wie
+% |hmarginratio={1:2}|, |vratio={3:4}| und so weiter,
+% dann setzt \Gm\ die anderen% Ränder mit dem gegebenen Randverhältnis.
+% Falls z.\,B. eine Menge an Optionen ``|top=2.4cm,vratio={3:4}|'' spezifiziert wurde,
+% dann setzt \Gm\ den |bottom| auf den berechneten Wert von |3.2cm|
+% \begin{center}
+%     $|bottom|= |top|/3\times4 = 3.2\textrm{cm}$
+% \end{center}
+% Demnach wird \Ss(1,0) zu \Ss(2,0).
+% \end{itemize}
+%
+% Beachten sie, dass in der Version 4 oder früher das Berechnungsverfahren ein anderes war.
+% Deshalb wird, wenn sie in Version 5 und 4 die gleichen Werte eingeben,
+% das Ergebnis nicht gleich sein.
+% Wenn nur |top=2.4cm| gegeben ist, 
+% dann bekommen sie in Version 4 oder früher |bottom=2.4cm|, aber sie werden
+% |bottom=6.51cm| bei Version 5 erhalten.
+% \bigskip
+%
+% \item[\Ss(2,1)]
+% Der \gpart{body (Körper)} und zwei \gpart{margins (Ränder)} sind angegeben, wie z.\,B.
+%  |vdivide={1in,8in,1.5in}|, ``|left=3cm,width=13cm,right=4cm|'' und
+%  so weiter. Seit \Gm\ grundsätzlich die Priorität an die \gpart{margins} gibt,
+%  wenn die Maße überspezifiziert sind, vergisst \Gm\ den \gpart{body} und setzt diesen zurück.
+%  Ein Beispiel: Wenn sie
+% \begin{center}
+%    |\usepackage[a4paper,left=3cm,width=13cm,right=4cm]{geometry}|,
+% \end{center}
+% angeben, dann wird die |width (Breite)| auf 14\,cm zurückgesetzt, da die Breite von A4-Papier 21\,cm
+% ist.
+% \end{Spec}
+%
+% \section{Verändern des Layouts innerhalb des Dokuments}\label{sec:midchange}
+%
+% Die Version 5 bietet die neuen Befehle \cs{newgeometry\{$\cdots$\}} und
+% und \cs{restoregeometry} an, welche es ihnen erlauben, das Seitenlayout im Dokuments zu verändern.
+% Nicht wie \cs{geometry} in der Präambel,
+% ist \cs{newgeometry} nur nach |\begin{document}| verfügbar.
+% Es setzt alle Optionen zurück, ausgenommen die,
+% die sich auf die Papiergröße beziehen -- |landscape|, |portrait| -- und Papiergrößenoptionen 
+% (wie |papersize|, |paper=a4paper| und so weiter), die nicht
+% durch \cs{newgeometry} geändert werden können. 
+%
+% Der Befehl \cs{restoregeometry} sichert das in der Präambel (vor |\begin{document}|) angegebene Seitenlayout,
+% welches mit |\usepackage{geometry}|, \cs{geometry} und deren Optionen erzeugt wurde.
+%
+% Beachten sie, dass beide, \cs{newgeometry} und \cs{restoregeometry}, ein
+% |\clearpage| einfügen, da wo sie aufgerufen werden.
+%
+% Es folgt ein Beispiel für das Verändern des Layouts im Dokument. Das Layout L1 wird wie folgt angegeben:
+% |hmargin=3cm| (|left (linker)| und |right (rechter)| Rand sind |3cm|
+% lang), dies wird in L2 in |left=3cm|, |right=1cm| und
+% |bottom=0.1cm| geändert. Das Layout L1 wird mit \cs{restoregeometry}
+% gesichert. 
+% \begin{center}
+% \begin{minipage}{.8\textwidth}
+% |\usepackage[hmargin=3cm]{geometry}|\\
+% |\begin{document}|\\
+%  \medskip
+%  \hspace{1cm}\fbox{Layout L1}\\
+% \medskip
+% |\newgeometry{left=3cm,right=1cm,bottom=0.1cm}|\\
+% \medskip
+%  \hspace{1cm}\fbox{Layout L2 (neu)}\\
+% \medskip
+% |\restoregeometry|\\
+% \medskip
+%  \hspace{1cm}\fbox{Layout L1 (wiederhergestellt)}\\
+% \medskip
+% |\newgeometry{margin=1cm,includefoot}|\\
+% \medskip
+%  \hspace{1cm}\fbox{Layout L3 (neu)}\\
+% \medskip
+% |\end{document}|
+% \end{minipage}%
+% \end{center}
+% \begin{center}
+%  \centering\small
+%  {\unitlength=.8pt
+%  \begin{picture}(450,180)(0,0)
+%  \put(0,165){\makebox(95,12){(gesichert)}}
+%  \put(15,135){\framebox(65,10){\gpart{Kopf}}}
+%  \put(15,60){\framebox(65,70){\gpart{Textkörper}}}
+%  \put(15,45){\makebox(65,12){\gpart{Fuß}}}
+%  \put(15,45){\line(1,0){65}}
+%  \put(0,20){\framebox(95,140){}}
+%  \put(0,0){\makebox(95,20){L1}}
+%  \put(104,90){\circle*{4}}
+%  \put(110,90){\circle*{4}}
+%  \put(116,90){\circle*{4}}
+%  \put(125,165){\makebox(95,12){\cs{newgeometry}}}
+%  \put(140,135){\framebox(71,10){\gpart{Kopf}}}
+%  \put(140,33){\framebox(71,97){\gpart{Textkörper}}}
+%  \put(140,21){\makebox(71,12){\gpart{Fuß}}}
+%  \put(125,20){\framebox(95,140){}}
+%  \put(125,0){\makebox(95,20){L2 (neu)}}
+%  \put(229,90){\circle*{4}}
+%  \put(235,90){\circle*{4}}
+%  \put(241,90){\circle*{4}}
+%  \put(250,165){\makebox(95,12){\cs{restoregeometry}}}
+%  \put(265,135){\framebox(65,10){\gpart{Kopf}}}
+%  \put(265,60){\framebox(65,70){\gpart{Textkörper}}}
+%  \put(265,45){\makebox(65,12){\gpart{Fuß}}}
+%  \put(265,45){\line(1,0){65}}
+%  \put(250,20){\framebox(95,140){}}
+%  \put(250,0){\makebox(95,20){L1 (wiederhergestellt)}}
+%  \put(354,90){\circle*{4}}
+%  \put(360,90){\circle*{4}}
+%  \put(366,90){\circle*{4}}
+%  \put(375,165){\makebox(95,12){\cs{newgeometry}}}
+%  \put(383,41){\framebox(80,111){\gpart{Textkörper}}}
+%  \put(383,29){\makebox(80,12){\gpart{Fuß}}}
+%  \put(383,29){\line(1,0){80}}
+%  \put(375,20){\framebox(95,140){}}
+%  \put(375,0){\makebox(95,20){L3 (neu)}}
+%  \end{picture}}
+% \end{center}
+%
+% Eine Menge von Befehlen |\savegeometry{|\meta{Name}|}| und
+% |\loadgeometry{|\meta{Name}|}| ist nützlich, wenn sie mehrere
+% verschiedene Layouts in ihrem Dokument nutzen wollen.
+% Ein Beispiel: 
+% \begin{center}
+% \begin{verbatim}
+%     \usepackage[hmargin=3cm]{geometry}
+%     \begin{document}
+%           L1
+%     \newgeometry{left=3cm,right=1cm,bottom=0.1cm}
+%     \savegeometry{L2}
+%           L2 (neu, gespeichert)
+%     \restoregeometry
+%           L1 (wiederhergestellt)
+%     \newgeometry{margin=1cm,includefoot}
+%           L3 (neu)
+%     \loadgeometry{L2}
+%           L2 (geladen)
+%     \end{document}
+% \end{verbatim}
+% \end{center}
+%
+% \section{Beispiele}
+%
+% \begin{enumerate}
+% \item Ein einseitiges Seitenlayout mit einem zentrierten Textbereich auf dem Papier:\\
+% Das sich anschließende Beispiel hat das gleiche Ergebnis, weil das horizontale Randverhältnis
+% auf |1:1| gesetzt ist, wie es bei einseitigen Dokumenten der Standard ist.
+% \begin{itemize}
+%   \item |centering|
+%   \item |marginratio=1:1|
+%   \item |vcentering|
+% \end{itemize}
+%
+% \item Ein zweiseitiges Layout mit einem Versatz von 1\,cm für das Binden auf der Innenseite:\\
+% \begin{itemize}
+%   \item |twoside, bindingoffset=1cm|
+% \end{itemize}
+% In diesem Fall ist die |textwidth (Textbreite)| kürzer als der Standard bei zweiseitigen Dokumenten
+% $0.7\times|1cm|$ ($=|0.7cm|$), weil die Standardbreite des
+% \gpart{body (Körpers)} mit |scale=0.7| eingestellt ist, was bedeutet,  
+% $|width|=|0.7|\times|layoutwidth|$ ($=|0.7\paperwidth|$ standardmäßig).
+%
+% \item Ein Layout mit linkem, rechtem und oberem Rand (3\,cm, 2\,cm und
+% 2.5\,in), mit einer Texthöhe von 40 Zeilen und der Einbeziehung des Kopfes
+% und des Fußes auf der Seite in den \gpart{druckbaren Bereich}:\\
+% Die zwei Beispiele haben das gleiche Ergebnis.
+% \begin{itemize}
+%   \item |left=3cm, right=2cm, lines=40, top=2.5in, includeheadfoot|
+%   \item |hmargin={3cm,2cm}, tmargin=2.5in, lines=40, includeheadfoot|
+% \end{itemize}
+%
+% \item Ein Layout mit einer Höhe des \gpart{druckbaren Bereichs} von 10\,in, einem unteren Rand von
+%  2\,cm und der Standardbreite:\\ Der obere Rand wird automatisch berechnet.
+%  Jede der unteren Lösungen erzeugt das gleiche Layout.
+% \begin{itemize}
+%     \item |vdivide={*, 10in, 2cm}|
+%     \item |bmargin=2cm, height=10in|
+%     \item |bottom=2cm, textheight=10in| 
+% \end{itemize}
+% Beachten sie, dass die Maße für \gpart{Kopf} and \gpart{Fuß} von der |Höhe|
+% des \gpart{druckbaren Bereichs} ausgeschlossen sind. Ein zusätzliches |includefoot| sorgt dafür,
+% dass der \cs{footskip (Fußbereich)} in die |totalheight (Gesamthöhe)| einbezogen wird. Deshalb ist in den unteren zwei
+% Fällen die |textheight (Texthöhe)| im vorhergehenden Layout kürzer als in letzterem
+% (mit exakt 10\,in) über dem \cs{footskip}. In anderen Worten, 
+% |height| = |textheight| + |footskip| falls |includefoot=true| ist, in diesem Falle.
+% \begin{itemize}
+%     \item |bmargin=2cm, height=10in, includefoot|
+%     \item |bottom=2cm, textheight=10in, includefoot|
+% \end{itemize}
+%
+% \item Ein Layout mit einer \glen{textwidth (Textbreite)} und \glen{textheight (Texthöhe)} von 90\% des
+% Papiers und einem zentrierten \gpart{body}:
+% Jede der unteren Lösungen erzeugt das gleiche Seitenlayout, sofern
+% die |layoutwidth (Layoutbreite)| und die |layoutheight (Layouthöhe)| nicht geändert werden, also der Standard beibehalten
+% wird.
+% \begin{itemize}
+%   \item |scale=0.9, centering|
+%   \item |text={.9\paperwidth,.9\paperheight}, ratio=1:1|
+%   \item |width=.9\paperwidth, vmargin=.05\paperheight, marginratio=1:1|
+%   \item |hdivide={*,0.9\paperwidth,*}, vdivide={*,0.9\paperheight,*}|
+%   (für einseitige Dokumente)
+%   \item |margin={0.05\paperwidth,0.05\paperheight}|
+% \end{itemize}
+% Sie können ein |heightrounded| hinzufügen, um eine ``underfull vbox warning'' (Warnmeldung) wie
+% \begin{quote}\small
+%  |Underfull \vbox (badness 10000) has occurred while \output is active|.
+% \end{quote}
+% zu vermeiden.
+% Lesen sie auch Kapitel~\ref{sec:body} für eine detaillierte Beschreibung zu |heightrounded|.
+%
+% \item Ein Layout, bei dem die Breite für die Randnotizen auf 3\,cm eingestellt ist und in
+% die Breite des \gpart{druckbaren Bereichs} einbezogen ist:\\ Die folgenden Beispiele erzeugen das Gleiche.
+% \begin{itemize}
+%   \item |marginparwidth=3cm, includemp|
+%   \item |marginpar=3cm, ignoremp=false|
+% \end{itemize}
+%
+% \item Ein Layout, bei dem der \gpart{body} das ganze Papier (A5-Papier im |landscape| Modus) einnimmt:\\
+% Die folgenden Beispiele sind gleich.
+% \begin{itemize}
+%   \item |a5paper, landscape, scale=1.0|
+%   \item |landscape=TRUE, paper=a5paper, margin=0pt|
+% \end{itemize}
+%
+% \item  Ein Bildschirmgrößenlayout, verwendbar für Präsentationen mit dem PC oder dem Beamer:
+% \begin{verbatim}
+%   \documentclass{slide}
+%   \usepackage[screen,margin=0.8in]{geometry}
+%    ...
+%   \begin{slide}
+%      ...
+%   \end{slide}\end{verbatim}
+% \item Ein Layout mit vergrößerter Schrift und Zwischenräumen, von A4 auf A3:\\
+%  Im unteren Fall ist die sich ergebende Papiergröße A3.
+% \begin{itemize}
+%     \item |a4paper, mag=1414|.
+% \end{itemize}
+% Wenn sie ein Layout mit doppelt so großer Schriftgröße, aber ohne das
+% Verändern der Papiergröße wollen, dann tippen sie
+% \begin{itemize}
+%   \item |letterpaper, mag=2000, truedimen|.
+% \end{itemize}
+%  Sie können die |dvips| Option hinzufügen, das ist nützlich, um eine Vorschau der eigenen
+%  Papiergröße zu betrachten, die durch |dviout| oder |xdvi| erzeugt wird.
+%
+% \item  Verändern des Layouts auf der ersten Seite und Beibehalten der anderen Einstellungen 
+%  vor dem Laden von \Gm:\\ Benutzen sie die |pass| Option, |\newgeometry|
+%  und |\restoregeometry|.
+% \begin{verbatim}
+%   \documentclass{book}
+%   \usepackage[pass]{geometry}
+%      % 'pass' vernachlässigt das Paketlayout,
+%      %  so wird das originale 'book' Layout gespeichert.
+%   \begin{document}
+%   \newgeometry{margin=1cm}% Verändert die Maße der ersten Seite.
+%      Seite 1
+%   \restoregeometry % stellt das 'book' Layout wieder her.
+%      Seite 2 und folgende
+%   \end{document}\end{verbatim}
+%
+% \item Ein komplexes Seitenlayout:
+% \begin{verbatim}
+%  \usepackage[a5paper, landscape, twocolumn, twoside,
+%      left=2cm, hmarginratio=2:1, includemp, marginparwidth=43pt, 
+%      bottom=1cm, foot=.7cm, includefoot, textheight=11cm, heightrounded,
+%      columnsep=1cm, dvips,  verbose]{geometry}\end{verbatim}
+% Probieren sie das Layoutsetzen selbst und überprüfen sie, wie das Ergebnis ist. |:-)|
+% \end{enumerate}
+%
+% \section{Bekannte Probleme}
+% \begin{itemize}
+%  \item Mit |mag| $\neq 1000$ und |truedimen|,
+%  |paperwidth| und |paperheight| ist die Anzeige im verbose-Modus verschieden von der
+%  wirklichen Größe der resultierenden PDF. Die PDF ist aber korrekt.
+%
+%  \item Mit |mag| $\neq 1000$, \textit{no} |truedimen|
+%  und \textsf{hyperref} sollte \textsf{hyperref} vor \Gm\ geladen werden. 
+%  Andernfalls wird die PDF-Größe fehlerhaft.
+%
+%  \item Mit dem \textsf{crop} Paket und |mag| $\neq 1000$
+%  arbeitet die |center|-Option von \textsf{crop} nicht gut.
+%
+% \end{itemize}
+%
+% \section{Danksagungen}
+%  Der Autor würdigt hiermit die hilfreichen Vorschläge und Kommentare Vieler (in alphabetischer Reihenfolge ihrer
+%  Familennamen):
+%  Jean-Bernard Addor, 
+%  Frank Bennett,
+%  Alexis Dimitriadis,
+%  Friedrich Flender,
+%  Adrian Heathcote,
+%  Stephan Hennig,
+%  Morten H\o{}gholm,
+%  Jonathan Kew,
+%  James Kilfiger,
+%  Yusuke Kuroki,
+%  Jean-Marc Lasgouttes,
+%  Wlodzimierz Macewicz,
+%  Frank Mittelbach,
+%  Eckhard Neber,
+%  Rolf Niepraschk,
+%  Hans Fr.~Nordhaug,
+%  Heiko Oberdiek,
+%  Keith Reckdahl, 
+%  Peter Riocreux,
+%  Will Robertson,
+%  Pablo Rodriguez,
+%  Nico Schlöemer,
+%  Perry C.~Stearns, 
+%  Frank Stengel,
+%  Plamen Tanovski,
+%  Petr Uher,
+%  Piet van Oostrum,
+%  Vladimir Volovich,
+%  Michael Vulis.
+%
+% \StopEventually{%
+% }
+% 
+% \newgeometry{hmargin={4.8cm,1.2cm}, vmargin={1cm,1cm}, includeheadfoot, marginpar=3.8cm}
+% \section{Implementierung}
+%    \begin{macrocode}
+%<*package>
+%    \end{macrocode}
+%    This package requires the following packages:
+%    \textsf{keyval}, \textsf{ifvtex}.
+%    \begin{macrocode}
+\RequirePackage{keyval}%
+\RequirePackage{ifvtex}%
+%    \end{macrocode}
+% 
+%    Internal switches are declared here.
+%    \begin{macrocode}
+\newif\ifGm at verbose
+\newif\ifGm at landscape
+\newif\ifGm at swap@papersize
+\newif\ifGm at includehead
+\newif\ifGm at includefoot
+\newif\ifGm at includemp
+\newif\ifGm at hbody
+\newif\ifGm at vbody
+\newif\ifGm at heightrounded
+\newif\ifGm at showframe
+\newif\ifGm at showcrop
+\newif\ifGm at pass
+\newif\ifGm at resetpaper
+\newif\ifGm at layout
+\newif\ifGm at newgm
+%    \end{macrocode}
+%    \begin{macro}{\Gm at cnth}
+%    \begin{macro}{\Gm at cntv}
+%    The counters for horizontal and vertical partitioning patterns.
+%    \begin{macrocode}
+\newcount\Gm at cnth
+\newcount\Gm at cntv
+%    \end{macrocode}
+%    \end{macro}\end{macro}
+%    \begin{macro}{\c at Gm@tempcnt}
+%    The counter is used to set number with \textsf{calc}.
+%    \begin{macrocode}
+\newcount\c at Gm@tempcnt
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at bindingoffset}
+%    The binding offset for the inner margin.
+%    \begin{macrocode}
+\newdimen\Gm at bindingoffset
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at wd@mp}
+%    \begin{macro}{\Gm at odd@mp}
+%    \begin{macro}{\Gm at even@mp}
+%    Correction lengths for \cs{textwidth}, \cs{oddsidemargin} and 
+%    \cs{evensidemargin} in |includemp| mode.
+%    \begin{macrocode}
+\newdimen\Gm at wd@mp
+\newdimen\Gm at odd@mp
+\newdimen\Gm at even@mp
+%    \end{macrocode}
+%    \end{macro}\end{macro}\end{macro}
+%    \begin{macro}{\Gm at layoutwidth}
+%    \begin{macro}{\Gm at layoutheight}
+%    \begin{macro}{\Gm at layouthoffset}
+%    \begin{macro}{\Gm at layoutvoffset}
+%    The dimensions for the layout area.
+%    \begin{macrocode}
+\newdimen\Gm at layoutwidth
+\newdimen\Gm at layoutheight
+\newdimen\Gm at layouthoffset
+\newdimen\Gm at layoutvoffset
+%    \end{macrocode}
+%    \end{macro}\end{macro}\end{macro}\end{macro}
+%    \begin{macro}{\Gm at dimlist}
+%    The token in which \LaTeX{} native dimensions can be stored.
+%    \begin{macrocode}
+\newtoks\Gm at dimlist
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at warning}
+%    The macro to print warning messages.
+%    \begin{macrocode}
+\def\Gm at warning#1{\PackageWarningNoLine{geometry}{#1}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\ifGm at preamble}
+%    The macro executes the option given as an argument
+%    only if it's specified in the preamble, as the options of
+%    |\usepackage| and/or the argument of |\geometry|. Otherwise,
+%    the macro would print the warning message and ignores 
+%    the option setting.
+%    \begin{macrocode}
+\def\ifGm at preamble#1{%
+  \ifGm at newgm
+   \Gm at warning{`#1': not available in `\string\newgeometry'; skipped}%
+  \else
+    \expandafter\@firstofone
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at Dhratio}
+%    \begin{macro}{\Gm at Dhratiotwo}
+%    \begin{macro}{\Gm at Dvratio}
+%    The default values for the horizontal and vertical 
+%    \textsl{marginalratio} are defined. \cs{Gm at Dhratiotwo} denotes the
+%    default value of horizontal \textsl{marginratio} for twoside
+%    page layout with left and right margins swapped on verso pages,
+%    which is set by |twoside|.
+%    \begin{macrocode}
+\def\Gm at Dhratio{1:1}% = left:right default for oneside
+\def\Gm at Dhratiotwo{2:3}% = inner:outer default for twoside.
+\def\Gm at Dvratio{2:3}% = top:bottom default
+%    \end{macrocode}
+%    \end{macro}\end{macro}\end{macro}
+%    \begin{macro}{\Gm at Dhscale}
+%    \begin{macro}{\Gm at Dvscale}
+%    The default values for the horizontal and vertical \textsl{scale}
+%    are defined with $0.7$.
+%    \begin{macrocode}
+\def\Gm at Dhscale{0.7}%
+\def\Gm at Dvscale{0.7}%
+%    \end{macrocode}
+%    \end{macro}\end{macro}
+%    \begin{macro}{\Gm at dvips}%
+%    \begin{macro}{\Gm at dvipdfm}%
+%    \begin{macro}{\Gm at pdftex}%
+%    \begin{macro}{\Gm at luatex}%
+%    \begin{macro}{\Gm at xetex}%
+%    \begin{macro}{\Gm at vtex}%
+%    The driver names.
+%    \begin{macrocode}
+\def\Gm at dvips{dvips}%
+\def\Gm at dvipdfm{dvipdfm}%
+\def\Gm at pdftex{pdftex}%
+\def\Gm at luatex{luatex}%
+\def\Gm at xetex{xetex}%
+\def\Gm at vtex{vtex}%
+%    \end{macrocode}
+%    \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
+%    \begin{macro}{\Gm at true}%
+%    \begin{macro}{\Gm at false}%
+%    The macros for |true| and |false|.
+%    \begin{macrocode}
+\def\Gm at true{true}%
+\def\Gm at false{false}%
+%    \end{macrocode}
+%    \end{macro}\end{macro}
+%    \begin{macro}{\Gm at orgpw}
+%    \begin{macro}{\Gm at orgph}
+%    These macros keep original paper (media) size intact.
+%    \begin{macrocode}
+\edef\Gm at orgpw{\the\paperwidth}%
+\edef\Gm at orgph{\the\paperheight}%
+%    \end{macrocode}
+%    \end{macro}\end{macro}
+%    \begin{macro}{\Gm at savelength}
+%    The macro saves the specified length to |\Gm at restore|.
+%    \begin{macrocode}
+\def\Gm at savelength#1{%
+  \g at addto@macro\Gm at restore{\expandafter\noexpand\expandafter\csname
+  #1\endcsname\expandafter=\expandafter\the\csname #1\endcsname\relax}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at saveboolean}
+%    The macro saves the specified boolean to |\Gm at restore|.
+%    \begin{macrocode}
+\def\Gm at saveboolean#1{%
+  \csname if#1\endcsname
+    \g at addto@macro\Gm at restore{\expandafter\noexpand\csname #1true\endcsname}%
+  \else
+    \g at addto@macro\Gm at restore{\expandafter\noexpand\csname #1false\endcsname}%
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at restore}
+%    The initialization for |\Gm at restore|.
+%    \begin{macrocode}
+\def\Gm at restore{}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at save}
+%    The definition of the macro saving the real lengths
+%    \LaTeX\ options.
+%    \begin{macrocode}
+\def\Gm at save{%
+  \Gm at savelength{paperwidth}%
+  \Gm at savelength{paperheight}%
+  \Gm at savelength{textwidth}%
+  \Gm at savelength{textheight}%
+  \Gm at savelength{evensidemargin}%
+  \Gm at savelength{oddsidemargin}%
+  \Gm at savelength{topmargin}%
+  \Gm at savelength{headheight}%
+  \Gm at savelength{headsep}%
+  \Gm at savelength{topskip}%
+  \Gm at savelength{footskip}%
+  \Gm at savelength{baselineskip}%
+  \Gm at savelength{marginparwidth}%
+  \Gm at savelength{marginparsep}%
+  \Gm at savelength{columnsep}%
+  \Gm at savelength{hoffset}%
+  \Gm at savelength{voffset}
+  \Gm at savelength{Gm at layoutwidth}%
+  \Gm at savelength{Gm at layoutheight}%
+  \Gm at savelength{Gm at layouthoffset}%
+  \Gm at savelength{Gm at layoutvoffset}%
+  \Gm at saveboolean{@twocolumn}%
+  \Gm at saveboolean{@twoside}%
+  \Gm at saveboolean{@mparswitch}%
+  \Gm at saveboolean{@reversemargin}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at initnewgm}
+%    The macro initializes the parameters for layout
+%    in |\newgeometry|.
+%    \begin{macrocode}
+\def\Gm at initnewgm{%
+  \Gm at passfalse
+  \Gm at swap@papersizefalse
+  \Gm at dimlist={}
+  \Gm at hbodyfalse
+  \Gm at vbodyfalse
+  \Gm at heightroundedfalse
+  \Gm at includeheadfalse
+  \Gm at includefootfalse
+  \Gm at includempfalse
+  \let\Gm at width\@undefined
+  \let\Gm at height\@undefined
+  \let\Gm at textwidth\@undefined
+  \let\Gm at textheight\@undefined
+  \let\Gm at lines\@undefined
+  \let\Gm at hscale\@undefined
+  \let\Gm at vscale\@undefined
+  \let\Gm at hmarginratio\@undefined
+  \let\Gm at vmarginratio\@undefined
+  \let\Gm at lmargin\@undefined
+  \let\Gm at rmargin\@undefined
+  \let\Gm at tmargin\@undefined
+  \let\Gm at bmargin\@undefined
+  \Gm at layoutfalse
+  \Gm at layouthoffset\z@
+  \Gm at layoutvoffset\z@
+  \Gm at bindingoffset\z@}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at initall}
+%    This initialization is called as soon as the package is load
+%    It's also called as soon as |reset| option is specified.
+%    \begin{macrocode}
+\def\Gm at initall{%
+  \let\Gm at driver\@empty
+  \let\Gm at truedimen\@empty
+  \let\Gm at paper\@undefined
+  \Gm at resetpaperfalse
+  \Gm at landscapefalse
+  \Gm at verbosefalse
+  \Gm at showframefalse
+  \Gm at showcropfalse
+  \Gm at newgmfalse
+  \Gm at initnewgm}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at setdriver}
+%    The macro sets the specified driver.
+%    \begin{macrocode}
+\def\Gm at setdriver#1{%
+  \expandafter\let\expandafter\Gm at driver\csname Gm@#1\endcsname}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at unsetdriver}
+%    The macro unsets the specified driver if it has been set.
+%    \begin{macrocode}
+\def\Gm at unsetdriver#1{%
+  \expandafter\ifx\csname Gm@#1\endcsname\Gm at driver\let\Gm at driver\@empty\fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at setbool}
+%    \begin{macro}{\Gm at setboolrev}
+%    The macros for boolean option processing.
+%    \begin{macrocode}
+\def\Gm at setbool{\@dblarg\Gm@@setbool}%
+\def\Gm at setboolrev{\@dblarg\Gm@@setboolrev}%
+\def\Gm@@setbool[#1]#2#3{\Gm at doif{#1}{#3}{\csname Gm@#2\Gm at bool\endcsname}}%
+\def\Gm@@setboolrev[#1]#2#3{\Gm at doifelse{#1}{#3}%
+  {\csname Gm@#2\Gm at false\endcsname}{\csname Gm@#2\Gm at true\endcsname}}%
+%    \end{macrocode}
+%    \end{macro}\end{macro}
+%    \begin{macro}{\Gm at doif}
+%    \begin{macro}{\Gm at doifelse}
+%    \cs{Gm at doif} excutes the third argument |#3| using a boolean value
+%    |#2| of a option |#1|. \cs{Gm at doifelse} executes the third
+%    argument |#3| if a boolean option |#1| with its value |#2| |true|,
+%    and executes the fourth argument |#4| if |false|.
+%    \begin{macrocode}
+\def\Gm at doif#1#2#3{%
+  \lowercase{\def\Gm at bool{#2}}%
+  \ifx\Gm at bool\@empty
+    \let\Gm at bool\Gm at true
+  \fi
+  \ifx\Gm at bool\Gm at true
+  \else
+    \ifx\Gm at bool\Gm at false
+    \else
+      \let\Gm at bool\relax
+    \fi
+  \fi
+  \ifx\Gm at bool\relax
+    \Gm at warning{`#1' should be set to `true' or `false'}%
+  \else
+    #3
+  \fi}%
+\def\Gm at doifelse#1#2#3#4{%
+  \Gm at doif{#1}{#2}{\ifx\Gm at bool\Gm at true #3\else #4\fi}}%
+%    \end{macrocode}
+%    \end{macro}\end{macro}
+%    \begin{macro}{\Gm at reverse}
+%    The macro reverses a bool value.
+%    \begin{macrocode}
+\def\Gm at reverse#1{%
+  \csname ifGm@#1\endcsname
+  \csname Gm@#1false\endcsname\else\csname Gm@#1true\endcsname\fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at defbylen}
+%    \begin{macro}{\Gm at defbycnt}
+%    Macros \cs{Gm at defbylen} and \cs{Gm at defbycnt} can be used to define
+%    \cs{Gm at xxxx} variables by length and counter respectively
+%    with \textsf{calc} package.
+%    \begin{macrocode}
+\def\Gm at defbylen#1#2{%
+  \begingroup\setlength\@tempdima{#2}%
+  \expandafter\xdef\csname Gm@#1\endcsname{\the\@tempdima}\endgroup}%
+\def\Gm at defbycnt#1#2{%
+  \begingroup\setcounter{Gm at tempcnt}{#2}%
+  \expandafter\xdef\csname Gm@#1\endcsname{\the\value{Gm at tempcnt}}\endgroup}%
+%    \end{macrocode}
+%    \end{macro}\end{macro}
+%    \begin{macro}{\Gm at set@ratio}
+%    The macro parses the value of options specifying marginal ratios,
+%    which is used in \cs{Gm at setbyratio} macro.
+%    \begin{macrocode}
+\def\Gm at sep@ratio#1:#2{\@tempcnta=#1\@tempcntb=#2}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at setbyratio}
+%    The macro determines the dimension specified by |#4| calculating
+%    |#3|$\times a / b$, where $a$ and $b$ are given by \cs{Gm at mratio}
+%    with $a:b$ value. If |#1| in brackets is |b|, $a$ and $b$ are swapped.
+%    The second argument with |h| or |v| denoting horizontal or vertical
+%    is not used in this macro.
+%    \begin{macrocode}
+\def\Gm at setbyratio[#1]#2#3#4{% determine #4 by ratio
+  \expandafter\Gm at sep@ratio\Gm at mratio\relax
+  \if#1b
+    \edef\@@tempa{\the\@tempcnta}%
+    \@tempcnta=\@tempcntb
+    \@tempcntb=\@@tempa\relax
+  \fi
+  \expandafter\setlength\expandafter\@tempdimb\expandafter
+    {\csname Gm@#3\endcsname}%
+  \ifnum\@tempcntb>\z@
+    \multiply\@tempdimb\@tempcnta
+    \divide\@tempdimb\@tempcntb
+  \fi
+  \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimb}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at detiv}
+%    This macro determines the fourth length(|#4|) from |#1|(\glen{layoutwidth}
+%    or \glen{layoutheight}), |#2| and |#3|. It is used in
+%    \cs{Gm at detall} macro.
+%    \begin{macrocode}
+\def\Gm at detiv#1#2#3#4{% determine #4.
+  \expandafter\setlength\expandafter\@tempdima\expandafter
+    {\csname Gm at layout#1\endcsname}%
+  \expandafter\setlength\expandafter\@tempdimb\expandafter
+    {\csname Gm@#2\endcsname}%
+  \addtolength\@tempdima{-\@tempdimb}%
+  \expandafter\setlength\expandafter\@tempdimb\expandafter
+    {\csname Gm@#3\endcsname}%
+  \addtolength\@tempdima{-\@tempdimb}%
+  \ifdim\@tempdima<\z@
+    \Gm at warning{`#4' results in NEGATIVE (\the\@tempdima).%
+    ^^J\@spaces `#2' or `#3' should be shortened in length}%
+  \fi
+  \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdima}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at detiiandiii}
+%    This macro determines |#2| and |#3| from |#1| with the first argument
+%    (|#1|) can be |width| or |height|, which is expanded into dimensions
+%    of paper and total body. It is used in \cs{Gm at detall} macro.
+%    \begin{macrocode}
+\def\Gm at detiiandiii#1#2#3{% determine #2 and #3.
+  \expandafter\setlength\expandafter\@tempdima\expandafter
+    {\csname Gm at layout#1\endcsname}%
+  \expandafter\setlength\expandafter\@tempdimb\expandafter
+    {\csname Gm@#1\endcsname}%
+  \addtolength\@tempdima{-\@tempdimb}%
+  \ifdim\@tempdima<\z@
+    \Gm at warning{`#2' and `#3' result in NEGATIVE (\the\@tempdima).%
+                  ^^J\@spaces `#1' should be shortened in length}%
+  \fi
+  \ifx\Gm at mratio\@undefined
+    \expandafter\Gm at sep@ratio\Gm at Dmratio\relax
+  \else
+    \expandafter\Gm at sep@ratio\Gm at mratio\relax
+    \ifnum\@tempcntb>\z@\else
+      \Gm at warning{margin ratio a:b should be non-zero; default used}%
+      \expandafter\Gm at sep@ratio\Gm at Dmratio\relax
+    \fi
+  \fi 
+  \@tempdimb=\@tempdima
+  \advance\@tempcntb\@tempcnta
+  \divide\@tempdima\@tempcntb
+  \multiply\@tempdima\@tempcnta
+  \advance\@tempdimb-\@tempdima
+  \expandafter\edef\csname Gm@#2\endcsname{\the\@tempdima}%
+  \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimb}}%
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\Gm at detall} 
+%    This macro determines partition of each direction.
+%    The first argument (|#1|) should be |h| or |v|, the second (|#2|)
+%    |width| or |height|, the third (|#3|) |lmargin| or |top|, and 
+%    the last (|#4|) |rmargin| or |bottom|.
+%    \begin{macrocode}
+\def\Gm at detall#1#2#3#4{%
+  \@tempcnta\z@
+  \if#1h
+    \let\Gm at mratio\Gm at hmarginratio
+    \edef\Gm at Dmratio{\if at twoside\Gm at Dhratiotwo\else\Gm at Dhratio\fi}%
+  \else
+    \let\Gm at mratio\Gm at vmarginratio
+    \edef\Gm at Dmratio{\Gm at Dvratio}%
+  \fi
+%    \end{macrocode}
+%    \cs{@tempcnta} is treated as a three-digit binary value with
+%    top, middle and bottom denoted |left|(|top|), |width|(|height|)
+%    and |right|(|bottom|) margins user specified respectively.
+%    \begin{macrocode}
+  \if#1h
+    \ifx\Gm at lmargin\@undefined\else\advance\@tempcnta4\relax\fi
+    \ifGm at hbody\advance\@tempcnta2\relax\fi
+    \ifx\Gm at rmargin\@undefined\else\advance\@tempcnta1\relax\fi
+    \Gm at cnth\@tempcnta
+  \else
+    \ifx\Gm at tmargin\@undefined\else\advance\@tempcnta4\relax\fi
+    \ifGm at vbody\advance\@tempcnta2\relax\fi
+    \ifx\Gm at bmargin\@undefined\else\advance\@tempcnta1\relax\fi
+    \Gm at cntv\@tempcnta
+  \fi
+%    \end{macrocode}
+%    Case the value is |000| (=0) with nothing fixed (default):
+%    \begin{macrocode}
+  \ifcase\@tempcnta
+    \if#1h
+      \Gm at defbylen{width}{\Gm at Dhscale\Gm at layoutwidth}%
+    \else
+      \Gm at defbylen{height}{\Gm at Dvscale\Gm at layoutheight}%
+    \fi
+    \Gm at detiiandiii{#2}{#3}{#4}%
+%    \end{macrocode}
+%    Case |001| (=1) with |right|(|bottom|) fixed:
+%    \begin{macrocode}
+  \or
+    \ifx\Gm at mratio\@undefined
+      \if#1h
+        \Gm at defbylen{width}{\Gm at Dhscale\Gm at layoutwidth}%
+      \else
+        \Gm at defbylen{height}{\Gm at Dvscale\Gm at layoutheight}%
+      \fi
+      \setlength\@tempdimc{\@nameuse{Gm@#4}}%
+      \Gm at detiiandiii{#2}{#3}{#4}%
+      \expandafter\let\csname Gm@#2\endcsname\@undefined
+      \Gm at defbylen{#4}{\@tempdimc}%
+    \else
+      \Gm at setbyratio[f]{#1}{#4}{#3}%
+    \fi
+    \Gm at detiv{#2}{#3}{#4}{#2}%
+%    \end{macrocode}
+%    Case |010| (=2) with |width|(|height|) fixed:
+%    \begin{macrocode}
+  \or\Gm at detiiandiii{#2}{#3}{#4}%
+%    \end{macrocode}
+%    Case |011| (=3) with both |width|(|height|) and |right|(|bottom|) fixed:
+%    \begin{macrocode}
+  \or\Gm at detiv{#2}{#2}{#4}{#3}%
+%    \end{macrocode}
+%    Case |100| (=4) with |left|(|top|) fixed:
+%    \begin{macrocode}
+  \or
+    \ifx\Gm at mratio\@undefined
+      \if#1h
+        \Gm at defbylen{width}{\Gm at Dhscale\Gm at layoutwidth}%
+      \else
+        \Gm at defbylen{height}{\Gm at Dvscale\Gm at layoutheight}%
+      \fi
+      \setlength\@tempdimc{\@nameuse{Gm@#3}}%
+      \Gm at detiiandiii{#2}{#4}{#3}%
+      \expandafter\let\csname Gm@#2\endcsname\@undefined
+      \Gm at defbylen{#3}{\@tempdimc}%
+    \else
+      \Gm at setbyratio[b]{#1}{#3}{#4}%
+    \fi
+    \Gm at detiv{#2}{#3}{#4}{#2}%
+%    \end{macrocode}
+%    Case |101| (=5) with both |left|(|top|) and |right|(|bottom|) fixed:
+%    \begin{macrocode}
+  \or\Gm at detiv{#2}{#3}{#4}{#2}%
+%    \end{macrocode}
+%    Case |110| (=6) with both |left|(|top|) and |width|(|height|) fixed:
+%    \begin{macrocode}
+  \or\Gm at detiv{#2}{#2}{#3}{#4}%
+%    \end{macrocode}
+%    Case |111| (=7) with all fixed though it is over-specified:
+%    \begin{macrocode}
+  \or\Gm at warning{Over-specification in `#1'-direction.%
+                  ^^J\@spaces `#2' (\@nameuse{Gm@#2}) is ignored}%
+    \Gm at detiv{#2}{#3}{#4}{#2}%
+  \else\fi}%
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\Gm at clean}
+%    The macro for setting unspecified dimensions to be \cs{@undefined}.
+%    This is used by \cs{geometry} macro.
+%    \begin{macrocode}
+\def\Gm at clean{%
+  \ifnum\Gm at cnth<4\let\Gm at lmargin\@undefined\fi
+  \ifodd\Gm at cnth\else\let\Gm at rmargin\@undefined\fi
+  \ifnum\Gm at cntv<4\let\Gm at tmargin\@undefined\fi
+  \ifodd\Gm at cntv\else\let\Gm at bmargin\@undefined\fi
+  \ifGm at hbody\else
+    \let\Gm at hscale\@undefined
+    \let\Gm at width\@undefined
+    \let\Gm at textwidth\@undefined
+  \fi
+  \ifGm at vbody\else
+    \let\Gm at vscale\@undefined
+    \let\Gm at height\@undefined
+    \let\Gm at textheight\@undefined
+  \fi
+  }%
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\Gm at parse@divide}
+%    The macro parses (|h|,|v|)|divide| options.
+%    \begin{macrocode}
+\def\Gm at parse@divide#1#2#3#4{%
+  \def\Gm at star{*}%
+  \@tempcnta\z@
+  \@for\Gm at tmp:=#1\do{%
+    \expandafter\KV@@sp at def\expandafter\Gm at frag\expandafter{\Gm at tmp}%
+    \edef\Gm at value{\Gm at frag}%
+    \ifcase\@tempcnta\relax\edef\Gm at key{#2}%
+      \or\edef\Gm at key{#3}%
+      \else\edef\Gm at key{#4}%
+    \fi
+    \@nameuse{Gm at set\Gm at key false}%
+    \ifx\empty\Gm at value\else
+    \ifx\Gm at star\Gm at value\else
+      \setkeys{Gm}{\Gm at key=\Gm at value}%
+    \fi\fi
+    \advance\@tempcnta\@ne}%
+  \let\Gm at star\relax}%
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\Gm at branch}
+%    The macro splits a value into the same two values.
+%    \begin{macrocode}
+\def\Gm at branch#1#2#3{%
+  \@tempcnta\z@
+  \@for\Gm at tmp:=#1\do{%
+    \KV@@sp at def\Gm at frag{\Gm at tmp}%
+    \edef\Gm at value{\Gm at frag}%
+    \ifcase\@tempcnta\relax% cnta == 0
+      \setkeys{Gm}{#2=\Gm at value}%
+    \or% cnta == 1
+      \setkeys{Gm}{#3=\Gm at value}%
+    \else\fi
+    \advance\@tempcnta\@ne}%
+  \ifnum\@tempcnta=\@ne
+    \setkeys{Gm}{#3=\Gm at value}%
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\Gm at magtooffset}
+%    This macro is used to adjust offsets by \cs{mag}.
+%    \begin{macrocode}
+\def\Gm at magtooffset{%
+  \@tempdima=\mag\Gm at truedimen sp%
+  \@tempdimb=1\Gm at truedimen in%
+  \divide\@tempdimb\@tempdima
+  \multiply\@tempdimb\@m
+  \addtolength{\hoffset}{1\Gm at truedimen in}%
+  \addtolength{\voffset}{1\Gm at truedimen in}%
+  \addtolength{\hoffset}{-\the\@tempdimb}%
+  \addtolength{\voffset}{-\the\@tempdimb}}%
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\Gm at setlength}
+%    This macro stores \LaTeX{} native dimensions, which are stored and 
+%    set afterwards.
+%    \begin{macrocode}
+\def\Gm at setlength#1#2{%
+  \let\Gm at len=\relax\let\Gm at td=\relax
+  \edef\addtolist{\noexpand\Gm at dimlist=%
+  {\the\Gm at dimlist \Gm at len{#1}{#2}}}\addtolist}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at expandlengths}
+%    This macro processes \cs{Gm at dimlist}.
+%    \begin{macrocode}
+\def\Gm at expandlengths{%
+  \def\Gm at td{\Gm at truedimen}%
+  \def\Gm at len##1##2{\setlength{##1}{##2}}%
+  \the\Gm at dimlist}%
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\Gm at setsize}
+%    The macro sets |paperwidth| and |paperheight| dimensions
+%    using \cs{Gm at setlength} macro.
+%    \begin{macrocode}
+\def\Gm at setsize#1(#2,#3)#4{%
+  \let\Gm at td\relax
+  \expandafter\Gm at setlength\csname #1width\endcsname{#2\Gm at td #4}%
+  \expandafter\Gm at setlength\csname #1height\endcsname{#3\Gm at td #4}%
+  \ifGm at landscape\Gm at swap@papersizetrue\else\Gm at swap@papersizefalse\fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at setpaper@ifpre}
+%    The macro changes the paper size.
+%    \begin{macrocode}
+\def\Gm at setpaper@ifpre#1{%
+  \ifGm at preamble{#1}{\def\Gm at paper{#1}\@nameuse{Gm@#1}{paper}}}%
+%    \end{macrocode}
+%    \end{macro}
+%    Various paper size are defined here.
+%    \begin{macrocode}
+\@namedef{Gm at a0paper}#1{\Gm at setsize{#1}(841,1189){mm}}% ISO A0
+\@namedef{Gm at a1paper}#1{\Gm at setsize{#1}(594,841){mm}}% ISO A1
+\@namedef{Gm at a2paper}#1{\Gm at setsize{#1}(420,594){mm}}% ISO A2
+\@namedef{Gm at a3paper}#1{\Gm at setsize{#1}(297,420){mm}}% ISO A3
+\@namedef{Gm at a4paper}#1{\Gm at setsize{#1}(210,297){mm}}% ISO A4
+\@namedef{Gm at a5paper}#1{\Gm at setsize{#1}(148,210){mm}}% ISO A5
+\@namedef{Gm at a6paper}#1{\Gm at setsize{#1}(105,148){mm}}% ISO A6
+\@namedef{Gm at b0paper}#1{\Gm at setsize{#1}(1000,1414){mm}}% ISO B0
+\@namedef{Gm at b1paper}#1{\Gm at setsize{#1}(707,1000){mm}}% ISO B1
+\@namedef{Gm at b2paper}#1{\Gm at setsize{#1}(500,707){mm}}% ISO B2
+\@namedef{Gm at b3paper}#1{\Gm at setsize{#1}(353,500){mm}}% ISO B3
+\@namedef{Gm at b4paper}#1{\Gm at setsize{#1}(250,353){mm}}% ISO B4
+\@namedef{Gm at b5paper}#1{\Gm at setsize{#1}(176,250){mm}}% ISO B5
+\@namedef{Gm at b6paper}#1{\Gm at setsize{#1}(125,176){mm}}% ISO B6
+\@namedef{Gm at c0paper}#1{\Gm at setsize{#1}(917,1297){mm}}% ISO C0
+\@namedef{Gm at c1paper}#1{\Gm at setsize{#1}(648,917){mm}}% ISO C1
+\@namedef{Gm at c2paper}#1{\Gm at setsize{#1}(458,648){mm}}% ISO C2
+\@namedef{Gm at c3paper}#1{\Gm at setsize{#1}(324,458){mm}}% ISO C3
+\@namedef{Gm at c4paper}#1{\Gm at setsize{#1}(229,324){mm}}% ISO C4
+\@namedef{Gm at c5paper}#1{\Gm at setsize{#1}(162,229){mm}}% ISO C5
+\@namedef{Gm at c6paper}#1{\Gm at setsize{#1}(114,162){mm}}% ISO C6
+\@namedef{Gm at b0j}#1{\Gm at setsize{#1}(1030,1456){mm}}% JIS B0
+\@namedef{Gm at b1j}#1{\Gm at setsize{#1}(728,1030){mm}}% JIS B1
+\@namedef{Gm at b2j}#1{\Gm at setsize{#1}(515,728){mm}}% JIS B2
+\@namedef{Gm at b3j}#1{\Gm at setsize{#1}(364,515){mm}}% JIS B3
+\@namedef{Gm at b4j}#1{\Gm at setsize{#1}(257,364){mm}}% JIS B4
+\@namedef{Gm at b5j}#1{\Gm at setsize{#1}(182,257){mm}}% JIS B5
+\@namedef{Gm at b6j}#1{\Gm at setsize{#1}(128,182){mm}}% JIS B6
+\@namedef{Gm at ansiapaper}#1{\Gm at setsize{#1}(8.5,11){in}}%
+\@namedef{Gm at ansibpaper}#1{\Gm at setsize{#1}(11,17){in}}%
+\@namedef{Gm at ansicpaper}#1{\Gm at setsize{#1}(17,22){in}}%
+\@namedef{Gm at ansidpaper}#1{\Gm at setsize{#1}(22,34){in}}%
+\@namedef{Gm at ansiepaper}#1{\Gm at setsize{#1}(34,44){in}}%
+\@namedef{Gm at letterpaper}#1{\Gm at setsize{#1}(8.5,11){in}}%
+\@namedef{Gm at legalpaper}#1{\Gm at setsize{#1}(8.5,14){in}}%
+\@namedef{Gm at executivepaper}#1{\Gm at setsize{#1}(7.25,10.5){in}}%
+\@namedef{Gm at screen}#1{\Gm at setsize{#1}(225,180){mm}}%
+%    \end{macrocode}
+%
+%  \begin{key}{Gm}{paper}
+%    |paper| takes a paper name as its value.
+%    \begin{macrocode}
+\define at key{Gm}{paper}{\setkeys{Gm}{#1}}%
+\let\KV at Gm@papername\KV at Gm@paper
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{a[0-6]paper}
+%  \begin{key}{Gm}{b[0-6]paper}
+%  \begin{key}{Gm}{b[0-6]j}
+%  \begin{key}{Gm}{ansi[a-e]paper}
+%  \begin{key}{Gm}{letterpaper}
+%  \begin{key}{Gm}{legalpaper}
+%  \begin{key}{Gm}{executivepaper}
+%  \begin{key}{Gm}{screen}
+%    The following paper names are available.
+%    \begin{macrocode}
+\define at key{Gm}{a0paper}[true]{\Gm at setpaper@ifpre{a0paper}}%
+\define at key{Gm}{a1paper}[true]{\Gm at setpaper@ifpre{a1paper}}%
+\define at key{Gm}{a2paper}[true]{\Gm at setpaper@ifpre{a2paper}}%
+\define at key{Gm}{a3paper}[true]{\Gm at setpaper@ifpre{a3paper}}%
+\define at key{Gm}{a4paper}[true]{\Gm at setpaper@ifpre{a4paper}}%
+\define at key{Gm}{a5paper}[true]{\Gm at setpaper@ifpre{a5paper}}%
+\define at key{Gm}{a6paper}[true]{\Gm at setpaper@ifpre{a6paper}}%
+\define at key{Gm}{b0paper}[true]{\Gm at setpaper@ifpre{b0paper}}%
+\define at key{Gm}{b1paper}[true]{\Gm at setpaper@ifpre{b1paper}}%
+\define at key{Gm}{b2paper}[true]{\Gm at setpaper@ifpre{b2paper}}%
+\define at key{Gm}{b3paper}[true]{\Gm at setpaper@ifpre{b3paper}}%
+\define at key{Gm}{b4paper}[true]{\Gm at setpaper@ifpre{b4paper}}%
+\define at key{Gm}{b5paper}[true]{\Gm at setpaper@ifpre{b5paper}}%
+\define at key{Gm}{b6paper}[true]{\Gm at setpaper@ifpre{b6paper}}%
+\define at key{Gm}{c0paper}[true]{\Gm at setpaper@ifpre{c0paper}}%
+\define at key{Gm}{c1paper}[true]{\Gm at setpaper@ifpre{c1paper}}%
+\define at key{Gm}{c2paper}[true]{\Gm at setpaper@ifpre{c2paper}}%
+\define at key{Gm}{c3paper}[true]{\Gm at setpaper@ifpre{c3paper}}%
+\define at key{Gm}{c4paper}[true]{\Gm at setpaper@ifpre{c4paper}}%
+\define at key{Gm}{c5paper}[true]{\Gm at setpaper@ifpre{c5paper}}%
+\define at key{Gm}{c6paper}[true]{\Gm at setpaper@ifpre{c6paper}}%
+\define at key{Gm}{b0j}[true]{\Gm at setpaper@ifpre{b0j}}%
+\define at key{Gm}{b1j}[true]{\Gm at setpaper@ifpre{b1j}}%
+\define at key{Gm}{b2j}[true]{\Gm at setpaper@ifpre{b2j}}%
+\define at key{Gm}{b3j}[true]{\Gm at setpaper@ifpre{b3j}}%
+\define at key{Gm}{b4j}[true]{\Gm at setpaper@ifpre{b4j}}%
+\define at key{Gm}{b5j}[true]{\Gm at setpaper@ifpre{b5j}}%
+\define at key{Gm}{b6j}[true]{\Gm at setpaper@ifpre{b6j}}%
+\define at key{Gm}{ansiapaper}[true]{\Gm at setpaper@ifpre{ansiapaper}}%
+\define at key{Gm}{ansibpaper}[true]{\Gm at setpaper@ifpre{ansibpaper}}%
+\define at key{Gm}{ansicpaper}[true]{\Gm at setpaper@ifpre{ansicpaper}}%
+\define at key{Gm}{ansidpaper}[true]{\Gm at setpaper@ifpre{ansidpaper}}%
+\define at key{Gm}{ansiepaper}[true]{\Gm at setpaper@ifpre{ansiepaper}}%
+\define at key{Gm}{letterpaper}[true]{\Gm at setpaper@ifpre{letterpaper}}%
+\define at key{Gm}{legalpaper}[true]{\Gm at setpaper@ifpre{legalpaper}}%
+\define at key{Gm}{executivepaper}[true]{\Gm at setpaper@ifpre{executivepaper}}%
+\define at key{Gm}{screen}[true]{\Gm at setpaper@ifpre{screen}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}\end{key}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{paperwidth}
+%  \begin{key}{Gm}{paperheight}
+%  \begin{key}{Gm}{papersize}
+%    Direct specification for paper size is also possible.
+%    \begin{macrocode}
+\define at key{Gm}{paperwidth}{\ifGm at preamble{paperwidth}{%
+  \def\Gm at paper{custom}\Gm at setlength\paperwidth{#1}}}%
+\define at key{Gm}{paperheight}{\ifGm at preamble{paperheight}{%
+  \def\Gm at paper{custom}\Gm at setlength\paperheight{#1}}}%
+\define at key{Gm}{papersize}{\ifGm at preamble{papersize}{%
+  \def\Gm at paper{custom}\Gm at branch{#1}{paperwidth}{paperheight}}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{layout}
+%  \begin{key}{Gm}{layoutwidth}
+%  \begin{key}{Gm}{layoutheight}
+%  \begin{key}{Gm}{layoutsize}
+%    Direct specification for layout size is also possible.
+%    \begin{macrocode}
+\define at key{Gm}{layout}{\Gm at layouttrue\@nameuse{Gm@#1}{Gm at layout}}%
+\let\KV at Gm@layoutname\KV at Gm@layout
+\define at key{Gm}{layoutwidth}{\Gm at layouttrue\Gm at setlength\Gm at layoutwidth{#1}}%
+\define at key{Gm}{layoutheight}{\Gm at layouttrue\Gm at setlength\Gm at layoutheight{#1}}%
+\define at key{Gm}{layoutsize}{\Gm at branch{#1}{layoutwidth}{layoutheight}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{landscape}
+%  \begin{key}{Gm}{portrait}
+%    Paper orientation setting.
+%    \begin{macrocode}
+\define at key{Gm}{landscape}[true]{\ifGm at preamble{landscape}{%
+  \Gm at doifelse{landscape}{#1}%
+  {\ifGm at landscape\else\Gm at landscapetrue\Gm at reverse{swap at papersize}\fi}%
+  {\ifGm at landscape\Gm at landscapefalse\Gm at reverse{swap at papersize}\fi}}}%
+\define at key{Gm}{portrait}[true]{\ifGm at preamble{portrait}{%
+  \Gm at doifelse{portrait}{#1}%
+  {\ifGm at landscape\Gm at landscapefalse\Gm at reverse{swap at papersize}\fi}%
+  {\ifGm at landscape\else\Gm at landscapetrue\Gm at reverse{swap at papersize}\fi}}}%
+%    \end{macrocode}
+%  \end{key}\end{key}
+%  \begin{key}{Gm}{hscale}
+%  \begin{key}{Gm}{vscale}
+%  \begin{key}{Gm}{scale}
+%    These options can determine the length(s) of \gpart{total body}
+%    giving \textit{scale(s)} against the paper size.
+%    \begin{macrocode}
+\define at key{Gm}{hscale}{\Gm at hbodytrue\edef\Gm at hscale{#1}}%
+\define at key{Gm}{vscale}{\Gm at vbodytrue\edef\Gm at vscale{#1}}%
+\define at key{Gm}{scale}{\Gm at branch{#1}{hscale}{vscale}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{width}
+%  \begin{key}{Gm}{height}
+%  \begin{key}{Gm}{total}
+%  \begin{key}{Gm}{totalwidth}
+%  \begin{key}{Gm}{totalheight}
+%    These options give concrete dimension(s) of \gpart{total body}.
+%    |totalwidth| and |totalheight| are aliases of |width| and |height|
+%    respectively.
+%    \begin{macrocode}
+\define at key{Gm}{width}{\Gm at hbodytrue\Gm at defbylen{width}{#1}}%
+\define at key{Gm}{height}{\Gm at vbodytrue\Gm at defbylen{height}{#1}}%
+\define at key{Gm}{total}{\Gm at branch{#1}{width}{height}}%
+\let\KV at Gm@totalwidth\KV at Gm@width
+\let\KV at Gm@totalheight\KV at Gm@height
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{textwidth}
+%  \begin{key}{Gm}{textheight}
+%  \begin{key}{Gm}{text}
+%  \begin{key}{Gm}{body}
+%    These options directly sets the dimensions \cs{textwidth} and
+%    \cs{textheight}. |body| is an alias of |text|.
+%    \begin{macrocode}
+\define at key{Gm}{textwidth}{\Gm at hbodytrue\Gm at defbylen{textwidth}{#1}}%
+\define at key{Gm}{textheight}{\Gm at vbodytrue\Gm at defbylen{textheight}{#1}}%
+\define at key{Gm}{text}{\Gm at branch{#1}{textwidth}{textheight}}%
+\let\KV at Gm@body\KV at Gm@text
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{lines}
+%    The option sets \cs{textheight} with the number of lines.
+%    \begin{macrocode}
+\define at key{Gm}{lines}{\Gm at vbodytrue\Gm at defbycnt{lines}{#1}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{includehead}
+%  \begin{key}{Gm}{includefoot}
+%  \begin{key}{Gm}{includeheadfoot}
+%  \begin{key}{Gm}{includemp}
+%  \begin{key}{Gm}{includeall}
+%    The options take the corresponding dimensions as part of
+%    \gpart{body}.
+%    \begin{macrocode}
+\define at key{Gm}{includehead}[true]{\Gm at setbool{includehead}{#1}}%
+\define at key{Gm}{includefoot}[true]{\Gm at setbool{includefoot}{#1}}%
+\define at key{Gm}{includeheadfoot}[true]{\Gm at doifelse{includeheadfoot}{#1}%
+  {\Gm at includeheadtrue\Gm at includefoottrue}%
+  {\Gm at includeheadfalse\Gm at includefootfalse}}%
+\define at key{Gm}{includemp}[true]{\Gm at setbool{includemp}{#1}}%
+\define at key{Gm}{includeall}[true]{\Gm at doifelse{includeall}{#1}%
+  {\Gm at includeheadtrue\Gm at includefoottrue\Gm at includemptrue}%
+  {\Gm at includeheadfalse\Gm at includefootfalse\Gm at includempfalse}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{ignorehead}
+%  \begin{key}{Gm}{ignorefoot}
+%  \begin{key}{Gm}{ignoreheadfoot}
+%  \begin{key}{Gm}{ignoremp}
+%  \begin{key}{Gm}{ignoreall}
+%  These options exclude \gpart{head}, \gpart{foot}
+%  and \gpart{marginpars} when determining \gpart{body}.
+%    \begin{macrocode}
+\define at key{Gm}{ignorehead}[true]{%
+  \Gm at setboolrev[ignorehead]{includehead}{#1}}%
+\define at key{Gm}{ignorefoot}[true]{%
+  \Gm at setboolrev[ignorefoot]{includefoot}{#1}}%
+\define at key{Gm}{ignoreheadfoot}[true]{\Gm at doifelse{ignoreheadfoot}{#1}%
+  {\Gm at includeheadfalse\Gm at includefootfalse}%
+  {\Gm at includeheadtrue\Gm at includefoottrue}}%
+\define at key{Gm}{ignoremp}[true]{%
+  \Gm at setboolrev[ignoremp]{includemp}{#1}}%
+\define at key{Gm}{ignoreall}[true]{\Gm at doifelse{ignoreall}{#1}%
+  {\Gm at includeheadfalse\Gm at includefootfalse\Gm at includempfalse}%
+  {\Gm at includeheadtrue\Gm at includefoottrue\Gm at includemptrue}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{heightrounded}
+%    The option rounds \cs{textheight} to n-times of \cs{baselineskip}
+%    plus \cs{topskip}.
+%    \begin{macrocode}
+\define at key{Gm}{heightrounded}[true]{\Gm at setbool{heightrounded}{#1}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{hdivide}
+%  \begin{key}{Gm}{vdivide}
+%  \begin{key}{Gm}{divide}
+%    The options are useful to specify partitioning
+%    in each direction of the paper.
+%    \begin{macrocode}
+\define at key{Gm}{hdivide}{\Gm at parse@divide{#1}{lmargin}{width}{rmargin}}%
+\define at key{Gm}{vdivide}{\Gm at parse@divide{#1}{tmargin}{height}{bmargin}}%
+\define at key{Gm}{divide}{\Gm at parse@divide{#1}{lmargin}{width}{rmargin}%
+  \Gm at parse@divide{#1}{tmargin}{height}{bmargin}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%
+%  \begin{key}{Gm}{lmargin}
+%  \begin{key}{Gm}{rmargin}
+%  \begin{key}{Gm}{tmargin}
+%  \begin{key}{Gm}{bmargin}
+%  \begin{key}{Gm}{left}
+%  \begin{key}{Gm}{inner}
+%  \begin{key}{Gm}{innermargin}
+%  \begin{key}{Gm}{right}
+%  \begin{key}{Gm}{outer}
+%  \begin{key}{Gm}{outermargin}
+%  \begin{key}{Gm}{top}
+%  \begin{key}{Gm}{bottom}
+%    These options set \gpart{margins}.
+%    |left|, |inner|, |innermargin| are aliases of |lmargin|.
+%    |right|, |outer|, |outermargin| are aliases of |rmargin|.
+%    |top| and |bottom| are aliases of |tmargin| and |bmargin| respectively.
+%    \begin{macrocode}
+\define at key{Gm}{lmargin}{\Gm at defbylen{lmargin}{#1}}%
+\define at key{Gm}{rmargin}{\Gm at defbylen{rmargin}{#1}}%
+\let\KV at Gm@left\KV at Gm@lmargin
+\let\KV at Gm@inner\KV at Gm@lmargin
+\let\KV at Gm@innermargin\KV at Gm@lmargin
+\let\KV at Gm@right\KV at Gm@rmargin
+\let\KV at Gm@outer\KV at Gm@rmargin
+\let\KV at Gm@outermargin\KV at Gm@rmargin
+\define at key{Gm}{tmargin}{\Gm at defbylen{tmargin}{#1}}%
+\define at key{Gm}{bmargin}{\Gm at defbylen{bmargin}{#1}}%
+\let\KV at Gm@top\KV at Gm@tmargin
+\let\KV at Gm@bottom\KV at Gm@bmargin
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}\end{key}
+%  \end{key}\end{key}\end{key}\end{key}\end{key}
+%  \end{key}\end{key}
+%  \begin{key}{Gm}{hmargin}
+%  \begin{key}{Gm}{vmargin}
+%  \begin{key}{Gm}{margin}
+%  These options are shorthands for setting \gpart{margins}.
+%    \begin{macrocode}
+\define at key{Gm}{hmargin}{\Gm at branch{#1}{lmargin}{rmargin}}%
+\define at key{Gm}{vmargin}{\Gm at branch{#1}{tmargin}{bmargin}}%
+\define at key{Gm}{margin}{\Gm at branch{#1}{lmargin}{tmargin}%
+  \Gm at branch{#1}{rmargin}{bmargin}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{hmarginratio}
+%  \begin{key}{Gm}{vmarginratio}
+%  \begin{key}{Gm}{marginratio}
+%  \begin{key}{Gm}{hratio}
+%  \begin{key}{Gm}{vratio}
+%  \begin{key}{Gm}{ratio}
+%  Options specifying the margin ratios.
+%    \begin{macrocode}
+\define at key{Gm}{hmarginratio}{\edef\Gm at hmarginratio{#1}}%
+\define at key{Gm}{vmarginratio}{\edef\Gm at vmarginratio{#1}}%
+\define at key{Gm}{marginratio}{\Gm at branch{#1}{hmarginratio}{vmarginratio}}%
+\let\KV at Gm@hratio\KV at Gm@hmarginratio
+\let\KV at Gm@vratio\KV at Gm@vmarginratio
+\let\KV at Gm@ratio\KV at Gm@marginratio
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{hcentering}
+%  \begin{key}{Gm}{vcentering}
+%  \begin{key}{Gm}{centering}
+%    Useful shorthands to place \gpart{body} centered.
+%    \begin{macrocode}
+\define at key{Gm}{hcentering}[true]{\Gm at doifelse{hcentering}{#1}%
+  {\def\Gm at hmarginratio{1:1}}{}}%
+\define at key{Gm}{vcentering}[true]{\Gm at doifelse{vcentering}{#1}%
+  {\def\Gm at vmarginratio{1:1}}{}}%
+\define at key{Gm}{centering}[true]{\Gm at doifelse{centering}{#1}%
+  {\def\Gm at hmarginratio{1:1}\def\Gm at vmarginratio{1:1}}{}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{twoside}
+%    If |twoside=true|, \cs{@twoside} and \cs{@mparswitch} is set to |true|.
+%    \begin{macrocode}
+\define at key{Gm}{twoside}[true]{\Gm at doifelse{twoside}{#1}%
+  {\@twosidetrue\@mparswitchtrue}{\@twosidefalse\@mparswitchfalse}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{asymmetric}
+%    |asymmetric| sets \cs{@mparswitchfalse} and \cs{@twosidetrue}
+%     A |asymmetric=false| has no effect.
+%    \begin{macrocode}
+\define at key{Gm}{asymmetric}[true]{\Gm at doifelse{asymmetric}{#1}%
+  {\@twosidetrue\@mparswitchfalse}{}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{bindingoffset}
+%    The macro adds the specified space to the inner margin.
+%    \begin{macrocode}
+\define at key{Gm}{bindingoffset}{\Gm at setlength\Gm at bindingoffset{#1}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{headheight}
+%  \begin{key}{Gm}{headsep}
+%  \begin{key}{Gm}{footskip}
+%  \begin{key}{Gm}{head}
+%  \begin{key}{Gm}{foot}
+%    The direct settings of \gpart{head} and/or \gpart{foot} dimensions.
+%    \begin{macrocode}
+\define at key{Gm}{headheight}{\Gm at setlength\headheight{#1}}%
+\define at key{Gm}{headsep}{\Gm at setlength\headsep{#1}}%
+\define at key{Gm}{footskip}{\Gm at setlength\footskip{#1}}%
+\let\KV at Gm@head\KV at Gm@headheight
+\let\KV at Gm@foot\KV at Gm@footskip
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{nohead}
+%  \begin{key}{Gm}{nofoot}
+%  \begin{key}{Gm}{noheadfoot}
+%    They are only shorthands to set \gpart{head} and/or \gpart{foot}
+%    to be |0pt|.
+%    \begin{macrocode}
+\define at key{Gm}{nohead}[true]{\Gm at doifelse{nohead}{#1}%
+  {\Gm at setlength\headheight\z@\Gm at setlength\headsep\z@}{}}%
+\define at key{Gm}{nofoot}[true]{\Gm at doifelse{nofoot}{#1}%
+  {\Gm at setlength\footskip\z@}{}}%
+\define at key{Gm}{noheadfoot}[true]{\Gm at doifelse{noheadfoot}{#1}%
+  {\Gm at setlength\headheight\z@\Gm at setlength\headsep
+  \z@\Gm at setlength\footskip\z@}{}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{footnotesep}
+%    The option directly sets a native dimension \cs{footnotesep}.
+%    \begin{macrocode}
+\define at key{Gm}{footnotesep}{\Gm at setlength{\skip\footins}{#1}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{marginparwidth}
+%  \begin{key}{Gm}{marginpar}
+%  \begin{key}{Gm}{marginparsep}
+%    They directly set native dimensions \cs{marginparwidth} and
+%    \cs{marginparsep}.
+%    \begin{macrocode}
+\define at key{Gm}{marginparwidth}{\Gm at setlength\marginparwidth{#1}}%
+\let\KV at Gm@marginpar\KV at Gm@marginparwidth
+\define at key{Gm}{marginparsep}{\Gm at setlength\marginparsep{#1}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{nomarginpar}
+%    The macro is a shorthand for \cs{marginparwidth}|=0pt| and
+%    \cs{marginparsep}|=0pt|.
+%    \begin{macrocode}
+\define at key{Gm}{nomarginpar}[true]{\Gm at doifelse{nomarginpar}{#1}%
+  {\Gm at setlength\marginparwidth\z@\Gm at setlength\marginparsep\z@}{}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{columnsep}
+%    The option sets a native dimension \cs{columnsep}.
+%    \begin{macrocode}
+\define at key{Gm}{columnsep}{\Gm at setlength\columnsep{#1}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{hoffset}
+%  \begin{key}{Gm}{voffset}
+%  \begin{key}{Gm}{offset}
+%    The former two options set native dimensions \cs{hoffset} and
+%    \cs{voffset}. |offset| can set both of them with the same value.
+%    \begin{macrocode}
+\define at key{Gm}{hoffset}{\Gm at setlength\hoffset{#1}}%
+\define at key{Gm}{voffset}{\Gm at setlength\voffset{#1}}%
+\define at key{Gm}{offset}{\Gm at branch{#1}{hoffset}{voffset}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{layouthoffset}
+%  \begin{key}{Gm}{layoutvoffset}
+%  \begin{key}{Gm}{layoutoffset}
+%    \begin{macrocode}
+\define at key{Gm}{layouthoffset}{\Gm at setlength\Gm at layouthoffset{#1}}%
+\define at key{Gm}{layoutvoffset}{\Gm at setlength\Gm at layoutvoffset{#1}}%
+\define at key{Gm}{layoutoffset}{\Gm at branch{#1}{layouthoffset}{layoutvoffset}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{twocolumn}
+%    The option sets \cs{twocolumn} switch.
+%    \begin{macrocode}
+\define at key{Gm}{twocolumn}[true]{%
+  \Gm at doif{twocolumn}{#1}{\csname @twocolumn\Gm at bool\endcsname}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{onecolumn}
+%    This option has the reverse effect of |twocolumn| option.
+%    \begin{macrocode}
+\define at key{Gm}{onecolumn}[true]{%
+  \Gm at doifelse{onecolumn}{#1}{\@twocolumnfalse}{\@twocolumntrue}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{reversemp}
+%  \begin{key}{Gm}{reversemarginpar}
+%    The both options set \cs{reversemargin}.
+%    \begin{macrocode}
+\define at key{Gm}{reversemp}[true]{%
+  \Gm at doif{reversemp}{#1}{\csname @reversemargin\Gm at bool\endcsname}}%
+\define at key{Gm}{reversemarginpar}[true]{%
+  \Gm at doif{reversemarginpar}{#1}{\csname @reversemargin\Gm at bool\endcsname}}%
+%    \end{macrocode}
+%  \end{key}\end{key}
+%  \begin{key}{Gm}{dviver}
+%    \begin{macrocode}
+\define at key{Gm}{driver}{\ifGm at preamble{driver}{%
+  \edef\@@tempa{#1}\edef\@@auto{auto}\edef\@@none{none}%
+  \ifx\@@tempa\@empty\let\Gm at driver\relax\else
+  \ifx\@@tempa\@@none\let\Gm at driver\relax\else
+  \ifx\@@tempa\@@auto\let\Gm at driver\@empty\else
+  \setkeys{Gm}{#1}\fi\fi\fi\let\@@auto\relax\let\@@none\relax}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{dvips}
+%  \begin{key}{Gm}{dvipdfm}\begin{key}{Gm}{dvipdfmx}\begin{key}{Gm}{xdvipdfmx}
+%  \begin{key}{Gm}{pdftex}
+%  \begin{key}{Gm}{luatex}
+%  \begin{key}{Gm}{xetex}
+%  \begin{key}{Gm}{vtex}
+%    The \Gm\ package supports |dvips|, |dvipdfm|, 
+%    |pdflatex|, |luatex| and |vtex|. |dvipdfm| works like |dvips|.
+%    \begin{macrocode}
+\define at key{Gm}{dvips}[true]{\ifGm at preamble{dvips}{%
+  \Gm at doifelse{dvips}{#1}{\Gm at setdriver{dvips}}{\Gm at unsetdriver{dvips}}}}%
+\define at key{Gm}{dvipdfm}[true]{\ifGm at preamble{dvipdfm}{%
+  \Gm at doifelse{dvipdfm}{#1}{\Gm at setdriver{dvipdfm}}{\Gm at unsetdriver{dvipdfm}}}}%
+\define at key{Gm}{dvipdfmx}[true]{\ifGm at preamble{dvipdfm}{%
+  \Gm at doifelse{dvipdfm}{#1}{\Gm at setdriver{dvipdfm}}{\Gm at unsetdriver{dvipdfm}}}}%
+\define at key{Gm}{xdvipdfmx}[true]{\ifGm at preamble{dvipdfm}{%
+  \Gm at doifelse{dvipdfm}{#1}{\Gm at setdriver{dvipdfm}}{\Gm at unsetdriver{dvipdfm}}}}%
+\define at key{Gm}{pdftex}[true]{\ifGm at preamble{pdftex}{%
+  \Gm at doifelse{pdftex}{#1}{\Gm at setdriver{pdftex}}{\Gm at unsetdriver{pdftex}}}}%
+\define at key{Gm}{luatex}[true]{\ifGm at preamble{luatex}{%
+  \Gm at doifelse{luatex}{#1}{\Gm at setdriver{luatex}}{\Gm at unsetdriver{luatex}}}}%
+\define at key{Gm}{xetex}[true]{\ifGm at preamble{xetex}{%
+  \Gm at doifelse{xetex}{#1}{\Gm at setdriver{xetex}}{\Gm at unsetdriver{xetex}}}}%
+\define at key{Gm}{vtex}[true]{\ifGm at preamble{vtex}{%
+  \Gm at doifelse{vtex}{#1}{\Gm at setdriver{vtex}}{\Gm at unsetdriver{vtex}}}}%
+%    \end{macrocode}
+%  \end{key}\end{key}\end{key}\end{key}\end{key}\end{key}\end{key}\end{key}
+%  \begin{key}{Gm}{verbose}
+%    The verbose mode.
+%    \begin{macrocode}
+\define at key{Gm}{verbose}[true]{\ifGm at preamble{verbose}{\Gm at setbool{verbose}{#1}}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{reset}
+%    The option cancels all the options specified before |reset|,
+%    except |pass|. |mag| ($\neq1000$) with |truedimen| cannot be also
+%    reset.
+%    \begin{macrocode}
+\define at key{Gm}{reset}[true]{\ifGm at preamble{reset}{%
+  \Gm at doifelse{reset}{#1}{\Gm at restore@org\Gm at initall
+  \ProcessOptionsKV[c]{Gm}\Gm at setdefaultpaper}{}}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{resetpaper}
+%    If |resetpaper| is set to |true|, the paper size redefined in the package
+%    is discarded and the original one is restored. This option may be useful
+%    to print nonstandard sized documents with normal printers and papers.
+%    \begin{macrocode}
+\define at key{Gm}{resetpaper}[true]{\ifGm at preamble{resetpaper}{%
+  \Gm at setbool{resetpaper}{#1}}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{mag}
+%    |mag| is expanded immediately when it is specified. So |reset| can't
+%    reset |mag| when it is set with |truedimen|.
+%    \begin{macrocode}
+\define at key{Gm}{mag}{\ifGm at preamble{mag}{\mag=#1}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{truedimen}
+%    If |truedimen| is set to |true|, all of the internal
+%    explicit dimensions is changed to \textit{true} dimensions, 
+%    e.g., |1in| is changed to |1truein|.
+%    \begin{macrocode}
+\define at key{Gm}{truedimen}[true]{\ifGm at preamble{truedimen}{%
+  \Gm at doifelse{truedimen}{#1}{\let\Gm at truedimen\Gm at true}%
+  {\let\Gm at truedimen\@empty}}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{pass}
+%    The option makes all the options specified ineffective except
+%    verbose switch.
+%    \begin{macrocode}
+\define at key{Gm}{pass}[true]{\ifGm at preamble{pass}{\Gm at setbool{pass}{#1}}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{showframe}
+%    The showframe option prints page frames to help you understand
+%    what the resulting layout is like.
+%    \begin{macrocode}
+\define at key{Gm}{showframe}[true]{\Gm at setbool{showframe}{#1}}%
+%    \end{macrocode}
+%  \end{key}
+%  \begin{key}{Gm}{showcrop}
+%    The showcrop option prints crop marks at each corner of the layout area.
+%    \begin{macrocode}
+\define at key{Gm}{showcrop}[true]{\Gm at setbool{showcrop}{#1}}%
+%    \end{macrocode}
+%  \end{key}
+%    \begin{macro}{\Gm at setdefaultpaper}
+%    The macro stores paper dimensions.
+%    This macro should be called after |\ProcessOptionsKV[c]{Gm}|.
+%    If the |landscape| option in |\documentclass| is
+%    specified, the class immediately swaps the paper dimensions.
+%    \begin{macrocode}
+\def\Gm at setdefaultpaper{%
+  \ifx\Gm at paper\@undefined
+    \Gm at setsize{paper}(\strip at pt\paperwidth,\strip at pt\paperheight){pt}%
+    \Gm at setsize{Gm at layout}(\strip at pt\paperwidth,\strip at pt\paperheight){pt}%
+    \Gm at swap@papersizefalse
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at adjustpaper}
+%    The macro checks if paperwidth/height is larger than 0pt,
+%    which is used in \cs{Gm at process}.
+%    The paper dimensions can be swapped when paper orientation
+%    is changed over by |landscape| and |portrait| options.
+%    \begin{macrocode}
+\def\Gm at adjustpaper{%
+  \ifdim\paperwidth>\p@\else
+    \PackageError{geometry}{%
+    \string\paperwidth\space(\the\paperwidth) too short}{%
+    Set a paper type (e.g., `a4paper').}%
+  \fi
+  \ifdim\paperheight>\p@\else
+    \PackageError{geometry}{%
+    \string\paperheight\space(\the\paperheight) too short}{%
+    Set a paper type (e.g., `a4paper').}%
+  \fi
+  \ifGm at swap@papersize
+    \setlength\@tempdima{\paperwidth}%
+    \setlength\paperwidth{\paperheight}%
+    \setlength\paperheight{\@tempdima}%
+  \fi
+  \ifGm at layout\else
+    \setlength\Gm at layoutwidth{\paperwidth}%
+    \setlength\Gm at layoutheight{\paperheight}%
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at checkmp}
+%    The macro checks whether or not the marginpars overrun the page.
+%    \begin{macrocode}
+\def\Gm at checkmp{%
+  \ifGm at includemp\else
+    \@tempcnta\z@\@tempcntb\@ne
+    \if at twocolumn
+      \@tempcnta\@ne
+    \else
+      \if at reversemargin
+        \@tempcnta\@ne\@tempcntb\z@
+      \fi
+    \fi
+    \@tempdima\marginparwidth
+    \advance\@tempdima\marginparsep
+    \ifnum\@tempcnta=\@ne
+      \@tempdimc\@tempdima
+      \setlength\@tempdimb{\Gm at lmargin}%
+      \advance\@tempdimc-\@tempdimb
+      \ifdim\@tempdimc>\z@
+        \Gm at warning{The marginal notes overrun the paper edge.^^J
+        \@spaces Add \the\@tempdimc\space and more to the left margin}%
+      \fi
+    \fi
+    \ifnum\@tempcntb=\@ne
+      \@tempdimc\@tempdima
+      \setlength\@tempdimb{\Gm at rmargin}%
+      \advance\@tempdimc-\@tempdimb
+      \ifdim\@tempdimc>\z@
+        \Gm at warning{The marginal notes overrun the paper.^^J
+        \@spaces Add \the\@tempdimc\space and more to the right margin}%
+      \fi
+    \fi
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at adjustmp}
+%    The macro sets marginpar correction when |includemp| is set,
+%    which is used in \cs{Gm at process}. The variables \cs{Gm at wd@mp},
+%    \cs{Gm at odd@mp} and \cs{Gm at even@mp} are set here.
+%    Note that \cs{Gm at even@mp} should be used only for twoside layout.
+%    \begin{macrocode}
+\def\Gm at adjustmp{%
+  \ifGm at includemp
+    \@tempdimb\marginparwidth
+    \advance\@tempdimb\marginparsep
+    \Gm at wd@mp\@tempdimb
+    \Gm at odd@mp\z@
+    \Gm at even@mp\z@
+    \if at twocolumn
+      \Gm at wd@mp2\@tempdimb
+      \Gm at odd@mp\@tempdimb
+      \Gm at even@mp\@tempdimb
+    \else
+      \if at reversemargin
+        \Gm at odd@mp\@tempdimb
+        \if at mparswitch\else
+          \Gm at even@mp\@tempdimb
+        \fi
+      \else
+        \if at mparswitch
+          \Gm at even@mp\@tempdimb
+        \fi
+      \fi
+    \fi
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at adjustbody}
+%    If the horizontal dimension of \gpart{body} is specified by user,
+%    \cs{Gm at width} is set properly here.
+%    \begin{macrocode}
+\def\Gm at adjustbody{
+  \ifGm at hbody
+    \ifx\Gm at width\@undefined
+      \ifx\Gm at hscale\@undefined
+        \Gm at defbylen{width}{\Gm at Dhscale\Gm at layoutwidth}%
+      \else
+        \Gm at defbylen{width}{\Gm at hscale\Gm at layoutwidth}%
+      \fi
+    \fi
+    \ifx\Gm at textwidth\@undefined\else
+      \setlength\@tempdima{\Gm at textwidth}%
+      \ifGm at includemp
+        \advance\@tempdima\Gm at wd@mp
+      \fi
+      \edef\Gm at width{\the\@tempdima}%
+    \fi
+  \fi
+%    \end{macrocode}
+%    If the vertical dimension of \gpart{body} is specified by user,
+%    \cs{Gm at height} is set properly here.
+%    \begin{macrocode}
+  \ifGm at vbody
+    \ifx\Gm at height\@undefined
+      \ifx\Gm at vscale\@undefined
+        \Gm at defbylen{height}{\Gm at Dvscale\Gm at layoutheight}%
+      \else
+        \Gm at defbylen{height}{\Gm at vscale\Gm at layoutheight}%
+      \fi
+    \fi
+    \ifx\Gm at lines\@undefined\else
+%    \end{macrocode}
+%    \cs{topskip} has to be adjusted so that the formula
+%    ``$\cs{textheight} = (lines - 1) \times \cs{baselineskip} + \cs{topskip}$''
+%    to be correct even if large font sizes are specified by users.
+%    If \cs{topskip} is smaller than \cs{ht}\cs{strutbox}, then \cs{topskip}
+%    is set to \cs{ht}\cs{strutbox}.
+%    \begin{macrocode}
+      \ifdim\topskip<\ht\strutbox
+        \setlength\@tempdima{\topskip}%
+        \setlength\topskip{\ht\strutbox}%
+        \Gm at warning{\noexpand\topskip was changed from \the\@tempdima\space
+        to \the\topskip}%
+      \fi
+      \setlength\@tempdima{\baselineskip}%
+      \multiply\@tempdima\Gm at lines
+      \addtolength\@tempdima{\topskip}%
+      \addtolength\@tempdima{-\baselineskip}%
+      \edef\Gm at textheight{\the\@tempdima}%
+    \fi
+    \ifx\Gm at textheight\@undefined\else
+      \setlength\@tempdima{\Gm at textheight}%
+      \ifGm at includehead
+        \addtolength\@tempdima{\headheight}%
+        \addtolength\@tempdima{\headsep}%
+      \fi
+      \ifGm at includefoot
+        \addtolength\@tempdima{\footskip}%
+      \fi
+      \edef\Gm at height{\the\@tempdima}%
+    \fi
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at process}
+%    The main macro processing the specified dimensions is defined.
+%    \begin{macrocode}
+\def\Gm at process{%
+%    \end{macrocode}
+%    If |pass| is set, the original dimensions and switches are restored
+%    and process is ended here.
+%    \begin{macrocode}
+  \ifGm at pass
+    \Gm at restore@org
+  \else
+    \Gm@@process
+  \fi}%
+%    \end{macrocode}
+%    The main processing macro.
+%    \begin{macrocode}
+\def\Gm@@process{%
+  \Gm at expandlengths
+  \Gm at adjustpaper
+  \addtolength\Gm at layoutwidth{-\Gm at bindingoffset}%
+  \Gm at adjustmp
+  \Gm at adjustbody
+  \Gm at detall{h}{width}{lmargin}{rmargin}%
+  \Gm at detall{v}{height}{tmargin}{bmargin}%
+%    \end{macrocode}
+%    The real dimensions are set properly according to the result
+%    of the auto-completion calculation.
+%    \begin{macrocode}
+  \setlength\textwidth{\Gm at width}%
+  \setlength\textheight{\Gm at height}%
+  \setlength\topmargin{\Gm at tmargin}%
+  \setlength\oddsidemargin{\Gm at lmargin}%
+  \addtolength\oddsidemargin{-1\Gm at truedimen in}%
+%    \end{macrocode}
+%    If |includemp| is set to |true|, \cs{textwidth} and \cs{oddsidemargin}
+%    are adjusted. 
+%    \begin{macrocode}
+  \ifGm at includemp
+    \advance\textwidth-\Gm at wd@mp
+    \advance\oddsidemargin\Gm at odd@mp
+  \fi
+%    \end{macrocode}
+%    Determining \cs{evensidemargin}.
+%    In the twoside page layout, the right margin value \cs{Gm at rmargin} is used.
+%    If the marginal note width is included,
+%    \cs{evensidemargin} should be corrected by \cs{Gm at even@mp}.
+%    \begin{macrocode}
+  \if at mparswitch
+    \setlength\evensidemargin{\Gm at rmargin}%
+    \addtolength\evensidemargin{-1\Gm at truedimen in}%
+    \ifGm at includemp
+      \advance\evensidemargin\Gm at even@mp
+    \fi
+  \else
+    \evensidemargin\oddsidemargin
+  \fi
+%    \end{macrocode}
+%    The bindingoffset correction for \cs{oddsidemargin}.
+%    \begin{macrocode}
+  \advance\oddsidemargin\Gm at bindingoffset
+  \addtolength\topmargin{-1\Gm at truedimen in}%
+%    \end{macrocode}
+%    If the head of the page is included in \gpart{total body}, 
+%    \cs{headheight} and \cs{headsep} are removed from \cs{textheight},
+%    otherwise from \cs{topmargin}.
+%    \begin{macrocode}
+  \ifGm at includehead
+    \addtolength\textheight{-\headheight}%
+    \addtolength\textheight{-\headsep}%
+  \else
+    \addtolength\topmargin{-\headheight}%
+    \addtolength\topmargin{-\headsep}%
+  \fi
+%    \end{macrocode}
+%    If the foot of the page is included in \gpart{total body},
+%    \cs{footskip} is removed from \cs{textheight}.
+%    \begin{macrocode}
+  \ifGm at includefoot
+    \addtolength\textheight{-\footskip}%
+  \fi
+%    \end{macrocode}
+%    If |heightrounded| is set, \cs{textheight} is rounded.
+%    \begin{macrocode}
+  \ifGm at heightrounded
+    \setlength\@tempdima{\textheight}%
+    \addtolength\@tempdima{-\topskip}%
+    \@tempcnta\@tempdima
+    \@tempcntb\baselineskip
+    \divide\@tempcnta\@tempcntb
+    \setlength\@tempdimb{\baselineskip}%
+    \multiply\@tempdimb\@tempcnta
+    \advance\@tempdima-\@tempdimb
+    \multiply\@tempdima\tw@
+    \ifdim\@tempdima>\baselineskip
+      \addtolength\@tempdimb{\baselineskip}%
+    \fi
+    \addtolength\@tempdimb{\topskip}%
+    \textheight\@tempdimb
+  \fi
+%    \end{macrocode}
+%    The paper width is set back by adding \cs{Gm at bindingoffset}.
+%    \begin{macrocode}
+  \advance\oddsidemargin\Gm at layouthoffset%
+  \advance\evensidemargin\Gm at layouthoffset%
+  \advance\topmargin\Gm at layoutvoffset%
+  \addtolength\Gm at layoutwidth{\Gm at bindingoffset}%
+  }% end of \Gm@@process
+%    \end{macrocode}
+%    \end{macro}
+%    
+%    \begin{macro}{\Gm at detectdriver}
+%    The macro checks the typeset environment and changes the driver option
+%    if necessary. To make the engine detection more robust, the macro is
+%    rewritten with packages \textsf{ifpdf}, \textsf{ifvtex} and 
+%    \textsf{ifxetex}.
+%    \begin{macrocode}
+\def\Gm at detectdriver{%
+%    \end{macrocode} 
+%    If the driver option is not specified explicitly, then driver
+%    auto-detection works.
+%    \begin{macrocode} 
+  \ifx\Gm at driver\@empty
+    \typeout{*geometry* driver: auto-detecting}%
+%    \end{macrocode} 
+%    \cs{ifpdf} is defined in \textsf{ifpdf} package in `oberdiek' bundle.
+%    \begin{macrocode} 
+    \ifpdf
+      \ifx\pdfextension\@undefined
+        \Gm at setdriver{pdftex}%
+      \else
+        \Gm at setdriver{luatex}%
+      \fi
+    \else
+      \Gm at setdriver{dvips}%
+    \fi
+%    \end{macrocode} 
+%    \cs{ifvtex} is defined in \textsf{ifvtex} package in `oberdiek'
+%    bundle. 
+%    \begin{macrocode} 
+    \ifvtex
+      \Gm at setdriver{vtex}%
+    \fi
+%    \end{macrocode}
+%    \cs{ifxetex} is defined in \textsf{ifxetex} package written by
+%    Will Robertson.
+%    \begin{macrocode} 
+    \ifxetex
+      \Gm at setdriver{xetex}
+    \fi
+%    \end{macrocode}
+%    When the driver option is set by the user, check if it is valid or not. 
+%    \begin{macrocode} 
+  \else
+    \ifx\Gm at driver\Gm at xetex %%
+      \ifxetex\else
+        \Gm at warning{Wrong driver setting: `xetex'; trying `pdftex' driver}%
+        \Gm at setdriver{pdftex}
+      \fi
+    \fi
+    \ifx\Gm at driver\Gm at vtex
+      \ifvtex\else
+        \Gm at warning{Wrong driver setting: `vtex'; trying `dvips' driver}%
+        \Gm at setdriver{dvips}%
+      \fi
+    \fi
+  \fi
+  \ifx\Gm at driver\relax
+    \typeout{*geometry* detected driver: <none>}%
+  \else
+    \typeout{*geometry* detected driver: \Gm at driver}%
+  \fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at showparams}
+%    Prints the resulted parammeters and dimensions to STDOUT
+%    if |verbose| is true.
+%    |\Gm at width| and |\Gm at height| are expanded to get the real size.
+%    \begin{macrocode}
+\def\Gm at showparams#1{%
+  \ifGm at verbose\expandafter\typeout\else\expandafter\wlog\fi
+  {\Gm at logcontent{#1}}}%
+\def\Gm at showdim#1{* \string#1=\the#1^^J}%
+\def\Gm at showbool#1{\@nameuse{ifGm@#1}#1\space\fi}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at logcontent}
+%    The content of geometry paramenters and native dimensions for the
+%    page layout.
+%    \begin{macrocode}
+\def\Gm at logcontent#1{%
+  *geometry* verbose mode - [ #1 ] result:^^J%
+  \ifGm at pass * pass: disregarded the geometry package!^^J%
+  \else
+  * driver: \if\Gm at driver<none>\else\Gm at driver\fi^^J%
+  * paper: \ifx\Gm at paper\@undefined<default>\else\Gm at paper\fi^^J%
+  * layout: \ifGm at layout<custom>\else<same size as paper>\fi^^J%
+  \ifGm at layout
+  * layout(width,height): (\the\Gm at layoutwidth,\the\Gm at layoutheight)^^J%
+  \fi 
+  * layoutoffset:(h,v)=(\the\Gm at layouthoffset,\the\Gm at layoutvoffset)^^J%
+  \@ifundefined{Gm at lines}{}{* lines: \Gm at lines^^J}%
+  \@ifundefined{Gm at hmarginratio}{}{* hratio: \Gm at hmarginratio^^J}%
+  \@ifundefined{Gm at vmarginratio}{}{* vratio: \Gm at vmarginratio^^J}%
+  \ifdim\Gm at bindingoffset=\z@\else
+  * bindingoffset: \the\Gm at bindingoffset^^J\fi
+  * modes: %
+   \Gm at showbool{landscape}%
+   \Gm at showbool{includehead}%
+   \Gm at showbool{includefoot}%
+   \Gm at showbool{includemp}%
+   \if at twoside twoside\space\fi%
+   \if at mparswitch\else\if at twoside asymmetric\space\fi\fi%
+   \Gm at showbool{heightrounded}%
+   \ifx\Gm at truedimen\@empty\else truedimen\space\fi%
+   \Gm at showbool{showframe}%
+   \Gm at showbool{showcrop}%
+  ^^J%
+  * h-part:(L,W,R)=(\Gm at lmargin, \Gm at width, \Gm at rmargin)^^J%
+  * v-part:(T,H,B)=(\Gm at tmargin, \Gm at height, \Gm at bmargin)^^J%
+  \fi
+  \Gm at showdim{\paperwidth}%
+  \Gm at showdim{\paperheight}%
+  \Gm at showdim{\textwidth}%
+  \Gm at showdim{\textheight}%
+  \Gm at showdim{\oddsidemargin}%
+  \Gm at showdim{\evensidemargin}%
+  \Gm at showdim{\topmargin}%
+  \Gm at showdim{\headheight}%
+  \Gm at showdim{\headsep}%
+  \Gm at showdim{\topskip}%
+  \Gm at showdim{\footskip}%
+  \Gm at showdim{\marginparwidth}%
+  \Gm at showdim{\marginparsep}%
+  \Gm at showdim{\columnsep}%
+  * \string\skip\string\footins=\the\skip\footins^^J%
+  \Gm at showdim{\hoffset}%
+  \Gm at showdim{\voffset}%
+  \Gm at showdim{\mag}%
+  * \string\@twocolumn\if at twocolumn true\else false\fi^^J%
+  * \string\@twoside\if at twoside true\else false\fi^^J%
+  * \string\@mparswitch\if at mparswitch true\else false\fi^^J%
+  * \string\@reversemargin\if at reversemargin true\else false\fi^^J%
+  * (1in=72.27pt=25.4mm, 1cm=28.453pt)^^J}%
+%    \end{macrocode}
+%    \end{macro}
+%
+%    Macros for the page frames and cropmarks.
+%    \begin{macrocode}
+\def\Gm at cropmark(#1,#2,#3,#4){%
+  \begin{picture}(0,0)
+    \setlength\unitlength{1truemm}%
+    \linethickness{0.25pt}%
+    \put(#3,0){\line(#1,0){17}}%
+    \put(0,#4){\line(0,#2){17}}%
+  \end{picture}}%
+\providecommand*\vb at xt@{\vbox to}%
+\def\Gm at vrule{\vrule width 0.2pt height\textheight depth\z@}%
+\def\Gm at hrule{\hrule height 0.2pt depth\z@ width\textwidth}%
+\def\Gm at hruled{\hrule height\z@ depth0.2pt width\textwidth}%
+\newcommand*{\Gm at vrules@mpi}{%
+  \hb at xt@\@tempdima{\llap{\Gm at vrule}\ignorespaces
+  \hskip \textwidth\Gm at vrule\hskip \marginparsep
+  \llap{\Gm at vrule}\hfil\Gm at vrule}}%
+\newcommand*{\Gm at vrules@mpii}{%
+  \hb at xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep
+  \llap{\Gm at vrule}\ignorespaces
+  \hskip \marginparwidth\rlap{\Gm at vrule}\hskip \marginparsep
+  \llap{\Gm at vrule}\hskip\textwidth\rlap{\Gm at vrule}\hss}}%
+\newcommand*{\Gm at pageframes}{%
+  \vb at xt@\z@{%
+   \ifGm at showcrop
+    \vb at xt@\z@{\vskip-1\Gm at truedimen in\vskip\Gm at layoutvoffset%
+     \hb at xt@\z@{\hskip-1\Gm at truedimen in\hskip\Gm at layouthoffset%
+      \vb at xt@\Gm at layoutheight{%
+       \let\protect\relax
+       \hb at xt@\Gm at layoutwidth{\Gm at cropmark(-1,1,-3,3)\hfil\Gm at cropmark(1,1,3,3)}%
+       \vfil
+       \hb at xt@\Gm at layoutwidth{\Gm at cropmark(-1,-1,-3,-3)\hfil\Gm at cropmark(1,-1,3,-3)}}%
+     \hss}%
+    \vss}%
+   \fi%
+   \ifGm at showframe
+    \if at twoside
+     \ifodd\count\z@
+       \let\@themargin\oddsidemargin
+     \else
+       \let\@themargin\evensidemargin
+     \fi
+    \fi
+    \moveright\@themargin%
+    \vb at xt@\z@{%
+     \vskip\topmargin\vb at xt@\z@{\vss\Gm at hrule}%
+     \vskip\headheight\vb at xt@\z@{\vss\Gm at hruled}%
+     \vskip\headsep\vb at xt@\z@{\vss\Gm at hrule}%
+     \@tempdima\textwidth
+     \advance\@tempdima by \marginparsep
+     \advance\@tempdima by \marginparwidth
+     \if at mparswitch
+      \ifodd\count\z@
+       \Gm at vrules@mpi
+      \else
+       \Gm at vrules@mpii
+      \fi
+     \else
+      \Gm at vrules@mpi
+     \fi
+     \vb at xt@\z@{\vss\Gm at hrule}%
+     \vskip\footskip\vb at xt@\z@{\vss\Gm at hruled}%
+     \vss}%
+    \fi%
+  }}%
+%    \end{macrocode}
+%
+%    \begin{macro}{\ProcessOptionsKV}
+%    This macro can process class and package options using `key=value'
+%    scheme. Only class options are processed with an optional argument
+%    `|c|', package options with `|p|' , and both of them by default.
+%    \begin{macrocode}
+\def\ProcessOptionsKV{\@ifnextchar[%]
+  {\@ProcessOptionsKV}{\@ProcessOptionsKV[]}}%
+\def\@ProcessOptionsKV[#1]#2{%
+  \let\@tempa\@empty
+  \@tempcnta\z@
+  \if#1p\@tempcnta\@ne\else\if#1c\@tempcnta\tw@\fi\fi
+  \ifodd\@tempcnta
+   \edef\@tempa{\@ptionlist{\@currname.\@currext}}%
+  \else
+    \@for\CurrentOption:=\@classoptionslist\do{%
+      \@ifundefined{KV@#2@\CurrentOption}%
+      {}{\edef\@tempa{\@tempa,\CurrentOption,}}}%
+    \ifnum\@tempcnta=\z@
+      \edef\@tempa{\@tempa,\@ptionlist{\@currname.\@currext}}%
+    \fi
+  \fi
+  \edef\@tempa{\noexpand\setkeys{#2}{\@tempa}}%
+  \@tempa
+  \AtEndOfPackage{\let\@unprocessedoptions\relax}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macrocode}
+\def\Gm at setkeys{\setkeys{Gm}}%
+%    \end{macrocode}
+%    \begin{macro}{\Gm at processconf}
+%    \cs{ExecuteOptions} is replaced with \cs{Gm at setkey} to make it
+%    possible to deal with '\meta{key}=\meta{value}' as its argument.
+%    \begin{macrocode}
+\def\Gm at processconfig{%
+  \let\Gm at origExecuteOptions\ExecuteOptions
+  \let\ExecuteOptions\Gm at setkeys
+  \InputIfFileExists{geometry.cfg}{}{}
+  \let\ExecuteOptions\Gm at origExecuteOptions}%
+%    \end{macrocode}
+%    \end{macro}
+%
+%  The original page layout before loading \Gm\ is saved here.
+%  |\Gm at restore@org| is defined here for |reset| option.
+%    \begin{macrocode}
+\Gm at save
+\edef\Gm at restore@org{\Gm at restore}%
+\Gm at initall
+%    \end{macrocode}
+%    Processing config file.
+%    \begin{macrocode}
+\Gm at processconfig
+%    \end{macrocode}
+%    The optional arguments to \cs{documentclass} are processed here.
+%    \begin{macrocode}
+\ProcessOptionsKV[c]{Gm}%
+%    \end{macrocode}
+%    Paper dimensions given by class default are stored.
+%    \begin{macrocode}
+\Gm at setdefaultpaper
+%    \end{macrocode}
+%    The optional arguments to \cs{usepackage} are processed here.
+%    \begin{macrocode}
+\ProcessOptionsKV[p]{Gm}%
+%    \end{macrocode}
+%    Actual settings and calculation for layout dimensions are processed.
+%    \begin{macrocode}
+\Gm at process
+%    \end{macrocode}
+%
+%    \begin{macro}{\AtBeginDocument}
+%   The processes for |verbose|, |showframe| and drivers are added to
+%   |\AtBeginDocument|.
+%   |\Gm at restore@org| is redefined here with the paper size specified
+%   in the preamble for |\newgeometry| to use it. This should be done
+%   before magnifying the paper size with |\mag| because the layout
+%   calculation would be affected by changing the paper size.
+%    \begin{macrocode}
+\AtBeginDocument{%
+  \Gm at savelength{paperwidth}%
+  \Gm at savelength{paperheight}%
+  \edef\Gm at restore@org{\Gm at restore}%
+%    \end{macrocode}
+%    The original paper size is used if |resetpaper|.
+%    \begin{macrocode}
+  \ifGm at resetpaper
+    \edef\Gm at pw{\Gm at orgpw}%
+    \edef\Gm at ph{\Gm at orgph}%
+  \else
+    \edef\Gm at pw{\the\paperwidth}%
+    \edef\Gm at ph{\the\paperheight}%
+  \fi
+%    \end{macrocode}
+%    If |pass| is not set, the paper size is multiplied
+%    according to the specified |mag|.
+%    \begin{macrocode}
+  \ifGm at pass\else
+    \ifnum\mag=\@m\else
+      \Gm at magtooffset
+      \divide\paperwidth\@m
+      \multiply\paperwidth\the\mag
+      \divide\paperheight\@m
+      \multiply\paperheight\the\mag
+    \fi
+  \fi
+%    \end{macrocode}
+%    Checking the driver options.
+%    \begin{macrocode}
+  \Gm at detectdriver
+%    \end{macrocode}
+%    If |xetex| and |\pdfpagewidth| is defined,
+%    |\pdfpagewidth| and |\pdfpageheight| would be set.
+%    \begin{macrocode}
+  \ifx\Gm at driver\Gm at xetex
+    \@ifundefined{pdfpagewidth}{}{%
+      \setlength\pdfpagewidth{\Gm at pw}%
+      \setlength\pdfpageheight{\Gm at ph}}%
+    \ifnum\mag=\@m\else
+      \ifx\Gm at truedimen\Gm at true
+        \setlength\paperwidth{\Gm at pw}%
+        \setlength\paperheight{\Gm at ph}%
+      \fi
+    \fi
+  \fi
+%    \end{macrocode}
+%    If |pdftex| is set to |true|, pdf-commands are set properly.
+%    To avoid |pdftex| magnification problem, \cs{pdfhorigin} and
+%    \cs{pdfvorigin} are adjusted for \cs{mag}.
+%    \begin{macrocode}
+  \ifx\Gm at driver\Gm at pdftex
+    \@ifundefined{pdfpagewidth}{}{%
+      \setlength\pdfpagewidth{\Gm at pw}%
+      \setlength\pdfpageheight{\Gm at ph}}%
+    \ifnum\mag=\@m\else
+      \@tempdima=\mag sp%
+      \@ifundefined{pdfhorigin}{}{%
+        \divide\pdfhorigin\@tempdima
+        \multiply\pdfhorigin\@m
+        \divide\pdfvorigin\@tempdima
+        \multiply\pdfvorigin\@m}%
+      \ifx\Gm at truedimen\Gm at true
+        \setlength\paperwidth{\Gm at pw}%
+        \setlength\paperheight{\Gm at ph}%
+      \fi
+    \fi
+  \fi
+%    \end{macrocode}
+%    If |luatex| is set to |true|, pdf-commands are set properly.
+%    To avoid |luatex| magnification problem, \cs{horigin} and
+%    \cs{vorigin} are adjusted for \cs{mag}.
+%    \begin{macrocode}
+  \ifx\Gm at driver\Gm at luatex
+    \setlength\pagewidth{\Gm at pw}%
+    \setlength\pageheight{\Gm at ph}%
+    \ifnum\mag=\@m\else
+      \@tempdima=\mag sp
+        \edef\Gm at horigin{\pdfvariable horigin}%
+        \edef\Gm at vorigin{\pdfvariable vorigin}%
+        \divide\Gm at horigin\@tempdima
+        \multiply\Gm at horigin\@m
+        \divide\Gm at vorigin\@tempdima
+        \multiply\Gm at vorigin\@m
+      \ifx\Gm at truedimen\Gm at true
+        \setlength\paperwidth{\Gm at pw}%
+        \setlength\paperheight{\Gm at ph}%
+      \fi
+    \fi
+  \fi
+%    \end{macrocode}
+%    With V\TeX{} environment, V\TeX{} variables are set here.
+%    \begin{macrocode}
+  \ifx\Gm at driver\Gm at vtex
+    \@ifundefined{mediawidth}{}{%
+      \mediawidth=\paperwidth
+      \mediaheight=\paperheight}%
+    \ifvtexdvi
+      \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
+    \fi
+  \fi
+%    \end{macrocode}
+%    If |dvips| or |dvipdfm| is specified, paper size is embedded in dvi
+%    file with \cs{special}. For dvips, a landscape correction is added
+%    because a landscape document converted by dvips is upside-down in
+%    PostScript viewers.
+%    \begin{macrocode}
+  \ifx\Gm at driver\Gm at dvips
+    \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
+    \ifx\Gm at driver\Gm at dvips\ifGm at landscape
+      \AtBeginDvi{\special{! /landplus90 true store}}%
+    \fi\fi
+%    \end{macrocode}
+%    If |dvipdfm| is specified and \textsf{atbegshi} package in
+%    `oberdiek' bundle is loaded, \cs{AtBeginShipoutFirst} is used
+%    instead of \cs{AtBeginDvi} for compatibility with \textsf{hyperref}
+%    and |dvipdfm| program.
+%    \begin{macrocode}
+  \else\ifx\Gm at driver\Gm at dvipdfm
+    \ifcase\ifx\AtBeginShipoutFirst\relax\@ne\else
+        \ifx\AtBeginShipoutFirst\@undefined\@ne\else\z@\fi\fi
+      \AtBeginShipoutFirst{\special{papersize=\the\paperwidth,\the\paperheight}}%
+    \or 
+      \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
+    \fi
+  \fi\fi
+%    \end{macrocode}
+%    Page frames are shipped out when |showframe=true|, cropmarks for |showcrop=true|
+%    on each page. The \textsf{atbegshi} package is used for overloading |\shipout|.
+%    \begin{macrocode}
+  \@tempswafalse
+  \ifGm at showframe
+    \@tempswatrue
+  \else\ifGm at showcrop
+    \@tempswatrue
+  \fi\fi
+  \if at tempswa
+    \RequirePackage{atbegshi}%
+      \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{%
+        \baselineskip\z at skip\lineskip\z at skip\lineskiplimit\z@
+        \Gm at pageframes\box\AtBeginShipoutBox}}%
+  \fi
+%    \end{macrocode}
+%    The layout dimensions for \cs{restoregeometry} are saved 
+%    at the end of the \cs{AtBeginDocument}.
+%    \begin{macrocode}
+  \Gm at save
+  \edef\Gm at restore@pkg{\Gm at restore}%
+%    \end{macrocode}
+%    The package checks whether or not the marginpars overrun the page,
+%    if |verbose| and unless |pass|.
+%    \begin{macrocode}
+  \ifGm at verbose\ifGm at pass\else\Gm at checkmp\fi\fi
+%    \end{macrocode}
+%   |\Gm at showparams| puts the resulting parameters and dimensions
+%   into the log file. With |verbose|, they are shown on the terminal
+%   as well.
+%    \begin{macrocode}
+  \Gm at showparams{preamble}%
+%    \end{macrocode}
+%   The following lines free the memories no longer needed.
+%    \begin{macrocode}
+  \let\Gm at pw\relax
+  \let\Gm at ph\relax
+  }% end of \AtBeginDocument
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\geometry}
+%    The macro \cs{geometry} can be called multiple times
+%    in the preamble (before |\begin{document}|).
+%    \begin{macrocode}
+\newcommand{\geometry}[1]{%
+  \Gm at clean
+  \setkeys{Gm}{#1}%
+  \Gm at process}%
+\@onlypreamble\geometry
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\Gm at changelayout}
+%   The macro, which can be called from |\newgeometry|,
+%   |\restoregeometry| and |\loadgeometry|, changes the layout
+%   in the middle of the document.
+%    \begin{macrocode}
+\DeclareRobustCommand\Gm at changelayout{%
+  \setlength{\@colht}{\textheight}
+  \setlength{\@colroom}{\textheight}%
+  \setlength{\vsize}{\textheight}
+  \setlength{\columnwidth}{\textwidth}%
+  \if at twocolumn%
+    \advance\columnwidth-\columnsep
+    \divide\columnwidth\tw@%
+    \@firstcolumntrue%
+  \fi%
+  \setlength{\hsize}{\columnwidth}%
+  \setlength{\linewidth}{\hsize}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\newgeometry}
+%    The macro |\newgeometry|, which changes the layout, 
+%    can be used only in the document.
+%    It would reset the options specified in the preamble except for
+%    paper size options and |\mag|.
+%    \begin{macrocode}
+\newcommand{\newgeometry}[1]{%
+  \clearpage
+  \Gm at restore@org
+  \Gm at initnewgm
+  \Gm at newgmtrue
+  \setkeys{Gm}{#1}%
+  \Gm at newgmfalse
+  \Gm at process
+  \ifnum\mag=\@m\else\Gm at magtooffset\fi
+  \Gm at changelayout
+  \Gm at showparams{newgeometry}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\restoregeometry}
+%    The macro restores the resulting layout specified in the preamble,
+%    namely the first-page layout right after |\begin{document}|.
+%    \begin{macrocode}
+\newcommand{\restoregeometry}{%
+  \clearpage
+  \Gm at restore@pkg
+  \Gm at changelayout}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\savegeometry}
+%    The macro saves the layout with the name specified
+%    with the argument. The saved layout can be loaded
+%    with |\loadgeometry{|\meta{name}|}|.
+%    \begin{macrocode}
+\newcommand*{\savegeometry}[1]{%
+  \Gm at save
+  \expandafter\edef\csname Gm at restore@@#1\endcsname{\Gm at restore}}%
+%    \end{macrocode}
+%    \end{macro}
+%    \begin{macro}{\loadgeometry}
+%    The macro loads the layout saved with |\savegeometry{|\meta{name}|}|.
+%    If the name is not found, the macro would warn it and
+%    do nothing for the layout.
+%    \begin{macrocode}
+\newcommand*{\loadgeometry}[1]{%
+  \clearpage
+  \@ifundefined{Gm at restore@@#1}{%
+    \PackageError{geometry}{%
+    \string\loadgeometry : name `#1' undefined}{%
+    The name `#1' should be predefined with \string\savegeometry}%
+  }{\@nameuse{Gm at restore@@#1}%
+  \Gm at changelayout}}%
+%</package>
+%    \end{macrocode}
+%    \end{macro}
+%
+% \section{Config file}
+%    In the configuration file |geometry.cfg|, one can use
+%    \cs{ExecuteOptions} to set the site or user default settings.
+%    \begin{macrocode}
+%<*config>
+%<<SAVE_INTACT
+
+%  Uncomment and edit the line below to set default options.
+%\ExecuteOptions{a4paper}
+
+%SAVE_INTACT
+%</config>
+%    \end{macrocode}
+%
+% \section{Sample file}
+%    Here is a sample document for the \Gm\ package.
+%    \begin{macrocode}
+%<*samples>
+%<<SAVE_INTACT
+\documentclass[12pt]{article}% uses letterpaper by default
+% \documentclass[12pt,a4paper]{article}% for A4 paper
+%---------------------------------------------------------------
+% Edit and uncomment one of the settings below
+%---------------------------------------------------------------
+% \usepackage{geometry}
+% \usepackage[centering]{geometry}
+% \usepackage[width=10cm,vscale=.7]{geometry}
+% \usepackage[margin=1cm, papersize={12cm,19cm}, resetpaper]{geometry}
+% \usepackage[margin=1cm,includeheadfoot]{geometry}
+\usepackage[margin=1cm,includeheadfoot,includemp]{geometry}
+% \usepackage[margin=1cm,bindingoffset=1cm,twoside]{geometry}
+% \usepackage[hmarginratio=2:1, vmargin=2cm]{geometry}
+% \usepackage[hscale=0.5,twoside]{geometry}
+% \usepackage[hscale=0.5,asymmetric]{geometry}
+% \usepackage[hscale=0.5,heightrounded]{geometry}
+% \usepackage[left=1cm,right=4cm,top=2cm,includefoot]{geometry}
+% \usepackage[lines=20,left=2cm,right=6cm,top=2cm,twoside]{geometry}
+% \usepackage[width=15cm, marginparwidth=3cm, includemp]{geometry}
+% \usepackage[hdivide={1cm,,2cm}, vdivide={3cm,8in,}, nohead]{geometry}
+% \usepackage[headsep=20pt, head=40pt,foot=20pt,includeheadfoot]{geometry}
+% \usepackage[text={6in,8in}, top=2cm, left=2cm]{geometry}
+% \usepackage[centering,includemp,twoside,landscape]{geometry}
+% \usepackage[mag=1414,margin=2cm]{geometry}
+% \usepackage[mag=1414,margin=2truecm,truedimen]{geometry}
+% \usepackage[a5paper, landscape, twocolumn, twoside,
+%    left=2cm, hmarginratio=2:1, includemp, marginparwidth=43pt,
+%    bottom=1cm, foot=.7cm, includefoot, textheight=11cm, heightrounded,
+%    columnsep=1cm,verbose]{geometry}
+%---------------------------------------------------------------
+% No need to change below
+%---------------------------------------------------------------
+\geometry{verbose,showframe}% the options appended.
+\usepackage{lipsum}% for dummy text of 150 paragraphs
+\newcommand\mynote{\marginpar[\raggedright
+A sample margin note in the left side.]%
+{\raggedright A sample margin note.}}%
+\newcommand\myfootnote{\footnote{This is a sample footnote text.}}
+\begin{document}
+\lipsum[1-2]\mynote\lipsum[3-4]\mynote
+\lipsum[5-11]\mynote\lipsum[12]\myfootnote
+\lipsum[13-22]\mynote\lipsum[23-32]
+\end{document}
+%SAVE_INTACT
+%</samples>
+%    \end{macrocode}
+%
+% \Finale
+%
+\endinput


Property changes on: trunk/Master/texmf-dist/source/latex/geometry/geometry-de.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/source/latex/geometry/geometry-de.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/geometry/geometry-de.ins	                        (rev 0)
+++ trunk/Master/texmf-dist/source/latex/geometry/geometry-de.ins	2020-01-02 22:07:32 UTC (rev 53299)
@@ -0,0 +1,83 @@
+%%
+%% This is file `geometry-de.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% geometry-de.dtx  (with options: `install')
+%% 
+%% Copyright (C) 1996-2010
+%% by Hideo Umeki <latexgeometry at gmail.com>
+%% Copyright (C) 2018-2020
+%% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
+%% 
+%% This work may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3c of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in
+%%    http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This work is "maintained" (as per the LPPL maintenance status)
+%% by David Carlisle.
+%% 
+%% This work consists of the files geometry.dtx and
+%% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex.
+%% 
+\input docstrip.tex
+\Msg{************************************************************************}
+\Msg{* Installation}
+\Msg{* Package: geometry 2020/01/02 v5.9 Page Geometry}
+\Msg{************************************************************************}
+
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+Copyright (C) 1996-2010
+by Hideo Umeki <latexgeometry at gmail.com>
+Copyright (C) 2018-2020
+by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3c of this license
+or (at your option) any later version. The latest version of this
+license is in
+   http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work is "maintained" (as per the LPPL maintenance status)
+by David Carlisle.
+
+This work consists of the files geometry.dtx and
+the derived files: geometry.{sty,ins,drv}, geometry-samples.tex.
+
+\endpreamble
+
+\generate{%
+  \file{geometry-de.ins}{\from{geometry-de.dtx}{install}}%
+  \file{geometry-de.drv}{\from{geometry-de.dtx}{driver}}%
+  \usedir{tex/latex/geometry}%
+  \file{geometry-samples-de.tex}{\from{geometry-de.dtx}{samples}}%
+}
+
+\obeyspaces
+\Msg{************************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* file into a directory searched by LaTeX:}
+\Msg{*}
+\Msg{* \space\space geometry.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file `geometry.drv'}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*}
+\Msg{************************************************************************}
+\endbatchfile
+\endinput
+%%
+%% End of file `geometry-de.ins'.

Modified: trunk/Master/texmf-dist/source/latex/geometry/geometry.drv
===================================================================
--- trunk/Master/texmf-dist/source/latex/geometry/geometry.drv	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/source/latex/geometry/geometry.drv	2020-01-02 22:07:32 UTC (rev 53299)
@@ -8,7 +8,7 @@
 %% 
 %% Copyright (C) 1996-2010
 %% by Hideo Umeki <latexgeometry at gmail.com>
-%% Copyright (C) 2018
+%% Copyright (C) 2018-2020
 %% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
 %% 
 %% This work may be distributed and/or modified under the conditions of

Modified: trunk/Master/texmf-dist/source/latex/geometry/geometry.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/geometry/geometry.dtx	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/source/latex/geometry/geometry.dtx	2020-01-02 22:07:32 UTC (rev 53299)
@@ -26,6 +26,8 @@
 %    CTAN: macros/latex/contrib/geometry/geometry.ins
 %    CTAN: macros/latex/contrib/geometry/geometry.dtx
 %    CTAN: macros/latex/contrib/geometry/geometry.pdf
+%    CTAN: macros/latex/contrib/geometry/geometry-de.dtx
+%    CTAN: macros/latex/contrib/geometry/geometry-de.pdf
 %
 % * See README for installation.
 %        
@@ -40,12 +42,12 @@
 %</ignore>
 %<package|driver>\NeedsTeXFormat{LaTeX2e}
 %<package>\ProvidesPackage{geometry}
-%<package>  [2018/04/16 v5.8 Page Geometry]
+%<package>  [2020/01/02 v5.9 Page Geometry]
 %<*install>
 \input docstrip.tex
 \Msg{************************************************************************}
 \Msg{* Installation}
-\Msg{* Package: geometry 2018/04/16 v5.8 Page Geometry}
+\Msg{* Package: geometry 2020/01/02 v5.9 Page Geometry}
 \Msg{************************************************************************}
 
 \keepsilent
@@ -54,7 +56,7 @@
 
 Copyright (C) 1996-2010
 by Hideo Umeki <latexgeometry at gmail.com>
-Copyright (C) 2018
+Copyright (C) 2018-2020
 by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
 
 This work may be distributed and/or modified under the conditions of
@@ -125,7 +127,7 @@
 %
 % \title{The \textsf{geometry} package}
 % \date{\filedate\ \fileversion}
-% \author{Hideo Umeki\\\texttt{latexgeometry at gmail.com}}
+% \author{Hideo Umeki\\\url{https://github.com/davidcarlisle/geometry}}
 %
 % \MakeShortVerb{|}
 %
@@ -1118,7 +1120,9 @@
 % 
 % The package supports drivers |dvips|, |dvipdfm|, |pdftex|, |luatex|,
 % |xetex| and |vtex|. You can also set |dvipdfm| for \textsf{dvipdfmx} and
-% \textsf{xdvipdfmx}. |pdftex| for \textsf{pdflatex}, and |vtex| for
+% \textsf{xdvipdfmx} The options |dvipdfmx| and |xdvipdfmx| are also supported
+% as aliases for the |dvipdfm| option.
+% |pdftex| for \textsf{pdflatex}, and |vtex| for
 % V\TeX{} environment.
 % The driver options are exclusive. The driver can be set by either
 % |driver=|\meta{driver name} or any of the drivers directly like |pdftex|.
@@ -1785,12 +1789,10 @@
 %<*package>
 %    \end{macrocode}
 %    This package requires the following packages:
-%    \textsf{keyval}, \textsf{ifpdf}, \textsf{ifvtex} and \textsf{ifxetex}.
+%    \textsf{keyval}, \textsf{ifvtex}.
 %    \begin{macrocode}
 \RequirePackage{keyval}%
-\RequirePackage{ifpdf}%
 \RequirePackage{ifvtex}%
-\RequirePackage{ifxetex}%
 %    \end{macrocode}
 % 
 %    Internal switches are declared here.
@@ -3591,7 +3593,7 @@
       \setlength\pdfpagewidth{\Gm at pw}%
       \setlength\pdfpageheight{\Gm at ph}}%
     \ifnum\mag=\@m\else
-      \@tempdima=\mag sp
+      \@tempdima=\mag sp%
       \@ifundefined{pdfhorigin}{}{%
         \divide\pdfhorigin\@tempdima
         \multiply\pdfhorigin\@m

Modified: trunk/Master/texmf-dist/source/latex/geometry/geometry.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/geometry/geometry.ins	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/source/latex/geometry/geometry.ins	2020-01-02 22:07:32 UTC (rev 53299)
@@ -8,7 +8,7 @@
 %% 
 %% Copyright (C) 1996-2010
 %% by Hideo Umeki <latexgeometry at gmail.com>
-%% Copyright (C) 2018
+%% Copyright (C) 2018-2020
 %% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
 %% 
 %% This work may be distributed and/or modified under the conditions of
@@ -28,7 +28,7 @@
 \input docstrip.tex
 \Msg{************************************************************************}
 \Msg{* Installation}
-\Msg{* Package: geometry 2018/04/16 v5.8 Page Geometry}
+\Msg{* Package: geometry 2020/01/02 v5.9 Page Geometry}
 \Msg{************************************************************************}
 
 \keepsilent
@@ -37,7 +37,7 @@
 
 Copyright (C) 1996-2010
 by Hideo Umeki <latexgeometry at gmail.com>
-Copyright (C) 2018
+Copyright (C) 2018-2020
 by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
 
 This work may be distributed and/or modified under the conditions of

Modified: trunk/Master/texmf-dist/tex/latex/geometry/geometry.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/geometry/geometry.sty	2020-01-02 22:06:59 UTC (rev 53298)
+++ trunk/Master/texmf-dist/tex/latex/geometry/geometry.sty	2020-01-02 22:07:32 UTC (rev 53299)
@@ -8,7 +8,7 @@
 %% 
 %% Copyright (C) 1996-2010
 %% by Hideo Umeki <latexgeometry at gmail.com>
-%% Copyright (C) 2018
+%% Copyright (C) 2018-2020
 %% by Hideo Umeki and David Carlisle https://github.com/davidcarlisle/geometry
 %% 
 %% This work may be distributed and/or modified under the conditions of
@@ -27,11 +27,9 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{geometry}
-  [2018/04/16 v5.8 Page Geometry]
+  [2020/01/02 v5.9 Page Geometry]
 \RequirePackage{keyval}%
-\RequirePackage{ifpdf}%
 \RequirePackage{ifvtex}%
-\RequirePackage{ifxetex}%
 \newif\ifGm at verbose
 \newif\ifGm at landscape
 \newif\ifGm at swap@papersize
@@ -1043,7 +1041,7 @@
       \setlength\pdfpagewidth{\Gm at pw}%
       \setlength\pdfpageheight{\Gm at ph}}%
     \ifnum\mag=\@m\else
-      \@tempdima=\mag sp
+      \@tempdima=\mag sp%
       \@ifundefined{pdfhorigin}{}{%
         \divide\pdfhorigin\@tempdima
         \multiply\pdfhorigin\@m



More information about the tex-live-commits mailing list