% vertbars.sty  The VERTical BARS package
%               An extension to the lineno package
%               to put vertical rules at left (right)
%               of lines instead of numbers
%
% This package requires the lineno package
%
% Author: Peter Wilson, Herries Press
% Maintainer: Will Robertson (will dot robertson at latex-project dot org)
% Copyright Peter R Wilson 2000
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any 
% later version: <http://www.latex-project.org/lppl.txt>
%
% This work has the LPPL maintenance status "maintained".
% The Current Maintainer of this work is Will Robertson.
%
% Instructions are at the end of this file, after \endinput

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{vertbars}[2009/09/04 v1.0a vertical bars]

\newcommand{\LNenv}{runninglinenumbers}
\DeclareOption{switch}{%
  \renewcommand{\LNenv}{runningpagewiselinenumbers}
  \PassOptionsToPackage{\CurrentOption}{lineno}
}

\DeclareOption{switch*}{%
  \renewcommand{\LNenv}{runningpagewiselinenumbers}
  \PassOptionsToPackage{\CurrentOption}{lineno}
}

\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{lineno}}
\ProcessOptions\relax
\RequirePackage{lineno}

%%% code to add stuff at start and end of a pre-existing zero argument macro
\newcommand{\addtodef}[3]{\begingroup
  \@temptokena{#2}%
  \toks@\expandafter{#1#3}%
  \edef\x{\endgroup
    \def\noexpand#1{\the\@temptokena \the\toks@}}%
  \x
}

\newlength{\pwvbbl}
\setlength{\pwvbbl}{\baselineskip}  % it's useful to preserve \baselineskip
\newlength{\barwidth}         % width of bars
\setlength{\barwidth}{0.4pt}
\newlength{\barspace}         % horizontal space between bars
\setlength{\barspace}{0.5\linenumbersep}

\newcommand{\addtomakeLNL}{{\rule[-0.25\pwvbbl]{\barwidth}{1.1\pwvbbl}\hskip\barspace\relax}}
\newcommand{\pwvbLNL}{}
\newenvironment{vertbar}{\begin{\LNenv}%
  \addtodef{\pwvbLNL}{}{\addtomakeLNL}%
  \let\LineNumber\pwvbLNL%
  }{\end{\LNenv}}

\endinput

% Instructions:
%
%    Read the documentation for the lineno package.
%
%    The vertbars package takes the same options as the lineno package.
% In particular, the switch and switch* options control which side
% of the page any bars will be printed. The package automatically
% calls the lineno package, so you just need:
% \usepackage[...]{vertbars}
%
%    The package provides one environment, namely the vertbar environment.
% The vertbar environment is equivalent to the linenumbers environment
% except that a vertical bar replaces the line number. Text paragraphs 
% within a vertbar environment will be marked with a vertical bar in 
% the margin. Nested environments generate multiple marginal bars.
%
%    The width of the bars is controlled by the value of \barwidth, which 
% is initialised to 0.4pt, and can be changed via \setlength.
%
%    The horizontal seperation between adjacent bars is controlled by
% the value of \barspace, which is initialised to 0.5\linenumbersep, and can
% be changed via \setlength. (\linenumbersep is a command from the
% lineno package that controls the spacing between line numbers and the
% text body).
%
% NOTE: Bars can only be applied to complete paragraphs. For bars 
% between arbitrary points, use the changebar package. Any limitations
% of the lineno package apply equally to the vertbars package.
%
% Peter W.
%
% CHANGE HISTORY
%
% v1.0a (2009/09/04) - New maintainer (Will Robertson)
%




