\documentclass[12pt]{amsart}

%%%%%     MARGINS     %%%%%

\setlength{\columnsep}{50pt}
\setlength{\voffset}{-50pt}
\setlength{\textheight}{650pt}
\setlength{\hoffset}{-50pt}
\setlength{\textwidth}{465pt}
\newlength{\oldparindent}
\setlength{\oldparindent}{\parindent}
\setlength{\parindent}{0pt}
\setlength{\parskip}{\baselineskip}

%%%%%     COUNTERS     %%%%%

\newcounter{Object}
\newcounter{SubObject}

%%%%%     DEFINITIONS     %%%%%

\def\ex{\addtocounter{Object}{1}%
         {\bf Example \theObject:}
         \setcounter{SubObject}{0}}

\def\exlabeljane{%
{ }
\parbox{87pt}{\text{ }\\
Jane Smith\\
321 Main Street\\
City, State  54321}
{ }}

\def\exlabeljohn{%
{ }
\parbox{87pt}{\text{ }\\
John Smith\\
123 Main Street\\
City, State 12345}
{ }}

\def\janecode{%
Jane Smith\(\backslash\)\(\backslash\)%
321 Main Street\(\backslash\)\(\backslash\)%
City, State 54321}

\def\johncode{%
John Smith\(\backslash\)\(\backslash\)%
123 Main Street\(\backslash\)\(\backslash\)%
City, State 12345}

\def\note{\addtocounter{Object}{1}%
         {\bf Note \theObject:}
         \setcounter{SubObject}{0}}

\def\subobject{\addtocounter{SubObject}{1}%
               $\boldsymbol{(\roman{SubObject})}$ }

\def\tip{\addtocounter{Object}{1}%
         {\bf Tip \theObject:}
         \setcounter{SubObject}{0}}

\def\trick{\addtocounter{Object}{1}%
         {\bf Trick \theObject:}
         \setcounter{SubObject}{0}}

\begin{document}

\begin{center}

{\bf Latex Package jlabels}

Jamal K. Tartir

jktartir@hotmail.com

\end{center}

\vspace{15pt}

\begin{center}

A latex package designed to make letter-sized pages of labels.

\end{center}

\vspace{15pt}

\begin{center}

{\bf Section I: Getting Started}

\end{center}

\note
This package has been tested with only the amsart documentclass.

The following six commands have been defined.

\(\backslash\)beginjlabels[opfs]

\(\backslash\)endjlabels

\(\backslash\)jlabelt[opint]\{address\}

\(\backslash\)myjlabel\{alias\}\{address\}

\(\backslash\)jlabel[opint]\{alias\}

\(\backslash\)jlabelLengths[oplu]%
\{leftm\}%
\{topm\}%
\{width\}%
\{height\}%
\{rows\}%
\{cols\}%
\{hgap\}%
\{vgap\}

\note
The following command
must be placed in the preamble.

\(\backslash\)jlabelLengths[oplu]%
\{leftm\}%
\{topm\}%
\{width\}%
\{height\}%
\{rows\}%
\{cols\}%
\{hgap\}%
\{vgap\}

Definitions and explanations of the arguments are given below.

oplu: optional length unit (e.g., 1in, 2cm, 3pt, etc.)

The default value for oplu is 1in.

The required arguments leftm, \(\ldots,\) vgap
must be numbers only
(no units are entered).
Negative numbers are permitted.

leftm: left margin

topm: top margin

width: label width

height: label height

rows: number of rows

cols: number of columns

hgap: horizontal gap (space between columns)

vgap: vertical gap (space between rows)

\ex
The following commands are equivalent.

\(\backslash\)jlabelLengths[1in]%
\{.1875\}\{.5\}\{2.625\}\{1\}\{10\}\{3\}\{.125\}\{0\}

\(\backslash\)jlabelLengths%
\{.1875\}\{.5\}\{2.625\}\{1\}\{10\}\{3\}\{.125\}\{0\}

\(\backslash\)jlabelLengths[72.27pt]%
\{.1875\}\{.5\}\{2.625\}\{1\}\{10\}\{3\}\{.125\}\{0\}

\note
The
\(\backslash\)jlabelLengths
command
sets the page layout as necessary.
Length commands
such as
\(\backslash\)hoffset,
\(\backslash\)voffset,
\(\backslash\)textwidth,
\(\backslash\)textheight,
etc.
should not be used.

\tip
As a way of keeping notes,
several \(\backslash\)jlabelLengths
commands can be put in the preamble with
the unused ones commented out.

\note
Labels are created by placing
\(\backslash\)jlabelt[opint]\{Address\}
commands
between\linebreak
\(\backslash\)beginjlabels[opfs]
and
\(\backslash\)endjlabels
within the body of the document.

The optional argument of the
\(\backslash\)beginjlabels
command determines whether the page is filled by
columns (opfs = c) or rows (opfs = r).
The default value is c.

The optional argument
of the \(\backslash\)jlabelt command
is the number of times the label is printed
and its default value is 1.

\ex
The following sequence of commands placed in the body
of the document
produces the label
\exlabeljohn
three times and the label
\exlabeljane
once. 

\enlargethispage{\baselineskip}

\(\backslash\)beginjlabels

\(\backslash\)jlabelt[3]\{\johncode\}

\(\backslash\)jlabelt\{\janecode\}

\(\backslash\)endjlabels

\note
The command
\(\backslash\)jlabelt\{\} creates a blank label.

\ex
The command
\(\backslash\)jlabelt[4]\{\} creates 4 blank labels.

\note
The \(\backslash\)jlabelt command will create new pages as necessary.

\note
The command
\(\backslash\)myjlabel\{alias\}\{address\}
allows
\(\backslash\)jlabel[opint]\{alias\}
to be used in place of
\(\backslash\)jlabelt[opint]\{address\}.

\note
The \(\backslash\)myjlabel command
should be placed in the preamble (or personal sty file),
not within the document environment.

\ex
The command shown below
allows
\(\backslash\)jlabel[3]\{home\}
to be used in place of
\(\backslash\)jlabelt[3]\{\johncode\}.

\(\backslash\)myjlabel\{home\}\{\johncode\}

\begin{center}

{\bf Section II: Adjusting Labels}

\end{center}

\note
By default, the labels are left justified.  This can
be changed by changing the definition of
\(\backslash\)jlabeljustify from l to r or c.

\ex
To right justify [center] the labels,
place the command
\(\backslash\)def\(\backslash\)jlabeljustify\{r\}
[\(\backslash\)def\(\backslash\)jlabeljustify\{c\}]
at the appropriate place in the document.

\note
By default, the text of the label is placed in the
center of the label.
Changing the values of
leftm and topm (negative values are allowed)
in the \(\backslash\)jlabelLengths command will shift
all labels in the document.

\note
The text of an individual label can be shifted by
placing the text in the tabular environment and then
using the 
\(\backslash\)hspace* and
\(\backslash\)raisebox commands.

\ex
The command shown below will
move the label
\exlabeljohn
right 2 inches and down 1 inch.

\(\backslash\)jlabelt\{\%\\
\(\backslash\)hspace*\{4in\}\%\\
\(\backslash\)raisebox\{-2in\}\{\%\\
\(\backslash\)begin\{tabular\}\{\(\backslash\)jlabeljustify\}\\
\johncode\\
\(\backslash\)end\{tabular\}\}\}

\note
The lengths used in the
\(\backslash\)hspace* and
\(\backslash\)raisebox commands are twice the
amount that the text will actually move.  This is
because the jlabels package centers the text in the
middle of the label.

\trick
An easy way to shift the text of a label left is to put an
\(\backslash\)hspace* command at the end of the longest line.

\ex
The command shown below will move the label \exlabeljohn left 1 inch.

\(\backslash\)jlabelt\{\johncode\(\backslash\)hspace*\{2in\}\}

\tip
Adjust individual labels as little as possible.  The
tediousness of this task is one of the reasons that this
package was written.

\end{document}
