From 16b64696d398d8d52f59c053e91078bed894ac86 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 12 Jan 2006 23:52:24 +0000 Subject: booklet git-svn-id: svn://tug.org/texlive/trunk@720 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/booklet/bkltprnt.sty | 268 +++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/booklet/bkltprnt.sty (limited to 'Master/texmf-dist/tex/latex/booklet/bkltprnt.sty') diff --git a/Master/texmf-dist/tex/latex/booklet/bkltprnt.sty b/Master/texmf-dist/tex/latex/booklet/bkltprnt.sty new file mode 100644 index 00000000000..749ccc7f7ac --- /dev/null +++ b/Master/texmf-dist/tex/latex/booklet/bkltprnt.sty @@ -0,0 +1,268 @@ +%% +%% 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'. -- cgit v1.2.3