home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 3
/
Meeting_Pearls_III.iso
/
Pearls
/
texmf
/
inputs
/
misc
/
nice.tex
(
.txt
)
< prev
next >
Wrap
LaTeX Document
|
1991-01-15
|
19KB
|
457 lines
% NICE Version 2 macro package for plain TeX
% written by
% Christian Rank
% Br\"augasse 13/225
% D-8390 Passau
% E-Mail: rank@unipas.fmi.uni-passau.de
% (please don't e-mail from outside Germany!)
% THIS MACRO PACKAGE MAY BE COPIED AND USED FREELY ONLY IN THIS ORIGINAL STATE
% WITHOUT ANY CHANGES.
% TO PRESERVE COMPATIBILITY, PLEASE DO NOT MODIFY THIS FILE UNDER ANY
% CIRCUMSTANCES. YOU CAN CUSTOMIZE THE NICE PACKAGE FOR YOUR NEEDS VIA AN
% AUXILIARY FILE WHICH READS IN NICE.TEX AND THEN CHANGES PARAMETERS
% AND/OR DEFINES ADDITIONAL COMMANDS.
% we check first if NICE has already been read, in which case we do not need
% to define the NICE macros again.
\expandafter\ifx\csname niceversion\endcsname \relax \else \endinput \fi
% NICE hasn't already been read, so we continue
\def\niceversion{2.0}
\def\versionof {17/09/90}
\immediate\write16 {NICE version \niceversion, (c) 1990 by C. Rank}
\everyjob {\immediate\write16 {NICE version \niceversion \space of \versionof}}
\catcode`\@=11 % for definition of private macros
% adjustment of general parameters
\vsize 9.2truein \hsize 6.5truein % page layout
\baselineskip=12pt \lineskiplimit=0pt \lineskip=0pt
\smallskipamount=6pt plus 1pt minus 1pt
\medskipamount=12pt plus 2pt minus 2pt
\bigskipamount=18pt plus 3pt minus 3pt
\parskip=6pt plus 1pt minus 1pt
\parindent=0pt
\tolerance=10000
\hbadness=5000
% the fonts used
\font\documenttitlefont=cmr10 scaled \magstep4
\font\sectiontitlefont=cmbx10 scaled \magstep2
\font\subsectiontitlefont=cmbx10 scaled \magstep1
\font\subsubsectiontitlefont=cmbx10 scaled \magstephalf
% fonts used for variable size styles
\font\ninerm=cmr9 \font\eightrm=cmr8 \font\sixrm=cmr6
\font\ninei=cmmi9 \font\eighti=cmmi8 \font\sixi=cmmi6
\font\ninesy=cmsy9 \font\eightsy=cmsy8 \font\sixsy=cmsy6
\font\ninebf=cmbx9 \font\eightbf=cmbx8 \font\sixbf=cmbx6
\font\ninesl=cmsl9 \font\eightsl=cmsl8
\font\ninett=cmtt9 \font\eighttt=cmtt8
\font\nineit=cmti9 \font\eightit=cmti8 \font\sevenit=cmti7
% the variable size styles
\def\ninept{\textfont0=\ninerm \scriptfont0=\sevenrm
\scriptscriptfont0=\fiverm
\def\rm{\fam0 \ninerm}
\textfont1=\ninei \scriptfont1=\seveni \scriptscriptfont1=\fivei
\def\oldstyle{\fam1 \ninei}
\textfont2=\ninesy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
\textfont\itfam=\nineit \def\it{\fam\itfam \nineit}
\textfont\slfam=\ninesl \def\sl{\fam\slfam \ninesl}
\textfont\bffam=\ninebf \scriptfont\bffam=\sevenbf
\scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam \ninebf}
\textfont\ttfam=\ninett \def\tt{\fam\ttfam \ninett}
\baselineskip=11pt
\rm
\def\eightpt{\textfont0=\eightrm \scriptfont0=\sixrm
\scriptscriptfont0=\fiverm
\def\rm{\fam0 \eightrm}
\textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei
\def\oldstyle{\fam1 \eighti}
\textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy
\textfont\itfam=\eightit \def\it{\fam\itfam \eightit}
\textfont\slfam=\eightsl \def\sl{\fam\slfam \eightsl}
\textfont\bffam=\eightbf \scriptfont\bffam=\sixbf
\scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam \eightbf}
\textfont\ttfam=\eighttt \def\tt{\fam\ttfam \eighttt}
\baselineskip=10pt
\rm
\def\sevenpt{\textfont0=\sevenrm \scriptfont0=\sixrm
\scriptscriptfont0=\fiverm
\def\rm{\fam0 \sevenrm}
\textfont1=\seveni \scriptfont1=\sixi \scriptscriptfont1=\fivei
\def\oldstyle{\fam1 \seveni}
\textfont2=\sevensy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy
\textfont\itfam=\sevenit \def\it{\fam\itfam \sevenit}
\textfont\slfam=\eightsl \def\sl{\fam\slfam \eightsl}
\textfont\bffam=\sevenbf \scriptfont\bffam=\sixbf
\scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam \sevenbf}
\textfont\ttfam=\eighttt \def\tt{\fam\ttfam \eighttt}
\baselineskip=9pt
\rm
\def\sixpt{\textfont0=\sixrm \scriptfont0=\fiverm
\scriptscriptfont0=\fiverm
\def\rm{\fam0 \sixrm}
\textfont1=\sixi \scriptfont1=\fivei \scriptscriptfont1=\fivei
\def\oldstyle{\fam1 \sixi}
\textfont2=\sixsy \scriptfont2=\fivesy \scriptscriptfont2=\fivesy
\textfont\itfam=\sevenit \def\it{\fam\itfam \sevenit}
\textfont\slfam=\eightsl \def\sl{\fam\slfam \eightsl}
\textfont\bffam=\sixbf \scriptfont\bffam=\fivebf
\scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam \sixbf}
\textfont\ttfam=\eighttt \def\tt{\fam\ttfam \eighttt}
\baselineskip=8pt
\rm
\def\fivept{\textfont0=\fiverm \scriptfont0=\fiverm
\scriptscriptfont0=\fiverm
\def\rm{\fam0 \fiverm}
\textfont1=\fivei \scriptfont1=\fivei \scriptscriptfont1=\fivei
\def\oldstyle{\fam1 \fivei}
\textfont2=\fivesy \scriptfont2=\fivesy \scriptscriptfont2=\fivesy
\textfont\itfam=\sevenit \def\it{\fam\itfam \sevenit}
\textfont\slfam=\eightsl \def\sl{\fam\slfam \eightsl}
\textfont\bffam=\fivebf \scriptfont\bffam=\fivebf
\scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam \fivebf}
\textfont\ttfam=\eighttt \def\tt{\fam\ttfam \eighttt}
\baselineskip=7pt
\rm
% this stuff defines a macro `include', which has the same effect as plain
% TeX's `input', except that it is no error if the file does not exist.
\newread\testinclude
\def\include#1{\immediate\openin\testinclude #1
\ifeof\testinclude \immediate\write16 {No file #1.}
\else \immediate\closein\testinclude \input #1
\fi}
% general utilities
\def\newpage{\vfill\eject}
\def\\{$\backslash$}
\def\raggedcenter{\leftskip=0pt plus 4em \rightskip=\leftskip
\parfillskip=0pt \spaceskip=.3333em \xspaceskip=.5em
\pretolerance=9999 \tolerance=9999 \hbadness=10000
\hyphenpenalty=9999 \exhyphenpenalty=9999}
\def\parwithoutskip{{\parskip=0pt plus 0.5pt\par\noindent}\ignorespaces}
\newdimen\narrowskip \narrowskip=20pt
\def\lnarrower{\advance\leftskip by \narrowskip}
\let\onarrower=\narrower
\def\narrower{\advance\leftskip by \narrowskip
\advance\rightskip by \narrowskip}
\def\tw@num#1{\ifnum#1>9 #1\else 0#1\fi}
\def\date{\tw@num{\the\day}/\tw@num{\the\month}/\the\year}
\def\ifndef#1{\expandafter\ifx\csname#1\endcsname\relax}
% title and section layout
\long\def\title#1{{\raggedcenter \documenttitlefont #1 \par}}
\def\titlepage{\begingroup
\def\title##1{{\raggedcenter \documenttitlefont ##1 \par}\medskip}
\long\def\author##1{{\parskip=0pt \raggedcenter \rm ##1 \par}}
\def\release##1{\centerline{\bf ##1}}
\def\abstract{\centerline{\bf Abstract}\narrowskip=3truecm \narrower}
\def\endtitlepage{\vfil\egroup \newpage \endgroup}
\vbox to \vsize \bgroup \vfil}
\newcount\sectionno \sectionno=0
\newcount\subsectionno
\newcount\subsubsectionno
\newtoks\sectionnscheme
\sectionnscheme={\gensect. }
\newtoks\subsectionnscheme
\subsectionnscheme={\gensect.\number\subsectionno. }
\newtoks\subsubsectionnscheme
\subsubsectionnscheme={\gensect.\number\subsectionno
.\number\subsubsectionno. }
\def\genheading#1#2#3{\vskip\parskip \vbox{
\setbox0 \hbox{#1#2} \hangindent=\the\wd0 \hangafter=1
\noindent \raggedright \pretolerance=10000 \box0 #1#3\par}}
\def\gensect{\ifnum \sectionno<0 \char\number-\sectionno
\else \number\sectionno\fi}
\def\plainsection#1{\removelastskip
\bigskip
\genheading{\sectiontitlefont}{}{#1}
\ifnum\contentslevel>0
{\let\the=0 \edef\next{\write\fcontents
{\vskip\contskip \hbox to \hsize
{\scstyle \hskip\the\scindent #1 \the\contfill\
\the\pageno}}}\next}
\immediate\write16 {#1}
\fi
\ifnum\marklevel>0 \mark {#1} \fi
\nobreak}
\def\section#1{\removelastskip
\bigskip
\ifnum \sectionno<-1 \global\advance\sectionno by -1
\else \global\advance\sectionno by 1
\fi
\global\subsectionno=0
\genheading{\sectiontitlefont}{\the\sectionnscheme}{#1}
{\edef\nscheme{\the\sectionnscheme}
\ifnum\contentslevel>0
{\let\the=0 \edef\next{\write\fcontents
{\vskip\contskip \hbox to \hsize
{\scstyle \hskip\the\scindent \nscheme #1 \the\contfill\
\the\pageno}}}\next}
\immediate\write16 {\nscheme #1}
\fi
\ifnum\marklevel>0 \mark {\nscheme #1} \fi
}
\nobreak}
\def\subsection#1{\removelastskip
\smallskip
\global\advance\subsectionno by 1 \global\subsubsectionno=0
\genheading{\subsectiontitlefont}{\the\subsectionnscheme}{#1}
{\edef\nscheme{\the\subsectionnscheme}
\ifnum\contentslevel>1
{\let\the=0 \edef\next{\write\fcontents
{\hbox to \hsize
{\sscstyle \hskip\the\sscindent \nscheme #1 \the\contfill\
\the\pageno}}}\next}
\immediate\write16 {\nscheme #1}
\fi
\ifnum\marklevel>1 \mark {\nscheme #1} \fi
}
\nobreak}
\def\subsubsection#1{
\par
\global\advance\subsubsectionno by 1
\genheading{\subsubsectiontitlefont}{\the\subsubsectionnscheme}{#1}
{\edef\nscheme{\the\subsubsectionnscheme}
\ifnum\contentslevel>2
{\let\the=0 \edef\next{\write\fcontents
{\hbox to \hsize
{\ssscstyle \hskip\the\ssscindent \nscheme #1 \the\contfill\
\the\pageno}}}\next}
\immediate\write16 {\nscheme #1}
\fi
\ifnum\marklevel>2 \mark {\nscheme #1} \fi
}
\nobreak}
\def\appendix{\global\sectionno=-64\relax}
% macros for making a table of contents
\newtoks\contfill
\contfill={\hfil}
\newskip\contskip \contskip=0pt % additional skip between section headings
% in contents table
\newcount\contentslevel \contentslevel=0
\newwrite\fcontents
\def\makevoidcontents{
\openout\fcontents \jobname.toc
\ifnum\contentslevel=0 \global\contentslevel=1 \fi
\immediate\write16 {Writing contents on \jobname.toc.}
}
\def\makecontents{
\catcode`\@=11
\include {\jobname.toc}
\catcode`@=12
\makevoidcontents
}
\newdimen\scindent
\newdimen\sscindent
\newdimen\ssscindent % please forgive me;
% i know it's a horrible abbreviation
\scindent=0pt
\sscindent=12pt
\ssscindent=32pt
\let\scstyle=\rm
\let\sscstyle=\rm
\let\ssscstyle=\rm % please forgive me once again ...
% footnotes
\let\ovfootnote=\vfootnote
\newdimen\footnoteindent
\footnoteindent=20pt
\def\vfootnote#1{\insert\footins\bgroup
\parindent=\footnoteindent % change
\ifndef{footnotestyle} \baselineskip=\fbaselineskip \footfont
\else \footnotestyle \fi
\interlinepenalty\interfootnotelinepenalty
\splittopskip\ht\strutbox % top baseline for broken footnotes
\splitmaxdepth\dp\strutbox \floatingpenalty\@MM
\leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
\def\par{\endgraf \hangindent=\footnoteindent \hangafter=1}
\hangindent=\footnoteindent \hangafter=1
\textindent{#1}\footstrut\futurelet\next\fo@t}
\let\plainfootnote=\footnote
\newcount\footno \footno=0
\newskip\fbaselineskip \fbaselineskip=\baselineskip
\font\footfont=cmr10
\def\footnote{\global\advance\footno by 1
\plainfootnote{\hbox{$^{\the\footno}$}}
}
\long\def\f@t#1{#1\@foot} % enable \par in footnotes
% defs for staggered layout
\newbox\staggbox
\def\staggered#1{\begingroup
\setbox\staggbox \hbox {#1}
\edef\key##1{\par \hangindent=\the\wd\staggbox \hangafter=1
\noindent \hbox to \the\wd\staggbox {##1\hfil}\ignorespaces}
\def\endstaggered{\endgraf \endgroup}
\skip0=\hangindent
\parskip=0pt plus 0.5pt \vskip\parskip
\advance \leftskip by \skip0
\def\par{\endgraf \hangindent=\the\wd\staggbox \hangafter=0}
}
\def\itemlist#1{\begingroup
\setbox\staggbox \hbox {#1}
\edef\next{\par \hangindent=\the\wd\staggbox \hangafter=1
\noindent \hbox{#1}\ignorespaces}
\def\enditemlist{\endgraf \endgroup}
\skip0=\hangindent
\parskip=0pt plus 0.5pt \vskip\parskip
\advance \leftskip by \skip0
\def\par{\endgraf \hangindent=\the\wd\staggbox \hangafter=0}
}
\newcount\itemno
\def\numbered#1{\ifcase #1 \staggered {0. } \or \staggered {0. } \or
\staggered {00. } \or \staggered {000. } \fi
\itemno=0
\def\next{\advance \itemno by 1 \key {\hfill \the\itemno. }}
\def\endnumbered{\endstaggered}
}
\def\alphanumbered{\staggered {m) }
\itemno=96
\def\next{\advance \itemno by 1 \key {\char\itemno ) }}
\def\endalphanumbered{\endstaggered}
}
\def\pnumbered{\staggered{(0) }
\itemno=0
\def\next{\advance \itemno by 1 \key {(\the\itemno)}}
\def\endpnumbered{\endstaggered}
}
\def\prnumbered{\staggered{(iii) }
\itemno=0
\def\next{\advance \itemno by 1 \key {(\romannumeral\itemno)}}
\def\endprnumbered{\endstaggered}
}
% the style for headlines and footlines
\newcount\marklevel \marklevel=1
\newdimen\hdrulepos \hdrulepos=-2pt
\def\hdrule{\kern\hdrulepos \hrule}
\def\book{
\headline={\ifnum\pageno>1\vbox
{\line{\strut \ifodd\pageno \tenit\firstmark\hfil\tenbf\folio
\else \tenbf\folio\hfil\tenit\firstmark \fi}\hdrule}\else
\hfil \fi}
\footline={\hfil}
\def\article{
\headline={\ifnum\pageno>1\vbox
{\line{\strut \tenit\firstmark\hfil\tenbf\folio}\hdrule}\else
\hfil \fi}
\footline={\hfil}
% macros for verbatim mode
\font\verbatimfont=cmtt10
\newskip\vbaselineskip
\vbaselineskip=\baselineskip
\let\d@specials=\dospecials
\def\uncatcodespecials{\def\do##1{\catcode`##1=12}\dospecials}
\def\beginverbatim{\par\begingroup \let\oldpar=\par
\ifndef{verbatimstyle} \baselineskip=\vbaselineskip \verbatimfont
\else \verbatimstyle\tt \fi
\noindent\parskip=0pt
\catcode`|=12
\setupverbatim \doverbatim}
{\catcode`\|=0 \catcode`\\=12
|obeylines|gdef|doverbatim^^M#1\endverbatim{#1|endgroup}}
\def\setupverbatim{\def\par{\leavevmode\oldpar}\catcode`\`=\active
\obeylines \uncatcodespecials \obeyspaces}
{\obeyspaces\global\let =\ }
{\catcode`\`=\active \gdef`{\relax\lq}}
% macros for verbatim mode inside paragraph
\def\spvert{\ifmmode\def\n@xt{|}\else\let\n@xt=\txver\fi\n@xt}
\catcode`\|=\active \let |=\spvert
{\obeylines\gdef\txver{\begingroup\tt\setupverbatim\let^^M=\ \let|=\endgroup}}
% this defines the environment for \usemathsymbols
{\catcode`|=12
\global\let\nice@mvert=|
\let\nice@mlt=<
\let\nice@mgt=>
\let\nice@mlbr=\{
\let\nice@mrbr=\}
\def\{{\ifmmode \nice@mlbr \else $\nice@mlbr$\fi}
\def\}{\ifmmode \nice@mrbr \else $\nice@mrbr$\fi}
\catcode`\|=\active
\catcode`\<=\active
\catcode`\>=\active
\gdef\usemathsymbols{
\catcode`\|=\active
\catcode`\<=\active
\catcode`\>=\active
\def|{\ifmmode \nice@mvert \else $\nice@mvert$\fi}
\def<{\ifmmode \nice@mlt \else $\nice@mlt$\fi}
\def>{\ifmmode \nice@mgt \else $\nice@mgt$\fi}
\let\d@@specials=\dospecials
\def\dospecials{\d@@specials \do \< \do \>}
% cross references
\newwrite\frefs
\def\userefs{
\catcode`\@=11
\include {\jobname.crf}
\catcode`@=12
\openout\frefs \jobname.crf
\immediate\write16 {Writing references on \jobname.crf.}
}
{\catcode`\|=0 \catcode`\\=12
|gdef|escapeit{\}
\def\label#1{{\let\the=0\edef\next{\write\frefs
{\def\noexpand\escapeit rs@#1{\number\sectionno
\ifnum\subsectionno=0 \else
.\number\subsectionno
\ifnum\subsubsectionno=0 \else
.\number\subsubsectionno
\fi\fi}}}\next
\edef\next{\write\frefs
{\def\noexpand\escapeit rp@#1{\the\pageno}}}\next
}}
\def\sref#1{{\catcode`\@=11 \toks0=\expandafter{\csname rs@#1\endcsname}\relax
\expandafter\ifx\the\toks0\relax
[`#1']\write16{Label `#1' undefined on page \the\pageno.}\else
\the\toks0 \fi
}}
\def\pref#1{{\catcode`\@=11 \toks0=\expandafter{\csname rp@#1\endcsname}\relax
\expandafter\ifx\the\toks0\relax
[`#1']\write16{Label `#1' undefined on page \the\pageno.}\else
\the\toks0 \fi
}}
% automatic numbering of figures
\newcount\figureno \figureno=0
\def\figure#1#2{\global\advance\figureno by 1 \centerline {\bf Fig.\
\the\figureno: #2}{\let\the=0\edef\next{\write\frefs
{\def\noexpand\escapeit rf@#1{\number\figureno}}}\next
}}
\def\fref#1{{\catcode`\@=11 \toks0=\expandafter{\csname rf@#1\endcsname}\relax
\expandafter\ifx\the\toks0\relax
[`#1']\write16{Figure `#1' undefined on page \the\pageno.}\else
\the\toks0 \fi
}}
% \program macro for the comfortable typing of program texts
\newdimen\pindent \pindent=0pt
\newdimen\ppindent
\newif\ifinb@x \inb@xfalse
{\let\+=\undefined
\gdef\program{\begingroup
\def\bb@x{\setbox0=\hbox\bgroup\inb@xtrue\ignorespaces}
\def\cr{\egroup \hbox {\hskip\leftskip \hskip\ppindent
\unhbox1 \unhbox0}
\ppindent=\pindent
\bb@x}
\def\+{\egroup \begingroup
\def\endprogram{\errmessage{\noexpand\- inserted}
\ifinb@x \egroup \fi \endgroup \endprogram}
\advance \pindent by \wd0
\setbox1=\hbox{\unhbox1 \unhbox0}
\bb@x}
\def\-{\egroup \endgroup \ppindent=\pindent
\bb@x}
\def\noalign##1{\egroup ##1\bb@x}
\def\endprogram{\ifinb@x \egroup \fi \endgroup}
\setbox1=\null
\ppindent=\pindent
\futurelet\next\pr@gram}
\def\pr@gram{\ifx\next\obeylines \let\par=\cr
\let\next=\pr@gr@m \obeylines \else \let\next=\relax \fi
\bb@x\next}
\def\pr@gr@m{\let\next=}
% macros for making framed boxes
\long\def\gbox#1#2#3#4{\vbox{\hrule height#1 \hbox
{\vrule width#1\kern#3\vbox{
\kern#2 #4\ifhmode \par \fi \kern#2}\kern#3\vrule width#1}
\hrule height#1}
\newdimen\boxedkern \boxedkern=12pt
\newdimen\rulethickness \rulethickness=0.4pt
\long\def\boxed#1{\gbox\rulethickness\boxedkern\boxedkern{
\advance\hsize by -\rulethickness
\advance\hsize by -\rulethickness
\advance\hsize by -\boxedkern
\advance\hsize by -\boxedkern
{\parskip=0pt \noindent}\ignorespaces #1}}
\catcode`@=12 % disable use of private macros