diff options
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/envlab/elguide.dvi | bin | 43040 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/envlab/elguide.pdf | bin | 0 -> 197107 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/envlab/elguide.tex | 422 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/envlab/envlab.dvi | bin | 63652 -> 0 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/envlab/envlab.pdf | bin | 0 -> 200380 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/envlab/readme.v12 (renamed from Master/texmf-dist/source/latex/envlab/readme.v11) | 26 | ||||
-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/tex/latex/envlab/envlab.cfg | 25 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/envlab/envlab.sty | 485 |
11 files changed, 1516 insertions, 663 deletions
diff --git a/Master/texmf-dist/doc/latex/envlab/elguide.dvi b/Master/texmf-dist/doc/latex/envlab/elguide.dvi Binary files differdeleted file mode 100644 index faf0e8d36ad..00000000000 --- a/Master/texmf-dist/doc/latex/envlab/elguide.dvi +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/envlab/elguide.pdf b/Master/texmf-dist/doc/latex/envlab/elguide.pdf Binary files differnew file mode 100644 index 00000000000..3c4a74fd8ae --- /dev/null +++ b/Master/texmf-dist/doc/latex/envlab/elguide.pdf diff --git a/Master/texmf-dist/doc/latex/envlab/elguide.tex b/Master/texmf-dist/doc/latex/envlab/elguide.tex index 630b94807e6..f0e43669de9 100644 --- a/Master/texmf-dist/doc/latex/envlab/elguide.tex +++ b/Master/texmf-dist/doc/latex/envlab/elguide.tex @@ -1,5 +1,3 @@ - - \documentclass{ltxguide} @@ -31,9 +29,9 @@ \begin{document} \title{Printing Envelopes and Labels in \LaTeXe: \EL\ Package.\\ -User Guide\thanks{\copyright Boris Veytsman, 1996}} +User Guide\thanks{\copyright Boris Veytsman, 1996, 1997}} \author{Boris Veytsman} -\date{June 15, 1996} +\date{July 16, 1997} \maketitle @@ -105,7 +103,8 @@ To install the package \item (Optional) Look at the file |envlab.cfg| and change it accordingly to your taste (see Section~\ref{sec:Cust}). \item Move the files |envlab.sty| and |envlab.cfg| to the - \LaTeX\ search path + \LaTeX\ search path\footnote{The users of kpathsea based \TeX---like + te\TeX---should also issue |texhash| to update the search database.} \item Produce the documentation by \LaTeX ing the files |elguide.tex| and (optional) |envlab.drv|. \item Enjoy! @@ -128,17 +127,15 @@ retrieves and typesets this information. In general one should not use package types an error message if it cannot find the |makelabels| command in the class it is called from\footnote{If you want to create a custom letter class to be used with \EL, take care to write - commands \cs{startlabels} and \cs{mlabel}\marg{from-address}\marg{to-address} - to the |.aux| file. Also - define a \cs{makelabels} command. The latter can do - anything---\EL\ will redefine it anyway, but the package needs to see - \cs{makelabels} defined at the start up}. + commands \cs{startlabels} and + \cs{mlabel}\marg{from-address}\marg{to-address} to the |.aux| file. + Also define a \cs{makelabels} command. The latter can do + anything---\EL\ will redefine it anyway, but the package needs to + see \cs{makelabels} defined at the start up}. There are three ways to use \EL: - - \subsubsection{Automatic generation of envelopes or labels} \begin{decl} |\makelabels| @@ -301,15 +298,33 @@ nocapaddress]{envlab} \subsection{Sizes of labels and envelopes} -\EL\ package makes a distinction between envelopes and 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} - +\NEWdescription{Version 1.2} \EL\ package recognizes three kinds of media: +envelopes, labels and \NEWfeature{Version 1.2}``big labels''. Envelopes are +printed one per physical page, they could be rotated (i.~e.\ inserted +in the printer sidewise) and could carry both the shipping address and +return address. Labels and big labels are peel-off labels that are +printed several per physical page, they could not be rotated. The +difference between labels and big labels is that labels have only +shipping address while big labels have both return \emph{and} shipping +addresses. These differences are summarized in Table~\ref{tab:diff}. +The kind and the size of the media are set either by package options +or by the corresponding commands. +\begin{table}[tbp] + \begin{center} + \leavevmode + \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} + \caption{Differences between envelopes, labels and big labels} + \label{tab:diff} + \end{center} +\end{table} \begin{decl} @@ -319,7 +334,7 @@ differences are: |personalenvelope|,\\ |c6envelope|, |c65envelope|, - |c5envelope| + |c5envelope|, |dlenvelope| \end{decl} \EL\ knows about a number of standard envelopes. The options listed in Table~\ref{tab:Env} are used to typeset the addresses for envelopes @@ -341,6 +356,7 @@ $9.5''\times4.125''$ envelopes, use the command c6envelope & 162 mm & 114 mm\\ c65envelope & 224 mm & 114 mm\\ c5envelope & 229 mm & 162 mm\\ + dlenvelope & 220 mm & 110 mm\\ \hline \end{tabular} \caption{Standard envelope sizes} @@ -362,9 +378,11 @@ command |\SetEnvelope{8in}{4in}|. \begin{decl} |avery5160label|, |avery5161label|, -|avery5162label|,\\ -|avery5163label|, -|avery5164label| +|avery5162label|, +|avery5163label|,\\ +|avery5164label|, +|avery5262label|, +|herma4625label| \end{decl} \EL\ knows also about a number of commercially available labels. They are listed in Table~\ref{tab:Lab}. The dimensions $W$ and $H$ are @@ -436,7 +454,11 @@ rows of labels on a sheet. avery5163label & 4.19$''$ & 2$''$ & 0.5$''$ & 0.16$''$ & 0.19$''$ & 2 & 5\\ avery5164label & 4.19$''$ & 3.33$''$ & 0.5$''$ & 0.16$''$ & - 0.19$''$ & 2 & 3\\ + 0.19$''$ & 2 & 3\\ + avery5262label & 110 mm & 34 mm & 21 mm & 4 mm & + 5 mm & 2 & 7\\ + herma4625label & 105 mm & 42.3 mm & 0 mm & 5 mm & + 5 mm & 2 & 7\\ \hline \end{tabular} \caption{Standard label sizes} @@ -454,6 +476,45 @@ preamble of your document the command |\SetLabel|\marg {$W$}\marg command is completely analogous to the command |\SetEnvelope| described above. +\begin{decl} +|avery5163biglabel|, +|avery5164biglabel| +\end{decl} +\NEWfeature{Version 1.2} +``Big labels'' are big enough to carry both shipping and return +addresses, otherwise their dimensions are completely analogous to the +ones of labels. The predefined big labels are listed in +Table~\ref{tab:BigLab}. Note the difference between package options, +say, |avery5163label| and |avery5163biglabel|: while the physical +media is same, the formatting of addresses is quite different. + +\begin{table}[tbp] + \begin{center} + \leavevmode + \begin{tabular}{ccccccccc} + \hline + Package option & $W$ & $H$ & $t$ & $l$ & $r$ & $N_c$ & $N_r$\\ + \hline + avery5163biglabel & 4.19$''$ & 2$''$ & 0.5$''$ & 0.16$''$ & + 0.19$''$ & 2 & 5\\ + avery5164biglabel & 4.19$''$ & 3.33$''$ & 0.5$''$ & 0.16$''$ & + 0.19$''$ & 2 & 3\\ + \hline + \end{tabular} + \caption{Standard big label sizes} + \label{tab:BigLab} + \end{center} +\end{table} + +\begin{decl} + |\SetBigLabel|% + \marg{$W$}\marg{$H$}\marg{$t$}\marg{$l$}\marg{$r$}\marg{$N_c$}\marg{$N_r$} +\end{decl} +\NEWfeature{Version 1.2} +If your label size is not listed in Table~\ref{tab:BigLab}, put in the +preamble of your document the command |\SetBigLabel|\marg {$W$}\marg +{$H$}\marg {$t$}\marg {$l$}\marg {$r$}\marg {$N_c$} \marg{$N_r$}. + \subsection{Printing details}\label{sec:Print} @@ -479,41 +540,23 @@ commands and the specifications of your printer, so I can include them in the future releases of \EL. \NEWfeature{Version 1.1} Note that the command |\AtBeginLabels| is cumulative: if you use it several times in the same document, the new commands will be appended without overwriting -the previous definitions. \NEWfeature{Version 1.1}. The command -|\AtBeginLabelPage| works in the same way, but its argument will be -inserted at the beginning of each \emph{page} of \EL\ output, i.e. before -printing each envelope or label sheet. +the previous definitions. -\begin{decl} - |pswait|, |nopswait| -\end{decl} -\NEWfeature{Version 1.1} -If you use \dvips, you can ask it to switch your printer to manual -mode just before printing envelopes and labels. The printer will print the -main body of the letter(s) using the paper tray, and then stop, waiting for -envelopes or label sheets to be fed in the manual slot. The option -|pswait|, based on the code by \emph{William Slough} -\texttt{<cfwas@eiu.edu>}, -inserts the corresponding \PS\ |special|s in your output. -The option |nopswait| (default) suppresses this behavior. +\NEWfeature{Version 1.1} +The command |\AtBeginLabelPage| works in the +same way, but its argument will be inserted at the beginning of each +\emph{page} of \EL\ output, i.e. before printing each envelope or +label sheet. -\begin{decl} - |\PSwait| -\end{decl} -\NEWfeature{Version 1.1} William Slough's code can be useful in -other situations when you need to switch to manual mode in the -middle of the document. The command |\PSwait| inserts the -corresponding \PS\ code in the \dvips\ output. (An attentive reader -has probably already guessed that the |pswait| option is implemented -through the command |\AtBeginLabels{\PSwait}|). +The code for \PS{} printers is described in Section~\ref{sec:PS}. -Note that there are differences in the handling of the text close to paper -edges from printer to printer. Since envelopes and label sheets have text -near the edges, you might need to tune the offsets. For labels you can use -the command |\SetLabel| to do this. The optional first argument of the -command |\SetEnvelope| sets the distance between the leading edge of -``logical paper'' and the physical leading edge of the envelope (0 pt by -default). +There are differences in the handling of the text close to paper edges +from printer to printer. Since envelopes and label sheets have text +near the edges, you might need to tune the offsets. For labels you +can use the command |\SetLabel| to do this. The optional first +argument of the command |\SetEnvelope| sets the distance between the +leading edge of ``logical paper'' and the physical leading edge of the +envelope (0 pt by default). \begin{decl} |rotateenvelopes|, |norotateenvelopes| \\ @@ -550,18 +593,16 @@ envelopes. For example to shift the envelope for $2''$ from the left edge use |\setlength{\EnvelopeLeftMargin}{2in}| \begin{decl} - |LabelOffsetRow|, |LabelOffsetCol|,\\ |\FirstLabel|\marg{Row}\marg{Col} \end{decl} -Sometimes you need to print labels on a partially used sheet. The -counters |LabelOffsetRow| and |LabelOffsetCol| (default values 1) set -the position of the first label to print. You can change them using -the |\setlength| command. \NEWfeature{Version 1.1} Alternatively, you can -use the command |\FirstLabel|\marg{Row}\marg{Col} to set both counters -simultaneously. For example, the command |\FirstLabel{3}{2}| causes \EL\ -to start printing labels beginning with the second label in the third -row. Note that labels are printed row by row (\emph{not} column by -column, like in the standard \LaTeXe\ |letter| class). +\NEWdescription{Version 1.2} Sometimes you need to print labels on a +partially used sheet. \NEWfeature{Version 1.1} The command +|\FirstLabel|\marg{Row}\marg{Col} allows you to start printing of +labels from the given position. For example, the command +|\FirstLabel{3}{2}| causes \EL\ to start printing labels beginning +with the second label in the third row. Note that labels are printed +row by row (\emph{not} column by column, like in the standard \LaTeXe\ +|letter| class). \subsection{Formatting of the address (barcodes and capitalization)} @@ -668,6 +709,152 @@ address. Section~\ref{sec:Cust} describes how to customize your return address. +\subsection{Change of settings for some labels} + +\begin{decl} + |\suppresslabels|, |\resumelabels|,\\ + |\suppressonelabel|, |\resumeonelabel| +\end{decl} +\NEWfeature{Version 1.2} In many cases your |.tex| file contains many +|letter| environments. By default, if the command |\makelabels| +appears in the preamble, all them will generate mailing labels. +Sometimes you may want to override this behavior. \EL{} provides four +handy commands for this. The command |\suppresslabels| issued anywhere +before |\end{letter}| will suppress printing of mailing labels for the +current and subsequent letters---until the command |\resumelabels| is +issued. The commands |\suppressonelabel| and |\resumeonelabel| are +similar, but act only on the current label. + + + + +\begin{decl} + |\ChangeEnvelope|, |\ChangeLabel|, |\ChangeBigLabel| +\end{decl} +\NEWfeature{Version 1.2} The commands |\SetEnvelope|, |\SetLabel|, +|\SetBigLabel| have immediate effect: they set the sizes of all +following mailing labels. The mailing labels, automatically generated +by |letter| environments, are written to the |.aux| file, and +therefore they all will be printed for the envelope or labels size set +by the last |\Set| command. Sometimes, however, one needs to print +envelopes for the different |letter| environments at different sizes. +The commands |\ChangeEnvelope|, |\ChangeLabel| and |\ChangeBigLabel| +have the same meaning and arguments as the corresponding |\Set| +commands. However, instead of setting the media, they write the +information into the |.aux| file, and the actual change is delayed +until the |.aux| file is read (i.~e.~at the end of the document). +Therefore they act only on the mailing labels, extracted from the +|letter| environments, that follow this command. + + + +\subsection{Enhancements for the \texttt{letter} environment} + +\NEWfeature{Version 1.2} +Some people letters contain below the address the subject like this +\begin{quote} + Re: our recent talk +\end{quote} +A way to do this is to include it in the address (see +Figure~\ref{fig:wrong}). However, this additional info will be put in +the mailing label, which is wrong. The package \EL{} defines a command +|\re| to cope with this. + +\begin{figure}[tbp] + \leavevmode +\begin{figpage} +\begin{verbatim} +\documentclass[12pt]{letter} + +\address{% + Joe Casanova\\1 Lambda Street\\Anyplace, NY 12345} +\signature{Joe} + +\begin{document} + +\begin{letter}{% + Mary McKeen\\ + 2 Alpha Street\\ + Otherplace, NY 12346\\[2ex] + Re: Our love} + \opening{Dear Mary:} + I love only you + \closing{With love,} +\end{letter} +\end{document} +\end{verbatim} +\end{figpage} +\caption{A wrong way to include subject information in the letter} + \label{fig:wrong} +\end{figure} + +\begin{decl} + |re|, |nore| +\end{decl} +This command poses the following problem. The rest of the \EL{} +package meant to work not only with the standard |letter| class, but +with any other letter classes that write address information to the +|.aux| file in the standard format. However, if a package makes a +change to the formatting of the letter itself, we cannot be guaranteed +that it will work with all letter classes. Therefore we chose the +following solution: the additional features are enabled only if the +package option |re| is selected. If the option |nore| (default) is +selected, the package works in the ``compatibility mode'', and the +additional features are disabled\footnote{For \TeX perts: if the + option |re| is chosen, \EL{} redefines the \cs{opening} command. See + the file |envlab.dtx| for additional information.}. + + + + +\begin{decl} + |\re| +\end{decl} +\NEWfeature{Version 1.2} +The command |\re| defines additional subject information to be put +between the address and opening. It is very simple: just put +|\re|\marg{Subject} anywhere before the |\opening| command (see +Figure~\ref{fig:right}). + +\begin{figure}[tbp] +\leavevmode +\begin{figpage} +\begin{verbatim} +\documentclass[12pt]{letter} + +\usepackage[avery5160label,re]{envlab} +\makelabels + +\address{% + Joe Casanova\\1 Lambda Street\\Anyplace, NY 12345} +\signature{Joe} + +\begin{document} + + \begin{letter}{% + Mary McKeen\\ + 2 Alpha Street\\ + Otherplace, NY 12346} + \re{Our love} + \opening{Dear Mary:} + I love only you + \closing{With love,} + \end{letter} +\end{document} +\end{verbatim} +\end{figpage} +\caption{The \EL{} way to include subject information in the letter} + \label{fig:right} +\end{figure} + +Actually the scope of the |\re| command is the same as the scope of +the commands like |\address| or |\signature|: if it is issued outside +the |letter| environment, it affect all subsequent letters. If it is +issued inside the |letter| environment (but before the |\opening| +command), it is local to the current letter. To disable global |\re|, +just issue this command with empty argument: |\re{}|. + + \section{Customization} \label{sec:Cust} @@ -699,6 +886,17 @@ All lengths (heights, widths, margins) are user-customizable. Consult the file |envlab.dtx| for their definitions and use. \begin{decl} + |\ReName| +\end{decl} +\NEWfeature{Version 1.2} +The subject name for the |\re| command is stored in the |\ReName| +macro. Normally it is defined as plain style ``Re: ''. To +|\newcommand{\ReName}{Re: }| (note the space after semicolon!). To +change this, use |\renewcommand|, for example +|\renewcommand{\ReName}{\textbf{Subject: }}|. + + +\begin{decl} |envlab.cfg| \end{decl} If you use \EL\ for some time, you probably would have a number of @@ -720,6 +918,83 @@ package itself. Therefore by hacking |envlab.cfg| you can completely change the behavior of the package without modifying \EL. +\section{Commands for \PS{} printers} +\label{sec:PS} + + +I myself know next to nothing about programming of \PS{} printers, and +the following is based on contributions of \EL{} users. + +\begin{decl} + |pswait|, |nopswait| +\end{decl} +\NEWfeature{Version 1.1} +If you use \dvips, you can ask it to switch your printer to manual +mode just before printing envelopes and labels. The printer will print the +main body of the letter(s) using the paper tray, and then stop, waiting for +envelopes or label sheets to be fed in the manual slot. The option +|pswait|, based on the code by \emph{William Slough} +\texttt{<cfwas@eiu.edu>}, +inserts the corresponding \PS\ |special|s in your output. +The option |nopswait| (default) suppresses this behavior. + +\begin{decl} + |\PSwait| +\end{decl} +\NEWfeature{Version 1.1} William Slough's code can be useful in +other situations when you need to switch to manual mode in the +middle of the document. The command |\PSwait| inserts the +corresponding \PS\ code in the \dvips\ output. (An attentive reader +has probably already guessed that the |pswait| option is implemented +through the command |\AtBeginLabels{\PSwait}|). + +\begin{decl} + |psautotray|, |nopsautotray| +\end{decl} +\NEWfeature{Version 1.2} +\emph{Uri Blumenthal} \texttt{<uri@ibm.net>} wrote code for automatic +switching to other trays For example, if your envelopes are loaded +into \texttt{/otherenvelopetray}, try the following code: +\begin{verbatim} +\AtBeginLabels{% + \special{ps:clear grestore + statusdict begin false setduplexmode + /manualfeed true def + /otherenvelopetray end 0 0 bop }} +\end{verbatim} +If the package option |psautotray| is selected, \EL{} will try to +guess the proper tray from the envelope you chose. The option +|nopsautotray| (default) disables this feature. At present this +mechanism is rather experimental; I would be grateful for +failure/success reports as well as for suggestions. Note that |pswait| +and |psautotray| options are not compatible (|psautotray| switches the +printer to the manual mode anyway). If you selected them both, only +the one selected last will be chosen. + +\NEWdescription{Version 1.2} +Another solution by \emph{Robert Estes} +\texttt{<estes@ece.ucdavis.edu>} works for Optra R+ printers: +\begin{verbatim} +\AtBeginLabels{\special{ps: +clear grestore +1 dict dup /MediaPosition null put setpagedevice +1 dict dup /ManualFeed true put setpagedevice +1 dict dup /Policies 1 dict dup /PageSize 2 put put setpagedevice +2 dict dup /PageSize [297 684] put dup /ImagingBBox null put setpagedevice +0 0 bop +}} +\end{verbatim} + +\NEWdescription{Version 1.2} +The code by \emph{Greg Jumper} \texttt{<jumper@lens.sri.com>} works +for HP LaserJet 4MV: +\begin{verbatim} + \special{! <</ManualFeed true /DeferredMediaSelection true + /PageSize [297 684] /ImagingBBox null>> setpagedevice} +\end{verbatim} + + + \section{Bugs and limitations} \label{sec:Bugs} @@ -750,6 +1025,17 @@ experimental versions of \EL\ at my homepage (|http://planck.psu.edu/~boris|). + +\section{Acknowledgements} + +\NEWdescription{Version 1.2} Since the first version of \EL{} was +released, many users helped me with bug reports, suggestions and code +contributions to enhance it. I would like to express my gratitude to +Uri Blumenthal, Arnie Ostebee, William Slough, Ed Reingold, Jos +Jansen, Juergen Schlegelmilch, Jim Hill, Greg Jumper, Robert Estes, +Genick Bar-Meir and many others for their help. + + \section{Legalese} The package \EL\ is provided ``as is'' and comes with absolutely no diff --git a/Master/texmf-dist/doc/latex/envlab/envlab.dvi b/Master/texmf-dist/doc/latex/envlab/envlab.dvi Binary files differdeleted file mode 100644 index fa8e5d5f689..00000000000 --- a/Master/texmf-dist/doc/latex/envlab/envlab.dvi +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/envlab/envlab.pdf b/Master/texmf-dist/doc/latex/envlab/envlab.pdf Binary files differnew file mode 100644 index 00000000000..40740bed374 --- /dev/null +++ b/Master/texmf-dist/doc/latex/envlab/envlab.pdf diff --git a/Master/texmf-dist/source/latex/envlab/readme.v11 b/Master/texmf-dist/doc/latex/envlab/readme.v12 index e2910ca9f74..4f32a6aced0 100644 --- a/Master/texmf-dist/source/latex/envlab/readme.v11 +++ b/Master/texmf-dist/doc/latex/envlab/readme.v12 @@ -1,12 +1,12 @@ Envelopes and Labels LaTeX2e package - Version 1.1 + Version 1.2 Boris Veytsman boris@plmsc.psu.edu home page http://planck.psu.edu/~boris - July 15, 1996 + July 16, 1997 This package provides a comprehensive and easily customizable @@ -51,12 +51,30 @@ 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 + - Move the files envlab.sty and envlab.cfg to the LaTeX search +path. NOTE: users of kpathsea based TeX (like teTeX) should also issue +texhash to update the search database. - Produce the documentation by LaTeX ing the files elguide.tex and (optional) envlab.drv. - Enjoy! ---------------------------------------------------------------------- +What's new in version 1.2 + + - Bug fixes. The package is now compatible with amsmath. + - New media type: big labels. They are typeset like labels, but carry +both shipping and return addresses. + - New commands to control the automatic generation of mailing labels. + - New commands to change the media type for mailing labels in the +middle of the document. + - New PostScript code for selecting the paper trays (thanks to EnvLab +users). + - Enhancements to the letter environment for typesetting the subject +information. + - Documentation update. + + +---------------------------------------------------------------------- What's new in version 1.1 - Bug fixes, including correcting the nasty typos in default options & @@ -69,5 +87,3 @@ changes are cumulative. mode while printing envelopes and labels (thanks to William Slough, Eastern Illinois University). - New command \FirstLabels controlling offsets for the labels. - - 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/tex/latex/envlab/envlab.cfg b/Master/texmf-dist/tex/latex/envlab/envlab.cfg index 581ee89a987..24ebea4675f 100644 --- a/Master/texmf-dist/tex/latex/envlab/envlab.cfg +++ b/Master/texmf-dist/tex/latex/envlab/envlab.cfg @@ -1,21 +1,23 @@ -%% +%% %% This is file `envlab.cfg', %% generated with the docstrip utility. -%% +%% %% The original source files were: -%% +%% %% envlab.dtx (with options: `cfg') %% -%% You are allowed and encouraged to modify THIS file. %% -%% The first part of this file contains default options for your site. -%% The second part (inside AtEndOfPackage declaration) should contain -%% customization commands specific to your site. +%% You are allowed and encouraged to modify THIS file. +%% +%% The first part of this file contains default options for your site. +%% The second part (inside AtEndOfPackage declaration) should contain +%% customization commands specific to your site. %% -%% Good luck +%% Good luck %% %% -%% Copyright Boris Veytsman 1996 +\ProvidesFile{envlab.cfg} +[1997/07/16 v1.2 Envelopes and Labels] %% %% \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 @@ -32,15 +34,16 @@ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} +%% \changes{v1.2}{1996/07/16}{Updated User Guide} %% %% 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 } \endinput -%% +%% %% End of file `envlab.cfg'. diff --git a/Master/texmf-dist/tex/latex/envlab/envlab.sty b/Master/texmf-dist/tex/latex/envlab/envlab.sty index e9a5dc090b5..3d1db1ea4ce 100644 --- a/Master/texmf-dist/tex/latex/envlab/envlab.sty +++ b/Master/texmf-dist/tex/latex/envlab/envlab.sty @@ -1,22 +1,30 @@ -%% +%% %% 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. +%% Any modified versions of this file must be renamed +%% with new filenames distinct from envlab.sty. %% -%% 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.) +\ProvidesPackage{envlab} +[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 @@ -33,8 +41,8 @@ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} +%% \changes{v1.2}{1996/07/16}{Updated User Guide} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{envlab}[1996/07/15 v1.1 Envelopes and Labels] \def\envlab@oops{% \PackageError{envlab}% {Envlab is used outside of \MessageBreak% @@ -47,21 +55,29 @@ \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 +\@ifundefined{makelabels}{\envlab@oops}{\envlab@ok} \newif\if@envelope \@envelopetrue +\newif\if@biglabel +\@biglabelfalse \newif\if@rotateenvelopes \@rotateenvelopestrue \newif\if@printreturnaddress \@printreturnaddresstrue -\newcount\@envelopeposition \@envelopeposition=0\relax +\newcount\@envelopeposition +\@envelopeposition=0\relax \newif\if@pswait \@pswaitfalse +\newif\if@psautotray +\@psautotrayfalse +\newtoks\PSEnvelopeTray +\PSEnvelopeTray={/otherenvelopetray } \newif\if@barcodes \newif\if@alwaysbarcodes \@barcodestrue \@alwaysbarcodesfalse +\newif\if@EL@redefine@opening +\@EL@redefine@openingfalse \newif\if@capitalizeaddress \@capitalizeaddresstrue \newlength{\EnvelopeWidth} @@ -85,6 +101,7 @@ \newlength{\ToAddressWidth} \DeclareRobustCommand{\SetEnvelope}[3][0pt]{% \@envelopetrue% + \@biglabelfalse% \setlength{\EnvelopeTopMargin}{#1}% \setlength{\EnvelopeWidth}{#2}% \setlength{\EnvelopeHeight}{#3}% @@ -97,6 +114,7 @@ \setlength{\ToAddressWidth}{3in}} \DeclareRobustCommand{\SetLabel}[7]{% \@envelopefalse% + \@biglabelfalse% \setlength{\LabelWidth}{#1}% \setlength{\LabelHeight}{#2}% \setlength{\LabelTopMargin}{#3}% @@ -109,13 +127,37 @@ \setlength{\ToAddressWidth}{\LabelWidth}% \addtolength{\ToAddressWidth}{-\ToAddressLeftMargin}% \addtolength{\ToAddressWidth}{-\LabelRightMargin}} -\DeclareOption{businessenvelope}{\SetEnvelope{9.5in}{4.125in}} -\DeclareOption{executiveenvelope}{\SetEnvelope{7.5in}{3.875in}} +\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}} +\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}} +\DeclareOption{c5envelope}{\SetEnvelope{229mm}{162mm}% + \PSEnvelopeTray={/162x229cenvelopetray }} +\DeclareOption{dlenvelope}{\SetEnvelope{220mm}{110mm}% + \PSEnvelopeTray={/dlenvelopetray }} \DeclareOption{avery5160label}{% \SetLabel{2.75in}{1in}{0.5in}{0.19in}{0.12in}{3}{10}} \DeclareOption{avery5161label}{% @@ -126,6 +168,15 @@ \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{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}}% \DeclareOption{rotateenvelopes}{\@rotateenvelopestrue} \DeclareOption{norotateenvelopes}{\@rotateenvelopesfalse} \DeclareOption{centerenvelopes}{\@envelopeposition=0\relax} @@ -140,19 +191,19 @@ \DeclareOption{nocapaddress}{\@capitalizeaddressfalse} \DeclareOption{printreturnaddress}{\@printreturnaddresstrue} \DeclareOption{noprintreturnaddress}{\@printreturnaddressfalse} -\DeclareOption{pswait}{\@pswaittrue} +\DeclareOption{pswait}{\@pswaittrue\@psautotrayfalse} \DeclareOption{nopswait}{\@pswaitfalse} +\DeclareOption{psautotray}{\@psautotraytrue\@pswaitfalse} +\DeclareOption{nopsautotray}{\@psautotrayfalse} +\DeclareOption{re}{\@EL@redefine@openingtrue} +\DeclareOption{nore}{\@EL@redefine@openingfalse} \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphics}} \ExecuteOptions{businessenvelope,rotateenvelopes,centerenvelopes} \ExecuteOptions{printbarcodes,capaddress} -\ExecuteOptions{nopswait,printreturnaddress} +\ExecuteOptions{nopswait,printreturnaddress,nopsautotray,nore} \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}}{% @@ -165,8 +216,17 @@ \def\AtBeginLabels{\g@addto@macro\@beginlabelshook} \def\AtBeginLabelPage{\g@addto@macro\@beginlabelpagehook} \def\PSwait{\special{ps: clear grestore @manualfeed 0 0 bop}} +\edef\PSautotray{% + \special{ps:clear grestore + statusdict begin false setduplexmode + /manualfeed true def + \the\PSEnvelopeTray end 0 0 bop }} \if@pswait \AtBeginLabels{\PSwait}% +\else + \if@psautotray + \AtBeginLabels{\PSautotray}% + \fi \fi \newcounter{LabelCountCol} \newcounter{LabelCountRow} @@ -177,83 +237,89 @@ \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\returnaddress{\fromaddress} \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} + \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% + \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}% \newcommand{\PrintReturnAddress}[1]{% \vspace*{\FromAddressTopMargin} \null\hspace{\FromAddressLeftMargin} @@ -272,19 +338,30 @@ \newcommand{\PrintLabel}[1]{% \parbox[t][\LabelHeight]{\LabelWidth}{% \PrintAddress{#1}}} +\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}} \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}} \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} \renewcommand{\mlabel}[2]{\ignorespaces% \spaceskip 0pt\relax% @@ -307,9 +384,14 @@ \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} + \fi}% \newcount\@numreturnlabels \newcommand{\printreturnlabels}[2]{% \@numreturnlabels=#1 @@ -327,60 +409,60 @@ \newif\if@zipcodefound \long\def\@finishzipcode#1{} \long\def\@firstzipcode#1{% - \global\@zipcode{#1} - \global\@zipcodesum=#1\relax - \global\@zipcodefoundtrue + \@zipcode{#1} + \@zipcodesum=#1\relax + \@zipcodefoundtrue \@zipcodeloop} \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} \long\def\@dashzipcode#1{\@zipcodeloop} \def\@spacezipcode{% - \global\@zipcodefoundfalse - \afterassignment\@zipcodeloop\let\@temp= } + \@zipcodefoundfalse + \afterassignment\@zipcodeloop\let\EL@temp= } \long\def\@abortzipcode#1{% - \global\@zipcodefoundfalse + \@zipcodefoundfalse \@zipcodeloop} -\def\@zipcodeloop{\futurelet\@temp\@zipcodeloop@} +\def\@zipcodeloop{\futurelet\EL@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} + \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} + \EL@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 + \loop \advance \@zipcodesum by -10 \ifnum\the\@zipcodesum>0 \repeat \fi - \global\multiply\@zipcodesum by -1 + \multiply\@zipcodesum by -1 \fi} \newlength{\@barcodewidth} \newlength{\@barcodeLheight} @@ -405,17 +487,17 @@ \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} @@ -424,35 +506,112 @@ \long\def\@dotcommaaddrcap#1{% \@addrcaploop} \long\def\@newlineaddrcap#1{% - \global\@addr@cap=\expandafter{\the\@addr@cap #1} + \@addr@cap=\expandafter{\the\@addr@cap #1} \@addrcaploop} \long\def\@bgroupaddrcap#1{% - \global\@addr@cap=\expandafter{\the\@addr@cap {\MakeUppercase{#1}}} + \@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= } + \@addr@cap=\expandafter{\the\@addr@cap\hspace{0.6em}} + \afterassignment\@addrcaploop\let\EL@temp= } \def\@otheraddrcap#1{% - \global\@addr@cap=\expandafter{\the\@addr@cap% + \@addr@cap=\expandafter{\the\@addr@cap% \MakeUppercase{#1}\kern1pt\relax} \@addrcaploop} -\def\@addrcaploop{\futurelet\@temp\@addrcaploop@} +\def\@addrcaploop{\futurelet\EL@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} + \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} + \EL@tempa} \long\def\@make@capitalize#1{% - \global\@addr@cap={\relax} + \@addr@cap={\relax} \@addrcaploop#1\@endaddress \the\@addr@cap} +\let\@@mlabel=\@gobbletwo +\AtEndDocument{\let\@@mlabel=\@mlabel} +\def\suppresslabels{\if@filesw\immediate\write\@auxout{% + \string\@suppresslabels}\fi} +\def\@suppresslabels{\let\@mlabel=\@gobbletwo} +\def\resumelabels{\if@filesw\immediate\write\@auxout{% + \string\@resumelabels}\fi} +\def\@resumelabels{\let\@mlabel=\@@mlabel} +\def\suppressonelabel{\if@filesw\immediate\write\@auxout{% + \string\@suppressonelabel}\fi} +\def\@suppressonelabel{\let\@old@mlabel=\@mlabel% + \def\@mlabel{% + \let\@mlabel=\@old@mlabel% + \@gobbletwo}} +\def\printonelabel{\if@filesw\immediate\write\@auxout{% + \string\@printonelabel}\fi} +\def\@printonelabel{\let\@old@mlabel=\@mlabel% + \def\@mlabel{% + \let\@mlabel=\@old@mlabel% + \@@mlabel}} +\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} +\def\@SetEnvelope[#1]#2#3{} +\AtEndDocument{\let\@SetEnvelope=\SetEnvelope} +\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} +\def\@SetLabel#1#2#3#4#5#6#7{} +\AtEndDocument{\let\@SetLabel=\SetLabel} +\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} +\def\@SetBigLabel#1#2#3#4#5#6#7{} +\AtEndDocument{\let\@SetBigLabel=\SetBigLabel} +\if@EL@redefine@opening + \newcommand*{\re}[1]{\def\recontents{#1}}% + \def\ReName{Re: }% + \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}% +\fi \endinput -%% +%% %% End of file `envlab.sty'. |