summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/vmargin
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/vmargin
Initial commit
Diffstat (limited to 'macros/latex/contrib/vmargin')
-rw-r--r--macros/latex/contrib/vmargin/Makefile71
-rw-r--r--macros/latex/contrib/vmargin/vmargin.dtx945
-rw-r--r--macros/latex/contrib/vmargin/vmargin.ins27
-rw-r--r--macros/latex/contrib/vmargin/vmargin.pdfbin0 -> 178396 bytes
4 files changed, 1043 insertions, 0 deletions
diff --git a/macros/latex/contrib/vmargin/Makefile b/macros/latex/contrib/vmargin/Makefile
new file mode 100644
index 0000000000..793285052f
--- /dev/null
+++ b/macros/latex/contrib/vmargin/Makefile
@@ -0,0 +1,71 @@
+PKGNAME=vmargin
+VERSION=`grep '\[[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] *v' $(PKGNAME).dtx | sed 's/^[^[]*[^v]*v\\([^ ]*\\).*/\\1/'`
+SRCDIR=$(PKGNAME)
+DISTFILES=\
+ $(SRCDIR)/Makefile \
+ $(SRCDIR)/$(PKGNAME).dtx \
+ $(SRCDIR)/$(PKGNAME).ins \
+ $(SRCDIR)/$(PKGNAME).pdf
+
+TEXMFLOCAL:=`kpsewhich --expand-path='$$TEXMFLOCAL'`
+STYDIR=$(TEXMFLOCAL)/tex/latex/$(PKGNAME)
+DOCDIR=$(TEXMFLOCAL)/doc/latex/$(PKGNAME)
+
+
+.SUFFIXES:
+.SUFFIXES: .sty .ins .dtx .dvi .ps .pdf
+
+.ins.sty:
+ latex $<
+
+.dtx.dvi:
+ latex $<
+ latex $<
+ makeindex -s gind.ist $(*D)/$(*F).idx
+ makeindex -s gglo.ist -o $(*D)/$(*F).gls $(*D)/$(*F).glo
+ latex $<
+ latex $<
+
+.dvi.ps:
+ dvips -o $(*D)/$(*F).ps $(*D)/$(*F)
+
+.dtx.pdf:
+ pdflatex $<
+
+
+all: $(PKGNAME).sty $(PKGNAME).dvi $(PKGNAME).ps $(PKGNAME).pdf
+
+tarfile=$(PKGNAME)-$(VERSION).tar.gz
+tar:
+ @echo "**************************"
+ @echo Creating: $(tarfile)
+ @echo "**************************"
+ @-rm -f $(tarfile)
+ tar -cz -C .. --owner 0 --group 0 --mode=a+r -f $(tarfile) $(DISTFILES)
+
+install: all
+ if [ ! -d $(STYDIR) ]; then mkdirhier $(STYDIR); fi
+ if [ ! -d $(DOCDIR) ]; then mkdirhier $(DOCDIR); fi
+ for file in *.sty; do \
+ install -m644 $$file $(STYDIR); \
+ done
+ for file in *.dvi; do \
+ install -m644 $$file $(DOCDIR); \
+ done
+ mktexlsr
+
+clean:
+ @-rm -f $(PKGNAME).glo $(PKGNAME).gls $(PKGNAME).idx $(PKGNAME).ilg
+ @-rm -f $(PKGNAME).ind $(PKGNAME).aux $(PKGNAME).toc
+# @-rm -f $(PKGNAME).drv $(PKGNAME).log
+ @-rm -f *~
+
+distclean: clean
+ @-rm -f $(PKGNAME).drv $(PKGNAME).log
+ @-rm -f $(PKGNAME).sty $(PKGNAME).dvi \
+ $(PKGNAME).ps $(PKGNAME).pdf $(PKGNAME).ps.pdf
+
+
+$(PKGNAME).sty: $(PKGNAME).ins $(PKGNAME).dtx
+$(PKGNAME).dvi: $(PKGNAME).sty
+$(PKGNAME).pdf: $(PKGNAME).ins $(PKGNAME).dtx $(PKGNAME).dvi
diff --git a/macros/latex/contrib/vmargin/vmargin.dtx b/macros/latex/contrib/vmargin/vmargin.dtx
new file mode 100644
index 0000000000..c4655d513d
--- /dev/null
+++ b/macros/latex/contrib/vmargin/vmargin.dtx
@@ -0,0 +1,945 @@
+% \iffalse meta-comment
+% %%----------------------------------------------------------------------------
+%
+%% File: vmargin.dtx Copyright (C) 1993, 1994, 1995, 1996, 1999, 2000, 2002,
+%% 2004
+%% by Volker Kuhlmann <VolkerKuhlmann@GMX.de>
+%% All rights are reserved.
+%%
+%
+%<*dtx>
+ \NeedsTeXFormat{LaTeX2e}[1999/06/01]
+ \ProvidesFile{vmargin.dtx}
+%</dtx>
+%
+%<driver> \ProvidesFile{vmargin.drv}
+%
+%^^A<package>\NeedsTeXFormat{LaTeX2e}[1998/06/01]
+%^^A<package>\ProvidesPackage{vmargin}
+%^^A Can't have these 2 lines if package is to work with LaTeX 2.09
+%
+% ^^A NOTE: VERSION INFO DUPLICATED BELOW AND IN PACKAGE MACROCODE SECTION !!!
+% ^^A search tag: mAcRoVeRsIoN (total of 4 places to change!)
+%<*dtx|driver>
+% \ProvidesFile{vmargin.dtx}
+ [2004/07/15 v2.5 set document margins (VK)]
+%^^A need to uncomment above line to get it into the .drv
+%^^A alternatively we could scrap it altogether!
+%</dtx|driver>
+%
+% \fi
+% ^^A The following 2 lines are required for the .drv file to correctly generate
+% ^^A the documentation from the .dtx. It's needed for \GetFileInfo.
+% ^^A The 2nd line generally is uncommented, but that would mean it ends up in
+% ^^A the .sty which we can't allow for 2.09 compatibility.
+% \ProvidesFile{vmargin.dtx}
+% [2004/07/15 V2.5 set document margins (VK)] %^^A mAcRoVeRsIoN
+%
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%
+% \iffalse
+%<*driver>
+
+\NeedsTeXFormat{LaTeX2e}[1999/06/01]
+\documentclass{ltxdoc}
+%%\IfFileExists{ltxdoc.cfg}{}{\OnlyDescription\RecordChanges\CodelineIndex}
+
+\IfFileExists{vmargin.sty}{%
+ \usepackage{vmargin}%
+ \setpapersize[portrait]{A4}%
+ \setmarginsrb{55mm}{15mm}{22mm}{15mm}{10pt}{7mm}{}{12mm}%
+ \marginparsep 3mm
+ \relax
+}{}
+
+ %\OnlyDescription % uncomment to suppress code line listing
+ \RecordChanges % uncomment for a change history
+ \CodelineIndex\EnableCrossrefs % uncomment for command index
+\GetFileInfo{vmargin.dtx}
+
+\begin{document}
+\DocInput{vmargin.dtx}
+%%\IfFileExists{ltxdoc.cfg}{}{\PrintChanges\PrintIndex}
+ \PrintChanges % uncomment for a change history
+ \PrintIndex % uncomment for command index
+\end{document}
+
+%</driver>
+% \fi
+%
+%
+% \GetFileInfo{vmargin.dtx}
+% \CheckSum{395}
+%
+% %^^A This command extracts all index entries:
+% %^^A sed < vmargin.idx -e 's,indexentry{,,' -e 's,=.*$,,'
+%
+% \date{\filedate}
+% \title{The \textsf{vmargin} Package\thanks
+% {This file has version number \fileversion,
+% last modified \filedate.}}
+% \author{Volker Kuhlmann\thanks{%^^A
+% ^^AEmail:\ \url{v.kuhlmann@elec.canterbury.ac.nz}.
+% Email:\ \url{VolkerKuhlmann@GMX.de}.
+% For a postal address refer to the license section.}}
+%
+%
+% %%%^^A MACROS used for this document
+% \let\package\textsf
+% \let\env\textsf
+% \let\url\texttt
+% \newcommand\optmeta[1]{[\meta{#1}]}
+% \begingroup
+% \catcode`\^^M\active^^A% Has to be active during definition!
+% \gdef\makeNLnl{\catcode`\^^M\active \def^^M{\par}}
+% \endgroup
+% \newenvironment{pckcmd}{%^^A
+% \ifvmode \else \par\vspace{-\parskip}\fi
+% \vspace{1mm}\noindent \hangindent 4em\hangafter 0\ignorespaces
+% }{%^^A
+% \par\vspace{1mm}\vspace{-\parskip}}
+% \newcommand\MargWord[1]{\marginpar{\raggedleft\PrintDescribeEnv{#1}}}
+%
+%
+% ^^A search tag: mAcRoVeRsIoN (adjust changelog)
+%
+% \changes{v2.5}{2004/07/15}
+% {\cs{margin@offset} now uses \hbox{-1truein} instead of -1in}
+%
+% \changes{v2.4.2}{2002/11/08}
+% {documentation only}
+%
+% \changes{v2.4}{2002/01/23}
+% {minor changes, mostly cosmetic}
+%
+% \changes{v2.3b}{2000/08/29}
+% {screen output of version info.}
+%
+% \changes{v2.3}{2000/08/01}
+% {Now setting page size for pdflatex.}
+%
+% \changes{v2.2b}{2000/03/14}
+% {Changed into docstrip format.
+% Improved documentation.}
+%
+% \changes{V2.2}{1999/05/31}
+% {Released under LPPL.
+% Changed references to Vmargin to vmargin.
+% \LaTeX2e\ package options introduced.}
+%
+% \changes{V2.13}{1996/06/26}
+% {Fixed comment for \cs{setmarginsrb}.}
+%
+% \changes{V2.12}{1995/03/28}
+% {Fixed documentation for \cs{setmargrb}.}
+%
+% \changes{V2.1}{1994/09/20}
+% {\cs{@defmetricpaper} now defines \cs{w}, \cs{h}, \cs{s} locally.
+% Thanks to \url{branderhorst@fgg.eur.nl}!}
+%
+% \changes{V2.0}{1994/06/28}
+% {Added support for \LaTeX2e\ \cs{paperwidth}, \cs{paperheight}.}
+%
+% \changes{V1.9}{1994/06/22}
+% {Corrected spelling in comment.}
+%
+% \changes{V1.8}{1994/05/28}
+% {Commented \cs{chk@dimen};
+% reduced load on \TeX'sparameter stack (changed \cs{chk@dimen});
+% put a conditional around references to \cs{footheight}.}
+%
+% \changes{V1.72}{1994/05/21}
+% {Fixed bug in \cs{setpapersize\{custom\}}.}
+%
+% \changes{V1.7}{1994/05/21}
+% {Changed file header.}
+%
+% \changes{1.0}{1993}
+% {Created out of Vpage.sty V2.2, 18 June 1993}
+%
+%
+% \maketitle
+%
+% \begin{abstract}
+% LaTeX package which introduces paper sizes and provides macros for
+% setting document margins. It still works with \LaTeX\ 2.09.
+% This package supersedes package vpage.
+%
+% This package file can be made part of a format by typing |\input vmargin.sty|
+% before dumping the format.
+% \end{abstract}
+%
+% \tableofcontents
+%
+%
+% \section{License}
+%
+% This package is copyright \textcopyright\ 1993, 1994, 1995, 1996, 1999, 2000,
+% 2002, 2004 by:
+%
+% \begin{quote}
+% Volker Kuhlmann,
+% c/o University of Canterbury,
+% ELEC Dept, Creyke Road,
+% Christchurch, New Zealand\\
+% ^^AE-Mail: \url{v.kuhlmann@elec.canterbury.ac.nz}
+% E-Mail: \url{VolkerKuhlmann@GMX.de}
+% \end{quote}
+%
+% 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.
+%
+%
+% \section{History}
+%
+% This is the first package I ever wrote, to save a lot of typing when dealing
+% with \TeX's 1in/1in margin offset, proper margin alignment for doublesided
+% printing, and page layout parameters I always used. As there wasn't anything
+% similar on CTAN I submitted the package, then called \package{Vpage}. I
+% never heard back, and wasn't looking for it in the right place, so I
+% thought it hadn't been accepted and never thought any more of it.
+%
+% In the meantime I realised its general-purpose potential and took the page
+% layout code out, renaming it to \package{Vmargin}. First time I heard it
+% was on CTAN was when I read the list of 3rd-party packages in the \LaTeX\
+% Companion and it had \package{vpage} in it (CTAN doesn't deal in uppercase
+% letters). So sorry for any confusion the name change caused\ldots
+%
+% Further development essentially ceased because I didn't see much scope
+% for improvements. \package{vmargin} was doing its job. I could have gone
+% overboard with package options, but didn't because I was more interested
+% in a short efficient tool which doesn't load half of the tools and/or
+% graphics bundle. It still works under both \LaTeX\ 2.09 and \LaTeXe.
+%
+%
+% \section{User manual}
+%
+% \subsection{Page Size}
+%
+% 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.
+%
+% \package{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
+% \package{geometry} package.
+%
+% The basic procedure of using \package{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 following margin setting command.
+%
+% \DescribeMacro{\setpapersize}
+% The size of the paper can be set with
+% ^^A
+% \begin{pckcmd}
+% |\setpapersize{|\meta{size}|}|
+% \end{pckcmd}
+% ^^A
+% \meta{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
+% ^^A
+% \begin{pckcmd}
+% |\setpapersize[landscape]{|\meta{size}|}|
+% \end{pckcmd}
+% ^^A
+% which swaps the width and height dimensions of the paper.
+% \begin{pckcmd}
+% |\setpapersize[portrait]{|\meta{size}|}|
+% \end{pckcmd}
+% is allowed but is the default.
+%
+% If you have a size which is not pre-defined use
+% ^^A
+% \begin{pckcmd}
+% |\setpapersize{custom}{|\meta{width}|}{|\meta{height}|}|
+% \end{pckcmd}
+% ^^A
+% For \meta{width} and \meta{height} insert the respective dimensions of your
+% paper.
+%
+% \DescribeMacro{\PaperWidth}
+% \DescribeMacro{\PaperHeight}
+% |\setpapersize| stores the actual dimensions of the paper in the length
+% variables
+% ^^A
+% \begin{pckcmd}
+% |\PaperWidth| \\
+% |\PaperHeight|
+% \end{pckcmd}
+%
+% \DescribeMacro{\ifLandscape}
+% which can be used further, if desired.
+% ^^A
+% \begin{pckcmd}
+% |\ifLandscape|
+% \end{pckcmd}
+% ^^A
+% yields true if a landscape format is selected. Do not write to
+% |\PaperWidth|, |\PaperHeight|, or call |\Landscapetrue| or |\Landscapefalse|,
+% it will not work!!
+%
+% \package{vmargin} detects when it runs under pdflatex, and in that case also
+% sets the pdf page size (variables |\pdfpagewidth| and |\pdfpageheight|).
+%
+% Default for the paper size is A4 portrait.
+%
+%
+% \subsection{Margins}
+%
+% \DescribeMacro{\setmargins}
+% Once the paper size is selected, margins can be set with
+% \begin{pckcmd}
+% |\setmargins{|\meta{leftmargin}|}{|\meta{topmargin}^^A
+% |}{|\meta{textwidth}|}{|\meta{textheight}|}%| \\
+% | {|\meta{headheight}|}{|\meta{headsep}|}{|\meta{footheight}^^A
+% |}{|\meta{footskip}|}|
+% \end{pckcmd}
+% or with
+% \begin{pckcmd}
+% |\setmarginsrb{|\meta{leftmargin}|}{|\meta{topmargin}^^A
+% |}{|\meta{rightmargin}|}{|\meta{bottommargin}|}%| \\
+% | {|\meta{headheight}|}{|\meta{headsep}^^A
+% |}{|\meta{footheight}|}{|\meta{footskip}|}|
+% \end{pckcmd}
+% \DescribeMacro{\setmarginsrb}
+% In the latter case |\textwidth| and |\textheight| are calculated using the
+% width and height of the selected paper such as to effectively result in
+% \meta{rightmargin} and \meta{bottommargin}. The first four parameters of the
+% above two commands are used to set |\oddsidemargin|, |\evensidemargin|,
+% |\textwidth|, |\topmargin|, and |\textheight|.
+%
+% \DescribeMacro{\setmargnohf}
+% \DescribeMacro{\setmargnohfrb}
+% |\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.
+% \begin{pckcmd}
+% |\setmargnohf{|\meta{leftmargin}|}{|\meta{topmargin}^^A
+% |}{|\meta{textwidth}|}{|\meta{textheight}|}%| \\
+% |\setmargnohfrb{|\meta{leftmargin}|}{|\meta{topmargin}^^A
+% |}{|\meta{rightmargin}|}{|\meta{bottommargin}|}%|
+% \end{pckcmd}
+%
+% \DescribeMacro{\setmarg}
+% \DescribeMacro{\setmargrb}
+% |\setmarg|, |\setmargrb|
+% are the same as |\setmargnohf|, |\setmargnohfrb| except that
+% \meta{headheight}, \meta{headsep}, \meta{footheight}, and \meta{footskip} are
+% unchanged instead of being set to 0pt.
+% \begin{pckcmd}
+% |\setmarg{|\meta{leftmargin}|}{|\meta{topmargin}^^A
+% |}{|\meta{textwidth}|}{|\meta{textheight}|}%| \\
+% |\setmargrb{|\meta{leftmargin}|}{|\meta{topmargin}^^A
+% |}{|\meta{rightmargin}|}{|\meta{bottommargin}|}%|
+% \end{pckcmd}
+%
+% Example:
+%
+% A4 paper, left margin 30mm, top, right, and bottom margin 20mm
+% each, no headers or footers:
+% \begin{pckcmd}
+% |\setpapersize{A4}| \\
+% |\setmarginsrb{30mm}{20mm}{20mm}{20mm}{0pt}{0mm}{0pt}{0mm}| \\
+% |\pagestyle{empty}|
+% \end{pckcmd}
+% The same settings would result with:
+% \begin{pckcmd}
+% |\setpapersize{A4}| \\
+% |\setmargnohfrb{30mm}{20mm}{20mm}{20mm}|
+% \end{pckcmd}
+%
+% Defaults are
+% \begin{pckcmd}
+% |\setmarginsrb{35mm}{20mm}{25mm}{15mm}{12pt}{11mm}{0pt}{11mm}|
+% \end{pckcmd}
+% or with package option nohf
+% \begin{pckcmd}
+% |\setmargnohfrb{35mm}{20mm}{25mm}{15mm}|
+% \end{pckcmd}
+%
+%
+% \subsection{Dealing with \TeX's Margin Offset}
+%
+% The default top and left margins of TeX are +1in. |\setmargXXX| call
+% ^^A
+% |\margin@offset|
+% ^^A
+% \DescribeMacro{\margin@offset}
+% \DescribeMacro{\hoffset}
+% \DescribeMacro{\voffset}
+% which initialises |\hoffset|, |\voffset| to -1truein 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 -1truein.
+% This is what
+% %^^A
+% |\shiftmargins|
+% %^^A
+% does.
+%
+% If |\margin@offset| is already defined at the time \package{vmargin} is loaded
+% it is \emph{not} redefined! Therefore if |\margin@offset| is defined before
+% \package{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 \emph{before} \package{vmargin}, i.e. appears in the
+% list of document-substyles of the |\documentstyle| command before
+% \package{vmargin}.
+% %^^A
+% Any better way of doing this? (grumble)
+%
+% Example:
+% \begin{pckcmd}
+% |\documentclass[...]{...}| \\
+% |\usepackage{...,margins,vmargin,...}|
+% \end{pckcmd}
+% if |\margin@offset| is defined in a file called margins.sty.
+%
+% or with \LaTeX\ 2.09:
+% \begin{pckcmd}
+% |\documentstyle[...,margins,vmargin,...]{...}|
+% \end{pckcmd}
+%
+%
+% \subsection{\LaTeXe}
+%
+% 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).
+%
+% \LaTeX2e\ (unless in compatibility mode) does not know |\footheight| any
+% more. \package{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.
+%
+% \LaTeXe\ 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
+% \package{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 \package{pageframe.sty}).
+%
+% The following package options are available with \LaTeXe:
+%
+% \begin{description}
+% \item[shiftmargins] \MargWord{shiftmargins}
+% Same as |\shiftmargins|.
+% \item[portrait] \MargWord{portrait}
+% Keep the default of a portrait page layout.
+% \item[landscape] \MargWord{landscape}
+% Change the default page orientation to landscape.
+% Note: using |\setpapersize|
+% after |\usepackage| causes package option landscape to be ignored.
+% \item[A4, etc] \MargWord{A4}
+% Same as using |\setpapersize[...]{...}|.
+% Note: |\setpapersize| always sets the orientation to
+% portrait unless landscape is given as an optional argument to
+% |\setpapersize|.
+% \item[nohf] \MargWord{nohf}
+% Do not make space for header and footer lines; this also
+% sets the pagestyle to |empty|.
+% \end{description}
+%
+% All unknown options are treated as a paper size, if necessary
+% generating an error that the requested paper size is not defined.
+%
+%
+% \subsection{Inclusion in \TeX\ formats}
+%
+% This file may be loaded in initex before dumping the format, by typing
+% \begin{verbatim}
+% \makeatletter
+% \input vmargin.sty
+% \makeatother
+% \end{verbatim}\vspace{-\bigskipamount}
+% Be aware that this generates a non-standard format. It is really only useful
+% for slow computers. This feature has not been tested with \LaTeXe.
+%
+%
+% \subsection{Hints for using pageframe.sty}
+%
+% \package{vmargin.sty} and \package{pageframe.sty} can be used together if the
+% following points are considered:
+%
+% \package{vmargin} uses |\hoffset| and |\voffset| and writes negative values
+% into it, \package{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 preamble of your text) and adjust them later on.
+%
+% \package{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\ldots) the size
+% should be specified with
+%
+% |\setpapersize{custom}{|\meta{width}|}{|\meta{height}|}|
+%
+% The correct height of the trimmed page can then be given to
+% \package{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 \package{pageframe} 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
+% preamble of the document.
+%
+%
+% \subsection{Bugs and To Do}
+%
+% I have not tested this with older versions of \LaTeXe\ because I don't
+% have any. If there are any problems please let me know and I'll do
+% something about it.
+%
+% The way the metric paper sizes are stored takes up a lot of space.
+% A metric size could be computed by |\setpapersize|.
+%
+% If you have any comments (positive or negative) please let me know!
+%
+%
+% \subsection{Summary}
+%
+% \begin{verbatim}
+% new lengths:
+% \PaperWidth (read-only)
+% \PaperHeight (read-only)
+%
+% new ifs:
+% \ifLandscape (read-only)
+%
+% 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
+% \end{verbatim}\vspace{-\bigskipamount}
+%
+%
+% \DoNotIndex{\ ,\.,\_}%^^A DOES NOT WORK!!
+% \DoNotIndex{\@ifnextchar,\@ifundefined,\@nameuse,\CurrentOption}
+% \DoNotIndex{\DeclareOption,\NeedsTeXFormat,\PackageError}
+% \DoNotIndex{\ProcessOptions,\ProvidesPackage,\advance,\begingroup}
+% \DoNotIndex{\catcode,\count,\csname,\def,\dimen,\edef,\else}
+% \DoNotIndex{\endcsname,\endgroup,\endinput,\evensidemargin}
+% \DoNotIndex{\everyjob,\expandafter,\fi,\footheight,\footskip}
+% \DoNotIndex{\headheight,\headsep,\if,\ifnum,\let,\loop}
+% \DoNotIndex{\newcommand,\newdimen,\newif,\noexpand,\oddsidemargin}
+% \DoNotIndex{\pagestyle,\relax,\repeat,\space,\string,\textheight}
+% \DoNotIndex{\textwidth,\the,\topmargin,\typeout,\usename,\xdef}
+% \DoNotIndex{\z@}
+%
+% \StopEventually{}
+%
+%
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+%
+% We use macros for the version info here.
+%
+% ^^A search tag: mAcRoVeRsIoN
+% \begin{macrocode}
+%\def\filename{Vmargin}
+\def\filename{vmargin}
+\def\fileversion{V2.5}
+\def\filedate{2004/07/15}
+% \end{macrocode}
+%
+% Allow \package{vmargin} to be |input| more than once.
+% Important for embedding in formats.
+% \begin{macrocode}
+\@ifundefined{Vmargin}{}{\endinput}
+% \end{macrocode}
+%
+% Make use of \LaTeX2e\ commands, but only if we are actually running with it.
+% \begin{macrocode}
+\@ifundefined{documentclass}{
+ \edef\Vmargin{Style `\filename', \fileversion, \filedate}
+ \expandafter\everyjob\expandafter{\the\everyjob\typeout{\Vmargin}}
+ \typeout{\Vmargin}
+}{
+ \NeedsTeXFormat{LaTeX2e}[1994/06/01]
+ \edef\Vmargin{\filedate\space\fileversion\space set document margins (VK)}
+ \ProvidesPackage{\filename}[\Vmargin]
+ \edef\Vmargin{Package: \filename\space\Vmargin}
+ \expandafter\everyjob\expandafter{\the\everyjob\typeout{\Vmargin}}
+ \typeout{\Vmargin}
+}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\PaperWidth}
+% \begin{macro}{\PaperHeight}
+% \begin{macro}{\ifLandscape}
+% New lengths for paper width and height, and a new if, as flag for using
+% landscape orientation.
+%
+% \begin{macrocode}
+\newdimen\PaperWidth
+\newdimen\PaperHeight
+\newif\ifLandscape
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\setpapersize}
+% Setting a paper size. Kind of a data base lookup. Well, it looks up whether
+% the control sequence is defined\ldots
+%
+% When running pdflatex we also set the pdf page size (|\pdfpagewidth| and
+% |\pdfpageheight|).
+% \begin{macrocode}
+\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{pdfpagewidth}{}{\pdfpagewidth\PaperWidth}%
+ \@ifundefined{pdfpageheight}{}{\pdfpageheight\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}{}}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@defmetricpaper}
+% Calculate smaller sizes from largest one.
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Pre-defined paper/envelope sizes:
+%
+% A0, A1, A2, ..., A9, B0, B1, ..., B9, C0, C1, ..., C9
+% \begin{macrocode}
+\@defmetricpaper{A}{840.9mm}{1189.2mm}
+\@defmetricpaper{B}{1000mm}{1414mm}
+\@defmetricpaper{C}{917mm}{1297mm}
+% \end{macrocode}
+%
+% delete definition to save memory
+% \begin{macrocode}
+\let\@defmetricpaper=\relax
+% \end{macrocode}
+%
+% USletter, USlegal, USexecutive
+% \begin{macrocode}
+\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@}
+% \end{macrocode}
+%
+% custom
+% \begin{macrocode}
+\def\paper@custom#1#2{\PaperWidth#1\PaperHeight#2\@po@}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\margin@offset}
+% Initialise left margins (odd and even) and |\hoffset|, |\voffset|.
+% Compensates for the +1in/+1in top/left corner used by \TeX\
+% by either reducing the margins or |\hoffset|, |\voffset| by 1truein.
+% This macro is only defined here if it is not already defined! Define this
+% macro before loading \package{vmargin} to use your own definition.
+%
+% \begin{macrocode}
+\@ifundefined{margin@offset}{%
+\def\margin@offset{%
+ \if@shiftmargins
+ \oddsidemargin -1truein\evensidemargin\oddsidemargin\topmargin\oddsidemargin
+ \hoffset\z@\voffset\z@
+ \else
+ \oddsidemargin\z@\evensidemargin\z@\topmargin\z@
+ \hoffset -1truein\voffset\hoffset
+ \fi
+}}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\shiftmargins}
+% A new if, as flag for when to use margins instead of |\hoffset|/|\voffset| to
+% compensate, and a user-command to set the flag.
+% \begin{macrocode}
+\newif\if@shiftmargins
+\@shiftmarginsfalse % this MUST be default (pageframe.sty)
+\def\shiftmargins{\@shiftmarginstrue}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Setting margins
+%
+% \begin{macro}{\setmargins}
+% |\setmargins{leftmargin}{topmargin}{textwidth}{textheight}% |\\
+% | {headheight}{headsep}{footheight}{footskip}|
+%
+% \begin{macrocode}
+\newcommand\setmargins[8]{%
+ \margin@offset
+ \advance\oddsidemargin #1
+ \advance\evensidemargin \PaperWidth % = paperwidth - left - width
+ \advance\evensidemargin -#1
+ \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}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setmarginsrb}
+% |\setmarginsrb{leftmargin}{topmargin}{rightmargin}{bottommargin}%|\\
+% | {headheight}{headsep}{footheight}{footskip}|
+%
+% \begin{macrocode}
+\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 - left - width
+ \advance\evensidemargin -#1
+ \advance\evensidemargin -\textwidth
+ \advance\topmargin #2
+ \headheight #5
+ \headsep #6
+ \@ifundefined{footheight}{}{\footheight=#7}%
+ \footskip #8
+ \chk@dimen{#1}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setmargnohf}
+% |\setmargnohf{leftmargin}{topmargin}{textwidth}{textheight}| \\
+% headheight, headsep, footheight, footskip set to 0pt
+% \begin{macrocode}
+\newcommand\setmargnohf[4]{%
+ \setmargins{#1}{#2}{#3}{#4}\z@\z@\z@\z@
+ \pagestyle{empty}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setmargnohfrb}
+% |\setmargnohfrb{leftmargin}{topmargin}{rightmargin}{bottommargin}| \\
+% headheight, headsep, footheight, footskip set to 0pt
+% \begin{macrocode}
+\newcommand\setmargnohfrb[4]{%
+ \setmarginsrb{#1}{#2}{#3}{#4}\z@\z@\z@\z@
+ \pagestyle{empty}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setmarg}
+% |\setmarg{leftmargin}{topmargin}{textwidth}{textheight}| \\
+% headheight, headsep, footheight, footskip unchanged
+% \begin{macrocode}
+\newcommand\setmarg[4]{%
+ \setmargins{#1}{#2}{#3}{#4}%
+ \headheight\headsep\footheight\footskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setmargrb}
+% |\setmargrb{leftmargin}{topmargin}{rightmargin}{bottommargin}| \\
+% headheight, headsep, footheight, footskip unchanged
+% \begin{macrocode}
+\newcommand\setmargrb[4]{%
+ \setmarginsrb{#1}{#2}{#3}{#4}%
+ \headheight\headsep\footheight\footskip}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\chk@dimen}
+% A brief plausability check.\\
+% h-warning:\\
+% \null\quad if [leftmarg + textwidth $>$ paperwidth] resp.\\
+% \null\quad if [leftmarg + rightmarg $>$ paperwidth].\\
+% v-warning:\\
+% \null\quad if [topmarg + textheight $>$ paperheight] resp.\\
+% \null\quad if [topmarg + bottommarg $>$ paperheight].
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\chk@dimen@err}
+% Make this work with both \LaTeX\ 2.09 and \LaTeXe.
+% \begin{macrocode}
+\@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
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Defaults, and \LaTeXe\ package options (ignored for 2.09).
+% \begin{macrocode}
+\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
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+%
+% \Finale
+%
+% \iffalse
+% %% EOF vmargin.dtx
+% %%----------------------------------------------------------------------------
+% \fi
diff --git a/macros/latex/contrib/vmargin/vmargin.ins b/macros/latex/contrib/vmargin/vmargin.ins
new file mode 100644
index 0000000000..e823eb4188
--- /dev/null
+++ b/macros/latex/contrib/vmargin/vmargin.ins
@@ -0,0 +1,27 @@
+\def\batchfile{vmargin.ins}
+
+\input docstrip
+
+\preamble
+\endpreamble
+
+\keepsilent
+\askforoverwritefalse % for developing
+
+\generate{\file{vmargin.sty}{\from{vmargin.dtx}{package}}
+ \file{vmargin.drv}{\from{vmargin.dtx}{driver}}
+ }
+
+\Msg{**********************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the file}
+\Msg{* `vmargin.sty' into a directory searched by TeX.}
+\Msg{*}
+\Msg{* To produce the documentation run LaTeX on the}
+\Msg{* file `vmargin.dtx'.}
+\Msg{* If you need to edit anything for printing the documentation, edit}
+\Msg{* file `vmargin.drv' and run LaTeX on `vmargin.drv'.}
+\Msg{*}
+\Msg{**********************************************************************}
+
+\endinput
diff --git a/macros/latex/contrib/vmargin/vmargin.pdf b/macros/latex/contrib/vmargin/vmargin.pdf
new file mode 100644
index 0000000000..8fbbac5305
--- /dev/null
+++ b/macros/latex/contrib/vmargin/vmargin.pdf
Binary files differ