%%
%% This is file `bkltprnt.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% booklet.dtx  (with options: `prnt')
%% 
%% -----------------------------------------------------------------
%%   Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net
%%   Copyright 2000 --- 2005 Peter R. Wilson
%% 
%%   This work may be distributed and/or modified under the
%%   conditions of the LaTeX Project Public License, either
%%   version 1.3 of this license or (at your option) any
%%   later version.
%%   The latest version of the license is in
%%      http://www.latex-project.org/lppl.txt
%%   and version 1.3 or later is part of all distributions of
%%   LaTeX version 2003/06/01 or later.
%% 
%%   This work has the LPPL maintenance status "author-maintained".
%% 
%%   This work consists of the files listed in the README file.
%% -----------------------------------------------------------------
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bkltprnt}[2005/03/23 v0.7 support for booklet printing]

\newdimen\@targetwidth
\newdimen\@targetheight
\newdimen\@sourcewidth
\newdimen\@sourceheight

\newif\if@leftpage
  \@leftpagetrue
\newbox\@leftpage
\newbox\@rightpage
\newcount\@physicalpage

\multiply\maxdeadcycles by 40\relax

\newcount\bookletpage
  \bookletpage=0
\newcount\leftpagenumber
\newcount\rightpagenumber

\newcommand*{\twoupp@geboxes}{%
  \advance\bookletpage\@ne
  \expandafter\newbox\csname bookletbox\the\bookletpage\endcsname
  \ifnum \bookletpage < \c@signature
    \twoupp@geboxes
  \fi}
\AtBeginDocument{\twoupp@geboxes\bookletpage=\z@}

{\catcode`\p=12\catcode`\t=12\gdef\@@inv@@mag#1pt#2{\def#2{#1}}}
\def\target#1#2#3{%
  \mag #1\relax
  \@targetwidth=1000pt
  \divide\@targetwidth by #1\relax
  \expandafter\@@inv@@mag\the\@targetwidth\inv@targetmag
  \@targetwidth=#2\relax
  \@targetwidth=\inv@targetmag\@targetwidth
  \@targetheight=#3\relax
  \@targetheight=\inv@targetmag\@targetheight}

\def\source#1#2#3{%
  \@sourcewidth=1000pt
  \divide\@sourcewidth by #1\relax
  \expandafter\@@inv@@mag\the\@sourcewidth\inv@sourcemag
  \@sourcewidth=#2\relax
  \@sourcewidth=\inv@sourcemag\@sourcewidth
  \@sourceheight=#3\relax
  \@sourceheight=\inv@sourcemag\@sourceheight}

\renewcommand*{\setpdftargetpages}{%
  \ifprintoption
    \setlength{\pdfpageheight}{\@targetheight}%
    \setlength{\pdfpagewidth}{\@targetwidth}%
    \let\fixpdflayout\relax
  \fi}
\renewcommand*{\setdvipstargetpages}{%
  \ifprintoption
    \AtBeginDvi{\special{papersize=\the\@targetwidth,\the\@targetheight}}%
    \let\fixdvipslayout\relax
  \fi}

\def\targetBooklet{%
  \def\ship@@@leftpage{\save@booklet\@leftpage}%
  \def\ship@@@rightpage{\save@booklet\@rightpage}%
  \@leftpagefalse}
\targetBooklet

\def\targettopbottom{%
  \def\make@@halfpage{\make@@halftopbottom}%
  \def\make@fullpage{\make@fulltopbottom}%
  \sidebysidefalse}

\DeclareOption{four}{\setcounter{signature}{4}}
\DeclareOption{eight}{\setcounter{signature}{8}}
\DeclareOption{sixteen}{\setcounter{signature}{16}}
\DeclareOption{thirtytwo}{\setcounter{signature}{32}}
\DeclareOption{twouparticle}{\twouparticle}
\DeclareOption{landscape}{\twouplandscape}
\DeclareOption{largetypeblock}{\twoupplain}
\DeclareOption{1to1}{\twouponetoone}

\expandafter\let\csname &normal@shipout\endcsname\shipout
\def\shipout{%
  \if@leftpage
    \global\@leftpagefalse
    \def\next{\afterassignment\ship@leftpage\global\setbox\@leftpage=}%
  \else
    \global\@leftpagetrue
    \def\next{\afterassignment\ship@rightpage\global\setbox\@rightpage=}%
  \fi
  \next}

\def\ship@leftpage{%
  \ifvoid\@leftpage\aftergroup\ship@@leftpage\else\ship@@leftpage\fi}
\def\ship@rightpage{%
  \ifvoid\@rightpage\aftergroup\ship@@rightpage\else\ship@@rightpage\fi}

\def\ship@@leftpage{\make@halfpage\@leftpage\ship@@@leftpage}
\def\ship@@rightpage{\make@halfpage\@rightpage\ship@@@rightpage}

\def\make@halfpage#1{%
  \dp#1=\z@
  \setbox#1=\vbox to\@sourceheight{%
    \vskip \inv@sourcemag in
    \vskip \voffset
    \hbox to\@sourcewidth{\hskip\inv@sourcemag in\hskip\hoffset\box#1\hss}%
    \vss}%
  \make@@halfpage#1}

\def\make@@halfsidebyside#1{%
  \global\setbox#1=\vbox to\@targetheight{\vss
    \hbox to.5\@targetwidth{\hss\box#1\hss}\vss}}
\def\make@@halfpage{\make@@halfsidebyside}

\def\make@@halftopbottom#1{%
  \global\setbox#1=\vbox to.5\@targetheight{\vss
    \hbox to\@targetwidth{\hss\box#1\hss}\vss}}

\def\ship@twoup{%
  \begingroup
    \voffset=-\inv@targetmag in
    \hoffset=\voffset
    \global\advance\@physicalpage by 1
    \count\z@=\@physicalpage
    \csname &normal@shipout\endcsname\make@fullpage
  \endgroup}

\def\make@fullsidebyside{%
  \hbox{\box\@leftpage\pagesep@sidebyside\box\@rightpage}}
\def\make@fulltopbottom{%
  \vbox{\offinterlineskip\box\@leftpage\pagesep@topbottom\box\@rightpage}}

\def\make@fullpage{\make@fullsidebyside}

\def\pagesep@sidebyside{%
  \begingroup
    \advance\pageseplength by \pagesepoffset
    \pagesepwidth=\inv@targetmag\pagesepwidth
    \kern -.5\pagesepwidth
    \vrule height \inv@targetmag\pageseplength
           depth -\inv@targetmag\pagesepoffset
           width \pagesepwidth
    \kern -.5\pagesepwidth
  \endgroup}
\def\pagesep@topbottom{%
  \begingroup
    \pagesepwidth=\inv@targetmag\pagesepwidth
    \vskip -.5\pagesepwidth
    \moveright\inv@targetmag\pagesepoffset\hbox{%
      \vrule height\pagesepwidth width\inv@targetmag\pageseplength}%
    \vskip -.5\pagesepwidth
  \endgroup}

\begingroup
\let\newbox\relax
\gdef\save@booklet#1{%
  \begingroup
    \globaldefs=1
    \ifnum\c@sigcount=\z@\bookletpage=0\fi
    \advance\bookletpage by 1
    \addtocounter{sigcount}{1}
%%%%    \expandafter\newbox\csname bookletbox\the\bookletpage\endcsname
    \expandafter\setbox\csname bookletbox\the\bookletpage\endcsname\box#1%
  \endgroup
  \ifnum\c@sigcount=\c@signature     %%% PW
    \twoup@eject%
    \setcounter{sigcount}{0}%
  \fi}
\endgroup

\def\make@bookletpage#1{%
  \setbox\ifodd#1\@rightpage\else\@leftpage\fi=%
    \expandafter\box\csname bookletbox\the#1\endcsname}

\def\booklet@loop{%
  \count\z@\rightpagenumber
  \make@bookletpage\leftpagenumber
  \make@bookletpage\rightpagenumber
  \ship@twoup
  \Booklet@@loop
}

\def\Booklet@@loop{%
  \advance\rightpagenumber by 1
  \advance\leftpagenumber by -1
  \ifnum\leftpagenumber<\rightpagenumber\else\expandafter\booklet@loop\fi}

\def\twoupemptypage{\shipout\hbox{}}

\def\twoup@eject{
  \leftpagenumber\bookletpage
  \advance\leftpagenumber by 3
  \divide\leftpagenumber by 4
  \multiply\leftpagenumber by 4
  \rightpagenumber=1
  \ifnum\leftpagenumber>\bookletpage
    \setbox\@leftpage\hbox{}%
    \make@@halfpage\@leftpage
    \loop
      \setbox\@rightpage\copy\@leftpage
      \save@booklet\@rightpage
    \ifnum\leftpagenumber>\bookletpage
    \repeat
  \fi
  \booklet@loop}

\begingroup
\catcode`\>=9\relax
>>\gdef\twoupclearpage{\clearpage\twoup@eject}
>>\expandafter\@temptokena\expandafter{\enddocument}
>>\xdef\enddocument{\noexpand\twoupclearpage\the\@temptokena}
\endgroup

\def\TwoupWrites{%
  \let\TwoupSaved@write\write
  \let\TwoupSaved@read\read
  \let\TwoupSaved@openout\openout
  \let\TwoupSaved@closeout\closeout
  \def\write{\TwoupSaved@write-1{}\immediate\TwoupSaved@write}%
  \def\read{\TwoupSaved@write-1{}\immediate\TwoupSaved@read}%
  \def\openout{\TwoupSaved@write-1{}\immediate\TwoupSaved@openout}%
  \def\closeout{\TwoupSaved@write-1{}\immediate\TwoupSaved@closeout}%
  \let\TwoupWrites\relax}

\def\twouparticle{\target{\magstepminus1}{\paperheight}{\paperwidth}}
\def\twoupplain{\target{\magstepminus2}{\paperheight}{\paperwidth}}
\def\twouplandscape{\target{\magstepminus2}{\paperwidth}{\paperheight}%
  \targettopbottom}
\def\twouponetoone{\target{\magstep0}{\paperheight}{\paperwidth}}

\source{\magstep0}{\paperwidth}{\paperheight}
\pagesepwidth 0pt
\pageseplength 6.5in
\pagesepoffset 1in
\TwoupWrites

\ExecuteOptions{twouparticle,thirtytwo}
\ProcessOptions

\endinput
%%
%% End of file `bkltprnt.sty'.
