Author: Włodzimierz Macewicz
Keywords: tex, latex, makroinstrukcje, pakiety makroinstrukcji, Wirtualna Akademia

### geometry

Pakiet służy do określenia parametrów strony, podobnie jak `vmargin.sty`, ale w sposób bardziej intuicyjny.

Parametry możemy określać na dwa sposoby:

- określąc je w polu opcji przy wywołaniu pakiety:

      \usepackage[scale={0.7,0.8},nohead]{geometry}

- używając makroinstrukcji `geometry`

      \geometry{scale={0.7,0.8},nohead}

  powyższą makroinstrukcję można używać wielokrotnie (kolejność występowania definicji parametrów może mieć znaczenie

Pojęcia zdefiniowane nieco różnią się od znanych nam ze standardowego Latex-a:

paper | - | całkowity rozmiar papieru
total-body | - | obszar zadrukowany (zawiera nagłówek i stopkę oraz notki na marginesie)
body | - | kolumna składu (może być podzielona na szpalty)
margins | - | marginesy strony (odległość między obszarem drukowania (total-body), a krawędzią papieru)

Nazwy parametrów i ich znaczenie ilustruje rysunek:
a w przypadku istnienia notki na marginesie:
W przypadku braku definicji jednego (lub wielu) parametrów jest on wyliczany automatycznie:

wartości parametrów |  | rezultat |
left | width | right |  | left | width | right |
top | height | bottom |  | top | height | bottom |
* | * | * |  | m | l | m | domyślne
A | * | * |  | A | R1 | A | balans
* | * | A |  | A | R1 | A | balans
* | A | * |  | R2 | A | R2 | centrowanie
A | B | * |  | A | B | R3 |
A | * | B |  | A | R3 | B |
* | A | B |  | R3 | A | B |
A | C | B |  | A | R3 | B |

gdzie:
* -- oznacza brak definicji parametru
R1 = L - 2A
R2 = (L - A)/2
R3 = L - A - B
jeśli żaden parametr nie jest zdefiniowany, przyjmowane są wartości domyślne
l = 80% szerokości papieru
m = 10% szerokości papieru
lub
l = 90% wysokości papieru (`paperwidth`)
m = 5% wysokości papieru (`paperheight`)

Lista opcji:

nazwa | znaczenie
--- | ---
`verbose` | wyświetla komunikaty oraz obliczone (ustawione) parametry strony
`nohead` | równoważne: `headheight=0pt`
`nofoot` | równoważne: `footskip=0pt`
`noheadfoot` | równoważne: `footskip=0pt` i `headheight=0pt`
`includemp` | przy automatycznym ustalaniu szerokości łamu, na podstawie rozmiarów papieru uwzględniane jest miejsce na notatkę (wielkości `marginparsep` i `marginparwidth`)
`reversemp reversemarginpar` | notka na marginesie pojawi się na przeciwległym marginesie (oczywiście uwzględniana jest opcja `twoside`)
`twoside` | ustawia parametry strony tak, aby uwzględnić druk dwustronny (notki na marginesie pojawią się na zewnętrznych marginesach; będą również różne marginesy -- prawy i lewy)
`portrait` | ustawia format strony w ,,pionie'' (ustawienie domyślne)
`landscape` | ustawia format strony w ,,poziomie'' (zamienia szerokość z wysokością)
`dvips` | przekazuje wartości określające wielkość strony do postscriptu -- wskazana jeśli dokument będzie przetwarzany via postscript
`pdftex` | (tylko dla `pdftex`-a przekazuje wartości określające wielkość strony do pliku wynikowego `.pdf` -- ustawia `\pdftexoutput=1`
`a0paper a1paper a2paper a3paper a4paper a5paper a6paper b1paper b2paper b3paper b4paper b5paper b6paper letterpaper executivepaper legalpaper` | ustawia rozmiar papieru
`reset` | ustawia wartości parametrów na domyślne (nie kasuje ustawionego rozmiaru paieru)
`paper=nazwa papername=nazwa` | ustawia rozmiar papieru; np: `paper=a4paper`
`paperwidth=szerokość` | ustala szerokość papieru
`paperheight=wysokość` | ustala wysokość papieru
`width totalwidth` | ustawia szerokość obszaru roboczego strony (total body -- patrz rysunek); jeśli równocześnie jest zdefiniowany parametr `textwidth` to definicja `width` jest ignorowana
`height totalheight` | ustawia wysokość obszaru roboczego strony (total body -- patrz rysunek); jeśli równocześnie jest zdefiniowany parametr `textheight` to definicja `height` jest ignorowana
`left=szerokość lmargin=szerokość` | ustala lewy margines strony (kompensowany jest zwyczajowy margines 1 cal ustawiany w programach drukujących)
`right=szerokość rmargin=szerokość` | ustala prawy margines strony
`right=szerokość rmargin=szerokość` | ustala prawy margines strony
`top=wysokość tmargin=wysokość` | ustala górny margines strony (kompensowany jest zwyczajowy margines 1 cal ustawiany w programach drukujących)
`bottom=wysokość bmargin=wysokość` | ustala dolny margines strony
`hscale=stosunek` | określa stosunek szerokości obszaru roboczego (total body) do szerokości papieru
`vscale=stosunek` | określa stosunek wysokości obszaru roboczego (total body) do wysokości papieru
`textwidth=szerokość` | definiuje szerokość składu
`textheight=wysokość` | definiuje wysokość składu (kolumny)
`marginparwidth=szerokość marginpar=szerokość` | definiuje szerokość noty na marginesie
`marginparsep=odległość` | odległość między tekstem, a notą
`headheight=wysokość head=wysokość` | wysokość nagłówka
`headsep=odległość` | odległość między tekstem, a nagłówkiem
`footskip=odległość foot=odległość` | odległość między podstawą ostatniej linii tekstu na stronie (`baseline`), a podstawą ostatniej linii stopki
`hoffset=przesunięcie` | dodatkowe przesunięcie całego drukowanego materiału w poziomie
`voffset=przesunięcie` | dodatkowe przesunięcie całego drukowanego materiału w pionie
`twosideshift=odstęp` | określa dodatkowy odstęp, który jest dodawany do lewego marginesu na stronach nieparzystych i prawego na stronach parzystych
`mag=skala` | określa stosunek w jakim będą przeskalowane wszystkie rozmiary (również wielkość czcionki) -- 1000 oznacza wielkość naturalną (np. dla papieru `a4` (`a4paper`) `mag=1414` oznacza przeskalowanie rozmiaru strony do wielkości `a3`)
`papersize={szerokość,wysokość}` | określenie rozmiarów papieru, poprzez jawne podanie obu parametrów
`total={szerokość,wysokość}` | określenie rozmiaru roboczego (total body, patrz rysunek)
`body={szerokość,wysokość} text={szerokość,wysokość}` | określenie rozmiaru kolumny składu (body)
`scale={skala x,skala y} scale={skala}` | określenie obszaru roboczego (total body -- patrz rysunek) względem rozmiaru papieru
`hmargin={margines lewy,margines prawy} hmargin={margines}` | określenie lewego i prawego marginesu
`vmargin={margines górny,margines dolny} vmargin={margines}` | określenie lewego i prawego marginesu
`margin={marginesy poziome,marginesy pionowe} vmargin={marginesy}` | określenie marginesów strony (jak łatwo się domyśleć oba (lub wszystkie cztery) marginesy są jednakowe)
`offset={przesunięcie poziome,przesunięcie pionowe} offset={przesunięcie}` | dodatkowe przesunięcie całego drukowanego materiału
`hdivide={margines lewy, szerokość,margines prawy}` | definicja parametrów strony (w poziomie) -- w przypadku podania wszystkich trzech parametrów, może wystąpić konflikt z określonym rozmiarem papieru, wartość parametru może być pusta lub zastąpiona znakiem `*` -- wtedy wartość jest obliczana na podstawie innych znanych parametrów
`vdivide={margines górny, wysokość,margines dolny}` | definicja parametrów strony (w pionie) -- w przypadku podania wszystkich trzech parametrów, może wystąpić konflikt z określonym rozmiarem papieru, wartość parametru może być pusta lub zastąpiona znakiem `*` -- wtedy wartość jest obliczana na podstawie innych znanych parametrów
`divide={margines lewy/górny, szerokość/wysokość,margines prawy/dolny}` | definicja parametrów strony (w poziomie i pionie) -- w przypadku podania wszystkich trzech parametrów, może wystąpić konflikt z określonym rozmiarem papieru, wartość parametru może być pusta lub zastąpiona znakiem `*` -- wtedy wartość jest obliczana na podstawie innych znanych parametrów

Pakiet nie umożliwia zmiany parametru określającego maksymalną wysokość obszaru zajmowanego przez przypisy; można go zmienić następującym poleceniem:

    \setlength{\dimen\footins}{3cm}

(oczywiście zamiast 3 cm mozna wstawić dowolną wartość) oraz odległości między tekstem, a przypisem; można go zmienić poleceniem:

    \setlength{\skip\footins}{3cm}

Włodzimierz Macewicz

Ostatnie zmiany: 05.05.2014.