summaryrefslogtreecommitdiff
path: root/report/pyp_clustering/acl09-short/common/jeffe.sty
diff options
context:
space:
mode:
authorredpony <redpony@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-07-27 16:13:19 +0000
committerredpony <redpony@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-07-27 16:13:19 +0000
commitfd519b0e45c857b266814994ba8c1421f508e522 (patch)
tree6d50c9b954e3c13e9df627c1ecc25c53544a5f58 /report/pyp_clustering/acl09-short/common/jeffe.sty
parent4c5df460c9da5c935438850ef7993463a9113286 (diff)
preso
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@435 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'report/pyp_clustering/acl09-short/common/jeffe.sty')
-rw-r--r--report/pyp_clustering/acl09-short/common/jeffe.sty566
1 files changed, 566 insertions, 0 deletions
diff --git a/report/pyp_clustering/acl09-short/common/jeffe.sty b/report/pyp_clustering/acl09-short/common/jeffe.sty
new file mode 100644
index 00000000..d2cd2e99
--- /dev/null
+++ b/report/pyp_clustering/acl09-short/common/jeffe.sty
@@ -0,0 +1,566 @@
+% ============================-*- LaTeX -*-=============================
+%
+% jeffe.sty -- macros I use everywhere
+%
+% Jeff Erickson (jeffe@cs.uiuc.edu)
+% Last modified 09 Jul 2000
+% This is free; caveat emptor!
+%
+% Requirements that may not be part of every TeX distribution:
+% (1) The standard AMS math packages amsmath and amssymb. These are
+% absolutely vital to anyone who typesets mathematics of any
+% kind. If you don't have them, get them NOW!!
+% (2) The textcomp package. Cosmetic only.
+% (3) Knuth's manual font `manfnt'. Cosmetic only.
+%
+% ======================================================================
+\RequirePackage{latexsym,amsmath,amssymb}
+
+\hyphenation{co-or-din-ate co-or-din-ates half-space stereo-iso-mers
+stereo-iso-mer Round-table}
+
+% ----------------------------------------------------------------------
+% Common abbreviations and words with accents
+% ----------------------------------------------------------------------
+
+% ---- LATIN ----
+\def\etal{\emph{et~al.}}
+\def\ie{\emph{i.e.}}
+\def\eg{\emph{e.g.}}
+\def\vitae{vit\ae{}}
+\def\apriori{\emph{a~priori}}
+\def\aposteriori{\emph{a~posteriori}}
+
+% ---- FRENCH ----
+\def\naive{na\"{\i}ve}
+\def\Naive{Na\"{\i}ve}
+\def\naively{na\"{\i}vely} % Okay, I know, this isn't French.
+\def\Naively{Na\"{\i}vely}
+\def\cafe{caf\'e}
+
+% ---- GERMAN ----
+\def\fur{f\"ur}
+\def\Universitat{Universit\"at}
+\def\Saarbrucken{Saar\-br\"ucken} % Bypass TeX hyphenation
+\def\Zurich{Z\"urich}
+
+% ---- PORTUGESE (Hi Jorge!) ----
+\def\Computacao{Computa\c{c}\~ao}
+
+% ---- PROPER NAMES (because I'm lazy) ----
+\def\Benes{Bene\v{s}} % ...network
+\def\Bezier{B\'ezier} % ...spline/curve/surface
+\def\Bjorner{Bj\"orner}
+\def\Bochis{Bochi\c{s}} % Daciana
+\def\Boruvka{Bor\.uvka} % ...'s MST algorithm
+\def\Bragger{Br\"agger}
+\def\Bronnimann{Br\"onnimann} \def\Herve{Herv\'e}
+\def\Bruckner{Br\"uckner}
+\def\Caratheodory{Carath\'eodory} % Constantin
+\def\Chvatal{Chv\'atal} \def\Vasek{Va\v{s}ek}
+ \def\Joao{Jo\~ao} % Compa
+\def\Cortes{Cort\'es} % Carmen
+\def\Dujmovic{Dujmovi\'c} % Vida
+ \def\Fredo{Fr\'edo} % Durand
+\def\Erdos{Erd\H{o}s} \def\Pal{P\'al}
+\def\Furedi{F\"uredi} \def\Zoltan{Zolt\'an}
+\def\Grobner{Gr\"obner} % ... basis
+\def\Grunbaum{Gr\"unbaum} % Branko
+\def\Hanoi{Hano\"\i} % Tower of...
+\def\Jarnik{Jarn\a'{\i}k} % ...'s (`Prim's') MST algorithm
+\def\Komlos{Koml\'os}
+\def\Kovari{K\"ov\'ari}
+\def\Lovasz{Lov\'asz} \def\Laszlo{L\'aszl\'o}
+\def\Matousek{Matou\v{s}ek} \def\Jiri{Ji\v{r}\'\i}
+\def\Mnev{Mn\"ev}
+\def\Mobius{M\"obius} % ... strip/transformation/function
+\def\Mucke{M\"ucke} % Ernst
+\def\ODunliang{\'O'D\'unliang}
+\def\Oleinik{Ole\u{\i}nik}
+ \def\Janos{J\'anos} % Pach
+\def\Palasti{Pal\'asti}
+ \def\Belen{Bel\'en} % Palop
+\def\Petrovskii{Petrovski\u{\i}}
+\def\Pinar{P\i nar} % Ali
+\def\Plucker{Pl\"ucker} % ... coordinates
+\def\Poincare{Poincar\'e} % ... duality/halfplane
+ \def\Gunter{G\"unter} % Rote, Ziegler
+\def\Sacristan{Sacrist\'an} % Vera
+\def\Saskin{\v{S}a\v{s}kin}
+\def\Schomer{Sch\"omer}
+\def\Schonhardt{Sch\"onhardt} % ... polyhedron
+\def\Sos{S\'os}
+\def\Stackel{St\"ackel} % Paul
+\def\Szekely{Sz\'ekely}
+\def\Szemeredi{Szemer\'edi}
+\def\Toth{T\'{o}th} % Geza
+\def\Turan{Tur\'an}
+\def\Ungor{\"Ung\"or} % Alper
+\def\Voronoi{Vorono\"i} % ... diagram [for francophile pedants only]
+
+% Other
+\def\Cplusplus{C\raisebox{0.5ex}{\tiny\bf++}}
+
+% ----------------------------------------------------------------------
+% Simple math stuff
+% ----------------------------------------------------------------------
+
+% ---- SYMBOLS ----
+\let\e\varepsilon % a ``real'' epsilon
+
+\def\Integer{\mathsf{Z\hspace{-0.4em}Z}}
+\def\Natural{\mathrm{I\!N}}
+\def\Real{\mathrm{I\!R}}
+\def\Proj{\mathrm{I\!P}} % projective space
+\def\Hyper{\mathrm{I\!H}} % hyperbolic space
+
+%
+% These two look okay in Computer Modern 11pt, or Concrete Roman
+% 12pt, but they need serious work in other sizes. I need to figure
+% out how to draw a vertical bar, or better yet a shallow arc, inside
+% the bowls. Or maybe I need to learn METAFONT.
+%
+\def\Complex{\mathrm{\,\raise 0.33ex\hbox{\scriptsize\bf(}\!\!\!C}}
+\def\Rational{\mathrm{\,\raise 0.33ex\hbox{\scriptsize\bf(}\!\!\!Q}}
+
+%
+% Here are more standard, but uglier, versions of these symbols.
+% They stick out, because they're all in Times Roman Bold Outline!
+% I *really* want a Concrete Blackboard or Euler Blackboard font, but
+% I'd settle for Computer Modern Blackboard.
+%
+%\def\Real{\mathbb{R}}
+%\def\Proj{\mathbb{P}}
+%\def\Hyper{\mathbb{H}}
+%\def\Integer{\mathbb{Z}}
+%\def\Natural{\mathbb{N}}
+%\def\Complex{\mathbb{C}}
+%\def\Rational{\mathbb{Q}}
+
+\let\N\Natural
+\let\Q\Rational
+\let\R\Real
+\let\Z\Integer
+\def\Rd{\Real^d}
+\def\RP{\Real\Proj}
+\def\CP{\Complex\Proj}
+
+% ---- OPERATORS (requires amsmath) ----
+\def\aff{\operatorname{aff}} % (\Line is better!)
+\def\area{\operatorname{area}}
+\def\argmax{\operatornamewithlimits{arg\,max}}
+\def\argmin{\operatornamewithlimits{arg\,min}}
+\def\Aut{\operatorname{Aut}} % Automorphism group
+\def\card{\operatorname{card}} % cardinality, deprecated for \abs
+\def\conv{\operatorname{conv}} % (\overline is better!)
+\def\E{\operatorname{E}} % Expectation: $\E[X]$ (like \Pr)
+\def\EE{\operatornamewithlimits{E}}
+\def\Hom{\operatorname{Hom}} % Homomorphism group
+\def\id{\operatorname{id}} % identity
+\def\im{\operatorname{im}} % image
+\def\lcm{\operatorname{lcm}}
+\def\lfs{\operatorname{lfs}} % local feature size
+\def\poly{\operatorname{poly}}
+\def\polylog{\operatorname{polylog}}
+\def\rank{\operatorname{rank}}
+\def\rel{\operatorname{rel\,}} % relative (interior, boundary, etc.)
+\def\sgn{\operatorname{sgn}}
+\def\vol{\operatorname{vol}} % volume
+
+\def\fp#1{^{\underline{#1}}} % falling powers: $n\fp{d}$
+\def\rp#1{^{\overline{#1}}} % rising powers: $n\rp{d}$
+
+% --- Cheap displaystyle operators ---
+\def\Frac#1#2{{\displaystyle\frac{#1}{#2}}}
+\def\Sum{\sum\limits}
+\def\Prod{\prod\limits}
+\def\Union{\bigcup\limits}
+\def\Inter{\bigcap\limits}
+\def\Lor{\bigvee\limits}
+\def\Land{\bigwedge\limits}
+\def\Lim{\lim\limits}
+\def\Max{\max\limits}
+\def\Min{\min\limits}
+
+% ---- RELATORS ----
+\def\deq{\stackrel{\scriptscriptstyle\triangle}{=}}
+\def\mapsfrom{\leftarrow\!\mapstochar\,}
+\let\into\hookrightarrow % = one-to-one
+\let\onto\twoheadrightarrow
+
+% ---- DELIMITER PAIRS ----
+\def\floor#1{\lfloor #1 \rfloor}
+\def\ceil#1{\lceil #1 \rceil}
+\def\seq#1{\langle #1 \rangle}
+\def\set#1{\{ #1 \}}
+\def\abs#1{\mathopen| #1 \mathclose|} % use instead of $|x|$
+\def\norm#1{\mathopen\| #1 \mathclose\|}% use instead of $\|x\|$
+\def\indic#1{\big[#1\big]} % indicator variable; Iverson notation
+ % e.g., Kronecker delta = [x=0]
+
+% --- Self-scaling delmiter pairs ---
+\def\Floor#1{\left\lfloor #1 \right\rfloor}
+\def\Ceil#1{\left\lceil #1 \right\rceil}
+\def\Seq#1{\left\langle #1 \right\rangle}
+\def\Set#1{\left\{ #1 \right\}}
+\def\Abs#1{\left| #1 \right|}
+\def\Norm#1{\left\| #1 \right\|}
+\def\Paren#1{\left( #1 \right)} % need better macro name!
+\def\Brack#1{\left[ #1 \right]} % need better macro name!
+\def\Indic#1{\left[ #1 \right]} % indicator variable; Iverson notation
+
+%
+% Macros to typeset sets like {foo|bar} with all three delimiters
+% correctly scaled to fit. What I *really* want is a \middle macro
+% that acts just like \left and \right. Grumble.
+%
+\def\Bigbar#1{\mathrel{\left|\vphantom{#1}\right.\n@space}}
+\def\Setbar#1#2{\Set{#1 \Bigbar{#1 #2} #2}}
+\def\Seqbar#1#2{\Seq{#1 \Bigbar{#1 #2} #2}}
+\def\Brackbar#1#2{\Brack{#1 \Bigbar{#1 #2} #2}}
+
+% C-style arithmetic if-then-else
+\def\arithif#1#2#3{#1 \mathbin? #2 \mathbin: #3}
+
+% Math mode fbox
+\def\mfbox#1{\mathchoice{{\fbox{\ensuremath{\displaystyle #1}}}}
+ {{\fbox{\ensuremath{\textstyle #1}}}}
+ {{\fbox{\ensuremath{\scriptstyle #1}}}}
+ {{\fbox{\ensuremath{\scriptscriptstyle #1}}}}}
+
+% ---- ``ACCENTS'' ----
+% NB: Commands equivalent to \lrarrowfill and \overlrarrow are
+% already defined in amstex!
+\def\lrarrowfill{$\m@th\mathord\leftarrow\mkern-6mu%
+ \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
+ \mkern-6mu\mathord\rightarrow$}
+\def\overlrarrow#1{\vbox{\ialign{##\crcr
+ \lrarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
+ $\hfil\displaystyle{#1}\hfil$\crcr}}}
+
+\def\Line#1{\!\overlrarrow{\vphantom{t}\smash{\,#1\,}}\!}
+\def\Ray#1{\overrightarrow{\vphantom{t}#1\,}\!}
+\def\Seg#1{\overline{\vphantom{t}#1}}
+
+% --- TEXT STYLES ---
+\def\mathsc#1{\text{\textsc{#1}}}
+\def\mathbs#1{\text{\boldmath\ensuremath{#1}}}
+
+% ----------------------------------------------------------------------
+% \begin{bigabstract}...\end{bigabstract}
+% For use in documents with title pages. Use normal-sized text in
+% the abstract!
+% ----------------------------------------------------------------------
+\newenvironment{bigabstract}%
+{\medskip\noindent\centerline{\textbf{\large\abstractname}}\begin{quotation}}%
+{\end{quotation}}
+
+% ----------------------------------------------------------------------
+% Make captions smaller than the text, make their titles bold.
+% Arguments: #1 == figure name: "Figure 5"
+% #2 == caption: "Papers by \Erdos, 1900--2000 (projected)"
+% Less space after floats and before caption, since captions are smaller
+% ----------------------------------------------------------------------
+\@ifundefined{abovecaptionskip}{\newlength\abovecaptionskip}
+\long\def\@makecaption#1#2{
+ \vskip \abovecaptionskip
+ \setbox\@tempboxa\hbox{{\sf\footnotesize \textbf{#1.} #2}}
+ \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
+ {\sf\footnotesize \textbf{#1.} #2\par}% THEN set as ordinary paragraph.
+ \else % ELSE center.
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+\dbltextfloatsep 18pt plus 2pt minus 4pt% was 20pt plus 2pt minus 4pt
+\textfloatsep 18pt plus 2pt minus 4pt % was 20pt plus 2pt minus 4pt
+\abovecaptionskip 6pt % was 10pt
+
+% ----------------------------------------------------------------------
+% Revised theorem environment:
+% Add a period after the theorem number, and make theorems slanted
+% instead of italic to help distinguish text from math. Use
+% \boldmath in theorem label in case it includes math.
+% ----------------------------------------------------------------------
+\def\@opargbegintheorem#1#2#3{\trivlist
+ \item[\hskip\labelsep{\bf\boldmath #1\ #2\ (#3).}]\sl}
+\def\@begintheorem#1#2{\trivlist
+ \item[\hskip\labelsep{\bf\boldmath #1\ #2.}]\sl}
+
+% ----------------------------------------------------------------------
+% \newproof{type}{text}(style)[post]:
+% Define a new type of unnumbered ``theorem'' environment. The last
+% two arguments are optional; most environments will not use them.
+%
+% To change label style, put new style command in label:
+% \newproof{comment}{\sf Comment}
+% ----------------------------------------------------------------------
+\def\newproof#1#2{\@ifnextchar({\@snproof{#1}{#2}}{\@snproof{#1}{#2}(\rm)}}
+\def\@snproof#1#2(#3){\@ifnextchar[{\@xnproof{#1}{#2}{#3}}
+ {\@xnproof{#1}{#2}{#3}[]}}
+
+\def\@xnproof#1#2#3[#4]{%\expandafter\@ifdefinable\csname #1\endcsname
+{\global\@namedef{#1}{\@prf{#2}{#3}}\global\@namedef{end#1}{\@endprf{#4}}}}
+
+\def\@prf#1#2{\@ifnextchar[{\@xprf{#1}{#2}}{\@yprf{#1}{#2}}}
+\def\@xprf#1#2[#3]{\@yprf{#1\ (#3)}{#2}}
+\def\@yprf#1#2{\begin{trivlist}\item[\hskip\labelsep{\bf\boldmath #1:}]#2}
+
+\def\@endprf#1{#1\end{trivlist}}
+
+%
+% Standard proof envrionment: last line has a halmos at the right margin.
+%
+\@ifundefined{square}{\let\square\Box}{} % grumble latex2e
+\def\QED{\ensuremath{{\square}}}
+\def\markatright#1{\leavevmode\unskip\nobreak\quad\hspace*{\fill}{#1}}
+\def\qed{\markatright{\QED}}
+\newproof{proof}{Proof}[\qed]
+\newproof{sketch}{Proof Sketch}[\qed]
+
+\newenvironment{rawproof}%
+ {\begin{trivlist}\item[\hskip\labelsep\textbf{Proof:}]}%
+ {\qed\end{trivlist}}
+
+%
+% If the proof ends with a displayed equation, use \aftermath just
+% before \end{proof} to put the halmos in the ``right'' place. This
+% may not work near page boundaries.
+%
+\def\aftermath{\par\vspace{-\belowdisplayskip}\vspace{-\parskip}\vspace{-\baselineskip}}
+
+% ----------------------------------------------------------------------
+% One-shot theoremish environment. For named things like ``Zorn's
+% Lemma'' or ``The Death Leap Principle'' or ``The Zone Theorem''.
+% To get one-shot proofish environment, put \rm inside.
+% New improved version stolen from Erik Demaine.
+% ----------------------------------------------------------------------
+\newenvironment{oneshot}[1]{\@begintheorem{#1}{\unskip}}{\@endtheorem}
+
+% ----------------------------------------------------------------------
+% Algorithm and code environments -- Algorithms are set in normal
+% text, with 2em indenting, surrounded by a box. Code is set in
+% typewriter text, with 4 space indenting, and no box.
+%
+% NOTE! The true width of the minipage environment is determined by
+% the contents of the longest line, but ONLY because the minipage
+% contains a tabbing environment, and nothing else. It's a HaX!
+%
+% Both environments need optional line numbering and comment macros,
+% but bold keywords are just distracting.
+% ----------------------------------------------------------------------
+\def\begin@lgo{\begin{minipage}{1in}\begin{tabbing}
+ \quad\=\qquad\=\qquad\=\qquad\=\qquad\=\qquad\=\qquad\=\kill}
+\def\end@lgo{\end{tabbing}\end{minipage}}
+
+\newenvironment{algorithm}
+{\begin{tabular}{|l|}\hline\begin@lgo}
+{\end@lgo\\\hline\end{tabular}}
+
+\newenvironment{algo}
+{\begin{center}\begin{algorithm}}
+{\end{algorithm}\end{center}}
+
+\def\Comment#1{\textsf{\textsl{$\langle\!\langle$#1\/$\rangle\!\rangle$}}}
+
+\def\beginc@de{\noindent\begin{center}\begin{minipage}{1in}\tt
+ \begin{tabbing}~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=\kill}
+\def\endc@de{\end{tabbing}\end{minipage}\end{center}}
+
+\newenvironment{code}{\beginc@de}{\endc@de}
+
+%
+% I think these only work with <1 line of text. Use sparingly!!
+%
+\def\textul#1{\underline{\smash{#1}\vphantom{,}}}
+\def\strike#1{\ensuremath{\overline{\text{\smash{#1}\vphantom{.}}}}}
+
+% ----------------------------------------------------------------------
+% Include a file verbatim. Searches the TEXINPUTS path for the file,
+% even though that's probably not what you really want. Stolen from
+% ``verbatimfiles.sty'' by Chris Rowley and others. [Don't use their
+% \vertbatimlisting macro; it has some bizarre side-effects!]
+% ----------------------------------------------------------------------
+\def\verbinput#1{
+\begingroup\@verbatim\frenchspacing\@vobeyspaces\input#1\endgroup
+}
+
+% ----------------------------------------------------------------------
+% \now -- Current time in h:mm AM/PM format
+% \mdyy -- Today's date in m/d/yy format. Forget Y2K; this is for humans!
+% ----------------------------------------------------------------------
+\newcount\timehh\timehh=\time
+\divide\timehh by 60
+\newcount\timemm\timemm=\time
+\count255=\timehh
+\multiply\count255 by -60
+\advance\timemm by \count255
+\newif\iftimePM
+\ifnum\timehh>11 \timePMtrue\else\timePMfalse\fi
+\ifnum\timehh<1 \advance\timehh by 12\fi
+\ifnum\timehh>12 \advance\timehh by -12\fi
+\def\now{\number\timehh:\ifnum\timemm<10 0\fi\number\timemm
+ \iftimePM pm\else am\fi}
+\newcount\mdYY\mdYY=\year
+\count255=\year
+\divide\count255 by 100
+\multiply\count255 by 100
+\advance\mdYY by -\count255
+\def\mdyy{\number\month/\number\day/\ifnum\mdYY<10 0\fi\number\mdYY}
+
+% ----------------------------------------------------------------------
+% Notes to myself
+% ----------------------------------------------------------------------
+\def\n@te#1{\textsf{$\langle\!\langle$#1$\rangle\!\rangle$}\leavevmode}
+\def\n@tew@rn{\GenericWarning{}{AUTHOR WARNING: Unresolved \protect\note}}
+
+\def\n@ten@te#1{\marginpar
+ [\hfill\llap{\textcircled{\small#1}$\!\Longrightarrow$}]
+ {\rlap{$\Longleftarrow\!$\textcircled{\small#1}}}}
+
+\def\n@tedingb@t{\@ifundefined{textmusicalnote}
+ {$\circledcirc$} % if you don't have textcomp
+ {\textmusicalnote}} % if you do have textcomp
+
+\def\note#1{\n@tew@rn\n@te{\n@ten@te{\n@tedingb@t}#1}}
+
+\def\sidenote#1{\marginpar{\tiny\sf #1}}
+
+
+%----------------------------------------------------------------------
+% Bibliography aliases, so I can use mnemonic citation keys and
+% geom.bib at the same time. \bibalias{foo}{bar} makes \cite{foo}
+% act (almost) exactly like \cite{bar}.
+%----------------------------------------------------------------------
+\def\bibalias#1#2{%
+ \global\@namedef{b@#1}{%
+ {\@ifundefined{b@#2}{\textsf{?}}{}\csname b@#2\endcsname}}}
+
+%----------------------------------------------------------------------
+% Flag bad citations and refernces in the margin. Dangerous if you
+% have lots of undefined refs; use batchmode the first time.
+% Incompatible with some document classes.
+%----------------------------------------------------------------------
+\DeclareOption{flagerrors}
+{
+\def\badcite{\ifinner\else\n@ten@te{\textcent}\fi}
+
+\def\badref{\ifinner\else\n@ten@te{$\Join$}\fi}
+
+\def\bibalias#1#2{%
+ \global\@namedef{b@#1}{%
+ {\@ifundefined{b@#2}{\textsf{>>#1??}}{}\csname b@#2\endcsname}}}
+
+\def\@citex[#1]#2{%
+ \let\@citea\@empty
+ \@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{,\penalty\@m\ }%
+ \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb}{\mbox{\reset@font\sffamily>\@citeb?}%
+ \badcite%
+ \G@refundefinedtrue%
+ \@latex@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\hbox{\csname b@\@citeb\endcsname}}}}{#1}}
+
+\def\@setref#1#2#3{
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \badref\mbox{\reset@font\sffamily >#3?}
+ \@latex@warning{Reference `#3' on page \thepage \space undefined}%
+ \else
+ \expandafter#2#1\null
+ \fi}
+}
+
+
+% ----------------------------------------------------------------------
+% Draft notice. Put \DRAFT on the title page, in place of \date.
+% ----------------------------------------------------------------------
+\def\draftnotice{Preliminary draft --- \mdyy\ --- Not for distribution}
+
+\def\DRAFT{
+\date{\fbox{\textsf{\textbf{\draftnotice}}}}
+\def\@oddfoot{\footnotesize\hss\fbox{\textbf{\textsf{\draftnotice}}}\hss}
+\let\@evenfoot\@oddfoot
+}
+
+% ----------------------------------------------------------------------
+% Dingbats from the TeX/METAFONT-book manual font
+% Use only with 11 or 12 pt text.
+% Doesn't work with TeXtures, which doesn't know about manfnt.
+% ----------------------------------------------------------------------
+\font\manual=manfnt
+\def\goodcube{{\manual\char28}} % possible cube from MF-book
+\def\badcube{{\manual\char29}} % impossible cube from MF-book
+\def\starknot{{\manual\char30}} % 2,5 torus knot from MF-book
+\def\target{{\manual\char36}} % concentric circles from MF-book
+\def\xflower{{\manual\char38}} % X flower dingbat from MF-book
+\def\tflower{{\manual\char39}} % + flower dingbat from MF-book
+\def\changeto{{\manual\char121}}% change arrow
+\def\dbend{{\manual\char127}} % dangerous bend sign
+
+% ----------------------------------------------------------------------
+% Dangerous bend environments, stolen from TeXbook and slightly
+% massaged.
+%
+% Invoke as \begin{[d]danger}...\end{[d]danger}. The enclosed text
+% is offset just like any other list (theorem, proof, etc.) Puts
+% sign[s] in front of first two lines of first paragraph, which are
+% (supposedly) never split by a page boundary. Does NOT shrink or
+% otherwise modify the text.
+% ----------------------------------------------------------------------
+% The dangerous bend signs are the correct size to match two lines of
+% Computer Modern 9pt type. I really ought to scale them up to
+% fit whatever size we're using, but I won't. Unfortunately, manfnt
+% thinks it's a 10pt font, so if we want to match 11pt Computer
+% Modern, we have to scale manfnt to 12.222222pt! Thanks, Don.
+%
+% TeX is a HaX.
+% ----------------------------------------------------------------------
+
+% Single danger
+\def\danger{\begin{trivlist}\item[]\noindent%
+\begingroup\hangindent=2.5pc\hangafter=-2\clubpenalty=10000%
+\def\par{\endgraf\endgroup}%
+\hbox to 0pt{\hskip-\hangindent\dbend\hfill}\ignorespaces}
+\def\enddanger{\end{trivlist}}
+
+% Double danger
+\def\ddanger{\begin{trivlist}\item[]\noindent%
+\begingroup\hangindent=4pc\hangafter=-2\clubpenalty=10000%
+\def\par{\endgraf\endgroup}%
+\hbox to 0pt{\hskip-\hangindent\dbend\kern2pt\dbend\hfill}\ignorespaces}
+\def\endddanger{\end{trivlist}}
+
+%----------------------------------------------------------------------
+% 'cramped' list style, stolen from Jeff Vitter
+%----------------------------------------------------------------------
+\def\cramped
+ {\parskip\@outerparskip\@topsep\parskip
+ \@topsepadd2pt\itemsep0pt
+% \settowidth{\labelwidth}{\@itemlabel}
+% \advance\leftmargin-\labelsep
+% \advance\leftmargin-\labelwidth
+% \advance\@totalleftmargin-\leftmargin
+% \advance\linewidth\leftmargin
+% \parshape1\@totalleftmargin\linewidth
+}
+
+%----------------------------------------------------------------------
+% More footnote symbols, please.
+%----------------------------------------------------------------------
+\def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
+ \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger
+ \or \ddagger\ddagger \or \mathsection\mathsection \or
+ \mathparagraph\mathparagraph \else\@ctrerr\fi}}
+
+%----------------------------------------------------------------------
+% TeXbook style quotations -- I should really use the right font, tho.
+%----------------------------------------------------------------------
+\newenvironment{rightquote}[1]
+{\flushright\begin{minipage}{#1\textwidth}
+\parskip0pt\footnotesize\sffamily\slshape}
+{\end{minipage}\par\bigskip}
+\def\quotee#1{\par\vspace{0.5ex}\flushright\unskip\textup{--- #1}}
+
+\ProcessOptions