\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{underscore,amstext}
\usepackage[a4paper]{geometry}
\usepackage{miscdoc}
\usepackage[scaled=0.85]{luximono}
\newcommand\nl{\par\noindent}
\begin{document}
\title{The \Package{vruler} package~---\\
  Vertical rulers in \LaTeX{}, Plain \TeX{} and ams\TeX{}}
\author{Zhuhan Jiang\thanks{University of New England, Australia NSW 2351}}
\date{October 1996, version v2.3\thanks{%
    This documentation created 2010-03-21, by Robin Fairbairns}}
\maketitle

\section{What's the package for?}

Make a vertical ruler, numbering consecutively so that any part of an
article can be pinpointed immediately.  The vruler may be moved freely
up and down, left and right.
         
There are no formally released packages that number lines in general
text one by one without missing certain lines, particularly when there
are many maths equations in the text. So \Package{vruler} is a good
alternative for people writing text of versatile format or lots of
maths formulas.

\section{The commands}

\cmdinvoke*{setvruler}[scale][initial_count][step][digits][mode]%
[odd_hshift][even_hshift][vshift][height]\nl
defines the start of vertical rulers, where:
\par\addvspace{1ex}
\noindent
\meta{scale} is the distance between two consecutive markings on the
vruler\nl
\meta{initial_count} is the value on the first mark on the ruler\nl
\meta{step} is the mark increment\nl
\meta{digits} is the number of digits needed for ruler markings\nl
$\text{\meta{mode}}=0$ if each page has the same ruler marking, $=1$
otherwise\nl
\meta{odd_hshift} is the horizontal shift for odd pages, from the
default\nl
\meta{even_hshift} is the horizontal shift for even pages, from the
default\nl
\meta{vshift} is the the vertical shift, from the default value, and\nl
\meta{height} is the height of the vertical ruler.
\par\addvspace{1ex}
\noindent\cs{unsetvruler} stops vrulers.
\par\addvspace{1ex}
\noindent\cmdinvoke*{setdefault}{cmdname}{n}{default_1}{\dots{}}{default_n}\nl
(re)sets macro \meta{n} defaults for
\cmdinvoke{cmdname}[\#1][\dots{}][\#n] to take \meta{default_1} to
\meta{default_n} respectively, so that \cmdinvoke*{cmdname}[][xy] is
the same as
\cmdinvoke{cmdname}*[\meta{default_1}][xy][\meta{default\dots{}}].

You don't need to use \cs{setdefault} unless you would like to change
the default setting for macros in \Package{vruler} or elsewhere.
\par\addvspace{1ex}
\noindent\cs{vrulecount} holds the next mark value to be used on the
vertical rules.

\subsection*{Defaults}

The parameters of \cs{setvruler} admit defaults.  With no arguments,
the command is equivalent to:\nl
\leavevmode\quad\cmdinvoke{setvruler}[10pt][1][1][4][1][0pt][0pt][0pt][\cs{textheight}]\nl
and\nl
\leavevmode\quad\cmdinvoke{setvruler}[][20] has the same effect as:\nl
\leavevmode\quad\cmdinvoke{setvruler}[10pt][20]

\section{Notes}

\begin{enumerate}
\item If you are using the \Package{multicol} package, then you might
  want to move the vruler into the center to separate the columns.
\item If you use a value of \cs{topskip} other than the default, then
  you will have to alter \meta{vshift} and \meta{height} parameters in
  \cs{setvruler} accordingly (which is simple).
\item It is best to choose the value \cs{baselineskip} \meta{scale} so
  that line synchronisation is often optimal.  Use (e.g.\@) ``5+'' to
  denote the line immediately after marking number ``5'' if
  necessary.
\item In twosided \Package{book} class in \LaTeXe{}, the initial
  numbering of title page via \cmdinvoke{begin}{titlepage} is actually
  one page away.  To overcome this, either do not include the title
  page in the region covered by vruler, or set the initial count
  (\texttt{\#2}) to a number (a page ahead) so that the resulting
  initial number is what one needs.
\item The file \texttt{vruler-example.sty} in the distribution offers
  an example of use.
\end{enumerate}
\end{document}
