From 1eb9b1b4f7d2fea92cb8e8354d34d9fb1ef9d326 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 12 Jan 2006 23:54:54 +0000 Subject: envlab git-svn-id: svn://tug.org/texlive/trunk@866 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/envlab/envlab.sty | 458 ++++++++++++++++++++++++++ 1 file changed, 458 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/envlab/envlab.sty (limited to 'Master/texmf-dist/tex/latex/envlab/envlab.sty') diff --git a/Master/texmf-dist/tex/latex/envlab/envlab.sty b/Master/texmf-dist/tex/latex/envlab/envlab.sty new file mode 100644 index 00000000000..e9a5dc090b5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/envlab/envlab.sty @@ -0,0 +1,458 @@ +%% +%% This is file `envlab.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% envlab.dtx (with options: `package') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% You are *not* allowed to modify this file. +%% +%% You are *not* allowed to distribute this file. +%% For distribution of the original source see +%% the terms for copying and modification in the file envlab.dtx. +%% +%% Copyright Boris Veytsman 1996 +%% +%% \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 \~} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{envlab}[1996/07/15 v1.1 Envelopes and Labels] +\def\envlab@oops{% + \PackageError{envlab}% + {Envlab is used outside of \MessageBreak% + a letter-compatible documentclass}% + {You are trying to use Envelopes & Labels\MessageBreak% + package, but your documentclass does not\MessageBreak% + understand address formatting commands.\MessageBreak% + Try standard document class letter\MessageBreak}} +\def\envlab@ok{% + \PackageInfo{envlab}% + {Envelopes & Labels package: found makelabels...\MessageBreak% + Seems everything is OK. Good luck.}} +\expandafter\ifx\csname makelabels\endcsname \relax % + \envlab@oops\else\envlab@ok\fi +\newif\if@envelope +\@envelopetrue +\newif\if@rotateenvelopes +\@rotateenvelopestrue +\newif\if@printreturnaddress +\@printreturnaddresstrue +\newcount\@envelopeposition \@envelopeposition=0\relax +\newif\if@pswait +\@pswaitfalse +\newif\if@barcodes +\newif\if@alwaysbarcodes +\@barcodestrue +\@alwaysbarcodesfalse +\newif\if@capitalizeaddress +\@capitalizeaddresstrue +\newlength{\EnvelopeWidth} +\newlength{\EnvelopeHeight} +\newlength{\EnvelopeTopMargin} +\newlength{\EnvelopeLeftMargin} +\setlength{\EnvelopeLeftMargin}{0pt} +\newlength{\LabelWidth} +\newlength{\LabelHeight} +\newlength{\LabelTopMargin} +\newlength{\LabelLeftMargin} +\newlength{\LabelRightMargin} +\newcounter{LabelMaxCol} +\newcounter{LabelMaxRow} +\newlength{\FromAddressTopMargin} +\newlength{\FromAddressLeftMargin} +\newlength{\FromAddressHeight} +\newlength{\FromAddressWidth} +\newlength{\ToAddressTopMargin} +\newlength{\ToAddressLeftMargin} +\newlength{\ToAddressWidth} +\DeclareRobustCommand{\SetEnvelope}[3][0pt]{% + \@envelopetrue% + \setlength{\EnvelopeTopMargin}{#1}% + \setlength{\EnvelopeWidth}{#2}% + \setlength{\EnvelopeHeight}{#3}% + \setlength{\FromAddressTopMargin}{0.5in}% + \setlength{\FromAddressLeftMargin}{0.5in}% + \setlength{\FromAddressHeight}{0.33\EnvelopeHeight}% + \setlength{\FromAddressWidth}{0.5\EnvelopeWidth}% + \setlength{\ToAddressTopMargin}{0.5in}% + \setlength{\ToAddressLeftMargin}{0.5in}% + \setlength{\ToAddressWidth}{3in}} +\DeclareRobustCommand{\SetLabel}[7]{% + \@envelopefalse% + \setlength{\LabelWidth}{#1}% + \setlength{\LabelHeight}{#2}% + \setlength{\LabelTopMargin}{#3}% + \setlength{\LabelLeftMargin}{#4}% + \setlength{\LabelRightMargin}{#5}% + \setcounter{LabelMaxCol}{#6}% + \setcounter{LabelMaxRow}{#7}% + \setlength{\ToAddressTopMargin}{0.1in}% + \setlength{\ToAddressLeftMargin}{0.2in}% + \setlength{\ToAddressWidth}{\LabelWidth}% + \addtolength{\ToAddressWidth}{-\ToAddressLeftMargin}% + \addtolength{\ToAddressWidth}{-\LabelRightMargin}} +\DeclareOption{businessenvelope}{\SetEnvelope{9.5in}{4.125in}} +\DeclareOption{executiveenvelope}{\SetEnvelope{7.5in}{3.875in}} +\DeclareOption{bookletenvelope}{\SetEnvelope{10.5in}{7.5in}} +\DeclareOption{personalenvelope}{\SetEnvelope{6.5in}{3.625in}} +\DeclareOption{c6envelope}{\SetEnvelope{162mm}{114mm}} +\DeclareOption{c65envelope}{\SetEnvelope{224mm}{114mm}} +\DeclareOption{c5envelope}{\SetEnvelope{229mm}{162mm}} +\DeclareOption{avery5160label}{% + \SetLabel{2.75in}{1in}{0.5in}{0.19in}{0.12in}{3}{10}} +\DeclareOption{avery5161label}{% + \SetLabel{4.19in}{1in}{0.5in}{0.16in}{0.19in}{2}{10}} +\DeclareOption{avery5162label}{% + \SetLabel{4.19in}{1.33in}{0.83in}{0.16in}{0.19in}{2}{7}} +\DeclareOption{avery5163label}{% + \SetLabel{4.19in}{2in}{0.5in}{0.16in}{0.19in}{2}{5}} +\DeclareOption{avery5164label}{% + \SetLabel{4.19in}{3.33in}{0.5in}{0.16in}{0.19in}{2}{3}} +\DeclareOption{rotateenvelopes}{\@rotateenvelopestrue} +\DeclareOption{norotateenvelopes}{\@rotateenvelopesfalse} +\DeclareOption{centerenvelopes}{\@envelopeposition=0\relax} +\DeclareOption{leftenvelopes}{\@envelopeposition=1\relax} +\DeclareOption{rightenvelopes}{\@envelopeposition=2\relax} +\DeclareOption{customenvelopes}{\@envelopeposition=3\relax} +\DeclareOption{printbarcodes}{\@barcodestrue} +\DeclareOption{noprintbarcodes}{\@barcodesfalse\@alwaysbarcodesfalse} +\DeclareOption{alwaysbarcodes}{\@alwaysbarcodestrue\@barcodestrue} +\DeclareOption{noalwaysbarcodes}{\@alwaysbarcodesfalse} +\DeclareOption{capaddress}{\@capitalizeaddresstrue} +\DeclareOption{nocapaddress}{\@capitalizeaddressfalse} +\DeclareOption{printreturnaddress}{\@printreturnaddresstrue} +\DeclareOption{noprintreturnaddress}{\@printreturnaddressfalse} +\DeclareOption{pswait}{\@pswaittrue} +\DeclareOption{nopswait}{\@pswaitfalse} +\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphics}} +\ExecuteOptions{businessenvelope,rotateenvelopes,centerenvelopes} +\ExecuteOptions{printbarcodes,capaddress} +\ExecuteOptions{nopswait,printreturnaddress} +\InputIfFileExists{envlab.cfg}{% + \typeout{Loading configuration file envlab.cfg}}{% + \typeout{Configuration file envlab.cfg is not found}} +%% +%% The default options go here +%% +%% +\ProcessOptions +\IfFileExists{graphics.sty}{% + \RequirePackage{graphics}}{% + \PackageWarning{envlab}{% + You don't have the graphics package!\MessageBreak + Probably you will not be able to print\MessageBreak + envelopes sidewise. \MessageBreak}} +\def\@beginlabelshook{\relax} +\def\@beginlabelpagehook{\relax} +\def\AtBeginLabels{\g@addto@macro\@beginlabelshook} +\def\AtBeginLabelPage{\g@addto@macro\@beginlabelpagehook} +\def\PSwait{\special{ps: clear grestore @manualfeed 0 0 bop}} +\if@pswait + \AtBeginLabels{\PSwait}% +\fi +\newcounter{LabelCountCol} +\newcounter{LabelCountRow} +\newcounter{LabelOffsetCol} +\newcounter{LabelOffsetRow} +\setcounter{LabelOffsetCol}{1} +\setcounter{LabelOffsetRow}{1} +\DeclareRobustCommand{\FirstLabel}[2]{% + \setcounter{LabelOffsetRow}{#1}% + \setcounter{LabelOffsetCol}{#2}} +\ifcase\the\@envelopeposition + \setlength{\EnvelopeLeftMargin}{\paperwidth} + \if@rotateenvelopes + \addtolength{\EnvelopeLeftMargin}{-\EnvelopeHeight} + \else + \addtolength{\EnvelopeLeftMargin}{-\EnvelopeWidth} + \fi + \setlength{\EnvelopeLeftMargin}{0.5\EnvelopeLeftMargin} +\or + \setlength{\EnvelopeLeftMargin}{0pt} +\or + \setlength{\EnvelopeLeftMargin}{\paperwidth} + \if@rotateenvelopes + \addtolength{\EnvelopeLeftMargin}{-\EnvelopeHeight} + \else + \addtolength{\EnvelopeLeftMargin}{-\EnvelopeWidth} + \fi +\else + \relax +\fi +\def\@toaddressfont{% + \ifcase\@ptsize \large\or\normalsize\or\small\fi% + \sffamily\selectfont} +\def\@fromaddressfont{% + \ifcase\@ptsize \normalsize\or\small\or\footnotesize\fi% + \normalfont} +\def\returnaddress{\if@envelope \fromaddress\else\relax\fi} +\def\startlabels{% + \pagestyle{empty} + \setlength{\topmargin}{-1.0in} + \if@envelope + \addtolength{\topmargin}{\EnvelopeTopMargin} + \else \addtolength{\topmargin}{\LabelTopMargin} + \fi + \setlength{\headheight}{0pt} + \setlength{\headsep}{0pt} + \setlength{\footskip}{0pt} + \setlength{\textheight}{200in} + \setlength\paperheight{\textheight} + \global\vsize=200in\relax + \addtolength{\textheight}{-\topmargin} + \addtolength{\textheight}{-1.0in} + \setlength{\oddsidemargin}{-1.0in} + \setlength{\evensidemargin}{\oddsidemargin} + \setlength{\textwidth}{20in} + \hsize=20in + \baselineskip=0pt + \lineskip=0pt + \parindent=0pt + \if@envelope \relax \else + \setcounter{LabelCountCol}{\theLabelOffsetCol} + \setcounter{LabelCountRow}{\theLabelOffsetRow} + \ifnum\theLabelOffsetRow>1 + \null + \loop \vspace*{\LabelHeight} + \addtocounter{LabelOffsetRow}{-1} \ifnum\theLabelOffsetRow>1 + \repeat + \fi + \ifnum\theLabelOffsetCol>1 + \loop \hspace*{\LabelWidth}\nolinebreak + \addtocounter{LabelOffsetCol}{-1} \ifnum\theLabelOffsetCol>1 + \repeat + \fi + \nopagebreak + \fi + \spaceskip 0pt\relax + \xspaceskip 0pt\relax + \clubpenalty=0 + \widowpenalty=0 + \raggedbottom + \sloppy + \setlength\hfuzz{5in} + \setlength\vfuzz{5in} + \ignorespaces + \@beginlabelshook + \@beginlabelpagehook + \nopagebreak} +\newcommand{\PrintReturnAddress}[1]{% + \vspace*{\FromAddressTopMargin} + \null\hspace{\FromAddressLeftMargin} + \parbox[t][\FromAddressHeight]{\FromAddressWidth}% + {\@fromaddressfont \lineskip=1pt + \if@printreturnaddress #1\else\relax\fi}} +\newcommand{\PrintAddress}[1]{% + \vspace*{\ToAddressTopMargin} + \leavevmode + \null\hspace*{\ToAddressLeftMargin} + \parbox[t]{\ToAddressWidth}{% + \lineskip=1pt + \if@barcodes \PrintBarCode{#1} \fi + \@toaddressfont + \if@capitalizeaddress \@make@capitalize{#1} \else #1 \fi}} +\newcommand{\PrintLabel}[1]{% + \parbox[t][\LabelHeight]{\LabelWidth}{% + \PrintAddress{#1}}} +\newcommand{\PrintEnvelope}[2]{% + \begin{minipage}[t][\EnvelopeHeight]{\EnvelopeWidth} + \baselineskip=0pt + \lineskip=0pt + \parindent=0pt + \PrintReturnAddress{#1}\\ + \begin{center} + \PrintAddress{#2} + \end{center} + \end{minipage}} +\newcommand{\@PrintEnvelope}[2]{% + \if@rotateenvelopes\rotatebox{90}{\PrintEnvelope{#1}{#2}} + \else\PrintEnvelope{#1}{#2} + \fi} +\renewcommand{\mlabel}[2]{\ignorespaces% + \spaceskip 0pt\relax% + \xspaceskip 0pt\relax% + \if@envelope% + \leavevmode% + \hspace*{\EnvelopeLeftMargin}% + \@PrintEnvelope{#1}{#2}% + \clearpage% + \@beginlabelpagehook% + \else% + \ignorespaces% + \ifnum\theLabelCountCol>\theLabelMaxCol% + \\\nopagebreak% + \stepcounter{LabelCountRow}% + \setcounter{LabelCountCol}{1}% + \fi% + \ifnum\theLabelCountRow>\theLabelMaxRow% + \vfill\eject\@beginlabelpagehook% + \setcounter{LabelCountRow}{1}% + \setcounter{LabelCountCol}{1}% + \fi% + \PrintLabel{#2}\ignorespaces\nolinebreak% + \stepcounter{LabelCountCol}% + \fi} +\newcount\@numreturnlabels +\newcommand{\printreturnlabels}[2]{% + \@numreturnlabels=#1 + \def\@toaddressfont{\@fromaddressfont} + \@capitalizeaddressfalse + \@barcodesfalse + \startlabels + \loop \mlabel{\relax}{#2} \advance\@numreturnlabels by -1 + \ifnum\@numreturnlabels>0\repeat} +\newcommand{\PrintBarCode}[1]{% + \@extractbarcode{#1} + \@printbarcode} +\newtoks\@zipcode +\newcount\@zipcodesum +\newif\if@zipcodefound +\long\def\@finishzipcode#1{} +\long\def\@firstzipcode#1{% + \global\@zipcode{#1} + \global\@zipcodesum=#1\relax + \global\@zipcodefoundtrue + \@zipcodeloop} +\long\def\@continuezipcode#1{% + \global\@zipcode=\expandafter{\the\@zipcode#1} + \global\advance\@zipcodesum by #1 + \@zipcodeloop} +\long\def\@dashzipcode#1{\@zipcodeloop} +\def\@spacezipcode{% + \global\@zipcodefoundfalse + \afterassignment\@zipcodeloop\let\@temp= } +\long\def\@abortzipcode#1{% + \global\@zipcodefoundfalse + \@zipcodeloop} +\def\@zipcodeloop{\futurelet\@temp\@zipcodeloop@} +\def\@zipcodeloop@{% + \ifx \@endaddress\@temp \def\@tempa{\@finishzipcode} \else + \ifx 0\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 1\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 2\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 3\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 4\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 5\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 6\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 7\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 8\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx 9\@temp \if@zipcodefound \def\@tempa{\@continuezipcode} + \else \def\@tempa{\@firstzipcode} \fi \else + \ifx -\@temp \if@zipcodefound \def\@tempa{\@dashzipcode} + \else \def\@tempa{\@abortzipcode} \fi \else + \ifx \@sptoken\@temp \def\@tempa{\@spacezipcode} \else + \def\@tempa{\@abortzipcode} + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \@tempa} +\long\def\@extractbarcode#1{% + \@zipcodefoundfalse + \@zipcodeloop#1\@endaddress + \if@alwaysbarcodes \@zipcodefoundtrue \fi + \if@zipcodefound + \ifnum\the\@zipcodesum>0 + \loop \global\advance \@zipcodesum by -10 \ifnum\the\@zipcodesum>0 + \repeat + \fi + \global\multiply\@zipcodesum by -1 + \fi} +\newlength{\@barcodewidth} +\newlength{\@barcodeLheight} +\newlength{\@barcodeSheight} +\newlength{\@barcodeskip} +\setlength{\@barcodewidth}{0.020in} +\setlength{\@barcodeLheight}{0.125in} +\setlength{\@barcodeSheight}{0.050in} +\setlength{\@barcodeskip}{0.026in} +\DeclareRobustCommand{\@barL}{% + \rule{\@barcodewidth}{\@barcodeLheight}\hspace{\@barcodeskip}} +\DeclareRobustCommand{\@barS}{% + \rule{\@barcodewidth}{\@barcodeSheight}\hspace{\@barcodeskip}} +\def\@printonezip#1{% + \ifx1#1\@barS\@barS\@barS\@barL\@barL\else + \ifx2#1\@barS\@barS\@barL\@barS\@barL\else + \ifx3#1\@barS\@barS\@barL\@barL\@barS\else + \ifx4#1\@barS\@barL\@barS\@barS\@barL\else + \ifx5#1\@barS\@barL\@barS\@barL\@barS\else + \ifx6#1\@barS\@barL\@barL\@barS\@barS\else + \ifx7#1\@barL\@barS\@barS\@barS\@barL\else + \ifx8#1\@barL\@barS\@barS\@barL\@barS\else + \ifx9#1\@barL\@barS\@barL\@barS\@barS\else + \ifx0#1\@barL\@barL\@barS\@barS\@barS\else + \ifx S#1\def\@tempa{\relax}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% + \@tempa} +\def\@printbarcode{% + \if@zipcodefound + \mbox{% + \@barL% + \def\@tempa{\@printonezip}% + \expandafter\@tempa\the\@zipcode S% + \def\@tempa{\@printonezip}% + \expandafter\@tempa\the\@zipcodesum S% + \@barL} + \\[1ex] + \fi} +\newtoks\@addr@cap +\long\def\@finishaddrcap#1{} +\long\def\@dotcommaaddrcap#1{% + \@addrcaploop} +\long\def\@newlineaddrcap#1{% + \global\@addr@cap=\expandafter{\the\@addr@cap #1} + \@addrcaploop} +\long\def\@bgroupaddrcap#1{% + \global\@addr@cap=\expandafter{\the\@addr@cap {\MakeUppercase{#1}}} + \@addrcaploop} +\def\@spaceaddrcap{% + \global\@addr@cap=\expandafter{\the\@addr@cap\hspace{0.6em}} + \afterassignment\@addrcaploop\let\@temp= } +\def\@otheraddrcap#1{% + \global\@addr@cap=\expandafter{\the\@addr@cap% + \MakeUppercase{#1}\kern1pt\relax} + \@addrcaploop} +\def\@addrcaploop{\futurelet\@temp\@addrcaploop@} +\def\@addrcaploop@{% + \ifx \@endaddress\@temp \def\@tempa{\@finishaddrcap} \else + \ifx .\@temp \def\@tempa{\@dotcommaaddrcap} \else + \ifx ,\@temp \def\@tempa{\@dotcommaaddrcap} \else + \ifx \voidb@x\@temp \def\@tempa{\@dotcommaaddrcap} \else + \ifx \unhbox\@temp \def\@tempa{\@dotcommaaddrcap} \else + \ifx \\\@temp \def\@tempa{\@newlineaddrcap} \else + \ifx \bgroup\@temp \def\@tempa{\@bgroupaddrcap} \else + \ifx \@sptoken\@temp \def\@tempa{\@spaceaddrcap} \else + \def\@tempa{\@otheraddrcap} + \fi\fi\fi\fi\fi\fi\fi\fi + \@tempa} +\long\def\@make@capitalize#1{% + \global\@addr@cap={\relax} + \@addrcaploop#1\@endaddress + \the\@addr@cap} +\endinput +%% +%% End of file `envlab.sty'. -- cgit v1.2.3