Das geometry Paket
Hideo Umeki
https://github.com/davidcarlisle/geometry
Die Übersetzung wurde angefertigt von Hans-Martin Haase ([email protected])
2020/01/02 v5.9
Zusammenfassung
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.
1 Vorwort zu Version 5
• Das Seitenlayout in der Mitte des Dokuments ändern.
Die neuen Befehle\newgeometry{· · ·}und\restoregeometryerlauben es dem Benutzer, die Sei- tenmaße in der Mitte des Dokuments zu verändern.\newgeometrystimmt fast mit\geometryüber- ein, ausgenommen das\newgeometryalle Optionen, die in der Präambel spezifiziert sind, deakti- viert und überspringt die Optionen, die sich auf die Seitengröße beziehen:landscape, portrait und die Seitengrößenoptionen (solche wiepapersize,paper=a4paperund andere).
• Eine neue Reihe von Optionen, um den Layoutbereich zu spezifizieren.
Die Optionen, die für den Bereich angegeben wurden, in dem die Seitenmaße berechnet werden, sind hinzugefügt wurden:layout,layoutsize,layoutwidth,layoutheightund weitere. Diese Möglichkei- ten sind hilfreich, falls das angegebene Layout auf eine andere Papiergröße angewendet soll. Wenn beispielsweisea4paperundlayout=a5paperverwendet wird, dann benutzt dasgeometryPaket das
‘A5’ statt ‘A4’ Layout, um die Ränder für die Papiergröße zu berechen.
• Eine neue Treiberoptionxetex.
Die neue Treiberoptionxetexwurde hinzugefügt. Die Routine für die automatische Treiberdetekti- on ist überarbeitet worden, sodass ein Fehler mit einer nicht definierten Kontrollsequenz vermieden werden konnte. Beachte, dass ‘geometry.cfg’ in TEX Live, welches die Autodetektionsroutine deak- tiviert undpdftexbenutzt, nicht mehr nötig ist und es keine Probleme gibt, obwohl dies dennoch existiert. Umxetexeinzustellen, ist es dringend empfohlen X E LATEX zu verwenden.
• Neue Papiergröße für JIS B-Serien und ISO C-Serien.
Die Papiergrößenvoreinstellungenb0jbisb6jfür JIS (Japanese Industrial Standards) B-Serien und c0paperbisc6paperfür ISO C-Serien (v5.4∼) wurden hinzugefügt.
• Veränderung des Standards für nicht angegebenen Rand.
In der Vorversion wurde dann, wenn man nur einen Rand angab, z. B.bottom=1cm, vongeometry 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 denscale (= 0.7) ein und bestimmt den nicht angegebenen Rand. (Siehe Kapitel6.5)
• Die Optionenshowframeundshowcroparbeiten auf jeder Seite.
Mit dershowframeOption werden die Seitenränder auf jeder Seite angezeigt. Des Weiteren druckt die neueshowcropOption Schittmarken auf jede Ecke des Layoutbereichs auf jeder Seite. Beden- ken 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 atbegshiPaket benutzt, so wird dasatbegshiPaket benötigt, wenn die showframe oder showcrop Option angegeben wird.
• Laden von geometry.cfg vor der Verarbeitung der Klassenoptionen.
In der Vorgängerversion wurdegeometry.cfgnach dem Verarbeiten der Dokumentklassenoptionen geladen. Jetzt, da die Konfigurationsdatei vor der Abarbeitung der Klassenoptionen geladen wird, können sie das Verhalten, wie es ingeometry.cfgangegeben ist, durch das Hinzufügen von Optionen in der\documentclassoder genauso gut in\usepackageund\geometryverändern.
• Beseitigte Optionen:compat2undtwosideshift.Die Version 5 ist nicht länger mit den Vorgän- gerversionen kompatibel.compat2undtwisideshiftwurden zur Vereinfachung entfernt.
2 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:
\usepackage{calc}
\setlength\textwidth{7in}
\setlength\textheight{10in}
\setlength\oddsidemargin{(\paperwidth-\textwidth)/2 - 1in}
\setlength\topmargin{(\paperheight-\textheight
-\headheight-\headsep-\footskip)/2 - 1in}.
Ohne das Paket calc würde das obere Beispiel noch schwierigere Einstellungen benötigen. Das Paket geometry bietet einen einfachen Weg, die Parameter des Seitenlayouts zu konfigurieren. In diesem Fall müssen sie nur dies einstellen:
\usepackage[text={7in,10in},centering]{geometry}.
Neben dem Zentrierungsproblem, ist das Einstellen der Ränder von jeder Kante des Blattes aus ebenso problematisch. Abergeometryerledigt dies ebenso einfach. Wenn sie jeden Rand auf 1.5 in setzen wollen, dann können sie
\usepackage[margin=1.5in]{geometry}
eingeben. Weil das geometry Paket eine Autovervollständigung besitzt, werden nicht angegebene Maße automatisch festgelegt. DasgeometryPaket wird auch nützlich sein, wenn sie das Seitenlayout beispiels- weise nach den folgenden strikten Instruktionen einstellen müssen:
Die vollständig erlaubte Breite des Textbereiches ist6.5, bei einer Höhe von8.75Inches (eng- lische Zoll). Der obere Rand auf jeder Seite soll1.2Inches von der oberen Kante der Seite aus betragen. Der linke Rand sollte0.9Inch von der linken Kante entfernt sein. Die Fußzeile mit der Seitenzahl sollte am unteren Ende des Textbereiches sein.
In diesem Fall können sie bei der Benutzung vongeometry
\usepackage[total={6.5in,8.75in},
top=1.2in, left=0.9in, includefoot]{geometry}.
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 Be- triebssystems. Der Name ‘geometry’ kommt von der geometry-Option, die genutzt wird, um die Größe und Lokalisierung eines Fensters beim X-Window-System anzugeben.
3 Seitengeometrie
Abbildung1zeigt die Seitenlayoutsmaße , die imgeometryPaket definiert sind. Das Seitenlayout beinhal- tet einentotal body(druckbaren Bereich) undmargins(Ränder). Dertotal bodybesteht aus einembody (Textbereich) mit einem optionalen header(Kopf),footer(Fuß) und Randbemerkungen (marginpar). Es gibt vier Ränder:left(links),right(rechts),top(oben) undbottom(unten). Für zweiseitige Dokumente, sollten horizontale Ränderinner(innen) undouter(außen) genannt werden.
paper : total bodyundmargins
total body : body(Textbereich) (optionalerhead,footundmarginpar) margins : left(inner),right(outer),topundbottom
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 destotal body(druckbaren Bereichs). Deshalb sind der linke und obere Rand ingeometryanders als das natürliche Maß\leftmarginund\topmargin definiert. Die Größe eines Body (Textbereichs) kann durch\textwidth(Textbreite) und\textheight(Texthöhe) angepasst werden. Die Maße für die Seite, den druckbaren Bereich und die Ränder stehen in folgenden Beziehungen.
paperwidth (Seitenbreite) = left (links)+width (Breite)+right (rechts) (1) paperheight (Seitenhöhe) = top (oben)+height (Höhe)+bottom (unten) (2)
Seite
druckbarer Bereich
Höhe
Breite
Seitenbreite Seitenhöhe
oben
unten links
(innen)
rechts (außen)
?
? 6
6 -
-
Texthöhe
? 6
Kopf Kopfhöhe Kopftrennung
Fußbereich HH
Textkörper
-
?
?
Textbreite Fuß
Randnotiz
-
Randnotiztrennung
Randnotizbreite
Abbildung 1: Namen von Maßen, die imgeometryPaket genutzt werden:width=textwidth
(Textbreite)undheight=textheight (Texthöhe)sind Standard.left (links),right (rechts),top (oben)undbottom (unten)sind Ränder. Wenn die Ränder auf der
Rückseite durch dietwoside (Zweiseitigkeit)Option getauscht werden, dann werden die Ränder, die mitleftundrightangegeben wurden, für die inneren und äußeren Ränder genutzt.inner (innen)undouter (außen)sind Pseudonyme fürleftundright.
(a)Standard
Seite
6 Texthöhe
? Kopf
Textkörper
Fuß
?
? 6
6 oben
unten
(b)includeheadundincludefoot Seite
6 Texthöhe
? Kopf
Textkörper
druckbarer Bereich
Fuß
?
? 6
6 oben
unten
Abbildung 2: includeheadundincludefootschließen den Kopf und den Fuß mit in dentotal body (druckbaren Bereich) ein.(a)height=textheight(Standard).(b)height=textheight +headheight+headsep+footskip, wennincludeheadundincludefootaktiv. Wenn der obere und untere Rand angegeben ist führtincludeheadundincludefootdazu, dass dieTexthöheverringert wird.
DieBreiteundHöhedes druckbaren Bereichs wird definiert:
width := textwidth (+marginparsep∗+marginparwidth∗ ∗) (3) height := textheight (+headheight∗ ∗ ∗+headsep∗ ∗ ∗ ∗+footskip∗ ∗ ∗ ∗∗) (4)
* Randnotiztrennung ** Randnotizbreite *** Kopfhöhe **** Kopftrennung ***** Fußbereich
In Gleichung (3) ist standardmäßig width:=textwidth, während marginparsep und marginparwidth nur in der width (Breite)enthalten sind, wenn die includempOption auf true gesetzt ist. In Glei- chung (4) ist standardmäßig height:=textheight. Falls includehead auftrue gesetzt ist, dann wer- den headheight und headsep als Teil der Höhe (height) betrachtet. Auf dem selben Weg, nimmt includefoot footskipinheightauf. Abbildung2zeigt, 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 3 zeigt ein einfaches Modell der Seitenmaße. Falls eine Länge L gegeben ist und eingeteilt ist in den Textkörperb, die Ränderaundc, dann ist offensichtlich, dass
L=a+b+c (5)
Die Spezifikation mit zwei von drei (a,bund c) festgelegten, ist explizit lösbar. Wenn zwei oder mehr der übrigen nicht angegeben sind, kann Gleichung (5) nicht ohne eine andere Beziehung zwischen ihnen gelöst werden. Falls alle Werte angegeben sind, dann muss überprüft werden, ob diese Gleichung (5) genügen, da es zu viele Angaben sind oder es ist ‘überspezifiziert’.
a b c
L
-
Abbildung 3: Ein einfaches Modell der Seitenmaße.
DasgeometryPaket besitzt einen Autovervollständigungsmechanismus, der vor dem Ärger der Angabe von Seitenlayoutmaßen schützt. Zum Beispiel können sie das Folgende
\usepackage[width=14cm, left=3cm]{geometry}
auf A4-Papier einstellen. In diesem Fall müssen sie den rechten Rand nicht angeben. Die Details der Autovervollständigung werden in Kapitel6.5beschrieben.
4 Benutzerschnittstelle
4.1 Befehle
DasgeometryPaket unterstützt die folgenden Befehle:
• \geometry{hOptioneni}
• \newgeometry{hOptioneni}und\restoregeometry
• \savegeometry{hNamei}und\loadgeometry{hNamei}
\geometry{hOptioneni}verändert das Seitenlayout entsprechend den angegebenen Optionen im Ar- gument. Dieser Befehl, wenn überhaupt, sollte nur in der Präambel platziert werden (vor\begin{document}).
DasgeometryPaket kann als Teil einer Klasse oder eines weiteren Pakets, das sie im Dokument benut- zen, genutzt werden. Der Befehl\geometrykann einige der Einstellungen in der Präambel überschreiben.
Eine mehrfache Nutzung von\geometryist erlaubt und wird dann mit den verbundenen Optionen aus- geführt. Wenn geometry noch nicht geladen ist, können sie nur \usepackage[hOptioneni]{geometry}
anstelle von\geometrynutzen.
\newgeometry{hOptioneni}verändert das Seitenlayout innerhalb des Dokuments.\newgeometryist fast gleich mit\geometry, ausgenommen, dass\newgeometryalle Optionen, die von\usepackageund
\geometryin der Präambel vorgenommen wurden, deaktiviert.\restoregeometrystellt das Seitenlay- out, wie es in der Präambel angegeben ist, wieder her. Dieser Befehl besitzt keine Argumente. Lesen sie Kapitel7für Details.
\savegeometry{hNamei}speichert die Seitenmaße alshNamei, wo sie diesen Befehl nutzen.
\loadgeometry{hNamei} lädt die Seitenmaße, die alshNameigespeichert wurden. Lesen sie Kapitel7 für Details.
4.2 Optionales Argument
Das geometry Paket übernimmt diekeyvalSchnittstelle ‘hSchlüsseli=hWerti’ für das optionale Argument von\usepackage,\geometryund\newgeometry.
Das Argument beinhaltet eine Liste von kommaseparierten keyval Optionen und besitzt folgende Grundregeln:
• Mehrfache Zeilen sind erlaubt, während es leere nicht sind.
• Jedes Leerzeichen zwischen den Wörtern wird ignoriert.
• Die Reihenfolge der Optionen ist grundlegend unabhängig. (Es gibt einige Ausnahmen. Lesen sie Kapitel6.2für Details.)
Zum Beispiel ist
\usepackage[ a5paper , hmargin = { 3cm, .8in } , height
= 10in ]{geometry}
äquivalent zu
\usepackage[height=10in,a5paper,hmargin={3cm,0.8in}]{geometry}
Einigen Optionen ist es erlaubt, Unterlisten zu haben, z. B.{3cm,0.8in}. Beachten sie, dass die Reihen- folge der Werte in der Liste bedeutsam ist. Die obere Einstellung ist ebenso äquivalent zu Folgendem:
\usepackage{geometry}
\geometry{height=10in,a5paper,hmargin={3cm,0.8in}}
oder
\usepackage[a5paper]{geometry}
\geometry{hmargin={3cm,0.8in},height=8in}
\geometry{height=10in}.
Folglich hängt die mehrfache Nutzung von\geometrydie Optionen aneinander.
geometryunterstützt das Paketcalc1. Zum Beispiel,
\usepackage{calc}
\usepackage[textheight=20\baselineskip+10pt]{geometry}
4.3 Optionstypen
geometryOptionen sind in vier Typen eingeteilt:
1. Wahrheitswerttyp
Er nimmt einen Wahrheitswert an (true (wahr)oderfalse (falsch)). Falls kein Wert angegeben ist, wird standardmäßigtrue (wahr)eingesetzt.
hSchlüsseli=true false.
hSchlüsseliohne Wert ist äquivalent zuhSchlüsseli=true.
Beispiele: verbose=true,includehead,twoside=false.
Der Papiername ist eine Ausnahme. Der bevorzugte Papiername sollte ohne Wert angegeben wer- den. Welcher Wert auch immer gegeben ist er wird ignoriert. Zum Beispiel ista4paper=XXXäquiva- lent zua4paper.
2. Typ mit einzelnem Wert
Man benötigt einen zwingenden Wert.
hSchlüsseli=hWerti.
Beispiele: width=7in,left=1.25in,footskip=1cm,height=.86\paperheight.
1CTAN:macros/latex/required/tools
3. 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.
hSchlüsseli={hWert1i,hWert2i}.
hSchlüsseli=hWertiist äquivalent zuhSchlüsseli={hWerti,hWerti}.
Beispiele: hmargin={1.5in,1in},scale=0.8,body={7in,10in}.
4. Typ mit drei Werten
Man benötigt drei zwingende Werte, kommagetrennte Werte in geschweiften Klammern.
hSchlüsseli={hWert1i,hWert2i,hWert3i}
Jeder Wert muss ein Maß sein oder Null. Falls sie einen leeren Wert angeben oder ‘*’, dies bedeu- tet 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.Beispiele:
hdivide={2cm,*,1cm},vdivide={3cm,19cm, },divide={1in,*,1in}.
5 Details zu Optionen
Dieses Kapitel beschreibt alle Optionen, die ingeometryverfügbar sind. Optionen mit einem Dolch† sind nicht vorhanden als Argumente von\newgeometry(Lesen sie Kapitel7).
5.1 Papiergröße
Die Optionen unten dienen zum Einstellen der Größe des Papiers/Mediums und der Orientierung.
†paper (Papier) papername (Papiername)
gibt die Papiergröße anhand des Namens an.paper=hPapiernamei. Für besseren Komfort können sie den Papiernamen ohnepaper=angeben.a4paperist beispielsweise
äquivalent zupaper=a4paper.
†a0paper, a1paper, a2paper, a3paper, a4paper, a5paper, a6paper, b0paper, b1paper, b2paper, b3paper, b4paper, b5paper, b6paper, c0paper, c1paper, c2paper, c3paper, c4paper, c5paper, c6paper, b0j, b1j, b2j, b3j, b4j, b5j, b6j,
ansiapaper, ansibpaper, ansicpaper, ansidpaper, ansiepaper, letterpaper, executivepaper, legalpaper
gibt den Papiernamen an. Der Wert wird ignoriert, sogar wenn einer angegeben wird.
Beispielsweise hat das Folgende den gleichen Effekt:a5paper,a5paper=true,
a5paper=falseund so weiter.a[0-6]paper,b[0-6]paperundc[0-6]papersind 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]jsollte für die JIS B-Serien genutzt werden.
†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.
†paperwidth Breite des Papiers.paperwidth=hLängei.
†paperheight Höhe des Papiers.paperheight=hLängei.
†papersize Breite und Höhe des Papiers.papersize={hBreitei,hHöhei}oderpapersize=hLängei.
†landscape wechselt die Papierorientierung in den Landschaftsmodus.
†portrait wechselt die Papierorientierung in den Portraitsmodus. Dies ist das Gleiche wie landscape=false.
Die Optionen für den Papiernamen (z. B.,a4paper) und die Orientierung (portraitundlandscape) können als Dokumentklassenoptionen benutzt werden. Zum Beispiel können sie
\documentclass[a4paper,landscape]{article}eingeben, dann werdena4paperundlandscapeauch ingeometryabgearbeitet. Dies ist ebenso im Fall vontwoside (zweiseitig)undtwocolumn (zweispaltig) (Lesen sie auch Kapitel5.5).
5.2 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 beispielsweisea4paperundlayout=a5papernutzen, 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\newgeometryerreichbar, sodass sie die Lay- outgröße in der Mitte des Dokuments verändern können. Die Papiergröße selbst kann so nicht geändert werden. Abbildung4zeigt, was die Unterschiede zwischenlayoutundpapersind.
layout gibt die Layoutgröße vom Papiernamen an.layout=hPapiernamei. Alle Papiernamen, die ingeometrydefiniert sind, sind wählbar. Lesen sie auch Kapitel5.1für mehr Details.
layoutwidth Breite des Layouts.layoutwidth=hLängei.
layoutheight Höhe des Layouts.layoutheight=hLängei.
layoutsize Breite und Höhe des Layouts.layoutsize={hBreitei,hHöhei}oderlayoutsize=hLängei.
layouthoffset gibt den horizontalen Versatz von der linken Kante des Papiers an.
layouthoffset=hLängei.
layoutvoffset gibt den vertikalen Versatz von der oberen Kante des Papiers an.
layoutvoffset=hLängei.
layoutoffset gibt beides, horizontalen und vertikalen Versatz an.layoutoffset={hhoffseti,hvoffseti}
oderlayoutsize=hLängei.
Papier Layout Fuß
Textbereich Kopf Layoutbreite
-
6
Layouthöhe
?
Papier Layout Fuß
Textbereich Kopf layouthoffset
- AA
layoutvoffset
? 6
Abbildung 4: 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.
5.3 Größe des Textbereichs
Die Optionen, die die Größe desdruckbaren Bereichsangeben, werden in diesem Kapitel beschrieben.
hscale Verhältnis der Breite desdruckbaren Bereichszur\paperwidth (Papierbreite).
hscale=hh-scalei, z. B.hscale=0.8ist äquivalent zuwidth=0.8\paperwidth (Papierbreite). (0.7ist der Standard)
vscale Verhältnis der Höhe desdruckbaren Bereichszur\paperheight (Papierhöhe), z. B.
vscale=hv-scalei. (0.7ist der Standard)vscale=0.9ist äquivalent zu height=0.9\paperheight (Papierhöhe).
scale Verhältnis desdruckbaren Bereichszum Papier.scale={hh-scalei,hv-scalei}oder scale=hscalei. (0.7ist der Standard)
width totalwidth
Breite desdruckbaren Bereichs.width=hLängeiodertotalwidth=hLängei. Dieses Maß korrespondiert zurtextwidth (Textbreite), aber wennincludempauftruegesetzt ist, dann ist dieBreite≥Textbreite, weil dieBreitedie Breite der Randnotizen beinhaltet. Wenn dieTextbreiteund dieBreitegleichzeitig angegeben werden, dann hat dieTextbreiteeine höhere Priorität als dieBreite.
height totalheight
Höhe desdruckbaren Bereichs, wobei Kopf und Fuß standardmäßig ausgeschlossen sind.
Wennincludeheadoderincludefootgesetzt ist, dann beinhaltet dieheight (Höhe) den Kopf oder den Fuß der Seite sowie dietextheight (Texthöhe).height=hLängei odertotalheight=hLängei. Falls beide,textheight (Texthöhe)undheight (Höhe), angegeben sind, wird dieheight (Höhe)ignoriert werden.
total Breite und Höhe desdruckbaren Bereichs.
total={hBreitei,hHöhei}odertotal=hLängei.
textwidth gibt die\textwidth (Textbreite), die Breite desKörpers(der Textbereich) an.
textwidth=hLängei.
textheight gibt die\textheight (Texthöhe), die Höhe desKörpers(der Textkörper) an.
textheight=hLängei.
text body gibt beides, die\textwidth (Textbreite)und\textheight (Texthöhe)des Körpers der Seite an.body={hBreitei,hHöhei}odertext=hLängei.
lines erlaubt dem Benutzer, die\textheight (Texthöhe)durch die Anzahl der Zeilen anzugeben.lines=hganzzahliger Werti.
includehead schließt den Kopf der Seite, die\headheight (Kopfhöhe)und\headsep
(Kopftrennung)in dendruckbaren Bereichein. Diese Option ist in den Voreinstellungen durchfalsedeaktiviert. Es ist das Gegenteil vonignorehead. Betrachten sie auch Abbildung2und Abbildung5.
includefoot schließt den Fuß der Seite,\footskip (Fußbereich), in dendruckbaren Bereichein. Es ist das Gegenteil vonignorefoot. Die Voreinstellung istfalse(deaktiviert). Betrachten sie auch Abbildung2und Abbildung5.
includeheadfoot
setzt beides,includeheadundincludefoot, auftrue, dies ist das Gegenteil von ignoreheadfoot. Betrachten sie auch Abbildung2und Abbildung5.
includemp schließt die Randnotizen, die\marginparwidth (Randnotizbreite)und
\marginparsep (Randnotiztrennung)in denKörperein, wenn die horizontalen Maße berechnet werden.
includeall setzt beides,includeheadfootundincludempauftrue(aktiv). Betrachten sie auch Abbildung5.
ignorehead missachtet den Kopf der Seite,headheight (Kopfhöhe)undheadsep (Kopftrennung), sind ausschlaggebend für das vertikale Layout, aber diese ändern dessen Längen nichts.
Es ist äquivalent zuincludehead=false. Diese Option ist mittruevoreingestellt. Lesen sie auchincludehead.
ignorefoot missachtet den Fuß der Seite, derfootskip (Fußbereich), ist ausschlaggebend für das vertikale Layout, aber dies ändert die Länge nicht. Diese Voreinstellung der Option ist true. Lesen sie auchincludefoot.
ignoreheadfoot
setzt beides,ignoreheadundignorefootauftrue. Lesen sie auchincludeheadfoot.
ignoremp vernachlässigt die Randnotizen bei der Berechnung der horizontalen Ränder (der Standard isttrue). Wenn die Randnotizen die Seite überfüllen, dann wird eine Warnmeldung angezeigt werden, wennverbose=trueaktiviert ist. Sehen sie auch includempund Abbildung5.
ignoreall setzt beides,ignoreheadfootundignorempauftrue. Lesen sie auchincludeall.
heightrounded
Diese Option rundet die\textheight (Texthöhe), umn-Mal mehr (n: ist eine ganze Zahl)\baselineskipplus\topskip, um “underfull vbox” in manchen Fällen zu vermeiden. Zum Beispiel, wenn die\textheight (Texthöhe)486pt ist, mit
\baselineskip12pt und\topskip10pt, dann
(39×12pt+ 10pt=) 478pt<486pt<490pt(= 40×12pt+ 10pt), als Ergebnis wird die\textheight (Texthöhe)auf 490 pt aufgerundet.
heightrounded=falseist voreingestellt.
Abbildung5illustriert die verschiedenen Layouttypen mit den verschiedenen Layoutmodi. Die Maße für einen Kopf und einen Fuß können durch dennohead- odernofoot-Modus kontrolliert werden, dies
setzt jede Länge auf 0 pt. Auf der anderen Seite verändern Optionen mit dem Präfix ignore nicht die korrespondierenden, ursprünglichen Maße.
Die folgenden Optionen können den Körper und die Ränder gleichzeitig angeben, mit drei kommage- trennten Werten in geschweiften Klammern.
(a)includeheadfoot druckbarer Bereich
Textbreite
headheight headsep
textheight
Fußbereich Kopf
Körper
Fuß
(b)includeall druckbarer Bereich
Kopf
Fuß Rand-
notiz
Fuß textwidth
marginparwidth marginparsep (c)includefoot
druckbarer Bereich
textheight
footskip Körper
Fuß textwidth
(d)includefoot,includemp druckbarer Bereich
Körper Rand-
notiz
Fuß textwidth
marginparwidth marginparsep
Abbildung 5: Musterlayouts für den druckbaren Bereich mit verschiedenen Veränderungen. (a) includeheadfoot, (b) includeall, (c) includefoot und (d) includefoot,includemp.
Wenn reversempauf true gesetzt ist, dann werden die Orte für die Randnotizen auf je- der Seite getauscht. Die Optiontwoside tauscht beides, die Ränder und die Randnotizen auf der Rückseite. Beachten sie, dass die Randnotiz gedruckt wird, falls vorhanden, trotz das ignorempoderincludemp=falseund Überlauf der Seite, in einigen Fällen.
hdivide horizontale Aufteilung (links,Breite,rechts).hdivide={hlinker Randi,hBreitei,hrechter Randi}. 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 bestimmenpaperwidth-2cm-15cm.
vdivide vertikale Aufteilung (oben,Höhe,unten).vdivide={hoberer Randi,hHöhei,hunterer Randi}.
divide divide={A,B,C}wird interpretiert alshdivide={A,B,C}undvdivide={A,B,C}.
5.4 Randgröße
Die Optionen zum Spezifizieren der Größe der Ränder sind unten aufgelistet.
left lmargin inner
linker Rand (für einseitige Dokumente) oder innerer Rand (für zweiseitige Dokumente) desdruckbaren Bereichs. Mit anderen Worten, es ist die Distanz zwischen der linken (inneren) Kante des Papiers und der desdruckbaren Bereichs.left=hLängei.
inner (innen)hat keine besondere Bedeutung, nur eine alternative fürleftund lmargin.
right rmargin outer
rechter oder äußerer Rand desdruckbaren Bereichs.right=hLängei.
top tmargin oberer Rand der Seite.top=hLängei. Beachten sie, dass diese Option nichts mit dem ursprünglichen Maß\topmarginzu tun hat.
bottom bmargin
unterer Rand der Seite.bottom=hLängei.
hmargin linker und rechter Rand.hmargin={hlinker Randi,hrechter Randi}oderhmargin=hLängei.
vmargin oberer und unterer Rand.vmargin={hoberer Randi,hunterer Randi}oder vmargin=hLängei.
margin margin={A,B}ist äquivalent zuhmargin={A,B}undvmargin={A,B}.margin=Awird automatisch erweitert zuhmargin=Aundvmargin=A.
hmarginratio Verhältnis des horizontalen Rands deslinken(inneren) zumrechten(äußeren). Der Wert deshVerhältnissesisollte 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:3anstatt1:1.5. Das
Standardverhältnis ist1:1für einseitige Dokumente,2:3für zweiseitige.
vmarginratio Verhältnis des vertikalen Randes, desoberenRandes zumunteren. Das Standardverhältnis ist2:3.
marginratio ratio
horizontale und vertikale Randverhältnisse.marginratio={hhorizontales Verhältnisi,hvertikales Verhältnisi}odermarginratio=hVerhältnisi.
hcentering aktiviert die automatische horizontale Zentrierung und ist äquivalent zu
hmarginratio=1:1. Es ist für die Option oneside auftruegesetzt. Lesen sie auch hmarginratio.
vcentering aktiviert die automatische vertikale Zentrierung und ist äquivalent zu
vmarginratio=1:1. Diese Option ist standardmäßig auffalsegesetzt. Lesen sie auch vmarginratio.
centering aktiviert die automatische Zentrierung und ist äquivalent zumarginratio=1:1. Lesen sie auchmarginratio. Der Standard istfalse.
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\@twosideund
\@mparswitchSchalter. Lesen sie auchasymmetric.
asymmetric führt ein zweiseitiges Layout ein, wobei die Ränder nicht getauscht werden auf alternativen Seiten (durch die Einstellung\oddsidemarginzu\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 auchtwoside.
bindingoffset
entfernt einen angegeben Raum von der linken Seite bei oneside oder der inneren Seite bei twoside.bindingoffset=hLängei. Dies ist nützlich, wenn die Seiten durch eine Pressbindung verbunden sind (glued, stitched, stapled . . . ). Betrachten sie auch Abbildung6.
hdivide Siehe Beschreibung im Kapitel5.3.
vdivide Siehe Beschreibung im Kapitel5.3.
divide Siehe Beschreibung im Kapitel5.3.
5.5 Ursprüngliche Maße
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 Abbildung1).
headheight head
modifiziert die\headheight, die Höhe des Kopfes.headheight=hLängeioder head=hLängei.
headsep modifiziert die\headsep, die Abtrennung zwischen dem Kopfbereich und dem Text (body).headsep=hLängei.
a)jede Seite für oneside oder eine einzelne Seite für twoside
Papier druckbarer Bereich
- left
(inner)
- right
(outer)
- bindingoffset
b) (Rück-) Seiten für twoside
Papier druckbarer Bereich
- outer
(right)
- inner (left)
bindingoffset
Abbildung 6: Die Optionbindingoffsetfügt eine angegebene Länge zum inneren Rand hinzu. Beachten sie, dass dietwosideOption die horizontalen Ränder und die Randnotizen zusammen mit bindingoffsetauf jeder Seite tauscht (sieheb)), aber dieasymmetricOption unterdrücke den Tausch der Ränder und der Randnotizen (aberbindingoffsetwird dennoch getauscht).
footskip foot
modifiziert den\footskip, die Distanzabtrennung zwischen der Grundlinie der letzten Zeile des Textes und der Grundlinie des Fußes.footskip=hLängeioderfoot=hLängei.
nohead entfernt den Platz für den Kopf der Seite, dies ist äquivalent zu\headheight=0ptund
\headsep=0pt.
nofoot entfernt den Platz für den Fuß der Seite, dies ist äquivalent zu\footskip=0\,pt.
noheadfoot ist äquivalent zunoheadundnofoot, dies bedeutet, dass\headheight,\headsepund
\footskipalle auf0pteingestellt werden.
footnotesep verändert die Maße\skip\footins, die Abtrennung zwischen dem unteren Ende des Textkörpers und dem oberen Ende des Fußnotentextes.
marginparwidth marginpar
modifiziert die\marginparwidth, die Breite der Randnotizen.marginparwidth=hLängei.
marginparsep modifiziert die\marginparsep, die Abtrennung zwischen dem Körper und den Randnotizen.marginparsep=hLängei.
nomarginpar schrumpft den Platz für die Randnotizen auf 0 pt, dies ist äquivalent zu
\marginparwidth=0ptund\marginparsep=0pt.
columnsep modifiziert die\columnsep, die Abtrennung zwischen zwei Spalten imtwocolumn Modus.
hoffset modifiziert\hoffset.hoffset=hLängei.
voffset modifiziert\voffset.voffset=hLängei.
offset horizontaler und vertikaler Versatz.
offset={hhoffseti,hvoffseti}oderoffset=hLängei.
twocolumn aktiviert dentwocolumnModus mit\@twocolumntrue.twocolumn=falsebezeichnet den onecolumn Modus (Modus mit einer Spalte) mit\@twocolumnfalse. Anstatt twocolumn=false, können sieonecolumnangeben (die Vorgabe isttrue)
onecolumn arbeitet alstwocolumn=false. Auf der anderen Seite istonecolumn=falseäquivalent zu twocolumn.
twoside aktiviert beides,\@twosidetrueund\@mparswitchtrue. Lesen sie auch Kapitel5.4.
textwidth lässt sie die\textwidth (Textbreite)direkt einstellen. Lesen sie auch Kapitel5.3.
textheight lässt sie die\textheight (Texthöhe)direkt einstellen. Lesen sie auch Kapitel5.3.
reversemp reversemarginpar
sorgt dafür, dass die Randnotizen am (inneren) linken Rand erscheinen, mit
\@reversemargintrue. Die Option verändert nichts amincludempModus. Diese Option ist mitfalsevoreingestellt.
5.6 Treiber
Dieses Paket unterstützt die Treiberdvips,dvipdfm,pdftex,luatex,xetexundvtex. Sie können auch dvipdfmfürdvipdfmxeinstellen undxdvipdfmx.pdftexfürpdflatex, undvtexfür die VTEX Umgebung. Die Treiberoptionen sind exklusiv. Der Treiber kann durch beides eingestellt werden,driver=hTreibernamei oder die direkte Angabe eines Treibers wiepdftex. Standardmäßig nimmtgeometryden Treiber, der am besten zum benutzten System passt. Deshalb müssen sie in den meisten Fällen keinen Treiber angeben.
Wie auch immer, wenn siedvipdfmbenutzen wollen, dann sollten sie dies explizit angeben.
†driver gibt den Treibernamen mitdriver=hTreibernameian.dvips,dvipdfm,pdftex,vtex, xetex,autoundnonesind als Treibername einsetzbar. Außer den Namen fürautound nonekönnen alle Treiber direkt mit dem Namen, ohnedriver=, angegeben werden.
driver=autoschaltet die automatische Detektion ein, egal was die vorherigen
Einstellungen waren.driver=noneschaltet 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 dascropPaket mit geometrynutzen wollen, dann sollten sie\usepackage[driver=none]{geometry}
aufrufen, bevor sie dascropPaket aufrufen.
†dvips schreibt die Papiergröße in die dvi Ausgabe, mit dem\specialMakro. Wenn siedvips 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ürdvipsnicht.
†dvipdfm arbeitet wiedvips, ausgenommen die landscape Korrektur. Sie können diese Option einschalten, wenn siedvipdfmxnutzen undxdvipdfmx, um die dvi Ausgabe zu erzeugen.
†pdftex setzt\pdfpagewidthund\pdfpageheightintern.
†xetex ist dasselbe wiepdftex, ausgenommen das Ignorieren von\pdf{h,v}origin, das in X E LATEX 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 pdftexeinstellt, nicht länger notwendig ist. Trotzdem gibt es keine Probleme, sogar wenn die Datei nicht gelöscht wird. Anstattxetex, können siedvipdfmangeben, mit X E LATEX, wenn sie die Besonderheiten von dvipdfm nutzen wollen, die X E TEX unterstützt.
†vtex setzt die Maße\mediawidthund\mediaheightfür VTEX. Wenn dieser Treiber
ausgewählt ist (explizit oder automatisch), wirdgeometryden Ausgabemodus (DVI, PDF oder PS), der in VTEXgewählt ist, selbstständig herausfinden und die richtigen
Einstellungen für ihn machen.
Wenn der explizit angegebene Treiber nicht zum benutzten Textsatzprogramm passt, dann wird der Stan- dardtreiberdvipsausgewählt.
5.7 Sonstige Optionen
Die sonstigen nützlichen Optionen werden jetzt beschrieben.
†verbose zeigt die Parameterergebnisse im Terminal an.verbose=false(Standard) schreibt diese nur in die Log-Datei.
†reset setzt die Layoutmaße zurück und nimmt die Einstellungen an, die vor dem Laden von geometryvorgegeben waren. Die Optionen, die ingeometry.cfgangegeben sind, werden auch entfernt. Beachten sie, dass dies nichtpassundmagmittruedimen zurücksetzen kann.reset=falsehat keine Auswirkungen und kann ein vorheriges reset(=true), falls es dies gibt, nicht aufheben. Zum Beispiel, wenn sie
\documentclass[landscape]{article}
\usepackage[twoside,reset,left=2cm]{geometry}
eingeben, mit\ExecuteOptions{scale=0.9}ingeometry.cfg, dann bleiben landscapeundleft=2cmwirksam undscale=0.9undtwosidesind unwirksam.
†mag setzt den Vergrößerungswert (\mag) und modifiziert automatisch\hoffsetund
\voffsetentsprechend der Vergrößerung.mag=hWerti. Beachten sie, dasshWertiein ganzzahliger Wert sein sollte, wobei 1000 die Normalgröße ist. Ein Beispiel:mag=1414 mita4paperbietet eine erweiterte Druckgröße ina3paper, welches1.414(=√
2) mal
größer alsa4paperist. Die Vergrößerung der Schriftart benötigt extra Speicherplatz.
Beachten sie, dass die Einstellung über jeder anderen Einstellung mit ‘true’ Maßen stehen sollte, solchen Maßen wie1.5truein,2truecmund so weiter.Lesen sie auch dietruedimenOption.
†truedimen verändert alle internen expliziten Maßwerte intrueMaße, z. B. wird1inzu1truein.
Typischerweise wird diese Option zusammen mit dermagOption genutzt. Beachten sie, dass dies unwirksam gegenüber extern angegebenen Maßen ist. Ein Beispiel: Wenn sie
“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 “mag=1440, margin=10truept, truedimen”.
†pass deaktiviert alle geometry Optionen und Berechnungen, ausgenommenverboseund 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 geometrygenutzt werden.
†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.
†showcrop druckt Schnittmarken auf jede Ecke des benutzerdefinierten Layoutbereichs.
6 Verarbeitungsoptionen
6.1 Reihenfolge des Ladens
Wenn es eine geometry.cfg gibt, irgendwo wo es TEX finden kann, dann lädt geometry diese zuerst.
Ein Beispiel: Ingeometry.cfgkönnen sie\ExecuteOptions{a4paper}schreiben, welches A4-Format als das Standardpapier angibt. Grundlegend können sie alle Optionen, die in geometry definiert sind, mit
\ExecuteOptions{}nutzen.
Die Reihenfolge des Ladens in der Präambel ihres Dokuments ist wie folgt:
1. geometry.cfg, wenn sie existiert.
2. Optionen, die mit\documentclass[hOptioneni]{...}angegeben werden.
3. Optionen, die mit\usepackage[hOptioneni]{geometry}angegeben werden.
4. Optionen, die mit\geometry{hOptioneni}angegeben werden. Die jeweilige Option kann mehrfach aufgerufen werden. (Die resetOption wird alle Optionen, die in \usepackage{geometry}oder
\geometryangegeben wurden, zurücksetzen.)
6.2 Reihenfolge der Optionen
Die Spezifikation dergeometryOptionen ist unabhängig von der Reihenfolge und überschreibt die vorhe- rigen gleichartigen Einstellungen. Ein Beispiel:
[left=2cm, right=3cm]ist äquivalent zu[right=3cm, left=2cm].
Der mehrfache Aufruf der Optionen überschreibt die jeweiligen vorherigen Einstellungen. Auch hier ein Beispiel:
[verbose=true, verbose=false]das Ergebnis istverbose=false.
[hmargin={3cm,2cm}, left=1cm]ist das Gleiche wiehmargin={1cm,2cm}, wobei der linke (oder inne- re) Rand durchleft=1cmüberschrieben wird.
resetundmagsind Ausnahmen. DieresetOption entfernt alle geometry Optionen (ausgenommen pass) davor. Wenn sie
\documentclass[landscape]{article}
\usepackage[margin=1cm,twoside]{geometry}
\geometry{a5paper, reset, left=2cm}
einstellen, dann werdenmargin=1cm(Rand),twosideunda5paperentfernt und ist gelegentlich äquiva- lent zu
\documentclass[landscape]{article}
\usepackage[left=2cm]{geometry}
DiemagOption sollte vor jeder anderen Einstellungen mit ‘true’ Länge, solche wieleft=1.5truecm, width=5trueinund so weiter, stehen. Die\magOption kann vor dem Aufruf dieses Pakets stehen.
6.3 Priorität
Es gibt verschiedene Wege die Maße desKörperseinzustellen:scale,total,textundlines. Dasgeome- try Paket gibt den konkreteren Spezifikationen eine höhere Priorität. Hier ist die Prioritätsregel für den Textkörper.
Priorität: niedrig −→ hoch
hscale vscale scale
<
width height total
<
textwidth textheight text
<lines.
Ein Beispiel:
\usepackage[hscale=0.8, textwidth=7in, width=18cm]{geometry}
ist das Gleiche wie\usepackage[textwidth=7in]{geometry}. Ein weiteres Beispiel:
\usepackage[lines=30, scale=0.8, text=7in]{geometry}
resultiert in[lines=30, textwidth=7in].
6.4 Standards
Dieses Kapitel summiert die Standardeinstellungen für die automatische Vervollständigung, die später beschrieben wird.
Das Standardverhältnis für den vertikalen Rand ist2/3, namentlich,
top:bottom= 2 : 3 Standard. (6)
Was den horizontalen Rand betrifft, hängen die Standardwerte davon ab, ob das Dokument einseitig oder zweiseitig ist,
left(inner) :right(outer) =
1 : 1 Standard für oneside,
2 : 3 Standard für twoside. (7) Offensichtlich ist, dass der Standard für den horizontalen Rand für einseitig (oneside) ‘centering’ ist.
DasgeometryPaket besitzt folgende Standardeinstellungen füronesided (einseitige)Dokumente:
• scale=0.7(Textkörperist0.7×Papier)
• marginratio={1:1, 2:3}(1:1 für horizontal und 2:3 für vertikale Ränder)
• ignoreall(der Kopf, der Fuß, die Randnotizen sind ausgeschlossen, wenn die Größe desKörpers (body)berechnet wird.)
Für twosided (zweiseitige)Dokumente mit der twosideOption, ist die Standardeinstellung die gleiche, wie beionesided (einseitigen), ausgenommen, dass das horizontale Randverhältnis auf2:3gesetzt wird.
Zusätzliche Optionen überschreiben die vorher angegebenen Maße.
6.5 Autovervollständigung
Abbildung7zeigt 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. S(m,b)zeigt die Spezifikation mit einer Menge an Zahlen (Rand,Körper) = (m, b).
Ein Beispiel: Die Spezifikation width=14cm, left=3cm ist kategorisiert in S(1,1), welches eine ad- äquate Spezifikation ist. Wenn sieright=4cmhinzufügen, dann wird esS(2,1)sein und überspezifiziert.
Wenn nurwidth=14cmgegeben ist, dann ist es inS(0,1)unterspezifiziert.
DasgeometryPaket besitzt einen Autovervollständigungsmechanismus, der, wenn die Layoutparame- ter unter- oder überspezifiziert sind, die Unstimmigkeiten herausarbeitet und dann die Standards nutzt und andere Verhältnisse. Hier sind die Spezifikationen und die Vervollständigungsregeln.
0 Textkörper
1
0
S(0,0) benutzescale
B B
S(0,1) nutzemarginratio
Rand 1
benutzescale
wennratio angegeben
S(1,1) B B P P
S(1,0)
lösbar
2
S(2,0) lösbar
vergesse denbody S(2,1) P
P
BB
Abbildung 7: Die SpezifikationenS(0,0)zuS(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.S(m,b)bezeichnet eine Spezifikation mit einer Menge an Zahlen(Rand,Körper) = (m, b).
S(0,0) Es ist nichts angegeben. DasgeometryPaket gibt für denbody (Körper)den Standard scale(= 0.7) vor.
Ein Beispiel:width (Breite)wird auf0.7×layoutwidtheingestellt. Beachten sie, dass standardmäßig dielayoutwidthundlayoutheight(Layoutbreite und -höhe) gleich der\paperwidthund\paperheight(Papierbreite und -höhe) sein werden.
Demnach wirdS(0,0)zuS(0,1). Siehe auchS(0,1).
S(0,1) Nur derbodyist angegeben, wie z. B.width=7in,lines=20,body={20cm,24cm}, scale=0.9und so weiter. Dann setztgeometrydie 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:
top:bottom= 2 : 3 Standard. (8) Was das horizontale Verhältnis betrifft, hängt das Standardverhältnis davon ab, ob das Dokument einseitig oder zweiseitig ist.
left(inner) :right(outer) =
1 : 1 Der Standard bei einseitig,
2 : 3 Der Standard bei zweiseitig. (9) Wenn zum Beispiel auf A4-Papier dieheight=22cmangegeben ist, dann berechnet geometrydentop (oberen)Rand wie folgt:
top = (layoutheight−height)×2/5
= (29.7−22)×2/5 = 3.08(cm) (10) Demnach sind dertop (obere)Rand und dieheight (Höhe)des Körpers bestimmt wurden, die Spezifikation für die Vertikale wird also zuS(1,1)und alle Parameter können gelöst werden.
S(1,0) Nur ein Rand ist angegeben, wiebottom=2cm,left=1in,top=3cmund so weiter.
• Wenn das Randverhältnisnichtangegeben ist, dann nimmtgeometryden Standard fürscale(= 0.7) für denbodyan. Wenn beispielsweisetop=2.4cm angegeben ist, dann setztgeometry
height=0.7×layoutheight (=0.7\paperheightby default), dann wirdS(1,0)zuS(1,1), wobei derbottommit
layoutheight−(height+top)berechnet wird und in 6.51 cm auf A4-Papier resultiert, wenn die Layoutgröße gleich der Papiergröße ist.
• Wenn das Randverhältnis angegeben ist, wiehmarginratio={1:2},
vratio={3:4}und so weiter, dann setztgeometrydie anderen Ränder mit dem gegebenen Randverhältnis. Falls z. B. eine Menge an Optionen
“top=2.4cm,vratio={3:4}” spezifiziert wurde, dann setztgeometrydenbottom auf den berechneten Wert von3.2cm
bottom=top/3×4 = 3.2cm Demnach wirdS(1,0)zuS(2,0).
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 nurtop=2.4cmgegeben ist, dann bekommen sie in Version 4 oder früherbottom=2.4cm, aber sie werdenbottom=6.51cmbei Version 5 erhalten.
S(2,1) Derbody (Körper)und zweimargins (Ränder)sind angegeben, wie z. B.
vdivide={1in,8in,1.5in}, “left=3cm,width=13cm,right=4cm” und so weiter. Seit geometrygrundsätzlich die Priorität an diemarginsgibt, wenn die Maße
überspezifiziert sind, vergisstgeometrydenbodyund setzt diesen zurück. Ein Beispiel:
Wenn sie
\usepackage[a4paper,left=3cm,width=13cm,right=4cm]{geometry}, angeben, dann wird diewidth (Breite)auf 14 cm zurückgesetzt, da die Breite von A4-Papier 21 cm ist.
7 Verändern des Layouts innerhalb des Dokuments
Die Version 5 bietet die neuen Befehle \newgeometry{· · ·} und und\restoregeometryan, welche es ihnen erlauben, das Seitenlayout im Dokuments zu verändern. Nicht wie \geometry in der Präambel, ist\newgeometrynur 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=a4paperund so weiter), die nicht durch\newgeometrygeändert werden können.
Der Befehl\restoregeometrysichert das in der Präambel (vor\begin{document}) angegebene Sei- tenlayout, welches mit\usepackage{geometry},\geometryund deren Optionen erzeugt wurde.
Beachten sie, dass beide,\newgeometryund\restoregeometry, ein\clearpageeinfü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 an- gegeben:hmargin=3cm(left (linker)und right (rechter)Rand sind3cmlang), dies wird in L2 in left=3cm,right=1cmundbottom=0.1cmgeändert. Das Layout L1 wird mit\restoregeometrygesichert.
\usepackage[hmargin=3cm]{geometry}
\begin{document}
Layout L1
\newgeometry{left=3cm,right=1cm,bottom=0.1cm}
Layout L2 (neu)
\restoregeometry
Layout L1 (wiederhergestellt)
\newgeometry{margin=1cm,includefoot}
Layout L3 (neu)
\end{document}
(gesichert) Kopf
Textkörper
Fuß
L1
r r r
\newgeometry Kopf
Textkörper
Fuß L2 (neu)
r r r
\restoregeometry Kopf
Textkörper
Fuß
L1 (wiederhergestellt) r r r
\newgeometry
Textkörper
Fuß L3 (neu)
Eine Menge von Befehlen\savegeometry{hNamei}und\loadgeometry{hNamei}ist nützlich, wenn sie mehrere verschiedene Layouts in ihrem Dokument nutzen wollen. Ein Beispiel:
\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}
8 Beispiele
1. 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:1gesetzt ist, wie es bei einseitigen Dokumenten der Standard ist.
• centering
• marginratio=1:1
• vcentering
2. Ein zweiseitiges Layout mit einem Versatz von 1 cm für das Binden auf der Innenseite:
• twoside, bindingoffset=1cm
In diesem Fall ist dietextwidth (Textbreite)kürzer als der Standard bei zweiseitigen Dokumen- ten0.7×1cm(=0.7cm), weil die Standardbreite desbody (Körpers)mitscale=0.7eingestellt ist, was bedeutet,width=0.7×layoutwidth(=0.7\paperwidthstandardmäßig).
3. 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 dendruckbaren Bereich:
Die zwei Beispiele haben das gleiche Ergebnis.
• left=3cm, right=2cm, lines=40, top=2.5in, includeheadfoot
• hmargin={3cm,2cm}, tmargin=2.5in, lines=40, includeheadfoot
4. Ein Layout mit einer Höhe desdruckbaren Bereichsvon 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.
• vdivide={*, 10in, 2cm}
• bmargin=2cm, height=10in
• bottom=2cm, textheight=10in
Beachten sie, dass die Maße für Kopf and Fuß von der Höhe des druckbaren Bereichs ausge- schlossen sind. Ein zusätzlichesincludefoot sorgt dafür, dass der\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\footskip. In anderen Worten,height=textheight +footskipfallsincludefoot=true ist, in diesem Falle.
• bmargin=2cm, height=10in, includefoot
• bottom=2cm, textheight=10in, includefoot
5. Ein Layout mit einer textwidth (Textbreite) und textheight (Texthöhe) von 90% des Papiers und einem zentrierten body: Jede der unteren Lösungen erzeugt das gleiche Seitenlayout, sofern die layoutwidth (Layoutbreite)und dielayoutheight (Layouthöhe)nicht geändert werden, also der Standard beibehalten wird.
• scale=0.9, centering
• text={.9\paperwidth,.9\paperheight}, ratio=1:1
• width=.9\paperwidth, vmargin=.05\paperheight, marginratio=1:1
• hdivide={*,0.9\paperwidth,*}, vdivide={*,0.9\paperheight,*} (für einseitige Doku- mente)
• margin={0.05\paperwidth,0.05\paperheight}
Sie können einheightroundedhinzufügen, um eine “underfull vbox warning” (Warnmeldung) wie Underfull \vbox (badness 10000) has occurred while \output is active.
zu vermeiden. Lesen sie auch Kapitel5.3für eine detaillierte Beschreibung zuheightrounded.
6. Ein Layout, bei dem die Breite für die Randnotizen auf 3 cm eingestellt ist und in die Breite des druckbaren Bereichseinbezogen ist:
Die folgenden Beispiele erzeugen das Gleiche.
• marginparwidth=3cm, includemp
• marginpar=3cm, ignoremp=false
7. Ein Layout, bei dem derbodydas ganze Papier (A5-Papier imlandscapeModus) einnimmt:
Die folgenden Beispiele sind gleich.
• a5paper, landscape, scale=1.0
• landscape=TRUE, paper=a5paper, margin=0pt
8. Ein Bildschirmgrößenlayout, verwendbar für Präsentationen mit dem PC oder dem Beamer:
\documentclass{slide}
\usepackage[screen,margin=0.8in]{geometry}
...
\begin{slide}
...
\end{slide}
9. Ein Layout mit vergrößerter Schrift und Zwischenräumen, von A4 auf A3:
Im unteren Fall ist die sich ergebende Papiergröße A3.
• a4paper, mag=1414.
Wenn sie ein Layout mit doppelt so großer Schriftgröße, aber ohne das Verändern der Papiergröße wollen, dann tippen sie
• letterpaper, mag=2000, truedimen.
Sie können diedvipsOption hinzufügen, das ist nützlich, um eine Vorschau der eigenen Papiergrö- ße zu betrachten, die durchdvioutoderxdvierzeugt wird.
10. Verändern des Layouts auf der ersten Seite und Beibehalten der anderen Einstellungen vor dem Laden vongeometry:
Benutzen sie diepassOption,\newgeometryund\restoregeometry.
\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}
11. Ein komplexes Seitenlayout:
\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}
Probieren sie das Layoutsetzen selbst und überprüfen sie, wie das Ergebnis ist.:-)
9 Bekannte Probleme
• Mitmag6= 1000undtruedimen,paperwidth undpaperheightist die Anzeige im verbose-Modus verschieden von der wirklichen Größe der resultierenden PDF. Die PDF ist aber korrekt.
• Mitmag6= 1000,notruedimenundhyperrefsolltehyperrefvorgeometrygeladen werden. Andern- falls wird die PDF-Größe fehlerhaft.
• Mit demcropPaket undmag6= 1000arbeitet diecenter-Option voncropnicht gut.
10 Danksagungen
Der Autor würdigt hiermit die hilfreichen Vorschläge und Kommentare Vieler (in alphabetischer Rei- henfolge ihrer Familennamen): Jean-Bernard Addor, Frank Bennett, Alexis Dimitriadis, Friedrich Flen- der, Adrian Heathcote, Stephan Hennig, Morten Hø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 Vo- lovich, Michael Vulis.
11 Implementierung
1h∗packagei
This package requires the following packages:keyval,ifvtex.
2\RequirePackage{keyval}%
3\RequirePackage{ifvtex}%
Internal switches are declared here.
4\newif\ifGm@verbose
5\newif\ifGm@landscape
6\newif\ifGm@swap@papersize
7\newif\ifGm@includehead
8\newif\ifGm@includefoot
9\newif\ifGm@includemp
10\newif\ifGm@hbody
11\newif\ifGm@vbody
12\newif\ifGm@heightrounded
13\newif\ifGm@showframe
14\newif\ifGm@showcrop
15\newif\ifGm@pass
16\newif\ifGm@resetpaper
17\newif\ifGm@layout
18\newif\ifGm@newgm
\Gm@cnth
\Gm@cntv
The counters for horizontal and vertical partitioning patterns.
19\newcount\Gm@cnth
20\newcount\Gm@cntv
\c@Gm@tempcnt The counter is used to set number withcalc.
21\newcount\c@Gm@tempcnt
\Gm@bindingoffset The binding offset for the inner margin.
22\newdimen\Gm@bindingoffset
\Gm@wd@mp
\Gm@odd@mp
\Gm@even@mp
Correction lengths for\textwidth,\oddsidemarginand\evensidemargininincludempmode.
23\newdimen\Gm@wd@mp
24\newdimen\Gm@odd@mp
25\newdimen\Gm@even@mp
\Gm@layoutwidth
\Gm@layoutheight
\Gm@layouthoffset
\Gm@layoutvoffset
The dimensions for the layout area.
26\newdimen\Gm@layoutwidth
27\newdimen\Gm@layoutheight
28\newdimen\Gm@layouthoffset
29\newdimen\Gm@layoutvoffset
\Gm@dimlist The token in which LATEX native dimensions can be stored.
30\newtoks\Gm@dimlist
\Gm@warning The macro to print warning messages.
31\def\Gm@warning#1{\PackageWarningNoLine{geometry}{#1}}%
\ifGm@preamble The macro executes the option given as an argument only if it’s specified in the preamble, as the options of\usepackageand/or the argument of\geometry. Otherwise, the macro would print the warning message and ignores the option setting.
32\def\ifGm@preamble#1{%
33 \ifGm@newgm
34 \Gm@warning{‘#1’: not available in ‘\string\newgeometry’; skipped}%
35 \else
36 \expandafter\@firstofone
37 \fi}%
\Gm@Dhratio
\Gm@Dhratiotwo
\Gm@Dvratio
The default values for the horizontal and verticalmarginalratio are defined.\Gm@Dhratiotwode- notes the default value of horizontalmarginratiofor twoside page layout with left and right marg- ins swapped on verso pages, which is set bytwoside.
38\def\Gm@Dhratio{1:1}% = left:right default for oneside
39\def\Gm@Dhratiotwo{2:3}% = inner:outer default for twoside.
40\def\Gm@Dvratio{2:3}% = top:bottom default
\Gm@Dhscale
\Gm@Dvscale
The default values for the horizontal and verticalscale are defined with0.7.
41\def\Gm@Dhscale{0.7}%
42\def\Gm@Dvscale{0.7}%
\Gm@dvips
\Gm@dvipdfm
\Gm@pdftex
\Gm@luatex
\Gm@xetex
\Gm@vtex
The driver names.
43\def\Gm@dvips{dvips}%
44\def\Gm@dvipdfm{dvipdfm}%
45\def\Gm@pdftex{pdftex}%
46\def\Gm@luatex{luatex}%
47\def\Gm@xetex{xetex}%
48\def\Gm@vtex{vtex}%
\Gm@true
\Gm@false
The macros fortrueandfalse.
49\def\Gm@true{true}%
50\def\Gm@false{false}%
\Gm@orgpw
\Gm@orgph
These macros keep original paper (media) size intact.
51\edef\Gm@orgpw{\the\paperwidth}%
52\edef\Gm@orgph{\the\paperheight}%
\Gm@savelength The macro saves the specified length to\Gm@restore.
53\def\Gm@savelength#1{%
54 \g@addto@macro\Gm@restore{\expandafter\noexpand\expandafter\csname
55 #1\endcsname\expandafter=\expandafter\the\csname #1\endcsname\relax}}%
\Gm@saveboolean The macro saves the specified boolean to\Gm@restore.
56\def\Gm@saveboolean#1{%
57 \csname if#1\endcsname
58 \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1true\endcsname}%
59 \else
60 \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1false\endcsname}%
61 \fi}%
\Gm@restore The initialization for\Gm@restore.
62\def\Gm@restore{}%
\Gm@save The definition of the macro saving the real lengths LATEX options.
63\def\Gm@save{%
64 \Gm@savelength{paperwidth}%
65 \Gm@savelength{paperheight}%
66 \Gm@savelength{textwidth}%
67 \Gm@savelength{textheight}%
68 \Gm@savelength{evensidemargin}%
69 \Gm@savelength{oddsidemargin}%
70 \Gm@savelength{topmargin}%
71 \Gm@savelength{headheight}%
72 \Gm@savelength{headsep}%
73 \Gm@savelength{topskip}%
74 \Gm@savelength{footskip}%
75 \Gm@savelength{baselineskip}%
76 \Gm@savelength{marginparwidth}%
77 \Gm@savelength{marginparsep}%
78 \Gm@savelength{columnsep}%
79 \Gm@savelength{hoffset}%
80 \Gm@savelength{voffset}
81 \Gm@savelength{Gm@layoutwidth}%
82 \Gm@savelength{Gm@layoutheight}%
83 \Gm@savelength{Gm@layouthoffset}%
84 \Gm@savelength{Gm@layoutvoffset}%
85 \Gm@saveboolean{@twocolumn}%
86 \Gm@saveboolean{@twoside}%
87 \Gm@saveboolean{@mparswitch}%
88 \Gm@saveboolean{@reversemargin}}%
\Gm@initnewgm The macro initializes the parameters for layout in\newgeometry.
89\def\Gm@initnewgm{%
90 \Gm@passfalse
91 \Gm@swap@papersizefalse
92 \Gm@dimlist={}
93 \Gm@hbodyfalse
94 \Gm@vbodyfalse
95 \Gm@heightroundedfalse
96 \Gm@includeheadfalse
97 \Gm@includefootfalse
98 \Gm@includempfalse
99 \let\Gm@width\@undefined
100 \let\Gm@height\@undefined
101 \let\Gm@textwidth\@undefined
102 \let\Gm@textheight\@undefined
103 \let\Gm@lines\@undefined
104 \let\Gm@hscale\@undefined
105 \let\Gm@vscale\@undefined
106 \let\Gm@hmarginratio\@undefined
107 \let\Gm@vmarginratio\@undefined
108 \let\Gm@lmargin\@undefined
109 \let\Gm@rmargin\@undefined
110 \let\Gm@tmargin\@undefined
111 \let\Gm@bmargin\@undefined
112 \Gm@layoutfalse
113 \Gm@layouthoffset\z@
114 \Gm@layoutvoffset\z@
115 \Gm@bindingoffset\z@}%
\Gm@initall This initialization is called as soon as the package is load It’s also called as soon asresetoption is specified.
116\def\Gm@initall{%
117 \let\Gm@driver\@empty
118 \let\Gm@truedimen\@empty
119 \let\Gm@paper\@undefined
120 \Gm@resetpaperfalse
121 \Gm@landscapefalse
122 \Gm@verbosefalse
123 \Gm@showframefalse
124 \Gm@showcropfalse
125 \Gm@newgmfalse
126 \Gm@initnewgm}%
\Gm@setdriver The macro sets the specified driver.
127\def\Gm@setdriver#1{%
128 \expandafter\let\expandafter\Gm@driver\csname Gm@#1\endcsname}%
\Gm@unsetdriver The macro unsets the specified driver if it has been set.
129\def\Gm@unsetdriver#1{%
130 \expandafter\ifx\csname Gm@#1\endcsname\Gm@driver\let\Gm@driver\@empty\fi}%
\Gm@setbool
\Gm@setboolrev
The macros for boolean option processing.
131\def\Gm@setbool{\@dblarg\Gm@@setbool}%
132\def\Gm@setboolrev{\@dblarg\Gm@@setboolrev}%
133\def\Gm@@setbool[#1]#2#3{\Gm@doif{#1}{#3}{\csname Gm@#2\Gm@bool\endcsname}}%
134\def\Gm@@setboolrev[#1]#2#3{\Gm@doifelse{#1}{#3}%
135 {\csname Gm@#2\Gm@false\endcsname}{\csname Gm@#2\Gm@true\endcsname}}%
\Gm@doif
\Gm@doifelse
\Gm@doifexcutes the third argument#3using a boolean value#2of a option#1.\Gm@doifelse executes the third argument#3if a boolean option #1with its value #2 true, and executes the fourth argument#4iffalse.
136\def\Gm@doif#1#2#3{%
137 \lowercase{\def\Gm@bool{#2}}%
138 \ifx\Gm@bool\@empty
139 \let\Gm@bool\Gm@true
140 \fi
141 \ifx\Gm@bool\Gm@true
142 \else
143 \ifx\Gm@bool\Gm@false
144 \else
145 \let\Gm@bool\relax
146 \fi
147 \fi
148 \ifx\Gm@bool\relax
149 \Gm@warning{‘#1’ should be set to ‘true’ or ‘false’}%
150 \else
151 #3
152 \fi}%
153\def\Gm@doifelse#1#2#3#4{%
154 \Gm@doif{#1}{#2}{\ifx\Gm@bool\Gm@true #3\else #4\fi}}%
\Gm@reverse The macro reverses a bool value.
155\def\Gm@reverse#1{%
156 \csname ifGm@#1\endcsname
157 \csname Gm@#1false\endcsname\else\csname Gm@#1true\endcsname\fi}%
\Gm@defbylen
\Gm@defbycnt
Macros\Gm@defbylenand\Gm@defbycntcan be used to define\Gm@xxxxvariables by length and counter respectively withcalcpackage.
158\def\Gm@defbylen#1#2{%
159 \begingroup\setlength\@tempdima{#2}%
160 \expandafter\xdef\csname Gm@#1\endcsname{\the\@tempdima}\endgroup}%
161\def\Gm@defbycnt#1#2{%
162 \begingroup\setcounter{Gm@tempcnt}{#2}%
163 \expandafter\xdef\csname Gm@#1\endcsname{\the\value{Gm@tempcnt}}\endgroup}%
\Gm@set@ratio The macro parses the value of options specifying marginal ratios, which is used in\Gm@setbyratio macro.
164\def\Gm@sep@ratio#1:#2{\@tempcnta=#1\@tempcntb=#2}%
\Gm@setbyratio The macro determines the dimension specified by#4calculating#3×a/b, whereaandbare given by\Gm@mratiowitha:bvalue. If#1in brackets isb,aandbare swapped. The second argument withhorvdenoting horizontal or vertical is not used in this macro.
165\def\Gm@setbyratio[#1]#2#3#4{% determine #4 by ratio
166 \expandafter\Gm@sep@ratio\Gm@mratio\relax
167 \if#1b
168 \edef\@@tempa{\the\@tempcnta}%
169 \@tempcnta=\@tempcntb
170 \@tempcntb=\@@tempa\relax
171 \fi
172 \expandafter\setlength\expandafter\@tempdimb\expandafter
173 {\csname Gm@#3\endcsname}%
174 \ifnum\@tempcntb>\z@
175 \multiply\@tempdimb\@tempcnta
176 \divide\@tempdimb\@tempcntb
177 \fi
178 \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimb}}%
\Gm@detiv This macro determines the fourth length(#4) from#1(layoutwidthorlayoutheight),#2and#3. It is used in\Gm@detallmacro.
179\def\Gm@detiv#1#2#3#4{% determine #4.
180 \expandafter\setlength\expandafter\@tempdima\expandafter
181 {\csname Gm@layout#1\endcsname}%
182 \expandafter\setlength\expandafter\@tempdimb\expandafter
183 {\csname Gm@#2\endcsname}%
184 \addtolength\@tempdima{-\@tempdimb}%