From 3e8e2ea55ae43a6463f8f1d793f132e09fa951ce Mon Sep 17 00:00:00 2001
From: Mateusz Kwiatkowski <mati.rewa@gmail.com>
Date: Wed, 25 Jun 2025 11:16:10 +0000
Subject: Update on Overleaf.

---
 vu-cs-standard-thesis/vmargin.sty | 576 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 576 insertions(+)
 create mode 100644 vu-cs-standard-thesis/vmargin.sty

(limited to 'vu-cs-standard-thesis/vmargin.sty')

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
+%%----------------------------------------------------------------------
-- 
cgit v1.2.3

