diff options
author | Karl Berry <karl@freefriends.org> | 2008-06-05 00:43:53 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-06-05 00:43:53 +0000 |
commit | 52b0e32085cb75500c155e9a18ac2d372e4cc46a (patch) | |
tree | 17430b7dd368150fecf2dbbe0659688226f6eccc /Master/texmf-dist/source | |
parent | 18aa1774461bbd60f83e7e6b571ff1172fdd30b3 (diff) |
envlab update (2jun08)
git-svn-id: svn://tug.org/texlive/trunk@8573 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/latex/envlab/envlab.drv | 32 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/envlab/envlab.dtx | 1177 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/envlab/envlab.ins | 12 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/envlab/readme.v11 | 73 |
4 files changed, 805 insertions, 489 deletions
diff --git a/Master/texmf-dist/source/latex/envlab/envlab.drv b/Master/texmf-dist/source/latex/envlab/envlab.drv index 959b8c13581..52f0add6915 100644 --- a/Master/texmf-dist/source/latex/envlab/envlab.drv +++ b/Master/texmf-dist/source/latex/envlab/envlab.drv @@ -1,22 +1,30 @@ -%% +%% %% This is file `envlab.drv', %% generated with the docstrip utility. -%% +%% %% The original source files were: -%% +%% %% envlab.dtx (with options: `driver') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% -%% You are *not* allowed to modify this file. +%% Any modified versions of this file must be renamed +%% with new filenames distinct from envlab.drv. %% -%% 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. +%% For distribution of the original source see the terms +%% for copying and modification in the file envlab.dtx. %% -%% Copyright Boris Veytsman 1996 +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +\ProvidesFile{envlab.drv} +[1997/07/16 v1.2 Envelopes and Labels] +%% +%% Copyright Boris Veytsman 1996, 1997 +%% %% %% \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 @@ -83,6 +91,7 @@ \DoNotIndex{\rule,\selectfont,\sffamily,\sloppy,\small,\spaceskip} \DoNotIndex{\stepcounter,\textheight,\textwidth,\the,\topmargin} \DoNotIndex{\unhbox,\voidb@x,\vsize,\vfuzz,\widowpenalty,\xspaceskip} +\DoNotIndex{\AtBeginDocument,\AtEndDocument} \usepackage{enumerate} \CodelineIndex \RecordChanges @@ -90,10 +99,7 @@ \begin{document} \DocInput{envlab.dtx} \end{document} -%% -%% The default options go here -%% -%% +%% \changes{v1.2}{1996/07/16}{Updated User Guide} \endinput -%% +%% %% End of file `envlab.drv'. diff --git a/Master/texmf-dist/source/latex/envlab/envlab.dtx b/Master/texmf-dist/source/latex/envlab/envlab.dtx index 4e7855f1a97..6e479b4da57 100644 --- a/Master/texmf-dist/source/latex/envlab/envlab.dtx +++ b/Master/texmf-dist/source/latex/envlab/envlab.dtx @@ -1,9 +1,21 @@ -% \ProvidesFile{envlab.dtx}[1996/07/15 v1.1 Envelopes and Labels] % \iffalse -%% Copyright Boris Veytsman 1996 +%<*driver> +\ProvidesFile{envlab.drv} +%</driver> +%<*driver|package|cfg> +%<+package>\ProvidesPackage{envlab} +%<+cfg>\ProvidesFile{envlab.cfg} +[1997/07/16 v1.2 Envelopes and Labels] +%</driver|package|cfg> +%<*driver|package> +%% +%% Copyright Boris Veytsman 1996, 1997 +%% +%</driver|package> +%<*driver|package|cfg> % \fi %% -% \CheckSum{1057} +% \CheckSum{1378} %% \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 @@ -20,12 +32,12 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} % \iffalse -% -% \section{Documentation driver} +%</driver|package|cfg> % +% \section{Documentation driver} +%<*driver> % Nothing interesting here\dots % \begin{macrocode} -%<*driver> \documentclass{ltxdoc} \DoNotIndex{\@Alph,\@alph,\@arabic,\@badmath} \DoNotIndex{\@centercr} @@ -77,6 +89,7 @@ \DoNotIndex{\rule,\selectfont,\sffamily,\sloppy,\small,\spaceskip} \DoNotIndex{\stepcounter,\textheight,\textwidth,\the,\topmargin} \DoNotIndex{\unhbox,\voidb@x,\vsize,\vfuzz,\widowpenalty,\xspaceskip} +\DoNotIndex{\AtBeginDocument,\AtEndDocument} \usepackage{enumerate} \CodelineIndex \RecordChanges @@ -84,27 +97,28 @@ \begin{document} \DocInput{envlab.dtx} \end{document} -%</driver> % \end{macrocode} -% +%</driver> % \fi % -% \changes{v0.9}{5/31/1996}{Beta version} -% \changes{v0.91}{5/31/1996}{Added new option---"alwaysbarcodes"} -% \changes{v1.0}{6/9/1996}{First released version} -% \changes{v1.1}{07/08/1996}{Fixed typos in "elold.ins"} -% \changes{v1.1}{07/08/1996}{Updated User Guide} +% \changes{v0.9}{1996/05/31}{Beta version} +% \changes{v0.91}{1996/05/31}{Added new option---"alwaysbarcodes"} +% \changes{v1.0}{1996/06/09}{First released version} +% \changes{v1.1}{1996/07/08}{Fixed typos in "elold.ins"} +% \changes{v1.1}{1996/07/08}{Updated User Guide} +% \changes{v1.2}{1996/07/10}{Changed envlab.ins: made it parallel.} +%% \changes{v1.2}{1996/07/16}{Updated User Guide} % % \newcommand{\EL}{\textsl{EnvLab}} % % -% \GetFileInfo{envlab.dtx} +% \GetFileInfo{envlab.drv} % % \title{Printing Envelopes and Labels in \LaTeXe: \EL\ Package % \thanks{This file % has version number \fileversion, last % revised \filedate.} -% \thanks{\copyright Boris Veytsman, 1996} +% \thanks{\copyright Boris Veytsman, 1996, 1997} % } % \author{Boris Veytsman} % \date{\filedate} @@ -131,17 +145,15 @@ % \begin{macrocode} %<*package> \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{envlab}[1996/07/15 v1.1 Envelopes and Labels] -%</package> % \end{macrocode} % % \begin{macro}{\envlab@ok} % \begin{macro}{\envlab@oops} +% \changes{v1.2}{1997/07/10}{Used \cs{@ifundefined} instead of direct check} % Now let us check whether we in the letter documentclass. Actually we % will accept any class that has "\makelabels" defined (custom letter % classes, etc.) % \begin{macrocode} -%<*package> \def\envlab@oops{% \PackageError{envlab}% {Envlab is used outside of \MessageBreak% @@ -154,30 +166,43 @@ \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 -%</package> +\@ifundefined{makelabels}{\envlab@oops}{\envlab@ok} % \end{macrocode} -% \end{macro}\end{macro} +% \end{macro} +% \end{macro} % \section{Preliminary code} % % \subsection{Switches, etc.} % % % \DescribeMacro{\if@envelope} -% First, we must say whether we want to print out envelopes (default) or labels. -% The differences are: -% \begin{itemize} -% \item Envelopes are printed on separate pages, labels are printed -% several per page -% \item Envelopes might have return address, labels might not -% \item Envelopes are rotated by default, labels are never rotated -% \end{itemize} -% \begin{macrocode} -%<*package> -\newif\if@envelope -\@envelopetrue -%</package> +% \DescribeMacro{\if@biglabel} +% \changes{v1.2}{1997/07/13}{Added Big Labels---thanks to Genick +% Bar-Meir, "meyerson@msi.umn.edu"} +% There are three kinds of things we can print: envelopes (default) +% labels and big labels The differences are summarized in +% Table~\ref{tab:diffs}. +% \begin{table} +% \begin{center} +% \begin{tabular}{cccc} +% \hline +% Media & Number per page & Rotation & Return address \\ +% \hline +% Envelopes & One & Settable & Yes\\ +% Labels & Several & Not rotated & No\\ +% Big Labels & Several & Not rotated & Yes\\ +% \hline +% \end{tabular} +% \end{center} +% \caption{Differences between envelopes, labels and big labels} +% \label{tab:diffs} +% \end{table} +% +% \begin{macrocode} +\newif\if@envelope +\@envelopetrue +\newif\if@biglabel +\@biglabelfalse % \end{macrocode} % % \DescribeMacro{\if@rotateenvelopes} @@ -185,12 +210,10 @@ % Now we must determine whether we want to rotate envelopes and % whether to include return address (both yes by default). % \begin{macrocode} -%<*package> \newif\if@rotateenvelopes \@rotateenvelopestrue \newif\if@printreturnaddress \@printreturnaddresstrue -%</package> % \end{macrocode} % % \DescribeMacro{\@envelopeposition} @@ -203,48 +226,64 @@ % "\EnvelopeLeftMargin" manually. % % \begin{macrocode} -%<*package> -\newcount\@envelopeposition \@envelopeposition=0\relax -%</package> +\newcount\@envelopeposition +\@envelopeposition=0\relax % \end{macrocode} % -% \changes{v1.1}{7/8/96}{Added \cs{if@pswait}} -% \DescribeMacro{\if@pswait} -% The switch "\if@pswait" controls optional manual feeding of envelopes -% and labels in \textsl{Postscript} printers (see Section~\ref{sec:Print} -% for details). +% \begin{macro}{\if@pswait} +% \changes{v1.1}{1996/07/08}{Added \cs{if@pswait}} +% \begin{macro}{\if@psautotray} +% \changes{v1.1}{1997/07/13}{Added \cs{if@psautotray}} +% \begin{macro}{\PSEnvelopeTray} +% \changes{v1.1}{1997/07/13}{Added \cs{PSEnvelopeTray}} +% The switches "\if@pswait" and "\if@psautotray" control optional manual +% feeding of envelopes and labels in \textsl{Postscript} printers +% (see Section~\ref{sec:Print} for details). The register +% "\PSEnvelopeTray" contains the name of the required tray. % \begin{macrocode} -%<*package> \newif\if@pswait \@pswaitfalse -%</package> +\newif\if@psautotray +\@psautotrayfalse +\newtoks\PSEnvelopeTray +\PSEnvelopeTray={/otherenvelopetray } % \end{macrocode} % -% \DescribeMacro{\if@barcodes} -% \DescribeMacro{\if@alwaysbarcodes} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\if@barcodes} +% \begin{macro}{\if@alwaysbarcodes} % We can either print bar codes (default) or not. The second switch % forces to print barcodes even if they are not last in the address % (like "Pa 16801\\USA") % \begin{macrocode} -%<*package> \newif\if@barcodes \newif\if@alwaysbarcodes \@barcodestrue \@alwaysbarcodesfalse -%</package> % \end{macrocode} +% \end{macro} +% \end{macro} % -% +% \begin{macro}{\if@EL@redefine@opening} +% \changes{v1.2}{1997/07/14}{Wrote new command} +% Now let us decide whether to mess with the "\opening" command. +% \begin{macrocode} +\newif\if@EL@redefine@opening +\@EL@redefine@openingfalse +% \end{macrocode} +% \end{macro} % -% -% \DescribeMacro{\if@capitalizeaddress} +% +% \begin{macro}{\if@capitalizeaddress} % Also, we can either capitalize the address (default) or not. % \begin{macrocode} -%<*package> \newif\if@capitalizeaddress \@capitalizeaddresstrue -%</package> % \end{macrocode} +% \end{macro} % % \subsection{Lengths and numbers} % @@ -263,13 +302,11 @@ % on the value of the "\@envelopeposition" variable. We will preset it to % zero % \begin{macrocode} -%<*package> \newlength{\EnvelopeWidth} \newlength{\EnvelopeHeight} \newlength{\EnvelopeTopMargin} \newlength{\EnvelopeLeftMargin} \setlength{\EnvelopeLeftMargin}{0pt} -%</package> % \end{macrocode} % % @@ -283,24 +320,20 @@ % distances from the paper edges to the beginning of the labels. The % last one describes the distance between the labels. % \begin{macrocode} -%<*package> \newlength{\LabelWidth} \newlength{\LabelHeight} \newlength{\LabelTopMargin} \newlength{\LabelLeftMargin} \newlength{\LabelRightMargin} -%</package> % \end{macrocode} % -% \DescribeMacro{LabelMaxCol} -% \DescribeMacro{LabelMaxRow} +% \DescribeMacro{\c@LabelMaxCol} +% \DescribeMacro{\c@LabelMaxRow} % The following numbers define, how many labels are in each row and how % many rows are on each page % \begin{macrocode} -%<*package> \newcounter{LabelMaxCol} \newcounter{LabelMaxRow} -%</package> % \end{macrocode} % % The lengths above are \emph{external} parameters that determine an @@ -318,7 +351,6 @@ % \DescribeMacro{\ToAddressWidth} % The following lengths are self-evident. % \begin{macrocode} -%<*package> \newlength{\FromAddressTopMargin} \newlength{\FromAddressLeftMargin} \newlength{\FromAddressHeight} @@ -326,20 +358,20 @@ \newlength{\ToAddressTopMargin} \newlength{\ToAddressLeftMargin} \newlength{\ToAddressWidth} -%</package> % \end{macrocode} % % \subsection{Main setting commands} % % OK, we are ready to set up envelopes and labels. % -% \DescribeMacro{\SetEnvelope} +% \begin{macro}{\SetEnvelope} +% \changes{v1.2}{1997/07/14}{Added \cs{@biglabelfalse}} % The command "\SetEnvelope" has three parameters: optional top Margin, % width and height of the envelope. % \begin{macrocode} -%<*package> \DeclareRobustCommand{\SetEnvelope}[3][0pt]{% \@envelopetrue% + \@biglabelfalse% \setlength{\EnvelopeTopMargin}{#1}% \setlength{\EnvelopeWidth}{#2}% \setlength{\EnvelopeHeight}{#3}% @@ -350,16 +382,17 @@ \setlength{\ToAddressTopMargin}{0.5in}% \setlength{\ToAddressLeftMargin}{0.5in}% \setlength{\ToAddressWidth}{3in}} -%</package> % \end{macrocode} +% \end{macro} % -% \DescribeMacro{\SetLabel} +% \begin{macro}{\SetLabel} +% \changes{v1.2}{1997/07/14}{Added \cs{@biglabelfalse}} % The command "\SetLabel" has seven parameters: five lengths and two % numbers. All are mandatory: % \begin{macrocode} -%<*package> \DeclareRobustCommand{\SetLabel}[7]{% \@envelopefalse% + \@biglabelfalse% \setlength{\LabelWidth}{#1}% \setlength{\LabelHeight}{#2}% \setlength{\LabelTopMargin}{#3}% @@ -372,29 +405,68 @@ \setlength{\ToAddressWidth}{\LabelWidth}% \addtolength{\ToAddressWidth}{-\ToAddressLeftMargin}% \addtolength{\ToAddressWidth}{-\LabelRightMargin}} -%</package> % \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SetBigLabel} +% \changes{v1.2}{1997/07/14}{Wrote new command} +% The command "\SetBigLabel" has seven parameters: five lengths and two +% numbers. All are mandatory: +% \begin{macrocode} +\DeclareRobustCommand{\SetBigLabel}[7]{% + \@envelopefalse% + \@biglabeltrue% + \setlength{\LabelWidth}{#1}% + \setlength{\LabelHeight}{#2}% + \setlength{\LabelTopMargin}{#3}% + \setlength{\LabelLeftMargin}{#4}% + \setlength{\LabelRightMargin}{#5}% + \setcounter{LabelMaxCol}{#6}% + \setcounter{LabelMaxRow}{#7}% + \setlength{\FromAddressTopMargin}{0.0in}% + \setlength{\FromAddressLeftMargin}{0.5in}% + \setlength{\FromAddressHeight}{0.33\LabelHeight}% + \setlength{\ToAddressTopMargin}{0.1in}% + \setlength{\ToAddressLeftMargin}{0.5in}% + \setlength{\ToAddressWidth}{\LabelWidth}% + \addtolength{\ToAddressWidth}{-\ToAddressLeftMargin}% + \addtolength{\ToAddressWidth}{-\LabelRightMargin}% + \setlength{\FromAddressWidth}{\ToAddressWidth}} +% \end{macrocode} +% \end{macro} % % \section{Defining options} % % \subsection{Envelope Sizes} -% -% \begin{macrocode} -%<*package> -\DeclareOption{businessenvelope}{\SetEnvelope{9.5in}{4.125in}} -\DeclareOption{executiveenvelope}{\SetEnvelope{7.5in}{3.875in}} +% \changes{v1.2}{1996/07/22}{Added new option: dlenvelope (thanks to +% "J.P.Jansen@net.HCC.nl")} +% \changes{v1.2}{1997/07/13}{Added \cs{PSEnvelopeTray} to envelope +% options} +% \begin{macrocode} +\DeclareOption{businessenvelope}{\SetEnvelope{9.5in}{4.125in}% + \PSEnvelopeTray={/com10envelopetray }} +\DeclareOption{executiveenvelope}{\SetEnvelope{7.5in}{3.875in}% + \PSEnvelopeTray={/monarcenvelopetray }} \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}} -%</package> +\DeclareOption{c5envelope}{\SetEnvelope{229mm}{162mm}% + \PSEnvelopeTray={/162x229cenvelopetray }} +\DeclareOption{dlenvelope}{\SetEnvelope{220mm}{110mm}% + \PSEnvelopeTray={/dlenvelopetray }} % \end{macrocode} % % \subsection{Labels sizes} % +% \changes{v1.2}{1996/07/22}{Added new option: herma4625label (thanks to +% "J.P.Jansen@net.HCC.nl")} +% \changes{v1.2}{1996/09/06}{Added new option: avery5262label (thanks to +% Uri Blumenthal "uri@ibm.net")} +% \changes{v1.2}{1997/07/13}{Added new option: avery5164biglabel} +% \changes{v1.2}{1997/07/13}{Added new option: avery5163biglabel} +% % \begin{macrocode} -%<*package> \DeclareOption{avery5160label}{% \SetLabel{2.75in}{1in}{0.5in}{0.19in}{0.12in}{3}{10}} \DeclareOption{avery5161label}{% @@ -405,19 +477,29 @@ \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}} -%</package> +\DeclareOption{herma4625label}{% + \SetLabel{105mm}{42.3mm}{0mm}{5mm}{5mm}{2}{7}} +\DeclareOption{avery5262label}{% + \SetLabel{110mm}{34mm}{21mm}{4mm}{5mm}{2}{7}} +\DeclareOption{avery5163biglabel}{% + \SetBigLabel{4.19in}{2in}{0.5in}{0.16in}{0.19in}{2}{5}% + \setlength{\ToAddressTopMargin}{0.1in}}% +\DeclareOption{avery5164biglabel}{% + \SetBigLabel{4.19in}{3.33in}{0.5in}{0.16in}{0.19in}{2}{3}}% % \end{macrocode} % % \subsection{Optional switches} % -% \changes{v1.1}{7/8/96}{Added new options: "printreturnaddress", +% \changes{v1.1}{1996/07/08}{Added new options: "printreturnaddress", % "noprintreturnaddress"} -% \changes{v1.1}{7/8/96}{Added new options: "pswait", +% \changes{v1.1}{1996/07/08}{Added new options: "pswait", % "nopswait"} +% \changes{v1.2}{1997/07/13}{Added new options: "psautotray", +% "nopsautotray"} +% \changes{v1.2}{1997/07/14}{Added new options: "re", "nore"} % All this should be evident\dots % % \begin{macrocode} -%<*package> \DeclareOption{rotateenvelopes}{\@rotateenvelopestrue} \DeclareOption{norotateenvelopes}{\@rotateenvelopesfalse} \DeclareOption{centerenvelopes}{\@envelopeposition=0\relax} @@ -432,9 +514,12 @@ \DeclareOption{nocapaddress}{\@capitalizeaddressfalse} \DeclareOption{printreturnaddress}{\@printreturnaddresstrue} \DeclareOption{noprintreturnaddress}{\@printreturnaddressfalse} -\DeclareOption{pswait}{\@pswaittrue} +\DeclareOption{pswait}{\@pswaittrue\@psautotrayfalse} \DeclareOption{nopswait}{\@pswaitfalse} -%</package> +\DeclareOption{psautotray}{\@psautotraytrue\@pswaitfalse} +\DeclareOption{nopsautotray}{\@psautotrayfalse} +\DeclareOption{re}{\@EL@redefine@openingtrue} +\DeclareOption{nore}{\@EL@redefine@openingfalse} % \end{macrocode} % % \subsection{Unknown options} @@ -442,23 +527,19 @@ % All options we did not declare above are probably the options for the % "graphics" package; let us send them there. % \begin{macrocode} -%<*package> \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphics}} -%</package> % \end{macrocode} % % \subsection{Default options}\label{sec:DefOpt} % -% \changes{v1.1}{07/08/1996}{Fixed typo in "businessenvelope" option} -% \changes{v1.1}{07/09/1986}{Added default options: "nopswait", +% \changes{v1.1}{1996/07/08}{Fixed typo in "businessenvelope" option} +% \changes{v1.1}{1996/07/09}{Added default options: "nopswait", % "printreturnaddress"} % % \begin{macrocode} -%<*package> \ExecuteOptions{businessenvelope,rotateenvelopes,centerenvelopes} \ExecuteOptions{printbarcodes,capaddress} -\ExecuteOptions{nopswait,printreturnaddress} -%</package> +\ExecuteOptions{nopswait,printreturnaddress,nopsautotray,nore} % \end{macrocode} % % \section{Configuration file} @@ -469,11 +550,9 @@ % turn be superseded by the options explicitly defined when the package % is loaded. % \begin{macrocode} -%<*package> \InputIfFileExists{envlab.cfg}{% \typeout{Loading configuration file envlab.cfg}}{% \typeout{Configuration file envlab.cfg is not found}} -%</package> % \end{macrocode} % % Now let us discuss the structure of the configuration file. We want it @@ -487,23 +566,24 @@ % essentially repeat Section~\ref{sec:DefOpt}, but we want to be % foolproof\dots % \begin{macrocode} +%</package> %<*cfg> %% %% The default options go here %% \ExecuteOptions{businessenvelope,rotateenvelopes,centerenvelopes} \ExecuteOptions{printbarcodes,capaddress} -\ExecuteOptions{nopswait,printreturnaddress} +\ExecuteOptions{nopswait,printreturnaddress,nopsautotray,nore} %% \AtEndOfPackage{\relax % Customization goes here } %</cfg> +%<*package> % \end{macrocode} % % \section{Processing options and loading packages} -% \changes{v0.92}{06/06/1996}{Added \cs{IfFileExists} when loading packages} +% \changes{v0.92}{1996/06/06}{Added \cs{IfFileExists} when loading packages} % \begin{macrocode} -%<*package> \ProcessOptions \IfFileExists{graphics.sty}{% \RequirePackage{graphics}}{% @@ -511,7 +591,6 @@ You don't have the graphics package!\MessageBreak Probably you will not be able to print\MessageBreak envelopes sidewise. \MessageBreak}} -%</package> % \end{macrocode} % % \section{Document layout} @@ -520,34 +599,30 @@ % \label{sec:Print} % % \DescribeMacro{\@beginlabelshook} -% \changes{v1.1}{07/09/1996}{Replaced \cs{@printpreamble} with +% \changes{v1.1}{1996/07/09}{Replaced \cs{@printpreamble} with % \cs{@beginlabelshook}} % The command "\@beginlabelshook" is called at the beginning of the % printing of envelopes and labels. We define it to be a no-op, but it % is possible to introduce some printer-specific commands (like paper % change). % \begin{macrocode} -%<*package> \def\@beginlabelshook{\relax} -%</package> % \end{macrocode} % % \DescribeMacro{\@beginlabelpagehook} -% \changes{v1.1}{07/09/1996}{Introduced new command +% \changes{v1.1}{1996/07/09}{Introduced new command % \cs{@beginlabelpagehook}} % The command "\@beginlabelpagehook" is like "\@beginlabelshook", but is % called at the beginning of each \emph{page} % of envelopes and labels. % \begin{macrocode} -%<*package> \def\@beginlabelpagehook{\relax} -%</package> % \end{macrocode} % % \begin{macro}{\AtBeginLabels} -% \changes{v1.1}{07/08/1996}{Made \cs{AtBeginLabels} cumulative} +% \changes{v1.1}{1996/07/08}{Made \cs{AtBeginLabels} cumulative} % \begin{macro}{\AtBeginLabelPage} -% \changes{v1.1}{07/09/1996}{Introduced \cs{AtBeginLabelPage}} +% \changes{v1.1}{1996/07/09}{Introduced \cs{AtBeginLabelPage}} % The hooks "\AtBeginLabels" and "\AtBeginLabelPage" redefine % "\@beginlabelshook" and "\@beginlabelpagehook". They are built like % the standard \LaTeXe\ hooks @@ -562,51 +637,65 @@ % \end{verbatim} % We quote this definition in case \emph{They} change Their minds\dots\ % \begin{macrocode} -%<*package> \def\AtBeginLabels{\g@addto@macro\@beginlabelshook} \def\AtBeginLabelPage{\g@addto@macro\@beginlabelpagehook} -%</package> % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\PSwait} -% \changes{v1.1}{07/09/1996}{Put William Slough's code in a separate macro} +% \changes{v1.1}{1996/07/09}{Put William Slough's code in a separate macro} % \textsl{PostScript} printers can be switched to the manual feeding mode % with the following code by \emph{William Slough} "<cfwas@eiu.edu>". % \begin{macrocode} -%<*package> \def\PSwait{\special{ps: clear grestore @manualfeed 0 0 bop}} -%</package> % \end{macrocode} % The author explains his code in the following way: % \begin{quotation} -% Here is a possible explanation: -% -% The clear removes operands from the PostScript stack, which has the -% effect of reversing some actions from the *previous* bop. Unfortunately, -% it reverses other important actions too (such as font size), but the -% grestore seems to get these back. Then the desired @manualfeed, followed -% by the ``bop'' for the beginning of page. The pair of 0's are used for -% bop and are completely bogus. However, from what I could detect, 0's are -% as good as anything. The values that DVIPS provides for bop seem to be -% related to DVI page numbers. -% -% I make no guarantee about the reliability of this solution, but initial -% tests indicate it will work for my environment. +% Here is a possible explanation: +% +% The clear removes operands from the PostScript stack, which has the +% effect of reversing some actions from the *previous* bop. Unfortunately, +% it reverses other important actions too (such as font size), but the +% grestore seems to get these back. Then the desired @manualfeed, followed +% by the ``bop'' for the beginning of page. The pair of 0's are used for +% bop and are completely bogus. However, from what I could detect, 0's are +% as good as anything. The values that DVIPS provides for bop seem to be +% related to DVI page numbers. +% +% I make no guarantee about the reliability of this solution, but initial +% tests indicate it will work for my environment. % \end{quotation} % \end{macro} % -% \changes{v1.1}{07/08/1996}{Added implementation of the "pswait" option} -% \changes{v1.1}{07/09/1996}{Moved \cs{PSwait} code to \cs{AtBeginLabelPage}} -% \changes{v1.1}{07/15/1996}{Moved \cs{PSwait} code to \cs{AtBeginLabels}} -% The option "pswait" puts the "\PSwait" code in the beginning of each page. +% \begin{macro}{\PSautotray} +% \changes{v1.2}{1997/07/13}{Wrote new command} +% This implements the code by \emph{Uri Blumenthal} +% "<uri@.ibm.net>". +% \begin{macrocode} +\edef\PSautotray{% + \special{ps:clear grestore + statusdict begin false setduplexmode + /manualfeed true def + \the\PSEnvelopeTray end 0 0 bop }} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.1}{1996/07/08}{Added implementation of the "pswait" option} +% \changes{v1.1}{1996/07/09}{Moved \cs{PSwait} code to \cs{AtBeginLabelPage}} +% \changes{v1.1}{1996/07/15}{Moved \cs{PSwait} code to +% \cs{AtBeginLabels}} +% \changes{v1.1}{1997/07/13}{Added implementation of the "psautotray" option} +% The option "pswait" puts the "\PSwait" code in the beginning of each +% page. The option "\psautotray" puts there the "\PSautotray" code. % \begin{macrocode} -%<*package> \if@pswait \AtBeginLabels{\PSwait}% +\else + \if@psautotray + \AtBeginLabels{\PSautotray}% + \fi \fi -%</package> % \end{macrocode} % % @@ -614,164 +703,168 @@ % % % -% \DescribeMacro{LabelCountCol} -% \DescribeMacro{LabelCountRow} +% \DescribeMacro{\c@LabelCountCol} +% \DescribeMacro{\c@LabelCountRow} % These counters store the position of the currently printed label: % \begin{macrocode} -%<*package> \newcounter{LabelCountCol} \newcounter{LabelCountRow} -%</package> % \end{macrocode} % % -% \DescribeMacro{LabelOffsetCol} -% \DescribeMacro{LabelOffsetRow} +% \DescribeMacro{\c@LabelOffsetCol} +% \DescribeMacro{\c@LabelOffsetRow} % And these counters provide the offset for the label printed on a % partially used sheet: % \begin{macrocode} -%<*package> \newcounter{LabelOffsetCol} \newcounter{LabelOffsetRow} \setcounter{LabelOffsetCol}{1} \setcounter{LabelOffsetRow}{1} -%</package> % \end{macrocode} % -% \macro{\FirstLabel} -% \changes{v1.1}{7/8/96}{Introduced new command \cs{FirstLabel}} +% \begin{macro}{\FirstLabel} +% \changes{v1.1}{1996/07/08}{Introduced new command \cs{FirstLabel}} % The command "\FirstLabel"\marg{Row}\marg{Col} sets the counters % "LabelOffsetRow" and "LabelOffsetCol". % \begin{macrocode} -%<*package> \DeclareRobustCommand{\FirstLabel}[2]{% \setcounter{LabelOffsetRow}{#1}% \setcounter{LabelOffsetCol}{#2}} -%</package> % \end{macrocode} +% \end{macro} % -% \subsection{Envelope Placement} -% -% Now we can calculate "\EnvelopeLeftMargin" -% \begin{macrocode} -%<*package> -\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 -%</package> -% \end{macrocode} % % \subsection{Fonts} % % % \begin{macro}{\@toaddressfont} % \begin{macro}{\@fromaddressfont} -% \changes{v1.1}{7/8/96}{Fixed documentation about \cs{@fromaddressfont}} +% \changes{v1.1}{1996/07/08}{Fixed documentation about \cs{@fromaddressfont}} % We want the address to be printed in \textsf{\large 12pt sans serif} % font. The return address will be printed in 10pt normal font. % \begin{macrocode} -%<*package> \def\@toaddressfont{% \ifcase\@ptsize \large\or\normalsize\or\small\fi% \sffamily\selectfont} \def\@fromaddressfont{% \ifcase\@ptsize \normalsize\or\small\or\footnotesize\fi% \normalfont} -%</package> % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Return address} % -% \DescribeMacro{\returnaddress} +% \begin{macro}{\returnaddress} +% \changes{v1.2}{1997/07/13}{Deleted check for \cs{if@envelope}} % The standard letter class defines "\returnaddress" to be null. This % is sensible if we are printing labels, but not so good if we are % printing \emph{envelopes}. Therefore let us redefine it: % \begin{macrocode} -%<*package> -\def\returnaddress{\if@envelope \fromaddress\else\relax\fi} -%</package> +\def\returnaddress{\fromaddress} % \end{macrocode} -% +% \end{macro} % % \subsection{Margins, page styles, etc.} % % % \begin{macro}{\startlabels} +% \changes{v1.2}{1996/09/07}{Added \cs{clearpage}} +% \changes{v1.2}{1996/09/20}{Added percent signs} +% \changes{v1.2}{1997/07/10}{Moved here calculations for +% \cs{EnvelopeLeftMargin}} +% \changes{v1.2}{1997/07/10}{Added \cs{LabelLeftMargin}} % The command "\startlabels" is the internal command that prepares % the paper for labels or envelopes, resets the internal counters and % calls "\@beginlabelshook". % \begin{macrocode} -%<*package> \def\startlabels{% - \pagestyle{empty} - \setlength{\topmargin}{-1.0in} + \clearpage% + \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}% + \if@envelope\relax% + \else% + \addtolength{\oddsidemargin}{\LabelLeftMargin}% + \fi% + \setlength{\evensidemargin}{\oddsidemargin}% + \setlength{\textwidth}{20in}% + \hsize=20in% + \baselineskip=0pt% + \lineskip=0pt% + \parindent=0pt% \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} -%</package> +% \end{macrocode} +% +% Now we can calculate "\EnvelopeLeftMargin" +% +% \begin{macrocode} + \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% + \else% +% \end{macrocode} +% +% Initializing labels counters\ldots +% +% \begin{macrocode} + \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% + \spaceskip0pt\relax% + \xspaceskip 0pt\relax% + \clubpenalty=0% + \widowpenalty=0% + \raggedbottom% + \sloppy% + \setlength\hfuzz{5in}% + \setlength\vfuzz{5in}% + \ignorespaces% + \@beginlabelshook% + \@beginlabelpagehook% + \nopagebreak}% % \end{macrocode} % \end{macro} % @@ -781,14 +874,12 @@ % This macro uses the text as an argument and prints it according to % the conventions. % \begin{macrocode} -%<*package> \newcommand{\PrintReturnAddress}[1]{% \vspace*{\FromAddressTopMargin} \null\hspace{\FromAddressLeftMargin} \parbox[t][\FromAddressHeight]{\FromAddressWidth}% {\@fromaddressfont \lineskip=1pt \if@printreturnaddress #1\else\relax\fi}} -%</package> % \end{macrocode} % % \DescribeMacro{\PrintAddress} @@ -796,7 +887,6 @@ % differences: it prints barcodes if necessary \emph{and} % capitalizes the address. % \begin{macrocode} -%<*package> \newcommand{\PrintAddress}[1]{% \vspace*{\ToAddressTopMargin} \leavevmode @@ -806,20 +896,38 @@ \if@barcodes \PrintBarCode{#1} \fi \@toaddressfont \if@capitalizeaddress \@make@capitalize{#1} \else #1 \fi}} -%</package> % \end{macrocode} % % \subsection{Label setup} % -% \DescribeMacro{\PrintLabel} +% \begin{macro}{\PrintLabel} +% \changes{v1.2}{1996/09/20}{Added percent signs} % This macro prints a label in a parbox % \begin{macrocode} -%<*package> \newcommand{\PrintLabel}[1]{% \parbox[t][\LabelHeight]{\LabelWidth}{% \PrintAddress{#1}}} -%</package> % \end{macrocode} +% \end{macro} +% +% \begin{macro}{\PrintBigLabel} +% \changes{v1.2}{1997/07/13}{Wrote new command} +% This macro makes a minipage with addresses on it, similarly to +% "\PrintEnvelope" below. +% \begin{macrocode} +\newcommand{\PrintBigLabel}[2]{% + \begin{minipage}[t][\LabelHeight]{\LabelWidth}% + \baselineskip=0pt% + \lineskip=0pt% + \parindent=0pt% + \begin{center}% + \PrintReturnAddress{#1}\\% + \rule{\ToAddressWidth}{0.1pt}% + \PrintAddress{#2}% + \end{center}% + \end{minipage}} +% \end{macrocode} +% % % \subsection{Envelope setup} % @@ -827,33 +935,33 @@ % situation with envelopes is different: they contain several boxes, and % could be rotated, centered, etc. % -% \DescribeMacro{\PrintEnvelope} +% \begin{macro}{\PrintEnvelope} +% \changes{v1.2}{1996/09/20}{Added percent signs} % This macro makes a minipage with addresses on it. % \begin{macrocode} -%<*package> \newcommand{\PrintEnvelope}[2]{% - \begin{minipage}[t][\EnvelopeHeight]{\EnvelopeWidth} - \baselineskip=0pt - \lineskip=0pt - \parindent=0pt - \PrintReturnAddress{#1}\\ - \begin{center} - \PrintAddress{#2} - \end{center} + \begin{minipage}[t][\EnvelopeHeight]{\EnvelopeWidth}% + \baselineskip=0pt% + \lineskip=0pt% + \parindent=0pt% + \PrintReturnAddress{#1}\\% + \begin{center}% + \PrintAddress{#2}% + \end{center}% \end{minipage}} -%</package> % \end{macrocode} +% \end{macro} % -% \DescribeMacro{\@PrintEnvelope} +% \begin{macro}{\@PrintEnvelope} % The following macro checks for rotation: % \begin{macrocode} -%<*package> \newcommand{\@PrintEnvelope}[2]{% - \if@rotateenvelopes\rotatebox{90}{\PrintEnvelope{#1}{#2}} - \else\PrintEnvelope{#1}{#2} + \if@rotateenvelopes\rotatebox{90}{\PrintEnvelope{#1}{#2}}% + \else\PrintEnvelope{#1}{#2}% \fi} -%</package> % \end{macrocode} +% \end{macro} +% \end{macro} % % \section{Printing of envelopes and labels} % @@ -863,32 +971,27 @@ % Now we are prepared to print actual envelopes and labels. It is done by % the "\mlabel" command. It has two forms: for labels and envelopes. % \begin{macrocode} -%<*package> \renewcommand{\mlabel}[2]{\ignorespaces% \spaceskip 0pt\relax% \xspaceskip 0pt\relax% -%</package> % \end{macrocode} % % \subsection{Printing of one envelope} -% \changes{v1.1}{07/09/1996}{Put \cs{@beginlabelpagehook} in the envelope +% \changes{v1.1}{1996/07/09}{Put \cs{@beginlabelpagehook} in the envelope % printing} % \begin{macrocode} -%<*package> \if@envelope% \leavevmode% \hspace*{\EnvelopeLeftMargin}% \@PrintEnvelope{#1}{#2}% \clearpage% \@beginlabelpagehook% -%</package> % \end{macrocode} -% % \subsection{Printing of one label} -% \changes{v1.1}{07/09/1996}{Put \cs{@beginlabelpagehook} in the label +% \changes{v1.1}{1996/07/09}{Put \cs{@beginlabelpagehook} in the label % printing} +% \changes{v1.2}{1997/07/14}{Added printing of big labels} % \begin{macrocode} -%<*package> \else% \ignorespaces% \ifnum\theLabelCountCol>\theLabelMaxCol% @@ -901,12 +1004,16 @@ \setcounter{LabelCountRow}{1}% \setcounter{LabelCountCol}{1}% \fi% - \PrintLabel{#2}\ignorespaces\nolinebreak% + \if@biglabel% + \PrintBigLabel{#1}{#2}% + \else% + \PrintLabel{#2}% + \fi% + \ignorespaces\nolinebreak% \stepcounter{LabelCountCol}% - \fi} -%</package> + \fi}% % \end{macrocode} -% \end{macro} +% \end{macro} % % \subsection{Printing of return labels} % @@ -918,16 +1025,13 @@ % The counter "\@numreturnlabels" stores the number of return labels to % be printed. Note that it is a \TeX\ counter, not a \LaTeX\ one. % \begin{macrocode} -%<*package> \newcount\@numreturnlabels -%</package> % \end{macrocode} % % \DescribeMacro{\printreturnlabels} % This macro has two parameters: the number of labels to be printed and % the text that is printed. It is the same on all labels. % \begin{macrocode} -%<*package> \newcommand{\printreturnlabels}[2]{% \@numreturnlabels=#1 \def\@toaddressfont{\@fromaddressfont} @@ -936,7 +1040,6 @@ \startlabels \loop \mlabel{\relax}{#2} \advance\@numreturnlabels by -1 \ifnum\@numreturnlabels>0\repeat} -%</package> % \end{macrocode} % % \section{Barcodes} @@ -951,15 +1054,14 @@ % First, we extract barcodes by the command "\@extractbarcode". Then % we print them by "\@printbarcode". % \begin{macrocode} -%<*package> \newcommand{\PrintBarCode}[1]{% \@extractbarcode{#1} \@printbarcode} -%</package> % \end{macrocode} % % \subsection{Extraction of barcodes}\label{sec:Extract} -% +% \changes{v1.2}{1996/07/10}{Deleted \cs{global} from zipcode +% extracting commands} % We define zipcode as a sequence of digits (0--9) that: % \begin{itemize} % \item Has no characters other than digits and dashes (-) inside it @@ -982,11 +1084,9 @@ % then the control character. The % switch "\@zipcodefound" shows whether we found zip code so far. % \begin{macrocode} -%<*package> \newtoks\@zipcode \newcount\@zipcodesum \newif\if@zipcodefound -%</package> % \end{macrocode} % % @@ -1005,132 +1105,119 @@ % If we meet in any state the special token "\@endaddress", we % gobble it and finish the loop. % \begin{macrocode} -%<*package> \long\def\@finishzipcode#1{} -%</package> % \end{macrocode} % % \item \DescribeMacro{\@firstzipcode} If we meet a number (0--9) in % state~\ref{state:notfound}, we initialize registers, process the % token and go to state~\ref{state:found} % \begin{macrocode} -%<*package> \long\def\@firstzipcode#1{% - \global\@zipcode{#1} - \global\@zipcodesum=#1\relax - \global\@zipcodefoundtrue + \@zipcode{#1} + \@zipcodesum=#1\relax + \@zipcodefoundtrue \@zipcodeloop} -%</package> % \end{macrocode} % % \item \DescribeMacro{\@continuezipcode} If we meet a number (0--9) % in state~\ref{state:found}, we just process it. % \begin{macrocode} -%<*package> \long\def\@continuezipcode#1{% - \global\@zipcode=\expandafter{\the\@zipcode#1} - \global\advance\@zipcodesum by #1 + \@zipcode=\expandafter{\the\@zipcode#1} + \advance\@zipcodesum by #1 \@zipcodeloop} -%</package> % \end{macrocode} % % \item \DescribeMacro{\@dashzipcode} If we meet a dash in % state~\ref{state:found}, we gobble it. % \begin{macrocode} -%<*package> \long\def\@dashzipcode#1{\@zipcodeloop} -%</package> % \end{macrocode} % % \item \DescribeMacro{\@spacezipcode} If we meet a space in any % state, we gobble it and go to the state~\ref{state:notfound}. The % trick is from Carlisle's \textsf{enumerate} package. % \begin{macrocode} -%<*package> \def\@spacezipcode{% - \global\@zipcodefoundfalse - \afterassignment\@zipcodeloop\let\@temp= } -%</package> + \@zipcodefoundfalse + \afterassignment\@zipcodeloop\let\EL@temp= } % \end{macrocode} % % \item \DescribeMacro{\@abortzipcode} If we meet anything else in any % mode, we gobble it and go to state~\ref{state:notfound} % \begin{macrocode} -%<*package> \long\def\@abortzipcode#1{% - \global\@zipcodefoundfalse + \@zipcodefoundfalse \@zipcodeloop} -%</package> % \end{macrocode} % % \end{itemize} % % % \DescribeMacro{\@zipcodeloop} -% \DescribeMacro{\@temp} -% This macro is simple. We just put the next token into "\@temp" and +% \DescribeMacro{\EL@temp} +% \changes{v1.2}{1997/07/14}{Changed \cs{@temp} to \cs{EL@temp} to +% avoid clashes with amsmath} +% This macro is simple. We just put the next token into "\EL@temp" and % process it through "\@zipcodeloop@". % \begin{macrocode} -%<*package> -\def\@zipcodeloop{\futurelet\@temp\@zipcodeloop@} -%</package> +\def\@zipcodeloop{\futurelet\EL@temp\@zipcodeloop@} % \end{macrocode} % % \DescribeMacro{\@zipcodeloop@} -% \DescribeMacro{\@tempa} +% \DescribeMacro{\EL@tempa} +% \changes{v1.2}{1997/07/14}{Changed \cs{@tempa} to \cs{EL@tempa} to +% avoid clashes with amsmath} % This macro performs actual processing\dots We put the command -% that gobbles the next token into "\@tempa" +% that gobbles the next token into "\EL@tempa" % \begin{macrocode} -%<*package> \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} + \ifx \@endaddress\EL@temp \def\EL@tempa{\@finishzipcode} \else + \ifx 0\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 1\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 2\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 3\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 4\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 5\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 6\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 7\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 8\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx 9\EL@temp \if@zipcodefound \def\EL@tempa{\@continuezipcode} + \else \def\EL@tempa{\@firstzipcode} \fi \else + \ifx -\EL@temp \if@zipcodefound \def\EL@tempa{\@dashzipcode} + \else \def\EL@tempa{\@abortzipcode} \fi \else + \ifx \@sptoken\EL@temp \def\EL@tempa{\@spacezipcode} \else + \def\EL@tempa{\@abortzipcode} \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \@tempa} -%</package> + \EL@tempa} % \end{macrocode} % +% % \DescribeMacro{\@extractbarcode} % The command "\@extractbarcode" puts barcode into the "\@zipcode", % and calculates the control character (10 minus sum of the digits % of the barcode). % \begin{macrocode} -%<*package> \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 + \loop \advance \@zipcodesum by -10 \ifnum\the\@zipcodesum>0 \repeat \fi - \global\multiply\@zipcodesum by -1 + \multiply\@zipcodesum by -1 \fi} -%</package> % \end{macrocode} % % \subsection{Printing barcodes} @@ -1142,7 +1229,6 @@ % First, some lengths. ``L'' and ``S'' below refer to ``long'' and % ``short'' bars correspondingly. % \begin{macrocode} -%<*package> \newlength{\@barcodewidth} \newlength{\@barcodeLheight} \newlength{\@barcodeSheight} @@ -1151,19 +1237,16 @@ \setlength{\@barcodeLheight}{0.125in} \setlength{\@barcodeSheight}{0.050in} \setlength{\@barcodeskip}{0.026in} -%</package> % \end{macrocode} % % \DescribeMacro{\@barL} % \DescribeMacro{\@barS} % The following macros print long and short bars. % \begin{macrocode} -%<*package> \DeclareRobustCommand{\@barL}{% \rule{\@barcodewidth}{\@barcodeLheight}\hspace{\@barcodeskip}} \DeclareRobustCommand{\@barS}{% \rule{\@barcodewidth}{\@barcodeSheight}\hspace{\@barcodeskip}} -%</package> % \end{macrocode} % % \DescribeMacro{\@printonezip} @@ -1172,7 +1255,6 @@ % the only tokens we can meet are digits. Well, we will add an end marking % token to the list. Let it be the letter ``S'' (from ``Stop''). % \begin{macrocode} -%<*package> \def\@printonezip#1{% \ifx1#1\@barS\@barS\@barS\@barL\@barL\else \ifx2#1\@barS\@barS\@barL\@barS\@barL\else @@ -1184,21 +1266,20 @@ \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}% + \ifx S#1\def\EL@tempa{\relax}% \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% - \@tempa} + \EL@tempa} \def\@printbarcode{% \if@zipcodefound \mbox{% \@barL% - \def\@tempa{\@printonezip}% - \expandafter\@tempa\the\@zipcode S% - \def\@tempa{\@printonezip}% - \expandafter\@tempa\the\@zipcodesum S% + \def\EL@tempa{\@printonezip}% + \expandafter\EL@tempa\the\@zipcode S% + \def\EL@tempa{\@printonezip}% + \expandafter\EL@tempa\the\@zipcodesum S% \@barL} \\[1ex] \fi} -%</package> % \end{macrocode} % % @@ -1206,6 +1287,7 @@ % \section{Capitalization} % % +% \changes{v1.2}{1996/07/10}{Deleted \cs{global} from capitalization commands} % % % @@ -1229,9 +1311,7 @@ % \DescribeMacro{\@addr@cap} % We store the capitalized address in the token list "\@addr@cap". % \begin{macrocode} -%<*package> \newtoks\@addr@cap -%</package> % \end{macrocode} % % The following macros process the tokens one by one. @@ -1239,9 +1319,7 @@ % \DescribeMacro{\@finishaddrcap} % If we meet the special token "\@endaddress", we gobble it and stop. % \begin{macrocode} -%<*package> \long\def\@finishaddrcap#1{} -%</package> % \end{macrocode} % % \DescribeMacro{\@dotcommaaddrcap} @@ -1249,91 +1327,406 @@ % is also useful for gobbling \LaTeXe\ \textsf{letter} commands like % "\voidb@x" and "\unhbox". % \begin{macrocode} -%<*package> \long\def\@dotcommaaddrcap#1{% \@addrcaploop} -%</package> % \end{macrocode} % % \DescribeMacro{\@newlineaddrcap} % If we meet "\\", we add it to the list % \begin{macrocode} -%<*package> \long\def\@newlineaddrcap#1{% - \global\@addr@cap=\expandafter{\the\@addr@cap #1} + \@addr@cap=\expandafter{\the\@addr@cap #1} \@addrcaploop} -%</package> % \end{macrocode} % % \DescribeMacro{\@bgroupaddrcap} % If we meet "\bgroup", we add it to the list the complete group (uppercase) % \begin{macrocode} -%<*package> \long\def\@bgroupaddrcap#1{% - \global\@addr@cap=\expandafter{\the\@addr@cap {\MakeUppercase{#1}}} + \@addr@cap=\expandafter{\the\@addr@cap {\MakeUppercase{#1}}} \@addrcaploop} -%</package> % \end{macrocode} % % \DescribeMacro{\@spaceaddrcap} % If we meet a space we gobble it (oh-oh) and add it to the list. % \begin{macrocode} -%<*package> \def\@spaceaddrcap{% - \global\@addr@cap=\expandafter{\the\@addr@cap\hspace{0.6em}} - \afterassignment\@addrcaploop\let\@temp= } -%</package> + \@addr@cap=\expandafter{\the\@addr@cap\hspace{0.6em}} + \afterassignment\@addrcaploop\let\EL@temp= } % \end{macrocode} % % \DescribeMacro{\@otheraddrcap} % And if we meet anything else, we make it uppercase and add to the % list % \begin{macrocode} -%<*package> \def\@otheraddrcap#1{% - \global\@addr@cap=\expandafter{\the\@addr@cap% + \@addr@cap=\expandafter{\the\@addr@cap% \MakeUppercase{#1}\kern1pt\relax} \@addrcaploop} -%</package> % \end{macrocode} % % % \DescribeMacro{\@addrcaploop} -% This macro is simple. We just put the next token into "\@temp" and +% This macro is simple. We just put the next token into "\EL@temp" and % process it through "\@addrcaploop@". % \begin{macrocode} -%<*package> -\def\@addrcaploop{\futurelet\@temp\@addrcaploop@} -%</package> +\def\@addrcaploop{\futurelet\EL@temp\@addrcaploop@} % \end{macrocode} % % \DescribeMacro{\@addrcaploop@} % This macro performs actual processing\dots % \begin{macrocode} -%<*package> \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} + \ifx \@endaddress\EL@temp \def\EL@tempa{\@finishaddrcap} \else + \ifx .\EL@temp \def\EL@tempa{\@dotcommaaddrcap} \else + \ifx ,\EL@temp \def\EL@tempa{\@dotcommaaddrcap} \else + \ifx \voidb@x\EL@temp \def\EL@tempa{\@dotcommaaddrcap} \else + \ifx \unhbox\EL@temp \def\EL@tempa{\@dotcommaaddrcap} \else + \ifx \\\EL@temp \def\EL@tempa{\@newlineaddrcap} \else + \ifx \bgroup\EL@temp \def\EL@tempa{\@bgroupaddrcap} \else + \ifx \@sptoken\EL@temp \def\EL@tempa{\@spaceaddrcap} \else + \def\EL@tempa{\@otheraddrcap} \fi\fi\fi\fi\fi\fi\fi\fi - \@tempa} -%</package> + \EL@tempa} % \end{macrocode} % % \DescribeMacro{\@make@capitalize} % \begin{macrocode} -%<*package> \long\def\@make@capitalize#1{% - \global\@addr@cap={\relax} + \@addr@cap={\relax} \@addrcaploop#1\@endaddress \the\@addr@cap} -%<*package> +% \end{macrocode} +% +% +% \section{Games with \texttt{.aux} file} +% +% The commands described in this section write something to the +% |.aux| file, and thus change the way \EL\ treats the labels and +% envelopes. Since the action is delayed till the |.aux| file is +% processed, these commands affect only the labels automatically +% extracted from the |letter| environment, and do not affect the +% labels explicitly defined by the |\mlabel| commands in the main +% file. +% +% +% \changes{v1.2}{1996/09/07}{Added \cs{@@mlabel}} +% \DescribeMacro{\@@mlabel} +% The macro |\@@mlabel| stores the status of the |\@mlabel| as +% determined by |\makelabels|. It is a no-op at the start. +% If |\makelabels| redefines |\@mlabel|, we catch it through the +% |\AtEndDocument| hook. Note that since |\makelabel| is allowed +% only in the preamble, we are not in danger of redefining commands too +% early. +% \begin{macrocode} +\let\@@mlabel=\@gobbletwo +\AtEndDocument{\let\@@mlabel=\@mlabel} +% \end{macrocode} +% +% +% The next four commands redefine |\@mlabel| to suppress or resume +% printing mailing labels. +% +% \begin{macro}{\suppresslabels} +% \changes{v1.2}{1996/09/06}{Wrote new command} +% This command suppress printing labels and envelopes until it is +% resumed by |\resumelabels| or similar commands. +% \begin{macrocode} +\def\suppresslabels{\if@filesw\immediate\write\@auxout{% + \string\@suppresslabels}\fi} +% \end{macrocode} +% +% \begin{macro}{\@suppresslabels} +% \changes{v1.2}{1996/09/07}{Deleted the \cs{AtBeginDocument} hook} +% This is the internal command that performs the actual +% processing. +% \begin{macrocode} +\def\@suppresslabels{\let\@mlabel=\@gobbletwo} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\resumelabels} +% \changes{v1.2}{1996/09/06}{Wrote new command} +% \begin{macro}{\@resumelabels} +% \changes{v1.2}{1996/09/07}{Changed \cs{mlabel} to \cs{@@mlabel} and +% deleted the \cs{AtBeginDocument} hook} +% These commands resume printing labels and envelopes if it was +% suppressed by |\suppresslabels| or similar commands. +% \begin{macrocode} +\def\resumelabels{\if@filesw\immediate\write\@auxout{% + \string\@resumelabels}\fi} +\def\@resumelabels{\let\@mlabel=\@@mlabel} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\suppressonelabel} +% \changes{v1.2}{1996/06/09}{Wrote new command} +% \begin{macro}{\@suppressonelabel} +% \changes{v1.2}{1996/09/07}{Deleted the \cs{AtBeginDocument} hook} +% \begin{macro}{\@old@mlabel} +% These commands suppress printing of one label or envelope. +% The macro |\@old@mlabel| is used to store the +% system state. +% \begin{macrocode} +\def\suppressonelabel{\if@filesw\immediate\write\@auxout{% + \string\@suppressonelabel}\fi} +\def\@suppressonelabel{\let\@old@mlabel=\@mlabel% + \def\@mlabel{% + \let\@mlabel=\@old@mlabel% + \@gobbletwo}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\printonelabel} +% \changes{v1.2}{1996/06/09}{Wrote new command} +% \begin{macro}{\@printonelabel} +% \changes{v1.2}{1996/09/07}{Changed \cs{mlabel} to \cs{@@mlabel} and +% deleted the \cs{AtBeginDocument} hook} +% These commands resume printing for one label or envelope +% The macro |\@old@mlabel| is used to store the +% system state. +% \begin{macrocode} +\def\printonelabel{\if@filesw\immediate\write\@auxout{% + \string\@printonelabel}\fi} +\def\@printonelabel{\let\@old@mlabel=\@mlabel% + \def\@mlabel{% + \let\@mlabel=\@old@mlabel% + \@@mlabel}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\ChangeEnvelope} +% \changes{v1.2}{1996/09/07}{Wrote new command} +% \begin{macro}{\@ChangeEnvelope} +% \begin{macro}{\@ChangeEnvelopeStar} +% This macro writes |\@SetEnvelope| to the |.aux| file. It has +% two forms: starred and and unstarred. In the unstarred mode it also +% writes |\@startlabels| to the |.aux| file. In the unstarred form it +% does not. +% Since we want to treat \emph{both} stars and optional arguments, we +% introduce two internal commands that can be invoked by the main +% macro. +% \begin{macrocode} +\def\ChangeEnvelope{\@ifstar{\@ChangeEnvelopeStar}{\@ChangeEnvelope}} +\newcommand\@ChangeEnvelopeStar[3][0pt]{% + \if@filesw\immediate\write\@auxout{% + \string\@SetEnvelope[#1]{#2}{#3}}% + \fi} +\newcommand\@ChangeEnvelope[3][0pt]{% + \if@filesw\immediate\write\@auxout{% + \string\@SetEnvelope[#1]{#2}{#3}} + \immediate\write\@auxout{\string\@startlabels} + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@SetEnvelope} +% We define this command as no-op at beginning, and then redefine it +% before reading |.aux| file. +% \begin{macrocode} +\def\@SetEnvelope[#1]#2#3{} +\AtEndDocument{\let\@SetEnvelope=\SetEnvelope} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ChangeLabel} +% \changes{v1.2}{1997/07/11}{Wrote new command} +% \begin{macro}{\@ChangeLabel} +% \begin{macro}{\@ChangeLabelStar} +% This macro writes |\@SetLabel| to the |.aux| file. It has +% two forms: starred and and unstarred. In the unstarred mode it also +% writes |\@startlabels| to the |.aux| file. In the unstarred form it +% does not. +% Since we want to treat \emph{both} stars and optional arguments, we +% introduce two internal commands that can be invoked by the main +% macro. +% \begin{macrocode} +\def\ChangeLabel{\@ifstar{\@ChangeLabelStar}{\@ChangeLabel}} +\newcommand\@ChangeLabelStar[7]{% + \if@filesw\immediate\write\@auxout{% + \string\@SetLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% + \fi} +\newcommand\@ChangeLabel[7]{% + \if@filesw\immediate\write\@auxout{% + \string\@SetLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}} + \immediate\write\@auxout{\string\@startlabels} + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@SetLabel} +% We define this command as no-op at beginning, and then redefine it +% before reading |.aux| file. +% \begin{macrocode} +\def\@SetLabel#1#2#3#4#5#6#7{} +\AtEndDocument{\let\@SetLabel=\SetLabel} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ChangeBigLabel} +% \changes{v1.2}{1997/07/13}{Wrote new command} +% \begin{macro}{\@ChangeBigLabel} +% \begin{macro}{\@ChangeBigLabelStar} +% This macro writes |\@SetBigLabel| to the |.aux| file. It has +% two forms: starred and and unstarred. In the unstarred mode it also +% writes |\@startlabels| to the |.aux| file. In the unstarred form it +% does not. +% Since we want to treat \emph{both} stars and optional arguments, we +% introduce two internal commands that can be invoked by the main +% macro. +% \begin{macrocode} +\def\ChangeBigLabel{\@ifstar{\@ChangeBigLabelStar}{\@ChangeBigLabel}} +\newcommand\@ChangeBigLabelStar[7]{% + \if@filesw\immediate\write\@auxout{% + \string\@SetBigLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}}% + \fi} +\newcommand\@ChangeBigLabel[7]{% + \if@filesw\immediate\write\@auxout{% + \string\@SetBigLabel{#1}{#2}{#3}{#4}{#5}{#6}{#7}} + \immediate\write\@auxout{\string\@startlabels} + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@SetLabel} +% We define this command as no-op at beginning, and then redefine it +% before reading |.aux| file. +% \begin{macrocode} +\def\@SetBigLabel#1#2#3#4#5#6#7{} +\AtEndDocument{\let\@SetBigLabel=\SetBigLabel} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \section{Reimplementation of the \cs{opening} command} +% \DescribeMacro{\re} +% Some people like to put below the address information like +% \begin{quote} +% Re: our recent talk +% \end{quote} +% A way to do this is to include it in the address like this: +% \begin{verbatim} +% \begin{letter}{% +% Dr.~Austin Tankel\\ +% Some University\\ +% Anytown, Pa 12345\\[1ex] +% Re: Our recent talk} +% \opening{Dear Austin:} +% \end{verbatim} +% However, this additional info will be put in the mailing label, +% which is wrong. Here we describe a macro that works like this: +% \begin{verbatim} +% \begin{letter}{% +% Dr.~Austin Tankel\\ +% Some University\\ +% Anytown, Pa 12345} +% \re{Our recent talk} +% \opening{Dear Austin:} +% \end{verbatim} +% +% +% Now, the implementation. +% First, lets us check whether the option "re" is chosen (otherwise we +% don't bother to redefine the commands): +% \begin{macrocode} +\if@EL@redefine@opening +% \end{macrocode} +% +% \begin{macro}{\re} +% \changes{v1.2}{1997/07/14}{Wrote new command} +% \begin{macro}{\recontentents} +% \changes{v1.2}{1997/07/14}{Wrote new command} +% The command "\re" just defines "\recontents". Also, we initialize +% "\recontents" to be initially empty +% \begin{macrocode} + \newcommand*{\re}[1]{\def\recontents{#1}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\ReName} +% \changes{v1.2}{1997/07/14}{Wrote new command} +% By default it is just plain style ``Re: '' (note the space!) +% \begin{macrocode} + \def\ReName{Re: }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\opening} +% \changes{v1.2}{1997/07/14}{Reimplemented standard command +% \cs{opening}} +% Now we redefine the standard "\opening" command to include the "\re" +% info. Here is the quote from the standard "letter" +% class~\cite{letter}: +% \begin{quotation} +% Text is begun with the |\opening| command, whose argument +% generates the salutation, as in +%\begin{verbatim} +% \opening{Dear Henry,} +%\end{verbatim} +% This should produce everything up to and including the +% `Dear Henry,' and a |\par| command that follows. +% Since there's a |\vfil| at the bottom of every page, +% it can add vertical fill to position a short letter. +% It should use the following commands: +% \begin{itemize} +% \item |\toname| : name part of `to' address. +% Will be one line long. +% \item |\toaddress| : address part of `to' address. +% The lines separated by |\\|. +% \item |\fromname| : name of sender. +% \item |\fromaddress| : argument of current |\address| +% declaration-- null if none. Should use standard institutional +% address if null. +% \item |\fromlocation| : argument of current |\location| +% declaration--null if none. +% \item |\telephonenum| : argument of current |\telephone| +% declaration--null if none. +% \end{itemize} +% \end{quotation} +% We just "\ReName" and "\recontents" here\ldots +% \begin{macrocode} + \renewcommand*{\opening}[1]{\ifx\@empty\fromaddress + \thispagestyle{firstpage}% + {\raggedleft\@date\par}% + \else % home address + \thispagestyle{empty}% + {\raggedleft\begin{tabular}{l}\ignorespaces + \fromaddress \\*[2\parskip]% + \@date \end{tabular}\par}% + \fi + \vspace{2\parskip}% + {\raggedright \toname \\ \toaddress \par}% + \ifx\@empty\recontents\relax + \else + {\raggedright \ReName \recontents \par}% + \fi + \vspace{2\parskip}% + #1\par\nobreak}% +% \end{macrocode} +% \end{macro} +% +% Now we close \cs{if@EL@redefine@opening}: +% \begin{macrocode} +\fi +% \end{macrocode} +% +% And the last line: +% \begin{macrocode} +%</package> % \end{macrocode} % % \Finale @@ -1344,7 +1737,11 @@ % \bibitem{Enum} % David Carlisle. % \newblock {\em The \textsf{enumerate} package}. -% \newblock {CTAN}, v2.02, January 1994. +% \newblock {CTAN}, v2.02 edition, January 1994. +% \bibitem{letter} +% Leslie Lamport, Frank Mittelbach, and Rainer Sch{\"o}pf. +% \newblock Standard letter document class for {\LaTeX} version 2e. +% \newblock CTAN, 199c. % \bibitem{Pub25} % USPS. % \newblock {\em Designing Business Letter Mail (Pub 25)}, August 1995. @@ -1360,19 +1757,3 @@ % \endinput - - - - - - - - - - - - - - - - diff --git a/Master/texmf-dist/source/latex/envlab/envlab.ins b/Master/texmf-dist/source/latex/envlab/envlab.ins index 9debb8d5009..68e4cedbb74 100644 --- a/Master/texmf-dist/source/latex/envlab/envlab.ins +++ b/Master/texmf-dist/source/latex/envlab/envlab.ins @@ -2,10 +2,8 @@ \input docstrip \keepsilent -\generate{\file{envlab.drv}{\from{envlab.dtx}{driver}} - \file{envlab.sty}{\from{envlab.dtx}{package}}} -\preamble +\declarepreamble\cfg You are allowed and encouraged to modify THIS file. @@ -15,9 +13,13 @@ customization commands specific to your site. Good luck - \endpreamble -\generate{\file{envlab.cfg}{\from{envlab.dtx}{cfg}}} +\generate{% + \file{envlab.drv}{\from{envlab.dtx}{driver}} + \file{envlab.sty}{\from{envlab.dtx}{package}} + \usepreamble\empty\usepreamble\cfg\file{envlab.cfg}{\from{envlab.dtx}{cfg}}} + + diff --git a/Master/texmf-dist/source/latex/envlab/readme.v11 b/Master/texmf-dist/source/latex/envlab/readme.v11 deleted file mode 100644 index e2910ca9f74..00000000000 --- a/Master/texmf-dist/source/latex/envlab/readme.v11 +++ /dev/null @@ -1,73 +0,0 @@ - Envelopes and Labels - LaTeX2e package - Version 1.1 - - Boris Veytsman - boris@plmsc.psu.edu - home page http://planck.psu.edu/~boris - - July 15, 1996 - - -This package provides a comprehensive and easily customizable -system for creating mailing envelopes and labels in LaTeXe. It -includes printing of barcodes and address formatting according to -the US Postal Service rules. - -The standard makelabels command in the LaTeXe letter.cls -document class typesets labels on Avery 5352 sheets. A typical user -may want more. EnvLab redefines makelabels in (hopefully}) -a more useful and customizable way. EnvLab: - - Typesets mailing labels or envelopes on a number of pre-defined -label sheets or envelopes. - - Can be easily configured for any customized label or envelope -sizes. The rule of thumb is: if you printer can print this, EnvLab can -typeset this. - - Can optionally print barcodes and/or process addresses according to -the United States Postal Service Rules. - - Allows you to include your logo in the return address. - - Painlessly interacts with mail merging packages such as mailing. - - Does not require special fonts for address and barcodes printing. -The typesetting is implemented with standard fonts and LaTeX \rule -commands. - -This package was written with US mailing standards in mind. This is -not a reflection of the author's americanocentrism: US standard was -only one I had official documents about. If you want to add your -national standards, please contact me with pointers to the -corresponding documents. - -The distribution of this package includes the following files: - - envlab.dtx---fully documented program - - envlab.ins---DocStrip instruction module - - elold.ins---DocStrip instruction module for older versions of -DocStrip - - elguide.tex---User Guide - - readme.version_number---Read Me file - -To install the package - - LaTeX the file envlab.ins. It will produce three files: envlab.drv, -envlab.sty and envlab.cfg. NOTE: If your version of DocStrip is older -than 2.3, use elold.ins instead of envlab.ins. - - (Optional) Look at the file envlab.cfg and change it accordingly to -your taste. - - Move the files envlab.sty and envlab.cfg to the LaTeX search path - - Produce the documentation by LaTeX ing the files elguide.tex and -(optional) envlab.drv. - - Enjoy! - ----------------------------------------------------------------------- -What's new in version 1.1 - - - Bug fixes, including correcting the nasty typos in default options & -elold.ins. - - New options controlling the printing of return addresses. - - \AtBeginLabels now behaves like \AtBeginDocument and \AtBeginDvi: the -changes are cumulative. - - New hook \AtBeginLabelPage. - - New command and options controlling switching the printer to manual feed -mode while printing envelopes and labels (thanks to William Slough, Eastern -Illinois University). - - New command \FirstLabels controlling offsets for the labels. - - |