summaryrefslogtreecommitdiff
path: root/vu-cs-standard-thesis/vmargin.sty
diff options
context:
space:
mode:
authorMateusz Kwiatkowski <mati.rewa@gmail.com>2025-06-25 11:16:10 +0000
committernode <node@git-bridge-prod-0>2025-06-25 11:22:03 +0000
commit3e8e2ea55ae43a6463f8f1d793f132e09fa951ce (patch)
tree7885aedd39b6f201cbe7ff3e39ac9743befdfee8 /vu-cs-standard-thesis/vmargin.sty
Update on Overleaf.
Diffstat (limited to 'vu-cs-standard-thesis/vmargin.sty')
-rw-r--r--vu-cs-standard-thesis/vmargin.sty576
1 files changed, 576 insertions, 0 deletions
diff --git a/vu-cs-standard-thesis/vmargin.sty b/vu-cs-standard-thesis/vmargin.sty
new file mode 100644
index 0000000..2f4f67d
--- /dev/null
+++ b/vu-cs-standard-thesis/vmargin.sty
@@ -0,0 +1,576 @@
+%%----------------------------------------------------------------------
+%% vmargin.sty
+%
+% LaTeX package which introduces paper sizes and provides macros for
+% setting document margins.
+% This package supersedes package vpage.
+%
+% This file can be made part of a format by typing \input vmargin.sty
+% before dumping the format.
+%
+% Documentation & history after (last) \endinput.
+%
+% Still works with LaTeX 2.09.
+% Supported = yes.
+%
+%
+% Copyright (C) 1993, 1994, 1995, 1996, 1999 by:
+%
+% Volker Kuhlmann
+% c/o University of Canterbury
+% ELEC Dept
+% Creyke Road
+% Christchurch, New Zealand
+% E-Mail: v.kuhlmann@elec.canterbury.ac.nz
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License, distributed from CTAN
+% archives as macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+%
+%%----------------------------------------------------------------------
+
+%\def\filename{Vmargin}
+\def\filename{vmargin}
+\def\fileversion{V2.2}
+\def\filedate{1999/06/01}
+
+\@ifundefined{Vmargin}{}{\endinput}
+
+\@ifundefined{documentclass}{
+ \edef\Vmargin{Style `\filename', \fileversion, \filedate}
+ \expandafter\everyjob\expandafter{\the\everyjob\typeout{\Vmargin}}
+ \typeout{\Vmargin}
+}{
+ \NeedsTeXFormat{LaTeX2e}[1994/06/01]
+ \ProvidesPackage{\filename}[\filedate]
+ \edef\Vmargin{Package `\filename', \fileversion, <\filedate>}
+ \expandafter\everyjob\expandafter{\the\everyjob\typeout{\Vmargin}}
+ \typeout{\Vmargin}
+}
+
+
+% new lengths: \PaperWidth, \PaperHeight
+% new if: \ifLandscape
+%
+\newdimen\PaperWidth
+\newdimen\PaperHeight
+%
+\newif\ifLandscape
+
+
+% \setpapersize
+%
+\def\setpapersize{\@ifnextchar[{\@@setps}{\@@setps[portrait]}}
+\def\@@setps[#1]{%
+ \@ifundefined{po@#1}{\@name@err{#1}}{\@nameuse{po@#1}}%
+ \@@@setps}
+\def\@@@setps#1{%
+ \@ifundefined{paper@#1}{\@name@err{#1}}{}%
+ \csname paper@#1\endcsname}
+ % \usename{paper@#1} inside arg to \@ifundefined does not work
+ % with papersize "custom".
+\def\po@portrait{\Landscapefalse}
+\def\po@landscape{\Landscapetrue}
+\def\@po@{\ifLandscape\dimen0\PaperWidth
+ \PaperWidth\PaperHeight\PaperHeight\dimen0\fi
+ \@ifundefined{paperwidth}{}{\paperwidth\PaperWidth}%
+ \@ifundefined{paperheight}{}{\paperheight\PaperHeight}}
+\@ifundefined{PackageError}{
+ \def\@name@err#1{%
+ \typeout{*****> \string\setpapersize: illegal parameter: #1}}
+}{
+ \def\@name@err#1{\PackageError{\filename}%
+ {Paper size or orientation unknown: #1}{}}
+}
+
+
+% pre-defined paper/envelope sizes
+%
+% A0, A1, A2, ..., A9, B0, B1, ..., B9, C0, C1, ..., C9
+% USletter, USlegal, USexecutive
+% custom
+%
+\def\@defmetricpaper#1#2#3{%
+ \begingroup
+ \count0=0
+ \def\w{\dimen1 }\def\h{\dimen2 }\def\s{\dimen3 }%
+ \w#2\h#3
+ \def\l{11}
+ \loop
+ \begingroup
+ \def\t{\the\count0}
+ \catcode`\t=11 % letter
+ \expandafter\xdef\csname paper@#1\the\count0\endcsname{%
+ \PaperWidth\the\w\PaperHeight\the\h\noexpand\@po@}
+ \endgroup
+ \s\w\w.5\h\h\s
+ \ifnum\the\count0<9
+ \advance\count0 by 1
+ \repeat
+ \endgroup
+}
+%
+\@defmetricpaper{A}{840.9mm}{1189.2mm}
+\@defmetricpaper{B}{1000mm}{1414mm}
+\@defmetricpaper{C}{917mm}{1297mm}
+%
+\let\@defmetricpaper=\relax % delete definition to save memory
+%
+\def\paper@USletter{\PaperWidth 8.5in \PaperHeight 11in \@po@}
+\def\paper@USlegal{\PaperWidth 8.5in \PaperHeight 14in \@po@}
+\def\paper@USexecutive{\PaperWidth 7.25in\PaperHeight 10.5in \@po@}
+%
+\def\paper@custom#1#2{\PaperWidth#1\PaperHeight#2\@po@}
+
+
+% margin@offset
+%
+% Compensates for the +1in/+1in top/left corner
+% by either reducing the margins or \hoffset, \voffset by 1in.
+% This macro is only defined here if it is not already defined!
+% (see documentation at the end)
+%
+\newif\if@shiftmargins
+\@shiftmarginsfalse % this MUST be default (pageframe.sty)
+%
+\@ifundefined{margin@offset}{
+\def\margin@offset{
+ \if@shiftmargins
+ \oddsidemargin -1in\evensidemargin -1in\topmargin -1in
+ \hoffset 0in\voffset 0in\relax
+ \else
+ \oddsidemargin 0in\evensidemargin 0in\topmargin 0in
+ \hoffset -1in\voffset -1in\relax
+ \fi
+}}{}
+%
+\def\shiftmargins{\@shiftmarginstrue}
+
+
+% Setting margins
+%
+% \setmargins{leftmargin}{topmargin}{textwidth}{textheight}%
+% {headheight}{headsep}{footheight}{footskip}
+%
+\newcommand\setmargins[8]{%
+ \margin@offset
+ \advance\oddsidemargin #1
+ \advance\evensidemargin \PaperWidth % = paperwidth - left
+ \advance\evensidemargin -#1 % - width
+ \advance\evensidemargin -#3
+ \advance\topmargin #2
+ \textwidth #3
+ \textheight #4
+ \headheight #5
+ \headsep #6
+ \@ifundefined{footheight}{}{\footheight=#7}%
+ \footskip #8
+ \chk@dimen{#1}{#2}{#3}{#4}%
+}
+%
+% \setmarginsrb{leftmargin}{topmargin}{rightmargin}{bottommargin}%
+% {headheight}{headsep}{footheight}{footskip}
+%
+\newcommand\setmarginsrb[8]{%
+ \margin@offset
+ \textwidth \PaperWidth % = paperwidth
+ \advance\textwidth -#1 % - left - right
+ \advance\textwidth -#3
+ \textheight \PaperHeight % = paperheight - top
+ \advance\textheight -#2 % - headheight
+ \advance\textheight -#5 % - headsep
+ \advance\textheight -#6 % - footskip - bottom
+ \advance\textheight -#8
+ \advance\textheight -#4
+ \advance\oddsidemargin #1
+ \advance\evensidemargin \PaperWidth % = paperwidth
+ \advance\evensidemargin -#1 % - left - width
+ \advance\evensidemargin -\textwidth
+ \advance\topmargin #2
+ \headheight #5
+ \headsep #6
+ \@ifundefined{footheight}{}{\footheight=#7}%
+ \footskip #8
+ \chk@dimen{#1}{#2}{#3}{#4}%
+}
+%
+% \setmargnohf{leftmargin}{topmargin}{textwidth}{textheight}
+% headheight, headsep, footheight, footskip set to 0pt
+\newcommand\setmargnohf[4]{%
+ \setmargins{#1}{#2}{#3}{#4}\z@\z@\z@\z@
+ \pagestyle{empty}}
+%
+% \setmargnohfrb{leftmargin}{topmargin}{rightmargin}{bottommargin}
+% headheight, headsep, footheight, footskip set to 0pt
+\newcommand\setmargnohfrb[4]{%
+ \setmarginsrb{#1}{#2}{#3}{#4}\z@\z@\z@\z@
+ \pagestyle{empty}}
+%
+% \setmarg{leftmargin}{topmargin}{textwidth}{textheight}
+% headheight, headsep, footheight, footskip unchanged
+\newcommand\setmarg[4]{%
+ \setmargins{#1}{#2}{#3}{#4}%
+ \headheight\headsep\footheight\footskip}
+%
+% \setmargrb{leftmargin}{topmargin}{rightmargin}{bottommargin}
+% headheight, headsep, footheight, footskip unchanged
+\newcommand\setmargrb[4]{%
+ \setmarginsrb{#1}{#2}{#3}{#4}%
+ \headheight\headsep\footheight\footskip}
+%
+% h-warning if [leftmarg + textwidth > paperwidth] resp.
+% if [leftmarg + rightmarg > paperwidth].
+% v-warning if [topmarg + textheight > paperheight] resp.
+% if [topmarg + bottommarg > paperheight].
+\def\chk@dimen#1#2#3#4{%
+ \dimen0= #1
+ \advance\dimen0 by#3
+ \advance\dimen0 -\PaperWidth
+ \dimen1= #2
+ \advance\dimen1 by#4
+ \advance\dimen1 \headheight
+ \advance\dimen1 \headsep
+ \advance\dimen1 \footskip
+ \advance\dimen1 -\PaperHeight
+ \chk@dimen@err
+}
+\@ifundefined{PackageError}{
+ \def\chk@dimen@err{
+ \ifnum\dimen0>\z@\typeout{vmargin Warning: Horizontal dimensions
+ exceed paper width by \the\dimen0}\fi
+ \ifnum\dimen1>\z@\typeout{vmargin Warning: Vertical dimensions
+ exceed paper height by \the\dimen1}\fi
+ }
+}{
+ \def\chk@dimen@err{
+ \ifnum\dimen0>\z@\PackageError{\filename}{%
+ Horizontal dimensions exceed paper width by \the\dimen0}{}\fi
+ \ifnum\dimen1>\z@\PackageError{\filename}{%
+ Vertical dimensions exceed paper height by \the\dimen1}{}\fi
+ }
+}
+
+
+%
+% DEFAULTS:
+%
+\setpapersize{A4}
+\def\@hf@dflt{}
+\@ifundefined{DeclareOption}{
+}{
+ \DeclareOption{shiftmargins}{\shiftmargins}
+ \DeclareOption{portrait}{\Landscapefalse}
+ \DeclareOption{landscape}{\Landscapetrue}
+ \DeclareOption{nohf}{\def\@hf@dflt{y}}
+ \DeclareOption*{\@@@setps{\CurrentOption}}
+ \ProcessOptions\relax % process options in order of declaration!
+}
+\if y\@hf@dflt
+ \setmargnohfrb{35mm}{20mm}{25mm}{15mm}%
+\else
+ \setmarginsrb{35mm}{20mm}{25mm}{15mm}{12pt}{11mm}{0pt}{11mm}%
+\fi
+
+
+\endinput
+
+%%----------------------------------------------------------------------
+
+Page Size and Margins
+=====================
+
+These macros make it easy to set page margins for a chosen paper size.
+Actual dimensions of the most common paper sizes are stored and need
+not be remembered.
+
+Two sided printing is supported, meaning that if on odd pages the left
+margin is, say, 30mm and the right margin is 20mm, it will be vice
+versa on even pages. This gives equal margins on the outer and equal
+margins on the inner edge of the paper, as expected e.g. for a book.
+
+vmargin is designed to be reasonably restricted in both memory usage
+and processing time, so that the common task of setting margins is not
+too distracting. If you are looking for something fancier try the
+geometry package.
+
+The basic procedure of using vmargin is to first set a paper size, and
+then to set the margins. The margin setting functions depend on the
+paper size. Setting the paper size and margins are two independent
+operations, i.e. setting the paper size does not directly affect the
+margins but will affect the next margin setting command.
+
+The size of the paper can be set with
+
+ \setpapersize{<size>}
+
+<size> can be A0, A1, ..., A9, B0, B1, ..., B9, C0, ..., C9, USletter,
+USlegal, and USexecutive. The metric paper sizes are not stored but
+calculated. \setpapersize by default sets the orientation to portrait.
+
+Landscape format is selected by using the optional argument
+
+ \setpapersize[landscape]{<size>}
+
+which swaps the width and height dimensions of the paper.
+\setpapersize[portrait]{<size>} is allowed but is the default.
+
+If you have a size which is not pre-defined use
+
+ \setpapersize{custom}{<width>}{<height>}
+
+For <width> and <height> insert the respective dimensions of your
+paper.
+
+\setpapersize stores the actual dimensions of the paper in the length
+variables
+
+ \PaperWidth
+ \PaperHeight
+
+which can be used further, if desired.
+
+ \ifLandscape
+
+yields true if a landscape format is selected. Do not write to
+\PaperWidth, \PaperHeight, or call \Landscapetrue or \Landscapefalse,
+it will not work!!
+
+The margins can be set with
+
+ \setmargins{leftmargin}{topmargin}{textwidth}{textheight}%
+ {headheight}{headsep}{footheight}{footskip}
+
+or with
+
+ \setmarginsrb{leftmargin}{topmargin}{rightmargin}{bottommargin}%
+ {headheight}{headsep}{footheight}{footskip}
+
+In the latter case \textwidth and \textheight are calculated using the
+width and height of the selected paper. The first four parameters of
+the above two commands are used to set \oddsidemargin, \evensidemargin,
+\textwidth, \topmargin, and \textheight.
+
+ \setmargnohf, \setmargnohfrb
+
+Provide a page with no header and footer. They work the same as
+\setmargins, \setmarginsrb except that they only need the first 4
+parameters. The last 4 parameters are set to 0pt. These 2 commands set
+the pagestyle to empty (\pagestyle{empty}) as there is no space for
+headers or footers.
+
+ \setmarg, \setmargrb
+
+are the same as \setmargnohf, \setmargnohfrb except that the last 4
+parameters to \setmargins, \setmarginsrb are unchanged.
+
+Example:
+
+ A4 paper, left margin 30mm, top, right, and bottom margin 20mm
+ each, no headers or footers:
+
+ \setpapersize{A4}
+ \setmarginsrb{30mm}{20mm}{20mm}{20mm}{0pt}{0mm}{0pt}{0mm}
+ \pagestyle{empty}
+
+The same settings would result with:
+
+ \setpapersize{A4}
+ \setmargnohfrb{30mm}{20mm}{20mm}{20mm}
+
+For the default settings please see the part after "DEFAULTS:" (last
+part before \endinput).
+
+The default top and left margins of TeX are +1in. \setmargXXX call
+
+ \margin@offset
+
+which initialises \hoffset, \voffset to -1in and \oddsidemargin,
+\evensidemargin, \topmargin to 0in. \setmargXXX then add the given
+dimensions to \topmargin, \oddsidemargin, \evensidemargin. In some
+cases it might be desired to use \XXXmargin instead of \Xoffset for
+compensation. This can be achieved by telling \margin@offset to
+initialise \Xoffset to 0in and \XXXmargin to -1in. This is done by
+%
+ \shiftmargins.
+%
+If \margin@offset is already defined at the time vmargin is loaded it
+is NOT redefined! Therefore if \margin@offset is defined before vmargin
+is loaded the above mentioned compensation can be replaced by a
+different mechanism. In any case \setmargXXX call \margin@offset and
+then expect that \XXXmargin are set to useful values. \Xoffset are not
+touched by \setmargXXX. \margin@offset should be defined in a separate
+file which is included BEFORE vmargin, i.e. appears in the list of
+document-substyles of the \documentstyle command before vmargin.
+%
+Any better way of doing this? (grumble)
+
+Example: \documentstyle[...,margins,vmargin,...]{...}
+ if \margin@offset is defined in a file called margins.sty.
+
+LaTeX2e: \documentclass[...]{...}
+ \usepackage{...,margins,vmargin,...}
+
+
+LaTeX2e
+-------
+
+This package now uses some of the new LaTeX2e features for package
+programming. It will still work with LaTeX 2.09 (in which case the new
+features are not used, resp. are inaccessible).
+
+LaTeX2e (unless in compatibility mode) does not know \footheight any
+more. vmargin does not set this variable if it does not exist, and sets
+it if it does. As \footheight was not used by LaTeX 2.09 all this has
+little significance.
+
+LaTeX2e now has the dimensions \paperwidth, \paperheight which hold the
+size of the paper. \PaperWidth, \PaperHeight are copied into
+\paperwidth, \paperheight if the latter exist. This makes vmargin work
+correctly with anything that expects \paperwidth, \paperheight to be
+set properly. The names \PaperWidth, \PaperHeight had been chosen in
+the first place to avoid clashes with style files that also use these
+names (namely pageframe.sty).
+
+The following package options are available under LaTeX2e:
+
+shiftmargins same as \shiftmargins
+portrait
+landscape
+A4, etc. same as using \setpapersize[...]{...}
+ Note: \setpapersize always sets the orientation to
+ portrait unless landscape is given. Using \setpapersize
+ after \usepackage causes package option landscape to be
+ ignored.
+nohf do not make space for header and footer lines; this also
+ sets the pagestyle to empty
+
+All unknown options are treated as a paper size, if necessary
+generating an error that the requested paper size is not defined.
+
+
+Inclusion in TeX formats
+------------------------
+
+This file may be loaded in initex before dumping the format, by typing
+ \makeatletter
+ \input vmargin.sty
+ \makeatother
+Note: this produces a non-standard format.
+
+
+Hints for using pageframe.sty
+-----------------------------
+
+vmargin.sty and pageframe.sty can be used together if the following
+points are considered:
+
+vmargin uses \hoffset and \voffset and writes negative values into it,
+pageframe expects them to be zero to give a 1in space on the left and
+the top where it prints additional information. Initially, set both to
+0mm (in the pre-amble of your text) and adjust them later on.
+
+pageframe needs to know the trimmed height of the paper (= the height
+of the "page frame"). Unless the trimmed(!) size of the paper is
+equivalent to one of the standard paper sizes (unlikely...) the size
+should be specified with
+
+ \setpapersize{custom}{<width>}{<height>}
+
+The correct height of the trimmed page can then be given to pageframe
+using
+
+ \paperheight{\PaperHeight}
+
+and the margins of the final product (inside the page frame) can be
+specified using \setmargXXX.
+
+Warning: if \setmargXXXrb is used the 3rd parameter (right margin) is
+ignored. Instead, the dimension of the right margin has to be assigned
+to \evensidemargin. This is because pageframe.sty re-defines the meaning
+of \evensidemargin to be the right margin of your text, on all pages.
+
+Remember: all these assignments and macro calls have to be in the
+pre-amble of the document.
+
+
+Bugs:
+-----
+
+I have not tested this with older versions of LaTeX2e because I don't
+have any. If there are any problems pleease do let me know and I'll do
+something about it.
+
+
+To do:
+------
+
+* The way the metric paper sizes are stored takes up a lot of space. A
+ metric size could be computed by \setpapersize.
+
+
+SUMMARY:
+========
+
+new lengths:
+ \PaperWidth
+ \PaperHeight
+
+new ifs:
+ \ifLandscape
+
+new macros:
+ \setpapersize[<orientation>]{<size>},
+ \setpapersize[<orientation>]{custom}{<width>}{<height>}
+ <orientation> (optional) = landscape or portrait (default)
+ <size> = A4, B5, ...
+ <width>, <height> = actual dimensions of the paper
+ \setmargins{leftmargin}{topmargin}{textwidth}{textheight}%
+ {headheight}{headsep}{footheight}{footskip}
+ \setmarginsrb{leftmargin}{topmargin}{rightmargin}{bottommargin}%
+ {headheight}{headsep}{footheight}{footskip}
+ \setmargnohf{leftmargin}{topmargin}{textwidth}{textheight}
+ \setmargnohfrb{leftmargin}{topmargin}{rightmargin}{bottommargin}
+ \setmarg{leftmargin}{topmargin}{textwidth}{textheight}
+ \setmargrb{leftmargin}{topmargin}{rightmargin}{bottommargin}
+%
+ \margin@offset
+ \shiftmargins
+
+LaTeX2e package options:
+ shiftmargins
+ portrait
+ landscape
+ nohf
+ all other options are treated as paper sizes
+
+
+If you have any comments (positive or negative) please let me know!
+
+
+
+HISTORY:
+========
+
+ .
+ . Created out of Vpage.sty.
+ .
+V1.7 21 May 1994 Changed file header.
+V1.72 21 May 1994 Fixed bug in \setpapersize{custom}
+V1.8 28 May 94 Commented \chk@dimen; reduced load on TeX's
+ parameter stack (changed \chk@dimen).
+ Put a conditional around references
+ to \footheight.
+V1.9 22 Jun 94 Corrected spelling in comment.
+V2.0 28 Jun 94 Added support for LaTeX2e \paperwidth,
+ \paperheight.
+V2.1 20 Sep 94 \@defmetricpaper now defines \w, \h, \s locally.
+ Thanks to branderhorst@fgg.eur.nl!
+V2.12 28 Mar 95 Fixed documentation for \setmargrb.
+V2.13 26 Jun 96 Fixed comment for \setmarginsrb.
+V2.2 31 May 99 Released under LPPL.
+ Changed references to Vmargin to vmargin.
+ LaTeX2e package options introduced.
+%
+%% EOF vmargin.sty
+%%----------------------------------------------------------------------