diff options
Diffstat (limited to 'macros/plain/contrib/misc/label.tex')
-rw-r--r-- | macros/plain/contrib/misc/label.tex | 137 |
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 |