summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/envlab/elguide.dvibin43040 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/envlab/elguide.pdfbin0 -> 197107 bytes
-rw-r--r--Master/texmf-dist/doc/latex/envlab/elguide.tex422
-rw-r--r--Master/texmf-dist/doc/latex/envlab/envlab.dvibin63652 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/envlab/envlab.pdfbin0 -> 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.drv32
-rw-r--r--Master/texmf-dist/source/latex/envlab/envlab.dtx1177
-rw-r--r--Master/texmf-dist/source/latex/envlab/envlab.ins12
-rw-r--r--Master/texmf-dist/tex/latex/envlab/envlab.cfg25
-rw-r--r--Master/texmf-dist/tex/latex/envlab/envlab.sty485
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
deleted file mode 100644
index faf0e8d36ad..00000000000
--- a/Master/texmf-dist/doc/latex/envlab/elguide.dvi
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/envlab/elguide.pdf b/Master/texmf-dist/doc/latex/envlab/elguide.pdf
new file mode 100644
index 00000000000..3c4a74fd8ae
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/envlab/elguide.pdf
Binary files differ
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
deleted file mode 100644
index fa8e5d5f689..00000000000
--- a/Master/texmf-dist/doc/latex/envlab/envlab.dvi
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/envlab/envlab.pdf b/Master/texmf-dist/doc/latex/envlab/envlab.pdf
new file mode 100644
index 00000000000..40740bed374
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/envlab/envlab.pdf
Binary files differ
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'.