summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/misc/label.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/plain/contrib/misc/label.tex')
-rw-r--r--macros/plain/contrib/misc/label.tex137
1 files changed, 137 insertions, 0 deletions
diff --git a/macros/plain/contrib/misc/label.tex b/macros/plain/contrib/misc/label.tex
new file mode 100644
index 0000000000..7e21962e0a
--- /dev/null
+++ b/macros/plain/contrib/misc/label.tex
@@ -0,0 +1,137 @@
+%
+% Either:
+% \address 3
+%
+% then enter three addresses, blank lines between them, or
+%
+% \faddress foo.tex
+%
+% where foo.tex contains a bunch of labels, with blank lines between them.
+%
+% Make sure to use \done to exit, rather than \bye.
+%
+\hsize=8.25truein\hoffset=-0.875truein
+\vsize=11truein\voffset=-1.0truein
+\nopagenumbers\raggedbottom\offinterlineskip
+%
+\newdimen\vlsize\newdimen\hlsize
+\vlsize=1.56truein
+\hlsize=2.75truein
+%
+\font\huge=cmbx12 scaled\magstep 4
+\font\notsohuge=cmbx10 scaled\magstep3
+\font\bigtt=cmtt10 scaled 1200
+\font\lbls=cmbx10 scaled\magstephalf
+\font\hugelogo=logobf10 scaled\magstep 5
+\def\hugeMF{{\hugelogo METAFONT}}
+%
+\def\prompt{\immediate\write0{\noexpand\address\noexpand\faddress\noexpand\done}
+ \immediate\write0{<\number\labcount> Total Labels}}
+%
+\newcount\n
+\def\dotimes #1 #2{\n=#1
+ \loop
+ #2
+ \advance\n by -1
+ \ifnum\n>0\repeat}
+%
+\let\LMR=L
+\newbox\leftbox
+\newbox\midbox
+\newcount\labcount
+\labcount=0
+\def\ship#1{\if L\LMR
+ \global\setbox\leftbox=#1 \global\let\LMR=M
+ \else\if M\LMR
+ \global\setbox\midbox=#1 \global\let\LMR=R
+ \else
+ \line{\box\leftbox\hss\box\midbox\hss #1} \global\let\LMR=L
+ \fi\fi
+ \global\advance\labcount by1}
+%
+\def\emptybox{\vbox to \vlsize{\hsize=\hlsize\vfill\centerline{\strut}}}
+\def\done{\if M\LMR \ship\emptybox\ship\emptybox
+ \else\if R\LMR \ship\emptybox
+ \fi\fi\vfill\eject\end}
+%
+\def\oninterlineskip{\baselineskip=12pt\lineskip=1pt\lineskiplimit=0pt}
+%
+\newif\ifok
+\def\blankline{\par}
+\newif\ifcont
+%
+\newdimen\maxadsize
+\maxadsize=2.6truein
+\newbox\addbox
+\def\makeadd{\vbox{\oninterlineskip
+ \loop
+ \read0 to\add
+ \ifx\add\blankline
+ \global\contfalse
+ \else
+ \global\conttrue
+ \fi
+ \ifcont
+ \setbox\addbox=\hbox{\add}
+ \ifdim\maxadsize<\wd\addbox
+ \message{Line too wide!}
+ \else
+ \box\addbox
+ \fi
+ \repeat}}
+%
+\def\address #1 {\dotimes #1
+ {\ship{\vbox to \vlsize{\hsize=\hlsize
+ \oninterlineskip
+ \lbls
+ \vss\hbox to\hlsize{\hss
+ \makeadd
+ \hss}\vss}}}
+ \prompt}
+%
+\newread\filein
+\def\fakeadd{\vbox{\oninterlineskip
+ \loop
+ \read\filein to\add
+ \ifx\add\blankline
+ \global\contfalse
+ \else
+ \global\conttrue
+ \fi
+ \ifcont
+ \setbox\addbox=\hbox{\add}
+ \ifdim\maxadsize<\wd\addbox
+ \message{\add: }
+ \message{Line too wide!}
+ \else
+ \box\addbox
+ \fi
+ \repeat}}
+%
+\newif\ifstillokay
+\def\dofadds{
+ \loop
+ \ship{\vbox to \vlsize{\hsize=\hlsize
+ \oninterlineskip
+ \lbls
+ \vss\hbox to\hlsize{\hss\fakeadd\hss}
+ \vss}}
+ \ifeof\filein
+ \stillokayfalse
+ \else
+ \stillokaytrue
+ \fi
+ \ifstillokay
+ \repeat
+ \closein\filein}
+%
+\def\faddress #1 {
+ \openin\filein=#1
+ \ifeof\filein
+ \message{#1: File not found}
+ \else
+ \dofadds
+ \fi
+ \prompt}
+%
+\prompt