%%% ====================================================================
%%%  @LaTeX-file{
%%%     author          = "Scott Pakin",
%%%     version         = "10.1",
%%%     date            = "03 January 2008",
%%%     time            = "11:05:50 MST",
%%%     filename        = "symbols.tex",
%%%     checksum        = "11065 11464 36072 469668",
%%%     email           = "scott+clsl@pakin.org (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "symbols, LaTeX2e, typesetting, accents,
%%%                        mathematics, scientific, dingbats, fonts",
%%%     supported       = "yes",
%%%     abstract        = "This document lists thousands of symbols and
%%%                        the corresponding LaTeX commands that
%%%                        produce them.  Some of these symbols are
%%%                        guaranteed to be available in every LaTeX2e
%%%                        system; others require fonts and packages
%%%                        that may not accompany a given distribution
%%%                        and that therefore need to be installed.
%%%                        All of the fonts and packages used to
%%%                        prepare this document -- as well as this
%%%                        document itself -- are freely available
%%%                        from the Comprehensive TeX Archive Network
%%%                        (http://www.ctan.org).",
%%%     docstring       = "This LaTeX document showcases thousands of
%%%                        symbols that are available to authors.  The
%%%                        original version of this document was
%%%                        written by David Carlisle on 1994/10/02.
%%%                        It was subsequently changed and expanded by
%%%                        Scott Pakin.
%%%
%%%                        To build this document, run ``latex
%%%                        symbols'', then ``makeindex -s gind.ist
%%%                        symbols'', then two more ``latex symbols''
%%%                        commands.  This ensures the stability of
%%%                        all generated content (tables, references,
%%%                        etc.)
%%%
%%%                        The checksum field above contains a CRC-16
%%%                        checksum as the first value, followed by
%%%                        the equivalent of the standard UNIX wc
%%%                        (word count) utility output of lines,
%%%                        words, and characters.  This is produced by
%%%                        Robert Solovay's checksum utility.  This file
%%%                        header was produced with the help of Nelson
%%%                        Beebe's filehdr utility.  Both checksum and
%%%                        filehdr are available from CTAN
%%%                        (http://www.ctan.org)."
%%%  }
%%% ====================================================================

\NeedsTeXFormat{LaTeX2e}

\documentclass{article}
\usepackage{array}
\usepackage{longtable}
\usepackage{textcomp}
\usepackage{latexsym}
\usepackage{varioref}
\usepackage{xspace}
\usepackage{makeidx}
\usepackage{verbatim}
\usepackage{graphicx}
\usepackage{tabularx}

\newcommand{\doctitle}{Comprehensive \LaTeX\ Symbol List}  % Reusable
\title{The \doctitle}

\author{\person{Scott}{Pakin} \texttt{<scott+clsl@pakin.org>}%
  \thanks{The original version of this document was written by
    \person{David}{Carlisle}, with several additional tables provided by
    \person{Alexander}{Holt}.  See Section~\vref{about-doc} for more
    information about who did what.}}
\date{3 January 2008}

\makeindex

%%%
%%% TO-DO LIST
%%%   * Proofread, especially looking for symbols defined by more
%%%     than one symbol set or symbols that should be in a table
%%%     but aren't.
%%%   * Figure out how to make this file play nice with hyperref.
%%%   * Add more symbol tables.  (Did we miss any common, standard, or
%%%     useful ones?)
%%%   * Further index symbols by _description_ (e.g., "perpendicular"
%%%     for "\perp").  This would be really useful, but extremely
%%%     time-consuming to do.  Note that Adobe's Web site has a list
%%%     of the names of all the Zapf Dingbats characters.  Unfortunately,
%%%     these names can be rather long, like "notched upper right-shadowed
%%%     white rightwards arrow" for \ding{241}.
%%%   * Find some way to associate each package with a flag indicating
%%%     whether the corresponding fonts are in bitmapped or vector
%%%     format.
%%%   * Verify that there aren't any missing symbols in the current
%%%     packages (especially after font upgrades).
%%%


% Index "X Y" and "Y, X".  The "begin" and "end" variants are for page ranges.
\newcommand{\idxboth}[2]{\mbox{}\index{#1 #2}\index{#2>#1}}
\newcommand{\idxbothbegin}[2]{\mbox{}\index{#1 #2|(}\index{#2>#1|(}}
\newcommand{\idxbothend}[2]{\mbox{}\index{#1 #2|)}\index{#2>#1|)}}

% Index logical styles.
\newcommand{\pkgname}[1]{%
  \textsf{#1}%
  \index{#1=\textsf{#1} (package)}%
  \index{packages>#1=\textsf{#1}}}
\newcommand{\optname}[2]{%
  \textsf{#2}%
  \index{#2=\textsf{#2} (\textsf{#1} package option)}%
  \index{package options>#2=\textsf{#2} (\textsf{#1})}}
\newcommand{\filename}[1]{%
  \texttt{#1}%
  \index{#1=\texttt{#1} (file)}}
\newcommand{\PSfont}[1]{%
  #1%
  \index{#1 (font)}%
  \index{fonts>#1}%
}
\DeclareRobustCommand{\person}[2]{#1\index{#2, #1} #2}

% Index common words and phrases.
\newcommand{\latex}{\LaTeX\index{LaTeX=\string\LaTeX}\xspace}
\newcommand{\latexE}{\LaTeXe\index{LaTeX2e=\string\LaTeXe}\xspace}
\newcommand{\metafont}{\MF\index{Metafont=\string\MF}\xspace}
\newcommand{\tex}{\TeX\index{TeX=\string\TeX}\xspace}
\newcommand{\xypic}{%
  \mbox{\kern-.1em X\kern-.3em\lower.4ex\hbox{Y\kern-.15em}-pic}%
  \index{Xy-pic=\mbox{\kern-.1em X\kern-.3em\lower.4ex\hbox{Y\kern-.15em}-pic}}}
\newcommand{\TeXbook}{%
  The \TeX{}book\index{TeXbook, The=\TeX{}book, The}~\cite{Knuth:ct-a}\xspace}
\newcommand{\ctt}{%
  \texttt{comp.text.tex}%
  \index{comp.text.tex=\texttt{comp.text.tex} (newsgroup)}\xspace}
\newcommand{\fntenc}[1][]{%
  \def\firstarg{#1}%
  font encoding%
  \ifx\firstarg\empty%
    \index{font encodings}%
  \else
    \index{font encodings>\firstarg}%
  \fi
}
\newcommand{\selftex}{\expandafter\filename\expandafter{\jobname.tex}\xspace}
\newcommand{\fontdefdtx}{\filename{fontdef.dtx}\xspace}
\newcommand{\thanhhanthe}{Th\`anh, H\`an Th\diatop[\'|\^e]}   % "|" confuses MakeIndex.
\newcommand{\postscript}{PostScript\index{PostScript}\xspace}

% Index TeXbook symbols and the CTAN repository.
\newcommand{\idxTBsyms}{%
  \index{symbols>TeXbook=\TeX{}book}%
  \index{TeXbook, The=\TeX{}book, The>symbols from}%
}
\newcommand{\idxCTAN}{%
  \index{Comprehensive TeX Archive Network=Comprehensive \string\TeX{} Archive Network}}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% There are a number of symbols (e.g., \Square) that are defined by      %
% multiple packages.  In order to typeset all the variants in this       %
% document, we have to give glyph a unique name.  To do that, we define  %
% \savesymbol{XXX}, which renames a symbol from \XXX to \origXXX, and    %
% \restoresymbols{yyy}{XXX}, which renames \origXXX back to \XXX and     %
% defines a new command, \yyyXXX, which corresponds to the most recently %
% loaded version of \XXX.                                                %
%                                                                        %

% Save a symbol that we know is going to get redefined.
\def\savesymbol#1{%
  \expandafter\let\expandafter\origsym\expandafter=\csname#1\endcsname
  \expandafter\let\csname orig#1\endcsname=\origsym
  \expandafter\let\csname#1\endcsname=\relax
}

% Restore a previously saved symbol, and rename the current one.
\def\restoresymbol#1#2{%
  \expandafter\let\expandafter\newsym\expandafter=\csname#2\endcsname
  \expandafter\global\expandafter\let\csname#1#2\endcsname=\newsym
  \expandafter\let\expandafter\origsym\expandafter=\csname orig#2\endcsname
  \expandafter\global\expandafter\let\csname#2\endcsname=\origsym
}

%                                                                        %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% Each of the packages used by this document is loaded conditionally.
% However, it might be nice to know if we have a complete set.  So we
% define \ifcomplete which starts true, but gets set to false if any
% package is missing.
\newif\ifcomplete
\completetrue

% For debugging purposes we define a switch that enables us to toggle
% on and off the loading of packages.
\newif\ifloadpackages
\loadpackagestrue

% \IfStyFileExists* is just like \IfFileExists, except that it appends
% ".sty" to its first argument.  \IfStyFileExists is the same as
% \IfStyFileExists*, but it additionally adds its first argument to a list
% (\missingpkgs) and marks the document as incomplete (with
% \completefalse) if the .sty file doesn't exist.
\makeatletter
\newcommand{\missingpkgs}{}
\newcommand{\foundpkgs}{}
\newcommand{\if@sty@file@exists@star}[3]{%
  \ifloadpackages
    \IfFileExists{#1.sty}{#2}{#3}%
  \else
    #3%
  \fi
}
\newcommand{\if@sty@file@exists}[3]{%
  \ifloadpackages
    \IfFileExists{#1.sty}%
                 {#2\@cons\foundpkgs{{#1}}}%
                 {#3\completefalse\@cons\missingpkgs{{#1}}}%
  \else
    #3\completefalse\@cons\missingpkgs{{#1}}%
  \fi
}
\newcommand{\IfStyFileExists}{%
  \@ifstar{\if@sty@file@exists@star}{\if@sty@file@exists}%
}
\makeatother

% We get a few packages for free.
\makeatletter
\@cons\foundpkgs{{textcomp}}
\@cons\foundpkgs{{latexsym}}
\makeatother
\newcommand{\TC}{\pkgname{textcomp}}

% Typeset a string in various encodings.
\newcommand{\encone}[1]{{\fontencoding{T1}\selectfont#1}}
\newcommand{\encfour}[1]{{\fontencoding{T4}\selectfont#1}}
\newcommand{\encfive}[1]{{\fontencoding{T5}\selectfont#1}}

% Various punctuation marks confuse makeindex when used directly.
\let\magicrbrack=]
\let\magicequal=\=
\newcommand{\magicequalname}{\texttt{\string\=}}
\newcommand{\magicvertname}{\texttt{|}}
\newcommand{\magicVertname}{\texttt{\string\|}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newif\ifAMS
\newcommand\AMS{\AmS\index{AMS=\AmS}}
\makeatletter
\IfStyFileExists{amssymb}
  {\AMStrue
   \savesymbol{angle} \savesymbol{rightleftharpoons}
   \savesymbol{lefthapoondown} \savesymbol{rightharpoonup}
   \savesymbol{iint} \savesymbol{iiint}
   \savesymbol{iiiint} \savesymbol{idotsint}
   \let\orig@ifstar=\@ifstar
   \usepackage{amsmath}
   \usepackage{amssymb}
   \let\@ifstar=\orig@ifstar
   \restoresymbol{AMS}{angle} \restoresymbol{AMS}{rightleftharpoons}
   \restoresymbol{AMS}{lefthapoondown} \restoresymbol{AMS}{rightharpoonup}
   \restoresymbol{AMS}{iint} \restoresymbol{AMS}{iiint}
   \restoresymbol{AMS}{iiiint} \restoresymbol{AMS}{idotsint}
  }
  {
    % The following was modified from amsmath.sty.
    \newcommand{\AmSfont}{%
      \usefont{OMS}{cmsy}{m}{n}}
    \providecommand{\AmS}{{\protect\AmSfont
      A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
  }
\makeatother

\newif\ifST
\newcommand\ST{\pkgname{stmaryrd}}
\IfStyFileExists{stmaryrd}
  {\STtrue
   \savesymbol{lightning}
   \savesymbol{bigtriangleup} \savesymbol{bigtriangledown}
   \usepackage{stmaryrd}
   \restoresymbol{ST}{lightning}
   \restoresymbol{ST}{bigtriangleup} \restoresymbol{ST}{bigtriangledown}
  }
  {}

\newif\ifEU
\IfStyFileExists{euscript}
  {\EUtrue\usepackage[mathcal]{euscript}
   \renewcommand{\mathcal}[1]{\mbox{\usefont{U}{eus}{m}{n}##1}}
  }
  {\let\CMcal\mathcal}

\newif\ifWASY
\newcommand\WASY{\pkgname{wasysym}}
\IfStyFileExists{wasysym}
  {\WASYtrue
   \savesymbol{lightning}
   \savesymbol{Box}
   \savesymbol{Diamond}
   \usepackage{wasysym}
   \restoresymbol{WASY}{lightning}
   \restoresymbol{WASY}{Box}
   \restoresymbol{WASY}{Diamond}
  }
  {}

\newif\ifPI
\newcommand\PI{\pkgname{pifont}}
\IfStyFileExists{pifont}
  {\PItrue\usepackage{pifont}}
  {}

% marvosym underwent a major rewrite for the 2000/05/01 version, adding
% a large number of new symbols.  If it looks like we have only the
% older version, pretend we don't have it at all.
\newif\ifMARV
\newcommand\MARV{\pkgname{marvosym}}
\makeatletter
\IfStyFileExists*{marvosym}
  {\usepackage{marvosym}[2000/05/01]  % Major rewrite at this version.
   \global\MARVtrue
   \@ifundefined{Denarius}            % \Denarius is a newer symbol.
     {\global\MARVfalse}
     {}
   \@ifundefined{MVRightarrow}        % \Mvrightarrow is an even newer symbol.
     {\global\MARVfalse}
     {}
  }
  {}
\makeatother

\newif\ifMAN
\newcommand\MAN{\pkgname{manfnt}}
\IfStyFileExists{manfnt}
  {\MANtrue\usepackage{manfnt}}
  {}

\newif\ifDING
\newcommand\DING{\pkgname{bbding}}
\IfStyFileExists{bbding}
  {\DINGtrue
   \savesymbol{Cross} \savesymbol{Square}
   \usepackage{bbding}
   \restoresymbol{ding}{Cross} \restoresymbol{ding}{Square}
  }
  {}

\newif\ifUTILD
\newcommand\UTILD{\pkgname{undertilde}}
\IfStyFileExists{undertilde}
  {\UTILDtrue\usepackage{undertilde}}
  {}

\newif\ifIFS
\newcommand\IFS{\pkgname{ifsym}}
\IfStyFileExists{ifsym}
  {\IFStrue
   \savesymbol{Letter} \savesymbol{Square} \savesymbol{Cross} \savesymbol{Sun}
   \savesymbol{TriangleUp} \savesymbol{TriangleDown} \savesymbol{Circle}
   \savesymbol{Lightning}
   \usepackage[alpine,clock,electronic,geometry,misc,weather]{ifsym}[2000/04/18]
   \restoresymbol{ifs}{Letter} \restoresymbol{ifs}{Square}
   \restoresymbol{ifs}{Cross} \restoresymbol{ifs}{Sun}
   \restoresymbol{ifs}{TriangleUp} \restoresymbol{ifs}{TriangleDown}
   \restoresymbol{ifs}{Circle} \restoresymbol{ifs}{Lightning}
  }
  {}

\newif\ifTIPA
\newcommand\TIPA{\pkgname{tipa}}
\IfStyFileExists{tipa}
  {\TIPAtrue\usepackage[safe]{tipa}}
  {}

\newif\ifTIPX
\newcommand\TIPX{\pkgname{tipx}}
\IfStyFileExists{tipx}
  {\TIPXtrue\usepackage{tipx}}
  {}

\newif\ifXIPA
\newcommand\XIPA{\pkgname{extraipa}}
\IfStyFileExists{extraipa}
  {\XIPAtrue\usepackage{extraipa}}
  {}

% We use the *-form of \IfStyFileExists, because the package is named
% "wsuipa", while the .sty file is named "ipa.sty".
\makeatletter
\newif\ifWIPA
\newcommand\WIPA{\pkgname{wsuipa}}
\IfStyFileExists*{ipa}
  {\@cons\foundpkgs{{wsuipa}}
   \WIPAtrue
   \savesymbol{baro} \savesymbol{eth} \savesymbol{openo} \savesymbol{thorn}
   \usepackage{ipa}
   \expandafter\xdef\csname ver@wsuipa.sty\endcsname{%
     \csname ver@ipa.sty\endcsname}
   \restoresymbol{WSU}{baro}  \restoresymbol{WSU}{eth}
   \restoresymbol{WSU}{openo} \restoresymbol{WSU}{thorn}
  }
  {\completefalse\@cons\missingpkgs{{wsuipa}}}
\makeatother

\newif\ifPHON
\newcommand\PHON{\pkgname{phonetic}}
\IfStyFileExists{phonetic}
  {\PHONtrue
   \savesymbol{esh} \savesymbol{eth} \savesymbol{hookb}
   \savesymbol{hookd} \savesymbol{hookh} \savesymbol{openo}
   \savesymbol{schwa} \savesymbol{taild} \savesymbol{thorn}
   \savesymbol{varg} \savesymbol{yogh}
   \usepackage{phonetic}
   \restoresymbol{PHON}{esh} \restoresymbol{PHON}{eth}
   \restoresymbol{PHON}{hookb} \restoresymbol{PHON}{hookd}
   \restoresymbol{PHON}{hookh} \restoresymbol{PHON}{openo}
   \restoresymbol{PHON}{schwa} \restoresymbol{PHON}{taild}
   \restoresymbol{PHON}{thorn} \restoresymbol{PHON}{varg}
   \restoresymbol{PHON}{yogh}

   % A few phonetic macros are fragile but need to be made robust.
   \DeclareRobustCommand{\PHONibar}{\ibar}
   \DeclareRobustCommand{\PHONrbar}{\rbar}
   \DeclareRobustCommand{\PHONvod}{\vod}
  }
  {}

\newif\ifULSY
\newcommand\ULSY{\pkgname{ulsy}}
\IfStyFileExists{ulsy}
  {\ULSYtrue\usepackage{ulsy}}
  {}

\newif\ifASP
\newcommand\ASP{\pkgname{ar}}
\IfStyFileExists{ar}
  {\ASPtrue\usepackage{ar}}
  {}

\newif\ifMETRE
\newcommand\METRE{\pkgname{metre}}
\IfStyFileExists{metre}
  {\METREtrue
   \savesymbol{breve}
   \newcommand{\breve}{PLACEHOLDER FOR RENEWCOMMAND}
   \usepackage{metre}
   \restoresymbol{METRE}{breve}
   %
   \DeclareRobustCommand{\METREantidiplestar}{\antidiple*}
   \DeclareRobustCommand{\METREantidiple}{\antidiple}
   \DeclareRobustCommand{\METREdiplestar}{\diple*}
   \DeclareRobustCommand{\METREdiple}{\diple}
   \DeclareRobustCommand{\METREobelusstar}{\obelus*}
   \DeclareRobustCommand{\METREobelus}{\obelus}
   \DeclareRobustCommand{\METRErespondens}{\respondens}
   \DeclareRobustCommand{\METREterminusstar}{\terminus*}
   \DeclareRobustCommand{\METREterminus}{\terminus}
   %
   \DeclareRobustCommand{\METREAntidiplestar}{\Antidiple*}
   \DeclareRobustCommand{\METREAntidiple}{\Antidiple}
   \DeclareRobustCommand{\METREDiplestar}{\Diple*}
   \DeclareRobustCommand{\METREDiple}{\Diple}
   \DeclareRobustCommand{\METREObelusstar}{\Obelus*}
   \DeclareRobustCommand{\METREObelus}{\Obelus}
   \DeclareRobustCommand{\METRERespondens}{\Respondens}
   \DeclareRobustCommand{\METRETerminusstar}{\Terminus*}
   \DeclareRobustCommand{\METRETerminus}{\Terminus}
  }
  {}

% pxfonts relies on txfonts (I think), so either package can be loaded.
% Note that txfonts/pxfonts redefine every LaTeX and AMS character,
% which is not what we want.  As a result, we have to rely on some
% serious trickery to prevent our old characters from getting redefined.
\newif\ifTX
\newcommand\TX{\pkgname{txfonts}}
\newcommand\PX{\pkgname{pxfonts}}
\newcommand\TXPX{\pkgname{txfonts}/\pkgname{pxfonts}}
\makeatletter
\IfStyFileExists{txfonts}
  {\TXtrue
   % Manually declare the new txfonts fonts.
   \DeclareSymbolFont{lettersA}{U}{txmia}{m}{it}
   \SetSymbolFont{lettersA}{bold}{U}{txmia}{bx}{it}
   \DeclareFontSubstitution{U}{txmia}{m}{it}
   \DeclareSymbolFont{symbolsC}{U}{txsyc}{m}{n}
   \SetSymbolFont{symbolsC}{bold}{U}{txsyc}{bx}{n}
   \DeclareFontSubstitution{U}{txsyc}{m}{n}
   \DeclareSymbolFont{largesymbolsA}{U}{txexa}{m}{n}
   \SetSymbolFont{largesymbolsA}{bold}{U}{txexa}{bx}{n}
   \DeclareFontSubstitution{U}{txexa}{m}{n}
   % Prevent txfonts from redeclaring any old fonts.
   \let\origDeclareMathAlphabet=\DeclareMathAlphabet
   \renewcommand{\DeclareMathAlphabet}[5]{}
   \let\origDeclareSymbolFont=\DeclareSymbolFont
   \renewcommand{\DeclareSymbolFont}[5]{}
   \let\origSetSymbolFont=\SetSymbolFont
   \renewcommand{\SetSymbolFont}[6]{}
   \let\origDeclareFontSubstitution=\DeclareFontSubstitution
   \renewcommand{\DeclareFontSubstitution}[4]{}
   % Load txfonts.
   \savesymbol{angle} \savesymbol{rightleftharpoons}
   \usepackage{txfonts}
   \restoresymbol{TX}{angle} \restoresymbol{TX}{rightleftharpoons}
   % Restore the old font commands.
   \global\let\DeclareSymbolFont=\origDeclareSymbolFont
   \global\let\SetSymbolFont=\origSetSymbolFont
   \global\let\DeclareFontSubstitution=\origDeclareFontSubstitution
   \global\let\DeclareMathAlphabet=\origDeclareMathAlphabet
   % Restore the default fonts.
   \renewcommand\rmdefault{cmr}
   \renewcommand\sfdefault{cmss}
   \renewcommand\ttdefault{cmtt}
   \ifAMS
     \DeclareMathAlphabet\mathfrak{U}{euf}{m}{n}
   \fi
   % Are \textcent, \textsterling, \mathcent, \mathsterling, \L, \l,
   % and \r the only symbols that get screwed up?
   \let\origtextcent=\textcent
   \gdef\textcent{{\fontencoding{TS1}\selectfont\origtextcent}}
   \let\origtextsterling=\textsterling
   \gdef\textsterling{{\fontencoding{TS1}\selectfont\origtextsterling}}
   \DeclareTextCommand{\L}{OT1}
     {\leavevmode\setbox\z@\hbox{L}\hb@xt@\wd\z@{\hss\@xxxii L}}
   \DeclareTextCommand{\l}{OT1}
     {{\@xxxii l}}
   \DeclareTextAccent{\r}{OT1}{23}
   \renewcommand{\mathcent}{\mbox{\usefont{OT1}{txr}{m}{n}\char"A2}}
   \renewcommand{\mathsterling}{\mbox{\usefont{OT1}{txr}{m}{n}\char"A3}}
  }
  {}
\makeatother

% Here's a real problem child: mathabx, which also redefines virtually
% every symbol provided by LaTeX2e and AMS.  We have to resort to our
% most devious trickery to get mathabx to load properly.
\newif\ifABX
\newcommand\ABX{\pkgname{mathabx}}
\let\origDeclareMathSymbol=\DeclareMathSymbol
\let\origDeclareMathDelimiter=\DeclareMathDelimiter
\let\origDeclareMathRadical=\DeclareMathRadical
\let\origDeclareMathAccent=\DeclareMathAccent
\makeatletter
  % Redefine \DeclareMathSymbol to stick "ABX" in front of each symbol name.
  \renewcommand{\DeclareMathSymbol}[4]{%
    \let\mathabx@undefine=\@gobble  % Undefining symbols causes all sorts of problems for us.
    \edef\newname{\expandafter\@gobble\string#1}
    \ifx\newname\@empty
    \else
      \edef\newname{ABX\newname}
      \expandafter\origDeclareMathSymbol\expandafter{%
        \csname\newname\endcsname}{#2}{#3}{#4}%
    \fi
  }
  % Do the same for \DeclareMathDelimiter.
  \def\DeclareMathDelimiter#1{%
    \edef\newname{\expandafter\@gobble\string#1}
    \def\eatfour##1##2##3##4{}%
    \def\eatfive##1##2##3##4##5{}%
    \ifx\newname\@empty
      \if\relax\noexpand#1%
        \def\next{\eatfive}
      \else
        \def\next{\eatfour}
      \fi
    \else
      \edef\newname{ABX\newname}
      \def\next{%
        \expandafter\origDeclareMathDelimiter\expandafter{%
          \csname\newname\endcsname}}
    \fi
    \next
  }
  % Do the same for \DeclareMathAccent.
  \renewcommand{\DeclareMathAccent}[4]{%
    \edef\newname{\expandafter\@gobble\string#1}
    \ifx\newname\@empty
    \else
      \edef\newname{ABX\newname}
      \expandafter\origDeclareMathAccent\expandafter{%
        \csname\newname\endcsname}{#2}{#3}{#4}%
    \fi
  }
  % Redefine \DeclareMathRadical to do nothing.
  \renewcommand{\DeclareMathRadical}[5]{}
\makeatother
\let\proofmode=1
\IfStyFileExists{mathabx}
  {\ABXtrue
   \savesymbol{not} \savesymbol{widering}\savesymbol{Moon}
   \savesymbol{notowner} \savesymbol{iint} \savesymbol{iiint}
   \savesymbol{oint} \savesymbol{oiint} \savesymbol{bigboxperp}
   \savesymbol{bigoperp} \savesymbol{boxedcirc} \savesymbol{boxeddash}
   \savesymbol{boxeedast} \savesymbol{boxperp} \savesymbol{boy}
   \savesymbol{Cap} \savesymbol{centerdot} \savesymbol{circledast}
   \savesymbol{circledcirc} \savesymbol{circleddash} \savesymbol{Cup}
   \savesymbol{curvearrowtopleft} \savesymbol{curvearrowtopleftright}
   \savesymbol{curvearrowtopright} \savesymbol{doteqdot}
   \savesymbol{geqslant} \savesymbol{gets} \savesymbol{girl}
   \savesymbol{Join} \savesymbol{land} \savesymbol{leqslant}
   \savesymbol{looparrowupleft} \savesymbol{looparrowupright}
   \savesymbol{lor} \savesymbol{lsemantic}
   \savesymbol{mayaleftdelimiter} \savesymbol{mayarightdelimiter}
   \savesymbol{ndivides} \savesymbol{nequiv} \savesymbol{ngeqslant}
   \savesymbol{ni} \savesymbol{nleqslant} \savesymbol{notni}
   \savesymbol{notowns} \savesymbol{notsign} \savesymbol{operp}
   \savesymbol{rsemantic} \savesymbol{sqCap} \savesymbol{sqCup}
   \savesymbol{to} \savesymbol{ulsh} \savesymbol{ursh}
   \savesymbol{overbrace} \savesymbol{underbrace}
   \savesymbol{overgroup} \savesymbol{undergroup}
   \savesymbol{dddot} \savesymbol{ddddot}

   \usepackage{mathabx}

   \restoresymbol{ABX}{not} \restoresymbol{ABX}{widering}
   \restoresymbol{ABX}{Moon} \restoresymbol{ABX}{notowner}
   \restoresymbol{ABX}{iint} \restoresymbol{ABX}{iiint}
   \restoresymbol{ABX}{oint} \restoresymbol{ABX}{oiint}
   \restoresymbol{ABX}{bigboxperp} \restoresymbol{ABX}{bigoperp}
   \restoresymbol{ABX}{boxedcirc} \restoresymbol{ABX}{boxeddash}
   \restoresymbol{ABX}{boxeedast} \restoresymbol{ABX}{boxperp}
   \restoresymbol{ABX}{boy} \restoresymbol{ABX}{Cap}
   \restoresymbol{ABX}{centerdot} \restoresymbol{ABX}{circledast}
   \restoresymbol{ABX}{circledcirc} \restoresymbol{ABX}{circleddash}
   \restoresymbol{ABX}{Cup} \restoresymbol{ABX}{curvearrowtopleft}
   \restoresymbol{ABX}{curvearrowtopleftright}
   \restoresymbol{ABX}{curvearrowtopright}
   \restoresymbol{ABX}{doteqdot} \restoresymbol{ABX}{geqslant}
   \restoresymbol{ABX}{gets} \restoresymbol{ABX}{girl}
   \restoresymbol{ABX}{Join} \restoresymbol{ABX}{land}
   \restoresymbol{ABX}{leqslant} \restoresymbol{ABX}{looparrowupleft}
   \restoresymbol{ABX}{looparrowupright} \restoresymbol{ABX}{lor}
   \restoresymbol{ABX}{lsemantic}
   \restoresymbol{ABX}{mayaleftdelimiter}
   \restoresymbol{ABX}{mayarightdelimiter}
   \restoresymbol{ABX}{ndivides} \restoresymbol{ABX}{nequiv}
   \restoresymbol{ABX}{ngeqslant} \restoresymbol{ABX}{ni}
   \restoresymbol{ABX}{nleqslant} \restoresymbol{ABX}{notni}
   \restoresymbol{ABX}{notowns} \restoresymbol{ABX}{notsign}
   \restoresymbol{ABX}{operp} \restoresymbol{ABX}{rsemantic}
   \restoresymbol{ABX}{sqCap} \restoresymbol{ABX}{sqCup}
   \restoresymbol{ABX}{to} \restoresymbol{ABX}{ulsh}
   \restoresymbol{ABX}{ursh} \restoresymbol{ABX}{overbrace}
   \restoresymbol{ABX}{underbrace} \restoresymbol{ABX}{overgroup}
   \restoresymbol{ABX}{undergroup}
   \restoresymbol{ABX}{dddot} \restoresymbol{ABX}{ddddot}
  }
  {}
\let\DeclareMathAccent=\origDeclareMathAccent
\let\DeclareMathRadical=\origDeclareMathRadical
\let\DeclareMathDelimiter=\origDeclareMathDelimiter
\let\DeclareMathSymbol=\origDeclareMathSymbol
\ifABX
  % Define only those accents that are not defined elsewhere.
  \DeclareMathAccent{\widecheck}     {0}{mathx}{"71}
  \DeclareMathAccent{\widebar}       {0}{mathx}{"73}
  \DeclareMathAccent{\widearrow}     {0}{mathx}{"74}
  % Redefine all let-bound symbols.
  \let\ABXcenterdot=\ABXsqbullet
  \let\ABXcircledast=\ABXoasterisk
  \let\ABXcircledcirc=\ABXocirc
  % Redefine commands that are used by other commands.
  \DeclareMathSymbol{\ABXnotsign}    {3}{matha}{"7F}
  \DeclareMathSymbol{\ABXvarnotsign} {3}{mathb}{"7F}
  \DeclareMathSymbol{\ABXnotowner}   {3}{matha}{"53}
  \makeatletter
    \def\ABXoverbrace{\overbrace@{\bracefill\ABXbraceld\ABXbracemd\ABXbracerd\ABXbracexd}}
    \def\ABXunderbrace{\underbrace@{\bracefill\ABXbracelu\ABXbracemu\ABXbraceru\ABXbracexu}}
    \def\ABXovergroup{\overbrace@{\bracefill\ABXbraceld{}\ABXbracerd\ABXbracexd}}
    \def\ABXundergroup{\underbrace@{\bracefill\ABXbracelu{}\ABXbraceru\ABXbracexu}}
  \makeatother
  % Define a command to select the mathb font.
  \newcommand{\mathbfont}{\usefont{U}{mathb}{m}{n}}
\fi    % ABX test

\newif\ifFC
\newcommand\FC{\pkgname{fc}}
\IfStyFileExists{fclfont}
  {\FCtrue
   \let\origlbrace=\{
   \let\origrbrace=\}
   \let\origbar=\|
   \let\origdollar=\$
   \let\origspace=\_
   \let\origS=\S
   \let\origpounds=\pounds
   \input{t4enc.def}
   \DeclareTextAccent{\FCbar}{T4}{'277}% single universal accent
   \global\let\{=\origlbrace
   \global\let\}=\origrbrace
   \global\let\|=\origbar
   \global\let\$=\origdollar
   \global\let\_=\origspace
   \global\let\S=\origS
   \global\let\pounds=\origpounds
   \let\origtextsterling=\textsterling
   \gdef\textsterling{{\fontencoding{TS1}\selectfont\origtextsterling}}
  }
  {}

% skak should be loaded before ascii because their \FF macros conflict.
% (skak's \FF is not a symbol so it can simply be set to \relax.)
\newif\ifSKAK
\newcommand\SKAK{\pkgname{skak}}
\IfStyFileExists{skak}
  {\SKAKtrue
   \savesymbol{etc}
   \savesymbol{see}
   \usepackage{skak}
   \restoresymbol{SKAK}{etc}
   \restoresymbol{SKAK}{see}
   \let\FF=\relax
  }
  {}

\newif\ifASCII
\newcommand\ASCII{\pkgname{ascii}}
\IfStyFileExists{ascii}
  {\ASCIItrue
   \savesymbol{HT}
   \usepackage{ascii}
   \restoresymbol{ascii}{HT}
  }
  {}

\newif\ifARK                           % ark10 and dingbat fonts
\newcommand\ARK{\pkgname{dingbat}}
\IfStyFileExists{dingbat}
  {\ARKtrue
   \savesymbol{checkmark}
   \usepackage{dingbat}
   \restoresymbol{ARK}{checkmark}
   \DeclareRobustCommand{\ARKlargepencil}{\largepencil\rule{0pt}{7ex}}
  }
  {}

\newif\ifSKULL
\newcommand\SKULL{\pkgname{skull}}
\IfStyFileExists{skull}
  {\SKULLtrue
   \let\origDeclareSymbolFont=\DeclareSymbolFont
   \let\origDeclareMathSymbol=\DeclareMathSymbol
   \def\DeclareSymbolFont##1##2##3##4##5{}
   \def\DeclareMathSymbol##1##2##3##4{}
   \usepackage{skull}
   \let\DeclareSymbolFont=\origDeclareSymbolFont
   \let\DeclareMathSymbol=\origDeclareMathSymbol
   \newcommand{\skull}{{\usefont{U}{skulls}{m}{n}\char'101}}
  }
  {}

\newif\ifEUSYM
\newcommand\EUSYM{\pkgname{eurosym}}
\IfStyFileExists{eurosym}
  {\EUSYMtrue\usepackage{eurosym}}
  {}

\newif\ifESV
\newcommand\ESV{\pkgname{esvect}}
\IfStyFileExists{esvect}
  {\ESVtrue
   \usepackage{esvect}
   \DeclareMathSymbol{\fldra}{\mathrel}{esvector}{'021}
   \DeclareMathSymbol{\fldrb}{\mathrel}{esvector}{'022}
   \DeclareMathSymbol{\fldrc}{\mathrel}{esvector}{'023}
   \DeclareMathSymbol{\fldrd}{\mathrel}{esvector}{'024}
   \DeclareMathSymbol{\fldre}{\mathrel}{esvector}{'025}
   \DeclareMathSymbol{\fldrf}{\mathrel}{esvector}{'026}
   \DeclareMathSymbol{\fldrg}{\mathrel}{esvector}{'027}
   \DeclareMathSymbol{\fldrh}{\mathrel}{esvector}{'030}
  }
  {}

% yfonts re-encodes \aa and \AA as LY, so we have to re-re-encode them
% as OT1.
\IfStyFileExists{yfonts}
  {\usepackage{yfonts}
   \DeclareTextCommand{\aa}{OT1}{{\accent23a}}
   \DeclareTextCommand{\AA}{OT1}{{\accent23A}}}
  {}

\newif\ifYH
\newcommand\YH{\pkgname{yhmath}}
\IfStyFileExists{yhmath}
  {\YHtrue
   \let\origRequirePackage=\RequirePackage    % We don't want amsmath loaded.
   \def\RequirePackage##1{}
   \usepackage{yhmath}
   \let\RequirePackage=\origRequirePackage
  }
  {}

% At the time of this writing we're completely out of math alphabets.
% (Knuth shortsightedly assumed that 16 would be plenty for anyone.)
% Hence, instead of loading the esint package we manually define all of
% its characters as text characters.  Yuck.
\newif\ifES
\newcommand\ES{\pkgname{esint}}
\IfStyFileExists{esint}
  {\EStrue
   % Center an esint character against an ordinary integral.
   \newsavebox{\esbox}
   \newlength{\intcenterdelta}
   \newcommand{\esintchar}[1]{%
     \ifodd##1
       \sbox{\esbox}{$\int$}%
     \else
       \sbox{\esbox}{$\displaystyle\int$}%
     \fi
     \setlength  {\intcenterdelta}{0.5\ht\esbox}%
     \addtolength{\intcenterdelta}{-0.5\dp\esbox}%
     \sbox{\esbox}{\usefont{U}{esint}{m}{n}\char##1\relax}%
     \addtolength{\intcenterdelta}{-0.5\ht\esbox}%
     \addtolength{\intcenterdelta}{0.5\dp\esbox}%
     \raisebox{\intcenterdelta}{\usebox{\esbox}}%
   }
   % Manually define all of the characters we care about.
   \newcommand{\ESintT}{\esintchar{'001}}
   \newcommand{\ESintD}{\esintchar{'002}}
   \newcommand{\ESiintT}{\esintchar{'003}}
   \newcommand{\ESiintD}{\esintchar{'004}}
   \newcommand{\ESiiintT}{\esintchar{'005}}
   \newcommand{\ESiiintD}{\esintchar{'006}}
   \newcommand{\ESiiiintT}{\esintchar{'007}}
   \newcommand{\ESiiiintD}{\esintchar{'010}}
   \newcommand{\ESdotsintT}{\esintchar{'011}}
   \newcommand{\ESdotsintD}{\esintchar{'012}}
   \newcommand{\ESointT}{\esintchar{'013}}
   \newcommand{\ESointD}{\esintchar{'014}}
   \newcommand{\ESoiintT}{\esintchar{'015}}
   \newcommand{\ESoiintD}{\esintchar{'016}}
   \newcommand{\ESsqintT}{\esintchar{'017}}
   \newcommand{\ESsqintD}{\esintchar{'020}}
   \newcommand{\ESsqiintT}{\esintchar{'021}}
   \newcommand{\ESsqiintD}{\esintchar{'022}}
   \newcommand{\ESointctrclockwiseT}{\esintchar{'027}}
   \newcommand{\ESointctrclockwiseD}{\esintchar{'030}}
   \newcommand{\ESointclockwiseT}{\esintchar{'031}}
   \newcommand{\ESointclockwiseD}{\esintchar{'032}}
   \newcommand{\ESvarointclockwiseT}{\esintchar{'033}}
   \newcommand{\ESvarointclockwiseD}{\esintchar{'034}}
   \newcommand{\ESvarointctrclockwiseT}{\esintchar{'035}}
   \newcommand{\ESvarointctrclockwiseD}{\esintchar{'036}}
   \newcommand{\ESfintT}{\esintchar{'037}}
   \newcommand{\ESfintD}{\esintchar{'040}}
   \newcommand{\ESvaroiintT}{\esintchar{'041}}
   \newcommand{\ESvaroiintD}{\esintchar{'042}}
   \newcommand{\ESlandupintT}{\esintchar{'043}}
   \newcommand{\ESlandupintD}{\esintchar{'044}}
   \newcommand{\ESlanddownintT}{\esintchar{'045}}
   \newcommand{\ESlanddownintD}{\esintchar{'046}}
  }
  {}

\newif\ifMDOTS
\newcommand\MDOTS{\pkgname{mathdots}}
\IfStyFileExists{mathdots}
  {\MDOTStrue
   \savesymbol{ddots}
   \savesymbol{vdots}
   \savesymbol{iddots}
   \savesymbol{dddot}
   \savesymbol{ddddot}
   \usepackage{mathdots}
   \restoresymbol{MDOTS}{ddots}
   \restoresymbol{MDOTS}{vdots}
   \restoresymbol{MDOTS}{iddots}
   \restoresymbol{MDOTS}{dddot}
   \restoresymbol{MDOTS}{ddddot}
  }
  {}

\newif\ifTRSYM
\newcommand\TRSYM{\pkgname{trsym}}
\IfStyFileExists{trsym}
  {% We're painfully low on math alphabets so we define trsym's symbols in
   % text mode.
   \TRSYMtrue
   \newcommand{\transfsymbol}[1]{{\usefont{U}{trsy}{m}{n}##1}}
   \let\origDeclareSymbolFont=\DeclareSymbolFont
   \let\origDeclareMathSymbol=\DeclareMathSymbol
   \renewcommand{\DeclareSymbolFont}[5]{}
   \renewcommand{\DeclareMathSymbol}[4]{\gdef##1{\transfsymbol{\char##4}}}
   \usepackage{trsym}
   \let\DeclareSymbolFont=\origDeclareSymbolFont
   \let\DeclareMathSymbol=\origDeclareMathSymbol
  }
  {}

% We use the *-form of \IfStyFileExists, because the package is named
% "universa", while the .sty file is named "uni.sty".
\makeatletter
\newif\ifUNI
\newcommand\UNI{\pkgname{universa}}
\IfStyFileExists*{uni}
  {\@cons\foundpkgs{{universa}}
   \UNItrue
   \usepackage{uni}
   \expandafter\xdef\csname ver@universa.sty\endcsname{%
     \csname ver@uni.sty\endcsname}
   % Redefine all of uni's non-textual symbols to use the Universal font.
   \renewcommand{\bausquare}{{\usefont{OT1}{uni}{m}{n}\char"00}}
   \renewcommand{\baucircle}{{\usefont{OT1}{uni}{m}{n}\char"01}}
   \renewcommand{\bautriangle}{{\usefont{OT1}{uni}{m}{n}\char"02}}
   \renewcommand{\bauhead}{{\usefont{OT1}{uni}{m}{n}\char"03}}
   \renewcommand{\bauforms}{{\usefont{OT1}{uni}{m}{n}\char"04}}
  }
  {\completefalse\@cons\missingpkgs{{universa}}}
\makeatother

\newif\ifUPGR
\newcommand\UPGR{\pkgname{upgreek}}
\IfStyFileExists{upgreek}
  {% We're painfully low on math alphabets so we define upgreek's symbols
   % in text mode.
   \UPGRtrue
   \let\origDeclareSymbolFont=\DeclareSymbolFont
   \let\origDeclareMathSymbol=\DeclareMathSymbol
   \let\origSetSymbolFont=\SetSymbolFont
   \renewcommand{\DeclareSymbolFont}[5]{}
   \renewcommand{\DeclareMathSymbol}[4]{%
     \newcommand{##1}{{\usefont{U}{psy}{m}{n}\char##4}}%
   }
   \renewcommand{\SetSymbolFont}[6]{}
   \usepackage[Symbol]{upgreek}
   \DeclareFontFamily{U}{eur}{\skewchar\font'177}
   \DeclareFontShape{U}{eur}{m}{n}{%
     <-6> eurm5 <6-8> eurm7 <8-> eurm10}{}
   \let\DeclareSymbolFont=\origDeclareSymbolFont
   \let\DeclareMathSymbol=\origDeclareMathSymbol
   \let\SetSymbolFont=\origSetSymbolFont
  }
  {}

% overrightarrow depends upon various macros that are defined by AMS.
\newif\ifORA
\newcommand\ORA{\pkgname{overrightarrow}}
\makeatletter
\ifAMS
  \IfStyFileExists{overrightarrow}
    {\ORAtrue
     \savesymbol{Rightarrowfill@}
     \usepackage{overrightarrow}
     \restoresymbol{ORA}{Rightarrowfill@}
     \renewcommand{\Overrightarrow}{\mathpalette{\overarrow@\ORARightarrowfill@}}
    }
    {}
\fi    % AMS test
\makeatother

\newif\ifCHEMA
\newcommand\CHEMA{\pkgname{chemarr}}
\IfStyFileExists{chemarr}
  {\CHEMAtrue
   \let\origRequirePackage=\RequirePackage
   \renewcommand{\RequirePackage}[1]{}
   \usepackage{chemarr}
   \let\RequirePackage=\origRequirePackage
  }
  {}

\newif\ifCHEMB
\newcommand\CHEMB{\pkgname{chemarrow}}
\IfStyFileExists{chemarrow}
  {\CHEMBtrue\usepackage{chemarrow}}
  {}

% nath is another of those "problem packages" that redefine just about
% everything.  To make nath work in this document we need to explicitly
% define only those symbols that we actually need.
\newif\ifNATH
\newcommand\NATH{\pkgname{nath}}
\makeatletter
\IfStyFileExists{nath}
  {\NATHtrue
   \def\vin{\mathrel{\hbox{\hglue .1ex
     \vrule \@height .06ex \@width 1ex
     \vrule \@height 1.33ex \@width .06ex
     \hglue .4ex}}}

   \def\niv{\mathrel{\hbox{\hglue .2ex
     \vrule \@height 1.33ex \@width .06ex
     \vrule \@height .06ex \@width 1ex
     \hglue .5ex}}}

   % The following was derived from nath's \extend@delim macro.
   \newcommand*{\nathrep}[2]{%
     \setbox0\hbox{$\displaystyle##2$}%
     \count@=0
     \loop\ifnum\count@<##1
      ##2%
      \hskip -.75\wd0 \hskip .25ex%
      \advance\count@ by 1%
     \repeat
   }
   \newcommand*{\nathdouble}[1]{\nathrep{2}{##1}}
   \newcommand*{\nathtriple}[1]{\nathrep{3}{##1}}
  }
  {}
\makeatother

\newif\ifTRF
\newcommand\TRF{\pkgname{trfsigns}}
\IfStyFileExists{trfsigns}
  {\TRFtrue\usepackage{trfsigns}}
  {}

\newif\ifMTOOLS
\newcommand\MTOOLS{\pkgname{mathtools}}
\IfStyFileExists{mathtools}
  {\MTOOLStrue
   \savesymbol{xleftrightarrow} \savesymbol{xLeftarrow}
   \savesymbol{xRightarrow} \savesymbol{xLeftrightarrow}
   \savesymbol{xrightharpoondown} \savesymbol{xrightharpoonup}
   \savesymbol{xleftharpoondown} \savesymbol{xleftharpoonup}
   \savesymbol{xleftrightharpoons} \savesymbol{xrightleftharpoons}
   \savesymbol{xhookleftarrow} \savesymbol{xhookrightarrow}
   \savesymbol{xmapsto} \savesymbol{underbracket}
   \savesymbol{overbracket} \savesymbol{lparen} \savesymbol{rparen}
   \savesymbol{dblcolon} \savesymbol{coloneqq} \savesymbol{Coloneqq}
   \savesymbol{coloneq} \savesymbol{Coloneq} \savesymbol{eqqcolon}
   \savesymbol{Eqqcolon} \savesymbol{eqcolon} \savesymbol{Eqcolon}
   \savesymbol{colonapprox} \savesymbol{Colonapprox}
   \savesymbol{colonsim} \savesymbol{Colonsim} \savesymbol{overbrace}
   \savesymbol{underbrace}

   % The mathtools package delays the definitions of some of its symbols
   % to the \begin{document}.  We redefine \AtBeginDocument to force
   % mathtools to define everything immediately.
   \let\origAtBeginDocument=\AtBeginDocument
   \def\AtBeginDocument##1{##1}
   \usepackage[donotfixamsmathbugs]{mathtools}
   \let\AtBeginDocument=\origAtBeginDocument

   \restoresymbol{MTOOLS}{xleftrightarrow}
   \restoresymbol{MTOOLS}{xLeftarrow}
   \restoresymbol{MTOOLS}{xRightarrow}
   \restoresymbol{MTOOLS}{xLeftrightarrow}
   \restoresymbol{MTOOLS}{xrightharpoondown}
   \restoresymbol{MTOOLS}{xrightharpoonup}
   \restoresymbol{MTOOLS}{xleftharpoondown}
   \restoresymbol{MTOOLS}{xleftharpoonup}
   \restoresymbol{MTOOLS}{xleftrightharpoons}
   \restoresymbol{MTOOLS}{xrightleftharpoons}
   \restoresymbol{MTOOLS}{xhookleftarrow}
   \restoresymbol{MTOOLS}{xhookrightarrow}
   \restoresymbol{MTOOLS}{xmapsto}
   \restoresymbol{MTOOLS}{underbracket}
   \restoresymbol{MTOOLS}{overbracket} \restoresymbol{MTOOLS}{lparen}
   \restoresymbol{MTOOLS}{rparen} \restoresymbol{MTOOLS}{dblcolon}
   \restoresymbol{MTOOLS}{coloneqq} \restoresymbol{MTOOLS}{Coloneqq}
   \restoresymbol{MTOOLS}{coloneq} \restoresymbol{MTOOLS}{Coloneq}
   \restoresymbol{MTOOLS}{eqqcolon} \restoresymbol{MTOOLS}{Eqqcolon}
   \restoresymbol{MTOOLS}{eqcolon} \restoresymbol{MTOOLS}{Eqcolon}
   \restoresymbol{MTOOLS}{colonapprox}
   \restoresymbol{MTOOLS}{Colonapprox}
   \restoresymbol{MTOOLS}{colonsim} \restoresymbol{MTOOLS}{Colonsim}
   \restoresymbol{MTOOLS}{overbrace} \restoresymbol{MTOOLS}{underbrace}

   % Some of the above are defined in terms of \dblcolon.  At the time
   % of this writing it doesn't seem like any other package uses the
   % name \dblcolon so it should be safe to retain its mathtools
   % definition.
   \let\dblcolon=\MTOOLSdblcolon
  }
  {}

% We don't actually load the following as their symbols are all
% implemented in terms of existing symbols and we need to save math
% alphabets.
\newcommand\MC{\pkgname{mathcomp}}
\newcommand\GSYMB{\pkgname{gensymb}}

\newif\ifPHAI
\newcommand\PHAI{\pkgname{phaistos}}
\IfStyFileExists{phaistos}
  {\PHAItrue\usepackage{phaistos}}
  {}

\newif\ifARCS
\newcommand\ARCS{\pkgname{arcs}}
\IfStyFileExists{arcs}
  {\ARCStrue
   \usepackage{arcs}
   \def\RSpercentTolerance{5}  % Prevent \overarc and \underarc from hanging.
  }
  {}

% If we have t5enc.def, use it and its prerequisite definitions directly
% instead of loading vietnam.sty or dblaccent.sty, as these affect other
% things in the document.
\newif\ifVIET
\newcommand\VIET{\pkgname{vntex}}
\makeatletter
\IfStyFileExists{vietnam}
  {\VIETtrue\input{t5enc.def}}
  {}
\makeatother

\newif\ifPHONFC
\newcommand\PHONFC{\pkgname{t4phonet}}
\makeatletter
\IfStyFileExists{t4phonet}
  {\PHONFCtrue
   \let\origDeclareTextSymbol=\DeclareTextSymbol
   \let\origDeclareTextAccent=\DeclareTextAccent
   \renewcommand{\DeclareTextSymbol}[3]{%
     \edef\PHONFCsym{\expandafter\@gobble\string##1}%
     \expandafter\origDeclareTextSymbol\expandafter{%
       \csname PHONFC\PHONFCsym\endcsname}{##2}{##3}%
   }
   \renewcommand{\DeclareTextAccent}[3]{%
     \edef\PHONFCsym{\expandafter\@gobble\string##1}%
     \expandafter\origDeclareTextAccent\expandafter{%
       \csname PHONFC\PHONFCsym\endcsname}{##2}{##3}%
   }
   \usepackage{t4phonet}
   \let\DeclareTextSymbol=\origDeclareTextSymbol
   \let\DeclareTextAccent=\origDeclareTextAccent
  }
  {}
\makeatother

\newif\ifHOPO
\newcommand\HOPO{\pkgname{holtpolt}}
\IfStyFileExists{holtpolt}
  {\HOPOtrue\usepackage{holtpolt}}
  {}

\newif\ifSMTR
\newcommand\SMTR{\pkgname{semtrans}}
\IfStyFileExists{semtrans}
  {\SMTRtrue
   % semtrans's use of DeclareMathSymbol screws up \lhook and \rhook.
   \let\origDeclareMathSymbol=\DeclareMathSymbol
   \renewcommand{\DeclareMathSymbol}[4]{}
   \savesymbol{U}
   \savesymbol{D}
   \savesymbol{T}
   \usepackage{semtrans}
   \restoresymbol{smtr}{U}
   \restoresymbol{smtr}{D}
   \restoresymbol{smtr}{T}
   \let\DeclareMathSymbol=\origDeclareMathSymbol
  }
  {}

\newif\ifDICT
\newcommand\DICT{\pkgname{dictsym}}
\IfStyFileExists{dictsym}
  {\DICTtrue\usepackage{dictsym}}
  {}

\newif\ifEXTAR
\newcommand\EXTAR{\pkgname{extarrows}}
\IfStyFileExists{extarrows}
  {\EXTARtrue
   \savesymbol{xLeftrightarrow}
   \savesymbol{xleftrightarrow}
   \usepackage{extarrows}
   \restoresymbol{EXTAR}{xLeftrightarrow}
   \restoresymbol{EXTAR}{xleftrightarrow}
  }
  {}

\newif\ifPROTO
\newcommand\PROTO{\pkgname{protosem}}
\IfStyFileExists{protosem}
  {\PROTOtrue\usepackage{protosem}}
  {}

\newif\ifHARM
\newcommand\HARM{\pkgname{harmony}}
\IfStyFileExists{harmony}
  {\HARMtrue
   \let\orignewcommand=\newcommand
   \let\newcommand=\DeclareRobustCommand
   \savesymbol{HH}
   \usepackage{harmony}
   \restoresymbol{harm}{HH}
   \let\newcommand=\orignewcommand
  }
  {}

\newif\ifHIER
\newcommand\HIER{\pkgname{hieroglf}}
\IfStyFileExists{hieroglf}
  {\HIERtrue\usepackage{hieroglf}}
  {}

\newif\ifCCLIC
\newcommand\CCLIC{\pkgname{cclicenses}}
\IfStyFileExists{cclicenses}
  {\CCLICtrue
   \usepackage{cclicenses}
   % cclicenses doesn't get along with textcomp's remapping of
   % \textcircled to the TS1 font encoding.  Mapping it back doesn't
   % _seem_ to cause any problems.
   \DeclareTextAccentDefault{\textcircled}{OMS}
  }
  {}

% The mathdesign package primarily redefines all of the existing
% mathematical symbols and is therefore a pain to load.  Hence, we just
% check if it exists and then manually define all of the symbols we care
% about (i.e., those offered only by mathdesign).
\newif\ifMDES
\newcommand\MDES{\pkgname{mathdesign}}
\IfStyFileExists{mathdesign}
  {\MDEStrue
   % Symbols from mdputrma
   \DeclareFontEncoding{MDA}{}{}
   \DeclareFontFamily{MDA}{mdput}{}
   \DeclareFontShape{MDA}{mdput}{m}{n}{<-> mdputrma}{}
   \newcommand*{\textMDESa}[1]{{\usefont{MDA}{mdput}{m}{n}##1}}
   \DeclareRobustCommand{\MDESudtimes}{\textMDESa{\char"5D}}
   \DeclareRobustCommand{\MDESutimes}{\textMDESa{\char"5E}}
   \DeclareRobustCommand{\MDESdtimes}{\textMDESa{\char"5F}}
   % Symbols from mdputrmb
   \DeclareFontEncoding{MDB}{}{}
   \DeclareFontFamily{MDB}{mdput}{}
   \DeclareFontShape{MDB}{mdput}{m}{n}{<-> mdputrmb}{}
   \newcommand*{\textMDESb}[1]{{\usefont{MDB}{mdput}{m}{n}##1}}
   \DeclareRobustCommand{\MDESsmallin}{\textMDESb{\char"0}}
   \DeclareRobustCommand{\MDESsmallowns}{\textMDESb{\char"1}}
   \DeclareRobustCommand{\MDESnotsmallin}{\textMDESb{\char"2}}
   \DeclareRobustCommand{\MDESnotsmallowns}{\textMDESb{\char"3}}
   \DeclareRobustCommand{\MDESrightangle}{\textMDESb{\char"4}}
   \newcommand*{\MDESintsm}[1]{\raisebox{2ex}{\textMDESb{\char##1}}}
   \newcommand*{\MDESint}[1]{\raisebox{3ex}{\textMDESb{\char##1}}}
   \DeclareRobustCommand{\MDESintclockwisesm}{\MDESintsm{"80}}
   \DeclareRobustCommand{\MDESintclockwise}{\MDESint{"81}}
   \DeclareRobustCommand{\MDESointctrclockwisesm}{\MDESintsm{"82}}
   \DeclareRobustCommand{\MDESointctrclockwise}{\MDESint{"83}}
   \DeclareRobustCommand{\MDESointclockwisesm}{\MDESintsm{"84}}
   \DeclareRobustCommand{\MDESointclockwise}{\MDESint{"85}}
   \DeclareRobustCommand{\MDESoiintsm}{\MDESintsm{"86}}
   \DeclareRobustCommand{\MDESoiint}{\MDESint{"87}}
   \DeclareRobustCommand{\MDESoiiintsm}{\MDESintsm{"88}}
   \DeclareRobustCommand{\MDESoiiint}{\MDESint{"89}}
   % Symbols from mdputr7y
   \DeclareFontFamily{OMS}{mdput}{}
   \DeclareFontShape{OMS}{mdput}{m}{n}{<-> mdputr7y}{}
   \newcommand*{\textMDESy}[1]{{\usefont{OMS}{mdput}{m}{n}##1}}
   \DeclareRobustCommand{\MDESin}{\textMDESy{\char"32}}
   \DeclareRobustCommand{\MDESowns}{\textMDESy{\char"33}}
   \DeclareRobustCommand{\MDESnotin}{\textMDESy{\char"36}\textMDESy{\char"32}}
   % Symbols from mdputr7v
   \DeclareFontFamily{OMX}{mdput}{}
   \DeclareFontShape{OMX}{mdput}{m}{n}{<-> mdputr7v}{}
   \DeclareFontFamily{OMX}{mdbch}{}
   \DeclareFontShape{OMX}{mdbch}{m}{n}{<-> mdbchr7v}{}
   \DeclareFontFamily{OMX}{mdugm}{}
   \DeclareFontShape{OMX}{mdugm}{m}{n}{<-> mdugmr7v}{}
   \newcommand*{\textMDESv}[1]{{\usefont{OMX}{mdput}{m}{n}##1}}
   \newbox\MDESwavebox
   \DeclareRobustCommand{\MDESleftwavelet}{\textMDESv{\char"D0}}
   \DeclareRobustCommand{\MDESleftwave}{%
     \setbox\MDESwavebox=\hbox{\textMDESv{\char"D0}}
     \raisebox{-1.5\dp\MDESwavebox}{\vbox to 4\dp\MDESwavebox{\cleaders\copy\MDESwavebox\vfill}}}
   \DeclareRobustCommand{\MDESleftevawlet}{\textMDESv{\char"D1}}
   \DeclareRobustCommand{\MDESleftevaw}{%
     \setbox\MDESwavebox=\hbox{\textMDESv{\char"D1}}
     \raisebox{-1.5\dp\MDESwavebox}{\vbox to 4\dp\MDESwavebox{\cleaders\copy\MDESwavebox\vfill}}}
   % Symbols from mdputr8c
   \DeclareRobustCommand{\MDEStexteuro}{{\usefont{TS1}{mdput}{m}{n}\char"BF}}
  }
  {}

\newif\ifAREV
\newcommand\AREV{\pkgname{arev}}
\ifMDES    % AREV requires MDES to function properly.
\makeatletter
\IfStyFileExists{arev}
  {\AREVtrue
   % Store the package date but otherwise do nothing.
   \let\origRequirePackage=\RequirePackage
   \let\RequirePackage=\@gobble
   \usepackage{arev}
   \let\RequirePackage=\origRequirePackage
   % Define the characters we actually plan to display without actually
   % changing the font to Arev Sans.
   \DeclareFontFamily{U}{zavm}{}
   \DeclareFontShape{U}{zavm}{m}{n}{<-> favmr7y}{}
   \newcommand*{\textAREV}[1]{{\usefont{U}{zavm}{m}{n}##1}}
   \DeclareRobustCommand{\varspade}{\textAREV{\char"55}}
   \DeclareRobustCommand{\varheart}{\textAREV{\char"56}}
   \DeclareRobustCommand{\vardiamond}{\textAREV{\char"57}}
   \DeclareRobustCommand{\varclub}{\textAREV{\char"58}}
   \DeclareRobustCommand{\steaming}{\textAREV{\char"59}}
   \DeclareRobustCommand{\AREVquarternote}{\textAREV{\char"5A}}
   \DeclareRobustCommand{\AREVeighthnote}{\textAREV{\char"5B}}
   \DeclareRobustCommand{\AREVsixteenthnote}{\textAREV{\char"5C}}
  }
  {}
\makeatother
\fi

% Aaarrrggghhh!  MnSymbol conflicts with pretty much every mathematical
% symbol and, furthermore, defines most math alphabets than we can
% handle.  The situation has gotten so bad that we replace MnSymbol.sty
% with a generated, "faked" version that uses exclusively text fonts
% and renames all symbols to avoid conflicts.
\newif\ifMNS
\newcommand\MNS{\pkgname{MnSymbol}}
\IfStyFileExists{MnSymbol}
  {\MNStrue
   \let\origProvidesPackage=\ProvidesPackage
   \def\ProvidesPackage##1[##2]{\origProvidesPackage{##1}[##2]\endinput}
   \usepackage{MnSymbol}[2007/01/21]
   \let\ProvidesPackage=\origProvidesPackage
   \usepackage{fakeMnSymbol}
  }
  {}

% Manually define every symbol in cmll so we don't have to use any more
% math alphabets.
\newif\ifCMLL
\newcommand\CMLL{\pkgname{cmll}}
\IfStyFileExists{cmll}
  {\CMLLtrue
   \newcommand*{\textCMLL}[1]{{\usefont{U}{cmllr}{m}{n}##1}}
   \DeclareRobustCommand{\CMLLparr}{\textCMLL{\char0}}
   \DeclareRobustCommand{\CMLLshpos}{\textCMLL{\char1}}
   \DeclareRobustCommand{\CMLLshneg}{\textCMLL{\char2}}
   \DeclareRobustCommand{\CMLLshift}{\textCMLL{\char3}}
   \DeclareRobustCommand{\CMLLcoh}{\textCMLL{\char4}}
   \DeclareRobustCommand{\CMLLscoh}{\textCMLL{\char5}}
   \DeclareRobustCommand{\CMLLincoh}{\textCMLL{\char6}}
   \DeclareRobustCommand{\CMLLsincoh}{\textCMLL{\char7}}
   \DeclareRobustCommand{\CMLLbigwith}{\raisebox{2ex}{\textCMLL{\char8}}}
   \DeclareRobustCommand{\CMLLbigparr}{\raisebox{2ex}{\textCMLL{\char10}}}
  }
  {}

\newif\ifXPFEIL
\newcommand\XPFEIL{\pkgname{extpfeil}}
\IfStyFileExists{extpfeil}
  {\XPFEILtrue
   % extpfeil tries to do a \RequirePackage of stmaryrd with
   % conflicting options from what we used to load stmaryd.  We
   % therefore temporarily make \RequirePackage a no-op to prevent LaTeX
   % from complaining.
   \let\origRequirePackage=\RequirePackage
   \renewcommand*{\RequirePackage}[2][]{}
   \savesymbol{xlongequal}
   \savesymbol{xmapsto}
   \usepackage{extpfeil}
   \restoresymbol{XPFEIL}{xlongequal}
   \restoresymbol{XPFEIL}{xmapsto}
   \let\RequirePackage=\origRequirePackage
  }
  {}

\newif\ifKEYS
\newcommand\KEYS{\pkgname{keystroke}}
\IfStyFileExists{keystroke}
  {\KEYStrue
   \usepackage{keystroke}
   % \Tab and \BSpace's use of \reflectbox confuses our indexing code.
   \DeclareRobustCommand{\keysTab}{\Tab}
   \DeclareRobustCommand{\keysBSpace}{\BSpace}
  }
  {}

% We have no math alphabets left so we trick fge.sty into defining all of
% its characters in text mode.
\newif\ifFGE
\newcommand\FGE{\pkgname{fge}}
\makeatletter
\IfStyFileExists{fge}
  {\FGEtrue
   \let\origDeclareSymbolFont=\DeclareSymbolFont
   \let\origDeclareMathSymbol=\DeclareMathSymbol
   \renewcommand{\DeclareSymbolFont}[5]{}
   \renewcommand{\DeclareMathSymbol}[4]{%
     \newcommand{##1}{{\usefont{U}{##3}{m}{n}\char##4}}%
   }
   \usepackage{fge}
   \newcommand*{\spirituslenisAB}[2]{%
     \leavevmode
     \setbox0=\hbox{##2}%
     \@tempdima=\ht0
     \@tempdimb=\wd0
     \box0\llap{%
       \raisebox{\@tempdima}{%
         \makebox[\@tempdimb]{\usefont{U}{fgerm}{m}{n}\char##1}%
       }%
     }%
   }
   \DeclareRobustCommand{\spirituslenisA}[1]{\spirituslenisAB{"15}{##1}}
   \DeclareRobustCommand{\spirituslenisB}[1]{\spirituslenisAB{"16}{##1}}
   \let\spirituslenis=\spirituslenisA
   \let\DeclareSymbolFont=\origDeclareSymbolFont
   \let\DeclareMathSymbol=\origDeclareMathSymbol
  }
  {}
\makeatother

\newif\ifTURN
\newcommand\TURN{\pkgname{turnstile}}
\IfStyFileExists{turnstile}
  {\TURNtrue\usepackage{turnstile}}
  {}

\newif\ifSIMP
\newcommand\SIMP{\pkgname{simpsons}}
\IfStyFileExists{simpsons}
  {\SIMPtrue
   \usepackage{simpsons}
   \let\origSimpson=\Simpson
   \DeclareRobustCommand{\Simpson}{\origSimpson}
  }
  {}

\newif\ifEDICE
\newcommand\EDICE{\pkgname{epsdice}}
\IfStyFileExists{epsdice}
  {\EDICEtrue
   \usepackage{epsdice}
   \let\origepsdice=\epsdice
   \DeclareRobustCommand{\epsdice}[1]{\origepsdice{##1}}
   \DeclareRobustCommand{\allepsdice}{%
     \epsdice{1}%
     \epsdice{2}%
     \epsdice{3}%
     \epsdice{4}%
     \epsdice{5}%
     \epsdice{6}%
   }
  }
  {}

% feyn provides yet another math font for which we have no room.
% Fortunately, it's relatively easy to define all of its symbols in
% terms of a text font.
\newif\ifFEYN
\newcommand\FEYN{\pkgname{feyn}}
\IfStyFileExists{feyn}
  {\FEYNtrue
   \let\origProvidesPackage=\ProvidesPackage
   \def\ProvidesPackage##1[##2]{\origProvidesPackage{##1}[##2]\endinput}
   \savesymbol{filename}
   \usepackage{feyn}
   \restoresymbol{FEYN}{filename}
   \let\ProvidesPackage=\origProvidesPackage
   \DeclareFontFamily{OMS}{textfeyn}{\skewchar\font'000}
   \DeclareFontShape{OMS}{textfeyn}{m}{n}{%
     <-10.5>feyntext10%
     <10.5-11.5>feyntext11%
     <11.5->feyntext12%
   }{}
   \DeclareRobustCommand{\feyn}[1]{{\usefont{OMS}{textfeyn}{m}{n}##1}}
   \DeclareRobustCommand{\smallbosonloop}{\feyn{\char"20}}
   \DeclareRobustCommand{\bigbosonloop}{\feyn{\char"21}}
  }
  {}

% The universal package defines characters only locally within
% \textbayer or in a group containing \bayer.  Therefore, we need only
% to make \chardef temporarily export its symbols globally.
\newif\ifBAYER
\newcommand\BAYER{\pkgname{universal}}
\IfStyFileExists{universal}
  {\BAYERtrue
   \let\origlcurly=\{
   \let\origrcurly=\}
   \let\origbar=\|
   \let\origS=\S
   \savesymbol{baucircle} \savesymbol{bausquare} \savesymbol{bautriangle}
   \savesymbol{bauforms} \savesymbol{bauhead}
   \usepackage{universal}
   \begingroup
     \def\chardef##1="##2##3{%
       \gdef##1{{\usefont{OT1}{universal}{m}{n}\char"##2##3}}%
     }%
     \bayer
   \endgroup
   \let\{=\origlcurly
   \let\}=\origrcurly
   \let\|=\origbar
   \let\S=\origS
   \restoresymbol{BAYER}{baucircle} \restoresymbol{BAYER}{bausquare}
   \restoresymbol{BAYER}{bautriangle}
   \restoresymbol{BAYER}{bauforms} \restoresymbol{BAYER}{bauhead}
  }
  {}

\newif\ifSTAVE
\newcommand\STAVE{\pkgname{staves}}
\IfStyFileExists{staves}
  {\STAVEtrue\usepackage{staves}}
  {}

\newif\ifIGO
\newcommand\IGO{\pkgname{igo}}
\IfStyFileExists{igo}
  {\savesymbol{black}
   \savesymbol{white}
   \savesymbol{repeat}
   \IGOtrue\usepackage{igo}
   \restoresymbol{IGO}{black}
   \restoresymbol{IGO}{white}
   \restoresymbol{IGO}{repeat}
   % Define a version of \whitestone and \blackstone that avoid
   % bracketed arguments.
   \DeclareRobustCommand{\igowhitestone}[1]{\whitestone[##1]}
   \DeclareRobustCommand{\igoblackstone}[1]{\blackstone[##1]}
  }
  {}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% If we have mflogo.sty, use it.  Otherwise, define \MF the "boring" way.
\IfStyFileExists*{mflogo}
  {\usepackage{mflogo}}
  {\newcommand{\MF}{Metafont}}

% If we have booktabs.sty, use it.  Otherwise, define all its line types
% in terms of \hline and \cline.
\IfStyFileExists*{booktabs}
  {\usepackage{booktabs}}
  {\newcommand{\toprule}{\hline}
   \newcommand{\midrule}{\hline}
   \newcommand{\bottomrule}{\hline}
   \def\cmidrule(##1)##2{\cline{##2}}
  }

% If we have url.sty, use it.  Otherwise, define \url as \texttt.
\IfStyFileExists*{url}
  {\usepackage{url}
   \def\UrlBreaks{}
   \def\UrlBigBreaks{\do/}}
  {\newcommand{\url}[1]{\texttt{##1}}}

% If we have geometry.sty, use it.  Otherwise, a lot of tables are going
% to stick out into the margin.
\makeatletter
\IfStyFileExists*{geometry}
  {\usepackage{geometry}
   \@ifpackagelater{geometry}{2000/01/01}{\geometry{compat2}}
  }
  {}
\makeatother

% If we have multicol.sty, use it.
\newif\ifhavemulticol
\IfStyFileExists*{multicol}
  {\havemulticoltrue\usepackage{multicol}}
  {}

% If we have rotating.sty, use it.
\newif\ifhaverotating
\IfStyFileExists*{rotating}
  {\haverotatingtrue\usepackage{rotating}}
  {}

% If we have cancel.sty, use it.
\newif\ifhavecancel
\IfStyFileExists*{cancel}
  {\havecanceltrue\usepackage{cancel}}
  {}

% If we have slashed.sty, use it.
\newif\ifhaveslashed
\IfStyFileExists*{slashed}
  {\haveslashedtrue\usepackage{slashed}}
  {}

% If we have centernot.sty, use it.
\newif\ifhavecenternot
\IfStyFileExists*{centernot}
  {\havecenternottrue\usepackage{centernot}}
  {}

% If we have the accents package, use it (for an example in the section
% on constructing new symbols).
\newif\ifACCENTS
\IfStyFileExists{accents}
  {\ACCENTStrue
   \savesymbol{undertilde}
   \savesymbol{dddot}
   \savesymbol{ddddot}
   \usepackage{accents}
   \restoresymbol{ACCENTS}{undertilde}
   \restoresymbol{ACCENTS}{dddot}
   \restoresymbol{ACCENTS}{ddddot}
  }
  {}

% If we have the nicefrac package, use it (to show how to typeset fractions).
\newif\ifFRAC
\IfStyFileExists{nicefrac}
  {\FRACtrue
   \usepackage[nice]{nicefrac}
  }
  {}

% If we have the bm package, use it (to show how to typeset bold math).
\newif\ifBM
\IfStyFileExists{bm}
  {\BMtrue
   \usepackage{bm}
  }
  {}

% If we have ot2enc.def, use it (to show how to produce a Cyrillic "sha").
\newif\ifOTII
\IfFileExists{ot2enc.def}
  {\OTIItrue\input{ot2enc.def}}
  {}

% If we have needspace.sty, use it.  Otherwise, define \needspace as a no-op.
\IfStyFileExists*{needspace}
  {\usepackage{needspace}}
  {\newcommand{\needspace}[1]{}}

% If we have type1cm.sty, use it.
\IfStyFileExists*{type1cm}
  {\usepackage{type1cm}}
  {}

% If we have multirow.sty, use it.
\newif\ifhavemultirow
\IfStyFileExists*{multirow}
  {\havemultirowtrue\usepackage{multirow}}
  {}

% If we have simplewick.sty, use it.
\newif\ifhavesimplewick
\IfStyFileExists*{simplewick}
  {\havesimplewicktrue\usepackage{simplewick}}
  {}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Because most (La)TeX builds are limited to 16 math alphabets, we       %
% define our own _text_ commands below instead of doing a \usepackage,   %
% because the latter would invoke a \DeclareMathAlphabet.                %
%                                                                        %

\IfStyFileExists{mathrsfs}
  {\newcommand{\mathscr}[1]{\mbox{\usefont{U}{rsfs}{m}{n} ##1}}}
  {}

\IfStyFileExists{chancery}
  {\newcommand{\mathpzc}[1]{\mbox{\usefont{OT1}{pzc}{m}{it} ##1}}}
  {}

\IfStyFileExists{calligra}
  {\savesymbol{filename}
   \usepackage{calligra}
   \restoresymbol{CAL}{filename}
   \newcommand{\mathcalligra}[1]{\mbox{\usefont{T1}{calligra}{m}{n} ##1}}
  }
  {}

\IfStyFileExists{bbold}
  {\newcommand{\BBmathbb}[1]{\mbox{\usefont{U}{bbold}{m}{n} ##1}}
   % We have to manually define all of the symbols we care about.
   \newcommand{\BBsym}[1]{\ensuremath{\BBmathbb{\char##1}}}
   \newcommand{\Langle}{\BBsym{`<}}
   \newcommand{\Lbrack}{\BBsym{`[}}
   \newcommand{\Lparen}{\BBsym{`(}}
   \newcommand{\bbalpha}{\BBsym{"0B}}
   \newcommand{\bbbeta}{\BBsym{"0C}}
   \newcommand{\bbgamma}{\BBsym{"0D}}
   \newcommand{\Rparen}{\BBsym{`)}}
   \newcommand{\Rbrack}{\BBsym{`]}}
   \newcommand{\Rangle}{\BBsym{"3E}}
  }
  {}

\IfStyFileExists{mbboard}
  {\newcommand{\MBBmathbb}[1]{\mbox{\usefont{OT1}{mbb}{m}{n} ##1}}}
  {}
\ifx\MBBmathbb\undefined
\else
  % Define only the symbols we actually use.
  \newcommand{\bbnabla}{\MBBmathbb{\char"9A}}
  \newcommand{\bbdollar}{\MBBmathbb{\char"24}}
  \newcommand{\bbeuro}{\MBBmathbb{\char"FB}}
  \newcommand{\bbpe}{\MBBmathbb{\char"D4}}
  \newcommand{\bbqof}{\MBBmathbb{\char"D7}}
  \newcommand{\bbyod}{\MBBmathbb{\char"C9}}
  \newcommand{\bbfinalnun}{\MBBmathbb{\char"CF}}

  % The following was copied from mbboard.sty.
  \DeclareFontFamily{OT1}{mbb}{\hyphenchar\font45}
  \DeclareFontShape{OT1}{mbb}{m}{n}{
        <5> <6> <7> <8> <9> <10> gen * mbb
        <10.95> mbb10 <12> <14.4> mbb12 <17.28> <20.74> <24.88> mbb17
        }{}
\fi

\IfStyFileExists{dsfont}
  {\newcommand{\mathds}[1]{\mbox{\usefont{U}{dsrom}{m}{n}##1}}
   \newcommand{\mathdsss}[1]{\mbox{\usefont{U}{dsss}{m}{n}##1}}}
  {}

\IfStyFileExists{bbm}
  {\newcommand{\mathbbm}[1]{\mbox{\usefont{U}{bbm}{m}{n}##1}}
   \newcommand{\mathbbmss}[1]{\mbox{\usefont{U}{bbmss}{m}{n}##1}}
   \newcommand{\mathbbmtt}[1]{\mbox{\usefont{U}{bbmtt}{m}{n}##1}}}
  {}

% \mathfrak is defined by a number of packages, to check for it by name.
\ifx\mathfrak\undefined
\else
  \renewcommand{\mathfrak}[1]{\mbox{\fontencoding{U}\fontfamily{euf}\selectfont#1}}
\fi

% msym10 doesn't have a corresponding LaTeX package.  We establish its
% existence via the msym10.tfm file.  However, this file is not normally
% in LaTeX's input path, so be sure to point LaTeX to it (e.g., by
% copying it into the current directory).
\makeatletter
\IfFileExists{msym10.tfm}
  {\DeclareFontFamily{OT1}{msym}{}
   \DeclareFontShape{OT1}{msym}{m}{n}{ <-> msym10 }{}
   \newcommand{\MSYMmathbb}[1]{\mbox{\fontfamily{msym}\selectfont##1}}
  }
  {\completefalse
   \@cons\missingpkgs{{msym10.tfm}}     % Not really a package
  }
\makeatother

%                                                                        %
%                                                                        %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Resolve the stmaryrd/wasysym \lightning conflict by defining \lightning
% to use stmaryrd in math mode and wasysym in text mode.
\DeclareRobustCommand{\lightning}{\ifmmode\STlightning\else\WASYlightning\fi}

% Index a symbol, which may or may not begin with a backslash.  (Is
% there a better way to do this?)  Also, if symbol is given as an
% optional argument is given, typeset that symbol in the index, as well.
% We define a related macro for indexing accents.  In a previous version
% of this file, \indexaccent additionally included "see also accents" in
% the index.  This became distracting so I made \indexaccent a synonym
% for \indexcommand for the time being.  Because punctuation marks can
% be problematic for makeindex, we define an \indexpunct macro that
% sorts its argument under the comparatively innocuous "_".
\begingroup
 \catcode`\|=0
 \catcode`\\=12
 |gdef|sanitize#1#2!!!{%
   |ifx#1\%
     #2%
   |else%
     #1#2%
   |fi%
}
|endgroup
\makeatletter
  \newcommand{\indexcommand}[2][]{%
    \edef\sanitized{\expandafter\sanitize\string#2!!!}%
    \def\first@arg{#1}%
    \ifx\first@arg\@empty
      \expandafter\index\expandafter{\sanitized=\string\verb+\string#2+}%
    \else
      \expandafter\index\expandafter{\sanitized=\string\verb+\string#2+ (#1)}%
    \fi
  }
  \let\indexaccent=\indexcommand
  \newcommand{\indexpunct}[2][]{%
    \def\first@arg{#1}%
    \ifx\first@arg\@empty
      \expandafter\index\expandafter{_=\string\verb+\string#2+}%
    \else
      \expandafter\index\expandafter{_=\string\verb+\string#2+ (#1)}%
    \fi
  }
\makeatother

% Enable the use of makeindex's nicer-looking gind.ist style.
% I swiped the following from doc.dtx.
\makeatletter
\newif\ifscan@allowed
\def\efill{\hfill\nopagebreak}%
\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus 1fill}%
\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil}%
\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak
           \dotfil~\ignorespaces}%
\makeatother

% If we have the multicol package, typeset the index in three columns instead
% of the usual two.
\ifhavemulticol
  \makeatletter
  \renewenvironment{theindex}{%
    \clearpage
    \section*{\indexname}

    If you're having trouble locating a symbol, try looking under
    ``T'' for ``\texttt{\string\text}$\ldots$''.  Many text-mode
    commands begin with that prefix.  Also, accents are shown
    over/under a gray box, e.g.,~``\,\blackacchack{\'}\,''
    for~``\texttt{\string\'}''.

    Some symbol entries appear to be listed repeatedly.  This happens
    when multiple packages define identical (or nearly identical)
    glyphs with the same symbol name.%
\ifAMS\ifABX
    \footnote{This occurs frequently between \pkgname{amssymb} and
    \pkgname{mathabx}, for example.}
\fi\fi
    \setlength{\columnsep}{1em}%
    \begin{multicols}{3}%
    \let\item\@idxitem
  }{%
    \end{multicols}%
  }
  \makeatother
\fi

% Define a counter to keep track of how many symbols are listed.
% Output this counter to the log file at the end of each run.
% Define \prevtotalsymbols to be the total number of symbols from
% the previous run.
\newcounter{totalsymbols}
\newcommand{\incsyms}{\addtocounter{totalsymbols}{1}}
\makeatletter
\AtEndDocument{%
  \typeout{Number of symbols documented: \thetotalsymbols}
  \immediate\write\@auxout{%
    \noexpand\gdef\noexpand\prevtotalsymbols{\thetotalsymbols}}
}
\makeatother

% Define \prevtotalsymbols as "??" if this is our first run.  Define
% \approxcount as "~" unless explicitly defined otherwise in the .aux
% file.  To get a true count you should count the number of lines in the
% .ind file that contain "\item \verb".  Write an empty definition of
% \approxcount and the correct definition of \prevtotalsymbols to the
% .aux file.
\makeatletter
  \@ifundefined{prevtotalsymbols}{%
    \def\prevtotalsymbols{\fbox{\textbf{??}}}%
  }{}
  \@ifundefined{approxcount}{%
    \def\approxcount{\ensuremath{\sim}}%
  }{}
\makeatother

% If we have color.sty, use it to display accents atop gray boxes in the
% index.  (See below.)  If we don't have color.sty, use black boxes.
\IfStyFileExists*{color}
  {\usepackage{color}
   \newcommand*{\graybox}{\textcolor[gray]{0.7}{\rule[-\adp]{\awd}{\aht}}}}
  {\newcommand*{\graybox}{\rule[-\adp]{\awd}{\aht}}}

% Define \blackacc to display an accented box, given an accent command.
% Define \blackacchack to display an accented "a" and then black out
% the "a".
\newlength\awd
\newlength\aht
\newlength\adp
\settowidth{\awd}{a}
\settoheight{\aht}{a}
\settodepth{\adp}{a}
\advance\aht by \adp
\gdef\blackacchack#1{#1a\llap{\graybox}}
\gdef\blackacc#1{#1{\graybox}}
\gdef\blackacctwo#1{#1{\graybox}{\graybox}}

% Symbol+verbatim for various types of symbols
\def\E#1{%
  \begingroup
    \lccode`|=`\\
    \def\EStruename{ES#1T}
    \lowercase{\incsyms\index{#1=\string\verb+\string|#1+ (\string|\EStruename)}}
  \endgroup
  \csname ES#1T\endcsname & \csname ES#1D\endcsname &
  \ttfamily\expandafter\string\csname#1\endcsname
}
\def\IGOb#1{\incsyms\indexcommand\blackstone
  \indexcommand[\string\igoblackstone{#1}]{#1}\igoblackstone{#1} &
  \ttfamily\string\blackstone[\string#1]}
\def\IGOw#1{\incsyms\indexcommand\whitestone
  \indexcommand[\string\igowhitestone{#1}]{#1}\igowhitestone{#1} &
  \ttfamily\string\whitestone[\string#1]}
\def\Jiv#1#2{\incsyms\indexcommand{#1}{\fontencoding{T4}\selectfont#1#2} &
  \ttfamily\string#1\string{#2\string}}
\makeatletter
  \def\K@opt@arg[#1]#2{\incsyms\indexcommand[#1]{#2}#1 &\ttfamily\string#2}
  \def\K@no@opt@arg#1{\incsyms\indexcommand[#1]{#1}#1 &\ttfamily\string#1}
  \def\K{\@ifnextchar[{\K@opt@arg}{\K@no@opt@arg}}
\makeatother
\def\KED[#1][#2][#3]#4{\incsyms\indexcommand[#1]{#2}#3 &\ttfamily\string#4}
\def\Kfeyn#1{\incsyms\indexcommand[\string\feyn{#1}]{\feyn{#1}}\feyn{#1} &\ttfamily\string\feyn\string{\string#1\string}}
\def\Kp#1{\incsyms\indexpunct[$#1$]{#1}#1 &\ttfamily\string#1}
\def\Ks#1{\incsyms\indexcommand[\string\encone{\string#1}]{#1}{\encone{#1}} &\ttfamily\string#1$^*$}
\def\Kt#1{\incsyms\indexcommand[\string\encone{\string#1}]{#1}{\encone{#1}} &\ttfamily\string#1}
\def\Kv#1{\incsyms\indexcommand[\string\encfive{\string#1}]{#1}{\encfive{#1}} &\ttfamily\string#1}
\def\KN[#1][#2]#3{\incsyms\indexcommand[\string#1]{#3} #1 & #2 & \ttfamily\string#3}
\def\KNbig[#1][#2]#3{\incsyms\indexcommand[\string#2]{#3} #1 & #2 & \ttfamily\string#3}
\makeatletter
  \def\N@opt@arg[#1]#2{\incsyms\indexcommand[$\string#1$]{#2}$#1$ & $\Big#1$ &\ttfamily\string#2}
  \def\N@no@opt@arg#1{\incsyms\indexcommand[$\string#1$]{#1}$#1$ & $\Big#1$ &\ttfamily\string#1}
  \def\N{\@ifnextchar[{\N@opt@arg}{\N@no@opt@arg}}
  \def\Nn[#1]#2{%
    \incsyms\indexcommand[$\string\nathdouble\string#1$]{#2}%
    $\nathdouble#1$ & $\nathdouble{\Big#1}$ & \ttfamily\string#2}
  \def\Nnt#1[#2]#3{%
    \incsyms\indexcommand{\triple}%
    $\nathtriple#2$ & $\nathtriple{\Big#2}$ &
    \ttfamily\expandafter\string\csname#1triple\endcsname\string#3}
  \def\Np@opt@args[#1]{\@ifnextchar[{\Np@two@opt@args[#1]}{\Np@one@opt@arg[#1]}}
  \def\Np@two@opt@args[#1][#2]#3{\incsyms\index{_=\string#2{} ($\string#1$)}$#1$ & $\Big#1$ &\ttfamily\string#3}
  \def\Np@one@opt@arg[#1]#2{\incsyms\indexpunct[$\string#1$]{#2}$#1$ & $\Big#1$ &\ttfamily\string#2}
  \def\Np@no@opt@args#1{\incsyms\indexpunct[$\string#1$]{#1}$#1$ & $\Big#1$ &\ttfamily\string#1}
  \def\Np{\@ifnextchar[{\Np@opt@args}{\Np@no@opt@args}}
  \def\Nbig[#1]#2{\incsyms\indexcommand[$\string\Big\string#1$]{#2}$#1$ & $\Big#1$ &\ttfamily\string#2}
\makeatother
\def\Mt#1{\incsyms\indexcommand[\string\metra\string#1]{#1}\metra#1 &\ttfamily\string#1}
\makeatletter
  \def\Q@opt@arg[#1]#2{\incsyms\indexaccent[\string\blackacchack{\string#1}]{#2}#1{A}#1{a} &
           \ttfamily\string#2\string{A\string}\string#2\string{a\string}}
  \def\Q@no@opt@arg#1{\incsyms\indexaccent[\string\blackacchack{\string#1}]{#1}#1{A}#1{a} &
           \ttfamily\string#1\string{A\string}\string#1\string{a\string}}
  \def\Q{\@ifnextchar[{\Q@opt@arg}{\Q@no@opt@arg}}
\makeatother
\def\Qc#1{\incsyms\indexaccent[\string\blackacc{\string#1}]{#1}#1{A}#1{a} &
         \ttfamily\string#1\string{A\string}\string#1\string{a\string}}
\def\Qe[#1][#2]#3{%
  \incsyms\incsyms\index{_=\string#2{} (\string\blackacchack{\string#1})}%
  #3{A}#3{a} &
  \ttfamily\string#3\string{A\string}\string#3\string{a\string}}
\def\Qt#1{\incsyms\indexaccent[\string\encone{\string\blackacc{\string#1}}]{#1}{\encone{#1{A}#1{a}}} &
          \ttfamily\string#1\string{A\string}\string#1\string{a\string}}

\def\Qpc#1#2{\incsyms\indexcommand{#2}{\raisebox{1pt}{\tiny[#1]}} &
             \ttfamily\string#2\string{A\string}\string#2\string{a\string}}
\def\Qpfc[#1]#2{\incsyms\indexaccent[\string\encfour{\string\blackacchack{\string#1}}]{#2}\encfour{#1{A}#1{a}} &
           \ttfamily\string#2\string{A\string}\string#2\string{a\string}}
\ifFC
  \def\Qiv#1#2{\incsyms\indexaccent[\string\encfour{\string\blackacchack{\string#1}}]{#1}\encfour{#1{A}#1{a}} &
               \ttfamily\string#1\string{A\string}\string#1\string{a\string}$^#2$}
  \def\QivBAR#1{\incsyms\index{_=\string\magicVertname{}
                (\string\encfour{\string\blackacchack{\string\FCbar}})}
                \encfour{\FCbar{A}\FCbar{a}} &
                \ttfamily\string\|\string{A\string}\string\|\string{a\string}$^#1$}
\else
  \def\Qiv#1#2{\Qpc{T4}{#1}$^#2$}
  \def\QivBAR#1{\Qpc{T4}{\|}$^#1$}
\fi
\ifVIET
  \def\Qv#1#2{\incsyms\indexaccent[\string\encfive{\string\blackacchack{\string#1}}]{#1}{\encfive{#1{A}#1{a}}} &
              \ttfamily\string#1\string{A\string}\string#1\string{a\string}$^#2$}
\else
  \def\Qv#1#2{\Qpc{T5}{#1}$^#2$}
\fi
\makeatletter
  % We use \displaystyle so that variable-sized symbols will be big.
  \def\R@opt@arg[#1]#2{\incsyms\indexcommand[$\string#1$]{#2}$#1$ & $\displaystyle#1$ &\ttfamily\string#2}
  \def\R@no@opt@arg#1{\incsyms\indexcommand[$\string#1$]{#1}$#1$ & $\displaystyle#1$ &\ttfamily\string#1}
  \def\R{\@ifnextchar[{\R@opt@arg}{\R@no@opt@arg}}
\makeatother
\def\Tp#1{\incsyms\indexcommand{\ding}\ding{#1} &\ttfamily\string\ding\string{#1\string}}
\def\Tm#1{\incsyms\indexcommand{\maya}$\mayadigit{#1}$ &\ttfamily\string\maya\string{#1\string}}
\newcommand{\V}[2][]{\incsyms#1 & \indexcommand[#2]{#2}#2 &\ttfamily\string#2}
\newcommand{\Vp}[2][]{\incsyms#1 & \indexpunct[$#2$]{#2}#2 &\ttfamily\string#2}
\makeatletter
  \newcommand{\VV}[2]{%
    \incsyms\indexaccent[$\string\blackacc{\string\vv}$]{\vv}%
    \expandafter\let\expandafter\fldrVV\csname fldr#1\endcsname
    \def\vectfill@{\traitfill@\relbaredd\relbareda\fldrVV}%
    $\vv{#2}$ & \texttt{\string\vv\string{#2\string}}
    with package option \optname{esvect}{#1}
  }
  \def\W@opt@arg[#1]#2#3{%
    \incsyms\indexaccent[$\string\blackacc{\string#1}$]{#2}%
    $#1{#3}$ &\ttfamily\string#2\string{#3\string}}
  \def\W@no@opt@arg#1#2{%
    \incsyms\indexaccent[$\string\blackacc{\string#1}$]{#1}%
    $#1{#2}$ &\ttfamily\string#1\string{#2\string}}
  \def\W{\@ifnextchar[{\W@opt@arg}{\W@no@opt@arg}}
\makeatother
\def\Wf#1#2{\incsyms\indexcommand{#1}$#1{#2}$ &\ttfamily\string#1\string{#2\string}}
\def\Ww#1#2#3{\incsyms\indexcommand{#2}$#1{#3}$ &\ttfamily\string#2\string{#3\string}}
\def\Wul#1#2#3{%
  \incsyms\indexaccent[$\string\blackacctwo{\string#1}$]{#1}%
  $#1{#2}{#3}$ &\ttfamily\string#1\string{#2\string}\string{#3\string}}
\makeatletter
  \def\X@opt@arg[#1]#2{\incsyms\indexcommand[$\string#1$]{#2}$#1$ &\ttfamily\string#2}
  \def\X@no@opt@arg#1{\incsyms\indexcommand[$\string#1$]{#1}$#1$ &\ttfamily\string#1}
  \def\X{\@ifnextchar[{\X@opt@arg}{\X@no@opt@arg}}
\makeatother
\def\Y#1{\incsyms\indexcommand[$\string\big\string#1$]{#1}$\big#1$ & $\Bigg#1$ &\ttfamily\string#1}
\def\Z#1{\incsyms\indexcommand[$\string#1$]{#1}\ttfamily\string#1}

% Display and index a command, but not its symbol (\cmd).  \cmdI shows
% the symbol in the index, with optional explicit formatting.  \cmdX is
% the same as \cmdI, but with the optional argument hardwired to the
% command displayed in math mode.  \cmdIp is also similar to \cmdI but
% takes no optional argument and formats its argument with \indexpunct
% instead of \indexcommand.
\makeatletter
\def\cmd#1{\texttt{\string#1}\indexcommand{#1}}
\newcommand{\cmdI}[2][]{%
  \def\first@arg{#1}%
  \ifx\first@arg\@empty
    \texttt{\string#2}\indexcommand[#2]{#2}%
  \else
    \texttt{\string#2}\indexcommand[#1]{#2}%
  \fi
}
\newcommand{\cmdX}[1]{\cmdI[$\string#1$]{#1}}
\newcommand{\cmdW}[1]{\cmdI[$\string\blackacc{\string#1}$]{#1}}
\newcommand{\cmdIp}[1]{\texttt{\string#1}\indexpunct[$#1$]{#1}}
\makeatother


% Redefine the LaTeX commands that are replaced by textcomp.
% This was swiped right out of ltoutenc.dtx, but with "\text..."
% changed to "\ltext...".
\DeclareTextCommandDefault{\ltextcopyright}{\textcircled{c}}
\DeclareTextCommandDefault{\ltextregistered}{\textcircled{\scshape r}}
\DeclareTextCommandDefault{\ltexttrademark}{\textsuperscript{TM}}
\DeclareTextCommandDefault{\ltextordfeminine}{\textsuperscript{a}}
\DeclareTextCommandDefault{\ltextordmasculine}{\textsuperscript{o}}


% Needed by the References section.  This was copy&pasted from ltlogos.dtx.
\makeatletter
\DeclareRobustCommand{\LaT}{L\kern-.36em%
        {\sbox\z@ T%
         \vbox to\ht\z@{\hbox{\check@mathfonts
                              \fontsize\sf@size\z@
                              \math@fontsfalse\selectfont
                              A}%
                        \vss}%
        }%
        \kern-.15em T%
}
\makeatother

% Display a metavariable.
\newcommand{\meta}[1]{$\langle$\textit{#1}$\rangle$}

% Many tables have notes beneath them.  Define an environment in which to
% display such a note, with an optional, superscripted math symbol
% preceding it.
\newenvironment{tablenote}[1][]{
  \makebox[1em]{\ensuremath{^{#1}}}%
  \begin{minipage}[t]{0.75\textwidth}%
  \setlength{\parskip}{2ex}
}{%
  \end{minipage}%
}

% Define various messages we reuse repeatedly.
\newcommand{\twosymbolmessage}{%
  \begin{tablenote}
    Where two symbols are present, the left one is the ``faked'' symbol
    that \latexE{} provides by default, and the right one is the ``true''
    symbol that \TC\ makes available.
  \end{tablenote}
}

\newcommand{\notpredefinedmessage}{%
  \begin{tablenote}[*]
    Not predefined in \latexE.  Use one of the packages
    \pkgname{latexsym}, \pkgname{amsfonts}, \pkgname{amssymb},
    \pkgname{txfonts}, \pkgname{pxfonts}, or \pkgname{wasysym}.
  \end{tablenote}
}

\newcommand{\notpredefinedmessageABX}{%
  \begin{tablenote}[*]
    Not predefined in \latexE.  Use one of the packages
    \pkgname{latexsym}, \pkgname{amsfonts}, \pkgname{amssymb},
    \pkgname{mathabx}, \pkgname{txfonts}, \pkgname{pxfonts}, or
    \pkgname{wasysym}.
  \end{tablenote}
}

\newcommand{\usetextmathmessage}[1][]{%
  \begin{tablenote}[#1]
    It's generally preferable to use the corresponding symbol from
    Table~\vref{math-text} because the symbols in that table work
    properly in both text mode and math mode.
  \end{tablenote}
}

\newcommand{\seedocs}[1]{%
  See the #1 documentation for more information%
}


% Define an environment in which to write a single table of symbols.  The
% environment looks a lot like a table, but it doesn't float, and it gets
% an entry in the table of contents (as a subsubsection that looks like a
% subsection), as opposed to the list of tables.
%
% The first argument is a conditional.  The table will appear only if
% the value of the conditional is true.  The second argument is the
% table's caption.
\makeatletter
\def\fnum@table{\textsc{\tablename}~\thetable}
\newenvironment{symtable}[2][true]{%
  \expandafter\global\expandafter\let%
    \expandafter\ifshowsymtable\csname if#1\endcsname
  \ifshowsymtable
    \noindent%
    \begin{minipage}[t]{\linewidth}    % Prevent page breaks
    \begin{center}
    \addtocounter{table}{1}%
    \protected@edef\@currentlabel{\thetable}%
    \addcontentsline{toc}{subsubsection}{%
      \protect\numberline{\tablename~\thetable:}{#2}}%
    \@makecaption{\fnum@table}{#2}\medskip
    \let\next=\relax
  \else
    % The following was taken verbatim from verbatim.sty.
    \let\do\@makeother\dospecials\catcode`\^^M\active
    \let\verbatim@startline\relax
    \let\verbatim@addtoline\@gobble
    \let\verbatim@processline\relax
    \let\verbatim@finish\relax
    \let\next=\verbatim@
  \fi
  \next
}{%
  \ifshowsymtable
    \end{center}
    \end{minipage}
    \vskip 8ex minus 2ex
  \fi
}
\makeatother

% Same as the above, but allows page breaks.
\makeatletter
\newenvironment{longsymtable}[2][true]{%
  \expandafter\global\expandafter\let
    \expandafter\ifshowsymtable\csname if#1\endcsname
  \ifshowsymtable
    \needspace{7\baselineskip}%
    \mbox{}%
    \begin{center}%
    \addtocounter{table}{1}%
    \protected@edef\@currentlabel{\thetable}%
    \addcontentsline{toc}{subsubsection}{%
      \protect\numberline{\tablename~\thetable:}{#2}}%
    \@makecaption{\fnum@table}{#2}%
    \def\lt@indexed{}%
    \let\next=\relax
  \else
    % The following was taken verbatim from verbatim.sty.
    \let\do\@makeother\dospecials\catcode`\^^M\active
    \let\verbatim@startline\relax
    \let\verbatim@addtoline\@gobble
    \let\verbatim@processline\relax
    \let\verbatim@finish\relax
    \let\next=\verbatim@
  \fi
  \next
}{%
  \ifshowsymtable
    \end{center}
    \let\@elt=\index\lt@indexed  % Close our index ranges.
    \addtocounter{table}{-1}     % Make up for longtable's counter increment.
    \vskip 8ex minus 2ex
  \fi
}
\makeatother

% Define \index-like commands for use with longsymtable that
% automatically apply to the entire table, not just the start of it.
\makeatletter
\newcommand{\ltindex}[1]{%
  \index{#1|(}%
  \@cons{\lt@indexed}{{#1|)}}%
}
\newcommand{\ltidxboth}[2]{\mbox{}\ltindex{#1 #2}\ltindex{#2>#1}}
\makeatother


% Define a table environment that's similar to symtable, except that it
% floats and it doesn't write an entry into the Table of Contents.  This
% is used for tables that contain something other than symbol lists.
\newenvironment{nonsymtable}[1]{%
  \begin{table}[htbp]
  \centering
  \caption{#1}\medskip
}{%
  \end{table}
}

% Do the same as the above, but typeset the table in landscape mode (or
% not, if we haven't loaded the rotating package).
\ifhaverotating
  \newenvironment{nonsymtableL}[1]{%
    \begin{sidewaystable}[htbp]
    \centering
    \caption{#1}\medskip
  }{%
    \end{sidewaystable}
  }
\else
  \newenvironment{nonsymtableL}{\begin{nonsymtable}}{\end{nonsymtable}}
\fi

% Make sure we have enough room in the table of contents for
% the word "Table" at the beginning of each symtable entry.
\makeatletter
\settowidth{\@tempdimc}{Table~999:\hspace*{0.5em}}
\renewcommand*\l@subsubsection{\@dottedtocline{3}{1.5em}{\the\@tempdimc}}
\makeatother

% Paragraphs with tall symbols should get a little extra interline spacing.
\newenvironment{morespacing}[1]{\advance\baselineskip by #1\relax}{\par}

% Sometimes, we need a little more horizontal spacing, too.
\newcommand{\qqquad}{\qquad\quad}

% The following are needed later on for various examples but must be
% declared here in the preamble.
\ifAMS
  \DeclareMathOperator{\newlogsym}{newlogsym}
  \DeclareMathOperator*{\newlogsymSTAR}{newlogsym}
  \DeclareMathOperator{\atan}{atan}
  \DeclareMathOperator*{\lcm}{lcm}
\fi
\DeclareFontFamily{U}{lightbulb}{}
\DeclareFontShape{U}{lightbulb}{m}{n}{<-> lightbulb10}{}
\newcommand{\lightbulb}{{\usefont{U}{lightbulb}{m}{n}A}}

% I prefer \vpageref to say "on the previous page" than its default message.
\def\reftextbefore{on the previous page}

% Use Donald Arseneau's improved float parameters.
\renewcommand{\topfraction}{.85}
\renewcommand{\bottomfraction}{.7}
\renewcommand{\textfraction}{.15}
\renewcommand{\floatpagefraction}{.66}
\renewcommand{\dbltopfraction}{.66}
\renewcommand{\dblfloatpagefraction}{.66}
\setcounter{topnumber}{9}
\setcounter{bottomnumber}{9}
\setcounter{totalnumber}{20}
\setcounter{dbltopnumber}{9}

% Tell pdfLaTeX that all .eps files were produced by MetaPost.
\ifx\pdfoutput\undefined
\else
  \ifx\pdfoutput\relax
  \else
    \ifcase\pdfoutput
    \else
      \DeclareGraphicsExtensions{.png,.pdf,.jpg,.mps,.tif,.eps}
      \DeclareGraphicsRule{.eps}{mps}{*}{}
    \fi
  \fi
\fi

% Define a metavariable for "operating-system prompt".
\newcommand{\osprompt}{\textrm{\textit{prompt}}{\small$>$}\xspace}

% Typeset small, superscripted registered trademarks.
\newcommand{\regtm}{\textsuperscript{\textregistered}\xspace}

% Define an environment for typesetting code samples.
\newsavebox{\codebox}
\newenvironment{codesample}{%
  \begin{lrbox}{\codebox}%
  \begin{minipage}{0.9\linewidth}%
}{%
  \end{minipage}%
  \end{lrbox}%
  \fbox{\usebox{\codebox}}%
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\sloppy
\maketitle

\begin{abstract}
  This document lists \approxcount\prevtotalsymbols{} symbols and the
  corresponding \latex{} commands that produce them.  Some of these
  symbols are guaranteed to be available in every \latexE{} system;
  others require fonts and packages that may not accompany a given
  distribution and that therefore need to be installed.  All of the
  fonts and packages used to prepare this document---as well as this
  document itself---are freely available from the
  Comprehensive\idxCTAN{} \TeX{} Archive Network
  (\url{http://www.ctan.org/}).
\end{abstract}

\tableofcontents

% Now that we've output the table of contents, let's make \section start a
% new page.  I toyed with the idea of changing the documentclass from
% article to report, but I like having the abstract on the same page as
% the title and the start of the table of contents; I want the tables
% numbered consecutively throughout the document; and I like the smaller,
% less gaudy section headings the article class offers.  In short, article
% seems a better fit than report.
\makeatletter
\let\origsection=\section
\renewcommand\section{\@startsection {section}{1}{\z@}%
                                     {-3.5ex \@plus -1ex \@minus -.2ex}%
                                     {2.3ex \@plus.2ex}%
                                     {\clearpage\normalfont\Large\bfseries}}
\makeatother


% Define an integral containing a dash or a double-dash.
\def\Xint#1{\mathchoice
   {\XXint\displaystyle\textstyle{#1}}%
   {\XXint\textstyle\scriptstyle{#1}}%
   {\XXint\scriptstyle\scriptscriptstyle{#1}}%
   {\XXint\scriptscriptstyle\scriptscriptstyle{#1}}%
   \!\int}
\def\XXint#1#2#3{{\setbox0=\hbox{$#1{#2#3}{\int}$}
     \vcenter{\hbox{$#2#3$}}\kern-.5\wd0}}
\def\ddashint{\Xint=}
\def\dashint{\Xint-}


% Many symbols are merely alphanumerics typeset with a math alphabet.
% Guide the user from the most common of these to the Math Alphabets
% table.
%
% QUESTION: How standard are the following?
%    * action (script A)
%    * Bernoulli (script B)
%    * path integral measure (script D)
%    * domain (script D)
%    * expected value (script E)
%    * energy per symbol [communications theory] (script E)
%    * imaginary line (script I)
%    * identity matrix (blackboard bold I)
%    * likelihood (script L)
%    * M matrix (script M)
%    * Mellin transform (script M)
%    * null space (script N)
%    * order of (script o)
%    * radius (script r)
%    * real line (script R)
%    * Schwartz class (script S)
%    * volume (script V)
%
\ifcomplete
  \makeatletter
  \newcommand{\indexMA}[2][]{%
    \def\first@arg{#1}%
    \ifx\first@arg\@empty
      \index{#2|see{alphabets, math}}%
    \else
      \index{#2=#2 (\string#1)|see{alphabets, math}}%
    \fi
  }
  \makeatother
\else
  \newcommand{\indexMA}[2][]{%
    \index{#2|see{alphabets, math}}%
}
\fi
\indexMA[\mathscr{F}]{Fourier transform}
\indexMA[\mathscr{H}]{Hamiltonian}
\indexMA[\mathscr{H}]{Hilbert space}
\indexMA[\mathscr{L}]{Lagrangian}
\indexMA[\mathscr{L}]{Laplace transform}
\indexMA[\mathcal{L}]{Lie derivative}
\indexMA[\mathscr{P}]{power set}
\indexMA[\mathscr{E}]{electromotive force}
\indexMA[\mathcal{O}]{local ring}
\indexMA[$\mathbbm{C}$]{complex numbers}
%\indexMA{imaginary numbers}
\indexMA[$\mathbbm{Z}$]{integers}
\indexMA[$\mathbbm{N}$]{natural numbers}
\indexMA{number sets}
%\indexMA{prime numbers}
\indexMA[$\mathbbm{1}$]{unity}
\indexMA[$\mathbbm{D}$]{open unit disk}
\indexMA[$\mathbbm{D}$]{unit disk}
\indexMA[$\mathbbm{H}$]{quaternions}
\indexMA[$\mathbbm{Q}$]{rational numbers}
\indexMA[$\mathbbm{R}$]{real numbers}
\indexMA[$\mathbbm{T}$]{torus}
\indexMA{script letters}
\indexMA{blackboard bold}
\indexMA{fraktur}
\indexMA{moduli space}
\indexMA{Schwartz distribution spaces}

% Provide "see ..."s for every accent whose name I happen to know.
\index{arc|see{accents}}
\index{breve|see{accents}}
\index{caron|see{accents}}
\index{cedilla|see{accents}}
\index{circumflex|see{accents}}
\index{diaeresis=di\ae{}resis|see{accents}}
\index{hacek=h\'{a}\v{c}ek|see{accents}}
\index{Hungarian umlaut|see{accents}}
\index{macron|see{accents}}
\index{ogonek|see{accents}}
\index{umlaut|see{accents}}

% Provide "see ..."s for the common logical operators.
\index{logical operators>and|see{\texttt{\string\wedge}}}
\index{logical operators>or|see{\texttt{\string\vee}}}
\index{logical operators>not|see{\texttt{\string\neg} \emph{and} \texttt{\string\sim}}}
\index{operators>logical|see{logical operators}}
\index{and|see{\texttt{\string\wedge}}}
\index{or|see{\texttt{\string\vee}}}
\index{not|see{\texttt{\string\neg}}}
\index{conjunction|see{\texttt{\string\wedge}}}
\index{disjunction|see{\texttt{\string\vee}}}
\index{negation|see{\texttt{\string\neg} \emph{and} \texttt{\string\sim}}}
\index{set operators>union|see{\texttt{\string\cup}}}
\index{set operators>intersection|see{\texttt{\string\cap}}}
\index{operators>set|see{set operators}}
\index{union|see{\texttt{\string\cup}}}
\index{intersection|see{\texttt{\string\cap}}}
\index{material implication|see{\texttt{\string\rightarrow} \emph{and} \texttt{\string\supset}}}
\index{material equivalence|see{\texttt{\string\leftrightarrow} \emph{and} \texttt{\string\equiv}}}
\index{material conditional|see{\texttt{\string\rightarrow} \emph{and} \texttt{\string\supset}}}
\index{material biconditional|see{\texttt{\string\leftrightarrow} \emph{and} \texttt{\string\equiv}}}

% Provide "see ..."s for various punctuation marks.
\index{paragraph mark|see{\texttt{\string\P}}}
\index{pilcrow|see{\texttt{\string\P}}}
\index{percent sign|see{\texttt{\string\%}}}
\index{dollar sign|see{\texttt{\string\$}}}
\index{cents|see{\texttt{\string\textcent}}}
\index{hash mark|see{\texttt{\string\#}}}
\index{ampersand|see{\texttt{\string\&}}}
\index{section mark|see{\texttt{\string\S}}}
\index{caret|see{\texttt{\string\^}}}
\index{swung dash|see{\texttt{\string\sim}}}
\index{underscore|see{\texttt{\string\_}}}
\index{less-than signs|see{inequalities}}
\index{greater-than signs|see{inequalities}}
\index{plus-or-minus sign|see{\texttt{\string\pm}}}

% Provide "see ..."s for various musical symbols.
\index{quaver|see{musical symbols}}
\index{semiquaver|see{musical symbols}}
\index{demisemiquaver|see{musical symbols}}
\index{semibreve|see{musical symbols}}
\index{minim|see{musical symbols}}
\index{crotchet|see{musical symbols}}
\index{whole note|see{musical symbols}}
\index{half note|see{musical symbols}}
\index{quarter note|see{musical symbols}}
\index{eighth note|see{musical symbols}}
\index{sixteenth note|see{musical symbols}}
\index{thirty-second note|see{musical symbols}}

% Provide a few other useful "see ..."s.
\index{CTAN|see{Comprehensive \TeX{} Archive Network}}
\index{letters|see{alphabets}}
\index{numbers|see{digits}}
\index{degrees|see{\texttt{\string\textdegree}}}
\index{registered trademark|see{\texttt{\string\textregistered}}}
\index{trademark|see{\texttt{\string\texttrademark}}}
\index{Cedi|see{\texttt{\string\textcolonmonetary}}}
\index{iff=\texttt{\string\iff}|see{\texttt{\string\Longleftrightarrow}}}
\index{derivitive, partial|see{\texttt{\string\partial}}}
\index{to=\texttt{\string\to}|see{\texttt{\string\rightarrow}}}
\index{adjoint=adjoint (\dag)|see{\texttt{\string\dag}}}
\ifAMS
  \index{implies=\texttt{\string\implies}|see{\texttt{\string\Longrightarrow}
    \emph{and} \texttt{\string\vdash}}}
  \index{impliedby=\texttt{\string\impliedby}|see{\texttt{\string\Longleftarrow}}}
  \index{division times|see{\texttt{\string\divideontimes}}}
  \index{does not exist|see{\texttt{\string\nexists}}}
  \index{ring equal to|see{\texttt{\string\circeq}}}
  \index{ring in equal to|see{\texttt{\string\eqcirc}}}
  \index{does not divide|see{\texttt{\string\nmid}}}
  \index{transversality|see{\texttt{\string\pitchfork}}}
  \index{absolute value|see{\texttt{\string\lvert} \emph{and} \texttt{\string\rvert}}}
  \index{norm|see{\texttt{\string\lVert} \emph{and} \texttt{\string\rVert}}}
%  \index{average|see{\texttt{\string\varnothing}}}
\fi    % AMS test
\ifTIPA
%  \index{symbols>dictionary|see{symbols, phonetic}}
%  \index{dictionary symbols|see{phonetic symbols}}
  \index{pronunciation symbols|see{phonetic symbols}}
\fi    % TIPA test
\index{abzuglich=abz\"uglich|see{\texttt{\string\textdiscount}}}
\index{diacritics|see{accents}}
\index{parts per thousand|see{\texttt{\string\textperthousand}}}
\index{thousandths|see{\texttt{\string\textperthousand}}}
\index{millesimal sign|see{\texttt{\string\textperthousand}}}
\index{prescription|see{\texttt{\string\textrecipe}}}
\index{pharmaceutical prescription|see{\texttt{\string\textrecipe}}}
\ifMARV
  \index{Deleatur=\texttt{\string\Deleatur}|see{\texttt{\string\Denarius}}}
  \index{mouse|see{\texttt{\string\ComputerMouse}}}
\fi    % MARV test
\index{playing cards|see{card suits}}
\ifABX
  \index{nibar=\texttt{\string\nibar}|see{\texttt{\string\ownsbar}}}
  \index{ring equal to|see{\texttt{\string\circeq}}}
  \index{ring in equal to|see{\texttt{\string\eqcirc}}}
  \index{cutoff subtraction|see{\texttt{\string\dotdiv}}}
  \index{lsemantic=\texttt{\string\lsemantic}|see{\texttt{\string\ldbrack}}}
  \index{rsemantic=\texttt{\string\rsemantic}|see{\texttt{\string\rdbrack}}}
\fi    % ABX test
\index{rationalized Planck constant|see{\texttt{\string\hbar}}}
\index{options|see{package options}}
\index{cardinality|see{\texttt{\string\aleph}}}
\index{wreath product|see{\texttt{\string\wr}}}
\index{reverse solidus|see{\texttt{\string\textbackslash}}}
\index{radicals|see{\texttt{\string\sqrt} \emph{and} \texttt{\string\surd}}}
\index{roots|see{\texttt{\string\sqrt}}}
\index{square root|see{\texttt{\string\sqrt}}}
\index{square root>hooked|see{\texttt{\string\hksqrt}}}
\index{cube root|see{\texttt{\string\sqrt}}}
\ifcomplete
  \index{return|see{carriage return}}
  \index{heads|see{faces}}
  \index{people|see{faces}}
\fi
\ifTX
  \index{fish hook|see{\texttt{\string\strictif}}}
  \index{par|see{\texttt{\string\invamp}}}
\fi    % TX test
\index{stochastic independence|see{\texttt{\string\bot}}}
\index{independence>stochastic|see{\texttt{\string\bot}}}
\index{orthogonal to|see{\texttt{\string\bot}}}
\index{entails|see{\texttt{\string\models}}}
\index{micro|see{\texttt{\string\textmu}}}
\index{Angstrom unit=\AA{}ngstr\"om unit>math mode|see{\texttt{\string\mathring}}}
\index{Angstrom unit=\AA{}ngstr\"om unit>text mode|see{\texttt{\string\AA}}}
\index{yen|see{\texttt{\string\textyen}}}
\index{equilibrium|see{\texttt{\string\rightleftharpoons}}}
\index{number|see{\texttt{\string\textnumero}}}
\index{ditto marks|see{\texttt{\string\textquotedbl}}}
\index{Weierstrass p function=Weierstrass $\wp$ function|see{\texttt{\string\wp}}}
\index{inexact differential|see{\texttt{\string\dbar}}}
\ifhaveslashed
  \index{reduced quadrupole moment|see{\texttt{\string\rqm}}}
\fi    % haveslashed
\ifST
  \index{banana brackets|see{\texttt{\string\llparenthesis} \emph{and} \texttt{\string\rrparenthesis}}}
  \index{catamorphism|see{\texttt{\string\llparenthesis} \emph{and} \texttt{\string\rrparenthesis}}}
\fi    % ST test
\ifOTII
  \index{impulse train|see{sha}}
  \index{Tate-Shafarevich group|see{sha}}
\fi
\ifSKAK
  \index{king|see{chess symbols}}
  \index{queen|see{chess symbols}}
  \index{castle|see{chess symbols}}
  \index{rook|see{chess symbols}}
  \index{bishop|see{chess symbols}}
  \index{knight|see{chess symbols}}
  \index{pawn|see{chess symbols}}
\fi    % SKAK test
\index{differential, inexact|see{\texttt{\string\dbar}}}
\index{brackets|see{delimiters}}
\ifcomplete
  \index{equivalence|see{\texttt{\string\equiv}, \texttt{\string\leftrightarrow}, \emph{and} \texttt{\string\threesim}}}
\else
  \index{equivalence|see{\texttt{\string\equiv} \emph{and} \texttt{\string\leftrightarrow}}}
\fi
\index{vinculum|see{\texttt{\string\overline}}}
\index{es-zet|see{\texttt{\string\ss}}}
\index{Maxwell-Stefan diffusion coefficient|see{\texttt{\string\DH}}}
\index{Laplacian=Laplacian ($\nabla^2$)|see{\texttt{\string\nabla}}}
\index{Laplacian=Laplacian ($\Delta$)|see{\texttt{\string\Delta}}}
\index{infinity=infinity ($\infty$)|see{\texttt{\string\infty}}}
%\ifx\BBmathbb\undefined\else
%  \index{double summation=double summation ({\usefont{U}{bbold}{m}{n}\char"06})|see{alphabets, math}}
%  \index{summation, double=summation, double ({\usefont{U}{bbold}{m}{n}\char"06})|see{alphabets, math}}
%\fi
\index{evaluated at|see{\texttt{\string\vert}}}
\index{CP1252|see{code page 1252}}
\index{CP437|see{code page 437}}
\ifSIMP
  \index{nuclear power plant|see{\texttt{\string\SNPP}}}
\fi    % SIMP test
\ifcomplete    % Really only needs to be ARK or DING or PI.
  \index{hands|see{fists}}
  \index{printer's fist|see{fists}}
  \index{pointing finger|see{fists}}
  \index{finger, pointing|see{fists}}
\fi    % complete test

% "See also"s should appear after all page references.
\providecommand*\seealso[2]{\emph{\alsoname}#1}
\providecommand*\alsoname{see also}
\AtEndDocument{%
  \index{carriage return|seealso{\string\texttt{\string\string\string\hookleftarrow}}}
  \index{transforms|seealso{alphabets, math}}
  \ifTX
    \index{parallel|seealso{\string\texttt{\string\string\string\varparallel}}}
  \fi
  \ifST
    \index{Plimsoll line|seealso{\string\texttt{\string\string\string\minuso}}}
  \fi
}

% Multiple packages define \multimap.
\makeatletter
  \@ifundefined{multimap}{}{%
    \index{linear implication|see{\texttt{\string\string\string\multimap}}}
    \index{lollipop|see{\texttt{\string\string\string\multimap}}}}
\makeatother

% Minutes/seconds and feet/inches are normally formed with superscripted
% primes.
\index{arcminutes|see{\texttt{\string\prime}}}
\index{angular minutes|see{\texttt{\string\prime}}}
\index{minutes, angular|see{\texttt{\string\prime}}}
\index{feet|see{\texttt{\string\prime} \emph{and}
  \texttt{\string\textquotesingle}}}
\ifABX
  \index{arcseconds|see{\texttt{\string\second}}}
  \index{angular seconds|see{\texttt{\string\second}}}
  \index{seconds, angular|see{\texttt{\string\second}}}
  \index{inches|see{\texttt{\string\second} \emph{and}
    \texttt{\string\textquotedbl}}}
\else
  \index{arcseconds|see{\texttt{\string\prime}}}
  \index{angular seconds|see{\texttt{\string\prime}}}
  \index{seconds, angular|see{\texttt{\string\prime}}}
  \index{inches|see{\texttt{\string\prime} \emph{and}
    \texttt{\string\textquotedbl}}}
\fi

% \notowns can be mapped to various things depending on package availability.
\ifABX
  \ifTX
    \index{notowns=\texttt{\string\notowns}|see{\texttt{\string\notowner}
      \emph{and} \texttt{\string\notni}}}
  \else
    \index{notowns=\texttt{\string\notowns}|see{\texttt{\string\notowner}}}
  \fi
\else
  \ifTX
    \index{notowns=\texttt{\string\notowns}|see{\texttt{\string\notni}}}
  \fi
\fi

% Double brackets are defined by both ST and ABX.
\ifABX
  \ifST
    \index{semantic valuation|see{\texttt{\string\llbracket}/\texttt{\string\rrbracket}
      \emph{and} \texttt{\string\ldbrack}/\texttt{\string\rdbrack}}}
  \else
    \index{semantic valuation|see{\texttt{\string\ldbrack}/\texttt{\string\rdbrack}}}
  \fi
\else
  \ifST
    \index{semantic valuation|see{\texttt{\string\llbracket}/\texttt{\string\rrbracket}}}
  \fi
\fi

% The following were generated automatically from txfonts.sty.
\ifTX
  \index{circledplus=\texttt{\string\circledplus}|see{\texttt{\string\oplus}}}
  \index{circledminus=\texttt{\string\circledminus}|see{\texttt{\string\ominus}}}
  \index{circledtimes=\texttt{\string\circledtimes}|see{\texttt{\string\otimes}}}
  \index{circledslash=\texttt{\string\circledslash}|see{\texttt{\string\oslash}}}
  \index{circleddot=\texttt{\string\circleddot}|see{\texttt{\string\odot}}}
  \index{le=\texttt{\string\le}|see{\texttt{\string\leq}}}
  \index{ge=\texttt{\string\ge}|see{\texttt{\string\geq}}}
  \index{gets=\texttt{\string\gets}|see{\texttt{\string\leftarrow}}}
  \index{to=\texttt{\string\to}|see{\texttt{\string\rightarrow}}}
  \index{owns=\texttt{\string\owns}|see{\texttt{\string\ni}}}
  \index{lnot=\texttt{\string\lnot}|see{\texttt{\string\neg}}}
  \index{land=\texttt{\string\land}|see{\texttt{\string\wedge}}}
  \index{lor=\texttt{\string\lor}|see{\texttt{\string\vee}}}
  \index{restriction=\texttt{\string\restriction}|see{\texttt{\string\upharpoonright}}}
  \index{Doteq=\texttt{\string\Doteq}|see{\texttt{\string\doteqdot}}}
  \index{doublecup=\texttt{\string\doublecup}|see{\texttt{\string\Cup}}}
  \index{doublecap=\texttt{\string\doublecap}|see{\texttt{\string\Cap}}}
  \index{llless=\texttt{\string\llless}|see{\texttt{\string\lll}}}
  \index{gggtr=\texttt{\string\gggtr}|see{\texttt{\string\ggg}}}
  %\index{Box=\texttt{\string\Box}|see{\texttt{\string\square}}}
  \index{ne=\texttt{\string\ne}|see{\texttt{\string\neq}}}
  %\index{notowns=\texttt{\string\notowns}|see{\texttt{\string\notni}}}
  \index{lrJoin=\texttt{\string\lrJoin}|see{\texttt{\string\Join}}}
  %\index{bowtie=\texttt{\string\bowtie}|see{\texttt{\string\lrtimes}}}
  \index{dasharrow=\texttt{\string\dasharrow}|see{\texttt{\string\dashrightarrow}}}
  \index{circledotright=\texttt{\string\circledotright}|see{\texttt{\string\circleddotright}}}
  \index{circledotleft=\texttt{\string\circledotleft}|see{\texttt{\string\circleddotleft}}}
\fi    % TX test

% The following were generated semi-automatically from SYMLIST using:
%   egrep '\text' SYMLIST | sed 's/\\text//' | xargs -i egrep '^{}$' /usr/share/dict/words | xargs -i sh -c 'egrep -q "^\\\\{}$" SYMLIST || echo "\\index{{}|see{\\texttt{\\string\\text{}}}}"' \;
% then editing the result.
\index{blank|see{\texttt{\string\textblank}}}
\index{born|see{\texttt{\string\textborn}}}
\index{died|see{\texttt{\string\textdied}}}
\index{discount|see{\texttt{\string\textdiscount}}}
\index{divorced|see{\texttt{\string\textdivorced}}}
\index{dollar|see{\texttt{\string\textdollar}}}
%\index{ellipsis|see{\texttt{\string\textellipsis}}}
\index{estimated|see{\texttt{\string\textestimated}}}
\index{florin|see{\texttt{\string\textflorin}}}
%\index{greater|see{\texttt{\string\textgreater}}}
\index{leaf|see{\texttt{\string\textleaf}}}
%\index{less|see{\texttt{\string\textless}}}
\index{married|see{\texttt{\string\textmarried}}}
\index{minus|see{\texttt{\string\textminus}}}
\index{ohm|see{\texttt{\string\textohm}}}
%\index{paragraph|see{\texttt{\string\textparagraph}}}
\index{recipe|see{\texttt{\string\textrecipe}}}
%\index{registered|see{\texttt{\string\textregistered}}}
%\index{section|see{\texttt{\string\textsection}}}
\index{sterling|see{\texttt{\string\pounds}}}
%\index{style|see{\texttt{\string\textstyle}}}
%\index{superscript|see{\texttt{\string\textsuperscript}}}
\index{trademark|see{\texttt{\string\texttrademark}}}
%\index{underscore|see{\texttt{\string\textunderscore}}}
\index{won|see{\texttt{\string\textwon}}}
\ifTIPA
  \index{advancing|see{\texttt{\string\textadvancing}}}
  \index{bullseye|see{\texttt{\string\textbullseye}}}
  \index{lowering|see{\texttt{\string\textlowering}}}
  \index{pipe|see{\texttt{\string\textpipe}}}
  \index{raising|see{\texttt{\string\textraising}}}
  \index{retracting|see{\texttt{\string\textretracting}}}
  \index{seagull|see{\texttt{\string\textseagull}}}
\fi    % TIPA test
%\index{swab|see{\texttt{\string\textswab}}}


\section{Introduction}

Welcome to the \doctitle!  This document strives to be your primary
source of \latex{} symbol information: font samples, \latex{}
commands, packages, usage details, caveats---everything needed to put
thousands of different symbols at your disposal.  All of the fonts
covered herein meet the following criteria:

\begin{enumerate}
  \item They are freely available from the Comprehensive\idxCTAN{}
  \TeX{} Archive Network (\url{http://www.ctan.org}).

  \item All of their symbols have \latexE{} bindings.  That is, a user
  should be able to access a symbol by name, not just by
  \cmd{\char}\meta{number}.
\end{enumerate}

\noindent
These are not particularly limiting criteria; the \doctitle{} contains
samples of \approxcount\prevtotalsymbols{} symbols---quite a large
number.  Some of these symbols are guaranteed to be available in every
\latexE{} system; others require fonts and packages that may not
accompany a given distribution and that therefore need to be
installed.  See
\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages+wherefiles}
for help with installing new fonts and packages.


\subsection{Document Usage}

Each section of this document contains a number of font tables.  Each
table shows a set of symbols, with the corresponding \latex{} command
to the right of each symbol.  A table's caption indicates what package
needs to be loaded in order to access that table's symbols.  For
example, the symbols in Table~\ref{old-style-nums}, ``\TC\ Old-Style
Numerals'', are made available by putting
``\cmd{\usepackage}\verb|{textcomp}|'' in your document's preamble.
``\AMS'' means to use the \AMS{} packages, viz.\ \pkgname{amssymb}
and/or \pkgname{amsmath}.  Notes below a table provide additional
information about some or all the symbols in that table.

One\label{altenc} note that appears a few times in this document,
particularly in Section~\ref{body-text-symbols}, indicates that
certain symbols do not exist in the OT1 \fntenc[OT1]
(Donald\index{Knuth, Donald E.} Knuth's original, 7-bit
\fntenc[7-bit], which is the default \fntenc{} for \latex) and that
you should use \pkgname{fontenc} to select a different encoding, such
as T1 (a common 8-bit \fntenc[8-bit]\index{font encodings>T1}).  That
means that you should put
``\cmd{\usepackage}\verb|[|\meta{encoding}\verb|]{fontenc}|'' in your
document's preamble, where \meta{encoding} is, e.g.,
\texttt{T1}\index{font encodings>T1} or \texttt{LY1}\index{font
encodings>LY1}.  To limit the change in \fntenc[limiting scope of] to
the current group, use
``\cmd{\fontencoding}\verb|{|\meta{encoding}\verb|}|\cmd{\selectfont}''.

Section~\ref{addl-info} contains some additional information about the
symbols in this document.  It shows which symbol names are not unique
across packages, gives examples of how to create new symbols out of
existing symbols, explains how symbols are spaced in math mode,
presents a \latex{} ASCII\index{ASCII} and Latin~1\index{Latin 1}
tables, and provides some information about this document itself.  The
\doctitle{} ends with an index of all the symbols in the document and
various additional useful terms.


\ifcomplete

\subsection{Frequently Requested Symbols}

There are a number of symbols that are requested over and over again
on \ctt.  If you're looking for such a symbol the following list will
help you find it quickly.

\newenvironment{symbolfaq}{%
  \ifhavemulticol
    \setlength{\columnsep}{3em}%
    \begin{multicols}{2}%
  \fi
  \setlength{\parskip}{1ex}%
  \newcommand{\faq}[2]{%
    \noindent##1\quad\dotfill\quad\makebox[1em][r]{##2}\par}%
}{%
  \ifhavemulticol
    \end{multicols}%
  \fi
}

\begin{symbolfaq}
  \faq{\textvisiblespace, as in
       ``Spaces\textvisiblespace are\textvisiblespace significant.''}
      {\pageref{text-predef}}
  \faq{\'{\i}, \`{\i}, \={\i}, \^{\i}, etc.\ (versus \'i, \`i, \=i, and \^i)}
      {\pageref{text-accents}}
  \faq{\textcent}
      {\pageref{tc-currency}}
  \faq{\EUR}
      {\pageref{marv-currency}}
  \faq{\textcopyright, \textregistered, and \texttrademark}
      {\pageref{tc-legal}}
  \faq{\textperthousand}
      {\pageref{tc-misc}}
  \faq{$\oiint$}
      {\pageref{txpx-large}}
  \faq{$\therefore$}
      {\pageref{ams-rel}}
  \faq{$\coloneqq$ and $\Coloneqq$}
      {\pageref{txpx-rel}}
  \faq{$\lesssim$ and $\gtrsim$}
      {\pageref{ams-inequal-rel}}
  \faq{$\MDOTSiddots$}
      {\pageref{mathdots-dots}}
  \faq{\textdegree, as in ``180\textdegree'' or ``15\textcelsius''}
      {\pageref{tc-math}}
  \faq{\mathscr{L}, \mathscr{F}, etc.}
      {\pageref{alphabets}}
  \faq{\mathbbm{N}, \mathbbm{Z}, \mathbbm{R}, etc.}
      {\pageref{alphabets}}
  \faq{$\dashint$}
      {\pageref{dashint}}
  \faq{\diatop[{\diatop[\'|\=]}|a],
       \diatop[{\diatop[\`|\^]}|e], etc.
       (i.e., several accents per character)}
      {\pageref{multiple-accents}}
  \faq{$<$, $>$, and $|$ (instead of <, >, and |)}
      {\pageref{upside-down}}
  \faq{\textasciicircum\ and \textasciitilde\ (or $\sim$)}
      {\pageref{tildes}}
\end{symbolfaq}

\fi    % ifcomplete


\section{Body-text symbols}
\label{body-text-symbols}
\idxbothbegin{body-text}{symbols}

This section lists symbols that are intended for use in running text,
such as punctuation marks, accents, ligatures, and currency symbols.

\bigskip

\begin{symtable}{\latexE{} Escapable ``Special'' Characters}
\index{special characters=``special'' characters}
\index{escapable characters}
\label{special-escapable}
\begin{tabular}{*6{ll@{\qqquad}}ll}
\K\$   & \K\%   & \K\_$\,^*$  & \Kp\}   & \K\&   & \K\#   & \Kp\{   \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  The \pkgname{underscore} package redefines ``\verb+_+'' to produce
  an underscore in text mode (i.e.,~it makes it unnecessary to escape
  the underscore character).
\end{tablenote}
\end{symtable}


\begin{symtable}{Predefined \latexE{} Text-mode Commands}
\index{space, visible}
\index{inequalities}
\index{tilde}
\index{copyright}
\idxboth{dot}{symbols}
\index{dots (ellipses)} \index{ellipses (dots)}
\idxboth{legal}{symbols}
\label{text-predef}
\begin{tabular}{lll@{\qqquad}lll}
\V\textasciicircum      & \V\textless            \\
\V\textasciitilde       & \V[\ltextordfeminine]\textordfeminine   \\
\V\textasteriskcentered & \V[\ltextordmasculine]\textordmasculine \\
\V\textbackslash        & \V\textparagraph$^*$   \\
\V\textbar              & \V\textperiodcentered  \\
\V\textbraceleft$^*$    & \V\textquestiondown    \\
\V\textbraceright$^*$   & \V\textquotedblleft    \\
\V\textbullet           & \V\textquotedblright   \\
\V[\ltextcopyright]\textcopyright$^*$
                        & \V\textquoteleft       \\
\V\textdagger$^*$       & \V\textquoteright      \\
\V\textdaggerdbl$^*$    & \V[\ltextregistered]\textregistered     \\
\V\textdollar$^*$       & \V\textsection$^*$     \\
\V\textellipsis$^*$     & \V\textsterling$^*$    \\
\V\textemdash           & \V[\ltexttrademark]\texttrademark       \\
\V\textendash           & \V\textunderscore$^*$  \\
\V\textexclamdown       & \V\textvisiblespace    \\
\V\textgreater          \\
\end{tabular}

\bigskip
\twosymbolmessage

\bigskip
\usetextmathmessage[*]

\end{symtable}


\begin{symtable}{\latexE{} Commands Defined to Work in Both Math and Text Mode}
\index{dots (ellipses)} \index{ellipses (dots)}
\index{copyright}
\idxboth{legal}{symbols}
\label{math-text}
\begin{tabular}{*3{lll@{\qqquad}}lll}
\V\$ & \V\_              & \V\ddag    & \Vp\{ \\
\V\P & \V[\ltextcopyright]\copyright
                         & \V\dots    & \Vp\} \\
\V\S & \V\dag            & \V\pounds          \\
\end{tabular}

\bigskip
\twosymbolmessage
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Commands Defined to Work in Both Math and Text Mode}
\label{ams-math-text}
\begin{tabular}{*2{ll@{\qquad}}ll}
\X\checkmark & \X\circledR & \X\maltese
\end{tabular}
\end{symtable}


\begin{symtable}{Non-ASCII Letters (Excluding Accented Letters)}
\index{letters>non-ASCII}\index{ASCII}
\label{non-ascii}
\begin{tabular}{*4{ll@{\hspace*{3em}}}ll}
\K\aa      & \Ks\DH     & \K\L       & \K\o       & \K\ss      \\
\K\AA      & \Ks\dh     & \K\l       & \K\O       & \K\SS      \\
\K\AE      & \Ks\DJ     & \Ks\NG     & \K\OE      & \Ks\TH     \\
\K\ae      & \Ks\dj     & \Ks\ng     & \K\oe      & \Ks\th     \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  Not available in the OT1 \fntenc[OT1].  Use the \pkgname{fontenc}
  package to select an alternate \fntenc[T1], such as T1.
\end{tablenote}
\end{symtable}


\begin{symtable}[FC]{Letters Used to Typeset African Languages}
\index{alphabets>African}
\label{fc}
\begin{tabular}{*6{ll@{\qquad}}ll}
\Jiv\B{D} & \Jiv\m{c} & \Jiv\m{f} & \Jiv\m{k} & \Jiv\M{t}     & \Jiv\m{Z} \\
\Jiv\B{d} & \Jiv\m{D} & \Jiv\m{F} & \Jiv\m{N} & \Jiv\M{T}     & \Jiv\T{E} \\
\Jiv\B{H} & \Jiv\M{d} & \Jiv\m{G} & \Jiv\m{n} & \Jiv\m{t}     & \Jiv\T{e} \\
\Jiv\B{h} & \Jiv\M{D} & \Jiv\m{g} & \Jiv\m{o} & \Jiv\m{T}     & \Jiv\T{O} \\
\Jiv\B{t} & \Jiv\m{d} & \Jiv\m{I} & \Jiv\m{O} & \Jiv\m{u}$^*$ & \Jiv\T{o} \\
\Jiv\B{T} & \Jiv\m{E} & \Jiv\m{i} & \Jiv\m{P} & \Jiv\m{U}$^*$ \\
\Jiv\m{b} & \Jiv\m{e} & \Jiv\m{J} & \Jiv\m{p} & \Jiv\m{Y}     \\
\Jiv\m{B} & \Jiv\M{E} & \Jiv\m{j} & \Jiv\m{s} & \Jiv\m{y}     \\
\Jiv\m{C} & \Jiv\M{e} & \Jiv\m{K} & \Jiv\m{S} & \Jiv\m{z}     \\
\end{tabular}

\bigskip
\begin{tablenote}
  These characters all need the T4 \fntenc[T4], which is provided by
  the \FC\ package.
\end{tablenote}

\bigskip
\begin{tablenote}[*]
  \verb|\m{v}| and \verb|\m{V}| are synonyms for \verb|\m{u}| and
  \verb|\m{U}|.
\end{tablenote}
\end{symtable}


\begin{symtable}[VIET]{Letters Used to Typeset Vietnamese}
\index{alphabets>Vietnamese}
\begin{tabular}{*3{ll@{\qquad}}ll}
\Kv\OHORN & \Kv\ohorn & \Kv\UHORN & \Kv\uhorn \\
\end{tabular}

\bigskip
\begin{tablenote}
  These characters all need the T5 \fntenc[T5], which is provided by
  the \VIET\ package.
\end{tablenote}

\end{symtable}


\begin{symtable}{Punctuation Marks Not Found in OT1}
\index{punctuation}
\label{punc-no-OT1}
\begin{tabular}{*8l}
\Kt\guillemotleft  & \Kt\guilsinglleft & \Kt\quotedblbase & \Kt\textquotedbl \\
\Kt\guillemotright & \Kt\guilsinglright & \Kt\quotesinglbase \\
\end{tabular}

\bigskip
\begin{tablenote}
  To get these symbols, use the \pkgname{fontenc} package to select an
  alternate \fntenc[T1], such as~T1.
\end{tablenote}
\end{symtable}


\begin{symtable}[PI]{\PI\ Decorative Punctuation Marks}
\index{punctuation}
\label{pi-punctuation}
\begin{tabular}{*5{ll}}
\Tp{123} & \Tp{125} & \Tp{161} & \Tp{163} \\
\Tp{124} & \Tp{126} & \Tp{162} \\
\end{tabular}
\end{symtable}


\begin{longsymtable}[TIPA]{\TIPA\ Phonetic Symbols}
\ltidxboth{phonetic}{symbols}
\ltidxboth{linguistic}{symbols}
\ltidxboth{dictionary}{symbols}
\ltidxboth{rotated}{symbols}
\ltidxboth{upside-down}{symbols}
\ltidxboth{inverted}{symbols}
\ltindex{alphabets>phonetic}
\index{tilde}
\label{tipa-phonetic}
\begin{longtable}{*3{ll}}
\multicolumn{6}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{6}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\K\textbabygamma       & \K\textglotstop        & \K\textrtailn         \\
\K\textbarb            & \K\texthalflength      & \K\textrtailr         \\
\K\textbarc            & \K\texthardsign        & \K\textrtails         \\
\K\textbard            & \K\texthooktop         & \K\textrtailt         \\
\K\textbardotlessj     & \K\texthtb             & \K\textrtailz         \\
\K\textbarg            & \K\texthtbardotlessj   & \K\textrthook         \\
\K\textbarglotstop     & \K\texthtc             & \K\textsca            \\
\K\textbari            & \K\texthtd             & \K\textscb            \\
\K\textbarl            & \K\texthtg             & \K\textsce            \\
\K\textbaro            & \K\texthth             & \K\textscg            \\
\K\textbarrevglotstop  & \K\texththeng          & \K\textsch            \\
\K\textbaru            & \K\texthtk             & \K\textschwa          \\
\K\textbeltl           & \K\texthtp             & \K\textsci            \\
\K\textbeta            & \K\texthtq             & \K\textscj            \\
\K\textbullseye        & \K\texthtrtaild        & \K\textscl            \\
\K\textceltpal         & \K\texthtscg           & \K\textscn            \\
\K\textchi             & \K\texthtt             & \K\textscoelig        \\
\K\textcloseepsilon    & \K\texthvlig           & \K\textscomega        \\
\K\textcloseomega      & \K\textinvglotstop     & \K\textscr            \\
\K\textcloserevepsilon & \K\textinvscr          & \K\textscripta        \\
\K\textcommatailz      & \K\textiota            & \K\textscriptg        \\
\K\textcorner          & \K\textlambda          & \K\textscriptv        \\
\K\textcrb             & \K\textlengthmark      & \K\textscu            \\
\K\textcrd             & \K\textlhookt          & \K\textscy            \\
\K\textcrg             & \K\textlhtlongi        & \K\textsecstress      \\
\K\textcrh             & \K\textlhtlongy        & \K\textsoftsign       \\
\K\textcrinvglotstop   & \K\textlonglegr        & \K\textstretchc       \\
\K\textcrlambda        & \K\textlptr            & \K\texttctclig        \\
\K\textcrtwo           & \K\textltailm          & \K\textteshlig        \\
\K\textctc             & \K\textltailn          & \K\texttheta          \\
\K\textctd             & \K\textltilde          & \K\textthorn          \\
\K\textctdctzlig       & \K\textlyoghlig        & \K\texttoneletterstem \\
\K\textctesh           & \K\textObardotlessj    & \K\texttslig          \\
\K\textctj             & \K\textOlyoghlig       & \K\textturna          \\
\K\textctn             & \K\textomega           & \K\textturncelig      \\
\K\textctt             & \K\textopencorner      & \K\textturnh          \\
\K\textcttctclig       & \K\textopeno           & \K\textturnk          \\
\K\textctyogh          & \K\textpalhook         & \K\textturnlonglegr   \\
\K\textctz             & \K\textphi             & \K\textturnm          \\
\K\textdctzlig         & \K\textpipe            & \K\textturnmrleg      \\
\K\textdoublebaresh    & \K\textprimstress      & \K\textturnr          \\
\K\textdoublebarpipe   & \K\textraiseglotstop   & \K\textturnrrtail     \\
\K\textdoublebarslash  & \K\textraisevibyi      & \K\textturnscripta    \\
\K\textdoublepipe      & \K\textramshorns       & \K\textturnt          \\
\K\textdoublevertline  & \K\textrevapostrophe   & \K\textturnv          \\
\K\textdownstep        & \K\textreve            & \K\textturnw          \\
\K\textdyoghlig        & \K\textrevepsilon      & \K\textturny          \\
\K\textdzlig           & \K\textrevglotstop     & \K\textupsilon        \\
\K\textepsilon         & \K\textrevyogh         & \K\textupstep         \\
\K\textesh             & \K\textrhookrevepsilon & \K\textvertline       \\
\K\textfishhookr       & \K\textrhookschwa      & \K\textvibyi          \\
\K\textg               & \K\textrhoticity       & \K\textvibyy          \\
\K\textgamma           & \K\textrptr            & \K\textwynn           \\
\K\textglobfall        & \K\textrtaild          & \K\textyogh           \\
\K\textglobrise        & \K\textrtaill          &                       \\
\end{longtable}

\begin{tablenote}
  \TIPA\ defines shortcut characters for many of the above.  It also
  defines a command \cmd{\tone} for denoting tone letters (pitches).
  \seedocs{\TIPA}.
\end{tablenote}
\end{longsymtable}


\begin{symtable}[TIPX]{\TIPX\ Phonetic Symbols}
\idxboth{phonetic}{symbols}
\idxboth{linguistic}{symbols}
\idxboth{dictionary}{symbols}
\idxboth{rotated}{symbols}
\idxboth{upside-down}{symbols}
\idxboth{inverted}{symbols}
\index{alphabets>phonetic}
\label{tipx-phonetic}
\begin{longtable}{*3{ll}}
\multicolumn{6}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{6}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\K\textaolig            & \K\texthtbardotlessjvar & \K\textrthooklong     \\
\K\textbenttailyogh     & \K\textinvomega         & \K\textscaolig        \\
\K\textbktailgamma      & \K\textinvsca           & \K\textscdelta        \\
\K\textctinvglotstop    & \K\textinvscripta       & \K\textscf            \\
\K\textctjvar           & \K\textlfishhookrlig    & \K\textsck            \\
\K\textctstretchc       & \K\textlhookfour        & \K\textscm            \\
\K\textctstretchcvar    & \K\textlhookp           & \K\textscp            \\
\K\textctturnt          & \K\textlhti             & \K\textscq            \\
\K\textdblig            & \K\textlooptoprevesh    & \K\textspleftarrow    \\
\K\textdoublebarpipevar & \K\textnrleg            & \K\textstretchcvar    \\
\K\textdoublepipevar    & \K\textObullseye        & \K\textsubdoublearrow \\
\K\textdownfullarrow    & \K\textpalhooklong      & \K\textsubrightarrow  \\
\K\textfemale           & \K\textpalhookvar       & \K\textthornvari      \\
\K\textfrbarn           & \K\textpipevar          & \K\textthornvarii     \\
\K\textfrhookd          & \K\textqplig            & \K\textthornvariii    \\
\K\textfrhookdvar       & \K\textrectangle        & \K\textthornvariv     \\
\K\textfrhookt          & \K\textretractingvar    & \K\textturnglotstop   \\
\K\textfrtailgamma      & \K\textrevscl           & \K\textturnsck        \\
\K\textglotstopvari     & \K\textrevscr           & \K\textturnscu        \\
\K\textglotstopvarii    & \K\textrhooka           & \K\textturnthree      \\
\K\textglotstopvariii   & \K\textrhooke           & \K\textturntwo        \\
\K\textgrgamma          & \K\textrhookepsilon     & \K\textuncrfemale     \\
\K\textheng             & \K\textrhookopeno       & \K\textupfullarrow    \\
\K\texthmlig            & \K\textrtailhth                                 \\
\end{longtable}
\end{symtable}


\begin{longsymtable}[WIPA]{\WIPA\ Phonetic Symbols}
\ltidxboth{phonetic}{symbols}
\ltidxboth{linguistic}{symbols}
\ltidxboth{dictionary}{symbols}
\ltidxboth{rotated}{symbols}
\ltidxboth{upside-down}{symbols}
\ltidxboth{inverted}{symbols}
\ltindex{alphabets>phonetic}
\index{tilde}
\label{wipa-phonetic}
\begin{longtable}{*4{ll}}
\multicolumn{8}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{8}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\K\babygamma        & \K\eng            & \K\labdentalnas     & \K\schwa            \\
\K\barb             & \K\er             & \K\latfric          & \K\sci              \\
\K\bard             & \K\esh            & \K\legm             & \K\scn              \\
\K\bari             & \K[\WSUeth]\eth   & \K\legr             & \K\scr              \\
\K\barl             & \K\flapr          & \K\lz               & \K\scripta          \\
\K[\WSUbaro]\baro   & \K\glotstop       & \K\nialpha          & \K\scriptg          \\
\K\barp             & \K\hookb          & \K\nibeta           & \K\scriptv          \\
\K\barsci           & \K\hookd          & \K\nichi            & \K\scu              \\
\K\barscu           & \K\hookg          & \K\niepsilon        & \K\scy              \\
\K\baru             & \K\hookh          & \K\nigamma          & \K\slashb           \\
\K\clickb           & \K\hookheng       & \K\niiota           & \K\slashc           \\
\K\clickc           & \K\hookrevepsilon & \K\nilambda         & \K\slashd           \\
\K\clickt           & \K\hv             & \K\niomega          & \K\slashu           \\
\K\closedniomega    & \K\inva           & \K\niphi            & \K\taild            \\
\K\closedrevepsilon & \K\invf           & \K\nisigma          & \K\tailinvr         \\
\K\crossb           & \K\invglotstop    & \K\nitheta          & \K\taill            \\
\K\crossd           & \K\invh           & \K\niupsilon        & \K\tailn            \\
\K\crossh           & \K\invlegr        & \K\nj               & \K\tailr            \\
\K\crossnilambda    & \K\invm           & \K\oo               & \K\tails            \\
\K\curlyc           & \K\invr           & \K[\WSUopeno]\openo & \K\tailt            \\
\K\curlyesh         & \K\invscr         & \K\reve             & \K\tailz            \\
\K\curlyyogh        & \K\invscripta     & \K\reveject         & \K\tesh             \\
\K\curlyz           & \K\invv           & \K\revepsilon       & \K[\WSUthorn]\thorn \\
\K\dlbari           & \K\invw           & \K\revglotstop      & \K\tildel           \\
\K\dz               & \K\invy           & \K\scd              & \K\yogh             \\
\K\ejective         & \K\ipagamma       & \K\scg              \\
\end{longtable}
\end{longsymtable}


\begin{symtable}[WASY]{\WASY\ Phonetic Symbols}
\idxboth{phonetic}{symbols}
\idxboth{linguistic}{symbols}
\idxboth{dictionary}{symbols}
\idxboth{rotated}{symbols}
\idxboth{upside-down}{symbols}
\idxboth{inverted}{symbols}
\index{alphabets>phonetic}
\label{wasy-phonetics}
\begin{tabular}{*8l}
\K\DH             & \K\dh             & \K\openo          \\
\K\Thorn          & \K\inve           & \K\thorn          \\
\end{tabular}
\end{symtable}


\begin{symtable}[PHON]{\PHON\ Phonetic Symbols}
\idxboth{phonetic}{symbols}
\idxboth{linguistic}{symbols}
\idxboth{dictionary}{symbols}
\idxboth{rotated}{symbols}
\idxboth{upside-down}{symbols}
\idxboth{inverted}{symbols}
\index{alphabets>phonetic}
\label{phon-phonetic}
\begin{tabular}{*5{ll}}
\K\barj              & \K\flap              & \K[\PHONibar]\ibar   & \K\rotvara           & \K\vari            \\
\K\barlambda         & \K\glottal           & \K[\PHONopeno]\openo & \K\rotw              & \K\varomega        \\
\K\emgma             & \K\hausaB            & \K\planck            & \K\roty              & \K\varopeno        \\
\K\engma             & \K\hausab            & \K\pwedge            & \K[\PHONschwa]\schwa & \K[\PHONvod]\vod   \\
\K\enya              & \K\hausad            & \K\revD              & \K[\PHONthorn]\thorn & \K\voicedh         \\
\K\epsi              & \K\hausaD            & \K\riota             & \K\ubar              & \K[\PHONyogh]\yogh \\
\K[\PHONesh]\esh     & \K\hausak            & \K\rotm              & \K\udesc                                  \\
\K[\PHONeth]\eth     & \K\hausaK            & \K\rotOmega          & \K\vara                                   \\
\K\fj                & \K[\PHONhookd]\hookd & \K\rotr              & \K[\PHONvarg]\varg                        \\
\end{tabular}
\end{symtable}


\begin{symtable}[PHONFC]{\PHONFC\ Phonetic Symbols}
\idxboth{phonetic}{symbols}
\idxboth{linguistic}{symbols}
\idxboth{dictionary}{symbols}
\index{alphabets>phonetic}
\label{phonfc-phonetic}
\begin{tabular}{*3{ll}}
\K[\encfour\PHONFCtextcrd]\textcrd         & \K[\encfour\PHONFCtexthtd]\texthtd       & \K[\encfour\PHONFCtextpipe]\textpipe       \\
\K[\encfour\PHONFCtextcrh]\textcrh         & \K[\encfour\PHONFCtexthtk]\texthtk       & \K[\encfour\PHONFCtextrtaild]\textrtaild   \\
\K[\encfour\PHONFCtextepsilon]\textepsilon & \K[\encfour\PHONFCtexthtp]\texthtp       & \K[\encfour\PHONFCtextrtailt]\textrtailt   \\
\K[\encfour\PHONFCtextesh]\textesh         & \K[\encfour\PHONFCtexthtt]\texthtt       & \K[\encfour\PHONFCtextschwa]\textschwa     \\
\K[\encfour\PHONFCtextfjlig]\textfjlig     & \K[\encfour\PHONFCtextiota]\textiota     & \K[\encfour\PHONFCtextscriptv]\textscriptv \\
\K[\encfour\PHONFCtexthtb]\texthtb         & \K[\encfour\PHONFCtextltailn]\textltailn & \K[\encfour\PHONFCtextteshlig]\textteshlig \\
\K[\encfour\PHONFCtexthtc]\texthtc         & \K[\encfour\PHONFCtextopeno]\textopeno   & \K[\encfour\PHONFCtextyogh]\textyogh       \\
\end{tabular}

\bigskip

\begin{tablenote}
  The idea behind the \PHONFC\ package's phonetic symbols is to
  provide an interface to some of the characters in the T4 \fntenc[T4]
  \ifFC
    (Table~\vref{fc})
  \fi    % FC
  but using the same names as
  \ifTIPA
    the \TIPA\ characters presented in Table~\vref{tipa-phonetic}.
  \else
    the \TIPA\ package.
  \fi    % TIPA
\end{tablenote}
\end{symtable}


\begin{symtable}[SMTR]{\SMTR\ Transliteration Symbols}
\idxboth{phonetic}{symbols}
\idxboth{linguistic}{symbols}
\idxboth{dictionary}{symbols}
\idxboth{transliteration}{symbols}
\idxboth{semitic}{transliteration}
\index{alphabets>phonetic}
\label{semtrans-phonetic}
\begin{tabular}{ll@{\hspace*{3em}}ll}
\K\Alif & \K\Ayn \\
\end{tabular}
\end{symtable}


\begin{symtable}{Text-mode Accents}
\index{accents}
\label{text-accents}
\begin{tabular}{*3{ll@{\hspace*{3em}}}ll}
\Q\"                                & \Q\`         & \Q\d         & \Q\r        \\
\Q\'                                & \QivBAR\ddag & \Qiv\G\ddag  & \Q\t        \\
\Q\.                                & \Q\~         & \Qv\h\S      & \Q\u        \\
\Qe[\magicequal][\magicequalname]\= & \Q\b         & \Q\H         & \Qiv\U\ddag \\
\Q\^                                & \Q\c         & \Qt\k$^\dag$ & \Q\v        \\
\end{tabular}
\par\medskip
\begin{tabular}{ll@{\hspace*{3em}}ll}
\Q\newtie$^*$ & \Qc\textcircled
\end{tabular}

\bigskip
\begin{tablenote}[*]
  Requires the \TC\ package.
\end{tablenote}

\medskip
\begin{tablenote}[\dag]
  Not available in the OT1 \fntenc[OT1].  Use the \pkgname{fontenc}
  package to select an alternate \fntenc[T1], such as T1.
\end{tablenote}

\medskip
\begin{tablenote}[\ddag]
  Requires the T4 \fntenc[T4], provided by the \FC\ package.
\end{tablenote}

\medskip
\begin{tablenote}[\S]
  Requires the T5 \fntenc[T5], provided by the \VIET\ package.
\end{tablenote}

\bigskip
\begin{tablenote}
  \index{dotless i=dotless $i~(\imath)$>text mode}
  \index{dotless j=dotless $j~(\jmath)$>text mode}
  Also note the existence of \cmdI{\i} and \cmdI{\j}, which produce
  dotless versions of ``i'' and ``j'' (viz., ``\i'' and ``\j'').  These
  are useful when the accent is supposed to replace the dot.  For
  example, ``\verb|na\"{\i}ve|'' produces a correct ``na\"{\i}ve'',
  while ``\verb|na\"{i}ve|'' would yield the rather odd-looking
  ``na\"{i}ve''.  (``\verb|na\"{i}ve|'' \emph{does} work in encodings
  other than OT1, however.)
\end{tablenote}
\end{symtable}


\begin{longsymtable}[TIPA]{\TIPA\ Text-mode Accents}
\ltindex{accents}
\index{tilde}
\label{tipa-accents}
\renewcommand{\arraystretch}{1.25}  % Keep high and low accents from touching.
\begin{longtable}{ll}
\multicolumn{2}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{2}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\Q\textacutemacron      \\
\Q\textacutewedge       \\
\Q\textadvancing        \\
\Q\textbottomtiebar     \\
\Q\textbrevemacron      \\
\Q\textcircumacute      \\
\Q\textcircumdot        \\
\Q\textdotacute         \\
\Q\textdotbreve         \\
\Q\textdotbreve         \\
\Q\textdoublegrave      \\
\Q\textdoublevbaraccent \\
\Q\textgravecircum      \\
\Q\textgravedot         \\
\Q\textgravemacron      \\
\Q\textgravemid         \\
\Q\textinvsubbridge     \\
\Q\textlowering         \\
\Q\textmidacute         \\
\Q\textovercross        \\
\Q\textoverw            \\
\Q\textpolhook          \\
\Q\textraising          \\
\Q\textretracting       \\
\Q\textringmacron       \\
\Q\textroundcap         \\
\Q\textseagull          \\
\Q\textsubacute         \\
\Q\textsubarch          \\
\Q\textsubbar           \\
\Q\textsubbridge        \\
\Q\textsubcircum        \\
\Q\textsubdot           \\
\Q\textsubgrave         \\
\Q\textsublhalfring     \\
\Q\textsubplus          \\
\Q\textsubrhalfring     \\
\Q\textsubring          \\
\Q\textsubsquare        \\
\Q\textsubtilde         \\
\Q\textsubumlaut        \\
\Q\textsubw             \\
\Q\textsubwedge         \\
\Q\textsuperimposetilde \\
\Q\textsyllabic         \\
\Q\texttildedot         \\
\Q\texttoptiebar        \\
\Q\textvbaraccent       \\
\end{longtable}

\begin{tablenote}
  \TIPA\ defines shortcut sequences for many of the above.
  \seedocs{\TIPA}.
\end{tablenote}
\end{longsymtable}


\begin{symtable}[XIPA]{\XIPA\ Text-mode Accents}
\index{accents}
\label{xipa-accents}
\renewcommand{\arraystretch}{1.25}  % Keep high and low accents from touching.
\begin{tabular}{ll@{\hspace*{3em}}ll}
\Q\bibridge         & \Q\partvoiceless \\
\Q\crtilde          & \Q\sliding       \\
\Q\dottedtilde      & \Q\spreadlips    \\
\Q\doubletilde      & \Q\subcorner     \\
\Q\finpartvoice     & \Q\subdoublebar  \\
\Q\finpartvoiceless & \Q\subdoublevert \\
\Q\inipartvoice     & \Q\sublptr       \\
\Q\inipartvoiceless & \Q\subrptr       \\
\Q\overbridge       & \Q\whistle       \\
\Q\partvoice                           \\
\end{tabular}
\end{symtable}


\begin{symtable}[WIPA]{\WIPA\ Text-mode Accents}
\index{accents}
\label{wipa-accents}
\renewcommand{\arraystretch}{1.25}  % Keep high and low accents from touching.
\begin{tabular}{ll}
\Q\dental    \\
\Q\underarch \\
\end{tabular}
\end{symtable}


\begin{symtable}[PHON]{\PHON\ Text-mode Accents}
\index{accents}
\label{phon-accents}
\renewcommand{\arraystretch}{1.25}  % Keep high and low accents from touching.
\begin{tabular}{*3{ll}}
\Q\hill  & \Q\rc  & \Q\ut \\
\Q\od    & \Q\syl         \\
\Q\ohill & \Q\td          \\
\end{tabular}

\bigskip
\begin{tablenote}
  \begin{morespacing}{1pt}
    The \PHON\ package provides a few additional macros for linguistic
    accents. \cmd{\acbar} and \cmd{\acarc} compose characters with
    multiple accents; for example, \verb+\acbar{\'}{a}+ produces
    ``\acbar{\'}{a}'' and \verb+\acarc{\"}{e}+ produces
    ``\acbar{\"}{e}''.  \cmd{\labvel} joins two characters with an
    arc: \verb+\labvel{mn}+~$\rightarrow$ ``\labvel{mn}''.
    \cmd{\upbar} is intended to go between characters as in
    ``\verb+x\upbar{}y''+~$\rightarrow$ ``x\upbar{}y''.  Lastly,
    \cmd{\uplett} behaves like \cmd{\textsuperscript} but uses a
    smaller font.  Contrast ``\verb+p\uplett{h}''+~$\rightarrow$
    ``p\uplett{h}'' with ``\verb+p\textsuperscript{h}''+~$\rightarrow$
    ``p\textsuperscript{h}''.
  \end{morespacing}
\end{tablenote}
\end{symtable}


\begin{symtable}[METRE]{\METRE\ Text-mode Accents}
\index{accents}
\label{metre-accents}
\begin{tabular}{ll}
\Q\acutus             \\
\Q[\METREbreve]\breve \\
\Q\circumflexus       \\
\Q\diaeresis          \\
\Q\gravis             \\
\Q\macron             \\
\end{tabular}
\end{symtable}


\begin{symtable}[PHONFC]{\PHONFC\ Text-mode Accents}
\index{accents}
\label{phonfc-accents}
\renewcommand{\arraystretch}{1.25}  % Keep high and low accents from touching.
\begin{tabular}{ll}
\Qpfc[\PHONFCtextdoublegrave]\textdoublegrave \\
\Qpfc[\PHONFCtextvbaraccent]\textvbaraccent \\
\Qpfc[\PHONFCtextdoublevbaraccent]\textdoublevbaraccent \\
\end{tabular}

\bigskip

\begin{tablenote}
  The idea behind the \PHONFC\ package's text-mode accents is to
  provide an interface to some of the accents in the T4 \fntenc[T4]
  (accents marked with ``\ddag'' in Table~\vref{text-accents}) but
  using the same names as
  \ifTIPA
    the \TIPA\ accents presented in Table~\vref{tipa-accents}.
  \else
    the \TIPA\ package.
  \fi    % TIPA
\end{tablenote}
\end{symtable}


\begin{symtable}[ARCS]{\ARCS\ Text-mode Accents}
\index{accents}
\label{arcs-accents}
\begin{tabular}{*2{ll}}
\Q\overarc & \Q\underarc \\
\end{tabular}

\bigskip

\begin{tablenote}
  The accents shown above scale only to a few characters wide.  An
  optional macro argument alters the effective width of the accented
  characters.  \seedocs{\ARCS}.
\end{tablenote}
\end{symtable}


\begin{symtable}[SMTR]{\SMTR\ Accents}
\index{accents}
\idxboth{semitic}{transliteration}
\idxboth{rotated}{symbols}
\idxboth{upside-down}{symbols}
\idxboth{inverted}{symbols}
\label{semtrans-accents}
\begin{tabular}{ll@{\hspace*{3em}}ll}
\Q[\smtrD]\D & \Q[\smtrU]\U \\
\end{tabular}

\bigskip

\begin{tabular}{ll}
\Q[\smtrT]\T$^*$ \\
\end{tabular}

\bigskip

\begin{tablenote}
  \verb|\T| is not actually an accent but a command that rotates its
  argument 180\textdegree{} using the \pkgname{graphicx} package's
  \cmd{\rotatebox} command.
\end{tablenote}
\end{symtable}


\begin{symtable}[WIPA]{\WIPA\ Diacritics}
\index{accents}
\index{tilde}
\label{wipa-diacritics}
\renewcommand{\arraystretch}{1.25}  % Keep high and low accents from touching.
\begin{tabular}{*5{ll}}
\K\ain        & \K\leftp    & \K\overring   & \K\stress     & \K\underwedge \\
\K\corner     & \K\leftt    & \K\polishhook & \K\syllabic   & \K\upp        \\
\K\downp      & \K\length   & \K\rightp     & \K\underdots  & \K\upt        \\
\K\downt      & \K\midtilde & \K\rightt     & \K\underring  \\
\K\halflength & \K\open     & \K\secstress  & \K\undertilde \\
\end{tabular}

\bigskip
\begin{tablenote}
  The \WIPA\ package defines all of the above as ordinary characters,
  not as accents.  However, it does provide \cmd{\diatop} and
  \cmd{\diaunder} commands, which are used to compose diacritics with
  other characters.  For example, \verb+\diatop[\overring|a]+ produces
  ``\diatop[\overring|a]'', and \verb+\diaunder[\underdots|a]+
  produces ``\diaunder[\underdots|a]''.  \seedocs{\WIPA}.
\end{tablenote}
\end{symtable}


\begin{symtable}{\TC\ Diacritics}
\index{accents}
\label{tc-accent-chars}
\begin{tabular}{*3{ll}}
\K\textacutedbl      & \K\textasciicaron    & \K\textasciimacron \\
\K\textasciiacute    & \K\textasciidieresis & \K\textgravedbl    \\
\K\textasciibreve    & \K\textasciigrave                         \\
\end{tabular}

\bigskip

\begin{tablenote}
  The \TC\ package defines all of the above as ordinary characters,
  not as accents.
\end{tablenote}
\end{symtable}


\begin{symtable}{\TC\ Currency Symbols}
\idxboth{currency}{symbols}
\idxboth{monetary}{symbols}
\index{euro signs}
\label{tc-currency}
\begin{tabular}{*4{ll}}
\K\textbaht          & \K\textdollar$^*$     & \K\textguarani  & \K\textwon \\
\K\textcent          & \K\textdollaroldstyle & \K\textlira     & \K\textyen \\
\K\textcentoldstyle  & \K\textdong           & \K\textnaira    \\
\K\textcolonmonetary & \K\texteuro           & \K\textpeso     \\
\K\textcurrency      & \K\textflorin         & \K\textsterling$^*$ \\
\end{tabular}

\bigskip
\usetextmathmessage[*]

\end{symtable}


\begin{symtable}[MARV]{\MARV\ Currency Symbols}
\idxboth{currency}{symbols}
\idxboth{monetary}{symbols}
\index{euro signs}
\label{marv-currency}
\begin{tabular}{*4{ll}ll}
\K\Denarius   & \K\EUR    & \K\EURdig   & \K\EURtm      & \K\Pfund      \\
\K\Ecommerce  & \K\EURcr  & \K\EURhv    & \K\EyesDollar & \K\Shilling   \\
\end{tabular}

\bigskip

\begin{tablenote}
  The different euro signs are meant to be visually compatible with
  different fonts---\PSfont{Courier} (\texttt{\string\EURcr}),
  \PSfont{Helvetica} (\texttt{\string\EURhv}), \PSfont{Times Roman}
  (\texttt{\string\EURtm}), and the \MARV\ digits listed in
  Table~\ref{marv-digits} (\texttt{\string\EURdig}).
\ifMDES
  The \MDES\ package redefines \cmdI[\MDEStexteuro]{\texteuro} to be
  visually compatible with one of three additional fonts:
  \PSfont{Utopia}~({\usefont{TS1}{mdput}{m}{n}\char"BF}),
  \PSfont{Charter}~({\usefont{TS1}{mdbch}{m}{n}\char"BF}), or
  \PSfont{Garamond}~({\usefont{TS1}{mdugm}{m}{n}\char"BF}).
\fi
\end{tablenote}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Currency Symbols}
\idxboth{currency}{symbols}
\idxboth{monetary}{symbols}
\label{wasy-currency}
\begin{tabular}{*2{ll}}
\K\cent & \K\currency \\
\end{tabular}
\end{symtable}


\begin{symtable}[EUSYM]{\EUSYM\ Euro Signs}
\idxboth{currency}{symbols}
\idxboth{monetary}{symbols}
\index{euro signs}
\label{eurosym-euros}
\begin{tabular}{*4{ll}}
\K\geneuro & \K\geneuronarrow & \K\geneurowide & \K\officialeuro \\
\end{tabular}

\bigskip

\begin{tablenote}
  \cmd{\euro} is automatically mapped to one of the above---by
  default, \cmdI{\officialeuro}---based on a \EUSYM\ package option.
  \seedocs{\EUSYM}.  The \verb|\geneuro|\dots{} characters are
  generated from the current body font's ``C'' character and therefore
  may not appear exactly as shown.
\end{tablenote}
\end{symtable}


\begin{symtable}{\TC\ Legal Symbols}
\index{copyright}
\idxboth{legal}{symbols}
\label{tc-legal}
\begin{tabular}{*2{lll@{\qquad}}lll}
\V\textcircledP & \V[\ltextcopyright]\textcopyright   & \V\textservicemark \\
\V\textcopyleft & \V[\ltextregistered]\textregistered & \V[\ltexttrademark]\texttrademark \\
\end{tabular}

\bigskip
\twosymbolmessage
\medskip
\begin{tablenote}
  \hspace*{15pt}%
  See \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tradesyms}
  for solutions to common problems that occur when using these symbols
  (e.g.,~getting a~``\textcircled{r}'' when you expected to get
  a~``\textregistered'').
\end{tablenote}
\end{symtable}


\begin{symtable}[CCLIC]{\CCLIC\ Creative Commons License Icons}
\index{Creative Commons licenses}
\index{copyright}
\idxboth{legal}{symbols}
\label{creativecommons}
\begin{tabular}{*4{ll@{\hspace*{3em}}}ll}
\K\cc & \K\ccby & \K\ccnc$^*$ & \K\ccnd & \K\ccsa$^*$ \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  These symbols utilize the \pkgname{rotating} package and therefore
  display improperly in most DVI\index{DVI} viewers.
\end{tablenote}
\end{symtable}


\begin{symtable}{\TC\ Old-style Numerals}
\idxboth{old-style}{digits}
\label{old-style-nums}
\begin{tabular}{*3{ll}}
\K\textzerooldstyle  & \K\textfouroldstyle  & \K\texteightoldstyle \\
\K\textoneoldstyle   & \K\textfiveoldstyle  & \K\textnineoldstyle  \\
\K\texttwooldstyle   & \K\textsixoldstyle   \\
\K\textthreeoldstyle & \K\textsevenoldstyle \\
\end{tabular}

\bigskip
\begin{tablenote}
  Rather than use the bulky \cmd{\textoneoldstyle},
  \cmd{\texttwooldstyle}, etc.\ commands shown above, consider using
  \cmd{\oldstylenums}\verb|{|$\ldots$\verb|}| to typeset an old-style
  number.
\end{tablenote}
\end{symtable}


\begin{symtable}{Miscellaneous \TC\ Symbols}
\idxboth{musical}{symbols}
\index{tilde}
\label{tc-misc}
\begin{tabular}{lll@{\qquad}lll}
\V\textasteriskcentered & \V[\ltextordfeminine]\textordfeminine   \\
\V\textbardbl           & \V[\ltextordmasculine]\textordmasculine \\
\V\textbigcircle        & \V\textparagraph$^*$                    \\
\V\textblank            & \V\textperiodcentered                   \\
\V\textbrokenbar        & \V\textpertenthousand                   \\
\V\textbullet           & \V\textperthousand                      \\
\V\textdagger$^*$       & \V\textpilcrow                          \\
\V\textdaggerdbl$^*$    & \V\textquotesingle                      \\
\V\textdblhyphen        & \V\textquotestraightbase                \\
\V\textdblhyphenchar    & \V\textquotestraightdblbase             \\
\V\textdiscount         & \V\textrecipe                           \\
\V\textestimated        & \V\textreferencemark                    \\
\V\textinterrobang      & \V\textsection$^*$                      \\
\V\textinterrobangdown  & \V\textthreequartersemdash              \\
\V\textmusicalnote      & \V\texttildelow                         \\
\V\textnumero           & \V\texttwelveudash                      \\
\V\textopenbullet                                                 \\
\end{tabular}

\bigskip
\twosymbolmessage

\bigskip
\usetextmathmessage[*]

\end{symtable}


\begin{symtable}[WASY]{Miscellaneous \WASY\ Text-mode Symbols}
\label{wasy-text}
\begin{tabular}{ll}
\K\permil \\
\end{tabular}
\end{symtable}


\idxbothend{body-text}{symbols}


\section{Mathematical symbols}
\label{math-symbols}
\idxbothbegin{mathematical}{symbols}

Most, but not all, of the symbols in this section are math-mode only.
That is, they yield a ``\texttt{Missing~\$ inserted}''\index{Missing
\$ inserted=``\texttt{Missing~\$ inserted}''} error message if not
used within \verb|$|$\ldots$\verb|$|, \verb|\[|$\ldots$\verb|\]|, or
another math-mode environment.  Operators marked as ``variable-sized''
are taller in displayed formulas, shorter in in-text formulas, and
possibly shorter still when used in various levels of superscripts or
subscripts.

% The following definition is used both in the discussion of disjoint
% union and in the "Joining and overlapping existing symbols" section.
\newcommand{\dotcup}{\ensuremath{\mathaccent\cdot\cup}}

\ifcomplete
Alphanumeric symbols (e.g., ``$\!\mathscr{L}\,$'' and
``$\varmathbb{Z}$'') are usually produced using one of the math
alphabets in Table~\ref{alphabets} rather than with an explicit symbol
command.  Look there first if you need a symbol for a transform,
number set, or some other alphanumeric.

Although there have been many requests on \ctt for a
contradiction\idxboth{contradiction}{symbols} symbol, the ensuing
discussion invariably reveals innumerable ways to represent
contradiction in a proof, including ``\blitza''~(\cmdI{\blitza}),
``$\Rightarrow\Leftarrow$''~(\cmdX{\Rightarrow}\cmdX{\Leftarrow}),
``$\bot$''~(\cmdX{\bot}),
``$\nleftrightarrow$''~(\cmdX{\nleftrightarrow}), and
``\textreferencemark''~(\cmdI{\textreferencemark}).  Because of the
lack of notational consensus, it is probably better to spell out
``Contradiction!''\ than to use a symbol for this purpose.  Similarly,
discussions on \ctt have revealed that there are a variety of ways to
indicate the mathematical notion of ``is
defined\idxboth{definition}{symbols} as''.  Common candidates include
``$\triangleq$''~(\cmdX{\triangleq}), ``$\equiv$''~(\cmdX{\equiv}),
``$\coloneqq$''~(\cmdX{\coloneqq}), and ``$\stackrel{\text{\tiny
def}}{=}$''~(\cmd{\stackrel}\verb|{|\cmd{\text}\verb|{\tiny|
\verb|def}}{=}|).  See also the example of \cmd{\equalsfill}
\vpageref[below]{equalsfill-ex}.  Depending upon the context,
disjoint\index{disjoint union} union may be represented as
``$\coprod$''~(\cmdX{\coprod}), ``$\sqcup$''~(\cmdX{\sqcup}),
``$\dotcup$''~(\cmdX{\dotcup}), ``$\oplus$''~(\cmdX{\oplus}), or any
of a number of other symbols.\footnote{\person{Bob}{Tennent} listed
these and other disjoint-union symbol possibilities in a November~2007
post to \ctt.}  Finally, the average\index{average} value of a
variable~$x$ is written by some people as
``$\overline{x}$''~(\verb|\overline{x}|)\incsyms\indexaccent[$\string\blackacc{\string\overline}$]{\overline},
by some people as ``$\langle x \rangle$''~(\cmdX{\langle} \texttt{x}
\cmdX{\rangle}), and by some people as ``$\diameter x$'' or
``$\varnothing x$''~(\cmdX{\diameter} \texttt{x} or \cmdX{\varnothing}
\texttt{x}).  The moral of the story is that you should be careful
always to explain your notation to avoid confusing your readers.

\fi    % Matches \ifcomplete

\bigskip

\begin{symtable}{Math-Mode Versions of Text Symbols}
\index{math-text}
\begin{tabular}{*3{ll}}
\X\mathdollar   & \X\mathparagraph & \X\mathsterling   \\
\X\mathellipsis & \X\mathsection   & \X\mathunderscore \\
\end{tabular}

\bigskip
\usetextmathmessage

\end{symtable}


\begin{symtable}[CMLL]{\CMLL\ Unary Operators}
\idxboth{unary}{operators}
\idxboth{linear logic}{symbols}
\label{cmll-unary}
\begin{tabular}{*2{ll@{\qquad}}ll}
\K[!]\oc$^*$         & \K[\CMLLshneg]\shneg & \K[?]\wn$^*$ \\
\K[\CMLLshift]\shift & \K[\CMLLshpos]\shpos &              \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \cmdI[!]{\oc} and \cmdI[?]{\wn} differ from~``!''  and~``?'' in
  terms of their math-mode spacing: \verb|$A=!B$| produces ``$A=!B$'',
  for example, while \verb|$A=\oc B$| produces ``$A=\mathord{!}B$''.
\end{tablenote}
\end{symtable}


\begin{symtable}{Binary Operators}
\idxboth{binary}{operators}
\index{division}
\label{bin}
\begin{tabular}{*4{ll}}
\X\amalg           & \X\cup          & \X\oplus    & \X\times           \\
\X\ast             & \X\dagger       & \X\oslash   & \X\triangleleft    \\
\X\bigcirc         & \X\ddagger      & \X\otimes   & \X\triangleright   \\
\X\bigtriangledown & \X\diamond      & \X\pm       & \X\unlhd$^*$       \\
\X\bigtriangleup   & \X\div          & \X\rhd$^*$  & \X\unrhd$^*$       \\
\X\bullet          & \X\lhd$^*$      & \X\setminus & \X\uplus           \\
\X\cap             & \X\mp           & \X\sqcap    & \X\vee             \\
\X\cdot            & \X\odot         & \X\sqcup    & \X\wedge           \\
\X\circ            & \X\ominus       & \X\star     & \X\wr              \\
\end{tabular}

\bigskip
\notpredefinedmessage
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Binary Operators}
\idxboth{binary}{operators}
\index{semidirect products}
\label{ams-bin}
\begin{tabular}{*3{ll}}
\X\barwedge        & \X\circledcirc     & \X\intercal        \\
\X\boxdot          & \X\circleddash     & \X\leftthreetimes  \\
\X\boxminus        & \X\Cup             & \X\ltimes          \\
\X\boxplus         & \X\curlyvee        & \X\rightthreetimes \\
\X\boxtimes        & \X\curlywedge      & \X\rtimes          \\
\X\Cap             & \X\divideontimes   & \X\smallsetminus   \\
\X\centerdot       & \X\dotplus         & \X\veebar          \\
\X\circledast      & \X\doublebarwedge  \\
\end{tabular}
\end{symtable}


\begin{symtable}[ST]{\ST\ Binary Operators}
\idxboth{binary}{operators}
\label{st-bin}
\begin{tabular}{*3{ll}}
\X\baro                & \X\interleave          & \X\varoast             \\
\X\bbslash             & \X\leftslice           & \X\varobar             \\
\X\binampersand        & \X\merge               & \X\varobslash          \\
\X\bindnasrepma        & \X\minuso              & \X\varocircle          \\
\X\boxast              & \X\moo                 & \X\varodot             \\
\X\boxbar              & \X\nplus               & \X\varogreaterthan     \\
\X\boxbox              & \X\obar                & \X\varolessthan        \\
\X\boxbslash           & \X\oblong              & \X\varominus           \\
\X\boxcircle           & \X\obslash             & \X\varoplus            \\
\X\boxdot              & \X\ogreaterthan        & \X\varoslash           \\
\X\boxempty            & \X\olessthan           & \X\varotimes           \\
\X\boxslash            & \X\ovee                & \X\varovee             \\
\X\curlyveedownarrow   & \X\owedge              & \X\varowedge           \\
\X\curlyveeuparrow     & \X\rightslice          & \X\vartimes            \\
\X\curlywedgedownarrow & \X\sslash              & \X\Ydown               \\
\X\curlywedgeuparrow   & \X\talloblong          & \X\Yleft               \\
\X\fatbslash           & \X\varbigcirc          & \X\Yright              \\
\X\fatsemi             & \X\varcurlyvee         & \X\Yup                 \\
\X\fatslash            & \X\varcurlywedge       \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Binary Operators}
\idxboth{binary}{operators}
\label{wasy-bin}
\begin{tabular}{*4{ll}}
\X\lhd & \X\ocircle & \X\RHD   & \X\unrhd \\
\X\LHD & \X\rhd     & \X\unlhd            \\
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Binary Operators}
\idxboth{binary}{operators}
\label{txpx-bin}
\begin{tabular}{*3{ll}}
\X\circledbar    & \X\circledwedge  & \X\medcirc       \\
\X\circledbslash & \X\invamp        & \X\sqcapplus     \\
\X\circledvee    & \X\medbullet     & \X\sqcupplus     \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Binary Operators}
\idxboth{binary}{operators}
\index{asterisks}
\index{semidirect products}
\label{abx-bin}
\begin{tabular}{*3{ll}}
\X[\ABXast]\ast                   & \X[\ABXcurlywedge]\curlywedge         & \X[\ABXsqcap]\sqcap               \\
\X[\ABXAsterisk]\Asterisk         & \X[\ABXdivdot]\divdot                 & \X[\ABXsqcup]\sqcup               \\
\X[\ABXbarwedge]\barwedge         & \X[\ABXdivideontimes]\divideontimes   & \X[\ABXsqdoublecap]\sqdoublecap   \\
\X[\ABXbigstar]\bigstar           & \X[\ABXdotdiv]\dotdiv                 & \X[\ABXsqdoublecup]\sqdoublecup   \\
\X[\ABXbigvarstar]\bigvarstar     & \X[\ABXdotplus]\dotplus               & \X[\ABXsquare]\square             \\
\X[\ABXblackdiamond]\blackdiamond & \X[\ABXdottimes]\dottimes             & \X[\ABXsquplus]\squplus           \\
\X[\ABXcap]\cap                   & \X[\ABXdoublebarwedge]\doublebarwedge & \X[\ABXudot]\udot                 \\
\X[\ABXcircplus]\circplus         & \X[\ABXdoublecap]\doublecap           & \X[\ABXuplus]\uplus               \\
\X[\ABXcoasterisk]\coasterisk     & \X[\ABXdoublecup]\doublecup           & \X[\ABXvarstar]\varstar           \\
\X[\ABXcoAsterisk]\coAsterisk     & \X[\ABXltimes]\ltimes                 & \X[\ABXvee]\vee                   \\
\X[\ABXconvolution]\convolution   & \X[\ABXpluscirc]\pluscirc             & \X[\ABXveebar]\veebar             \\
\X[\ABXcup]\cup                   & \X[\ABXrtimes]\rtimes                 & \X[\ABXveedoublebar]\veedoublebar \\
\X[\ABXcurlyvee]\curlyvee         & \X[\ABXsqbullet]\sqbullet             & \X[\ABXwedge]\wedge               \\
\end{tabular}

\bigskip

\begin{tablenote}
  Many of the above glyphs go by multiple names.
  \cmdI[$\string\ABXcenterdot$]{\centerdot} is equivalent to
  \cmdI[$\string\ABXsqbullet$]{\sqbullet}, and
  \cmdI[$\string\ABXast$]{\ast} is equivalent to \cmdI{*}.
  \cmdI[$\string\ABXasterisk$]{\asterisk} produces the same glyph as
  \cmdI[$\string\ABXast$]{\ast}, but as an ordinary symbol, not a
  binary operator.  Similarly, \cmdI[$\string\ABXbigast$]{\bigast}
  produces a large-operator version of the
  \cmdI[$\string\ABXAsterisk$]{\Asterisk} binary operator, and
  \cmdI[$\string\ABXbigcoast$]{\bigcoast} produces a large-operator
  version of the \cmdI[$\string\ABXcoAsterisk$]{\coAsterisk} binary
  operator.
\end{tablenote}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Binary Operators}
\idxboth{binary}{operators}
\label{mns-bin}
\begin{tabular}{*3{ll}}
\K[\MNSamalg]\amalg                       & \K[\MNSdoublesqcup]\doublesqcup       & \K[\MNSrighttherefore]\righttherefore   \\
\K[\MNSast]\ast                           & \K[\MNSdoublevee]\doublevee           & \K[\MNSrightthreetimes]\rightthreetimes \\
\K[\MNSbackslashdiv]\backslashdiv         & \K[\MNSdoublewedge]\doublewedge       & \K[\MNSrightY]\rightY                   \\
\K[\MNSbowtie]\bowtie                     & \K[\MNSdowntherefore]\downtherefore   & \K[\MNSrtimes]\rtimes                   \\
\K[\MNSbullet]\bullet                     & \K[\MNSdownY]\downY                   & \K[\MNSslashdiv]\slashdiv               \\
\K[\MNScap]\cap                           & \K[\MNSdtimes]\dtimes                 & \K[\MNSsmallprod]\smallprod             \\
\K[\MNScapdot]\capdot                     & \K[\MNSfivedots]\fivedots             & \K[\MNSsqcap]\sqcap                     \\
\K[\MNScapplus]\capplus                   & \K[\MNShbipropto]\hbipropto           & \K[\MNSsqcapdot]\sqcapdot               \\
\K[\MNScdot]\cdot                         & \K[\MNShdotdot]\hdotdot               & \K[\MNSsqcapplus]\sqcapplus             \\
\K[\MNScirc]\circ                         & \K[\MNSlefthalfcap]\lefthalfcap       & \K[\MNSsqcup]\sqcup                     \\
\K[\MNSclosedcurlyvee]\closedcurlyvee     & \K[\MNSlefthalfcup]\lefthalfcup       & \K[\MNSsqcupdot]\sqcupdot               \\
\K[\MNSclosedcurlywedge]\closedcurlywedge & \K[\MNSlefttherefore]\lefttherefore   & \K[\MNSsqcupplus]\sqcupplus             \\
\K[\MNScup]\cup                           & \K[\MNSleftthreetimes]\leftthreetimes & \K[\MNSsquaredots]\squaredots           \\
\K[\MNScupdot]\cupdot                     & \K[\MNSleftY]\leftY                   & \K[\MNStimes]\times                     \\
\K[\MNScupplus]\cupplus                   & \K[\MNSltimes]\ltimes                 & \K[\MNSudotdot]\udotdot                 \\
\K[\MNScurlyvee]\curlyvee                 & \K[\MNSmedbackslash]\medbackslash     & \K[\MNSuptherefore]\uptherefore         \\
\K[\MNScurlyveedot]\curlyveedot           & \K[\MNSmedcircle]\medcircle           & \K[\MNSupY]\upY                         \\
\K[\MNScurlywedge]\curlywedge             & \K[\MNSmedslash]\medslash             & \K[\MNSutimes]\utimes                   \\
\K[\MNScurlywedgedot]\curlywedgedot       & \K[\MNSmedvert]\medvert               & \K[\MNSvbipropto]\vbipropto             \\
\K[\MNSddotdot]\ddotdot                   & \K[\MNSmedvertdot]\medvertdot         & \K[\MNSvdotdot]\vdotdot                 \\
\K[\MNSdiamonddots]\diamonddots           & \K[\MNSminus]\minus                   & \K[\MNSvee]\vee                         \\
\K[\MNSdiv]\div                           & \K[\MNSminusdot]\minusdot             & \K[\MNSveedot]\veedot                   \\
\K[\MNSdotmedvert]\dotmedvert             & \K[\MNSmp]\mp                         & \K[\MNSvertbowtie]\vertbowtie           \\
\K[\MNSdotminus]\dotminus                 & \K[\MNSneswbipropto]\neswbipropto     & \K[\MNSvertdiv]\vertdiv                 \\
\K[\MNSdoublecap]\doublecap               & \K[\MNSnwsebipropto]\nwsebipropto     & \K[\MNSwedge]\wedge                     \\
\K[\MNSdoublecup]\doublecup               & \K[\MNSplus]\plus                     & \K[\MNSwedgedot]\wedgedot               \\
\K[\MNSdoublecurlyvee]\doublecurlyvee     & \K[\MNSpm]\pm                         & \K[\MNSwreath]\wreath                   \\
\K[\MNSdoublecurlywedge]\doublecurlywedge & \K[\MNSrighthalfcap]\righthalfcap     &                                         \\
\K[\MNSdoublesqcap]\doublesqcap           & \K[\MNSrighthalfcup]\righthalfcup     &                                         \\
\end{tabular}

\bigskip

\begin{tablenote}
  \MNS\ defines \cmdI[\MNSmedbackslash]{\setminus} and
  \cmdI[\MNSmedbackslash]{\smallsetminus} as synonyms for
  \cmdI[\MNSmedbackslash]{\medbackslash}; \cmdI[\MNSbowtie]{\Join} as
  a synonym for \cmdI[\MNSbowtie]{\bowtie}; \cmdI[\MNSwreath]{\wr} as
  a synonym for \cmdI[\MNSwreath]{\wreath};
  \cmdI[\MNSmedvert]{\shortmid} as a synonym for
  \cmdI[\MNSmedvert]{\medvert}; \cmdI[\MNSdoublecap]{\Cap} as a
  synonym for \cmdI[\MNSdoublecap]{\doublecap};
  \cmdI[\MNSdoublecup]{\Cup} as a synonym for
  \cmdI[\MNSdoublecup]{\doublecup}; and, \cmdI[\MNScupplus]{\uplus} as
  a synonym for \cmdI[\MNScupplus]{\cupplus}.
\end{tablenote}
\end{symtable}


\begin{symtable}[MDES]{\MDES\ Binary Operators}
\idxboth{binary}{operators}
\label{mdes-bin}
\begin{tabular}{*3{ll}}
\K[\MDESdtimes]\dtimes & \K[\MDESudtimes]\udtimes & \K[\MDESutimes]\utimes \\
\end{tabular}

\bigskip
\begin{tablenote}
\ifAMS
  The \MDES\ package additionally provides versions of each of the
  binary operators shown in Table~\vref{ams-bin}.
\else
  The \MDES\ package additionally provides versions of each of the
  \AMS\ binary operators.
\fi
\end{tablenote}
\end{symtable}


\begin{symtable}[CMLL]{\CMLL\ Binary Operators}
\idxboth{binary}{operators}
\label{cmll-bin}
\begin{tabular}{ll@{\qquad}ll}
\K[\CMLLparr]\parr & \K[\&]\with$^*$ \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \cmdI[\&]{\with} differs from~``\&'' in terms of its math-mode
  spacing: \verb|$A \& B$| produces ``$A \& B$'', for example, while
  \verb|$A \with B$| produces ``$A\mathbin{\&}B$''.
\end{tablenote}
\end{symtable}


\begin{symtable}[ULSY]{\ULSY\ Geometric Binary Operators}
\idxboth{binary}{operators}
\label{ulsy-geometric-bin}
\begin{tabular}{ll}
\K\odplus \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Geometric Binary Operators}
\idxboth{binary}{operators}
\label{abx-geometric-bin}
\begin{tabular}{*3{ll}}
\X[\ABXblacktriangledown]\blacktriangledown   & \X[\ABXboxright]\boxright           & \X[\ABXominus]\ominus                         \\
\X[\ABXblacktriangleleft]\blacktriangleleft   & \X[\ABXboxslash]\boxslash           & \X[\ABXoplus]\oplus                           \\
\X[\ABXblacktriangleright]\blacktriangleright & \X[\ABXboxtimes]\boxtimes           & \X[\ABXoright]\oright                         \\
\X[\ABXblacktriangleup]\blacktriangleup       & \X[\ABXboxtop]\boxtop               & \X[\ABXoslash]\oslash                         \\
\X[\ABXboxasterisk]\boxasterisk               & \X[\ABXboxtriangleup]\boxtriangleup & \X[\ABXotimes]\otimes                         \\
\X[\ABXboxbackslash]\boxbackslash             & \X[\ABXboxvoid]\boxvoid             & \X[\ABXotop]\otop                             \\
\X[\ABXboxbot]\boxbot                         & \X[\ABXoasterisk]\oasterisk         & \X[\ABXotriangleup]\otriangleup               \\
\X[\ABXboxcirc]\boxcirc                       & \X[\ABXobackslash]\obackslash       & \X[\ABXovoid]\ovoid                           \\
\X[\ABXboxcoasterisk]\boxcoasterisk           & \X[\ABXobot]\obot                   & \X[\ABXsmalltriangledown]\smalltriangledown   \\
\X[\ABXboxdiv]\boxdiv                         & \X[\ABXocirc]\ocirc                 & \X[\ABXsmalltriangleleft]\smalltriangleleft   \\
\X[\ABXboxdot]\boxdot                         & \X[\ABXocoasterisk]\ocoasterisk     & \X[\ABXsmalltriangleright]\smalltriangleright \\
\X[\ABXboxleft]\boxleft                       & \X[\ABXodiv]\odiv                   & \X[\ABXsmalltriangleup]\smalltriangleup       \\
\X[\ABXboxminus]\boxminus                     & \X[\ABXodot]\odot                                                                   \\
\X[\ABXboxplus]\boxplus                       & \X[\ABXoleft]\oleft                                                                 \\
\end{tabular}
\end{symtable}



\begin{symtable}[MNS]{\MNS\ Geometric Binary Operators}
\idxboth{binary}{operators}
\label{mns-geometric-bin}
\begin{tabular}{*3{ll}}
\K[\MNSboxbackslash]\boxbackslash         & \K[\MNSfilledmedtriangledown]\filledmedtriangledown   & \K[\MNSocirc]\ocirc                           \\
\K[\MNSboxbox]\boxbox                     & \K[\MNSfilledmedtriangleleft]\filledmedtriangleleft   & \K[\MNSodot]\odot                             \\
\K[\MNSboxdot]\boxdot                     & \K[\MNSfilledmedtriangleright]\filledmedtriangleright & \K[\MNSominus]\ominus                         \\
\K[\MNSboxminus]\boxminus                 & \K[\MNSfilledmedtriangleup]\filledmedtriangleup       & \K[\MNSoplus]\oplus                           \\
\K[\MNSboxplus]\boxplus                   & \K[\MNSfilledsquare]\filledsquare                     & \K[\MNSoslash]\oslash                         \\
\K[\MNSboxslash]\boxslash                 & \K[\MNSfilledstar]\filledstar                         & \K[\MNSostar]\ostar                           \\
\K[\MNSboxtimes]\boxtimes                 & \K[\MNSfilledtriangledown]\filledtriangledown         & \K[\MNSotimes]\otimes                         \\
\K[\MNSboxvert]\boxvert                   & \K[\MNSfilledtriangleleft]\filledtriangleleft         & \K[\MNSotriangle]\otriangle                   \\
\K[\MNSdiamondbackslash]\diamondbackslash & \K[\MNSfilledtriangleright]\filledtriangleright       & \K[\MNSovert]\overt                           \\
\K[\MNSdiamonddiamond]\diamonddiamond     & \K[\MNSfilledtriangleup]\filledtriangleup             & \K[\MNSpentagram]\pentagram                   \\
\K[\MNSdiamonddot]\diamonddot             & \K[\MNSmeddiamond]\meddiamond                         & \K[\MNSsmalldiamond]\smalldiamond             \\
\K[\MNSdiamondminus]\diamondminus         & \K[\MNSmedsquare]\medsquare                           & \K[\MNSsmallsquare]\smallsquare               \\
\K[\MNSdiamondplus]\diamondplus           & \K[\MNSmedstar]\medstar                               & \K[\MNSsmallstar]\smallstar                   \\
\K[\MNSdiamondslash]\diamondslash         & \K[\MNSmedtriangledown]\medtriangledown               & \K[\MNSsmalltriangledown]\smalltriangledown   \\
\K[\MNSdiamondtimes]\diamondtimes         & \K[\MNSmedtriangleleft]\medtriangleleft               & \K[\MNSsmalltriangleleft]\smalltriangleleft   \\
\K[\MNSdiamondvert]\diamondvert           & \K[\MNSmedtriangleright]\medtriangleright             & \K[\MNSsmalltriangleright]\smalltriangleright \\
\K[\MNSdownslice]\downslice               & \K[\MNSmedtriangleup]\medtriangleup                   & \K[\MNSsmalltriangleup]\smalltriangleup       \\
\K[\MNSfilleddiamond]\filleddiamond       & \K[\MNSoast]\oast                                     & \K[\MNSthinstar]\thinstar                     \\
\K[\MNSfilledmedsquare]\filledmedsquare   & \K[\MNSobackslash]\obackslash                         & \K[\MNSupslice]\upslice                       \\
\end{tabular}

\bigskip

\begin{tablenote}
  \MNS\ defines \cmdI[\MNSfilledmedsquare]{\blacksquare} as a synonym
  for \cmdI[\MNSfilledmedsquare]{\filledmedsquare};
  \cmdI[\MNSmedsquare]{\square} and \cmdI[\MNSmedsquare]{\Box} as
  synonyms for \cmdI[\MNSmedsquare]{\medsquare};
  \cmdI[\MNSsmalldiamond]{\diamond} as a synonym for
  \cmdI[\MNSsmalldiamond]{\smalldiamond};
  \cmdI[\MNSmeddiamond]{\Diamond} as a synonym for
  \cmdI[\MNSmeddiamond]{\meddiamond}; \cmdI[\MNSthinstar]{\star} as a
  synonym for \cmdI[\MNSthinstar]{\thinstar};
  \cmdI[\MNSoast]{\circledast} as a synonym for
  \cmdI[\MNSoast]{\oast}; \cmdI[\MNSocirc]{\circledcirc} as a synonym
  for \cmdI[\MNSocirc]{\ocirc}; and, \cmdI[\MNSominus]{\circleddash}
  as a synonym for \cmdI[\MNSominus]{\ominus}.
\end{tablenote}
\end{symtable}


\begin{symtable}{Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\index{integrals}
\label{op}
\renewcommand{\arraystretch}{1.75}  % Keep tall symbols from touching.
\begin{tabular}{*3{l@{$\:$}ll@{\qquad}}l@{$\:$}ll}
\R\bigcap    & \R\bigotimes & \R\bigwedge  & \R\prod      \\
\R\bigcup    & \R\bigsqcup  & \R\coprod    & \R\sum       \\
\R\bigodot   & \R\biguplus  & \R\int       \\
\R\bigoplus  & \R\bigvee    & \R\oint      \\
\end{tabular}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\index{integrals}
\label{ams-large}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{l@{$\:$}ll@{\qquad}l@{$\:$}ll}
\R[\AMSiint]\iint     & \R[\AMSiiint]\iiint       \\
\R[\AMSiiiint]\iiiint & \R[\AMSidotsint]\idotsint \\
\end{tabular}
\end{symtable}


\begin{symtable}[ST]{\ST\ Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\label{st-large}
\renewcommand{\arraystretch}{1.75}  % Keep tall symbols from touching.
\begin{tabular}{*2{l@{$\:$}ll@{\qquad}}l@{$\:$}ll}
\R\bigbox        & \R\biginterleave & \R\bigsqcap                            \\
\R\bigcurlyvee   & \R\bignplus      & \R[\STbigtriangledown]\bigtriangledown \\
\R\bigcurlywedge & \R\bigparallel   & \R[\STbigtriangleup]\bigtriangleup     \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\index{integrals}
\label{wasy-large}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{*2{l@{$\:$}ll@{\qquad}}l@{$\:$}ll}
\R[\varint]\int$^\dag$ & \R\iint        & \R\iiint \\
\R\varint$^*$          & \R\varoint$^*$ & \R\oiint \\
\end{tabular}

\bigskip
\begin{tablenote}
  None of the preceding symbols are defined when \WASY\ is passed the
  \optname{wasysym}{nointegrals} option.
\end{tablenote}

\medskip
\begin{tablenote}[*]
  Not defined when \WASY\ is passed the \optname{wasysym}{integrals} option.
\end{tablenote}

\medskip
\begin{tablenote}[\dag]
  Defined only when \WASY\ is passed the \optname{wasysym}{integrals}
  option.  Otherwise, the default \latex \cmdX{\int} glyph (as shown
  in Table~\ref{op}) is used.
\end{tablenote}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\index{integrals}
\label{abx-large}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{*2{l@{$\:$}ll@{\qquad}}l@{$\:$}ll}
\R[\ABXbigcurlyvee]\bigcurlyvee            & \R[\ABXbigboxslash]\bigboxslash           & \R[\ABXbigoright]\bigoright           \\
\R[\ABXbigsqcap]\bigsqcap                  & \R[\ABXbigboxtimes]\bigboxtimes           & \R[\ABXbigoslash]\bigoslash           \\
\R[\ABXbigcurlywedge]\bigcurlywedge        & \R[\ABXbigboxtop]\bigboxtop               & \R[\ABXbigotop]\bigotop               \\
\R[\ABXbigboxasterisk]\bigboxasterisk      & \R[\ABXbigboxtriangleup]\bigboxtriangleup & \R[\ABXbigotriangleup]\bigotriangleup \\
\R[\ABXbigboxbackslash]\bigboxbackslash    & \R[\ABXbigboxvoid]\bigboxvoid             & \R[\ABXbigovoid]\bigovoid             \\
\R[\ABXbigboxbot]\bigboxbot                & \R[\ABXbigcomplementop]\bigcomplementop   & \R[\ABXbigplus]\bigplus               \\
\R[\ABXbigboxcirc]\bigboxcirc              & \R[\ABXbigoasterisk]\bigoasterisk         & \R[\ABXbigsquplus]\bigsquplus         \\
\R[\ABXbigboxcoasterisk]\bigboxcoasterisk  & \R[\ABXbigobackslash]\bigobackslash       & \R[\ABXbigtimes]\bigtimes             \\
\R[\ABXbigboxdiv]\bigboxdiv                & \R[\ABXbigobot]\bigobot                   & \R[\ABXiiintop]\iiint                 \\
\R[\ABXbigboxdot]\bigboxdot                & \R[\ABXbigocirc]\bigocirc                 & \R[\ABXiintop]\iint                   \\
\R[\ABXbigboxleft]\bigboxleft              & \R[\ABXbigocoasterisk]\bigocoasterisk     & \R[\ABXintop]\int                     \\
\R[\ABXbigboxminus]\bigboxminus            & \R[\ABXbigodiv]\bigodiv                   & \R[\ABXoiintop]\oiint                 \\
\R[\ABXbigboxplus]\bigboxplus              & \R[\ABXbigoleft]\bigoleft                 & \R[\ABXointop]\oint                   \\
\R[\ABXbigboxright]\bigboxright            & \R[\ABXbigominus]\bigominus                                                       \\
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\index{integrals}
\label{txpx-large}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{l@{$\:$}ll@{\hspace{4em}}l@{$\:$}ll}
\R\bigsqcapplus       & \R\ointclockwise         \\
\R\bigsqcupplus       & \R\ointctrclockwise      \\
\R\fint               & \R\sqiiint               \\
\R\idotsint           & \R\sqiint                \\
\R\iiiint             & \R\sqint                 \\
\R\iiint              & \R\varoiiintclockwise    \\
\R\iint               & \R\varoiiintctrclockwise \\
\R\oiiintclockwise    & \R\varoiintclockwise     \\
\R\oiiintctrclockwise & \R\varoiintctrclockwise  \\
\R\oiiint             & \R\varointclockwise      \\
\R\oiintclockwise     & \R\varointctrclockwise   \\
\R\oiintctrclockwise  & \R\varprod               \\
\R\oiint                                         \\
\end{tabular}
\end{symtable}


\begin{symtable}[ES]{\ES\ Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\index{integrals}
\label{es-large}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{*2{l@{\quad}ll@{\hspace{4em}}}l@{\quad}ll}
\E{dotsint}     & \E{ointclockwise}       \\
\E{fint}        & \E{ointctrclockwise}    \\
\E{iiiint}      & \E{sqiint}              \\
\E{iiint}       & \E{sqint}               \\
\E{iint}        & \E{varoiint}            \\
\E{landdownint} & \E{varointclockwise}    \\
\E{landupint}   & \E{varointctrclockwise} \\
\E{oiint}                                 \\
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\index{integrals}
\label{mns-large}
\renewcommand{\arraystretch}{1.75}  % Keep tall symbols from touching.
\begin{tabular}{*2{c@{\quad}cl@{\qquad}}c@{\quad}cl}
\KN[\MNStbigcap][\MNSdbigcap]\bigcap                                        & \KN[\MNStbigominus][\MNSdbigominus]\bigominus          & \KN[\MNStcomplement][\MNSdcomplement]\complement                \\
\KN[\MNStbigcapdot][\MNSdbigcapdot]\bigcapdot                               & \KN[\MNStbigoplus][\MNSdbigoplus]\bigoplus             & \KN[\MNStcoprod][\MNSdcoprod]\coprod                            \\
\KN[\MNStbigcapplus][\MNSdbigcapplus]\bigcapplus                            & \KN[\MNStbigoslash][\MNSdbigoslash]\bigoslash          & \KN[\MNStidotsint][\MNSdidotsint]\idotsint                      \\
\KN[\MNStbigcircle][\MNSdbigcircle]\bigcircle                               & \KN[\MNStbigostar][\MNSdbigostar]\bigostar             & \KN[\MNStiiiint][\MNSdiiiint]\iiiint                            \\
\KN[\MNStbigcup][\MNSdbigcup]\bigcup                                        & \KN[\MNStbigotimes][\MNSdbigotimes]\bigotimes          & \KN[\MNStiiint][\MNSdiiint]\iiint                               \\
\KN[\MNStbigcupdot][\MNSdbigcupdot]\bigcupdot                               & \KN[\MNStbigotriangle][\MNSdbigotriangle]\bigotriangle & \KN[\MNStiint][\MNSdiint]\iint                                  \\
\KN[\MNStbigcupplus][\MNSdbigcupplus]\bigcupplus$^*$                        & \KN[\MNStbigovert][\MNSdbigovert]\bigovert             & \KN[\MNStint][\MNSdint]\int                                     \\
\KN[\MNStbigcurlyvee][\MNSdbigcurlyvee]\bigcurlyvee                         & \KN[\MNStbigplus][\MNSdbigplus]\bigplus                & \KN[\MNStlanddownint][\MNSdlanddownint]\landdownint             \\
\KN[\MNStbigcurlyveedot][\MNSdbigcurlyveedot]\bigcurlyveedot                & \KN[\MNStbigsqcap][\MNSdbigsqcap]\bigsqcap             & \KN[\MNStlandupint][\MNSdlandupint]\landupint                   \\
\KN[\MNStbigcurlywedge][\MNSdbigcurlywedge]\bigcurlywedge                   & \KN[\MNStbigsqcapdot][\MNSdbigsqcapdot]\bigsqcapdot    & \KN[\MNStlcircleleftint][\MNSdlcircleleftint]\lcircleleftint    \\
\KN[\MNStbigcurlywedgedot][\MNSdbigcurlywedgedot]\bigcurlywedgedot          & \KN[\MNStbigsqcapplus][\MNSdbigsqcapplus]\bigsqcapplus & \KN[\MNStlcirclerightint][\MNSdlcirclerightint]\lcirclerightint \\
\KN[\MNStbigdoublecurlyvee][\MNSdbigdoublecurlyvee]\bigdoublecurlyvee       & \KN[\MNStbigsqcup][\MNSdbigsqcup]\bigsqcup             & \KN[\MNStoiint][\MNSdoiint]\oiint                               \\
\KN[\MNStbigdoublecurlywedge][\MNSdbigdoublecurlywedge]\bigdoublecurlywedge & \KN[\MNStbigsqcupdot][\MNSdbigsqcupdot]\bigsqcupdot    & \KN[\MNStoint][\MNSdoint]\oint                                  \\
\KN[\MNStbigdoublevee][\MNSdbigdoublevee]\bigdoublevee                      & \KN[\MNStbigsqcupplus][\MNSdbigsqcupplus]\bigsqcupplus & \KN[\MNStprod][\MNSdprod]\prod                                  \\
\KN[\MNStbigdoublewedge][\MNSdbigdoublewedge]\bigdoublewedge                & \KN[\MNStbigtimes][\MNSdbigtimes]\bigtimes             & \KN[\MNStrcircleleftint][\MNSdrcircleleftint]\rcircleleftint    \\
\KN[\MNStbigoast][\MNSdbigoast]\bigoast                                     & \KN[\MNStbigvee][\MNSdbigvee]\bigvee                   & \KN[\MNStrcirclerightint][\MNSdrcirclerightint]\rcirclerightint \\
\KN[\MNStbigobackslash][\MNSdbigobackslash]\bigobackslash                   & \KN[\MNStbigveedot][\MNSdbigveedot]\bigveedot          & \KN[\MNStstrokedint][\MNSdstrokedint]\strokedint                \\
\KN[\MNStbigocirc][\MNSdbigocirc]\bigocirc                                  & \KN[\MNStbigwedge][\MNSdbigwedge]\bigwedge             & \KN[\MNStsum][\MNSdsum]\sum                                     \\
\KN[\MNStbigodot][\MNSdbigodot]\bigodot                                     & \KN[\MNStbigwedgedot][\MNSdbigwedgedot]\bigwedgedot    & \KN[\MNStsumint][\MNSdsumint]\sumint                            \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \MNS\ defines \cmdI[\MNSdbigcupplus]{\biguplus} as a synonym for
  \cmdI[\MNSdbigcupplus]{\bigcupplus}.
\end{tablenote}
\end{symtable}


\begin{symtable}[MDES]{\MDES\ Variable-sized Math Operators}
\idxboth{variable-sized}{symbols}
\index{integrals}
\label{mdes-large}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{*2{c@{\quad}cl@{\hspace{4em}}}c@{\quad}cl}
\KN[\MDESintclockwisesm][\MDESintclockwise]\intclockwise & \KN[\MDESointclockwisesm][\MDESointclockwise]\ointclockwise          \\
\KN[\MDESoiiintsm][\MDESoiiint]\oiiint                   & \KN[\MDESointctrclockwisesm][\MDESointctrclockwise]\ointctrclockwise \\
\KN[\MDESoiintsm][\MDESoiint]\oiint                      &                                                                      \\
\end{tabular}

\bigskip

\begin{tablenote}
  The \MDES\ package provides three versions of each integral---in
  fact, of every symbol---to accompany different text fonts:
  \PSfont{Utopia}~(\raisebox{2ex}{\usefont{OMX}{mdput}{m}{n}\char"52}),
  \PSfont{Garamond}~(\raisebox{2ex}{\usefont{OMX}{mdugm}{m}{n}\char"52}), and
  \PSfont{Charter}~(\raisebox{2ex}{\usefont{OMX}{mdbch}{m}{n}\char"52}).
\end{tablenote}
\end{symtable}


\begin{symtable}[CMLL]{\CMLL\ Large Math Operators}
\idxboth{linear logic}{symbols}
\label{cmll-large}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{ll@{\qquad}ll}
\K[\CMLLbigparr]\bigparr & \K[\CMLLbigwith]\bigwith \\
\end{tabular}
\end{symtable}


\begin{symtable}{Binary Relations}
\idxboth{relational}{symbols}
\index{tacks}
\label{rel}
\begin{tabular}{*4{ll}}
\X\approx   & \X\equiv    & \X\perp     & \X\smile  \\
\X\asymp    & \X\frown    & \X\prec     & \X\succ   \\
\X\bowtie   & \X\Join$^*$ & \X\preceq   & \X\succeq \\
\X\cong     & \X\mid      & \X\propto   & \X\vdash  \\
\X\dashv    & \X\models   & \X\sim                  \\
\X\doteq    & \X\parallel & \X\simeq                \\
\end{tabular}

\bigskip
\notpredefinedmessageABX
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\label{ams-rel}
\begin{tabular}{*3{ll}}
\X\approxeq      & \X\eqcirc        & \X\succapprox    \\
\X\backepsilon   & \X\fallingdotseq & \X\succcurlyeq   \\
\X\backsim       & \X\multimap      & \X\succsim       \\
\X\backsimeq     & \X\pitchfork     & \X\therefore     \\
\X\because       & \X\precapprox    & \X\thickapprox   \\
\X\between       & \X\preccurlyeq   & \X\thicksim      \\
\X\Bumpeq        & \X\precsim       & \X\varpropto     \\
\X\bumpeq        & \X\risingdotseq  & \X\Vdash         \\
\X\circeq        & \X\shortmid      & \X\vDash         \\
\X\curlyeqprec   & \X\shortparallel & \X\Vvdash        \\
\X\curlyeqsucc   & \X\smallfrown    &                  \\
\X\doteqdot      & \X\smallsmile    &                  \\
\end{tabular}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Negated Binary Relations}
\index{binary relations>negated}
\index{relational symbols>negated binary}
\label{ams-nrel}
\begin{tabular}{*3{ll}}
\X\ncong     & \X\nshortparallel & \X\nVDash      \\
\X\nmid      & \X\nsim           & \X\precnapprox \\
\X\nparallel & \X\nsucc          & \X\precnsim    \\
\X\nprec     & \X\nsucceq        & \X\succnapprox \\
\X\npreceq   & \X\nvDash         & \X\succnsim    \\
\X\nshortmid & \X\nvdash                          \\
\end{tabular}
\end{symtable}


\begin{symtable}[ST]{\ST\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\label{st-rel}
\begin{tabular}{*2{ll}}
\X\inplus & \X\niplus \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\label{wasy-rel}
\begin{tabular}{*3{ll}}
\X\invneg & \X\leadsto & \X\wasypropto \\
\X\Join   & \X\logof                   \\
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\label{txpx-rel}
\begin{tabular}{*3{ll}}
\X\circledgtr   & \X\lJoin                & \X\opentimes      \\
\X\circledless  & \X\lrtimes              & \X\Perp           \\
\X\colonapprox  & \X\multimap             & \X\preceqq        \\
\X\Colonapprox  & \X\multimapboth         & \X\precneqq       \\
\X\coloneq      & \X\multimapbothvert     & \X\rJoin          \\
\X\Coloneq      & \X\multimapdot          & \X\strictfi       \\
\X\Coloneqq     & \X\multimapdotboth      & \X\strictif       \\
\X\coloneqq$^*$ & \X\multimapdotbothA     & \X\strictiff      \\
\X\Colonsim     & \X\multimapdotbothAvert & \X\succeqq        \\
\X\colonsim     & \X\multimapdotbothB     & \X\succneqq       \\
\X\Eqcolon      & \X\multimapdotbothBvert & \X\varparallel    \\
\X\eqcolon      & \X\multimapdotbothvert  & \X\varparallelinv \\
\X\eqqcolon     & \X\multimapdotinv       & \X\VvDash         \\
\X\Eqqcolon     & \X\multimapinv                              \\
\X\eqsim        & \X\openJoin                                 \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  As an alternative to using \TXPX, a ``$\mathrel{\mathop:}=$'' symbol
  can be constructed with ``\verb|\mathrel{\mathop:}=|''.
\end{tablenote}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Negated Binary Relations}
\index{binary relations>negated}
\index{relational symbols>negated binary}
\label{txpx-nrel}
\begin{tabular}{*3{ll}}
\X\napproxeq   & \X\npreccurlyeq & \X\nthickapprox       \\
\X\nasymp      & \X\npreceqq     & \X\ntwoheadleftarrow  \\
\X\nbacksim    & \X\nprecsim     & \X\ntwoheadrightarrow \\
\X\nbacksimeq  & \X\nsimeq       & \X\nvarparallel       \\
\X\nbumpeq     & \X\nsuccapprox  & \X\nvarparallelinv    \\
\X\nBumpeq     & \X\nsucccurlyeq & \X\nVdash             \\
\X\nequiv      & \X\nsucceqq                             \\
\X\nprecapprox & \X\nsuccsim                             \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\label{abx-rel}
\begin{tabular}{*3{ll}}
\X[\ABXbetween]\between         & \X[\ABXdivides]\divides             & \X[\ABXrisingdotseq]\risingdotseq \\
\X[\ABXbotdoteq]\botdoteq       & \X[\ABXdotseq]\dotseq               & \X[\ABXsuccapprox]\succapprox     \\
\X[\ABXBumpedeq]\Bumpedeq       & \X[\ABXeqbumped]\eqbumped           & \X[\ABXsucccurlyeq]\succcurlyeq   \\
\X[\ABXbumpedeq]\bumpedeq       & \X[\ABXeqcirc]\eqcirc               & \X[\ABXsuccdot]\succdot           \\
\X[\ABXcirceq]\circeq           & \X[\ABXeqcolon]\eqcolon             & \X[\ABXsuccsim]\succsim           \\
\X[\ABXcoloneq]\coloneq         & \X[\ABXfallingdotseq]\fallingdotseq & \X[\ABXtherefore]\therefore       \\
\X[\ABXcorresponds]\corresponds & \X[\ABXggcurly]\ggcurly             & \X[\ABXtopdoteq]\topdoteq         \\
\X[\ABXcurlyeqprec]\curlyeqprec & \X[\ABXllcurly]\llcurly             & \X[\ABXvDash]\vDash               \\
\X[\ABXcurlyeqsucc]\curlyeqsucc & \X[\ABXprecapprox]\precapprox       & \X[\ABXVdash]\Vdash               \\
\X[\ABXDashV]\DashV             & \X[\ABXpreccurlyeq]\preccurlyeq     & \X[\ABXVDash]\VDash               \\
\X[\ABXDashv]\Dashv             & \X[\ABXprecdot]\precdot             & \X[\ABXVvdash]\Vvdash             \\
\X[\ABXdashVv]\dashVv           & \X[\ABXprecsim]\precsim                                                 \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Negated Binary Relations}
\index{binary relations>negated}\index{relational symbols>negated binary}
\label{abx-nrel}
\begin{tabular}{*3{ll}}
\X[\ABXnapprox]\napprox           & \X[\ABXnotperp]\notperp           & \X[\ABXnvDash]\nvDash           \\
\X[\ABXncong]\ncong               & \X[\ABXnprec]\nprec               & \X[\ABXnVDash]\nVDash           \\
\X[\ABXncurlyeqprec]\ncurlyeqprec & \X[\ABXnprecapprox]\nprecapprox   & \X[\ABXnVdash]\nVdash           \\
\X[\ABXncurlyeqsucc]\ncurlyeqsucc & \X[\ABXnpreccurlyeq]\npreccurlyeq & \X[\ABXnvdash]\nvdash           \\
\X[\ABXnDashv]\nDashv             & \X[\ABXnpreceq]\npreceq           & \X[\ABXnVvash]\nVvash           \\
\X[\ABXndashV]\ndashV             & \X[\ABXnprecsim]\nprecsim         & \X[\ABXprecnapprox]\precnapprox \\
\X[\ABXndashv]\ndashv             & \X[\ABXnsim]\nsim                 & \X[\ABXprecneq]\precneq         \\
\X[\ABXnDashV]\nDashV             & \X[\ABXnsimeq]\nsimeq             & \X[\ABXprecnsim]\precnsim       \\
\X[\ABXndashVv]\ndashVv           & \X[\ABXnsucc]\nsucc               & \X[\ABXsuccnapprox]\succnapprox \\
\X[\ABXneq]\neq                   & \X[\ABXnsuccapprox]\nsuccapprox   & \X[\ABXsuccneq]\succneq         \\
\X[\ABXnotasymp]\notasymp         & \X[\ABXnsucccurlyeq]\nsucccurlyeq & \X[\ABXsuccnsim]\succnsim       \\
\X[\ABXnotdivides]\notdivides     & \X[\ABXnsucceq]\nsucceq                                             \\
\X[\ABXnotequiv]\notequiv         & \X[\ABXnsuccsim]\nsuccsim                                           \\
\end{tabular}

\bigskip

\begin{tablenote}
  \index{not equal=not equal ($\ABXvarnotsign!=$ vs.\ $\ABXnotsign!=$)}
  The \cmd{\changenotsign} command toggles the behavior of \cmd{\not}
  to produce either a vertical or a diagonal slash through a binary
  operator.  Thus, ``\verb|$a \not= b$|'' can be made to produce
  either ``$a \ABXnotsign= b$'' or ``$a \ABXvarnotsign= b$''.
\end{tablenote}
\end{symtable}


\begin{longsymtable}[MNS]{\MNS\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\label{mns-rel}
\begin{longtable}{*4{ll}}
\multicolumn{6}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{6}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\K[\MNSapprox]\approx               & \K[\MNSeqcirc]\eqcirc               & \K[\MNSnwfree]\nwfree               & \K[\MNSshortparallel]\shortparallel \\
\K[\MNSapproxeq]\approxeq           & \K[\MNSeqdot]\eqdot                 & \K[\MNSnwmodels]\nwmodels           & \K[\MNSsim]\sim                     \\
\K[\MNSbackapprox]\backapprox       & \K[\MNSeqsim]\eqsim                 & \K[\MNSnwModels]\nwModels           & \K[\MNSsimeq]\simeq                 \\
\K[\MNSbackapproxeq]\backapproxeq   & \K[\MNSequal]\equal                 & \K[\MNSnwsecrossing]\nwsecrossing   & \K[\MNSsucc]\succ                   \\
\K[\MNSbackcong]\backcong           & \K[\MNSequalclosed]\equalclosed     & \K[\MNSnwseline]\nwseline           & \K[\MNSsuccapprox]\succapprox       \\
\K[\MNSbackeqsim]\backeqsim         & \K[\MNSequiv]\equiv                 & \K[\MNSNwseline]\Nwseline           & \K[\MNSsucccurlyeq]\succcurlyeq     \\
\K[\MNSbacksim]\backsim             & \K[\MNSequivclosed]\equivclosed     & \K[\MNSnwvdash]\nwvdash             & \K[\MNSsucceq]\succeq               \\
\K[\MNSbacksimeq]\backsimeq         & \K[\MNSfallingdotseq]\fallingdotseq & \K[\MNSnwVdash]\nwVdash             & \K[\MNSsuccsim]\succsim             \\
\K[\MNSbacktriplesim]\backtriplesim & \K[\MNShateq]\hateq                 & \K[\MNSprec]\prec                   & \K[\MNSswfootline]\swfootline       \\
\K[\MNSbetween]\between             & \K[\MNShcrossing]\hcrossing         & \K[\MNSprecapprox]\precapprox       & \K[\MNSswfree]\swfree               \\
\K[\MNSbumpeq]\bumpeq               & \K[\MNSleftfootline]\leftfootline   & \K[\MNSpreccurlyeq]\preccurlyeq     & \K[\MNSswmodels]\swmodels           \\
\K[\MNSBumpeq]\Bumpeq               & \K[\MNSleftfree]\leftfree           & \K[\MNSpreceq]\preceq               & \K[\MNSswModels]\swModels           \\
\K[\MNScirceq]\circeq               & \K[\MNSleftmodels]\leftmodels       & \K[\MNSprecsim]\precsim             & \K[\MNSswvdash]\swvdash             \\
\K[\MNSclosedequal]\closedequal     & \K[\MNSleftModels]\leftModels       & \K[\MNSrightfootline]\rightfootline & \K[\MNSswVdash]\swVdash             \\
\K[\MNSclosedprec]\closedprec       & \K[\MNSleftpropto]\leftpropto       & \K[\MNSrightfree]\rightfree         & \K[\MNStriplesim]\triplesim         \\
\K[\MNSclosedsucc]\closedsucc       & \K[\MNSleftrightline]\leftrightline & \K[\MNSrightmodels]\rightmodels     & \K[\MNSupdownline]\updownline       \\
\K[\MNScong]\cong                   & \K[\MNSLeftrightline]\Leftrightline & \K[\MNSrightModels]\rightModels     & \K[\MNSUpdownline]\Updownline       \\
\K[\MNScurlyeqprec]\curlyeqprec     & \K[\MNSleftslice]\leftslice         & \K[\MNSrightpropto]\rightpropto     & \K[\MNSupfootline]\upfootline       \\
\K[\MNScurlyeqsucc]\curlyeqsucc     & \K[\MNSleftvdash]\leftvdash         & \K[\MNSrightslice]\rightslice       & \K[\MNSupfree]\upfree               \\
\K[\MNSdoteq]\doteq                 & \K[\MNSleftVdash]\leftVdash         & \K[\MNSrightvdash]\rightvdash       & \K[\MNSupmodels]\upmodels           \\
\K[\MNSDoteq]\Doteq                 & \K[\MNSnefootline]\nefootline       & \K[\MNSrightVdash]\rightVdash       & \K[\MNSupModels]\upModels           \\
\K[\MNSdownfootline]\downfootline   & \K[\MNSnefree]\nefree               & \K[\MNSrisingdotseq]\risingdotseq   & \K[\MNSuppropto]\uppropto           \\
\K[\MNSdownfree]\downfree           & \K[\MNSnemodels]\nemodels           & \K[\MNSsefootline]\sefootline       & \K[\MNSupvdash]\upvdash             \\
\K[\MNSdownmodels]\downmodels       & \K[\MNSneModels]\neModels           & \K[\MNSsefree]\sefree               & \K[\MNSupVdash]\upVdash             \\
\K[\MNSdownModels]\downModels       & \K[\MNSneswline]\neswline           & \K[\MNSsemodels]\semodels           & \K[\MNSvcrossing]\vcrossing         \\
\K[\MNSdownpropto]\downpropto       & \K[\MNSNeswline]\Neswline           & \K[\MNSseModels]\seModels           & \K[\MNSVvdash]\Vvdash               \\
\K[\MNSdownvdash]\downvdash         & \K[\MNSnevdash]\nevdash             & \K[\MNSseparated]\separated         &                                     \\
\K[\MNSdownVdash]\downVdash         & \K[\MNSneVdash]\neVdash             & \K[\MNSsevdash]\sevdash             &                                     \\
\K[\MNSeqbump]\eqbump               & \K[\MNSnwfootline]\nwfootline       & \K[\MNSseVdash]\seVdash             &                                     \\
\end{longtable}

\MNS\ additionally defines synonyms for some of the preceding symbols:

\bigskip

\newcommand*{\mnssyn}[1]{(same as \texttt{\string#1})}
\begin{tabular}{ll@{\quad}l}
\K[\MNSleftvdash]\dashv      & \mnssyn\leftvdash \\
\K[\MNSnwseline]\diagdown    & \mnssyn\nwseline \\
\K[\MNSneswline]\diagup      & \mnssyn\neswline \\
\K[\MNSneswline]\divides     & \mnssyn\updownline \\
\K[\MNSDoteq]\doteqdot       & \mnssyn\Doteq \\
\K[\MNSrightmodels]\models   & \mnssyn\rightmodels \\
\K[\MNSUpdownline]\parallel  & \mnssyn\Updownline \\
\K[\MNSupvdash]\perp         & \mnssyn\upvdash \\
\K[\MNSleftpropto]\propto    & \mnssyn\leftpropto \\
\K[\MNSleftrightline]\relbar & \mnssyn\leftrightline \\
\K[\MNSLeftrightline]\Relbar & \mnssyn\Leftrightline \\
\K[\MNSleftpropto]\varpropto & \mnssyn\leftpropto \\
\K[\MNSrightmodels]\vDash    & \mnssyn\rightmodels \\
\K[\MNSrightModels]\VDash    & \mnssyn\rightModels \\
\K[\MNSrightvdash]\vdash     & \mnssyn\rightvdash \\
\K[\MNSrightVdash]\Vdash     & \mnssyn\rightVdash \\
\end{tabular}
\end{longsymtable}


\begin{longsymtable}[MNS]{\MNS\ Negated Binary Relations}
\index{binary relations>negated}
\index{relational symbols>negated binary}
\label{mns-rrel}
\begin{longtable}{*4{ll}}
\multicolumn{6}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{6}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\K[\MNSnapprox]\napprox               & \K[\MNSneqsim]\neqsim                 & \K[\MNSnnwModels]\nnwModels           & \K[\MNSnsucc]\nsucc               \\
\K[\MNSnapproxeq]\napproxeq           & \K[\MNSnequal]\nequal                 & \K[\MNSnnwseline]\nnwseline           & \K[\MNSnsuccapprox]\nsuccapprox   \\
\K[\MNSnbackapprox]\nbackapprox       & \K[\MNSnequalclosed]\nequalclosed     & \K[\MNSnNwseline]\nNwseline           & \K[\MNSnsucccurlyeq]\nsucccurlyeq \\
\K[\MNSnbackapproxeq]\nbackapproxeq   & \K[\MNSnequiv]\nequiv                 & \K[\MNSnnwvdash]\nnwvdash             & \K[\MNSnsucceq]\nsucceq           \\
\K[\MNSnbackcong]\nbackcong           & \K[\MNSnequivclosed]\nequivclosed     & \K[\MNSnnwVdash]\nnwVdash             & \K[\MNSnsuccsim]\nsuccsim         \\
\K[\MNSnbackeqsim]\nbackeqsim         & \K[\MNSneswcrossing]\neswcrossing     & \K[\MNSnprec]\nprec                   & \K[\MNSnswfootline]\nswfootline   \\
\K[\MNSnbacksim]\nbacksim             & \K[\MNSnfallingdotseq]\nfallingdotseq & \K[\MNSnprecapprox]\nprecapprox       & \K[\MNSnswfree]\nswfree           \\
\K[\MNSnbacksimeq]\nbacksimeq         & \K[\MNSnhateq]\nhateq                 & \K[\MNSnpreccurlyeq]\npreccurlyeq     & \K[\MNSnswmodels]\nswmodels       \\
\K[\MNSnbacktriplesim]\nbacktriplesim & \K[\MNSnleftfootline]\nleftfootline   & \K[\MNSnpreceq]\npreceq               & \K[\MNSnswModels]\nswModels       \\
\K[\MNSnbumpeq]\nbumpeq               & \K[\MNSnleftfree]\nleftfree           & \K[\MNSnprecsim]\nprecsim             & \K[\MNSnswvdash]\nswvdash         \\
\K[\MNSnBumpeq]\nBumpeq               & \K[\MNSnleftmodels]\nleftmodels       & \K[\MNSnrightfootline]\nrightfootline & \K[\MNSnswVdash]\nswVdash         \\
\K[\MNSncirceq]\ncirceq               & \K[\MNSnleftModels]\nleftModels       & \K[\MNSnrightfree]\nrightfree         & \K[\MNSntriplesim]\ntriplesim     \\
\K[\MNSnclosedequal]\nclosedequal     & \K[\MNSnleftrightline]\nleftrightline & \K[\MNSnrightmodels]\nrightmodels     & \K[\MNSnupdownline]\nupdownline   \\
\K[\MNSncong]\ncong                   & \K[\MNSnLeftrightline]\nLeftrightline & \K[\MNSnrightModels]\nrightModels     & \K[\MNSnUpdownline]\nUpdownline   \\
\K[\MNSncurlyeqprec]\ncurlyeqprec     & \K[\MNSnleftvdash]\nleftvdash         & \K[\MNSnrightvdash]\nrightvdash       & \K[\MNSnupfootline]\nupfootline   \\
\K[\MNSncurlyeqsucc]\ncurlyeqsucc     & \K[\MNSnleftVdash]\nleftVdash         & \K[\MNSnrightVdash]\nrightVdash       & \K[\MNSnupfree]\nupfree           \\
\K[\MNSndoteq]\ndoteq                 & \K[\MNSnnefootline]\nnefootline       & \K[\MNSnrisingdotseq]\nrisingdotseq   & \K[\MNSnupmodels]\nupmodels       \\
\K[\MNSnDoteq]\nDoteq                 & \K[\MNSnnefree]\nnefree               & \K[\MNSnsefootline]\nsefootline       & \K[\MNSnupModels]\nupModels       \\
\K[\MNSndownfootline]\ndownfootline   & \K[\MNSnnemodels]\nnemodels           & \K[\MNSnsefree]\nsefree               & \K[\MNSnupvdash]\nupvdash         \\
\K[\MNSndownfree]\ndownfree           & \K[\MNSnneModels]\nneModels           & \K[\MNSnsemodels]\nsemodels           & \K[\MNSnupVdash]\nupVdash         \\
\K[\MNSndownmodels]\ndownmodels       & \K[\MNSnneswline]\nneswline           & \K[\MNSnseModels]\nseModels           & \K[\MNSprecnapprox]\precnapprox   \\
\K[\MNSndownModels]\ndownModels       & \K[\MNSnNeswline]\nNeswline           & \K[\MNSnsevdash]\nsevdash             & \K[\MNSprecnsim]\precnsim         \\
\K[\MNSndownvdash]\ndownvdash         & \K[\MNSnnevdash]\nnevdash             & \K[\MNSnseVdash]\nseVdash             & \K[\MNSsuccnapprox]\succnapprox   \\
\K[\MNSndownVdash]\ndownVdash         & \K[\MNSnneVdash]\nneVdash             & \K[\MNSnshortmid]\nshortmid           & \K[\MNSsuccnsim]\succnsim         \\
\K[\MNSneqbump]\neqbump               & \K[\MNSnnwfootline]\nnwfootline       & \K[\MNSnshortparallel]\nshortparallel &                                   \\
\K[\MNSneqcirc]\neqcirc               & \K[\MNSnnwfree]\nnwfree               & \K[\MNSnsim]\nsim                     &                                   \\
\K[\MNSneqdot]\neqdot                 & \K[\MNSnnwmodels]\nnwmodels           & \K[\MNSnsimeq]\nsimeq                 &                                   \\
\end{longtable}

\MNS\ additionally defines synonyms for some of the preceding symbols:

\bigskip

\newcommand*{\mnssyn}[1]{(same as \texttt{\string#1})}
\begin{tabular}{ll@{\quad}l}
\K[\MNSnleftvdash]\ndashv         & \mnssyn\nleftvdash \\
\K[\MNSnnwseline]\ndiagdown       & \mnssyn\nnwseline \\
\K[\MNSnneswline]\ndiagup         & \mnssyn\nneswline \\
\K[\MNSnupdownline]\ndivides      & \mnssyn\nupdownline \\
\K[\MNSnequal]\ne                 & \mnssyn\nequal \\
\K[\MNSnequal]\neq                & \mnssyn\nequal \\
\K[\MNSnupdownline]\nmid          & \mnssyn\nupdownline \\
\K[\MNSnrightmodels]\nmodels      & \mnssyn\nrightmodels \\
\K[\MNSnUpdownline]\nparallel     & \mnssyn\nUpdownline \\
\K[\MNSnupvdash]\nperp            & \mnssyn\nupvdash \\
\K[\MNSnleftrightline]\nrelbar    & \mnssyn\nleftrightline \\
\K[\MNSnLeftrightline]\nRelbar    & \mnssyn\nLeftrightline \\
\K[\MNSnrightmodels]\nvDash       & \mnssyn\nrightmodels \\
\K[\MNSnrightvdash]\nvdash        & \mnssyn\nrightvdash \\
\K[\MNSnrightVdash]\nVdash        & \mnssyn\nrightVdash \\
\K[\MNSnrightModels]\nVDash       & \mnssyn\nrightModels \\
\end{tabular}
\end{longsymtable}


\begin{symtable}[MTOOLS]{\MTOOLS\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\label{mtools-rel}
\begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
\X[\MTOOLSColonapprox]\Colonapprox & \X[\MTOOLScoloneq]\coloneq   & \X[\MTOOLSEqcolon]\Eqcolon   \\
\X[\MTOOLScolonapprox]\colonapprox & \X[\MTOOLScolonsim]\colonsim & \X[\MTOOLSeqqcolon]\eqqcolon \\
\X[\MTOOLScoloneqq]\coloneqq       & \X[\MTOOLSColonsim]\Colonsim & \X[\MTOOLSEqqcolon]\Eqqcolon \\
\X[\MTOOLSColoneqq]\Coloneqq       & \X[\MTOOLSdblcolon]\dblcolon &                              \\
\X[\MTOOLSColoneq]\Coloneq         & \X[\MTOOLSeqcolon]\eqcolon   &                              \\
\end{tabular}

\bigskip

\begin{tablenote}
  Similar symbols can be defined using \MTOOLS's \cmdX{\vcentcolon},
  which produces a colon centered on the font's math axis:

  \begin{center}
    \begin{tabular}{ccc}
      \Huge $=:=$    & vs. & \Huge $=\vcentcolon=$    \\
      ``\verb|=:=|'' &     & ``\verb|=\vcentcolon=|'' \\
    \end{tabular}
  \end{center}
\end{tablenote}
\end{symtable}


\begin{longsymtable}[TURN]{\TURN\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{consequence relations}
\label{turn-rel}
\renewcommand{\arraystretch}{2}  % Keep tall symbols from touching.
\begin{longtable}{ll@{\hspace*{2em}}ll@{\hspace*{2em}}ll}
\multicolumn{6}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{6}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\Wul\dddtstile{abc}{def} & \Wul\nntstile{abc}{def}  & \Wul\stdtstile{abc}{def} \\
\Wul\ddststile{abc}{def} & \Wul\nnttstile{abc}{def} & \Wul\stststile{abc}{def} \\
\Wul\ddtstile{abc}{def}  & \Wul\nsdtstile{abc}{def} & \Wul\sttstile{abc}{def}  \\
\Wul\ddttstile{abc}{def} & \Wul\nsststile{abc}{def} & \Wul\stttstile{abc}{def} \\
\Wul\dndtstile{abc}{def} & \Wul\nststile{abc}{def}  & \Wul\tddtstile{abc}{def} \\
\Wul\dnststile{abc}{def} & \Wul\nsttstile{abc}{def} & \Wul\tdststile{abc}{def} \\
\Wul\dntstile{abc}{def}  & \Wul\ntdtstile{abc}{def} & \Wul\tdtstile{abc}{def}  \\
\Wul\dnttstile{abc}{def} & \Wul\ntststile{abc}{def} & \Wul\tdttstile{abc}{def} \\
\Wul\dsdtstile{abc}{def} & \Wul\nttstile{abc}{def}  & \Wul\tndtstile{abc}{def} \\
\Wul\dsststile{abc}{def} & \Wul\ntttstile{abc}{def} & \Wul\tnststile{abc}{def} \\
\Wul\dststile{abc}{def}  & \Wul\sddtstile{abc}{def} & \Wul\tntstile{abc}{def}  \\
\Wul\dsttstile{abc}{def} & \Wul\sdststile{abc}{def} & \Wul\tnttstile{abc}{def} \\
\Wul\dtdtstile{abc}{def} & \Wul\sdtstile{abc}{def}  & \Wul\tsdtstile{abc}{def} \\
\Wul\dtststile{abc}{def} & \Wul\sdttstile{abc}{def} & \Wul\tsststile{abc}{def} \\
\Wul\dttstile{abc}{def}  & \Wul\sndtstile{abc}{def} & \Wul\tststile{abc}{def}  \\
\Wul\dtttstile{abc}{def} & \Wul\snststile{abc}{def} & \Wul\tsttstile{abc}{def} \\
\Wul\nddtstile{abc}{def} & \Wul\sntstile{abc}{def}  & \Wul\ttdtstile{abc}{def} \\
\Wul\ndststile{abc}{def} & \Wul\snttstile{abc}{def} & \Wul\ttststile{abc}{def} \\
\Wul\ndtstile{abc}{def}  & \Wul\ssdtstile{abc}{def} & \Wul\tttstile{abc}{def}  \\
\Wul\ndttstile{abc}{def} & \Wul\ssststile{abc}{def} & \Wul\ttttstile{abc}{def} \\
\Wul\nndtstile{abc}{def} & \Wul\sststile{abc}{def}  &                          \\
\Wul\nnststile{abc}{def} & \Wul\ssttstile{abc}{def} &                          \\
\end{longtable}

\bigskip

\begin{tablenote}
  Each of the above takes an optional argument that controls the size
  of the upper and lower expressions.  See the \TURN\ documentation
  for more information.
\end{tablenote}
\end{longsymtable}


\begin{symtable}[TRSYM]{\TRSYM\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{transforms}
\label{trsym-rel}
\begin{tabular}{ll@{\hspace*{2em}}ll}
\K\InversTransformHoriz & \K\TransformHoriz \\
\K\InversTransformVert  & \K\TransformVert  \\
\end{tabular}
\end{symtable}


\begin{symtable}[TRF]{\TRF\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{transforms}
\label{trf-rel}
\begin{tabular}{ll@{\hspace*{2em}}ll}
\X\dfourier & \X\Dfourier \\
\X\fourier  & \X\Fourier  \\
\X\laplace  & \X\Laplace  \\
\X\ztransf  & \X\Ztransf  \\
\end{tabular}
\end{symtable}


\begin{symtable}[CMLL]{\CMLL\ Binary Relations}
\index{binary relations}
\index{relational symbols>binary}
\idxboth{linear logic}{symbols}
\label{cmll-rel}
\begin{tabular}{ll@{\hspace*{2em}}ll}
\K[\CMLLcoh]\coh     & \K[\CMLLscoh]\scoh     \\
\K[\CMLLincoh]\incoh & \K[\CMLLsincoh]\sincoh \\
\end{tabular}
\end{symtable}


\begin{symtable}{Subset and Superset Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{subsets}
\index{supersets}
\index{symbols>subset and superset}
\label{subsets}
\begin{tabular}{*3{ll}}
\X\sqsubset$^*$ & \X\sqsupseteq & \X\supset   \\
\X\sqsubseteq   & \X\subset     & \X\supseteq \\
\X\sqsupset$^*$ & \X\subseteq                 \\
\end{tabular}

\bigskip
\notpredefinedmessageABX
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Subset and Superset Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{subsets}
\index{supersets}
\index{symbols>subset and superset}
\label{ams-subsets}
\begin{tabular}{*3{ll}}
\X\nsubseteq  & \X\subseteqq  & \X\supsetneqq    \\
\X\nsupseteq  & \X\subsetneq  & \X\varsubsetneq  \\
\X\nsupseteqq & \X\subsetneqq & \X\varsubsetneqq \\
\X\sqsubset   & \X\Supset     & \X\varsupsetneq  \\
\X\sqsupset   & \X\supseteqq  & \X\varsupsetneqq \\
\X\Subset     & \X\supsetneq                     \\
\end{tabular}
\end{symtable}


\begin{symtable}[ST]{\ST\ Subset and Superset Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{subsets}
\index{supersets}
\index{symbols>subset and superset}
\label{st-subsets}
\begin{tabular}{*2{ll}}
\X\subsetplus   & \X\supsetplus   \\
\X\subsetpluseq & \X\supsetpluseq \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Subset and Superset Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{subsets}
\index{supersets}
\index{symbols>subset and superset}
\label{wasy-subset}
\begin{tabular}{*2{ll}}
\X\sqsubset & \X\sqsupset \\
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Subset and Superset Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{subsets}
\index{supersets}
\index{symbols>subset and superset}
\label{txpx-subset}
\begin{tabular}{*3{ll}}
\X\nsqsubset   & \X\nsqsupseteq & \X\nSupset \\
\X\nsqsubseteq & \X\nSubset                  \\
\X\nsqsupset   & \X\nsubseteqq               \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Subset and Superset Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{subsets}
\index{supersets}
\index{symbols>subset and superset}
\label{abx-subsets}
\begin{tabular}{*4{ll}}
\X[\ABXnsqsubset]\nsqsubset             & \X[\ABXnsupset]\nsupset                 & \X[\ABXsqsupseteq]\sqsupseteq           & \X[\ABXsupseteq]\supseteq               \\
\X[\ABXnsqSubset]\nsqSubset             & \X[\ABXnSupset]\nSupset                 & \X[\ABXsqsupseteqq]\sqsupseteqq         & \X[\ABXsupseteqq]\supseteqq             \\
\X[\ABXnsqsubseteq]\nsqsubseteq         & \X[\ABXnsupseteq]\nsupseteq             & \X[\ABXsqsupsetneq]\sqsupsetneq         & \X[\ABXsupsetneq]\supsetneq             \\
\X[\ABXnsqsubseteqq]\nsqsubseteqq       & \X[\ABXnsupseteqq]\nsupseteqq           & \X[\ABXsqsupsetneqq]\sqsupsetneqq       & \X[\ABXsupsetneqq]\supsetneqq           \\
\X[\ABXnsqsupset]\nsqsupset             & \X[\ABXsqsubset]\sqsubset               & \X[\ABXsubset]\subset                   & \X[\ABXvarsqsubsetneq]\varsqsubsetneq   \\
\X[\ABXnsqSupset]\nsqSupset             & \X[\ABXsqSubset]\sqSubset               & \X[\ABXSubset]\Subset                   & \X[\ABXvarsqsubsetneqq]\varsqsubsetneqq \\
\X[\ABXnsqsupseteq]\nsqsupseteq         & \X[\ABXsqsubseteq]\sqsubseteq           & \X[\ABXsubseteq]\subseteq               & \X[\ABXvarsqsupsetneq]\varsqsupsetneq   \\
\X[\ABXnsqsupseteqq]\nsqsupseteqq       & \X[\ABXsqsubseteqq]\sqsubseteqq         & \X[\ABXsubseteqq]\subseteqq             & \X[\ABXvarsqsupsetneqq]\varsqsupsetneqq \\
\X[\ABXnsubset]\nsubset                 & \X[\ABXsqsubsetneq]\sqsubsetneq         & \X[\ABXsubsetneq]\subsetneq             & \X[\ABXvarsubsetneq]\varsubsetneq       \\
\X[\ABXnSubset]\nSubset                 & \X[\ABXsqsubsetneqq]\sqsubsetneqq       & \X[\ABXsubsetneqq]\subsetneqq           & \X[\ABXvarsubsetneqq]\varsubsetneqq     \\
\X[\ABXnsubseteq]\nsubseteq             & \X[\ABXsqSupset]\sqSupset               & \X[\ABXsupset]\supset                   & \X[\ABXvarsupsetneq]\varsupsetneq       \\
\X[\ABXnsubseteqq]\nsubseteqq           & \X[\ABXsqsupset]\sqsupset               & \X[\ABXSupset]\Supset                   & \X[\ABXvarsupsetneqq]\varsupsetneqq     \\
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Subset and Superset Relations}
\index{binary relations}
\index{relational symbols>binary}
\index{subsets}
\index{supersets}
\index{symbols>subset and superset}
\label{mns-subsets}
\begin{tabular}{*4{ll}}
\K[\MNSnSqsubset]\nSqsubset       & \K[\MNSnsubseteq]\nsubseteq     & \K[\MNSsqsubsetneq]\sqsubsetneq   & \K[\MNSsubseteq]\subseteq     \\
\K[\MNSnsqsubset]\nsqsubset       & \K[\MNSnsubseteqq]\nsubseteqq   & \K[\MNSsqsubsetneqq]\sqsubsetneqq & \K[\MNSsubseteqq]\subseteqq   \\
\K[\MNSnsqsubseteq]\nsqsubseteq   & \K[\MNSnSupset]\nSupset         & \K[\MNSSqsupset]\Sqsupset         & \K[\MNSsubsetneq]\subsetneq   \\
\K[\MNSnsqsubseteqq]\nsqsubseteqq & \K[\MNSnsupset]\nsupset         & \K[\MNSsqsupset]\sqsupset         & \K[\MNSsubsetneqq]\subsetneqq \\
\K[\MNSnSqsupset]\nSqsupset       & \K[\MNSnsupseteq]\nsupseteq     & \K[\MNSsqsupseteq]\sqsupseteq     & \K[\MNSSupset]\Supset         \\
\K[\MNSnsqsupset]\nsqsupset       & \K[\MNSnsupseteqq]\nsupseteqq   & \K[\MNSsqsupseteqq]\sqsupseteqq   & \K[\MNSsupset]\supset         \\
\K[\MNSnsqsupseteq]\nsqsupseteq   & \K[\MNSSqsubset]\Sqsubset       & \K[\MNSsqsupsetneq]\sqsupsetneq   & \K[\MNSsupseteq]\supseteq     \\
\K[\MNSnsqsupseteqq]\nsqsupseteqq & \K[\MNSsqsubset]\sqsubset       & \K[\MNSsqsupsetneqq]\sqsupsetneqq & \K[\MNSsupseteqq]\supseteqq   \\
\K[\MNSnSubset]\nSubset           & \K[\MNSsqsubseteq]\sqsubseteq   & \K[\MNSSubset]\Subset             & \K[\MNSsupsetneq]\supsetneq   \\
\K[\MNSnsubset]\nsubset           & \K[\MNSsqsubseteqq]\sqsubseteqq & \K[\MNSsubset]\subset             & \K[\MNSsupsetneqq]\supsetneqq \\
\end{tabular}

\bigskip

\begin{tablenote}
  \MNS\ additionally defines \cmdI[\MNSsubsetneq]{\varsubsetneq} as a
  synonym for \cmdI[\MNSsubsetneq]{\subsetneq},
  \cmdI[\MNSsubsetneqq]{\varsubsetneqq} as a synonym for
  \cmdI[\MNSsubsetneqq]{\subsetneqq},
  \cmdI[\MNSsupsetneq]{\varsupsetneq} as a synonym for
  \cmdI[\MNSsupsetneq]{\supsetneq}, and
  \cmdI[\MNSsupsetneqq]{\varsupsetneqq} as a synonym for
  \cmdI[\MNSsupsetneqq]{\supsetneqq}.
\end{tablenote}
\end{symtable}


\begin{symtable}{Inequalities}
\index{binary relations}\index{relational symbols>binary}
\index{inequalities}
\label{inequal-rel}
\begin{tabular}{*5{ll}}
\X\geq & \X\gg & \X\leq & \X\ll & \X\neq \\
\end{tabular}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Inequalities}
\index{binary relations}\index{relational symbols>binary}
\index{inequalities}
\label{ams-inequal-rel}
\renewcommand{\arraystretch}{1.5}   % Keep visually similar symbols from touching.
\begin{tabular}{*4{ll}}
\X\eqslantgtr  & \X\gtrdot      & \X\lesseqgtr   & \X\ngeq        \\
\X\eqslantless & \X\gtreqless   & \X\lesseqqgtr  & \X\ngeqq       \\
\X\geqq        & \X\gtreqqless  & \X\lessgtr     & \X\ngeqslant   \\
\X\geqslant    & \X\gtrless     & \X\lesssim     & \X\ngtr        \\
\X\ggg         & \X\gtrsim      & \X\lll         & \X\nleq        \\
\X\gnapprox    & \X\gvertneqq   & \X\lnapprox    & \X\nleqq       \\
\X\gneq        & \X\leqq        & \X\lneq        & \X\nleqslant   \\
\X\gneqq       & \X\leqslant    & \X\lneqq       & \X\nless       \\
\X\gnsim       & \X\lessapprox  & \X\lnsim       &                \\
\X\gtrapprox   & \X\lessdot     & \X\lvertneqq   &                \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Inequalities}
\index{binary relations}\index{relational symbols>binary}
\index{inequalities}
\label{wasy-inequal-rel}
\begin{tabular}{*2{ll}}
\X\apprge & \X\apprle \\
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Inequalities}
\index{binary relations}\index{relational symbols>binary}
\index{inequalities}
\label{txpx-inequal-rel}
\begin{tabular}{*3{ll}}
\X\ngg         & \X\ngtrsim     & \X\nlesssim \\
\X\ngtrapprox  & \X\nlessapprox & \X\nll      \\
\X\ngtrless    & \X\nlessgtr                  \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Inequalities}
\index{binary relations}\index{relational symbols>binary}
\index{inequalities}
\label{abx-inequal-rel}
\renewcommand{\arraystretch}{1.5}   % Keep visually similar symbols from touching.
\begin{tabular}{*4{ll}}
\X[\ABXeqslantgtr]\eqslantgtr     & \X[\ABXgtreqless]\gtreqless       & \X[\ABXlesssim]\lesssim           & \X[\ABXngtr]\ngtr                 \\
\X[\ABXeqslantless]\eqslantless   & \X[\ABXgtreqqless]\gtreqqless     & \X[\ABXll]\ll                     & \X[\ABXngtrapprox]\ngtrapprox     \\
\X[\ABXgeq]\geq                   & \X[\ABXgtrless]\gtrless           & \X[\ABXlll]\lll                   & \X[\ABXngtrsim]\ngtrsim           \\
\X[\ABXgeqq]\geqq                 & \X[\ABXgtrsim]\gtrsim             & \X[\ABXlnapprox]\lnapprox         & \X[\ABXnleq]\nleq                 \\
\X[\ABXgg]\gg                     & \X[\ABXgvertneqq]\gvertneqq       & \X[\ABXlneq]\lneq                 & \X[\ABXnleqq]\nleqq               \\
\X[\ABXggg]\ggg                   & \X[\ABXleq]\leq                   & \X[\ABXlneqq]\lneqq               & \X[\ABXnless]\nless               \\
\X[\ABXgnapprox]\gnapprox         & \X[\ABXleqq]\leqq                 & \X[\ABXlnsim]\lnsim               & \X[\ABXnlessapprox]\nlessapprox   \\
\X[\ABXgneq]\gneq                 & \X[\ABXlessapprox]\lessapprox     & \X[\ABXlvertneqq]\lvertneqq       & \X[\ABXnlesssim]\nlesssim         \\
\X[\ABXgneqq]\gneqq               & \X[\ABXlessdot]\lessdot           & \X[\ABXneqslantgtr]\neqslantgtr   & \X[\ABXnvargeq]\nvargeq           \\
\X[\ABXgnsim]\gnsim               & \X[\ABXlesseqgtr]\lesseqgtr       & \X[\ABXneqslantless]\neqslantless & \X[\ABXnvarleq]\nvarleq           \\
\X[\ABXgtrapprox]\gtrapprox       & \X[\ABXlesseqqgtr]\lesseqqgtr     & \X[\ABXngeq]\ngeq                 & \X[\ABXvargeq]\vargeq             \\
\X[\ABXgtrdot]\gtrdot             & \X[\ABXlessgtr]\lessgtr           & \X[\ABXngeqq]\ngeqq               & \X[\ABXvarleq]\varleq             \\
\end{tabular}

\bigskip

\begin{tablenote}
  \ABX\ defines \verb|\leqslant| and \verb|\le| as synonyms for
  \cmdX{\leq}, \verb|\geqslant| and \verb|\ge| as synonyms for
  \cmdX{\geq}, \verb|\nleqslant| as a synonym for \cmdX{\nleq}, and
  \verb|\ngeqslant| as a synonym for \cmdX{\ngeq}.
\end{tablenote}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Inequalities}
\index{binary relations}\index{relational symbols>binary}
\index{inequalities}
\label{mns-inequal-rel}
\renewcommand{\arraystretch}{1.25}   % Keep visually similar symbols from touching.
\begin{tabular}{*4{ll}}
\K[\MNSeqslantgtr]\eqslantgtr         & \K[\MNSgtreqqless]\gtreqqless         & \K[\MNSlesssim]\lesssim           & \K[\MNSngtreqless]\ngtreqless           \\
\K[\MNSeqslantless]\eqslantless       & \K[\MNSgtrless]\gtrless               & \K[\MNSll]\ll                     & \K[\MNSngtreqlessslant]\ngtreqlessslant \\
\K[\MNSgeq]\geq                       & \K[\MNSgtrneqqless]\gtrneqqless       & \K[\MNSlll]\lll                   & \K[\MNSngtreqqless]\ngtreqqless         \\
\K[\MNSgeqclosed]\geqclosed           & \K[\MNSgtrsim]\gtrsim                 & \K[\MNSlnapprox]\lnapprox         & \K[\MNSngtrless]\ngtrless               \\
\K[\MNSgeqdot]\geqdot                 & \K[\MNSleq]\leq                       & \K[\MNSlneqq]\lneqq               & \K[\MNSnleq]\nleq                       \\
\K[\MNSgeqq]\geqq                     & \K[\MNSleqclosed]\leqclosed           & \K[\MNSlnsim]\lnsim               & \K[\MNSnleqclosed]\nleqclosed           \\
\K[\MNSgeqslant]\geqslant             & \K[\MNSleqdot]\leqdot                 & \K[\MNSneqslantgtr]\neqslantgtr   & \K[\MNSnleqdot]\nleqdot                 \\
\K[\MNSgeqslantdot]\geqslantdot       & \K[\MNSleqq]\leqq                     & \K[\MNSneqslantless]\neqslantless & \K[\MNSnleqq]\nleqq                     \\
\K[\MNSgg]\gg                         & \K[\MNSleqslant]\leqslant             & \K[\MNSngeq]\ngeq                 & \K[\MNSnleqslant]\nleqslant             \\
\K[\MNSggg]\ggg                       & \K[\MNSleqslantdot]\leqslantdot       & \K[\MNSngeqclosed]\ngeqclosed     & \K[\MNSnleqslantdot]\nleqslantdot       \\
\K[\MNSgnapprox]\gnapprox             & \K[\MNSless]\less                     & \K[\MNSngeqdot]\ngeqdot           & \K[\MNSnless]\nless                     \\
\K[\MNSgneqq]\gneqq                   & \K[\MNSlessapprox]\lessapprox         & \K[\MNSngeqq]\ngeqq               & \K[\MNSnlessclosed]\nlessclosed         \\
\K[\MNSgnsim]\gnsim                   & \K[\MNSlessclosed]\lessclosed         & \K[\MNSngeqslant]\ngeqslant       & \K[\MNSnlessdot]\nlessdot               \\
\K[\MNSgtr]\gtr                       & \K[\MNSlessdot]\lessdot               & \K[\MNSngeqslantdot]\ngeqslantdot & \K[\MNSnlesseqgtr]\nlesseqgtr           \\
\K[\MNSgtrapprox]\gtrapprox           & \K[\MNSlesseqgtr]\lesseqgtr           & \K[\MNSngg]\ngg                   & \K[\MNSnlesseqgtrslant]\nlesseqgtrslant \\
\K[\MNSgtrclosed]\gtrclosed           & \K[\MNSlesseqgtrslant]\lesseqgtrslant & \K[\MNSnggg]\nggg                 & \K[\MNSnlesseqqgtr]\nlesseqqgtr         \\
\K[\MNSgtrdot]\gtrdot                 & \K[\MNSlesseqqgtr]\lesseqqgtr         & \K[\MNSngtr]\ngtr                 & \K[\MNSnlessgtr]\nlessgtr               \\
\K[\MNSgtreqless]\gtreqless           & \K[\MNSlessgtr]\lessgtr               & \K[\MNSngtrclosed]\ngtrclosed     & \K[\MNSnll]\nll                         \\
\K[\MNSgtreqlessslant]\gtreqlessslant & \K[\MNSlessneqqgtr]\lessneqqgtr       & \K[\MNSngtrdot]\ngtrdot           & \K[\MNSnlll]\nlll                       \\
\end{tabular}

\bigskip

\begin{tablenote}
  \MNS\ additionally defines synonyms for some of the preceding symbols:

  \newcommand*{\mnssyn}[1]{(same as \texttt{\string#1})}
  \renewcommand{\arraystretch}{1}
  \begin{tabular}{ll@{\quad}l}
    \K[\MNSggg]\gggtr                   & \mnssyn\ggg \\
    \K[\MNSgneqq]\gvertneqq             & \mnssyn\gneqq \\
    \K[\MNSlessclosed]\lhd              & \mnssyn\lessclosed \\
    \K[\MNSlll]\llless                  & \mnssyn\lll \\
    \K[\MNSlneqq]\lvertneqq             & \mnssyn\lneqq \\
    \K[\MNSnleqclosed]\ntrianglelefteq  & \mnssyn\nleqclosed \\
    \K[\MNSnlessclosed]\ntriangleleft   & \mnssyn\nlessclosed \\
    \K[\MNSngeqclosed]\ntrianglerighteq & \mnssyn\ngeqclosed \\
    \K[\MNSngtrclosed]\ntriangleright   & \mnssyn\ngtrclosed \\
    \K[\MNSgtrclosed]\rhd               & \mnssyn\gtrclosed \\
    \K[\MNSleqclosed]\trianglelefteq    & \mnssyn\leqclosed \\
    \K[\MNSgeqclosed]\trianglerighteq   & \mnssyn\geqclosed \\
    \K[\MNSleqclosed]\unlhd             & \mnssyn\leqclosed \\
    \K[\MNSgeqclosed]\unrhd             & \mnssyn\geqclosed \\
    \K[\MNSlessclosed]\vartriangleleft  & \mnssyn\lessclosed \\
    \K[\MNSgtrclosed]\vartriangleright  & \mnssyn\gtrclosed \\
  \end{tabular}
\end{tablenote}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Triangle Relations}
\index{triangle relations}\index{relational symbols>triangle}
\label{ams-triangle-rel}
\begin{tabular}{*4{ll}}
\X\blacktriangleleft  & \X\ntrianglelefteq  & \X\trianglelefteq  & \X\vartriangleleft  \\
\X\blacktriangleright & \X\ntriangleright   & \X\triangleq       & \X\vartriangleright \\
\X\ntriangleleft      & \X\ntrianglerighteq & \X\trianglerighteq                       \\
\end{tabular}
\end{symtable}


\begin{symtable}[ST]{\ST\ Triangle Relations}
\index{triangle relations}\index{relational symbols>triangle}
\label{st-triangle-rel}
\begin{tabular}{*2{ll}}
\X\trianglelefteqslant  & \X\trianglerighteqslant  \\
\X\ntrianglelefteqslant & \X\ntrianglerighteqslant \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Triangle Relations}
\index{triangle relations}\index{relational symbols>triangle}
\label{abx-triangle-rel}
\begin{tabular}{*4{ll}}
\X[\ABXntriangleleft]\ntriangleleft       & \X[\ABXntrianglerighteq]\ntrianglerighteq & \X[\ABXtriangleright]\triangleright       & \X[\ABXvartriangleright]\vartriangleright \\
\X[\ABXntrianglelefteq]\ntrianglelefteq   & \X[\ABXtriangleleft]\triangleleft         & \X[\ABXtrianglerighteq]\trianglerighteq   &                                           \\
\X[\ABXntriangleright]\ntriangleright     & \X[\ABXtrianglelefteq]\trianglelefteq     & \X[\ABXvartriangleleft]\vartriangleleft   &                                           \\
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Triangle Relations}
\index{triangle relations}\index{relational symbols>triangle}
\label{mns-triangle-rel}
\begin{tabular}{*3{ll}}
\K[\MNSfilledmedtriangledown]\filledmedtriangledown   & \K[\MNSlargetriangleup]\largetriangleup   & \K[\MNSsmalltriangledown]\smalltriangledown   \\
\K[\MNSfilledmedtriangleleft]\filledmedtriangleleft   & \K[\MNSmedtriangledown]\medtriangledown   & \K[\MNSsmalltriangleleft]\smalltriangleleft   \\
\K[\MNSfilledmedtriangleright]\filledmedtriangleright & \K[\MNSmedtriangleleft]\medtriangleleft   & \K[\MNSsmalltriangleright]\smalltriangleright \\
\K[\MNSfilledmedtriangleup]\filledmedtriangleup       & \K[\MNSmedtriangleright]\medtriangleright & \K[\MNSsmalltriangleup]\smalltriangleup       \\
\K[\MNSfilledtriangledown]\filledtriangledown         & \K[\MNSmedtriangleup]\medtriangleup       & \K[\MNStriangleeq]\triangleeq                 \\
\K[\MNSfilledtriangleleft]\filledtriangleleft         & \K[\MNSntriangleeq]\ntriangleeq           & \K[\MNSleqclosed]\trianglelefteq              \\
\K[\MNSfilledtriangleright]\filledtriangleright       & \K[\MNSnlessclosed]\ntriangleleft         & \K[\MNSgeqclosed]\trianglerighteq             \\
\K[\MNSfilledtriangleup]\filledtriangleup             & \K[\MNSnleqclosed]\ntrianglelefteq        & \K[\MNSlessclosed]\vartriangleleft            \\
\K[\MNSlargetriangledown]\largetriangledown           & \K[\MNSngtrclosed]\ntriangleright         & \K[\MNSgtrclosed]\vartriangleright            \\
\K[\MNSlargetriangleleft]\largetriangleleft           & \K[\MNSngeqclosed]\ntrianglerighteq       &                                               \\
\K[\MNSlargetriangleright]\largetriangleright         & \K[\MNSotriangle]\otriangle               &                                               \\
\end{tabular}

\bigskip

\begin{tablenote}
  \MNS\ additionally defines synonyms for many of the preceding
  symbols: \cmdI[\MNStriangleeq]{\triangleq} is a synonym for
  \cmdI[\MNStriangleeq]{\triangleeq}; \cmdI[\MNSlessclosed]{\lhd} and
  \cmdI[\MNSlessclosed]{\lessclosed} are synonyms for
  \cmdI[\MNSlessclosed]{\vartriangleleft}; \cmdI[\MNSgtrclosed]{\rhd}
  and \cmdI[\MNSgtrclosed]{\gtrclosed} are synonyms for
  \cmdI[\MNSgtrclosed]{\vartriangleright};
  \cmdI[\MNSleqclosed]{\unlhd} and \cmdI[\MNSleqclosed]{\leqclosed}
  are synonyms for \cmdI[\MNSleqclosed]{\trianglelefteq};
  \cmdI[\MNSgeqclosed]{\unrhd} and \cmdI[\MNSgeqclosed]{\geqclosed}
  are synonyms for \cmdI[\MNSgeqclosed]{\trianglerighteq};
  \cmdI[\MNSfilledmedtriangledown]{\blacktriangledown},
  \cmdI[\MNSfilledmedtriangleleft]{\blacktriangleleft},
  \cmdI[\MNSfilledmedtriangleright]{\blacktriangleright}, and
  \cmdI[\MNSfilledmedtriangleup]{\blacktriangle} [\textit{sic}] are
  synonyms for, respectively,
  \cmdI[\MNSfilledmedtriangledown]{\filledmedtriangledown},
  \cmdI[\MNSfilledmedtriangleleft]{\filledmedtriangleleft},
  \cmdI[\MNSfilledmedtriangleright]{\filledmedtriangleright}, and
  \cmdI[\MNSfilledmedtriangleup]{\filledmedtriangleup};
  \cmdI[\MNSmedtriangleright]{\triangleright} is a synonym for
  \cmdI[\MNSmedtriangleright]{\medtriangleright};
  \cmdI[\MNSmedtriangleup]{\triangle},
  \cmdI[\MNSmedtriangleup]{\vartriangle}, and
  \cmdI[\MNSmedtriangleup]{\bigtriangleup} are synonyms for
  \cmdI[\MNSmedtriangleup]{\medtriangleup};
  \cmdI[\MNSmedtriangleleft]{\triangleleft} is a synonym for
  \cmdI[\MNSmedtriangleleft]{\medtriangleleft};
  \cmdI[\MNSmedtriangledown]{\triangledown} and
  \cmdI[\MNSmedtriangledown]{\bigtriangledown} are synonyms for
  \cmdI[\MNSmedtriangledown]{\medtriangledown};
  \cmdI[\MNSnlessclosed]{\nlessclosed} is a synonym for
  \cmdI[\MNSnlessclosed]{\ntriangleleft};
  \cmdI[\MNSngtrclosed]{\ngtrclosed} is a synonym for
  \cmdI[\MNSngtrclosed]{\ntriangleright};
  \cmdI[\MNSnleqclosed]{\nleqclosed} is a synonym for
  \cmdI[\MNSnleqclosed]{\ntrianglelefteq}; and
  \cmdI[\MNSngeqclosed]{\ngeqclosed} is a synonym for
  \cmdI[\MNSngeqclosed]{\ntrianglerighteq}.
\end{tablenote}

\bigskip

\begin{tablenote}
  The title ``Triangle Relations'' is a bit of a misnomer here as only
  \cmdI[\MNStriangleeq]{\triangleeq} and
  \cmdI[\MNSntriangleeq]{\ntriangleeq} are defined as \tex\ relations
  (class~3 symbols).  The \verb|\largetriangle|\dots\ symbols are
  defined as \tex\ ``ordinary'' characters (class~0) and all of the
  remaining characters are defined as \tex\ binary operators
  (class~2).
\end{tablenote}
\end{symtable}


\begin{symtable}{Arrows}
\index{arrows}
\label{arrow}
\begin{tabular}{*3{ll}}
\X\Downarrow          & \X\longleftarrow      & \X\nwarrow     \\
\X\downarrow          & \X\Longleftarrow      & \X\Rightarrow  \\
\X\hookleftarrow      & \X\longleftrightarrow & \X\rightarrow  \\
\X\hookrightarrow     & \X\Longleftrightarrow & \X\searrow     \\
\X\leadsto$^*$        & \X\longmapsto         & \X\swarrow     \\
\X\leftarrow          & \X\Longrightarrow     & \X\uparrow     \\
\X\Leftarrow          & \X\longrightarrow     & \X\Uparrow     \\
\X\Leftrightarrow     & \X\mapsto             & \X\updownarrow \\
\X\leftrightarrow     & \X\nearrow$^\dag$     & \X\Updownarrow \\
\end{tabular}

\bigskip
\notpredefinedmessage

\bigskip
\begin{tablenote}[\dag]
  See the note beneath Table~\ref{extensible-accents} for information
  about how to put a diagonal arrow across a mathematical expression%
\ifhavecancel
  ~(as in ``$\cancelto{0}{\nabla \cdot \vec{B}}\quad$'')
\fi
.
\end{tablenote}
\end{symtable}


\begin{symtable}{Harpoons}
\index{harpoons}
\label{harpoons}
\begin{tabular}{*3{ll}}
\X\leftharpoondown   & \X\rightharpoondown  & \X\rightleftharpoons \\
\X\leftharpoonup     & \X\rightharpoonup                           \\
\end{tabular}
\end{symtable}


\begin{symtable}{\TC\ Text-mode Arrows}
\index{arrows}
\label{tc-arrows}
\begin{tabular}{*2{ll}}
\K\textdownarrow & \K\textrightarrow \\
\K\textleftarrow & \K\textuparrow    \\
\end{tabular}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Arrows}
\index{arrows}
\label{ams-arrows}
\begin{tabular}{*3{ll}}
\X\circlearrowleft  & \X\leftleftarrows      & \X\rightleftarrows   \\
\X\circlearrowright & \X\leftrightarrows     & \X\rightrightarrows  \\
\X\curvearrowleft   & \X\leftrightsquigarrow & \X\rightsquigarrow   \\
\X\curvearrowright  & \X\Lleftarrow          & \X\Rsh               \\
\X\dashleftarrow    & \X\looparrowleft       & \X\twoheadleftarrow  \\
\X\dashrightarrow   & \X\looparrowright      & \X\twoheadrightarrow \\
\X\downdownarrows   & \X\Lsh                 & \X\upuparrows        \\
\X\leftarrowtail    & \X\rightarrowtail      &                      \\
\end{tabular}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Negated Arrows}
\index{arrows>negated}
\label{ams-narrows}
\begin{tabular}{*3{ll}}
\X\nLeftarrow      & \X\nLeftrightarrow & \X\nRightarrow     \\
\X\nleftarrow      & \X\nleftrightarrow & \X\nrightarrow     \\
\end{tabular}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Harpoons}
\index{harpoons}
\label{ams-harpoons}
\begin{tabular}{*3{ll}}
\X\downharpoonleft  & \X\leftrightharpoons                        & \X\upharpoonleft  \\
\X\downharpoonright & \X[\AMSrightleftharpoons]\rightleftharpoons & \X\upharpoonright \\
\end{tabular}
\end{symtable}


\begin{symtable}[ST]{\ST\ Arrows}
\index{arrows}
\label{st-arrows}
\begin{tabular}{*3{ll}}
\X\leftarrowtriangle      & \X\Mapsfrom           & \X\shortleftarrow  \\
\X\leftrightarroweq       & \X\mapsfrom           & \X\shortrightarrow \\
\X\leftrightarrowtriangle & \X\Mapsto             & \X\shortuparrow    \\
\X\lightning              & \X\nnearrow           & \X\ssearrow        \\
\X\Longmapsfrom           & \X\nnwarrow           & \X\sswarrow        \\
\X\longmapsfrom           & \X\rightarrowtriangle                      \\
\X\Longmapsto             & \X\shortdownarrow                          \\
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Arrows}
\index{arrows}
\label{txpx-arrows}
\begin{tabular}{*3{ll}}
\X\boxdotLeft         & \X\circleddotright    & \X\Diamondleft        \\
\X\boxdotleft         & \X\circleleft         & \X\Diamondright       \\
\X\boxdotright        & \X\circleright        & \X\DiamondRight       \\
\X\boxdotRight        & \X\dashleftrightarrow & \X\leftsquigarrow     \\
\X\boxLeft            & \X\DiamonddotLeft     & \X\Nearrow            \\
\X\boxleft            & \X\Diamonddotleft     & \X\Nwarrow            \\
\X\boxright           & \X\Diamonddotright    & \X\Rrightarrow        \\
\X\boxRight           & \X\DiamonddotRight    & \X\Searrow            \\
\X\circleddotleft     & \X\DiamondLeft        & \X\Swarrow            \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Arrows}
\index{arrows}
\label{abx-arrows}
\begin{tabular}{*3{ll}}
\X[\ABXcirclearrowleft]\circlearrowleft               & \X[\ABXleftarrow]\leftarrow                     & \X[\ABXnwarrow]\nwarrow                   \\
\X[\ABXcirclearrowright]\circlearrowright             & \X[\ABXleftleftarrows]\leftleftarrows           & \X[\ABXrestriction]\restriction           \\
\X[\ABXcurvearrowbotleft]\curvearrowbotleft           & \X[\ABXleftrightarrow]\leftrightarrow           & \X[\ABXrightarrow]\rightarrow             \\
\X[\ABXcurvearrowbotleftright]\curvearrowbotleftright & \X[\ABXleftrightarrows]\leftrightarrows         & \X[\ABXrightleftarrows]\rightleftarrows   \\
\X[\ABXcurvearrowbotright]\curvearrowbotright         & \X[\ABXleftrightsquigarrow]\leftrightsquigarrow & \X[\ABXrightrightarrows]\rightrightarrows \\
\X[\ABXcurvearrowleft]\curvearrowleft                 & \X[\ABXleftsquigarrow]\leftsquigarrow           & \X[\ABXrightsquigarrow]\rightsquigarrow   \\
\X[\ABXcurvearrowleftright]\curvearrowleftright       & \X[\ABXlefttorightarrow]\lefttorightarrow       & \X[\ABXrighttoleftarrow]\righttoleftarrow \\
\X[\ABXcurvearrowright]\curvearrowright               & \X[\ABXlooparrowdownleft]\looparrowdownleft     & \X[\ABXRsh]\Rsh                           \\
\X[\ABXdlsh]\dlsh                                     & \X[\ABXlooparrowdownright]\looparrowdownright   & \X[\ABXsearrow]\searrow                   \\
\X[\ABXdowndownarrows]\downdownarrows                 & \X[\ABXlooparrowleft]\looparrowleft             & \X[\ABXswarrow]\swarrow                   \\
\X[\ABXdowntouparrow]\downtouparrow                   & \X[\ABXlooparrowright]\looparrowright           & \X[\ABXupdownarrows]\updownarrows         \\
\X[\ABXdownuparrows]\downuparrows                     & \X[\ABXLsh]\Lsh                                 & \X[\ABXuptodownarrow]\uptodownarrow       \\
\X[\ABXdrsh]\drsh                                     & \X[\ABXnearrow]\nearrow                         & \X[\ABXupuparrows]\upuparrows             \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Negated Arrows}
\index{arrows>negated}
\label{abx-narrows}
\begin{tabular}{*3{ll}}
\X[\ABXnLeftarrow]\nLeftarrow & \X[\ABXnleftrightarrow]\nleftrightarrow & \X[\ABXnrightarrow]\nrightarrow \\
\X[\ABXnleftarrow]\nleftarrow & \X[\ABXnLeftrightarrow]\nLeftrightarrow & \X[\ABXnRightarrow]\nRightarrow \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Harpoons}
\index{harpoons}
\label{abx-harpoons}
\begin{tabular}{*3{ll}}
\X[\ABXbarleftharpoon]\barleftharpoon         & \X[\ABXleftharpoonup]\leftharpoonup           & \X[\ABXrightleftharpoons]\rightleftharpoons   \\
\X[\ABXbarrightharpoon]\barrightharpoon       & \X[\ABXleftleftharpoons]\leftleftharpoons     & \X[\ABXrightrightharpoons]\rightrightharpoons \\
\X[\ABXdowndownharpoons]\downdownharpoons     & \X[\ABXleftrightharpoon]\leftrightharpoon     & \X[\ABXupdownharpoons]\updownharpoons         \\
\X[\ABXdownharpoonleft]\downharpoonleft       & \X[\ABXleftrightharpoons]\leftrightharpoons   & \X[\ABXupharpoonleft]\upharpoonleft           \\
\X[\ABXdownharpoonright]\downharpoonright     & \X[\ABXrightbarharpoon]\rightbarharpoon       & \X[\ABXupharpoonright]\upharpoonright         \\
\X[\ABXdownupharpoons]\downupharpoons         & \X[\ABXrightharpoondown]\rightharpoondown     & \X[\ABXupupharpoons]\upupharpoons             \\
\X[\ABXleftbarharpoon]\leftbarharpoon         & \X[\ABXrightharpoonup]\rightharpoonup                                                         \\
\X[\ABXleftharpoondown]\leftharpoondown       & \X[\ABXrightleftharpoon]\rightleftharpoon                                                     \\
\end{tabular}
\end{symtable}


\begin{longsymtable}[MNS]{\MNS\ Arrows}
\index{arrows}
\label{mns-arrows}
\begin{longtable}{*3{ll}}
\multicolumn{6}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{6}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\K[\MNScurvearrowdownup]\curvearrowdownup       & \X[\MNSlongleftarrow]\longleftarrow                                           & \K[\MNSrhookswarrow]\rhookswarrow               \\
\K[\MNScurvearrowleftright]\curvearrowleftright & \X[\MNSLongleftarrow]\Longleftarrow                                           & \K[\MNSrhookuparrow]\rhookuparrow               \\
\K[\MNScurvearrownesw]\curvearrownesw           & \X[\MNSlongleftrightarrow]\longleftrightarrow                                 & \K[\MNSrightarrow]\rightarrow                   \\
\K[\MNScurvearrownwse]\curvearrownwse           & \X[\MNSLongleftrightarrow]\Longleftrightarrow                                 & \K[\MNSRightarrow]\Rightarrow                   \\
\K[\MNScurvearrowrightleft]\curvearrowrightleft & \X[\MNSlongmapsto]\longmapsto                                                 & \K[\MNSrightarrowtail]\rightarrowtail           \\
\K[\MNScurvearrowsenw]\curvearrowsenw           & \X[\MNSlongrightarrow]\longrightarrow                                         & \K[\MNSrightleftarrows]\rightleftarrows         \\
\K[\MNScurvearrowswne]\curvearrowswne           & \X[\MNSLongrightarrow]\Longrightarrow                                         & \K[\MNSrightlsquigarrow]\rightlsquigarrow       \\
\K[\MNScurvearrowupdown]\curvearrowupdown       & \K[\MNSlooparrowleft]\looparrowleft                                           & \K[\MNSrightmapsto]\rightmapsto                 \\
\K[\MNSdasheddownarrow]\dasheddownarrow         & \K[\MNSlooparrowright]\looparrowright                                         & \K[\MNSrightrightarrows]\rightrightarrows       \\
\K[\MNSdashedleftarrow]\dashedleftarrow         & \K[\MNSLsh]\Lsh                                                               & \K[\MNSrightrsquigarrow]\rightrsquigarrow       \\
\K[\MNSdashednearrow]\dashednearrow             & \K[\MNSnearrow]\nearrow                                                       & \K[\MNSRrightarrow]\Rrightarrow                 \\
\K[\MNSdashednwarrow]\dashednwarrow             & \K[\MNSNearrow]\Nearrow                                                       & \K[\MNSRsh]\Rsh                                 \\
\K[\MNSdashedrightarrow]\dashedrightarrow       & \K[\MNSnearrowtail]\nearrowtail                                               & \K[\MNSsearrow]\searrow                         \\
\K[\MNSdashedsearrow]\dashedsearrow             & \K[\MNSnelsquigarrow]\nelsquigarrow                                           & \K[\MNSSearrow]\Searrow                         \\
\K[\MNSdashedswarrow]\dashedswarrow             & \K[\MNSnemapsto]\nemapsto                                                     & \K[\MNSsearrowtail]\searrowtail                 \\
\K[\MNSdasheduparrow]\dasheduparrow             & \K[\MNSnenearrows]\nenearrows                                                 & \K[\MNSselsquigarrow]\selsquigarrow             \\
\K[\MNSDownarrow]\Downarrow                     & \K[\MNSnersquigarrow]\nersquigarrow                                           & \K[\MNSsemapsto]\semapsto                       \\
\K[\MNSdownarrow]\downarrow                     & \K[\MNSneswarrow]\neswarrow                                                   & \K[\MNSsenwarrows]\senwarrows                   \\
\K[\MNSdownarrowtail]\downarrowtail             & \K[\MNSNeswarrow]\Neswarrow                                                   & \K[\MNSsersquigarrow]\sersquigarrow             \\
\K[\MNSdowndownarrows]\downdownarrows           & \K[\MNSneswarrows]\neswarrows                                                 & \K[\MNSsesearrows]\sesearrows                   \\
\K[\MNSdownlsquigarrow]\downlsquigarrow         & \K[\MNSnwarrow]\nwarrow                                                       & \K[\MNSsquigarrowdownup]\squigarrowdownup       \\
\K[\MNSdownmapsto]\downmapsto                   & \K[\MNSNwarrow]\Nwarrow                                                       & \K[\MNSsquigarrowleftright]\squigarrowleftright \\
\K[\MNSdownrsquigarrow]\downrsquigarrow         & \K[\MNSnwarrowtail]\nwarrowtail                                               & \K[\MNSsquigarrownesw]\squigarrownesw           \\
\K[\MNSdownuparrows]\downuparrows               & \K[\MNSnwlsquigarrow]\nwlsquigarrow                                           & \K[\MNSsquigarrownwse]\squigarrownwse           \\
\K[\MNSlcirclearrowdown]\lcirclearrowdown       & \K[\MNSnwmapsto]\nwmapsto                                                     & \K[\MNSsquigarrowrightleft]\squigarrowrightleft \\
\K[\MNSlcirclearrowleft]\lcirclearrowleft       & \K[\MNSnwnwarrows]\nwnwarrows                                                 & \K[\MNSsquigarrowsenw]\squigarrowsenw           \\
\K[\MNSlcirclearrowright]\lcirclearrowright     & \K[\MNSnwrsquigarrow]\nwrsquigarrow                                           & \K[\MNSsquigarrowswne]\squigarrowswne           \\
\K[\MNSlcirclearrowup]\lcirclearrowup           & \K[\MNSnwsearrow]\nwsearrow                                                   & \K[\MNSsquigarrowupdown]\squigarrowupdown       \\
\K[\MNSlcurvearrowdown]\lcurvearrowdown         & \K[\MNSNwsearrow]\Nwsearrow                                                   & \K[\MNSswarrow]\swarrow                         \\
\K[\MNSlcurvearrowleft]\lcurvearrowleft         & \K[\MNSnwsearrows]\nwsearrows                                                 & \K[\MNSSwarrow]\Swarrow                         \\
\K[\MNSlcurvearrowne]\lcurvearrowne             & \K[\strut\smash\MNSpartialvardlcircleleftint]\partialvardlcircleleftint$^*$   & \K[\MNSswarrowtail]\swarrowtail                 \\
\K[\MNSlcurvearrownw]\lcurvearrownw             & \K[\strut\smash\MNSpartialvardlcirclerightint]\partialvardlcirclerightint$^*$ & \K[\MNSswlsquigarrow]\swlsquigarrow             \\
\K[\MNSlcurvearrowright]\lcurvearrowright       & \K[\strut\smash\MNSpartialvardrcircleleftint]\partialvardrcircleleftint$^*$   & \K[\MNSswmapsto]\swmapsto                       \\
\K[\MNSlcurvearrowse]\lcurvearrowse             & \K[\strut\smash\MNSpartialvardrcirclerightint]\partialvardrcirclerightint$^*$ & \K[\MNSswnearrows]\swnearrows                   \\
\K[\MNSlcurvearrowsw]\lcurvearrowsw             & \K[\strut\smash\MNSpartialvartlcircleleftint]\partialvartlcircleleftint$^*$   & \K[\MNSswrsquigarrow]\swrsquigarrow             \\
\K[\MNSlcurvearrowup]\lcurvearrowup             & \K[\strut\smash\MNSpartialvartlcirclerightint]\partialvartlcirclerightint$^*$ & \K[\MNSswswarrows]\swswarrows                   \\
\K[\MNSLeftarrow]\Leftarrow                     & \K[\strut\smash\MNSpartialvartrcircleleftint]\partialvartrcircleleftint$^*$   & \K[\MNStwoheaddownarrow]\twoheaddownarrow       \\
\K[\MNSleftarrow]\leftarrow                     & \K[\strut\smash\MNSpartialvartrcirclerightint]\partialvartrcirclerightint$^*$ & \K[\MNStwoheadleftarrow]\twoheadleftarrow       \\
\K[\MNSleftarrowtail]\leftarrowtail             & \K[\MNSrcirclearrowdown]\rcirclearrowdown                                     & \K[\MNStwoheadnearrow]\twoheadnearrow           \\
\K[\MNSleftleftarrows]\leftleftarrows           & \K[\MNSrcirclearrowleft]\rcirclearrowleft                                     & \K[\MNStwoheadnwarrow]\twoheadnwarrow           \\
\K[\MNSleftlsquigarrow]\leftlsquigarrow         & \K[\MNSrcirclearrowright]\rcirclearrowright                                   & \K[\MNStwoheadrightarrow]\twoheadrightarrow     \\
\K[\MNSleftmapsto]\leftmapsto                   & \K[\MNSrcirclearrowup]\rcirclearrowup                                         & \K[\MNStwoheadsearrow]\twoheadsearrow           \\
\K[\MNSleftrightarrow]\leftrightarrow           & \K[\MNSrcurvearrowdown]\rcurvearrowdown                                       & \K[\MNStwoheadswarrow]\twoheadswarrow           \\
\K[\MNSLeftrightarrow]\Leftrightarrow           & \K[\MNSrcurvearrowleft]\rcurvearrowleft                                       & \K[\MNStwoheaduparrow]\twoheaduparrow           \\
\K[\MNSleftrightarrows]\leftrightarrows         & \K[\MNSrcurvearrowne]\rcurvearrowne                                           & \K[\MNSuparrow]\uparrow                         \\
\K[\MNSleftrsquigarrow]\leftrsquigarrow         & \K[\MNSrcurvearrownw]\rcurvearrownw                                           & \K[\MNSUparrow]\Uparrow                         \\
\K[\MNSlhookdownarrow]\lhookdownarrow           & \K[\MNSrcurvearrowright]\rcurvearrowright                                     & \K[\MNSuparrowtail]\uparrowtail                 \\
\K[\MNSlhookleftarrow]\lhookleftarrow           & \K[\MNSrcurvearrowse]\rcurvearrowse                                           & \K[\MNSupdownarrow]\updownarrow                 \\
\K[\MNSlhooknearrow]\lhooknearrow               & \K[\MNSrcurvearrowsw]\rcurvearrowsw                                           & \K[\MNSUpdownarrow]\Updownarrow                 \\
\K[\MNSlhooknwarrow]\lhooknwarrow               & \K[\MNSrcurvearrowup]\rcurvearrowup                                           & \K[\MNSupdownarrows]\updownarrows               \\
\K[\MNSlhookrightarrow]\lhookrightarrow         & \K[\MNSrhookdownarrow]\rhookdownarrow                                         & \K[\MNSuplsquigarrow]\uplsquigarrow             \\
\K[\MNSlhooksearrow]\lhooksearrow               & \K[\MNSrhookleftarrow]\rhookleftarrow                                         & \K[\MNSupmapsto]\upmapsto                       \\
\K[\MNSlhookswarrow]\lhookswarrow               & \K[\MNSrhooknearrow]\rhooknearrow                                             & \K[\MNSuprsquigarrow]\uprsquigarrow             \\
\K[\MNSlhookuparrow]\lhookuparrow               & \K[\MNSrhooknwarrow]\rhooknwarrow                                             & \K[\MNSupuparrows]\upuparrows                   \\
\K[\MNSlightning]\lightning                     & \K[\MNSrhookrightarrow]\rhookrightarrow                                       &                                                 \\
\K[\MNSLleftarrow]\Lleftarrow                   & \K[\MNSrhooksearrow]\rhooksearrow                                             &                                                 \\
\end{longtable}

\MNS\ additionally defines synonyms for some of the preceding symbols:

\bigskip

\newcommand*{\mnssyn}[1]{(same as \texttt{\string#1})}
\begin{tabular}{ll@{\quad}l}
  \K[\MNSrcirclearrowup]\circlearrowleft          & \mnssyn\rcirclearrowup \\
  \K[\MNSlcirclearrowup]\circlearrowright         & \mnssyn\lcirclearrowup \\
  \K[\MNSrcurvearrowleft]\curvearrowleft          & \mnssyn\rcurvearrowleft \\
  \K[\MNSlcurvearrowright]\curvearrowright        & \mnssyn\lcurvearrowright \\
  \K[\MNSdashedleftarrow]\dashleftarrow           & \mnssyn\dashedleftarrow \\
  \K[\MNSdashedrightarrow]\dashrightarrow         & \mnssyn\dashedrightarrow \\
  \K[\MNSrhookleftarrow]\hookleftarrow            & \mnssyn\rhookleftarrow \\
  \K[\MNSlhookrightarrow]\hookrightarrow          & \mnssyn\lhookrightarrow \\
  \K[\MNSrightlsquigarrow]\leadsto                & \mnssyn\rightlsquigarrow \\
  \K[\MNSsquigarrowleftright]\leftrightsquigarrow & \mnssyn\squigarrowleftright \\
  \K[\MNSrightmapsto]\mapsto                      & \mnssyn\rightmapsto \\
  \K[\MNSrightlsquigarrow]\rightsquigarrow        & \mnssyn\rightlsquigarrow \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  The \verb|\partialvar|\dots\verb|int| macros are intended to be used
  internally by \MNS\ to produce various types of integrals.
\end{tablenote}
\end{longsymtable}


\begin{longsymtable}[MNS]{\MNS\ Negated Arrows}
\index{arrows>negated}
\label{mns-narrows}
\begin{longtable}{*3{ll}}
\multicolumn{6}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{6}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\K[\MNSncurvearrowdownup]\ncurvearrowdownup       & \K[\MNSnlhooknwarrow]\nlhooknwarrow               & \K[\MNSnrightleftarrows]\nrightleftarrows         \\
\K[\MNSncurvearrowleftright]\ncurvearrowleftright & \K[\MNSnlhookrightarrow]\nlhookrightarrow         & \K[\MNSnrightlsquigarrow]\nrightlsquigarrow       \\
\K[\MNSncurvearrownesw]\ncurvearrownesw           & \K[\MNSnlhooksearrow]\nlhooksearrow               & \K[\MNSnrightmapsto]\nrightmapsto                 \\
\K[\MNSncurvearrownwse]\ncurvearrownwse           & \K[\MNSnlhookswarrow]\nlhookswarrow               & \K[\MNSnrightrightarrows]\nrightrightarrows       \\
\K[\MNSncurvearrowrightleft]\ncurvearrowrightleft & \K[\MNSnlhookuparrow]\nlhookuparrow               & \K[\MNSnrightrsquigarrow]\nrightrsquigarrow       \\
\K[\MNSncurvearrowsenw]\ncurvearrowsenw           & \K[\MNSnLleftarrow]\nLleftarrow                   & \K[\MNSnRrightarrow]\nRrightarrow                 \\
\K[\MNSncurvearrowswne]\ncurvearrowswne           & \K[\MNSnnearrow]\nnearrow                         & \K[\MNSnSearrow]\nSearrow                         \\
\K[\MNSncurvearrowupdown]\ncurvearrowupdown       & \K[\MNSnNearrow]\nNearrow                         & \K[\MNSnsearrow]\nsearrow                         \\
\K[\MNSndasheddownarrow]\ndasheddownarrow         & \K[\MNSnnearrowtail]\nnearrowtail                 & \K[\MNSnsearrowtail]\nsearrowtail                 \\
\K[\MNSndashedleftarrow]\ndashedleftarrow         & \K[\MNSnnelsquigarrow]\nnelsquigarrow             & \K[\MNSnselsquigarrow]\nselsquigarrow             \\
\K[\MNSndashednearrow]\ndashednearrow             & \K[\MNSnnemapsto]\nnemapsto                       & \K[\MNSnsemapsto]\nsemapsto                       \\
\K[\MNSndashednwarrow]\ndashednwarrow             & \K[\MNSnnenearrows]\nnenearrows                   & \K[\MNSnsenwarrows]\nsenwarrows                   \\
\K[\MNSndashedrightarrow]\ndashedrightarrow       & \K[\MNSnnersquigarrow]\nnersquigarrow             & \K[\MNSnsersquigarrow]\nsersquigarrow             \\
\K[\MNSndashedsearrow]\ndashedsearrow             & \K[\MNSnNeswarrow]\nNeswarrow                     & \K[\MNSnsesearrows]\nsesearrows                   \\
\K[\MNSndashedswarrow]\ndashedswarrow             & \K[\MNSnneswarrow]\nneswarrow                     & \K[\MNSnsquigarrowdownup]\nsquigarrowdownup       \\
\K[\MNSndasheduparrow]\ndasheduparrow             & \K[\MNSnneswarrows]\nneswarrows                   & \K[\MNSnsquigarrowleftright]\nsquigarrowleftright \\
\K[\MNSndownarrow]\ndownarrow                     & \K[\MNSnNwarrow]\nNwarrow                         & \K[\MNSnsquigarrownesw]\nsquigarrownesw           \\
\K[\MNSnDownarrow]\nDownarrow                     & \K[\MNSnnwarrow]\nnwarrow                         & \K[\MNSnsquigarrownwse]\nsquigarrownwse           \\
\K[\MNSndownarrowtail]\ndownarrowtail             & \K[\MNSnnwarrowtail]\nnwarrowtail                 & \K[\MNSnsquigarrowrightleft]\nsquigarrowrightleft \\
\K[\MNSndowndownarrows]\ndowndownarrows           & \K[\MNSnnwlsquigarrow]\nnwlsquigarrow             & \K[\MNSnsquigarrowsenw]\nsquigarrowsenw           \\
\K[\MNSndownlsquigarrow]\ndownlsquigarrow         & \K[\MNSnnwmapsto]\nnwmapsto                       & \K[\MNSnsquigarrowswne]\nsquigarrowswne           \\
\K[\MNSndownmapsto]\ndownmapsto                   & \K[\MNSnnwnwarrows]\nnwnwarrows                   & \K[\MNSnsquigarrowupdown]\nsquigarrowupdown       \\
\K[\MNSndownrsquigarrow]\ndownrsquigarrow         & \K[\MNSnnwrsquigarrow]\nnwrsquigarrow             & \K[\MNSnswarrow]\nswarrow                         \\
\K[\MNSndownuparrows]\ndownuparrows               & \K[\MNSnnwsearrow]\nnwsearrow                     & \K[\MNSnSwarrow]\nSwarrow                         \\
\K[\MNSnlcirclearrowdown]\nlcirclearrowdown       & \K[\MNSnNwsearrow]\nNwsearrow                     & \K[\MNSnswarrowtail]\nswarrowtail                 \\
\K[\MNSnlcirclearrowleft]\nlcirclearrowleft       & \K[\MNSnnwsearrows]\nnwsearrows                   & \K[\MNSnswlsquigarrow]\nswlsquigarrow             \\
\K[\MNSnlcirclearrowright]\nlcirclearrowright     & \K[\MNSnrcirclearrowdown]\nrcirclearrowdown       & \K[\MNSnswmapsto]\nswmapsto                       \\
\K[\MNSnlcirclearrowup]\nlcirclearrowup           & \K[\MNSnrcirclearrowleft]\nrcirclearrowleft       & \K[\MNSnswnearrows]\nswnearrows                   \\
\K[\MNSnlcurvearrowdown]\nlcurvearrowdown         & \K[\MNSnrcirclearrowright]\nrcirclearrowright     & \K[\MNSnswrsquigarrow]\nswrsquigarrow             \\
\K[\MNSnlcurvearrowleft]\nlcurvearrowleft         & \K[\MNSnrcirclearrowup]\nrcirclearrowup           & \K[\MNSnswswarrows]\nswswarrows                   \\
\K[\MNSnlcurvearrowne]\nlcurvearrowne             & \K[\MNSnrcurvearrowdown]\nrcurvearrowdown         & \K[\MNSntwoheaddownarrow]\ntwoheaddownarrow       \\
\K[\MNSnlcurvearrownw]\nlcurvearrownw             & \K[\MNSnrcurvearrowleft]\nrcurvearrowleft         & \K[\MNSntwoheadleftarrow]\ntwoheadleftarrow       \\
\K[\MNSnlcurvearrowright]\nlcurvearrowright       & \K[\MNSnrcurvearrowne]\nrcurvearrowne             & \K[\MNSntwoheadnearrow]\ntwoheadnearrow           \\
\K[\MNSnlcurvearrowse]\nlcurvearrowse             & \K[\MNSnrcurvearrownw]\nrcurvearrownw             & \K[\MNSntwoheadnwarrow]\ntwoheadnwarrow           \\
\K[\MNSnlcurvearrowsw]\nlcurvearrowsw             & \K[\MNSnrcurvearrowright]\nrcurvearrowright       & \K[\MNSntwoheadrightarrow]\ntwoheadrightarrow     \\
\K[\MNSnlcurvearrowup]\nlcurvearrowup             & \K[\MNSnrcurvearrowse]\nrcurvearrowse             & \K[\MNSntwoheadsearrow]\ntwoheadsearrow           \\
\K[\MNSnLeftarrow]\nLeftarrow                     & \K[\MNSnrcurvearrowsw]\nrcurvearrowsw             & \K[\MNSntwoheadswarrow]\ntwoheadswarrow           \\
\K[\MNSnleftarrow]\nleftarrow                     & \K[\MNSnrcurvearrowup]\nrcurvearrowup             & \K[\MNSntwoheaduparrow]\ntwoheaduparrow           \\
\K[\MNSnleftarrowtail]\nleftarrowtail             & \K[\MNSnrhookdownarrow]\nrhookdownarrow           & \K[\MNSnuparrow]\nuparrow                         \\
\K[\MNSnleftleftarrows]\nleftleftarrows           & \K[\MNSnrhookleftarrow]\nrhookleftarrow           & \K[\MNSnUparrow]\nUparrow                         \\
\K[\MNSnleftlsquigarrow]\nleftlsquigarrow         & \K[\MNSnrhooknearrow]\nrhooknearrow               & \K[\MNSnuparrowtail]\nuparrowtail                 \\
\K[\MNSnleftmapsto]\nleftmapsto                   & \K[\MNSnrhooknwarrow]\nrhooknwarrow               & \K[\MNSnupdownarrow]\nupdownarrow                 \\
\K[\MNSnleftrightarrow]\nleftrightarrow           & \K[\MNSnrhookrightarrow]\nrhookrightarrow         & \K[\MNSnUpdownarrow]\nUpdownarrow                 \\
\K[\MNSnLeftrightarrow]\nLeftrightarrow           & \K[\MNSnrhooksearrow]\nrhooksearrow               & \K[\MNSnupdownarrows]\nupdownarrows               \\
\K[\MNSnleftrightarrows]\nleftrightarrows         & \K[\MNSnrhookswarrow]\nrhookswarrow               & \K[\MNSnuplsquigarrow]\nuplsquigarrow             \\
\K[\MNSnleftrsquigarrow]\nleftrsquigarrow         & \K[\MNSnrhookuparrow]\nrhookuparrow               & \K[\MNSnupmapsto]\nupmapsto                       \\
\K[\MNSnlhookdownarrow]\nlhookdownarrow           & \K[\MNSnrightarrow]\nrightarrow                   & \K[\MNSnuprsquigarrow]\nuprsquigarrow             \\
\K[\MNSnlhookleftarrow]\nlhookleftarrow           & \K[\MNSnRightarrow]\nRightarrow                   & \K[\MNSnupuparrows]\nupuparrows                   \\
\K[\MNSnlhooknearrow]\nlhooknearrow               & \K[\MNSnrightarrowtail]\nrightarrowtail           &                                                   \\
\end{longtable}
\MNS\ additionally defines synonyms for some of the preceding symbols:

\bigskip

\newcommand*{\mnssyn}[1]{(same as \texttt{\string#1})}
\begin{tabular}{ll@{\quad}l}
  \K[\MNSnrcirclearrowup]\ncirclearrowleft          & \mnssyn\nrcirclearrowup \\
  \K[\MNSnlcirclearrowup]\ncirclearrowright         & \mnssyn\nlcirclearrowup \\
  \K[\MNSnrcurvearrowleft]\ncurvearrowleft          & \mnssyn\nrcurvearrowleft \\
  \K[\MNSnlcurvearrowright]\ncurvearrowright        & \mnssyn\nlcurvearrowright \\
  \K[\MNSndashedrightarrow]\ndasharrow              & \mnssyn\ndashedrightarrow \\
  \K[\MNSndashedleftarrow]\ndashleftarrow           & \mnssyn\ndashedleftarrow \\
  \K[\MNSndashedrightarrow]\ndashrightarrow         & \mnssyn\ndashedrightarrow \\
  \K[\MNSnleftarrow]\ngets                          & \mnssyn\nleftarrow \\
  \K[\MNSnrhookleftarrow]\nhookleftarrow            & \mnssyn\nrhookleftarrow \\
  \K[\MNSnlhookrightarrow]\nhookrightarrow          & \mnssyn\nlhookrightarrow \\
  \K[\MNSnrightlsquigarrow]\nleadsto                & \mnssyn\nrightlsquigarrow \\
  \K[\MNSnsquigarrowleftright]\nleftrightsquigarrow & \mnssyn\nsquigarrowleftright \\
  \K[\MNSnrightmapsto]\nmapsto                      & \mnssyn\nrightmapsto \\
  \K[\MNSnrightlsquigarrow]\nrightsquigarrow        & \mnssyn\nrightlsquigarrow \\
  \K[\MNSnrightarrow]\nto                           & \mnssyn\nrightarrow \\
\end{tabular}
\end{longsymtable}


\begin{symtable}[MNS]{\MNS\ Harpoons}
\index{harpoons}
\label{mns-harpoons}
\begin{tabular}{*3{ll}}
\K[\MNSdownharpoonccw]\downharpoonccw$^*$             & \K[\MNSneswharpoons]\neswharpoons           & \K[\MNSseharpooncw]\seharpooncw                       \\
\K[\MNSdownharpooncw]\downharpooncw$^*$               & \K[\MNSneswharpoonsenw]\neswharpoonsenw     & \K[\MNSsenwharpoons]\senwharpoons                     \\
\K[\MNSdownupharpoons]\downupharpoons                 & \K[\MNSnwharpoonccw]\nwharpoonccw           & \K[\MNSswharpoonccw]\swharpoonccw                     \\
\K[\MNSleftharpoonccw]\leftharpoonccw$^*$             & \K[\MNSnwharpooncw]\nwharpooncw             & \K[\MNSswharpooncw]\swharpooncw                       \\
\K[\MNSleftharpooncw]\leftharpooncw$^*$               & \K[\MNSnwseharpoonnesw]\nwseharpoonnesw     & \K[\MNSswneharpoons]\swneharpoons                     \\
\K[\MNSleftrightharpoondownup]\leftrightharpoondownup & \K[\MNSnwseharpoons]\nwseharpoons           & \K[\MNSupdownharpoonleftright]\updownharpoonleftright \\
\K[\MNSleftrightharpoons]\leftrightharpoons           & \K[\MNSnwseharpoonswne]\nwseharpoonswne     & \K[\MNSupdownharpoonrightleft]\updownharpoonrightleft \\
\K[\MNSleftrightharpoonupdown]\leftrightharpoonupdown & \K[\MNSrightharpoonccw]\rightharpoonccw$^*$ & \K[\MNSupdownharpoons]\updownharpoons                 \\
\K[\MNSneharpoonccw]\neharpoonccw                     & \K[\MNSrightharpooncw]\rightharpooncw$^*$   & \K[\MNSupharpoonccw]\upharpoonccw$^*$                 \\
\K[\MNSneharpooncw]\neharpooncw                       & \K[\MNSrightleftharpoons]\rightleftharpoons & \K[\MNSupharpooncw]\upharpooncw$^*$                   \\
\K[\MNSneswharpoonnwse]\neswharpoonnwse               & \K[\MNSseharpoonccw]\seharpoonccw           &                                                       \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  Where marked, the ``\verb|ccw|'' suffix can be replaced with
  ``\verb|up|'' and the ``\verb|cw|'' suffix can be replaced with
  ``\verb|down|''.  (In addition, \cmdI[\MNSupharpooncw]{\upharpooncw}
  can be written as \cmdI[\MNSupharpooncw]{\restriction}.)
\end{tablenote}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Negated Harpoons}
\index{harpoons}
\label{mns-nharpoons}
\begin{tabular}{*3{ll}}
\K[\MNSndownharpoonccw]\ndownharpoonccw$^*$             & \K[\MNSnneswharpoons]\nneswharpoons           & \K[\MNSnseharpooncw]\nseharpooncw                       \\
\K[\MNSndownharpooncw]\ndownharpooncw$^*$               & \K[\MNSnneswharpoonsenw]\nneswharpoonsenw     & \K[\MNSnsenwharpoons]\nsenwharpoons                     \\
\K[\MNSndownupharpoons]\ndownupharpoons                 & \K[\MNSnnwharpoonccw]\nnwharpoonccw           & \K[\MNSnswharpoonccw]\nswharpoonccw                     \\
\K[\MNSnleftharpoonccw]\nleftharpoonccw$^*$             & \K[\MNSnnwharpooncw]\nnwharpooncw             & \K[\MNSnswharpooncw]\nswharpooncw                       \\
\K[\MNSnleftharpooncw]\nleftharpooncw$^*$               & \K[\MNSnnwseharpoonnesw]\nnwseharpoonnesw     & \K[\MNSnswneharpoons]\nswneharpoons                     \\
\K[\MNSnleftrightharpoondownup]\nleftrightharpoondownup & \K[\MNSnnwseharpoons]\nnwseharpoons           & \K[\MNSnupdownharpoonleftright]\nupdownharpoonleftright \\
\K[\MNSnleftrightharpoons]\nleftrightharpoons           & \K[\MNSnnwseharpoonswne]\nnwseharpoonswne     & \K[\MNSnupdownharpoonrightleft]\nupdownharpoonrightleft \\
\K[\MNSnleftrightharpoonupdown]\nleftrightharpoonupdown & \K[\MNSnrightharpoonccw]\nrightharpoonccw$^*$ & \K[\MNSnupdownharpoons]\nupdownharpoons                 \\
\K[\MNSnneharpoonccw]\nneharpoonccw                     & \K[\MNSnrightharpooncw]\nrightharpooncw$^*$   & \K[\MNSnupharpoonccw]\nupharpoonccw$^*$                 \\
\K[\MNSnneharpooncw]\nneharpooncw                       & \K[\MNSnrightleftharpoons]\nrightleftharpoons & \K[\MNSnupharpooncw]\nupharpooncw$^*$                   \\
\K[\MNSnneswharpoonnwse]\nneswharpoonnwse               & \K[\MNSnseharpoonccw]\nseharpoonccw           &                                                         \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  Where marked, the ``\verb|ccw|'' suffix can be replaced with
  ``\verb|up|'' and the ``\verb|cw|'' suffix can be replaced with
  ``\verb|down|''.  (In addition, \cmdI[\MNSnupharpooncw]{\nupharpooncw}
  can be written as \cmdI[\MNSnupharpooncw]{\nrestriction}.)
\end{tablenote}
\end{symtable}


\begin{symtable}[CHEMB]{\CHEMB\ Arrows}
\index{arrows}
\label{chemarrow-arrows}
\begin{tabular}{ll}
\X\chemarrow
\end{tabular}
\end{symtable}


\begin{symtable}[FGE]{\FGE\ Arrows}
\index{arrows}
\idxboth{fletched}{arrows}
\idxboth{Frege logic}{symbols}
\label{fge-arrows}
\begin{tabular}{ll@{\qquad}ll}
\K\fgerightarrow & \K\fgeuparrow \\
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Spoons}
\index{binary relations}
\index{relational symbols>binary}
\idxboth{spoon}{symbols}
\label{mns-spoons}
\begin{tabular}{*3{ll}}
\K[\MNSdownfilledspoon]\downfilledspoon   & \K[\MNSnnespoon]\nnespoon                   & \K[\MNSnwfilledspoon]\nwfilledspoon       \\
\K[\MNSdownspoon]\downspoon               & \K[\MNSnnwfilledspoon]\nnwfilledspoon       & \K[\MNSnwspoon]\nwspoon                   \\
\K[\MNSleftfilledspoon]\leftfilledspoon   & \K[\MNSnnwspoon]\nnwspoon                   & \K[\MNSrightfilledspoon]\rightfilledspoon \\
\K[\MNSleftspoon]\leftspoon               & \K[\MNSnrightfilledspoon]\nrightfilledspoon & \K[\MNSrightspoon]\rightspoon$^*$         \\
\K[\MNSndownfilledspoon]\ndownfilledspoon & \K[\MNSnrightspoon]\nrightspoon$^*$         & \K[\MNSsefilledspoon]\sefilledspoon       \\
\K[\MNSndownspoon]\ndownspoon             & \K[\MNSnsefilledspoon]\nsefilledspoon       & \K[\MNSsespoon]\sespoon                   \\
\K[\MNSnefilledspoon]\nefilledspoon       & \K[\MNSnsespoon]\nsespoon                   & \K[\MNSswfilledspoon]\swfilledspoon       \\
\K[\MNSnespoon]\nespoon                   & \K[\MNSnswfilledspoon]\nswfilledspoon       & \K[\MNSswspoon]\swspoon                   \\
\K[\MNSnleftfilledspoon]\nleftfilledspoon & \K[\MNSnswspoon]\nswspoon                   & \K[\MNSupfilledspoon]\upfilledspoon       \\
\K[\MNSnleftspoon]\nleftspoon             & \K[\MNSnupfilledspoon]\nupfilledspoon       & \K[\MNSupspoon]\upspoon                   \\
\K[\MNSnnefilledspoon]\nnefilledspoon     & \K[\MNSnupspoon]\nupspoon                   &                                           \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \MNS\ defines \cmdI[\MNSrightspoon]{\multimap} as a synonym for
  \cmdI[\MNSrightspoon]{\rightspoon} and
  \cmdI[\MNSnrightspoon]{\nmultimap} as a synonym for
  \cmdI[\MNSnrightspoon]{\nrightspoon}.
\end{tablenote}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Pitchforks}
\index{binary relations}
\index{relational symbols>binary}
\idxboth{pitchfork}{symbols}
\label{mns-pitchforks}
\begin{tabular}{*3{ll}}
\K[\MNSdownpitchfork]\downpitchfork   & \K[\MNSnnwpitchfork]\nnwpitchfork       & \K[\MNSrightpitchfork]\rightpitchfork \\
\K[\MNSleftpitchfork]\leftpitchfork   & \K[\MNSnrightpitchfork]\nrightpitchfork & \K[\MNSsepitchfork]\sepitchfork       \\
\K[\MNSndownpitchfork]\ndownpitchfork & \K[\MNSnsepitchfork]\nsepitchfork       & \K[\MNSswpitchfork]\swpitchfork       \\
\K[\MNSnepitchfork]\nepitchfork       & \K[\MNSnswpitchfork]\nswpitchfork       & \K[\MNSuppitchfork]\uppitchfork       \\
\K[\MNSnleftpitchfork]\nleftpitchfork & \K[\MNSnuppitchfork]\nuppitchfork       &                                       \\
\K[\MNSnnepitchfork]\nnepitchfork     & \K[\MNSnwpitchfork]\nwpitchfork         &                                       \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \MNS\ defines \cmdI[\MNSuppitchfork]{\pitchfork} as a synonym for
  \cmdI[\MNSuppitchfork]{\uppitchfork} and
  \cmdI[\MNSnuppitchfork]{\npitchfork} as a synonym for
  \cmdI[\MNSnuppitchfork]{\nuppitchfork}.
\end{tablenote}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Smiles and Frowns}
\index{binary relations}
\index{relational symbols>binary}
\idxboth{smile}{symbols}
\idxboth{frown}{symbols}
\label{mns-smile-frown}
\begin{tabular}{*3{ll}}
\K[\MNSdoublefrown]\doublefrown       & \K[\MNSnsmileeq]\nsmileeq                 & \K[\MNSsmileeq]\smileeq                 \\
\K[\MNSdoublefrowneq]\doublefrowneq   & \K[\MNSnsmileeqfrown]\nsmileeqfrown       & \K[\MNSsmileeqfrown]\smileeqfrown       \\
\K[\MNSdoublesmile]\doublesmile       & \K[\MNSnsmilefrown]\nsmilefrown           & \K[\MNSsmilefrown]\smilefrown           \\
\K[\MNSdoublesmileeq]\doublesmileeq   & \K[\MNSnsmilefrowneq]\nsmilefrowneq       & \K[\MNSsmilefrowneq]\smilefrowneq       \\
\K[\MNSeqfrown]\eqfrown               & \K[\MNSnsqdoublefrown]\nsqdoublefrown     & \K[\MNSsqdoublefrown]\sqdoublefrown     \\
\K[\MNSeqsmile]\eqsmile               & \K[\MNSnsqdoublefrowneq]\nsqdoublefrowneq & \K[\MNSsqdoublefrowneq]\sqdoublefrowneq \\
\K[\MNSfrown]\frown                   & \K[\MNSnsqdoublesmile]\nsqdoublesmile     & \K[\MNSsqdoublesmile]\sqdoublesmile     \\
\K[\MNSfrowneq]\frowneq               & \K[\MNSnsqdoublesmileeq]\nsqdoublesmileeq & \K[\MNSsqdoublesmileeq]\sqdoublesmileeq \\
\K[\MNSfrowneqsmile]\frowneqsmile     & \K[\MNSnsqeqfrown]\nsqeqfrown             & \K[\MNSsqeqfrown]\sqeqfrown             \\
\K[\MNSfrownsmile]\frownsmile         & \K[\MNSnsqeqsmile]\nsqeqsmile             & \K[\MNSsqeqsmile]\sqeqsmile             \\
\K[\MNSfrownsmileeq]\frownsmileeq     & \K[\MNSnsqfrown]\nsqfrown                 & \K[\MNSsqfrown]\sqfrown                 \\
\K[\MNSndoublefrown]\ndoublefrown     & \K[\MNSnsqfrowneq]\nsqfrowneq             & \K[\MNSsqfrowneq]\sqfrowneq             \\
\K[\MNSndoublefrowneq]\ndoublefrowneq & \K[\MNSnsqfrowneqsmile]\nsqfrowneqsmile   & \K[\MNSsqfrowneqsmile]\sqfrowneqsmile   \\
\K[\MNSndoublesmile]\ndoublesmile     & \K[\MNSnsqfrownsmile]\nsqfrownsmile       & \K[\MNSsqfrownsmile]\sqfrownsmile       \\
\K[\MNSndoublesmileeq]\ndoublesmileeq & \K[\MNSnsqsmile]\nsqsmile                 & \K[\MNSsqsmile]\sqsmile                 \\
\K[\MNSneqfrown]\neqfrown             & \K[\MNSnsqsmileeq]\nsqsmileeq             & \K[\MNSsqsmileeq]\sqsmileeq             \\
\K[\MNSneqsmile]\neqsmile             & \K[\MNSnsqsmileeqfrown]\nsqsmileeqfrown   & \K[\MNSsqsmileeqfrown]\sqsmileeqfrown   \\
\K[\MNSnfrown]\nfrown                 & \K[\MNSnsqsmilefrown]\nsqsmilefrown       & \K[\MNSsqsmilefrown]\sqsmilefrown       \\
\K[\MNSnfrowneq]\nfrowneq             & \K[\MNSnsqtriplefrown]\nsqtriplefrown     & \K[\MNSsqtriplefrown]\sqtriplefrown     \\
\K[\MNSnfrowneqsmile]\nfrowneqsmile   & \K[\MNSnsqtriplesmile]\nsqtriplesmile     & \K[\MNSsqtriplesmile]\sqtriplesmile     \\
\K[\MNSnfrownsmile]\nfrownsmile       & \K[\MNSntriplefrown]\ntriplefrown         & \K[\MNStriplefrown]\triplefrown         \\
\K[\MNSnfrownsmileeq]\nfrownsmileeq   & \K[\MNSntriplesmile]\ntriplesmile         & \K[\MNStriplesmile]\triplesmile         \\
\K[\MNSnsmile]\nsmile                 & \K[\MNSsmile]\smile                       &                                         \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \MNS\ defines \cmdI[\MNSsmile]{\smallsmile} as a synonym for
  \cmdI[\MNSsmile]{\smile}, \cmdI[\MNSfrown]{\smallfrown} as a synonym
  for \cmdI[\MNSfrown]{\frown}, \cmdI[\MNSsmilefrown]{\asymp} as a
  synonym for \cmdI[\MNSsmilefrown]{\smilefrown}, and
  \cmdI[\MNSnsmilefrown]{\nasymp} as a synonym for
  \cmdI[\MNSnsmilefrown]{\nsmilefrown}.
\end{tablenote}
\end{symtable}


\begin{symtable}[ULSY]{\ULSY\ Contradiction Symbols}
\idxboth{contradiction}{symbols}
\label{ulsy}\medskip
\begin{tabular}{*6{ll}}
\K\blitza & \K\blitzb & \K\blitzc & \K\blitzd & \K\blitze \\
\end{tabular}
\end{symtable}


\begin{symtable}{Extension Characters}
\index{extension characters}
\label{ext}
\begin{tabular}{*2{ll}}
\X\relbar & \X\Relbar \\
\end{tabular}
\end{symtable}


\begin{symtable}[ST]{\ST\ Extension Characters}
\index{extension characters}
\label{st-ext}
\begin{tabular}{*3{ll}}
\X\Arrownot   &\X\Mapsfromchar &\X\Mapstochar \\
\X\arrownot   &\X\mapsfromchar
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Extension Characters}
\index{extension characters}
\label{txpx-ext}
\begin{tabular}{*3{ll}}
\X\Mappedfromchar  & \X\Mmappedfromchar & \X\Mmapstochar     \\
\X\mappedfromchar  & \X\mmappedfromchar & \X\mmapstochar     \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Extension Characters}
\index{extension characters}
\label{abx-ext}
\begin{tabular}{*3{ll}}
\X[\ABXmapsfromchar]\mapsfromchar & \X[\ABXmapstochar]\mapstochar \\
\X[\ABXMapsfromchar]\Mapsfromchar & \X[\ABXMapstochar]\Mapstochar \\
\end{tabular}
\end{symtable}



\begin{symtable}{Log-like Symbols}
\idxboth{log-like}{symbols}
\index{atomic math objects}
\index{limits}
\label{log}
\begin{tabular}{*8l}
\Z\arccos & \Z\cos  & \Z\csc & \Z\exp & \Z\ker    & \Z\limsup & \Z\min & \Z\sinh \\
\Z\arcsin & \Z\cosh & \Z\deg & \Z\gcd & \Z\lg     & \Z\ln     & \Z\Pr  & \Z\sup  \\
\Z\arctan & \Z\cot  & \Z\det & \Z\hom & \Z\lim    & \Z\log    & \Z\sec & \Z\tan  \\
\Z\arg    & \Z\coth & \Z\dim & \Z\inf & \Z\liminf & \Z\max    & \Z\sin & \Z\tanh
\end{tabular}

\bigskip
\begin{tablenote}
  Calling the above ``symbols'' may be a bit
  misleading.\footnotemark{} Each log-like symbol merely produces the
  eponymous textual equivalent, but with proper surrounding spacing.
  See Section~\ref{math-spacing} for more information about log-like
  symbols.  As \cmd{\bmod} and \cmd{\pmod} are arguably not symbols we
  refer the reader to the Short Math Guide for
  \latex~\cite{Downes:smg} for samples.
\end{tablenote}
\end{symtable}
\footnotetext{Michael\index{Downes, Michael J.} J. Downes prefers the
more general term, ``atomic\index{atomic math objects} math objects''.}


\begin{symtable}[AMS]{\AMS\ Log-like Symbols}
\idxboth{log-like}{symbols}
\index{atomic math objects}
\index{limits}
\label{ams-log}
\renewcommand{\arraystretch}{1.5}  % Keep tall symbols from touching.
\begin{tabular}{*2{ll@{\qquad}}ll}
\X\injlim     & \X\varinjlim  & \X\varlimsup  \\
\X\projlim    & \X\varliminf  & \X\varprojlim
\end{tabular}

\bigskip
\begin{tablenote}
  Load the \pkgname{amsmath} package to get these symbols.  See
  Section~\ref{math-spacing} for some additional comments regarding
  log-like symbols.  As \cmd{\mod} and \cmd{\pod} are arguably not
  symbols we refer the reader to the Short Math Guide for
  \latex~\cite{Downes:smg} for samples.
\end{tablenote}
\end{symtable}


\begin{symtable}{Greek Letters}
\index{Greek}\index{alphabets>Greek}
\label{greek}
\begin{tabular}{*8l}
\X\alpha        &\X\theta       &\X o           &\X\tau         \\
\X\beta         &\X\vartheta    &\X\pi          &\X\upsilon     \\
\X\gamma        &\X\iota        &\X\varpi       &\X\phi         \\
\X\delta        &\X\kappa       &\X\rho         &\X\varphi      \\
\X\epsilon      &\X\lambda      &\X\varrho      &\X\chi         \\
\X\varepsilon   &\X\mu          &\X\sigma       &\X\psi         \\
\X\zeta         &\X\nu          &\X\varsigma    &\X\omega       \\
\X\eta          &\X\xi                                          \\
                                                                \\
\X\Gamma        &\X\Lambda      &\X\Sigma       &\X\Psi         \\
\X\Delta        &\X\Xi          &\X\Upsilon     &\X\Omega       \\
\X\Theta        &\X\Pi          &\X\Phi
\end{tabular}

\bigskip
\begin{tablenote}
  The remaining Greek majuscules\index{majuscules} can be produced
  with ordinary Latin letters.  The symbol ``M'', for instance, is
  used for both an uppercase ``m'' and an uppercase ``$\mu$''.  See
  Section~\ref{bold-math} for examples of how to produce bold Greek
  letters.\index{Greek>bold}
\end{tablenote}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Greek Letters}
\index{Greek}\index{alphabets>Greek}
\label{ams-greek}
\begin{tabular}{*4l}
\X\digamma      &\X\varkappa
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Upright Greek Letters}
\index{Greek}\index{alphabets>Greek}
\index{Greek>upright}
\index{upright Greek letters}
\label{txpx-greek}
\begin{tabular}{*4{ll}}
\X\alphaup      & \X\thetaup      & \X\piup         & \X\phiup        \\
\X\betaup       & \X\varthetaup   & \X\varpiup      & \X\varphiup     \\
\X\gammaup      & \X\iotaup       & \X\rhoup        & \X\chiup        \\
\X\deltaup      & \X\kappaup      & \X\varrhoup     & \X\psiup        \\
\X\epsilonup    & \X\lambdaup     & \X\sigmaup      & \X\omegaup      \\
\X\varepsilonup & \X\muup         & \X\varsigmaup   \\
\X\zetaup       & \X\nuup         & \X\tauup        \\
\X\etaup        & \X\xiup         & \X\upsilonup    \\
\end{tabular}
\end{symtable}


\begin{symtable}[UPGR]{\UPGR\ Upright Greek Letters}
\index{Greek}\index{alphabets>Greek}
\index{Greek>upright}
\index{upright Greek letters}
\label{upgreek-greek}
\begin{tabular}{*4{ll}}
\K\upalpha      & \K\uptheta      & \K\uppi         & \K\upphi        \\
\K\upbeta       & \K\upvartheta   & \K\upvarpi      & \K\upvarphi     \\
\K\upgamma      & \K\upiota       & \K\uprho        & \K\upchi        \\
\K\updelta      & \K\upkappa      & \K\upvarrho     & \K\uppsi        \\
\K\upepsilon    & \K\uplambda     & \K\upsigma      & \K\upomega      \\
\K\upvarepsilon & \K\upmu         & \K\upvarsigma                     \\
\K\upzeta       & \K\upnu         & \K\uptau                          \\
\K\upeta        & \K\upxi         & \K\upupsilon                      \\
                                                                      \\
\K\Upgamma      & \K\Uplambda     & \K\Upsigma      & \K\Uppsi        \\
\K\Updelta      & \K\Upxi         & \K\Upupsilon    & \K\Upomega      \\
\K\Uptheta      & \K\Uppi         & \K\Upphi                          \\
\end{tabular}

\bigskip
\begin{tablenote}
  \UPGR\ utilizes upright Greek characters from either the
  \postscript \PSfont{Symbol} font (depicted above) or Euler
  Roman.\index{Euler Roman} As a result, the glyphs may appear
  slightly different from the above.  Contrast, for example,
  ``\Upgamma\Updelta\Uptheta\upalpha\upbeta\upgamma''~(Symbol) with
  ``{\usefont{U}{eur}{m}{n}\char"00\char"01\char"02\char"0B\char"0C\char"0D}''~(Euler).
\end{tablenote}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Variant Latin Letters}
\index{letters>variant Latin}
\label{txpx-variant}
\begin{tabular}{*3{ll@{\qquad}}ll}
\X\varg & \X\varv & \X\varw & \X\vary \\
\end{tabular}

\bigskip
\begin{tablenote}
  \newcommand*{\txital}[1]{{\usefont{T1}{txr}{m}{it}#1}}
  Pass the \optname{txfonts/pxfonts}{varg} option to \TXPX\ to
  replace~\txital{g}, \txital{v}, \txital{w}, and~\txital{y}
  with~$\varg$, $\varv$, $\varw$, and~$\vary$ in every mathematical
  expression in your document.
\end{tablenote}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Hebrew Letters}
\index{Hebrew}\index{alphabets>Hebrew}
\label{ams-hebrew}
\begin{tabular}{*6l}
\X\beth & \X\gimel & \X\daleth
\end{tabular}

\bigskip
\begin{tablenote}
\cmdX{\aleph}~($\aleph$) appears in Table~\vref{ord}.
\end{tablenote}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Hebrew Letters}
\index{Hebrew}\index{alphabets>Hebrew}
\label{mns-hebrew}
\begin{tabular}{*8l}
\K[\MNSaleph]\aleph & \K[\MNSbeth]\beth & \K[\MNSgimel]\gimel & \K[\MNSdaleth]\daleth
\end{tabular}
\end{symtable}


\begin{symtable}{Letter-like Symbols}
\idxboth{letter-like}{symbols}
\index{tacks}
\label{letter-like}
\begin{tabular}{*5{ll}}
\X\bot    & \X\forall & \X\imath & \X\ni      & \X\top \\
\X\ell    & \X\hbar   & \X\in    & \X\partial & \X\wp  \\
\X\exists & \X\Im     & \X\jmath & \X\Re               \\
\end{tabular}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Letter-like Symbols}
\idxboth{letter-like}{symbols}
\label{ams-letter-like}
\begin{tabular}{*3{ll}}
\X\Bbbk       & \X\complement & \X\hbar    \\
\X\circledR   & \X\Finv       & \X\hslash  \\
\X\circledS   & \X\Game       & \X\nexists \\
\end{tabular}
\end{symtable}


\begin{symtable}[TX]{\TXPX\ Letter-like Symbols}
\idxboth{letter-like}{symbols}
\label{txpx-letter-like}
\begin{tabular}{*4{ll}}
\X\mathcent & \X\mathsterling$^*$ & \X\notin & \X\notni \\
\end{tabular}

\bigskip
\usetextmathmessage[*]

\end{symtable}


\begin{symtable}[ABX]{\ABX\ Letter-like Symbols}
\idxboth{letter-like}{symbols}
\label{abx-letter-like}
\begin{tabular}{*4{ll}}
\X[\ABXbarin]\barin           & \X[\ABXin]\in             & \X[\ABXnottop]\nottop             & \X[\ABXvarnotin]\varnotin       \\
\X[\ABXcomplement]\complement & \X[\ABXnexists]\nexists   & \X[\ABXowns]\owns                 & \X[\ABXvarnotowner]\varnotowner \\
\X[\ABXexists]\exists         & \X[\ABXnotbot]\notbot     & \X[\ABXownsbar]\ownsbar                                             \\
\X[\ABXFinv]\Finv             & \X[\ABXnotin]\notin       & \X[\ABXpartial]\partial                                             \\
\X[\ABXGame]\Game             & \X[\ABXnotowner]\notowner & \X[\ABXpartialslash]\partialslash                                   \\
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Letter-like Symbols}
\idxboth{letter-like}{symbols}
\label{mns-letter-like}
\begin{tabular}{*4{ll}}
\K[\MNSbot]\bot       & \K[\MNSin]\in           & \K[\MNSnowns]\nowns$^*$   & \K[\MNStop]\top \\
\K[\MNSexists]\exists & \K[\MNSnexists]\nexists & \K[\MNSowns]\owns         & \K[\MNSwp]\wp   \\
\K[\MNSforall]\forall & \K[\MNSnin]\nin$^*$     & \K[\MNSpowerset]\powerset                   \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  \MNS\ provides synonyms \cmdI[\MNSnin]{\notin} for
  \cmdI[\MNSnin]{\nin}, \cmdI[\MNSowns]{\ni} for
  \cmdI[\MNSowns]{\owns}, and \cmdI[\MNStop]{\intercal} for
  \cmdI[\MNStop]{\top}.
\end{tablenote}
\end{symtable}


\begin{symtable}[TRF]{\TRF\ Letter-like Symbols}
\idxboth{letter-like}{symbols}
\label{trf-letter-like}
\begin{tabular}{ll@{\hspace*{3em}}ll}
\X\e & \X\im \\
\end{tabular}
\end{symtable}


\begin{symtable}[MDES]{\MDES\ Letter-like Symbols}
\idxboth{letter-like}{symbols}
\label{mdes-letter-like}
\begin{tabular}{*2{ll}}
\K[\MDESin]\in                     & \K[\MDESowns]\owns           \\
\K[\MDESnotin]\notin               & \K[\MDESsmallin]\smallin     \\
\K[\MDESnotsmallin]\notsmallin     & \K[\MDESsmallowns]\smallowns \\
\K[\MDESnotsmallowns]\notsmallowns &                              \\
\end{tabular}

\bigskip

\begin{tablenote}
\ifAMS
  The \MDES\ package additionally provides versions of each of the
  letter-like symbols shown in Table~\vref{ams-letter-like}.
\else
  The \MDES\ package additionally provides versions of each of the
  \AMS\ letter-like symbols.
\fi
\end{tablenote}
\end{symtable}


\begin{symtable}[FGE]{\FGE\ Letter-like Symbols}
\idxboth{letter-like}{symbols}
\idxboth{Frege logic}{symbols}
\label{fge-letter-like}
\begin{tabular}{*3{ll@{\hspace*{3em}}}ll}
\K\fgeA      & \K\fgeeszett & \K\fgeleftB  & \K\fgeU \\
\K\fgec      & \K\fgeF      & \K\fgeleftC  &         \\
\K\fged      & \K\fgef      & \K\fgerightB &         \\
\K\fgee      & \K\fgelb$^*$ & \K\fges      &         \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  The \FGE\ package defines \cmdI[\fgelb]{\fgeeta},
  \cmdI[\fgelb]{\fgeN}, and \cmdI[\fgelb]{\fgeoverU} as synonyms for
  \cmd{\fgelb}.
\end{tablenote}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Delimiters}
\index{delimiters}
\label{ams-del}
\begin{tabular}{*2{ll}}
\X\ulcorner & \X\urcorner \\
\X\llcorner & \X\lrcorner
\end{tabular}
\end{symtable}


\begin{symtable}[ST]{\ST\ Delimiters}
\index{delimiters}
\label{st-del}
\begin{tabular}{*4{ll}}
\X\Lbag          &\X\Rbag          &\X\lbag          &\X\rbag    \\
\X\llceil        &\X\rrceil        &\X\llfloor       &\X\rrfloor \\
\X\llparenthesis &\X\rrparenthesis
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Delimiters}
\index{delimiters}
\label{abx-del}
\begin{tabular}{ll@{\hspace*{2em}}ll}
\X[\ABXlcorners]\lcorners & \X[\ABXrcorners]\rcorners \\[3ex]
\X[\ABXulcorner]\ulcorner & \X[\ABXurcorner]\urcorner \\
\X[\ABXllcorner]\llcorner & \X[\ABXlrcorner]\lrcorner \\
\end{tabular}
\end{symtable}


\begin{symtable}[NATH]{\NATH\ Delimiters}
\index{delimiters}
\label{nath-del}
\begin{tabular}{ll@{\hspace*{3em}}ll}
\X\niv & \X\vin \\
\end{tabular}
\end{symtable}


\begin{symtable}{Variable-sized Delimiters}
\index{delimiters}
\index{delimiters>variable-sized}
\label{dels}
\renewcommand{\arraystretch}{1.75}  % Keep tall symbols from touching.
\begin{tabular}{lll@{\qquad}lll@{\hspace*{1.5cm}}lll@{\qquad}lll}
\N\downarrow & \N\Downarrow & \N{[}           & \N[\magicrbrack]{]} \\
\N\langle    & \N\rangle    & \Np[\vert][\magicvertname]|
                                              & \Np[\Vert][\magicVertname]\| \\
\N\lceil     & \N\rceil     & \N\uparrow      & \N\Uparrow          \\
\N\lfloor    & \N\rfloor    & \N\updownarrow  & \N\Updownarrow      \\
\N(          & \N)          & \Np\{           & \Np\}               \\
\N/          & \N\backslash                                         \\
\end{tabular}

\bigskip
\begin{tablenote}
  When used with \cmd{\left} and \cmd{\right}, these symbols expand to
  the height of the enclosed math expression.  Note that \cmdX{\vert}
  is a synonym for \verb+|+, and \cmdX{\Vert} is a synonym for
  \verb+\|+.

  $\varepsilon$-\TeX{}\index{e-tex=$\varepsilon$-\TeX} provides a
  \cmd{\middle} analogue to \cmd{\left} and \cmd{\right}.
  \cmd{\middle} can be used, for example, to make an internal ``$|$''
  expand to the height of the surrounding \cmd{\left} and \cmd{\right}
  symbols.  (This capability is commonly needed when typesetting
  adjacent bras\index{bra} and kets\index{ket} in Dirac\index{Dirac
  notation} notation: ``$\langle\phi\vert\psi\rangle$'').  A similar
  effect can be achieved in conventional \latex using the
  \pkgname{braket} package.
\end{tablenote}
\end{symtable}


\begin{symtable}{Large, Variable-sized Delimiters}
\index{delimiters}
\index{delimiters>variable-sized}
\label{ldels}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{*3{lll@{\qquad}}lll}
\Y\lmoustache & \Y\rmoustache & \Y\lgroup    & \Y\rgroup \\
\Y\arrowvert  & \Y\Arrowvert  & \Y\bracevert
\end{tabular}

\bigskip
\begin{tablenote}
  These symbols \emph{must} be used with \cmd{\left} and \cmd{\right}.
  The \ABX\ package, however, redefines
  \cmdI[$\string\big\string\lgroup$]{\lgroup} and
  \cmdI[$\string\big\string\rgroup$]{\rgroup} so that those symbols
  can work without \cmd{\left} and \cmd{\right}.
\end{tablenote}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Variable-sized Delimiters}
\index{delimiters}
\index{delimiters>variable-sized}
\label{ams-var-del}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{lll@{\qquad}lll}
\N\lvert & \N\rvert \\
\N\lVert & \N\rVert \\
\end{tabular}

\bigskip
\begin{tablenote}
  According to the \texttt{amsmath}
  documentation~\cite{AMS1999:amsmath}, the preceding symbols are
  intended to be used as delimiters (e.g.,~as in ``$\lvert -z
  \rvert$'') while the \cmdX{\vert} and \cmdX{\Vert} symbols
  (Table~\vref{dels}) are intended to be used as operators (e.g.,~as
  in ``$p \vert q$'').
\end{tablenote}
\end{symtable}


\begin{symtable}[ST]{\ST\ Variable-sized Delimiters}
\index{delimiters}
\index{delimiters>variable-sized}
\label{st-var-del}
\begin{tabular}{lll@{\qquad}lll}
\N\llbracket & \N\rrbracket
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Variable-sized Delimiters}
\index{delimiters}
\index{delimiters>variable-sized}
\idxboth{wavy-line}{delimiters}
\label{abx-var-dels}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{lll@{\qquad}lll}
\N[\ABXldbrack]\ldbrack     & \N[\ABXrdbrack]\rdbrack  \\
\Nbig[\ABXlfilet]\lfilet    & \Nbig[\ABXrfilet]\rfilet \\
\N[\ABXthickvert]\thickvert & \N[\ABXvvvert]\vvvert    \\
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Variable-sized Delimiters}
\index{delimiters}
\index{delimiters>variable-sized}
\idxboth{wavy-line}{delimiters}
\label{mns-var-dels}
\renewcommand{\arraystretch}{3}  % Keep tall symbols from touching.
\begin{tabular}{lll@{\qquad}lll@{\hspace*{3em}}lll@{\qquad}lll}

\KNbig[\MNStlceil][\MNSdlceil]\lceil    & \KNbig[\MNStrceil][\MNSdrceil]\rceil    & \KNbig[\MNStulcorner][\MNSdulcorner]\ulcorner    & \KNbig[\MNSturcorner][\MNSdurcorner]\urcorner    \\
\KNbig[\MNStlfloor][\MNSdlfloor]\lfloor & \KNbig[\MNStrfloor][\MNSdrfloor]\rfloor & \KNbig[\MNStllcorner][\MNSdllcorner]\llcorner    & \KNbig[\MNStlrcorner][\MNSdlrcorner]\lrcorner    \\
\KNbig[\MNStlwavy][\MNSdlwavy]\lwavy    & \KNbig[\MNStrwavy][\MNSdrwavy]\rwavy    & \KNbig[\MNStlangle][\MNSdlangle]\langle          & \KNbig[\MNStrangle][\MNSdrangle]\rangle          \\
\KNbig[\MNStlWavy][\MNSdlWavy]\lWavy    & \KNbig[\MNStrWavy][\MNSdrWavy]\rWavy    & \KNbig[\MNStlanglebar][\MNSdlanglebar]\langlebar & \KNbig[\MNStranglebar][\MNSdranglebar]\ranglebar \\
\KNbig[\MNStlparen][\MNSdlparen](       & \KNbig[\MNStrparen][\MNSdrparen])       & \KNbig[\MNStlgroup][\MNSdlgroup]\lgroup          & \KNbig[\MNStrgroup][\MNSdrgroup]\rgroup          \\
\KNbig[\MNStlsem][\MNSdlsem]\lsem       & \KNbig[\MNStrsem][\MNSdrsem]\rsem       & \KNbig[\MNStllangle][\MNSdllangle]\llangle       & \KNbig[\MNStrrangle][\MNSdrrangle]\rrangle       \\
\KNbig[\MNStlmoustache][\MNSdlmoustache]\lmoustache & \KNbig[\MNStrmoustache][\MNSdrmoustache]\rmoustache & \KNbig[\MNStlbrace][\MNSdlbrace]\lbrace & \KNbig[\MNStrbrace][\MNSdrbrace]\rbrace \\
\KNbig[\MNStslash][\MNSdslash]/         & \KNbig[\MNStbackslash][\MNSdbackslash]\backslash & \KNbig[\MNStless][\MNSdless]<           & \KNbig[\MNStgreater][\MNSdgreater]>              \\
\KNbig[\MNStlbracket][\MNSdlbracket]{[} & \KNbig[\MNStrbracket][\MNSdrbracket]{]} & \KNbig[\MNStullcorner][\MNSdullcorner]\ullcorner & \KNbig[\MNStulrcorner][\MNSdulrcorner]\ulrcorner \\
\KNbig[\MNStvert][\MNSdvert]|           & \KNbig[\MNStVert][\MNSdVert]\|          & \KNbig[\MNStbracevert][\MNSdbracevert]\bracevert \\
\KNbig[\MNStarrowvert][\MNSdarrowvert]\arrowvert & \KNbig[\MNStArrowvert][\MNSdArrowvert]\Arrowvert \\
\end{tabular}

\bigskip

\begin{tablenote}
  \cmdX{\vert} is a synonym for \verb+|+.  \cmdX{\Vert} is a synonym
  for \verb+\|+.  \cmdX{\mid} and \verb|\mvert| produce the same
  symbol as \cmdX{\vert} but designated as math relations instead of
  ordinals.  \verb|\divides| produces the same symbol as \cmdX{\vert}
  but designated as a binary operator instead of an ordinal.
  \cmdX{\parallel} and \verb|\mVert| produce the same symbol as
  \cmdX{\Vert} but designated as math relations instead of ordinals.
\end{tablenote}
\end{symtable}


\begin{symtable}[MDES]{\MDES\ Variable-sized Delimiters}
\index{delimiters}
\index{delimiters>variable-sized}
\idxboth{wavy-line}{delimiters}
\label{mdes-var-dels}
\renewcommand{\arraystretch}{2.75}  % Keep tall symbols from touching.
\begin{tabular}{lll@{\qquad}lll}
\KNbig[\MDESleftwavelet][\MDESleftwave]\leftwave &
\KNbig[\MDESleftwavelet][\MDESleftwave]\rightwave \\
\KNbig[\MDESleftevawlet][\MDESleftevaw]\leftevaw &
\KNbig[\MDESleftevawlet][\MDESleftevaw]\rightevaw \\
\end{tabular}

\bigskip

\begin{tablenote}
  The definitions of these symbols include a preceding \cmd{\left} or
  \cmd{\right}.  It is therefore an error to specify \cmd{\left} or
  \cmd{\right} explicitly.  The internal, ``primitive'' versions of
  these symbols are called \cmdI[\MDESleftwave]{\lwave},
  \cmdI[\MDESleftwave]{\rwave}, \cmdI[\MDESleftevaw]{\levaw}, and
  \cmdI[\MDESleftevaw]{\revaw}.
\end{tablenote}
\end{symtable}


\begin{symtable}[NATH]{\NATH\ Variable-sized Delimiters (Double)}
\index{delimiters}
\index{delimiters>variable-sized}
\label{nath-var-dels-double}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{lll@{\qquad}lll}
\Nn[\langle]\lAngle  & \Nn[\rangle]\rAngle      \\
\Nn[{[}]\lBrack      & \Nn[\magicrbrack]\rBrack \\
\Nn[\lceil]\lCeil    & \Nn[\rceil]\rCeil        \\
\Nn[\lfloor]\lFloor  & \Nn[\rfloor]\rFloor      \\
\Nn[\vert]\lVert$^*$ & \Nn[\vert]\rVert$^*$     \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  \NATH\ redefines all of the above to include implicit \cmd{\left}
  and \cmd{\right} commands.  Hence, separate \verb+\lVert+ and
  \verb+\rVert+ commands are needed to disambiguate whether
  ``\verb+|+'' is a left or right delimiter.
\end{tablenote}

\bigskip
\begin{tablenote}
  All of the symbols in Table~\ref{nath-var-dels-double} can also be
  expressed using the \cmd{\double} macro.  See the \NATH\
  documentation for examples and additional information.
\end{tablenote}
\end{symtable}


\begin{symtable}[NATH]{\NATH\ Variable-sized Delimiters (Triple)}
\index{delimiters}
\index{delimiters>variable-sized}
\label{nath-var-dels-triple}
\renewcommand{\arraystretch}{2.5}  % Keep tall symbols from touching.
\begin{tabular}{lll@{\qquad}lll}
\Nnt{}[\langle]<     & \Nnt{}[\rangle]>         \\
\Nnt{}[{[}]{[}       & \Nnt{}[\magicrbrack]{]}  \\
\Nnt{l}[\vert]|$^*$  & \Nnt{r}[\vert]|$^*$      \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  Similar to \verb+\lVert+ and \verb+\rVert+ in
  Table~\ref{nath-var-dels-double}, \cmd{\ltriple} and \cmd{\rtriple}
  must be used instead of \cmd{\triple} to disambiguate whether
  ``\verb+|+'' is a left or right delimiter.
\end{tablenote}

\bigskip
\begin{tablenote}
  Note that \cmd{\triple}---and the corresponding \cmd{\double}---is
  actually a macro that takes a delimiter as an argument.
\end{tablenote}
\end{symtable}


\begin{symtable}{\TC\ Text-mode Delimiters}
\index{delimiters}
\index{delimiters>text-mode}
\label{tc-delimiters}
\begin{tabular}{*2{ll}}
\K\textlangle    & \K\textrangle    \\
\K\textlbrackdbl & \K\textrbrackdbl \\
\K\textlquill    & \K\textrquill    \\
\end{tabular}
\end{symtable}


\begin{symtable}[METRE]{\METRE\ Text-mode Delimiters}
\index{delimiters}
\index{delimiters>text-mode}
\label{metre-delimiters}
\begin{tabular}{*2{ll}@{\hspace*{3em}}*2{ll}}
\K\alad  & \K\Alad  & \K\crux    & \K\Crux    \\
\K\alas  & \K\Alas  & \K\quadrad & \K\Quadrad \\
\K\angud & \K\Angud & \K\quadras & \K\Quadras \\
\K\angus & \K\Angus                           \\
\end{tabular}
\end{symtable}


\begin{symtable}{Math-mode Accents}
\index{accents}
\index{tilde}
\label{math-accents}
\begin{tabular}{*4{ll}}
\W\acute{a}    & \W\check{a}    & \W\grave{a}    & \W\tilde{a} \\
\W\bar{a}      & \W\ddot{a}     & \W\hat{a}      & \W\vec{a}   \\
\W\breve{a}    & \W\dot{a}      & \W\mathring{a}               \\
\end{tabular}

\bigskip

\begin{tablenote}
  \index{dotless i=dotless $i~(\imath)$>math mode}
  \index{dotless j=dotless $j~(\jmath)$>math mode}
  Also note the existence of \cmdX{\imath} and \cmdX{\jmath}, which
  produce dotless versions of ``\textit{i}'' and ``\textit{j}''.  (See
  Table~\vref{ord}.)  These are useful when the accent is supposed to
  replace the dot.  For example, ``\verb|\hat{\imath}|'' produces a
  correct ``$\,\hat{\imath}\,$'', while ``\verb|\hat{i}|'' would yield
  the rather odd-looking ``\,$\hat{i}\,$''.
\end{tablenote}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Math-mode Accents}
\index{accents}
\label{ams-math-accents}
\begin{tabular}{ll@{\hspace*{2em}}ll}
\W\dddot{a}    & \W\ddddot{a} \\
\end{tabular}

\bigskip

\begin{tablenote}
  These accents are also provided by the \ABX\ and \pkgname{accents}
  packages and are redefined by the \MDOTS\ package if the
  \pkgname{amsmath} and \pkgname{amssymb} packages have previously
  been loaded.  All of the variations except for the original \AMS\
  ones tighten the space between the dots%
\ifMDOTS
  ~(from~$\dddot{a}$ to~$\MDOTSdddot{a}$)%
\else
  \ifABX
    ~(from~$\dddot{a}$ to~$\ABXdddot{a}$)%
  \else
    \ifACCENTS
      ~(from~$\dddot{a}$ to~$\ACCENTSdddot{a}$)%
    \fi
  \fi
\fi
.  The \ABX\ and \MDOTS\ versions also function properly
within subscripts and superscripts%
\ifMDOTS
  ~($x^{\MDOTSdddot{a}}$ instead of~$x^{\dddot{a}}$)
\else
  \ifABX
    ~($x^{\ABXdddot{a}}$ instead of~$x^{\dddot{a}}$)
  \fi
\fi
.
\end{tablenote}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Math-mode Accents}
\index{accents}
\label{mns-math-accents}
\begin{tabular}{ll}
\W[\MNSvec]\vec{a} \\
\end{tabular}
\end{symtable}


\begin{symtable}[FGE]{\FGE\ Math-mode Accents}
\index{accents}
\label{fge-math-accents}
\begin{tabular}{ll}
\Q\spirituslenis$^*$ \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  When \FGE\ is passed the \optname{fge}{crescent} option,
  \cmdI[\string\blackacc{\string\spirituslenisB}]{\spirituslenis}
  instead uses a crescent accent as in~``\,\spirituslenisB{a}\,''.
\end{tablenote}
\end{symtable}


\begin{symtable}[YH]{\YH\ Math-mode Accents}
\index{accents}
\label{yhmath-accents}
\begin{tabular}{ll}
\W\ring{a}
\end{tabular}

\bigskip

\begin{tablenote}
  This symbol is largely obsolete, as standard \latexE has supported
  \cmdI[$\string\blackacc{\string\mathring}$]{\mathring} since
  June,~1998~\cite{ltnews09}.
\end{tablenote}
\end{symtable}


\begin{symtable}{Extensible Accents}
\index{accents}
\idxboth{extensible}{accents}
\idxboth{extensible}{arrows}
\index{tilde}
\index{tilde>extensible}
\index{extensible tildes}
\index{symbols>extensible}
\label{extensible-accents}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{*4l}
\W\widetilde{abc}$^*$         & \W\widehat{abc}$^*$    \\
\W\overleftarrow{abc}$^\dag$  & \W\overrightarrow{abc}$^\dag$ \\
\W\overline{abc}              & \W\underline{abc}      \\
\W\overbrace{abc}             & \W\underbrace{abc}     \\[5pt]
\W\sqrt{abc}$^\ddag$                                   \\
\end{tabular}

\bigskip

\begin{tablenote}
  \def\longdivsign{%
    \ensuremath{\overline{\vphantom{)}%
      \hbox{\smash{\raise3.5\fontdimen8\textfont3\hbox{$)$}}}%
      abc}}}

  \index{long division|(}
  \index{division|(}
  \index{polynomial division|(}

  As demonstrated in a 1997 TUGboat\index{TUGboat} article about
  typesetting long-division problems~\cite{Gibbons:longdiv}, an
  extensible long-division sign (``\,\longdivsign\,'') can be faked by
  putting a ``\verb|\big)|'' in a \texttt{tabular} environment with an
  \verb|\hline| or \verb|\cline| in the preceding row.  The article
  also presents a piece of code (uploaded to CTAN\idxCTAN{} as
  \texttt{longdiv.tex}%
  \index{longdiv=\textsf{longdiv} (package)}%
  \index{packages>\textsf{longdiv}}) that automatically solves and
  typesets---by putting an \cmdW{\overline} atop ``\verb|\big)|'' and
  the desired text---long-division problems.  See also the
  \pkgname{polynom} package, which automatically solves and typesets
  polynomial-division problems in a similar manner.

  \index{long division|)}
  \index{division|)}
  \index{polynomial division|)}
\end{tablenote}

\bigskip

\begin{tablenote}[*]
  These symbols are made more extensible by the \MNS\ package and even
  more extensible by the \YH\ package.
\end{tablenote}

\bigskip

\begin{tablenote}[\dag]
  If you're looking for an extensible \emph{diagonal} line or arrow to
  be used for canceling or reducing mathematical
  subexpressions\index{arrows>diagonal, for reducing subexpressions}
\ifhavecancel
  (e.g.,~``$\cancel{x + -x}$'' or ``$\cancelto{5}{3+2}\quad$'')
\fi
  then consider using the \pkgname{cancel} package.
\end{tablenote}

\bigskip

\begin{tablenote}[\ddag]
  With an optional argument, \verb|\sqrt| typesets nth roots.  For
  example, ``\verb|\sqrt[3]{abc}|'' produces~``$\!\sqrt[3]{abc}$\,''
  and ``\verb|\sqrt[n]{abc}|'' produces~``$\!\sqrt[n]{abc}$\,''.
\end{tablenote}
\end{symtable}


\begin{symtable}[ORA]{\ORA\ Extensible Accents}
\index{accents}
\idxboth{extensible}{accents}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{ora-extensible-accents}
\begin{tabular}{ll}
\W\Overrightarrow{abc} \\
\end{tabular}
\end{symtable}


\begin{symtable}[YH]{\YH\ Extensible Accents}
\idxboth{extensible}{accents}
\index{symbols>extensible}
\label{yhmath-extensible-accents}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{*4l}
\W\wideparen{abc} & \W\widetriangle{abc} \\[5pt]
\W\widering{abc}                         \\
\end{tabular}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Extensible Accents}
\idxboth{extensible}{accents}
\index{symbols>extensible}
\label{ams-extensible-accents}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ll@{\qquad}ll}
\W\overleftrightarrow{abc}  & \W\underleftrightarrow{abc} \\
\W\underleftarrow{abc}      & \W\underrightarrow{abc}     \\[2ex]
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Extensible Accents}
\idxboth{extensible}{accents}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{mns-extensible-accents}
\renewcommand{\arraystretch}{1.75}
\begin{tabular}{ll@{\qquad}ll}
\W[\MNSoverbrace]\overbrace{abc}             & \W[\MNSunderbrace]\underbrace{abc}             \\
\W[\MNSovergroup]\overgroup{abc}             & \W[\MNSundergroup]\undergroup{abc}             \\
\W[\MNSoverlinesegment]\overlinesegment{abc} & \W[\MNSunderlinesegment]\underlinesegment{abc} \\
\W[\MNSoverleftharpoon]\overleftharpoon{abc} & \W[\MNSoverrightharpoon]\overrightharpoon{abc} \\
\W[\MNSwidehat]\widehat{abc}                 & \W[\MNSwidetilde]\widetilde{abc}               \\
\W[\MNSwideparen]\wideparen{abc}                                                              \\
\end{tabular}
\end{symtable}


\begin{symtable}[MTOOLS]{\MTOOLS\ Extensible Accents}
\idxboth{extensible}{accents}
\index{symbols>extensible}
\label{mathtools-extensible-accents}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ll@{\qquad}ll}
\W[\MTOOLSoverbrace]\overbrace{abc}         & \W[\MTOOLSunderbrace]\underbrace{abc}         \\
\W[\MTOOLSoverbracket]\overbracket{abc}$^*$ & \W[\MTOOLSunderbracket]\underbracket{abc}$^*$ \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \verb|\overbracket| and \verb|\underbracket| accept optional
  arguments that specify the bracket height and thickness.
  \seedocs{\MTOOLS}.
\end{tablenote}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Extensible Accents}
\index{accents}
\idxboth{extensible}{accents}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{abx-extensible-accents}
\renewcommand{\arraystretch}{1.75}
\begin{tabular}{ll@{\qquad}ll}
\W[\ABXoverbrace]\overbrace{abc}   & \W[\ABXwidebar]\widebar{abc}     \\
\W[\ABXovergroup]\overgroup{abc}   & \W[\ABXwidecheck]\widecheck{abc} \\
\W[\ABXunderbrace]\underbrace{abc} & \W[\ABXwideparen]\wideparen{abc} \\
\W[\ABXundergroup]\undergroup{abc} & \W[\ABXwidering]\widering{abc}   \\
\W[\ABXwidearrow]\widearrow{abc}                                      \\
\end{tabular}

\bigskip

\begin{tablenote}
  The braces shown for \verb|\overbrace| and \verb|\underbrace| appear
  in their minimum size.  They can expand arbitrarily wide, however.
\end{tablenote}
\end{symtable}


\begin{symtable}[ESV]{\ESV\ Extensible Accents}
\index{accents}
\idxboth{extensible}{accents}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{esv-extensible-accents}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ll}
\VV{a}{abc} \\
\VV{b}{abc} \\
\VV{c}{abc} \\
\VV{d}{abc} \\
\VV{e}{abc} \\
\VV{f}{abc} \\
\VV{g}{abc} \\
\VV{h}{abc} \\
\end{tabular}

\bigskip

\begin{tablenote}
  \ESV\ also defines a \verb|\vv*| macro which is used to typeset
  arrows over vector variables with subscripts.  \seedocs{\ESV}.
\end{tablenote}
\end{symtable}


\begin{symtable}[UTILD]{\UTILD\ Extensible Accents}
\index{accents}
\idxboth{extensible}{accents}
\index{tilde>extensible}
\index{extensible tildes}
\index{tilde}
\index{symbols>extensible}
\label{utild-extensible-accents}
\begin{tabular}{ll}
\W\utilde{abc} \\
\end{tabular}

\bigskip

\begin{tablenote}
  Because \verb|\utilde| is based on \verb|\widetilde|%
 \index{widetilde=\verb+\widetilde+ ($\blackacc{\widetilde}$)}
 it is also made more extensible by the \YH\ package.
\end{tablenote}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Extensible Arrows}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{ams-extensible-arrows}
\begin{tabular}{ll@{\qquad}ll}
\W\xleftarrow{abc} & \W\xrightarrow{abc} \\
\end{tabular}
\end{symtable}


\begin{symtable}[MTOOLS]{\MTOOLS\ Extensible Arrows}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{mathtools-extensible-arrows}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ll@{\qquad}ll}
\W[\MTOOLSxhookleftarrow]\xhookleftarrow{abc}     & \W[\MTOOLSxleftrightharpoons]\xleftrightharpoons{abc} \\
\W[\MTOOLSxhookrightarrow]\xhookrightarrow{abc}   & \W[\MTOOLSxmapsto]\xmapsto{abc}                       \\
\W[\MTOOLSxLeftarrow]\xLeftarrow{abc}             & \W[\MTOOLSxRightarrow]\xRightarrow{abc}               \\
\W[\MTOOLSxleftharpoondown]\xleftharpoondown{abc} & \W[\MTOOLSxrightharpoondown]\xrightharpoondown{abc}   \\
\W[\MTOOLSxleftharpoonup]\xleftharpoonup{abc}     & \W[\MTOOLSxrightharpoonup]\xrightharpoonup{abc}       \\
\W[\MTOOLSxleftrightarrow]\xleftrightarrow{abc}   & \W[\MTOOLSxrightleftharpoons]\xrightleftharpoons{abc} \\
\W[\MTOOLSxLeftrightarrow]\xLeftrightarrow{abc}   &                                                       \\
\end{tabular}
\end{symtable}


\begin{symtable}[CHEMA]{\CHEMA\ Extensible Arrows}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{chemarr-extensible-arrows}
\begin{tabular}{ll}
\W\xrightleftharpoons{abc} \\
\end{tabular}
\end{symtable}


\begin{symtable}[CHEMB]{\CHEMB\ Extensible Arrows}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{chemarrow-extensible-arrows}
\renewcommand{\arraystretch}{4}  % Keep upper and lower strings from touching.
\begin{tabular}{ll@{\qquad}ll}
\Wul\autoleftarrow{abc}{def}         & \Wul\autorightarrow{abc}{def}        \\
\Wul\autoleftrightharpoons{abc}{def} & \Wul\autorightleftharpoons{abc}{def} \\
\end{tabular}

\bigskip

\begin{tablenote}
  In addition to the symbols shown above, \CHEMB\ also provides
  \cmd{\larrowfill}, \cmd{\rarrowfill}, \cmd{\leftrightharpoonsfill},
  and \cmd{\rightleftharpoonsfill} macros.  Each of these takes a
  length argument and produces an arrow of the specified length.
\end{tablenote}
\end{symtable}


\begin{symtable}[TRF]{\TRF\ Extensible Arrows}
\index{accents}
\index{transforms}
\index{symbols>extensible}
\label{trf-arrows}
\begin{tabular}{ll@{\hspace*{2em}}ll}
\W\dft{a} & \W\DFT{a} \\
\end{tabular}
\end{symtable}


\begin{symtable}[EXTAR]{\EXTAR\ Extensible Arrows}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{extarrows-extensible-arrows}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ll@{\qquad}ll}
\W[\EXTARxLeftrightarrow]\xLeftrightarrow{abc} & \W\xLongleftrightarrow{abc} \\
\W[\EXTARxleftrightarrow]\xleftrightarrow{abc} & \W\xlongleftrightarrow{abc} \\
\W\xlongequal{abc}                             & \W\xLongrightarrow{abc}     \\
\W\xLongleftarrow{abc}                         & \W\xlongrightarrow{abc}     \\
\W\xlongleftarrow{abc}                         &                             \\
\end{tabular}
\end{symtable}


\begin{symtable}[XPFEIL]{\XPFEIL\ Extensible Arrows}
\idxboth{extensible}{arrows}
\index{symbols>extensible}
\label{extpfeil-extensible-arrows}
\renewcommand{\arraystretch}{1.5}
\begin{tabular}{ll@{\qquad}ll}
\W[\XPFEILxlongequal]\xlongequal{abc} & \W[\XPFEILxmapsto]\xmapsto{abc} \\
\W\xtwoheadleftarrow{abc}             & \W\xtwoheadrightarrow{abc}      \\
\end{tabular}

\bigskip

\begin{tablenote}
  The \XPFEIL\ package also provides a \cmd{\newextarrow} command to
  help you define your own extensible arrow symbols.  \seedocs{\XPFEIL}.
\end{tablenote}
\end{symtable}


\begin{symtable}[HOPO]{\HOPO\ Non-commutative Division Symbols}
\idxboth{extensible}{accents}
\idxboth{non-commutative}{division}
\index{symbols>non-commutative division}
\label{holtpolt}
\begin{tabular}{ll@{\qquad}ll}
\Wul\holter{abc}{def} & \Wul\polter{abc}{def} \\
\end{tabular}
\end{symtable}


\begin{symtable}{Dots}
\idxboth{dot}{symbols}
\index{dots (ellipses)} \index{ellipses (dots)}
\label{dots}
\begin{tabular}{*{3}{ll@{\hspace*{1.5cm}}}ll}
\X\cdotp & \X\colon$^*$    & \X\ldotp & \X\vdots$^\dag$ \\
\X\cdots & \X\ddots$^\dag$ & \X\ldots                   \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  While ``\texttt{:}'' is valid in math mode, \cmd{\colon} uses
  different surrounding spacing.  See Section~\ref{math-spacing} and the
  Short Math Guide for \latex~\cite{Downes:smg} for more information on
  math-mode spacing.
\end{tablenote}

\bigskip

\begin{tablenote}[\dag]
  \ifMDOTS
    \let\mdcmdX=\cmdX
  \else
    \let\mdcmdX=\cmd
  \fi
  The \MDOTS\ package redefines \cmdX{\ddots} and \cmdX{\vdots} to
  make them scale properly with font size.  (They normally scale
  horizontally but not vertically.)  \mdcmdX{\fixedddots} and
  \mdcmdX{\fixedvdots} provide the original, fixed-height
  functionality of \latexE's \cmdX{\ddots} and \cmdX{\vdots} macros.
\end{tablenote}
\end{symtable}


\begin{symtable}[AMS]{\AMS\ Dots}
\idxboth{dot}{symbols}
\index{dots (ellipses)} \index{ellipses (dots)}
\label{ams-dots}
\begin{tabular}{*{2}{ll@{\hspace*{1.5cm}}}ll}
\X\because$^*$   & \X[\cdots]\dotsi & \X\therefore$^*$ \\
\X[\cdots]\dotsb & \X[\cdots]\dotsm &                  \\
\X[\ldots]\dotsc & \X[\ldots]\dotso &                  \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \cmdX{\because} and \cmdX{\therefore} are defined as binary
  relations and therefore also appear in Table~\vref{ams-rel}.
\end{tablenote}

\bigskip

\begin{tablenote}
  The \AMS\ \verb*|\dots|\hbox to 0.75em{\hrulefill} symbols are named
  according to their intended usage: \cmdI[$\string\cdots$]{\dotsb}
  between pairs of binary operators/relations,
  \cmdI[$\string\ldots$]{\dotsc} between pairs of commas,
  \cmdI[$\string\cdots$]{\dotsi} between pairs of integrals,
  \cmdI[$\string\cdots$]{\dotsm} between pairs of multiplication
  signs, and \cmdI[$\string\ldots$]{\dotso} between other symbol
  pairs.
\end{tablenote}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Dots}
\idxboth{dot}{symbols}
\label{wasy-dots}
\begin{tabular}{ll}
\K\wasytherefore
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Dots}
\idxboth{dot}{symbols}
\index{dots (ellipses)} \index{ellipses (dots)}
\label{mns-dots}
\begin{tabular}{*{2}{ll@{\hspace*{1.5cm}}}ll}
\K[\MNScdot]\cdot                   & \K[\MNShdotdot]\hdotdot               & \K[\MNSudots]\udots             \\
\K[\MNSddotdot]\ddotdot             & \K[\MNShdots]\hdots                   & \K[\MNSuptherefore]\uptherefore \\
\K[\MNSddots]\ddots                 & \K[\MNSlefttherefore]\lefttherefore   & \K[\MNSvdotdot]\vdotdot         \\
\K[\MNSdiamonddots]\diamonddots     & \K[\MNSrighttherefore]\righttherefore & \K[\MNSvdots]\vdots             \\
\K[\MNSdowntherefore]\downtherefore & \K[\MNSsquaredots]\squaredots         &                                 \\
\K[\MNSfivedots]\fivedots           & \K[\MNSudotdot]\udotdot               &                                 \\
\end{tabular}

\bigskip

\begin{tablenote}
  \MNS\ defines \cmdI[\MNSuptherefore]{\therefore} as
  \cmdI[\MNSuptherefore]{\uptherefore} and
  \cmdI[\MNSdowntherefore]{\because} as
  \cmdI[\MNSdowntherefore]{\downtherefore}.  Furthermore,
  \cmdI[\MNScdot]{\cdotp} and \cmdI[\MNSvdotdot]{\colon} produce the
  same glyphs as \cmdI[\MNScdot]{\cdot} and
  \cmdI[\MNSvdotdot]{\vdotdot} respectively but serve as \tex\ math
  punctuation (class~6 symbols) instead of \tex\ binary operators
  (class~2).
\end{tablenote}

\bigskip

\begin{tablenote}
  All of the above except \cmdI[\MNShdots]\hdots\ and
  \cmdI[\MNSvdots]\vdots\ are defined as binary operators and
  therefore also appear in Table~\vref{mns-bin}.  Also, unlike most of
  the other dot symbols in this document, \MNS's dots are defined as
  single characters instead of as composites of multiple single-dot
  characters.
\end{tablenote}
\end{symtable}


\begin{symtable}[MDOTS]{\MDOTS\ Dots}
\index{dots (ellipses)} \index{ellipses (dots)}
\idxboth{dot}{symbols}
\label{mathdots-dots}
\begin{tabular}{ll}
\X[\MDOTSiddots]\iddots
\end{tabular}
\end{symtable}


\begin{symtable}[YH]{\YH\ Dots}
\index{dots (ellipses)} \index{ellipses (dots)}
\idxboth{dot}{symbols}
\label{yhmath-dots}
\begin{tabular}{ll}
\X\adots
\end{tabular}
\end{symtable}


\begin{symtable}{\MC\ Math Symbols}
\label{mc-math}
\begin{tabular}{*3{ll}}
\K[\textcelsius]\tccentigrade & \K[\textohm]\tcohm                       & \K[\textperthousand]\tcperthousand \\
\K[\textmu]\tcmu              & \K[\textpertenthousand]\tcpertenthousand &                                    \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Mayan Digits}
\index{digits>Mayan}
\label{abx-mayan}
\begin{tabular}{*2{ll@{\qquad}}ll}
  \Tm{0} & \Tm{2} & \Tm{4} \\
  \Tm{1} & \Tm{3} & \Tm{5} \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Digits}
\index{digits}
\label{marv-digits}
\begin{tabular}{*4{ll@{\qquad}}ll}
\K\MVZero  & \K\MVTwo   & \K\MVFour  & \K\MVSix   & \K\MVEight \\
\K\MVOne   & \K\MVThree & \K\MVFive  & \K\MVSeven & \K\MVNine  \\
\end{tabular}
\end{symtable}


\begin{symtable}[FGE]{\FGE\ Digits}
\index{fge-digits}
\idxboth{Frege logic}{symbols}
\label{fge-digits}
\begin{tabular}{ll@{\qquad}ll}
\K\fgestruckzero & \K\fgestruckone \\
\end{tabular}
\end{symtable}


\begin{symtable}{Miscellaneous \latexE{} Math Symbols}
\idxboth{miscellaneous}{symbols}
\index{card suits}
\index{diamonds (suit)}
\index{hearts (suit)}
\index{clubs (suit)}
\index{spades (suit)}
\idxboth{musical}{symbols}
\index{dots (ellipses)}
\index{ellipses (dots)}
\index{null set}
\index{dotless i=dotless $i~(\imath)$>math mode}
\index{dotless j=dotless $j~(\jmath)$>math mode}
\index{angles}
\label{ord}
\ifAMS
  \def\AMSfn{$^\ddag$}
\else
  \def\AMSfn{}
\fi
\begin{tabular}{*4{ll}}
\X\aleph          & \X\Diamond$^*$    & \X\infty   & \X\prime     \\
\X\angle          & \X\diamondsuit    & \X\mho$^*$ & \X\sharp     \\
\X\backslash      & \X\emptyset\AMSfn & \X\nabla   & \X\spadesuit \\
\X\Box$^{*,\dag}$ & \X\flat           & \X\natural & \X\surd      \\
\X\clubsuit       & \X\heartsuit      & \X\neg     & \X\triangle  \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  Not predefined in \latexE.  Use one of the packages
  \pkgname{latexsym}, \pkgname{amsfonts}, \pkgname{amssymb},
  \pkgname{txfonts}, \pkgname{pxfonts}, or \pkgname{wasysym}.  Note,
  however, that \pkgname{amsfonts} and \pkgname{amssymb} define
  \cmdX{\Diamond} to produce the same glyph as
\ifAMS
  \cmdX{\lozenge}~(``$\lozenge$'');
\else
  \cmd{\lozenge};
\fi
  the other packages produce a squarer \cmdX{\Diamond} as depicted above.
\end{tablenote}

\bigskip
\begin{tablenote}[\dag]
  To use \cmdX{\Box}---or any other symbol---as an end-of-proof
  (Q.E.D\@.)\index{Q.E.D.}\index{end of proof}\index{proof, end of}
  marker, consider using the \pkgname{ntheorem} package, which
  properly juxtaposes a symbol with the end of the proof text.
\end{tablenote}

\ifAMS
  \bigskip
  \begin{tablenote}[\ddag]
    Many people prefer the look of \AMS's \cmdX{\varnothing}
    (``$\varnothing$'', Table~\ref{ams-misc}) to that of \latex's
    \cmdX{\emptyset}.
  \end{tablenote}
\fi    % AMS test

\end{symtable}


\begin{symtable}[AMS]{Miscellaneous \AMS\ Math Symbols}
\idxboth{miscellaneous}{symbols}
\index{stars}
\index{triangles}
\index{null set}
\index{angles}
\label{ams-misc}
\begin{tabular}{*3{ll}}
\X[\AMSangle]\angle & \X\blacktriangledown & \X\mho            \\
\X\backprime        & \X\diagdown          & \X\sphericalangle \\
\X\bigstar          & \X\diagup            & \X\square         \\
\X\blacklozenge     & \X\eth               & \X\triangledown   \\
\X\blacksquare      & \X\lozenge           & \X\varnothing     \\
\X\blacktriangle    & \X\measuredangle     & \X\vartriangle    \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{Miscellaneous \WASY\ Math Symbols}
\index{angles}
\label{wasy-math}
\begin{tabular}{*4{ll}}
\X[\WASYBox]\Box & \X[\WASYDiamond]\Diamond & \X\mho$^*$ & \K\varangle \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  \WASY\ also defines an \cmdI{\agemO} symbol, which is the same glyph
  as \cmdX{\mho} but is intended for use in text mode.
\end{tablenote}
\end{symtable}


\begin{symtable}[TX]{Miscellaneous \TXPX\ Math Symbols}
\idxboth{miscellaneous}{symbols}
\index{card suits}
\index{diamonds (suit)}
\index{hearts (suit)}
\index{clubs (suit)}
\index{spades (suit)}
\label{txpx-misc}
\begin{tabular}{*3{ll}}
\X\Diamondblack & \X\lambdaslash    & \X\varheartsuit \\
\X\Diamonddot   & \X\varclubsuit    & \X\varspadesuit \\
\X\lambdabar    & \X\vardiamondsuit                   \\
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{Miscellaneous \ABX\ Math Symbols}
\idxboth{miscellaneous}{symbols}
\index{null set}
\index{semidirect products}
\index{angles}
\label{abx-misc}
\begin{tabular}{*4{ll}}
\X[\ABXdegree]\degree     & \X[\ABXfourth]\fourth                 & \X[\ABXmeasuredangle]\measuredangle     & \X[\ABXsecond]\second                 \\
\X[\ABXdiagdown]\diagdown & \X[\ABXhash]\hash                     & \X[\ABXpitchfork]\pitchfork             & \X[\ABXsphericalangle]\sphericalangle \\
\X[\ABXdiagup]\diagup     & \X[\ABXinfty]\infty                   & \X[\ABXpropto]\propto                   & \X[\ABXthird]\third                   \\
\X[\ABXdiameter]\diameter & \X[\ABXleftthreetimes]\leftthreetimes & \X[\ABXrightthreetimes]\rightthreetimes & \X[\ABXvarhash]\varhash               \\
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{Miscellaneous \MNS\ Math Symbols}
\idxboth{miscellaneous}{symbols}
\index{null set}
\index{angles}
\index{card suits}
\index{diamonds (suit)}
\index{hearts (suit)}
\index{clubs (suit)}
\index{spades (suit)}
\index{integrals}
\idxboth{musical}{symbols}
\label{mns-misc}
\begin{tabular}{*4{ll}}
\K[\MNSangle]\angle         & \K[\MNSdiamondsuit]\diamondsuit & \K[\MNSmaltese]\maltese             & \K[\MNSsharp]\sharp                   \\
\K[\MNSbackneg]\backneg     & \K[\MNSflat]\flat               & \K[\MNSmeasuredangle]\measuredangle & \K[\MNSsmallint]\smallint             \\
\K[\MNSbackprime]\backprime & \K[\MNSheartsuit]\heartsuit     & \K[\MNSnabla]\nabla                 & \K[\MNSspadesuit]\spadesuit           \\
\K[\MNScheckmark]\checkmark & \K[\MNSinfty]\infty             & \K[\MNSnatural]\natural             & \K[\MNSsphericalangle]\sphericalangle \\
\K[\MNSclubsuit]\clubsuit   & \K[\MNSinvbackneg]\invbackneg   & \K[\MNSneg]\neg                     &                                       \\
\K[\MNSdiameter]\diameter   & \K[\MNSinvneg]\invneg           & \K[\MNSprime]\prime                 &                                       \\
\end{tabular}

\bigskip

\begin{tablenote}
  \MNS\ defines \cmdI[\MNSdiameter]{\emptyset} and
  \cmdI[\MNSdiameter]{\varnothing} as synonyms for
  \cmdI[\MNSdiameter]{\diameter}; \cmdI[\MNSneg]{\lnot} and
  \cmdI[\MNSneg]{\minushookdown} as synonyms for \cmdI[\MNSneg]{\neg};
  \cmdI[\MNSinvneg]{\minushookup} as a synonym for
  \cmdI[\MNSinvneg]{\invneg}; \cmdI[\MNSbackneg]{\hookdownminus} as a
  synonym for \cmdI[\MNSbackneg]{\backneg}; and,
  \cmdI[\MNSinvbackneg]{\hookupminus} as a synonym for
  \cmdI[\MNSinvbackneg]{\invbackneg}.
\end{tablenote}
\end{symtable}


\begin{symtable}[MNS]{Miscellaneous Internal \MNS\ Math Symbols}
\idxboth{miscellaneous}{symbols}
\label{mns-misc-internal}
\begin{tabular}{*2{ll}}
\K[\smash\MNSpartialvardint]\partialvardint                         & \K[\smash\MNSpartialvartint]\partialvartint                         \\
\K[\smash\MNSpartialvardlanddownint]\partialvardlanddownint         & \K[\smash\MNSpartialvartlanddownint]\partialvartlanddownint         \\
\K[\smash\MNSpartialvardlandupint]\partialvardlandupint             & \K[\smash\MNSpartialvartlandupint]\partialvartlandupint             \\
\K[\smash\MNSpartialvardlcircleleftint]\partialvardlcircleleftint   & \K[\smash\MNSpartialvartlcircleleftint]\partialvartlcircleleftint   \\
\K[\smash\MNSpartialvardlcirclerightint]\partialvardlcirclerightint & \K[\smash\MNSpartialvartlcirclerightint]\partialvartlcirclerightint \\
\K[\smash\MNSpartialvardoiint]\partialvardoiint                     & \K[\smash\MNSpartialvartoiint]\partialvartoiint                     \\
\K[\smash\MNSpartialvardoint]\partialvardoint                       & \K[\smash\MNSpartialvartoint]\partialvartoint                       \\
\K[\smash\MNSpartialvardrcircleleftint]\partialvardrcircleleftint   & \K[\smash\MNSpartialvartrcircleleftint]\partialvartrcircleleftint   \\
\K[\smash\MNSpartialvardrcirclerightint]\partialvardrcirclerightint & \K[\smash\MNSpartialvartrcirclerightint]\partialvartrcirclerightint \\
\K[\smash\MNSpartialvardstrokedint]\partialvardstrokedint           & \K[\smash\MNSpartialvartstrokedint]\partialvartstrokedint           \\
\K[\smash\MNSpartialvardsumint]\partialvardsumint                   & \K[\smash\MNSpartialvartsumint]\partialvartsumint                   \\
\end{tabular}

\bigskip

\begin{tablenote}
  These symbols are intended to be used internally by \MNS\ to
  construct the integrals appearing in Table~\vref{mns-large} but can
  nevertheless be used in isolation.
\end{tablenote}
\end{symtable}


\begin{symtable}{Miscellaneous \TC\ Text-mode Math Symbols}
\index{fractions}
\label{tc-math}
\ifFRAC
  \def\FRACfn{$^\dag$}
\else
  \def\FRACfn{}
\fi
\begin{tabular}{*3{ll}}
\K\textdegree$^*$      & \K\textonehalf\FRACfn    & \K\textthreequarters\FRACfn \\
\K\textdiv             & \K\textonequarter\FRACfn & \K\textthreesuperior \\
\K\textfractionsolidus & \K\textonesuperior       & \K\texttimes         \\
\K\textlnot            & \K\textpm                & \K\texttwosuperior   \\
\K\textminus           & \K\textsurd                                     \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  If you prefer a larger degree symbol you might consider defining one
  as ``\verb|\ensuremath{^\circ}|''~(``$^\circ$'')%
  \indexcommand[$\string\circ$]{\circ}.
\end{tablenote}

\ifFRAC
  \bigskip
  \begin{tablenote}[\dag]
    \pkgname{nicefrac} (part of the \pkgname{units} package) can be
    used to construct vulgar fractions like ``\nicefrac{1}{2}'',
    ``\nicefrac{1}{4}'', ``\nicefrac{3}{4}'', and even
    ``\nicefrac{c}{o}''\index{care of=care of (\nicefrac{c}{o})}.
  \end{tablenote}
\fi    % FRAC test
\end{symtable}


\begin{symtable}[MARV]{Miscellaneous \MARV\ Math Symbols}
\index{angles}
\label{marv-misc}
\begin{tabular}{*3{ll@{\qquad}}ll}
\K\Anglesign       & \K\Squaredot       & \K\Vectorarrowhigh \\
\K\Corresponds     & \K\Vectorarrow     \\
\end{tabular}
\end{symtable}


\begin{symtable}[FGE]{Miscellaneous \FGE\ Math Symbols}
\index{angles}
\idxboth{Frege logic}{symbols}
\label{fge-misc}
\begin{tabular}{*3{ll@{\qquad}}ll}
\K\fgebackslash & \K\fgecap       & \K\fgecupacute  & \K\fgelangle    \\
\K\fgebaracute  & \K\fgecapbar    & \K\fgecupbar    & \K\fgeupbracket \\
\K\fgebarcap    & \K\fgecup       & \K\fgeinfty     &                 \\
\end{tabular}
\end{symtable}


\begin{symtable}[MDES]{Miscellaneous \MDES\ Math Symbols}
\idxboth{miscellaneous}{symbols}
\index{angles}
\label{mdes-misc}
\begin{tabular}{ll}
\K[\MDESrightangle]\rightangle
\end{tabular}
\end{symtable}


\begin{symtable}[AREV]{Miscellaneous \AREV\ Math Symbols}
\idxboth{miscellaneous}{symbols}
\index{card suits}
\index{diamonds (suit)}
\index{hearts (suit)}
\index{clubs (suit)}
\index{spades (suit)}
\label{arev-misc}
\begin{tabular}{*3{ll}}
\K\steaming & \K\vardiamond & \K\varspade \\
\K\varclub  & \K\varheart   &             \\
\end{tabular}
\end{symtable}


% Because the Math Alphabets table is a bit different from the symbol
% tables in this document we start it on its own page to emphasize it
% and to include enough room for some of the table notes.
\clearpage

\begin{symtable}{Math Alphabets}
\idxboth{math}{alphabets}
\label{alphabets}
\begin{tabular}{@{}*3l@{}}
\toprule
Font sample & Generating command & Required package           \\
\midrule
\Wf\mathrm{ABCdef123}    & \textit{none}                      \\
\Ww\textit\mathit{ABCdef123}    & \textit{none}               \\
\Wf\mathnormal{ABCdef123}& \textit{none}                      \\
\Ww\CMcal\mathcal{ABC}   & \textit{none}                      \\

\ifx\mathscr\undefined\else
\Wf\mathscr{ABC}         & \pkgname{mathrsfs} \\
\multicolumn{1}{r@{}}{\emph{or}}
        &\verb|\mathcal{ABC}|
                         & \pkgname{calrsfs} \\
\fi

\ifEU
\Wf\mathcal{ABC}         & \pkgname{euscript} with the
                           \optname{euscript}{mathcal} option \\
\multicolumn{1}{r@{}}{\emph{or}}
        &\verb|\mathscr{ABC}|
                         & \pkgname{euscript} with the
                           \optname{euscript}{mathscr} option \\
\fi

\ifx\mathpzc\undefined\else
\Wf\mathpzc{ABCdef123}   & \textit{none}; manually defined$^*$    \\
\fi

\ifx\mathbb\undefined\else
\Wf\mathbb{ABC}          & \pkgname{amsfonts},%
                           \ifx\MSYMmathbb\undefined\else$^\S$~\fi
                           \pkgname{amssymb}, \pkgname{txfonts}, or
                           \pkgname{pxfonts} \\
\fi

\ifx\varmathbb\undefined\else
\Wf\varmathbb{ABC}       & \pkgname{txfonts} or \pkgname{pxfonts} \\
\fi

\ifx\BBmathbb\undefined\else
\Ww\BBmathbb\mathbb{ABCdef123}
                         & \pkgname{bbold} or \pkgname{mathbbol}$^\dag$  \\
\fi

\ifx\MBBmathbb\undefined\else
\Ww\MBBmathbb\mathbb{ABCdef123}
                         & \pkgname{mbboard}$^\dag$              \\
\fi

\ifx\mathbbm\undefined\else
\Wf\mathbbm{ABCdef12}    & \pkgname{bbm}                         \\
\Wf\mathbbmss{ABCdef12}  & \pkgname{bbm}                         \\
\Wf\mathbbmtt{ABCdef12}  & \pkgname{bbm}                         \\
\fi

\ifx\mathds\undefined\else
\Wf\mathds{ABC1}         & \pkgname{dsfont}                      \\
\Ww\mathdsss\mathds{ABC1}
                         & \pkgname{dsfont} with the
                           \optname{dsfont}{sans} option         \\
\fi

\ifx\mathfrak\undefined\else
\Wf\mathfrak{ABCdef123}  & \pkgname{eufrak}                      \\
\fi

\ifx\textfrak\undefined\else
\Wf\textfrak{ABCdef123}  & \pkgname{yfonts}$^\ddag$              \\
\Wf\textswab{ABCdef123}  & \pkgname{yfonts}$^\ddag$              \\
\Wf\textgoth{ABCdef123}  & \pkgname{yfonts}$^\ddag$              \\
\fi
\bottomrule
\end{tabular}
\end{symtable}
\unskip

% Because we have so much text and because we're at the end of the
% section, we put all of the table notes after the symtable to give
% LaTeX the opportunity to split them across pages.
\begin{center}
\ifx\mathpzc\undefined\else
\bigskip
\begin{tablenote}[*]
  Put ``\verb|\DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}|'' in your
  document's preamble to make \verb|\mathpzc| typeset its argument in
  \PSfont{Zapf Chancery}.
\ifx\mathcalligra\undefined\else
  As a similar trick, you can typeset the \PSfont{Calligra} font's
  script ``{\Large\mathcalligra{r}\,}'' (or other calligraphic symbols)
  in math mode by loading the \pkgname{calligra} package and putting
  ``\verb|\DeclareMathAlphabet{\mathcalligra}{T1}{calligra}{m}{n}|''
  in your document's preamble to make \verb|\mathcalligra| typeset its
  argument in the \PSfont{Calligra} font.  (You may also want to
  specify
  ``\verb|\DeclareFontShape{T1}{calligra}{m}{n}{<->s*[2.2]callig15}{}|''
  to set \PSfont{Calligra} at 2.2~times its design size for a better
  blend with typical body fonts.)
\fi
\end{tablenote}
\fi

\ifx\BBmathbb\undefined\else
\bigskip
\begin{tablenote}[\dag]
  The \pkgname{mathbbol} package defines some additional blackboard bold
  characters: parentheses, square brackets, angle brackets, and---if
  the \optname{mathbbol}{bbgreekl} option is passed to
  \pkgname{matbbol}---Greek\index{Greek>blackboard bold} letters.  For
  instance,
  ``$\BBmathbb{\char`<\char`[\char`(\char"0B\char"0C\char"0D\char`)\char`]\char`>}$''
  is produced by
  ``\cmd{\mathbb}\verb|{|\cmdI{\Langle}\linebreak[1]%
  \cmdI{\Lbrack}\linebreak[1]\cmdI{\Lparen}\linebreak[1]%
  \cmdI{\bbalpha}\linebreak[1]\cmdI{\bbbeta}\linebreak[1]%
  \cmdI{\bbgamma}\linebreak[1]\cmdI{\Rparen}\linebreak[1]%
  \cmdI{\Rbrack}\linebreak[1]\cmdI{\Rangle}\verb|}|''.

  \ifx\MBBmathbb\undefined
    \pkgname{mbboard} extends the blackboard bold symbol set
    significantly further.  It supports not only the
    Greek\index{Greek>blackboard bold}\index{alphabets>Greek}
    alphabet---including ``Greek-like'' symbols such as
    \cmd{\bbnabla}---but also \emph{all} punctuation marks, various
    currency\idxboth{currency}{symbols}\idxboth{monetary}{symbols}
    symbols such as \cmd{\bbdollar} and \cmd{\bbeuro},\index{euro
    signs>blackboard bold} and the
    Hebrew\index{Hebrew}\index{alphabets>Hebrew} alphabet.
  \else
    \pkgname{mbboard} extends the blackboard bold symbol set
    significantly further.  It supports not only the
    Greek\index{Greek>blackboard bold}\index{alphabets>Greek}
    alphabet---including ``Greek-like'' symbols such as
    \cmdI{\bbnabla}~(``\bbnabla'')---but also \emph{all} punctuation
    marks, various
    currency\idxboth{currency}{symbols}\idxboth{monetary}{symbols}
    symbols such as \cmdI{\bbdollar}~(``\bbdollar'') and
    \cmdI{\bbeuro}~(``\bbeuro''),\index{euro signs>blackboard bold}
    and the Hebrew\index{Hebrew}\index{alphabets>Hebrew}
    alphabet~(e.g.,~``\cmdI{\bbfinalnun}\linebreak[1]\cmdI{\bbyod}%
    \linebreak[1]\cmdI{\bbqof}\linebreak[1]\cmdI{\bbpe}''~$\rightarrow$
    ``\bbfinalnun\bbyod\bbqof\bbpe'').
  \fi    % MBBmathbb test
\end{tablenote}
\fi

\ifx\textfrak\undefined\else
\bigskip
\begin{tablenote}[\ddag]
  As their \verb|\text|\dots{} names imply, the fonts provided by the
  \pkgname{yfonts} package are actually text fonts.  They are
  included in Table~\ref{alphabets} because they are frequently used
  in a mathematical context.
\end{tablenote}
\fi

\ifx\MSYMmathbb\undefined\else
\bigskip
\begin{tablenote}[\S]
  An older (i.e.,~prior to~1991) version of the \AMS's fonts rendered
  $\mathbb{C}$, $\mathbb{N}$, $\mathbb{R}$, $\mathbb{S}$,
  and~$\mathbb{Z}$ as $\MSYMmathbb{C}$, $\MSYMmathbb{N}$,
  $\MSYMmathbb{R}$, $\MSYMmathbb{S}$, and~$\MSYMmathbb{Z}$.  As some
  people prefer the older glyphs---much to the \AMS's surprise---and
  because those glyphs fail to build under modern versions of
  \metafont, \person{Berthold}{Horn} uploaded \postscript fonts for
  the older blackboard-bold glyphs to CTAN\idxCTAN{}, to the
  \texttt{fonts/msym10} directory.  As of this writing, however, there
  are no \latexE packages for utilizing the now-obsolete glyphs.
\end{tablenote}
\fi
\end{center}


\idxbothend{mathematical}{symbols}


\section{Science and technology symbols}
\idxbothbegin{scientific}{symbols}
\idxbothbegin{technological}{symbols}

This section lists symbols that are employed in various branches of
science and engineering.

\bigskip


\begin{symtable}{\GSYMB\ Symbols Defined to Work in Both Math and Text Mode}
\label{gsymb-math}
\begin{tabular}{*2{ll@{\qquad}}ll}
\K[\textcelsius]\celsius & \K[\textmu]\micro & \K[\textperthousand]\perthousand \\
\K[\textdegree]\degree   & \K[\textohm]\ohm  &                                  \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Electrical and Physical Symbols}
\idxboth{electrical}{symbols}
\idxboth{physical}{symbols}
\label{wasy-electic}
\begin{tabular}{*{9}{ll@{\qquad}}ll}
\K\AC             & \K\VHF            & \K\photon         &
\K\HF             & \K\gluon          \\
\end{tabular}
\end{symtable}


\begin{symtable}[IFS]{\IFS\ Pulse Diagram Symbols}
\idxboth{pulse diagram}{symbols}
\idxboth{engineering}{symbols}
\label{pulse-diagram}
\begin{tabular}{*4{ll}}
\K\FallingEdge   & \K\LongPulseLow & \K\PulseLow    & \K\ShortPulseHigh \\
\K\LongPulseHigh & \K\PulseHigh    & \K\RaisingEdge & \K\ShortPulseLow  \\
\end{tabular}

\bigskip
\begin{tablenote}
  In addition, within
  \verb|\textifsym{|$\ldots$\verb|}|\indexcommand{\textifsym}, the
  following codes are valid:

  \begin{center}
  \begin{tabular}{*5{ll@{\hspace{3em}}}ll}
    \textifsym{l} & l &
    \textifsym{m} & m &
    \textifsym{h} & h &
    \textifsym{d} & d &
    \textifsym{<} & \textless &
    \textifsym{>} & \textgreater \\[4pt]

    \textifsym{L} & L &
    \textifsym{M} & M &
    \textifsym{H} & H &
    \textifsym{D} & D &
    \textifsym{<<} & \textless\textless &
    \textifsym{>>} & \textgreater\textgreater \\
  \end{tabular}
  \end{center}

  This enables one to write ``\verb|\textifsym{mm<DDD>mm}|'' to get
  ``\textifsym{mm<DDD>mm}'' or ``\verb+\textifsym{L|H|L|H|L}+'' to get
  ``\textifsym{L|H|L|H|L}''.  See also the \pkgname{timing} package,
  which provides a wide variety of pulse-diagram symbols within an
  environment designed specifically for typesetting pulse diagrams.

  Finally, \cmd{\textifsym} supports the display of
  segmented\idxboth{segmented}{digits} digits, as would appear on an
  LCD\idxboth{LCD}{digits}: ``\verb|\textifsym{-123.456}|'' produces
  ``\textifsym{-123.456}''.  ``\verb|\textifsym{b}|'' outputs a blank
  with the same width as an ``\textifsym{8}''.
\end{tablenote}
\end{symtable}


\begin{symtable}[ASP]{\ASP\ Aspect Ratio Symbol}
\index{aspect ratio}
\label{aspect-ratio}
\begin{tabular}{ll}
\K\AR
\end{tabular}
\end{symtable}


\begin{symtable}{\TC\ Text-mode Science and Engineering Symbols}
\label{tc-science}
\begin{tabular}{*4{ll}}
\K\textcelsius & \K\textmho & \K\textmu & \K\textohm \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Astronomical Symbols}
\idxboth{astronomical}{symbols}
\idxboth{astrological}{symbols}
\idxboth{zodiacal}{symbols}
\index{planets}
\index{celestial bodies}
\label{wasy-astro}
\begin{tabular}{*5{ll}}
\K\mercury & \K\earth & \K\jupiter & \K\uranus  & \K\pluto \\
\K\venus   & \K\mars  & \K\saturn  & \K\neptune &          \\[3ex]

\K\astrosun & \K\fullmoon & \K\leftmoon & \K\newmoon & \K\rightmoon \\[3ex]

\K\aries  & \K\cancer & \K\libra       & \K\aquarius    \\
\K\taurus & \K\leo    & \K\scorpio     & \K\capricornus \\
\K\gemini & \K\virgo  & \K\sagittarius & \K\pisces      \\[3ex]

\K\ascnode & \K\descnode & \K\conjunction & \K\opposition & \K\vernal \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Astronomical Symbols}
\idxboth{astronomical}{symbols}
\idxboth{astrological}{symbols}
\idxboth{zodiacal}{symbols}
\index{planets}
\index{celestial bodies}
\label{marv-astro}
\begin{tabular}{*5{ll}}
\K\Mercury & \K\Earth & \K\Jupiter & \K\Uranus  & \K\Pluto \\
\K\Venus   & \K\Mars  & \K\Saturn  & \K\Neptune &          \\[3ex]

\K\Moon & \K\Sun \\[3ex]

\K\Aries       & \K\Cancer      & \K\Libra       & \K\Capricorn   \\
\K\Taurus      & \K\Leo         & \K\Scorpio     & \K\Aquarius    \\
\K\Gemini      & \K\Virgo       & \K\Sagittarius & \K\Pisces      \\
\end{tabular}

\bigskip
\begin{tablenote}
  Note that \cmdI{\Aries}\,$\ldots$\,\linebreak[1]\cmdI{\Pisces} can also be
  specified with
  \cmd{\Zodiac}\verb|{1}|\,$\ldots$\,\linebreak[1]\cmd{\Zodiac}\verb|{12}|.
\end{tablenote}
\end{symtable}


\begin{symtable}[ABX]{\ABX\ Astronomical Symbols}
\idxboth{astronomical}{symbols}
\idxboth{astrological}{symbols}
\idxboth{zodiacal}{symbols}
\index{planets}
\index{celestial bodies}
\label{abx-astro}
\begin{tabular}{*5{ll}}
\X[\ABXMercury]\Mercury & \X[\ABXEarth]\Earth     & \X[\ABXJupiter]\Jupiter & \X[\ABXUranus]\Uranus   & \X[\ABXPluto]\Pluto       \\
\X[\ABXVenus]\Venus     & \X[\ABXMars]\Mars       & \X[\ABXSaturn]\Saturn   & \X[\ABXNeptune]\Neptune & \X[\ABXvarEarth]\varEarth \\[3ex]

\X[\ABXfullmoon]\fullmoon & \X[\ABXleftmoon]\leftmoon & \X[\ABXnewmoon]\newmoon & \X[\ABXrightmoon]\rightmoon & \X[\ABXSun]\Sun \\[3ex]

\X[\ABXAries]\Aries & \X[\ABXTaurus]\Taurus & \X[\ABXGemini]\Gemini \\
\end{tabular}

\bigskip

\begin{tablenote}
  \ABX\ also defines \cmdI[$\string\ABXVenus$]{\girl} as an alias for
  \cmdI[$\string\ABXVenus$]{\Venus}, \cmdI[$\string\ABXMars$]{\boy} as
  an alias for \cmdI[$\string\ABXMars$]{\Mars}, and
  \cmdI[$\string\ABXleftmoon$]{\Moon} as an alias for
  \cmdI[$\string\ABXleftmoon$]{\leftmoon}.
\end{tablenote}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ APL Symbols}
\index{APL>symbols}
\index{symbols>APL}
\label{wasy-APLsym}
\begin{tabular}{*6l}
\K\APLbox          & \K\APLinv           & \K\APLstar        \\
\K\APLcomment      & \K\APLleftarrowbox  & \K\APLup          \\
\K\APLdown         & \K\APLlog           & \K\APLuparrowbox  \\
\K\APLdownarrowbox & \K\APLminus         & \K\notbackslash   \\
\K\APLinput        & \K\APLrightarrowbox & \K\notslash       \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ APL Modifiers}
\index{APL>modifiers}
\index{accents}
\label{wasy-APLmod}
\begin{tabular}{*2{ll@{\qqquad}}ll}
\W\APLcirc{} & \W\APLnot{} & \W\APLvert{} \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Computer Hardware Symbols}
\idxboth{computer hardware}{symbols}
\label{marv-computer}
\begin{tabular}{*2{ll}ll}
\K\ComputerMouse   & \K\ParallelPort    & \K\SerialInterface \\
\K\Keyboard        & \K\Printer         & \K\SerialPort      \\
\end{tabular}
\end{symtable}


\begin{symtable}[KEYS]{\KEYS\ Computer Keys}
\idxboth{keyboard}{symbols}
\index{computer keys}
\index{keys, computer}
\index{arrows}
\index{carriage return}
\label{keystroke}
\renewcommand{\arraystretch}{1.25}  % Keep the symbols from touching.
\begin{tabular}{*2{ll@{\hspace*{3em}}}ll}
\K\Alt                        & \K\Enter$^*$  & \K\PrtSc$^*$            \\
\K\AltGr                      & \K\Esc$^*$    & \K\RArrow               \\
\K\Break$^*$                  & \K\Home$^*$   & \K\Return               \\
\K[\keysBSpace]\BSpace$^\dag$ & \K\Ins$^*$    & \K\Scroll$^*$           \\
\K\Ctrl$^*$                   & \K\LArrow     & \K\Shift$^*$            \\
\K\DArrow                     & \K\NumLock    & \K\Spacebar             \\
\K\Del$^*$                    & \K\PgDown$^*$ & \K[\keysTab]\Tab$^\dag$ \\
\K\End$^*$                    & \K\PgUp$^*$   & \K\UArrow               \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  Changes based on the language option passed to the \KEYS\ package.
  For example, the \optname{keystroke}{german} option makes
  \cmdI{\Del} produce ``\keystroke{Entf}'' instead of ``\Del''.
\end{tablenote}

\bigskip

\begin{tablenote}[\dag]
  These symbols utilize the \pkgname{rotating} package and therefore
  display improperly in most DVI\index{DVI} viewers.
\end{tablenote}

\bigskip

\begin{tablenote}
  The
 \verb|\keystroke|\indexaccent[\string\blackacc{\string\keystroke}]{\keystroke}
 command draws a key with an arbitrary label.  For example,
 ``\verb|\keystroke{F7}|'' produces ``\keystroke{F7}''.
\end{tablenote}
\end{symtable}


\begin{symtable}[ASCII]{\ASCII\ Control Characters (CP437)}
\index{ASCII}
\index{IBM PC}
\index{control characters}
\index{carriage return}
\index{smiley faces}
\index{nonbreaking space}
\index{code page 437}
\index{faces}
\label{ibm-ascii}
\begin{tabular}{*4{ll@{\hspace{3em}}}ll}
\K\SOH & \K\BS           & \K\SI  & \K\SYN & \K\GS \\
\K\STX & \K[\asciiHT]\HT & \K\DLE & \K\ETB & \K\RS \\
\K\ETX & \K\LF           & \K\DCa & \K\CAN & \K\US \\
\K\EOT & \K\VT           & \K\DCb & \K\EM  &       \\
\K\ENQ & \K\FF           & \K\DCc & \K\SUB &       \\
\K\ACK & \K\CR           & \K\DCd & \K\ESC &       \\
\K\BEL & \K\SO           & \K\NAK & \K\FS  &       \\[2ex]
%
\K\DEL & \K\NBSP & \K\NUL &
\incsyms\indexcommand[\splitvert]{\splitvert}\splitvert &
\multicolumn{2}{l}{\ttfamily\string\splitvert} \\
\end{tabular}

\bigskip

\begin{tablenote}
  Code Page~437 (CP437), which was first utilized by the original
  IBM~PC, uses the symbols \cmdI{\SOH} through \cmdI{\US} to depict
  ASCII characters~1--31 and \cmdI{\DEL} to depict ASCII
  character~127.  The \cmdI{\NUL} symbol, not part of CP437,
  represents ASCII character~0.  \cmdI{\NBSP}, also not part of CP437,
  represents a nonbreaking space.  \cmdI{\splitvert} is merely the
  ``$|$'' character drawn as it was on the IBM~PC.
\end{tablenote}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Communication Symbols}
\idxboth{communication}{symbols}
\label{marv-comm}
\begin{tabular}{*4{ll}ll}
\K\Email      & \K\fax        & \K\Faxmachine & \K\Lightning  & \K\Pickup  \\
\K\Emailct    & \K\FAX        & \K\Letter     & \K\Mobilefone & \K\Telefon \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Engineering Symbols}
\idxboth{engineering}{symbols}
\label{marv-engineering}
\begin{tabular}{*3{ll}ll}
\K\Beam         & \K\Force        & \K\Octosteel         & \K\RoundedTTsteel \\
\K\Bearing      & \K\Hexasteel    & \K\Rectpipe          & \K\Squarepipe     \\
\K\Circpipe     & \K\Lefttorque   & \K\Rectsteel         & \K\Squaresteel    \\
\K\Circsteel    & \K\Lineload     & \K\Righttorque       & \K\Tsteel         \\
\K\Fixedbearing & \K\Loosebearing & \K\RoundedLsteel$^*$ & \K\TTsteel        \\
\K\Flatsteel    & \K\Lsteel       & \K\RoundedTsteel$^*$ \\
\end{tabular}

\bigskip

\begin{tablenote}[*]
  \cmdI{\RoundedLsteel} and \cmdI{\RoundedTsteel} seem to be swapped,
  at least in the 2000/05/01 version of \pkgname{marvosym}.
\end{tablenote}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Biological Symbols}
\label{wasy-bio}
\begin{tabular}{*2{ll}}
\K\female & \K\male \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Biological Symbols}
\idxboth{biological}{symbols}
\label{marv-bio}
\begin{tabular}{*3{ll}ll}
\K\Female        & \K\FemaleMale    & \K\MALE          & \K\Neutral       \\
\K\FEMALE        & \K\Hermaphrodite & \K\Male          \\
\K\FemaleFemale  & \K\HERMAPHRODITE & \K\MaleMale      \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Safety-related Symbols}
\idxboth{safety-related}{symbols}
\label{marv-safety}
\begin{tabular}{*3{ll}ll}
\K\Biohazard     & \K\CEsign        & \K\Explosionsafe & \K\Radioactivity \\
\K\BSEfree       & \K\Estatically   & \K\Laserbeam     & \K\Stopsign      \\
\end{tabular}
\end{symtable}


\begin{symtable}[FEYN]{\FEYN\ Feynman Diagram Symbols}
\index{Feynman-diagram symbols}
\index{symbols>Feynman diagram}
\index{particle-physics symbols}
\index{symbols>particle physics}
\index{bosons}
\index{fermions}
\index{gluons}
\index{photons}
\index{subatomic particles}
\label{feyn}
\renewcommand{\arraystretch}{1.75}  % Keep tall symbols from touching.
\begin{tabular}{*3{ll}ll}
\K\bigbosonloop & \Kfeyn{fu}  & \Kfeyn{gvs} & \Kfeyn{h}         \\
\Kfeyn{a}       & \Kfeyn{fv}  & \Kfeyn{gv}  & \Kfeyn{ms}        \\
\Kfeyn{c}       & \Kfeyn{f}   & \Kfeyn{g}   & \Kfeyn{m}         \\
\Kfeyn{fd}      & \Kfeyn{glu} & \Kfeyn{hd}  & \Kfeyn{p}         \\
\Kfeyn{fl}      & \Kfeyn{gl}  & \Kfeyn{hs}  & \Kfeyn{x}         \\
\Kfeyn{fs}      & \Kfeyn{gu}  & \Kfeyn{hu}  & \K\smallbosonloop \\
\end{tabular}

\bigskip

\begin{tablenote}
  All other arguments to the \verb|\feyn| command produce a
  ``\feyn{?}'' symbol.

  The \FEYN\ package provides various commands for composing the
  preceding symbols into complete Feynman diagrams.  See the \FEYN\
  documentation for examples and additional information.
\end{tablenote}
\end{symtable}


\idxbothend{scientific}{symbols}
\idxbothend{technological}{symbols}


\section{Dingbats}
\idxbothbegin{dingbat}{symbols}

Dingbats are symbols such as stars, arrows, and geometric shapes.
They are commonly used as bullets in itemized lists or, more
generally, as a means to draw attention to the text that follows.

The \PI\ dingbat package warrants special mention.  Among other
capabilities, \PI\ provides a \latex\ interface to the \PSfont{Zapf
Dingbats} font (one of the standard~35 \postscript\index{PostScript
fonts} fonts).  However, rather than name each of the dingbats
individually, \PI\ merely provides a single \cmd{\ding} command, which
outputs the character that lies at a given position in the font.  The
consequence is that the \PI\ symbols can't be listed by name in this
document's index, so be mindful of that fact when searching for a
particular symbol.

\bigskip


\begin{symtable}[DING]{\DING\ Arrows}
\label{bbding-arrows}
\begin{tabular}{*3{ll}}
\K\ArrowBoldDownRight    & \K\ArrowBoldRightShort  & \K\ArrowBoldUpRight \\
\K\ArrowBoldRightCircled & \K\ArrowBoldRightStrobe \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Arrows}
\index{arrows}
\idxboth{fletched}{arrows}
\label{pi-arrows}
\begin{tabular}{*5{ll}}
\Tp{212} & \Tp{221} & \Tp{230} & \Tp{239} & \Tp{249} \\
\Tp{213} & \Tp{222} & \Tp{231} & \Tp{241} & \Tp{250} \\
\Tp{214} & \Tp{223} & \Tp{232} & \Tp{242} & \Tp{251} \\
\Tp{215} & \Tp{224} & \Tp{233} & \Tp{243} & \Tp{252} \\
\Tp{216} & \Tp{225} & \Tp{234} & \Tp{244} & \Tp{253} \\
\Tp{217} & \Tp{226} & \Tp{235} & \Tp{245} & \Tp{254} \\
\Tp{218} & \Tp{227} & \Tp{236} & \Tp{246} \\
\Tp{219} & \Tp{228} & \Tp{237} & \Tp{247} \\
\Tp{220} & \Tp{229} & \Tp{238} & \Tp{248} \\
\end{tabular}
\end{symtable}


\begin{symtable}[BAYER]{\BAYER\ Arrows}
\index{arrows}
\label{bayer-arrows}
\begin{tabular}{*2{ll}}
\K\bauarrow & \K\bauwhitearrow \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Scissors}
\index{scissors}
\label{marv-scissors}
\begin{tabular}{*3{ll}}
\K\Cutleft       & \K\Cutright      & \K\Leftscissors  \\
\K\Cutline       & \K\Kutline       & \K\Rightscissors \\
\end{tabular}
\end{symtable}


\begin{symtable}[DING]{\DING\ Scissors}
\index{scissors}
\label{scissors}
\begin{tabular}{*2{ll}}
\K\ScissorHollowLeft        & \K\ScissorLeftBrokenTop     \\
\K\ScissorHollowRight       & \K\ScissorRight             \\
\K\ScissorLeft              & \K\ScissorRightBrokenBottom \\
\K\ScissorLeftBrokenBottom  & \K\ScissorRightBrokenTop    \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Scissors}
\index{scissors}
\label{pi-scissors}
\begin{tabular}{*4{ll}}
\Tp{33} & \Tp{34} & \Tp{35} & \Tp{36} \\
\end{tabular}
\end{symtable}


\begin{symtable}[ARK]{\ARK\ Pencils}
\index{pencils}
\vspace{1ex}
\begin{tabular}{*2{ll}}
\K[\ARKlargepencil]\largepencil & \K\smallpencil \\
\end{tabular}
\end{symtable}


\begin{symtable}[DING]{\DING\ Pencils and Nibs}
\index{pencils}
\index{nibs}
\label{pencils-nibs}
\begin{tabular}{*3{ll}}
\K\NibLeft         & \K\PencilLeft      & \K\PencilRightDown \\
\K\NibRight        & \K\PencilLeftDown  & \K\PencilRightUp   \\
\K\NibSolidLeft    & \K\PencilLeftUp    \\
\K\NibSolidRight   & \K\PencilRight     \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Pencils and Nibs}
\index{pencils}
\index{nibs}
\label{pi-pencils}
\begin{tabular}{*5{ll}}
\Tp{46} & \Tp{47} & \Tp{48} & \Tp{49} & \Tp{50} \\
\end{tabular}
\end{symtable}


\begin{symtable}[ARK]{\ARK\ Fists}
\index{fists}
\label{ark-hands}
\renewcommand{\arraystretch}{1.25}
\begin{tabular}{*3{ll}}
\K\leftpointright  & \K\rightpointleft  & \K\rightpointright \\
\K\leftthumbsdown  & \K\rightthumbsdown \\
\K\leftthumbsup    & \K\rightthumbsup   \\
\end{tabular}
\end{symtable}


\begin{symtable}[DING]{\DING\ Fists}
\index{fists}
\label{hands}
\begin{tabular}{*3{ll}}
\K\HandCuffLeft    & \K\HandCuffRightUp & \K\HandPencilLeft  \\
\K\HandCuffLeftUp  & \K\HandLeft        & \K\HandRight       \\
\K\HandCuffRight   & \K\HandLeftUp      & \K\HandRightUp     \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Fists}
\index{fists}
\label{pi-hands}
\begin{tabular}{*4{ll}}
\Tp{42} & \Tp{43} & \Tp{44} & \Tp{45} \\
\end{tabular}
\end{symtable}


\begin{symtable}[DING]{\DING\ Crosses and Plusses}
\index{crosses}
\index{plusses}
\index{crucifixes}
\label{crosses-plusses}
\begin{tabular}{*3{ll}}
\K[\dingCross]\Cross  & \K\CrossOpenShadow    & \K\PlusOutline        \\
\K\CrossBoldOutline   & \K\CrossOutline       & \K\PlusThinCenterOpen \\
\K\CrossClowerTips    & \K\Plus               \\
\K\CrossMaltese       & \K\PlusCenterOpen     \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Crosses and Plusses}
\index{crosses}
\index{plusses}
\index{crucifixes}
\label{pi-crosses-plusses}
\begin{tabular}{*4{ll}}
\Tp{57} & \Tp{59} & \Tp{61} & \Tp{63} \\
\Tp{58} & \Tp{60} & \Tp{62} & \Tp{64} \\
\end{tabular}
\end{symtable}


\begin{symtable}[DING]{\DING\ Xs and Check Marks}
\index{check marks}
\index{Xs}
\label{ding-check-marks}
\begin{tabular}{*3{ll}}
\K\Checkmark     & \K\XSolid        & \K\XSolidBrush   \\
\K\CheckmarkBold & \K\XSolidBold    \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Xs and Check Marks}
\index{check marks}
\index{Xs}
\label{pi-check-marks}
\begin{tabular}{*3{ll}}
\Tp{51} & \Tp{53} & \Tp{55} \\
\Tp{52} & \Tp{54} & \Tp{56} \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Xs and Check Marks}
\index{check marks}
\index{Xs}
\label{wasy-check-marks}
\begin{tabular}{*6l}
\K\CheckedBox & \K\Square & \K\XBox \\
\end{tabular}
\end{symtable}


\begin{symtable}[BAYER]{\BAYER\ Xs}
\index{Xs}
\label{bayer-check-marks}
\begin{tabular}{ll}
\K\baucross \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Circled Numbers}
\index{circled numbers}
\index{numbers>circled}
\label{circled-numbers}
\begin{tabular}{*4{ll}}
\Tp{172} & \Tp{182} & \Tp{192} & \Tp{202} \\
\Tp{173} & \Tp{183} & \Tp{193} & \Tp{203} \\
\Tp{174} & \Tp{184} & \Tp{194} & \Tp{204} \\
\Tp{175} & \Tp{185} & \Tp{195} & \Tp{205} \\
\Tp{176} & \Tp{186} & \Tp{196} & \Tp{206} \\
\Tp{177} & \Tp{187} & \Tp{197} & \Tp{207} \\
\Tp{178} & \Tp{188} & \Tp{198} & \Tp{208} \\
\Tp{179} & \Tp{189} & \Tp{199} & \Tp{209} \\
\Tp{180} & \Tp{190} & \Tp{200} & \Tp{210} \\
\Tp{181} & \Tp{191} & \Tp{201} & \Tp{211} \\
\end{tabular}

\bigskip

\begin{tablenote}
  \PI\ (part of the \pkgname{psnfss} package) provides a
  \cmd{dingautolist} environment which resembles \texttt{enumerate}
  but uses circled numbers as bullets.\footnotemark{}
  \seedocs{\pkgname{psnfss}}.
\end{tablenote}
\end{symtable}
\footnotetext{In fact, \cmd{dingautolist} can use any set of
  consecutive \PSfont{Zapf Dingbats} symbols.}


\begin{symtable}[WASY]{\WASY\ Stars}
\index{stars}
\index{Jewish star}\index{Star of David}
\label{wasy-stars}
\begin{tabular}{*6l}
\K\davidsstar & \K\hexstar & \K\varhexstar
\end{tabular}
\end{symtable}


\begin{symtable}[DING]{\DING\ Stars, Flowers, and Similar Shapes}
\index{asterisks}
\index{clovers}
\index{flowers}
\index{sparkles}
\index{snowflakes}
\index{stars}
\index{Jewish star}\index{Star of David}
\label{star-like}
\begin{tabular}{*3{ll}}
\K\Asterisk                & \K\FiveFlowerPetal      & \K\JackStar                  \\
\K\AsteriskBold            & \K\FiveStar             & \K\JackStarBold              \\
\K\AsteriskCenterOpen      & \K\FiveStarCenterOpen   & \K\SixFlowerAlternate        \\
\K\AsteriskRoundedEnds     & \K\FiveStarConvex       & \K\SixFlowerAltPetal         \\
\K\AsteriskThin            & \K\FiveStarLines        & \K\SixFlowerOpenCenter       \\
\K\AsteriskThinCenterOpen  & \K\FiveStarOpen         & \K\SixFlowerPetalDotted      \\
\K\DavidStar               & \K\FiveStarOpenCircled  & \K\SixFlowerPetalRemoved     \\
\K\DavidStarSolid          & \K\FiveStarOpenDotted   & \K\SixFlowerRemovedOpenPetal \\
\K\EightAsterisk           & \K\FiveStarOutline      & \K\SixStar                   \\
\K\EightFlowerPetal        & \K\FiveStarOutlineHeavy & \K\SixteenStarLight          \\
\K\EightFlowerPetalRemoved & \K\FiveStarShadow       & \K\Snowflake                 \\
\K\EightStar               & \K\FourAsterisk         & \K\SnowflakeChevron          \\
\K\EightStarBold           & \K\FourClowerOpen       & \K\SnowflakeChevronBold      \\
\K\EightStarConvex         & \K\FourClowerSolid      & \K\Sparkle                   \\
\K\EightStarTaper          & \K\FourStar             & \K\SparkleBold               \\
\K\FiveFlowerOpen          & \K\FourStarOpen         & \K\TwelweStar                \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Stars, Flowers, and Similar Shapes}
\index{asterisks}
\index{clovers}
\index{flowers}
\index{sparkles}
\index{snowflakes}
\index{stars}
\label{pi-star-like}
\begin{tabular}{*5{ll}}
\Tp{65} & \Tp{74} & \Tp{83} & \Tp{92} & \Tp{101} \\
\Tp{66} & \Tp{75} & \Tp{84} & \Tp{93} & \Tp{102} \\
\Tp{67} & \Tp{76} & \Tp{85} & \Tp{94} & \Tp{103} \\
\Tp{68} & \Tp{77} & \Tp{86} & \Tp{95} & \Tp{104} \\
\Tp{69} & \Tp{78} & \Tp{87} & \Tp{96} & \Tp{105} \\
\Tp{70} & \Tp{79} & \Tp{88} & \Tp{97} & \Tp{106} \\
\Tp{71} & \Tp{80} & \Tp{89} & \Tp{98} & \Tp{107} \\
\Tp{72} & \Tp{81} & \Tp{90} & \Tp{99} \\
\Tp{73} & \Tp{82} & \Tp{91} & \Tp{100} \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Geometric Shapes}
\index{polygons}
\index{geometric shapes}
\label{wasy-geometrical}
\begin{tabular}{*8l}
\K\hexagon & \K\octagon & \K\pentagon & \K\varhexagon
\end{tabular}
\end{symtable}


\begin{symtable}[MNS]{\MNS\ Geometric Shapes}
\index{polygons}
\index{stars}
\index{geometric shapes}
\label{mns-geometrical}
\begin{tabular}{*4{ll}}
\K[\MNSfilledlargestar]\filledlargestar   & \K[\MNSlargediamond]\largediamond     & \K[\MNSlargestar]\largestar               & \K[\MNSsmalllozenge]\smalllozenge \\
\K[\MNSfilledlozenge]\filledlozenge       & \K[\MNSlargelozenge]\largelozenge     & \K[\MNSlargestarofdavid]\largestarofdavid &                                   \\
\K[\MNSfilledmedlozenge]\filledmedlozenge & \K[\MNSlargepentagram]\largepentagram & \K[\MNSmedlozenge]\medlozenge             &                                   \\
\K[\MNSlargecircle]\largecircle           & \K[\MNSlargesquare]\largesquare       & \K[\MNSmedstarofdavid]\medstarofdavid     &                                   \\
\end{tabular}

\bigskip

\begin{tablenote}
  \MNS\ defines \cmdI[\MNSlargecircle]{\bigcirc} as a synonym for
  \cmdI[\MNSlargecircle]{\largecircle};
  \cmdI[\MNSfilledlargestar]{\bigstar} as a synonym for
  \cmdI[\MNSfilledlargestar]{\filledlargestar};
  \cmdI[\MNSmedlozenge]{\lozenge} as a synonym for
  \cmdI[\MNSmedlozenge]{\medlozenge}; and,
  \cmdI[\MNSfilledmedlozenge]{\blacklozenge} as a synonym for
  \cmdI[\MNSfilledmedlozenge]{\filledmedlozenge}.
\end{tablenote}
\end{symtable}


\begin{symtable}[IFS]{\IFS\ Geometric Shapes}
\index{circles}
\index{diamonds}
\index{geometric shapes}
\index{squares}
\index{triangles}
\label{ifs-geometrical}
\begin{tabular}{*3{ll}}
\K\BigCircle             & \K\FilledBigTriangleRight   & \K\SmallCircle        \\
\K\BigCross              & \K\FilledBigTriangleUp      & \K\SmallCross         \\
\K\BigDiamondshape       & \K\FilledCircle             & \K\SmallDiamondshape  \\
\K\BigHBar               & \K\FilledDiamondShadowA     & \K\SmallHBar          \\
\K\BigLowerDiamond       & \K\FilledDiamondShadowC     & \K\SmallLowerDiamond  \\
\K\BigRightDiamond       & \K\FilledDiamondshape       & \K\SmallRightDiamond  \\
\K\BigSquare             & \K\FilledSmallCircle        & \K\SmallSquare        \\
\K\BigTriangleDown       & \K\FilledSmallDiamondshape  & \K\SmallTriangleDown  \\
\K\BigTriangleLeft       & \K\FilledSmallSquare        & \K\SmallTriangleLeft  \\
\K\BigTriangleRight      & \K\FilledSmallTriangleDown  & \K\SmallTriangleRight \\
\K\BigTriangleUp         & \K\FilledSmallTriangleLeft  & \K\SmallTriangleUp    \\
\K\BigVBar               & \K\FilledSmallTriangleRight & \K\SmallVBar          \\
\K[\ifsCircle]\Circle    & \K\FilledSmallTriangleUp    & \K\SpinDown           \\
\K[\ifsCross]\Cross      & \K\FilledSquare             & \K\SpinUp             \\
\K\DiamondShadowA        & \K\FilledSquareShadowA      & \K[\ifsSquare]\Square \\
\K\DiamondShadowB        & \K\FilledSquareShadowC      & \K\SquareShadowA      \\
\K\DiamondShadowC        & \K\FilledTriangleDown       & \K\SquareShadowB      \\
\K\Diamondshape          & \K\FilledTriangleLeft       & \K\SquareShadowC      \\
\K\FilledBigCircle       & \K\FilledTriangleRight      & \K[\ifsTriangleDown]\TriangleDown \\
\K\FilledBigDiamondshape & \K\FilledTriangleUp         & \K\TriangleLeft       \\
\K\FilledBigSquare       & \K\HBar                     & \K\TriangleRight      \\
\K\FilledBigTriangleDown & \K\LowerDiamond             & \K[\ifsTriangleUp]\TriangleUp \\
\K\FilledBigTriangleLeft & \K\RightDiamond             & \K\VBar               \\
\end{tabular}

\bigskip
\begin{tablenote}
  \begin{morespacing}{1pt}
    The \IFS\ documentation points out that one can use \cmd{\rlap} to
    combine some of the above into useful, new symbols.  For example,
    \cmdI{\BigCircle} and \cmdI{\FilledSmallCircle} combine to give
    ``\,\rlap\FilledSmallCircle\BigCircle\,''.  Likewise,
    \cmdI[\ifsSquare]{\Square} and
    \cmdI[\ifsCross]{\Cross} combine to give
    ``\rlap\ifsCross\ifsSquare''.  See Section~\ref{combining-symbols}
    for more information about constructing new symbols out of
    existing symbols.
  \end{morespacing}
\end{tablenote}
\end{symtable}


\begin{symtable}[DING]{\DING\ Geometric Shapes}
\index{circles}
\index{diamonds}
\index{ellipses (ovals)}
\index{geometric shapes}
\index{ovals}
\index{rectangles}
\index{squares}
\index{triangles}
\label{ding-geometrical}
\begin{tabular}{*3{ll}}
\K\CircleShadow    & \K\Rectangle                   & \K\SquareShadowTopLeft     \\
\K\CircleSolid     & \K\RectangleBold               & \K\SquareShadowTopRight    \\
\K\DiamondSolid    & \K\RectangleThin               & \K\SquareSolid             \\
\K\Ellipse         & \K[\dingSquare]\Square         & \K\TriangleDown            \\
\K\EllipseShadow   & \K\SquareCastShadowBottomRight & \K\TriangleUp              \\
\K\EllipseSolid    & \K\SquareCastShadowTopLeft     \\
\K\HalfCircleLeft  & \K\SquareCastShadowTopRight    \\
\K\HalfCircleRight & \K\SquareShadowBottomRight     \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{\PI\ Geometric Shapes}
\index{circles}
\index{diamonds}
\index{geometric shapes}
\index{rectangles}
\index{squares}
\index{triangles}
\label{pi-geometrical}
\begin{tabular}{*5{ll}}
\Tp{108} & \Tp{111} & \Tp{114} & \Tp{117} & \Tp{121} \\
\Tp{109} & \Tp{112} & \Tp{115} & \Tp{119} & \Tp{122} \\
\Tp{110} & \Tp{113} & \Tp{116} & \Tp{120} \\
\end{tabular}
\end{symtable}


\begin{symtable}[UNI]{\UNI\ Geometric Shapes}
\index{circles}
\index{squares}
\index{triangles}
\index{geometric shapes}
\label{uni-geometrical}
\begin{tabular}{*3{ll}}
\K\baucircle & \K\bausquare & \K\bautriangle \\
\end{tabular}
\end{symtable}


\begin{symtable}[BAYER]{\BAYER\ Geometric Shapes}
\index{circles}
\index{squares}
\index{triangles}
\index{geometric shapes}
\label{bayer-geometrical}
\begin{tabular}{*3{ll}}
\K[\BAYERbaucircle]\baucircle & \K\bauhole  & \K[\BAYERbausquare]\bausquare     \\
\K\baueclipse                 & \K\baupunct & \K[\BAYERbautriangle]\bautriangle \\
\end{tabular}
\end{symtable}


\begin{symtable}[IGO]{\IGO\ Go Stones}
\index{symbols>Go stones}
\index{Go stones}
\index{circles}
\index{squares}
\index{triangles}
\index{crosses}
\index{geometric shapes}
\index{circled numbers}
\index{numbers>circled}
\label{go-stones}
\begin{tabular}{ll@{\qquad}ll}
\IGOb\igocircle   & \IGOw\igocircle   \\
\IGOb\igocross    & \IGOw\igocross    \\
\IGOb\igonone     & \IGOw\igonone     \\
\IGOb\igosquare   & \IGOw\igosquare   \\
\IGOb\igotriangle & \IGOw\igotriangle \\
\end{tabular}

\bigskip

\begin{tablenote}
  In addition to the symbols shown above, \IGO's \cmd{\blackstone} and
  \cmd{\whitestone} commands accept numbers from~1 to~99 and display
  them circled as \blackstone[1], \blackstone[2],
  \blackstone[3],~\dots\ \blackstone[99] and \whitestone[1],
  \whitestone[2], \whitestone[3],~\dots\ \whitestone[99],
  respectively.

  The \IGO\ package is intended to typeset Go\index{Go boards} boards
  (goban\index{goban}).  \seedocs{\IGO}.
\end{tablenote}
\end{symtable}


\begin{symtable}[MAN]{\MAN\ Dangerous Bend Symbols}
\idxboth{dangerous bend}{symbols}
\index{symbols>Knuth's}
\index{Knuth, Donald E.>symbols by}
\idxTBsyms
\label{dangerous-bend}
\begin{tabular}{*3{ll}}
\K\dbend              & \K\lhdbend            & \K\reversedvideodbend \\
\end{tabular}

\bigskip
\begin{tablenote}
   Note that these symbols descend far beneath the baseline.  \MAN\
   also defines non-descending versions, which it calls,
   correspondingly, \cmdI[\string\textdbend]{\textdbend},
   \cmdI[\string\textlhdbend]{\textlhdbend}, and
   \cmdI[\string\textreversedvideodbend]{\textreversedvideodbend}.
\end{tablenote}
\end{symtable}


\begin{symtable}[SKULL]{\SKULL\ Symbols}
\label{skull}
\begin{tabular}{ll}
\K\skull
\end{tabular}
\end{symtable}


\begin{symtable}[ABX]{Non-Mathematical \ABX\ Symbols}
\label{abx-nonmath}
\begin{tabular}{ll}
\X[\ABXrip]\rip
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Information Symbols}
\idxboth{information}{symbols}
\index{check marks}
\index{Xs}
\label{marv-info}
\begin{tabular}{*3{ll}ll}
\K\Bicycle      & \K\Football     & \K\Pointinghand \\
\K\Checkedbox   & \K\Gentsroom    & \K\Wheelchair   \\
\K\Clocklogo    & \K\Industry     & \K\Writinghand  \\
\K\Coffeecup    & \K\Info         \\
\K\Crossedbox   & \K\Ladiesroom   \\
\end{tabular}
\end{symtable}


\begin{symtable}[ARK]{Miscellaneous \ARK\ Dingbats}
\idxboth{miscellaneous}{symbols}
\index{check marks}
\index{carriage return}
\label{ark-misc}
\begin{tabular}{*3{ll}}
\K\anchor         & \K\eye                     & \K\Sborder        \\
\K\carriagereturn & \K\filledsquarewithdots    & \K\squarewithdots \\
\K[\ARKcheckmark]\checkmark & \K\satellitedish & \K\Zborder        \\
\end{tabular}
\end{symtable}


\begin{symtable}[DING]{Miscellaneous \DING\ Dingbats}
\idxboth{miscellaneous}{symbols}
\label{bbding-misc}
\begin{tabular}{*4{ll}}
\K\Envelope             & \K\Peace & \K\PhoneHandset & \K\SunshineOpenCircled \\
\K\OrnamentDiamondSolid & \K\Phone & \K\Plane        & \K\Tape                \\
\end{tabular}
\end{symtable}


\begin{symtable}[PI]{Miscellaneous \PI\ Dingbats}
\idxboth{miscellaneous}{symbols}
\index{card suits}
\index{diamonds (suit)}
\index{hearts (suit)}
\index{clubs (suit)}
\index{spades (suit)}
\label{pi-misc}
\begin{tabular}{*5{ll}}
\Tp{37} & \Tp{40}  & \Tp{164} & \Tp{167} & \Tp{171} \\
\Tp{38} & \Tp{41}  & \Tp{165} & \Tp{168} & \Tp{169} \\
\Tp{39} & \Tp{118} & \Tp{166} & \Tp{170} \\
\end{tabular}
\end{symtable}

\idxbothend{dingbat}{symbols}


\section{Other symbols}
\idxbothbegin{miscellaneous}{symbols}

The following are all the symbols that didn't fit neatly or
unambiguously into any of the previous sections.
\ifcomplete
(Do weather symbols belong under ``Science and technology''?  Should
dice be considered ``mathematics''?)  While some of the tables contain
clearly related groups of symbols (e.g., musical notes), others
represent motley assortments of whatever the font designer felt like
drawing.
\fi

\bigskip


\begin{symtable}{\TC\ Genealogical Symbols}
\idxboth{genealogical}{symbols}
\label{genealogical}
\begin{tabular}{*3{ll}}
\K\textborn     & \K\textdivorced & \K\textmarried  \\
\K\textdied     & \K\textleaf     \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ General Symbols}
\index{symbols>general}
\index{smiley faces}
\index{faces}
\label{wasy-general}
\begin{tabular}{*4{ll}}
\K\ataribox    & \K\clock       & \K\LEFTarrow  & \K\smiley      \\
\K\bell        & \K\diameter    & \K\lightning  & \K\sun         \\
\K\blacksmiley & \K\DOWNarrow   & \K\phone      & \K\UParrow     \\
\K\Bowtie      & \K\frownie     & \K\pointer    & \K\wasylozenge \\
\K\brokenvert  & \K\invdiameter & \K\recorder                    \\
\K\checked     & \K\kreuz       & \K\RIGHTarrow                  \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Circles}
\index{circles}
\label{wasy-circles}
\begin{tabular}{*8l}
\K\CIRCLE         & \K\LEFTcircle     & \K\RIGHTcircle    & \K\rightturn      \\
\K\Circle         & \K\Leftcircle     & \K\Rightcircle    \\
\K\LEFTCIRCLE     & \K\RIGHTCIRCLE    & \K\leftturn       \\
\end{tabular}
\end{symtable}


\begin{symtable}[WASY]{\WASY\ Musical Symbols}
\idxboth{musical}{symbols}
\label{wasy-music}
\begin{tabular}{*{10}l}
\K\eighthnote & \K\halfnote    & \K\twonotes &
\K\fullnote   & \K\quarternote \\
\end{tabular}

\bigskip
\begin{tablenote}
  See also \cmdX{\flat}, \cmdX{\sharp}, and \cmdX{\natural}
  (Table~\vref{ord}).
\end{tablenote}
\end{symtable}


\begin{symtable}[AREV]{\AREV\ Musical Symbols}
\idxboth{musical}{symbols}
\label{arev-music}
\begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
\K[\AREVquarternote]\quarternote &
\K[\AREVeighthnote]\eighthnote &
\K[\AREVsixteenthnote]\sixteenthnote \\
\end{tabular}

\bigskip
\begin{tablenote}
  See also \cmdX{\flat}, \cmdX{\sharp}, and \cmdX{\natural}
  (Table~\vref{ord}).
\end{tablenote}
\end{symtable}


\begin{symtable}[HARM]{\HARM\ Musical Symbols}
\idxboth{musical}{symbols}
\label{harmony-music}
\begin{tabular}{*4{ll@{\hspace{3em}}}ll}
\K\AAcht  & \K\DDohne & \K\Halb   & \K\SechBR & \K\VM     \\
\K\Acht   & \K\Dohne  & \K\HaPa   & \K\SechBr & \K\Zwdr   \\
\K\AchtBL & \K\Ds     & \K\Pu     & \K\SePa   & \K\ZwPa   \\
\K\AchtBR & \K\DS     & \K\Sech   & \K\UB     &           \\
\K\AcPa   & \K\Ganz   & \K\SechBL & \K\Vier   &           \\
\K\DD     & \K\GaPa   & \K\SechBl & \K\ViPa   &           \\
\end{tabular}

\bigskip
\begin{tablenote}
  The \pkgname{musixtex} package must be installed to use \HARM.
\end{tablenote}
\end{symtable}


\begin{symtable}[HARM]{\HARM\ Musical Accents}
\idxboth{musical}{symbols}
\index{accents}
\label{harmony-accents}
\begin{tabular}{ll@{\hspace{3em}}ll}
\Q\Ferli$^*$ & \Q\Ohne$^*$  \\
\Q\Fermi     & \Q\Umd$^*$   \\
\Qc\Kr       &              \\
\end{tabular}

\bigskip
\begin{tablenote}[*]
  These symbols take an optional argument which shifts the accent
  either horizontally or vertically (depending on the command) by the
  given distance.
\end{tablenote}

\bigskip
\begin{tablenote}
  In addition to the accents shown above, \cmd{\HH} is a special
  accent command which accepts five period-separated characters and
  typesets them such that ``\verb|\HH.X.a.b.c.d.|'' produces
  ``\harmHH.X.a.b.c.d.''.  All arguments except the first can be
  omitted: ``\verb|\HH.X.....|'' produces ``\harmHH.X.....''.
  \cmd{\Takt} takes two arguments and composes them into a musical
  time signature.  For example, ``\verb|\Takt{12}{8}|'' produces
  ``\Takt{12}{8}''.  As two special cases, ``\verb|\Takt{c}{0}|''
  produces ``\Takt{c}{0}'' and ``\verb|\Takt{c}{1}|'' produces
  ``\Takt{c}{1}''.

  The \pkgname{musixtex} package must be installed to use \HARM.
\end{tablenote}
\end{symtable}


\begin{symtable}[MAN]{Miscellaneous \MAN\ Symbols}
\index{symbols>Knuth's}
\index{Knuth, Donald E.>symbols by}
\index{symbols>Metafontbook=\MF{}book}\index{Metafontbook symbols=\MF{}book symbols}
\idxTBsyms
\label{knuth}
\begin{tabular}{*2{ll}}
\K\manboldkidney           & \K\manpenkidney            \\
\K\manconcentriccircles    & \K\manquadrifolium         \\
\K\manconcentricdiamond    & \K\manquartercircle        \\
\K\mancone                 & \K\manrotatedquadrifolium  \\
\K\mancube                 & \K\manrotatedquartercircle \\
\K\manerrarrow             & \K\manstar                 \\
\K\manfilledquartercircle  & \K\mantiltpennib           \\
\K\manhpennib              & \K\mantriangledown         \\
\K\manimpossiblecube       & \K\mantriangleright        \\
\K\mankidney               & \K\mantriangleup           \\
\K\manlhpenkidney          & \K\manvpennib              \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Navigation Symbols}
\idxboth{navigation}{symbols}
\label{marv-navigation}
\begin{tabular}{*3{ll}ll}
\K\Forward        & \K\MoveDown  & \K\RewindToIndex  & \K\ToTop \\
\K\ForwardToEnd   & \K\MoveUp    & \K\RewindToStart  \\
\K\ForwardToIndex & \K\Rewind    & \K\ToBottom       \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{\MARV\ Laundry Symbols}
\idxboth{laundry}{symbols}
\label{marv-laundry}
\begin{tabular}{*3{ll}}
\K\AtForty            & \K\Handwash           & \K\ShortNinetyFive    \\
\K\AtNinetyFive       & \K\IroningI           & \K\ShortSixty         \\
\K\AtSixty            & \K\IroningII          & \K\ShortThirty        \\
\K\Bleech             & \K\IroningIII         & \K\SpecialForty       \\
\K\CleaningA          & \K\NoBleech           & \K\Tumbler            \\
\K\CleaningF          & \K\NoChemicalCleaning & \K\WashCotton         \\
\K\CleaningFF         & \K\NoIroning          & \K\WashSynthetics     \\
\K\CleaningP          & \K\NoTumbler          & \K\WashWool           \\
\K\CleaningPP         & \K\ShortFifty         \\
\K\Dontwash           & \K\ShortForty         \\
\end{tabular}
\end{symtable}


\begin{symtable}[MARV]{Other \MARV\ Symbols}
\idxboth{miscellaneous}{symbols}
\index{crosses}
\index{crucifixes}
\index{smiley faces}
\index{faces}
\label{marv-other}
\begin{tabular}{*4{ll}}
\K\Ankh        & \K\Cross        & \K\Heart       & \K\Smiley      \\
\K\Bat         & \K\FHBOlogo     & \K\MartinVogel & \K\Womanface   \\
\K\Bouquet     & \K\FHBOLOGO     & \K\Mundus      & \K\Yinyang     \\
\K\Celtcross   & \K\Frowny       & \K\MVAt                         \\
\K\CircledA    & \K\FullFHBO     & \K\MVRightarrow                 \\
\end{tabular}
\end{symtable}


\begin{symtable}[UNI]{Miscellaneous \UNI\ Symbols}
\index{faces}
\label{uni-misc}
\begin{tabular}{*2{ll}}
\K\bauforms & \K\bauhead \\
\end{tabular}
\end{symtable}


\begin{symtable}[BAYER]{Miscellaneous \BAYER\ Symbols}
\index{window}
\index{faces}
\label{bayer-misc}
\begin{tabular}{*4{ll}}
\K\baudash  & \K[\BAYERbauforms]\bauforms & \K\bauquarter  & \K\varQ \\
\K\bauequal & \K[\BAYERbauhead]\bauhead   & \K\bauquestion &         \\
\K\bauface  & \K\bauplus                  & \K\bauwindow   &         \\
\end{tabular}
\end{symtable}


\begin{symtable}[IFS]{\IFS\ Weather Symbols}
\idxboth{weather}{symbols}
\label{weather}
\begin{tabular}{*4{ll}}
\K\Cloud               & \K\Hail                     & \K\Sleet        & \K\WeakRain        \\
\K\FilledCloud         & \K\HalfSun                  & \K\Snow         & \K\WeakRainCloud   \\
\K\FilledRainCloud     & \K[\ifsLightning]\Lightning & \K\SnowCloud    & \K\FilledSnowCloud \\
\K\FilledSunCloud      & \K\NoSun                    & \K[\ifsSun]\Sun &                    \\
\K\FilledWeakRainCloud & \K\Rain                     & \K\SunCloud     &                    \\
\K\Fog                 & \K\RainCloud                & \K\ThinFog      &                    \\
\end{tabular}

\bigskip
\begin{tablenote}
  \begin{morespacing}{\jot}
    In addition,
    \verb|\Thermo{0}|$\ldots$\verb|\Thermo{6}|\indexcommand{\Thermo}
    produce thermometers that are between 0/6 and 6/6~full of
    mercury:\quad \mbox{\Thermo{0}~~\Thermo{1}~~\Thermo{2}~~\Thermo{3}~~%
    \Thermo{4}~~\Thermo{5}~~\Thermo{6}}
  \end{morespacing}

  \begin{morespacing}{1pt}
    Similarly,
    \cmd{\wind}\verb|{|\meta{sun}\verb|}{|\meta{angle}\verb|}{|\meta{strength}\verb|}|
    will draw wind symbols with a given amount of sun~(0--4), a given
    angle (in degrees), and a given strength in km/h~(0--100).  For
    example, \verb|\wind{0}{0}{0}| produces ``\,\wind{0}{0}{0}\unskip'',
    \verb|\wind{2}{0}{0}| produces ``\,\wind{2}{0}{0}\unskip'', and
    \verb|\wind{4}{0}{100}| produces ``\,\wind{4}{0}{100}\unskip''.
  \end{morespacing}
\end{tablenote}
\end{symtable}


\begin{symtable}[IFS]{\IFS\ Alpine Symbols}
\idxboth{alpine}{symbols}
\label{alpine}
\begin{tabular}{*4{ll}}
\K\SummitSign & \K\Summit         & \K\SurveySign & \K\HalfFilledHut \\
\K\StoneMan   & \K\Mountain       & \K\Joch       & \K\VarSummit     \\
\K\Hut        & \K\IceMountain    & \K\Flag       &                  \\
\K\FilledHut  & \K\VarMountain    & \K\VarFlag    &                  \\
\K\Village    & \K\VarIceMountain & \K\Tent       &                  \\
\end{tabular}
\end{symtable}


\begin{symtable}[IFS]{\IFS\ Clocks}
\idxboth{clock}{symbols}
\index{time of day}
\label{clocks}
\begin{tabular}{*4{ll}}
\K\Interval     & \K\StopWatchStart & \K\VarClock       & \K\Wecker \\
\K\StopWatchEnd & \K\Taschenuhr     & \K\VarTaschenuhr  \\
\end{tabular}

\bigskip
\begin{tablenote}
  \IFS\ also exports a \cmd{\showclock} macro.
  \verb|\showclock{|\meta{hours}\verb|}{|\meta{minutes}\verb|}| outputs
  a clock displaying the corresponding time.  For instance,
  ``\verb|\showclock{5}{40}|'' produces ``\showclock{5}{40}''.
  \meta{hours} must be an integer from 0 to~11, and \meta{minutes} must
  be an integer multiple of~5 from 0 to~55.
\end{tablenote}
\end{symtable}


\begin{symtable}[IFS]{Other \IFS\ Symbols}
\idxboth{miscellaneous}{symbols}
\index{tally markers}
\index{dice}
\label{ifs-misc}
\begin{tabular}{*3{ll}}
\K\FilledSectioningDiamond & \K[\ifsLetter]\Letter
                                               & \K\Radiation         \\
\K\Fire                    & \K\PaperLandscape & \K\SectioningDiamond \\
\K\Irritant                & \K\PaperPortrait  & \K\Telephone         \\[2ex]

\K\StrokeOne               & \K\StrokeThree    & \K\StrokeFive        \\
\K\StrokeTwo               & \K\StrokeFour  \\
\end{tabular}

\bigskip
\begin{tablenote}
  \begin{morespacing}{\jot}
    In addition,
    \verb|\Cube{1}|$\ldots$\verb|\Cube{6}|\indexcommand{\Cube} produce
    dice with the corresponding number of spots:\quad
    \mbox{\Cube{1}~~\Cube{2}~~\Cube{3}~~\Cube{4}~~\Cube{5}~~\Cube{6}}
  \end{morespacing}
\end{tablenote}
\end{symtable}


\begin{symtable}[EDICE]{\EDICE\ Dice}
\idxboth{miscellaneous}{symbols}
\index{dice}
\label{edice}
\begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
  \KED[\allepsdice][\epsdice][\epsdice{1}]\epsdice\verb|{1}| &
  \KED[\allepsdice][\epsdice][\epsdice{3}]\epsdice\verb|{3}| &
  \KED[\allepsdice][\epsdice][\epsdice{5}]\epsdice\verb|{5}| \\
  \KED[\allepsdice][\epsdice][\epsdice{2}]\epsdice\verb|{2}| &
  \KED[\allepsdice][\epsdice][\epsdice{4}]\epsdice\verb|{4}| &
  \KED[\allepsdice][\epsdice][\epsdice{6}]\epsdice\verb|{6}| \\
\end{tabular}

\bigskip

\begin{tablenote}
  The \EDICE\ package does not provide a font but rather an interface
  to a set of graphics drawn in Encapsulated \postscript.
  Consequently, \EDICE\ does not work with pdf\LaTeX.
\end{tablenote}
\end{symtable}


\begin{symtable}[SKAK]{\SKAK\ Chess Informator Symbols}
\idxboth{chess}{symbols}
\idxboth{informator}{symbols}
\begin{tabular}{*4{ll}}
\K\bbetter      & \K\doublepawns   & \K\novelty       & \K\various      \\
\K\bdecisive    & \K\ending        & \K\onlymove      & \K\wbetter      \\
\K\betteris     & \K\equal         & \K\opposbishops  & \K\wdecisive    \\
\K\bishoppair   & \K[\SKAKetc]\etc & \K\passedpawn    & \K\weakpt       \\
\K\bupperhand   & \K\file          & \K\qside         & \K\with         \\
\K\centre       & \K\kside         & \K\samebishops   & \K\withattack   \\
\K\comment      & \K\markera       & \K[\SKAKsee]\see & \K\withidea     \\
\K\compensation & \K\markerb       & \K\seppawns      & \K\withinit     \\
\K\counterplay  & \K\mate          & \K\timelimit     & \K\without      \\
\K\devadvantage & \K\morepawns     & \K\unclear       & \K\wupperhand   \\
\K\diagonal     & \K\moreroom      & \K\unitedpawns   & \K\zugzwang     \\
\end{tabular}

\bigskip
\begin{tablenote}
  \font\chessfont=skak10
  \def\chs#1{{\chessfont#1}}

  The preceding symbols are merely the named informator symbol.
  \SKAK\ can typeset many more chess-related symbols, including those
  for all of the pieces (\chs{KQRBNP}\slash\chs{kqrbnp}), but only in
  the context of moves and boards, not as individual, named \latex
  symbols.
\end{tablenote}
\end{symtable}


\begin{symtable}[METRE]{\METRE\ Metrical Symbols}
\idxboth{metrical}{symbols}
\label{metre}
\begin{tabular}{*5{ll@{\hspace*{2em}}}ll}
\Mt\a     & \Mt\bBm   & \Mt\cc    & \Mt\Mbb   & \Mt\Pppp  & \Mt\t     \\
\Mt\B     & \Mt\bbm   & \Mt\Ccc   & \Mt\mbbx  & \Mt\pppp  & \Mt\tsbm  \\
\Mt\b     & \Mt\Bbm   & \Mt\m     & \Mt\oo    & \Mt\Ppppp & \Mt\tsmb  \\
\Mt\Bb    & \Mt\bbmb  & \Mt\M     & \Mt\p     & \Mt\ppppp & \Mt\tsmm  \\
\Mt\BB    & \Mt\bbmx  & \Mt\ma    & \Mt\pm    & \Mt\ps    & \Mt\vppm  \\
\Mt\bb    & \Mt\bm    & \Mt\Mb    & \Mt\pp    & \Mt\pxp   & \Mt\vpppm \\
\Mt\bB    & \Mt\Bm    & \Mt\mb    & \Mt\Pp    & \Mt\Pxp   & \Mt\x     \\
\Mt\bba   & \Mt\c     & \Mt\mBb   & \Mt\ppm   & \Mt\R                 \\
\Mt\bbb   & \Mt\C     & \Mt\mbB   & \Mt\ppp   & \Mt\r                 \\
\Mt\BBm   & \Mt\Cc    & \Mt\mbb   & \Mt\Ppp   & \Mt\T                 \\
\end{tabular}

\bigskip
\begin{tablenote}
  The preceding symbols are valid only within the argument to the
  \cmd{metre} command.
\end{tablenote}
\end{symtable}


\begin{symtable}[METRE]{\METRE\ Small and Large Metrical Symbols}
\idxboth{metrical}{symbols}
\label{metre-small-large}
\begin{tabular}{ll@{\hspace*{3em}}ll}
\K\anaclasis                         & \K\Anaclasis                         \\
\K[\METREantidiple]\antidiple        & \K[\METREAntidiple]\Antidiple        \\
\K[\METREantidiplestar]{\antidiple*} & \K[\METREAntidiplestar]{\Antidiple*} \\
\K\antisigma                         & \K\Antisigma                         \\
\K\asteriscus                        & \K\Asteriscus                        \\
\K\catalexis                         & \K\Catalexis                         \\
\K[\METREdiple]\diple                & \K[\METREDiple]\Diple                \\
\K[\METREdiplestar]{\diple*}         & \K[\METREDiplestar]{\Diple*}         \\
\K[\METREobelus]\obelus              & \K[\METREObelus]\Obelus              \\
\K[\METREobelusstar]{\obelus*}       & \K[\METREObelusstar]{\Obelus*}       \\
\K[\METRErespondens]\respondens      & \K[\METRERespondens]\Respondens      \\
\K[\METREterminus]\terminus          & \K[\METRETerminus]\Terminus          \\
\K[\METREterminusstar]{\terminus*}   & \K[\METRETerminusstar]{\Terminus*}   \\
\end{tabular}
\end{symtable}


\begin{symtable}[PHAI]{\PHAI\ Symbols from the Phaistos Disk}
\index{Phaistos disk}
\index{symbols>Phaistos disk}
\label{phaistos}
\begin{tabular}{*2{ll@{\hspace*{3em}}}ll}
\K\PHarrow          & \K\PHeagle      & \K\PHplumedHead   \\
\K\PHbee            & \K\PHflute      & \K\PHram          \\
\K\PHbeehive        & \K\PHgaunlet    & \K\PHrosette      \\
\K\PHboomerang      & \K\PHgrater     & \K\PHsaw          \\
\K\PHbow            & \K\PHhelmet     & \K\PHshield       \\
\K\PHbullLeg        & \K\PHhide       & \K\PHship         \\
\K\PHcaptive        & \K\PHhorn       & \K\PHsling        \\
\K\PHcarpentryPlane & \K\PHlid        & \K\PHsmallAxe     \\
\K\PHcat            & \K\PHlily       & \K\PHstrainer     \\
\K\PHchild          & \K\PHmanacles   & \K\PHtattooedHead \\
\K\PHclub           & \K\PHmattock    & \K\PHtiara        \\
\K\PHcolumn         & \K\PHoxBack     & \K\PHtunny        \\
\K\PHcomb           & \K\PHpapyrus    & \K\PHvine         \\
\K\PHdolium         & \K\PHpedestrian & \K\PHwavyBand     \\
\K\PHdove           & \K\PHplaneTree  & \K\PHwoman        \\
\end{tabular}
\end{symtable}


\begin{symtable}[PROTO]{\PROTO\ Proto-Semitic Characters}
\idxboth{proto-Semitic}{symbols}
\index{alphabets>proto-Semitic}
\label{protosem}
\begin{tabular}{*4{ll@{\hspace*{3em}}}ll}
\K[\textproto\Aaleph]\Aaleph &
\K[\textproto\AAhe]\AAhe &
\K[\textproto\Akaph]\Akaph &
\K[\textproto\Asamekh]\Asamekh &
\K[\textproto\AAresh]\AAresh \\

\K[\textproto\AAaleph]\AAaleph &
\K[\textproto\Azayin]\Azayin &
\K[\textproto\AAkaph]\AAkaph &
\K[\textproto\Ape]\Ape &
\K[\textproto\Ashin]\Ashin \\

\K[\textproto\Abeth]\Abeth &
\K[\textproto\Avav]\Avav &
\K[\textproto\Alamed]\Alamed &
\K[\textproto\AApe]\AApe &
\K[\textproto\Ahelmet]\Ahelmet \\

\K[\textproto\AAbeth]\AAbeth &
\K[\textproto\Aheth]\Aheth &
\K[\textproto\AAlamed]\AAlamed &
\K[\textproto\Asade]\Asade &
\K[\textproto\AAhelmet]\AAhelmet \\

\K[\textproto\Agimel]\Agimel &
\K[\textproto\AAheth]\AAheth &
\K[\textproto\Am]\Amem &
\K[\textproto\AAsade]\AAsade &
\K[\textproto\Atav]\Atav \\

\K[\textproto\Adaleth]\Adaleth &
\K[\textproto\Ateth]\Ateth &
\K[\textproto\Anun]\Anun &
\K[\textproto\Aqoph]\Aqoph \\

\K[\textproto\AAdaleth]\AAdaleth &
\K[\textproto\Ayod]\Ayod &
\K[\textproto\Aayin]\Aayin &
\K[\textproto\AAqoph]\AAqoph \\

\K[\textproto\Ahe]\Ahe &
\K[\textproto\AAyod]\AAyod &
\K[\textproto\AAayin]\AAayin &
\K[\textproto\Aresh]\Aresh \\
\end{tabular}

\bigskip
\begin{tablenote}
  The \PROTO\ package defines abbreviated control sequences for each
  of the above.  In addition, single-letter shortcuts can be used
  within the argument to the \cmd{\textproto} command
  (e.g.,~``\verb|\textproto{Pakyn}|'' produces ``\textproto{Pakyn}'').
  \seedocs{\PROTO}.
\end{tablenote}
\end{symtable}


\begin{symtable}[HIER]{\HIER\ Hieroglyphics}
\index{hieroglyphics}
\index{alphabets>hieroglyphic}
\label{hieroglf}
\begin{tabular}{*3{ll@{\hspace*{3em}}}ll}
\K[\textpmhg\HA]\HA           & \K[\textpmhg\HI]\HI           & \K[\textpmhg\Hn]\Hn           & \K[\textpmhg\HT]\HT           \\
\K[\textpmhg\Ha]\Ha           & \K[\textpmhg\Hi]\Hi           & \K[\textpmhg\HO]\HO           & \K[\textpmhg\Ht]\Ht           \\
\K[\textpmhg\HB]\HB           & \K[\textpmhg\Hibl]\Hibl       & \K[\textpmhg\Ho]\Ho           & \K[\textpmhg\Htongue]\Htongue \\
\K[\textpmhg\Hb]\Hb           & \K[\textpmhg\Hibp]\Hibp       & \K[\textpmhg\Hp]\Hp           & \K[\textpmhg\HU]\HU           \\
\K[\textpmhg\Hc]\Hc           & \K[\textpmhg\Hibs]\Hibs       & \K[\textpmhg\HP]\HP           & \K[\textpmhg\Hu]\Hu           \\
\K[\textpmhg\HC]\HC           & \K[\textpmhg\Hibw]\Hibw       & \K[\textpmhg\Hplural]\Hplural & \K[\textpmhg\HV]\HV           \\
\K[\textpmhg\HD]\HD           & \K[\textpmhg\HJ]\HJ           & \K[\textpmhg\Hplus]\Hplus     & \K[\textpmhg\Hv]\Hv           \\
\K[\textpmhg\Hd]\Hd           & \K[\textpmhg\Hj]\Hj           & \K[\textpmhg\HQ]\HQ           & \K[\textpmhg\Hvbar]\Hvbar     \\
\K[\textpmhg\Hdual]\Hdual     & \K[\textpmhg\Hk]\Hk           & \K[\textpmhg\Hq]\Hq           & \K[\textpmhg\Hw]\Hw           \\
\K[\textpmhg\He]\He           & \K[\textpmhg\HK]\HK           & \K[\textpmhg\Hquery]\Hquery   & \K[\textpmhg\HW]\HW           \\
\K[\textpmhg\HE]\HE           & \K[\textpmhg\HL]\HL           & \K[\textpmhg\HR]\HR           & \K[\textpmhg\HX]\HX           \\
\K[\textpmhg\Hf]\Hf           & \K[\textpmhg\Hl]\Hl           & \K[\textpmhg\Hr]\Hr           & \K[\textpmhg\Hx]\Hx           \\
\K[\textpmhg\HF]\HF           & \K[\textpmhg\Hm]\Hm           & \K[\textpmhg\Hs]\Hs           & \K[\textpmhg\HY]\HY           \\
\K[\textpmhg\HG]\HG           & \K[\textpmhg\HM]\HM           & \K[\textpmhg\HS]\HS           & \K[\textpmhg\Hy]\Hy           \\
\K[\textpmhg\Hg]\Hg           & \K[\textpmhg\Hman]\Hman       & \K[\textpmhg\Hscribe]\Hscribe & \K[\textpmhg\Hz]\Hz           \\
\K[\textpmhg\Hh]\Hh           & \K[\textpmhg\Hms]\Hms         & \K[\textpmhg\Hslash]\Hslash   & \K[\textpmhg\HZ]\HZ           \\
\K[\textpmhg\HH]\HH           & \K[\textpmhg\HN]\HN           & \K[\textpmhg\Hsv]\Hsv         &                               \\
~\\[2ex]
\K[\textpmhg\Hone]\Hone & \K[\textpmhg\Hhundred]\Hhundred & \K[\textpmhg\HXthousand]\HXthousand & \K[\textpmhg\Hmillion]\Hmillion \\
\K[\textpmhg\Hten]\Hten & \K[\textpmhg\Hthousand]\Hthousand & \K[\textpmhg\HCthousand]\HCthousand \\
\end{tabular}

\bigskip
\begin{tablenote}
  The \HIER\ package defines alternate control sequences and
  single-letter shortcuts for each of the above which can be used
  within the argument to the \cmd{\textpmhg} command
  (e.g.,~``\verb|\textpmhg{Pakin}|'' produces ``\textpmhg{Pakin}'').
  \seedocs{\HIER}.
\end{tablenote}
\end{symtable}


\begin{symtable}[DICT]{\DICT\ Dictionary Symbols}
\idxboth{dictionary}{symbols}
\label{dictionary}
\begin{tabular}{*2{ll@{\hspace*{3em}}}ll}
\K\dsaeronautical  & \K\dscommercial    & \K\dsmedical       \\
\K\dsagricultural  & \K\dsheraldical    & \K\dsmilitary      \\
\K\dsarchitectural & \K\dsjuridical     & \K\dsrailways      \\
\K\dsbiological    & \K\dsliterary      & \K\dstechnical     \\
\K\dschemical      & \K\dsmathematical  &                    \\
\end{tabular}
\end{symtable}


\begin{symtable}[SIMP]{\SIMP\ Characters from \emph{The Simpsons}}
\index{symbols>Simpsons characters}
\index{Simpsons characters}
\index{faces}
\label{simpsons}
\begin{tabular}{*3{ll@{\hspace*{3em}}}ll}
\K\Bart  & \K\Homer & \K\Maggie & \K\SNPP \\
\K\Burns & \K\Lisa  & \K\Marge  &         \\
\end{tabular}

\bigskip

\begin{tablenote}
  The location of the characters' pupils can be controlled with the
  \cmd{\Goofy} command.  See \emph{A \MF\ of `Simpsons'
  characters}~\cite{Chen1997} for more information.  Also, each of the
  above can be prefixed with \cmd{\Left} to make the character face
  left instead of right:

  \begin{center}
    \begin{tabular}{ll}
      \Left\Bart & \verb|\Left\Bart| \\
    \end{tabular}
  \end{center}
\end{tablenote}
\end{symtable}


\begin{longsymtable}[STAVE]{\STAVE\ Magical Staves}
\index{symbols>staves}
\index{symbols>magical signs}
\index{magical signs}
\index{staves}
\index{Icelandic staves}
\label{staves}
\begin{longtable}{*2{ll@{\hspace*{3em}}}ll}
\multicolumn{6}{l}{\small\textit{(continued from previous page)}} \\[3ex]
\endhead
\endfirsthead
\\[3ex]
\multicolumn{6}{r}{\small\textit{(continued on next page)}}
\endfoot
\endlastfoot
\K\staveI     & \K\staveXXIV    & \K\staveXLVII  \\
\K\staveII    & \K\staveXXV     & \K\staveXLVIII \\
\K\staveIII   & \K\staveXXVI    & \K\staveXLIX   \\
\K\staveIV    & \K\staveXXVII   & \K\staveL      \\
\K\staveV     & \K\staveXXVIII  & \K\staveLI     \\
\K\staveVI    & \K\staveXXIX    & \K\staveLII    \\
\K\staveVII   & \K\staveXXX     & \K\staveLIII   \\
\K\staveVIII  & \K\staveXXXI    & \K\staveLIV    \\
\K\staveIX    & \K\staveXXXII   & \K\staveLV     \\
\K\staveX     & \K\staveXXXIII  & \K\staveLVI    \\
\K\staveXI    & \K\staveXXXIV   & \K\staveLVII   \\
\K\staveXII   & \K\staveXXXV    & \K\staveLVIII  \\
\K\staveXIII  & \K\staveXXXVI   & \K\staveLIX    \\
\K\staveXIV   & \K\staveXXXVII  & \K\staveLX     \\
\K\staveXV    & \K\staveXXXVIII & \K\staveLXI    \\
\K\staveXVI   & \K\staveXXXIX   & \K\staveLXII   \\
\K\staveXVII  & \K\staveXL      & \K\staveLXIII  \\
\K\staveXVIII & \K\staveXLI     & \K\staveLXIV   \\
\K\staveXIX   & \K\staveXLII    & \K\staveLXV    \\
\K\staveXX    & \K\staveXLIII   & \K\staveLXVI   \\
\K\staveXXI   & \K\staveXLIV    & \K\staveLXVII  \\
\K\staveXXII  & \K\staveXLV     & \K\staveLXVIII \\
\K\staveXXIII & \K\staveXLVI    &                \\
\end{longtable}

\bigskip

\begin{tablenote}
  The meanings of these symbols are described on the Web site for the
  Museum of Icelandic Sorcery and Witchcraft\index{Museum of Icelandic
  Sorcery and Witchcraft} at
  \url{http://www.galdrasyning.is/index.php?option=com_content&task=category&sectionid=5&id=18&Itemid=60}
  (TinyURL: \url{http://tinyurl.com/25979m}).  For example,
  \cmdI{\staveL}~(``\staveL'') is intended to ward off
  ghosts\index{ghosts} and evil\index{evil spirits} spirits.
\end{tablenote}
\end{longsymtable}


\idxbothend{miscellaneous}{symbols}


\section{Additional Information}
\label{addl-info}

Unlike the previous sections of this document, Section~\ref{addl-info}
does not contain new symbol tables.  Rather, it provides additional
help in using the \doctitle.  First, it draws attention to symbol
names used by multiple packages.  Next, it provides some guidelines
for finding symbols and gives some examples regarding how to construct
missing symbols out of existing ones.  Then, it comments on the
spacing surrounding symbols in math mode.  After that, it presents an
ASCII and Latin~1 quick-reference guide, showing how to enter all of
the standard ASCII/Latin~1 symbols in \latex{}.  And finally, it lists
some statistics about this document itself.

\subsection{Symbol Name Clashes}

% Rather than create a rat's nest of \if statements, we keep the table
% whole and have each symbol conditionally appear.
\makeatletter
\DeclareRobustCommand{\trysym}[1]{\@ifundefined{#1}{\mbox{\tiny N/A}}{\csname#1\endcsname}}
\makeatother

Unfortunately, a number of symbol names are not unique; they appear in
more than one package.  Depending on how the symbols are defined in
each package, \latex{} will either output an error message or replace
an earlier-defined symbol with a later-defined symbol.
Table~\ref{name-clashes} presents a selection of name clashes that
appear in this document.
\ifcomplete
\else
  The symbol ``\trysym{NONEXISTENT}'' is used to indicate that the
  corresponding package was not available when \selftex was compiled.
\fi

\begin{nonsymtableL}{Symbol Name Clashes}
\label{name-clashes}
\begin{tabular}{@{}lp{0.3em}cccccccccc@{}} \toprule
  Symbol && \latexE & \AmS & \ST & \WASY & \ABX & \MARV & \DING & \IFS & \ARK & \WIPA \\
  \cmidrule(r){1-1}\cmidrule(l){3-12}
  %
  \cmdI[$\trysym{baro}$ vs.\ \trysym{WSUbaro}]{\baro} &&
    & & $\trysym{baro}$ & & & & & & & \trysym{WSUbaro} \\
  \cmdI[$\string\bigtriangledown$ vs.\ $\trysym{STbigtriangledown}$]{\bigtriangledown} &&
    $\bigtriangledown$ & & $\trysym{STbigtriangledown}$ \\
  \cmdI[$\string\bigtriangleup$ vs.\ $\trysym{STbigtriangleup}$]{\bigtriangleup} &&
    $\bigtriangleup$ & & $\trysym{STbigtriangleup}$ \\
  \cmdI[\trysym{checkmark} vs.\ \trysym{ARKcheckmark}]{\checkmark} &&
    & \trysym{checkmark} & & & & & & & \trysym{ARKcheckmark} \\
  \cmdI[\trysym{Circle} vs.\ \trysym{ifsCircle}]{\Circle} &&
    & & & \trysym{Circle} & & & & \trysym{ifsCircle} \\
  \cmdI[\trysym{Cross} vs.\ \trysym{dingCross} vs.\ \trysym{ifsCross}]{\Cross} &&
    & & & & & \trysym{Cross} & \trysym{dingCross} & \trysym{ifsCross} \\
  \cmdI[$\trysym{ggg}$ vs.\ $\trysym{ABXggg}$]{\ggg} &&
    & $\trysym{ggg}$ & & & $\trysym{ABXggg}$ \\
  \cmdI[\trysym{Letter} vs.\ \trysym{ifsLetter}]{\Letter} &&
    & & & & & \trysym{Letter} & & \trysym{ifsLetter} \\
  \cmdI[$\trysym{STlightning}$ vs.\ \trysym{WASYlightning}]{\lightning} &&
    & & $\trysym{STlightning}$ & \trysym{WASYlightning} \\
  \cmdI[\trysym{Lightning} vs.\ \trysym{ifsLightning}]{\Lightning} &&
    & & & & & \trysym{Lightning} & & \trysym{ifsLightning} \\
  \cmdI[$\trysym{lll}$ vs.\ $\trysym{ABXlll}$]{\lll} &&
    & $\trysym{lll}$ & & & $\trysym{ABXlll}$ \\
  \cmdI[\trysym{Square} vs.\ \trysym{dingSquare} vs.\ \trysym{ifsSquare}]{\Square} &&
    & & & \trysym{Square} & & & \trysym{dingSquare} & \trysym{ifsSquare} \\
  \cmdI[\trysym{Sun} vs.\ \trysym{ifsSun} vs.\ $\trysym{ABXSun}$]{\Sun} &&
    & & & & $\trysym{ABXSun}$ & \trysym{Sun} & & \trysym{ifsSun} \\
  \cmdI[\trysym{TriangleDown} vs.\ \trysym{ifsTriangleDown}]{\TriangleDown} &&
    & & & & & & \trysym{TriangleDown} & \trysym{ifsTriangleDown} \\
  \cmdI[\trysym{TriangleUp} vs.\ \trysym{ifsTriangleUp}]{\TriangleUp} &&
    & & & & & & \trysym{TriangleUp} & \trysym{ifsTriangleUp} \\
  \bottomrule
\end{tabular}
\end{nonsymtableL}


Using multiple symbols with the same name in the same document---or
even merely loading conflicting symbol packages---can be tricky but,
as evidenced by the existence of Table~\ref{name-clashes}, not
impossible.  The general procedure is to load the first package,
rename the conflicting symbols, and then load the second package.
Examine the \latex{} source for this document (\selftex) for examples
of this and other techniques for handling symbol conflicts.  Note that
\selftex's \cmd{\savesymbol} and \cmd{\restoresymbol} macros have been
extracted into the \pkgname{savesym} package, which can be downloaded
from CTAN\idxCTAN.

\ifTX

\TX\ and \PX\ redefine a huge number of symbols---essentially, all of
the symbols defined by \pkgname{latexsym}, \TC, the various \AMS\
symbol sets, and \latexE\ itself.
\ifABX
  Similarly, \ABX\ redefines a vast number of math symbols in an
  attempt to improve their look.  The \TX, \PX, and \ABX\ conflicts
\else
  The \TX\ and \PX\ conflicts
\fi
are not listed in Table~\ref{name-clashes} because they are designed
to be compatible with the symbols they replace.
Table~\vref{benign-clash} illustrates what ``compatible'' means in
this context.

\begin{nonsymtable}{Example of a Benign Name Clash}
\label{benign-clash}
\begin{tabular}{@{}lcc@{}} \toprule
& Default & \TX \\
\multicolumn{1}{c}{\raisebox{1ex}[0pt][0pt]{Symbol}} &
(\PSfont{Computer Modern}) &
(\PSfont{Times Roman}) \\ \cmidrule(r){1-1}\cmidrule(l){2-3}
\texttt{R} & \Huge R & {\fontfamily{txr}\selectfont \Huge R} \\
\cmdI{\textrecipe} & \Huge\textrecipe &
  {\fontfamily{txr}\selectfont \Huge\textrecipe} \\
\bottomrule
\end{tabular}
\end{nonsymtable}

To use the new \TXPX\ symbols without altering the document's main font,
merely reset the default font families back to their original values
after loading one of those packages:

\begin{verbatim}
   \renewcommand\rmdefault{cmr}
   \renewcommand\sfdefault{cmss}
   \renewcommand\ttdefault{cmtt}
\end{verbatim}

\fi   % TX test


\subsection{Resizing symbols}
\label{resizing-symbols}

Mathematical symbols listed in this document as
``variable-sized\idxboth{variable-sized}{symbols}'' are designed to
stretch vertically.  Each
variable-sized\idxboth{variable-sized}{symbols} symbol comes in one or
more basic sizes plus a variation comprising both stretchable and
nonstretchable segments.  Table~\vref{var-sized-syms} presents the
symbols \cmdX{\}} and \cmdX{\uparrow} in their default size, in their
\cmd{\big}, \cmd{\Big}, \cmd{\bigg}, and \cmd{\Bigg} sizes, in an even
larger size achieved using \cmd{\left}\slash\cmd{\right}, and---for
contrast---in a large size achieved by changing the font size using
\latexE's \cmd{\fontsize} command.  Because the symbols shown belong
to the \PSfont{Computer Modern} family, the \pkgname{type1cm} package
needs to be loaded to support font sizes larger than 24.88\,pt.

\begin{nonsymtable}{Sample resized delimiters}
\idxboth{variable-sized}{symbols}
\label{var-sized-syms}
\newcommand{\maketall}[1]{\ensuremath{\left.\rule{0pt}{1.5cm}\right#1}}
\newcommand{\makebig}[1]{\fontsize{3cm}{3cm}\selectfont\ensuremath{#1}}
\begin{tabular}{@{}*8c@{}}
  \toprule
  Symbol &
  Default size &
  \cmd{\big} &
  \cmd{\Big} &
  \cmd{\bigg} &
  \cmd{\Bigg} &
  \cmd{\left}\,/\,\cmd{\right} &
  \cmd{\fontsize} \\
  \midrule

  \verb|\}| &
  $\}$ &
  $\big\}$ &
  $\Big\}$ &
  $\bigg\}$ &
  $\Bigg\}$ &
  \maketall\} &
  \makebig\} \\

  \verb|\uparrow| &
  $\uparrow$ &
  $\big\uparrow$ &
  $\Big\uparrow$ &
  $\bigg\uparrow$ &
  $\Bigg\uparrow$ &
  \maketall\uparrow &
  \makebig\uparrow \\
  \bottomrule
\end{tabular}
\end{nonsymtable}

Note how \cmd{\fontsize} makes the symbol wider and thicker.  (The
\pkgname{graphicx} package's \cmd{\scalebox} or \cmd{\resizebox}
commands would produce a similar effect.)  Also, the
\cmd{\fontsize}-enlarged symbol is vertically centered relative to
correspondingly large text, unlike the symbols enlarged using
\cmd{\big} et al.\ or \cmd{\left}\slash\cmd{\right}, which all use the
same math axis regardless of symbol size.  However, \cmd{\fontsize} is
not limited to mathematical delimiters.  Also, \cmd{\scalebox} and
\cmd{\resizebox} are more robust to poorly composed symbols (e.g.,~two
symbols made to overlap by backspacing a fixed distance) but do not
work with every \tex backend and will produce jagged symbols when
scaling a bitmapped font.

\ifhavemultirow

All variable-sized delimiters are defined (by the corresponding
\texttt{.tfm} file) in terms of up to five segments, as illustrated by
Figure~\vref{extensible-brace}.  The top, middle, and bottom segments
are of a fixed size.  The top-middle and middle-bottom segments (which
are constrained to be the same character) are repeated as many times
as necessary to achieve the desired height.

\begin{figure}[htbp]
\centering
\renewcommand{\arraystretch}{2}
\newcommand{\cmexchar}{\usefont{OMX}{cmex}{m}{n}\selectfont\char}
\newlength{\braceheight}
\setlength{\braceheight}{6.5\baselineskip}
\begin{tabular}{@{}ccl@{}}
  \multirow{5}*{$\left.\rule{0pt}{\braceheight}\right\} \longrightarrow$}
  & \cmexchar'71 & top \\
  & \cmexchar'76 & top-middle (extensible) \\
  & \cmexchar'75 & middle \\
  & \cmexchar'76 & middle-bottom (extensible) \\
  & \cmexchar'73 & bottom \\
  \\
\end{tabular}
\index{symbols>extensible}
\caption{Implementation of variable-sized delimiters}
\label{extensible-brace}
\end{figure}

\fi    % havemultirow test


\subsection{Where can I find the symbol for~\dots?}
\label{combining-symbols}

If you can't find some symbol you're looking for in this document, there
are a few possible explanations:

\begin{itemize}
  \item The symbol isn't intuitively named.  As a few examples, the
  \IFS\ command to draw dice\index{dice} is ``\cmd{\Cube}''; a plus
  sign with a circle around it (``exclusive or''\index{exclusive or}
  to computer engineers) is ``\cmdX{\oplus}''; and lightning bolts in
  fonts designed by German speakers may have ``blitz'' in their names
  as in the \ULSY\ package.  The moral of the story is to be creative
  with synonyms when searching the index.

  \item The symbol is defined by some package that I overlooked (or
  deemed unimportant).  If there's some symbol package that you think
  should be included in the \doctitle, please send me e-mail at the
  address listed on the title page.

  \item The symbol isn't defined in any package whatsoever.
\end{itemize}

\ifcomplete
  Even in the last case, all is not lost.  Sometimes, a symbol exists
  in a font, but there is no \latex{} binding for it.  For example,
  the \postscript \PSfont{Symbol} font contains a
  ``\Pisymbol{psy}{191}''\index{arrows} symbol, which may be useful
  for representing a carriage\index{carriage return} return, but there
  is no package (as far as I know) for accessing that symbol.  To
  produce an unnamed symbol, you need to switch to the font explicitly
  with \latexE's low-level font commands~\cite{fntguide} and use
  \tex's primitive \cmd{\char} command~\cite{Knuth:ct-a} to request a
  specific character number in the font.\footnote{\pkgname{pifont}
  defines a convenient \cmd{\Pisymbol} command for accessing symbols
  in \postscript\index{PostScript fonts} fonts by number.  For example,
  ``\cmd{\Pisymbol}\texttt{\string{psy\string}\string{191\string}}''
  produces ``\Pisymbol{psy}{191}''.}
\ifOTII    % Not covered by \ifcomplete
  In fact, \cmd{\char} is not strictly necesssary; the character can
  often be entered symbolically.
  \index{sha=sha ({\fontencoding{OT2}\selectfont SH})|(}
  For example, the symbol for an impulse train or Tate-Shafarevich
  group (``{\fontencoding{OT2}\selectfont SH}'') is actually an
  uppercase \textit{sha} in the Cyrillic\index{alphabets>Cyrillic}
  alphabet.  (Cyrillic is supported by the OT2 \fntenc[OT2], for
  instance).  While a \textit{sha} can be defined numerically as
  ``\verb|{\fontencoding{OT2}|\linebreak[0]\verb|\selectfont\char88}|''
  it may be more intuitive to use the OT2 \fntenc[OT2]'s ``SH''
  ligature:
  ``\verb|{\fontencoding{OT2}|\linebreak[0]\verb|\selectfont SH}|''.
  \index{sha=sha ({\fontencoding{OT2}\selectfont SH})|)}
\fi    % OTII test


  \subsubsection*{Reflecting and rotating existing symbols}

  \mbox{}    % Force the \index commands into the paragraph proper.
  \index{symbols>reversed|(}
  \index{symbols>rotated|(}
  \index{symbols>upside-down|(}
  \index{symbols>inverted|(}
  \index{reversed symbols|(}
  \index{rotated symbols|(}
  \index{upside-down symbols|(}
  \index{inverted symbols|(}
  \DeclareRobustCommand{\irony}{\textsuperscript{\reflectbox{?}}}
  A common request on \ctt is for a reversed or rotated version of an
  existing symbol.  As a last resort, these effects can be achieved
  with the \pkgname{graphicx} (or \pkgname{graphics}) package's
  \cmd{\reflectbox} and \cmd{\rotatebox} macros.
  \newcommand{\definitedescription}{\rotatebox[origin=c]{180}{$\iota$}}
  For example, \verb|\textsuperscript{\reflectbox{?}}| produces an
  irony\index{irony mark=irony mark (\irony)} mark~(``\,\irony\,'';
  cf.~\url{http://en.wikipedia.org/wiki/Irony_mark}), and
  \verb|\rotatebox[origin=c]{180}{$\iota$}| produces the
  definite-description\index{definite-description operator
  (\definitedescription)}
  operator~(``\rotatebox[origin=c]{180}{$\iota$}'').  The disadvantage
  of the \pkgname{graphicx}/\pkgname{graphics} approach is that not
  every \tex backend handles graphical transformations.\footnote{As an
  example, Xdvi\index{Xdvi} ignores both \cmd{\reflectbox} and
  \cmd{\rotatebox}.}  Far better is to find a suitable font that
  contains the desired symbol in the correct orientation.  For
  instance, if the \PHON\ package is available, then
  \verb|\textit{\riota}| will yield a
  backend-independent~``\textit{\riota}''.
  Similarly,\label{page:such-that} \TIPA's
  \cmdI{\textrevepsilon}~(``\textrevepsilon'') or \WIPA's
  \cmdI{\revepsilon}~(``\revepsilon'') may be used to express the
  mathematical notion of ``such\index{such that} that'' in a cleaner
  manner than with \cmd{\reflectbox} or
  \cmd{\rotatebox}.\footnote{More common symbols for representing
  ``such\index{such that} that'' include ``\texttt{|}'',
  ``\texttt{:}'', and ``\texttt{s.t.}''.}
  \index{symbols>reversed|)}
  \index{symbols>rotated|)}
  \index{symbols>upside-down|)}
  \index{symbols>inverted|)}
  \index{reversed symbols|)}
  \index{rotated symbols|)}
  \index{inverted symbols|)}

  \subsubsection*{Joining and overlapping existing symbols}

  Symbols that do not exist in any font can sometimes be fabricated
  out of existing symbols.  The \latexE{} source file \fontdefdtx
  contains a number of such definitions.  For example, \cmdX{\models}
  (see Table~\vref{rel}) is defined in that file with:
\else
  Even in the last case, all is not lost.  Sometimes, a symbol exists
  in a font, but there is no \latex{} binding for it.

  \subsubsection*{Reflecting and rotating existing symbols}

  Rotated/reflected versions of an existing symbol can be produced
  using the \pkgname{graphicx} (or \pkgname{graphics}) package's
  \cmd{\reflectbox} and \cmd{\rotatebox} macros.\footnote{This should
  be used as a last resort.  Not every \tex backend supports graphical
  transformations.}

  \subsubsection*{Joining and overlapping existing symbols}

  If a symbol does not exist in any orientation in any font, it may be
  possible to fabricate it out of existing symbols.  The \latexE{}
  source file \fontdefdtx contains a number of such definitions.  For
  example, \cmdX{\models} (see Table~\vref{rel}) is defined in that
  file with:
\fi    % Matches \ifcomplete ...

\begin{verbatim}
   \def\models{\mathrel|\joinrel=}
\end{verbatim}

\noindent
where \cmd{\mathrel} and \cmd{\joinrel} are used to control the
horizontal spacing.  \verb|\def| is the \tex primitive upon which
\latex's \verb|\newcommand| is based.  See \TeXbook for more
information on all three of those commands.

\newcommand{\ismodeledby}{\ensuremath{=\joinrel\mathrel|}}
With some simple pattern-matching, one can easily define a backward
\cmdX{\models} sign (``\ismodeledby''):

\begin{verbatim}
   \def\ismodeledby{=\joinrel\mathrel|}
\end{verbatim}
\indexcommand[\string\ismodeledby]{\ismodeledby}

In general, arrows/harpoons, horizontal lines (``='', ``-'',
``\cmdX{\relbar}'', and ``\cmdX{\Relbar}''), and the various
math-extension characters can be combined creatively with
miscellaneous other characters to produce a variety of new symbols.
Of course, new symbols can be composed from \emph{any} set of existing
characters.  For instance, \latex defines \cmdX{\hbar} (``$\hbar$'')
as a ``$\mathchar'26$'' character (\verb|\mathchar'26|) followed by a
backspace of 9~math units (\verb|\mkern-9mu|), followed by the
letter~``$h$'':

\begin{verbatim}
   \def\hbar{{\mathchar'26\mkern-9muh}}
\end{verbatim}

\noindent
We can just as easily define other barred\idxboth{barred}{letters}
letters:

\def\bbar{{\mathchar'26\mkern-9mu b}}
\def\dbar{{\mathchar'26\mkern-12mu d}}

\begin{verbatim}
   \def\bbar{{\mathchar'26\mkern-9mu b}}
   \def\dbar{{\mathchar'26\mkern-12mu d}}
\end{verbatim}

\noindent
(The space after the ``mu'' is optional but is added for clarity.)
\cmdX{\bbar} and \cmdX{\dbar} define ``$\bbar$'' and ``$\dbar$'',
respectively.  Note that \cmdX{\dbar} requires a greater backward
math~kern than \cmdX{\bbar}; a $-9$\,mu~kern would have produced
the less-attractive ``$\mathchar'26\mkern-9mu d$'' glyph.

The \pkgname{amsmath} package provides \cmd{\overset} and
\cmd{\underset} commands for placing one symbol respectively above or
below another.  For example,
\verb|\overset{G}{\sim}|\footnote{\LaTeX's \cmd{\stackrel} command is
similar but is limited to placing a symbol above a binary relation.}
produces ``$\overset{G}{\sim}$'' (sometimes used for
``equidecomposable\index{equidecomposable} with respect to~$G$'').

\DeclareRobustCommand{\asterism}{\smash{%
   \raisebox{-.5ex}{%
     \setlength{\tabcolsep}{-.5pt}%
     \begin{tabular}{@{}cc@{}}%
       \multicolumn2c*\\[-2ex]*&*%
     \end{tabular}}}}

Sometimes an ordinary \texttt{tabular} environment can be co-opted
into juxtaposing existing symbols into a new symbol.  Consider the
following definition of \cmdI{\asterism}~(``\asterism'') from a
June~2007 post to \ctt by \person{Peter}{Flynn}:

\begin{verbatim}
    \newcommand{\asterism}{\smash{%
       \raisebox{-.5ex}{%
         \setlength{\tabcolsep}{-.5pt}%
         \begin{tabular}{@{}cc@{}}%
           \multicolumn2c*\\[-2ex]*&*%
         \end{tabular}}}}
\end{verbatim}

\noindent
Note how the space between columns (\cmd{\tabcolsep}) and rows
(\verb|\\[|\dots\verb|]|) is made negative to squeeze the asterisks
closer together.

\bigskip

There is a \tex primitive called \cmd{\mathaccent} that centers one
mathematical symbol atop another.  For\label{page:dotcup} example, one
can define \cmdX{\dotcup} (``\dotcup'')---the composition of a
\cmdX{\cup} and a \cmdX{\cdot}---as follows:

\begin{verbatim}
    \newcommand{\dotcup}{\ensuremath{\mathaccent\cdot\cup}}
\end{verbatim}

\noindent
The catch is that \cmd{\mathaccent} requires the accent to be a ``math
character''.  That is, it must be a character in a math font as
opposed to a symbol defined in terms of other symbols.  See \TeXbook
for more information.

Another \tex primitive that is useful for composing symbols is
\cmd{\vcenter}.  \cmd{\vcenter} is conceptually similar to
``\verb|\begin{tabular}{l}|'' in \latex but takes a list of vertical
material instead of \verb|\\|-separated rows.  Also, it vertically
centers the result on the math axis.  (Many operators, such as ``$+$''
and ``$-$'' are also vertically centered on the math axis.)
\person{Enrico}{Gregorio} posted the following symbol definition to
\ctt in March~2004 in response to a query about an alternate way to
denote equivalence:

\newcommand*{\threesim}{%
  \mathrel{\vcenter{\offinterlineskip
  \hbox{$\sim$}\vskip-.35ex\hbox{$\sim$}\vskip-.35ex\hbox{$\sim$}}}}

\begin{verbatim}
    \newcommand*{\threesim}{%
      \mathrel{\vcenter{\offinterlineskip
      \hbox{$\sim$}\vskip-.35ex\hbox{$\sim$}\vskip-.35ex\hbox{$\sim$}}}}
\end{verbatim}

\noindent
The \cmdX{\threesim} symbol, which vertically centers three
\cmdX{\sim}~(``$\sim$'') symbols with 0.35 $x$-heights of space
between them, is rendered as ``$\threesim$''.  \cmd{\offinterlineskip}
is a macro that disables implicit interline spacing.  Without it,
\cmdX{\threesim} would have a full line of vertical spacing between
each \cmdX{\sim}.  Because of \cmd{\vcenter}, \cmdX{\threesim} aligns
properly with other math operators: \mbox{$a \div b \threesim c \times
d$}.

\makeatletter
\providecommand\barcirc{\mathpalette\@barred\circ}
\def\@barred#1#2{\ooalign{\hfil$#1-$\hfil\cr\hfil$#1#2$\hfil\cr}}
\newcommand\stst{^{\protect\barcirc}}
\makeatother

A related \latex command, borrowed from Plain \tex, is \cmd{\ooalign}.
\cmd{\ooalign} vertically overlaps symbols and works both within and
outside of math mode.  Essentially, it creates a single-column
\texttt{tabular} environment with zero vertical distance between rows.
However, because it is based directly on \tex's \cmd{\ialign}
primitive, \cmd{\ooalign} uses \tex's tabular syntax instead of
\latex's (i.e.,~with \cmd{\cr} as the row terminator instead of
\cmd{\\}).  The following example of \cmd{\ooalign}, a macro that
defines a standard-state\index{standard state} symbol~(\cmdX{\stst},
``$\stst$'') as a superscripted Plimsoll\index{Plimsoll line}
line~(\cmdX{\barcirc}, ``$\barcirc$''),%
\ifST
  \footnote{While \cmdX{\barcirc} illustrates how to combine symbols
  using \cmd{\ooalign}, the \ST\ package's \cmdX{\minuso} command
  (Table~\vref{st-bin}) provides a similar glyph~(``$\minuso$'') as a
  single, indivisible symbol.}
\fi    % ST test
 is due to an October~2007 \ctt post by \person{Donald}{Arseneau}:

\begin{verbatim}
    \makeatletter
    \providecommand\barcirc{\mathpalette\@barred\circ}
    \def\@barred#1#2{\ooalign{\hfil$#1-$\hfil\cr\hfil$#1#2$\hfil\cr}}
    \newcommand\stst{^{\protect\barcirc}}
    \makeatother
\end{verbatim}

In the preceding code, note the \cmd{\ooalign} call's use of
\cmd{\hfil} to horizontally center a minus sign~(``$-$'') and a
\cmdX{\circ}~(``$\circ$'').

\DeclareRobustCommand{\suchthat}{%
  \mathrel{\ooalign{$\ni$\cr\kern-1pt$-$\kern-6.5pt$-$}}}

As another example of \cmd{\ooalign}, consider the following code (due
to \person{Enrico}{Gregorio} in a June~2007 post to \ctt) that
overlaps a \cmdX{\ni}~(``$\ni$'') and two minus
signs~(``$-$\kern-6.5pt$-$'') to produce
``$\suchthat$''\indexcommand[$\suchthat$]{\suchthat}%
\ifcomplete
  , an obscure variation on the infrequently used ``\textrevepsilon''
  symbol for ``such\index{such that} that''%
  discussed~\vpageref[above]{page:such-that}%
\fi
:

\begin{verbatim}
    \newcommand{\suchthat}{%
      \mathrel{\ooalign{$\ni$\cr\kern-1pt$-$\kern-6.5pt$-$}}}
\end{verbatim}

The \pkgname{slashed} package, although originally designed for
producing Feynman\index{Feynman slashed character notation}
slashed-character\idxboth{slashed}{letters} notation, in fact
facilitates the production of \emph{arbitrary} overlapped symbols.
\ifhaveslashed
  \newcommand{\rqm}{{\declareslashed{}{\text{-}}{0.04}{0}{I}\slashed{I}}}
  The default behavior is to overwrite a given character with ``$/$''.
  For example, \cmd{\slashed}\verb|{D}| produces ``$\slashed{D}$''.
  However, the \cmd{\declareslashed} command provides the flexibility
  to specify the mathematical context of the composite character
  (operator, relation, punctuation, etc., as will be discussed in
  Section~\ref{math-spacing}), the overlapping symbol, horizontal and
  vertical adjustments in symbol-relative units, and the character to
  be overlapped.  Consider, for example, the symbol for reduced
  quadrupole moment~(``$\rqm$'').  This can be declared as follows:

\begin{verbatim}
    \newcommand{\rqm}{{%
      \declareslashed{}{\text{-}}{0.04}{0}{I}\slashed{I}}}
\end{verbatim}

  \noindent
  \newcommand{\curlyarg}{\texttt{\char`\{}$\cdot$\texttt{\char`\}}}%
  \cmd{\declareslashed}\curlyarg\curlyarg\curlyarg\curlyarg\verb|{I}|
  affects the meaning of all subsequent \cmd{\slashed}\verb|{I}|
  commands in the same scope.  The preceding definition of \cmdX{\rqm}
  therefore uses an extra set of curly braces to limit that scope to a
  single \cmd{\slashed}\verb|{I}|.  In addition, \cmdX{\rqm} uses
  \pkgname{amstext}'s \cmd{\text} macro
  (described~\vpageref[below]{text-macro}) to make
  \cmd{\declareslashed} use a text-mode hyphen~(``-'') instead of a
  math-mode minus sign~(``$-$'') and to ensure that the hyphen scales
  properly in size in subscripts and superscripts.
\fi   % haveslashed
See \pkgname{slashed}'s documentation (located in
\filename{slashed.sty} itself) for a detailed usage description of the
\cmd{\slashed} and \cmd{\declareslashed} commands.

Somewhat simpler than \pkgname{slashed} is the \pkgname{centernot}
package.  \pkgname{centernot} provides a single command,
\cmd{\centernot}, which, like \cmd{\not}, puts a slash over the
subsequent mathematical symbol.  However, instead of putting the slash
at a fixed location, \cmd{\centernot} centers the slash over its
argument%
\ifhavecenternot
  :

  \begin{center}
    \renewcommand{\arraystretch}{1.25}%
    \begin{tabular}{cl}
      $\not\longrightarrow$       & \verb|\not\longrightarrow| \\
      \multicolumn{2}{c}{vs.} \\
      $\centernot\longrightarrow$ & \verb|\centernot\longrightarrow| \\
    \end{tabular}
  \end{center}
\else
  .
\fi    % \havecenternot
\seedocs{\pkgname{centernot}}.


\subsubsection*{Making new symbols work in superscripts and subscripts}

\index{subscripts>new symbols used in|(}
\index{superscripts>new symbols used in|(}
\def\topbotatom#1{\hbox{\hbox to 0pt{$#1\bot$\hss}$#1\top$}}
\newcommand*{\topbot}{\mathrel{\mathchoice{\topbotatom\displaystyle}
                                 {\topbotatom\textstyle}
                                 {\topbotatom\scriptstyle}
                                 {\topbotatom\scriptscriptstyle}}}

To make composite symbols work properly within subscripts and
superscripts, you may need to use \tex's \cmd{\mathchoice} primitive.
\cmd{\mathchoice} evaluates one of four expressions, based on whether
the current math style is display, text, script, or scriptscript.
(See \TeXbook for a more complete description.)  For example, the
following \latex code---posted to \ctt by
\person{Torsten}{Bronger}---composes a sub/superscriptable
``$\topbot$'' symbol out of \cmdX{\top} and \cmdX{\bot} (``$\top$''
and ``$\bot$''):

\indexcommand[$\string\topbot$]{\topbot}%
\indexcommand{\displaystyle}%
\indexcommand{\textstyle}%
\indexcommand{\scriptstyle}%
\indexcommand{\scriptscriptstyle}%
\label{code:topbot}%
\begin{verbatim}
   \def\topbotatom#1{\hbox{\hbox to 0pt{$#1\bot$\hss}$#1\top$}}
   \newcommand*{\topbot}{\mathrel{\mathchoice{\topbotatom\displaystyle}
                                    {\topbotatom\textstyle}
                                    {\topbotatom\scriptstyle}
                                    {\topbotatom\scriptscriptstyle}}}
\end{verbatim}
\index{superscripts>new symbols used in|)}
\index{subscripts>new symbols used in|)}

\index{integrals|(}

The following\label{dashint} is another example that uses
\cmd{\mathchoice} to construct symbols in different math modes.  The
code defines a principal value integral symbol, which is an integral
sign with a line through it.

\indexcommand{\displaystyle}%
\indexcommand{\textstyle}%
\indexcommand{\scriptstyle}%
\indexcommand{\scriptscriptstyle}%
\begin{verbatim}
   \def\Xint#1{\mathchoice
      {\XXint\displaystyle\textstyle{#1}}%
      {\XXint\textstyle\scriptstyle{#1}}%
      {\XXint\scriptstyle\scriptscriptstyle{#1}}%
      {\XXint\scriptscriptstyle\scriptscriptstyle{#1}}%
      \!\int}
   \def\XXint#1#2#3{{\setbox0=\hbox{$#1{#2#3}{\int}$}
        \vcenter{\hbox{$#2#3$}}\kern-.5\wd0}}
   \def\ddashint{\Xint=}
   \def\dashint{\Xint-}
\end{verbatim}

\noindent
(The preceding code was taken verbatim from the UK \TeX{} Users' Group
FAQ at \url{http://www.tex.ac.uk/faq}.)
\cmdI[$\string\dashint$]{\dashint} produces a single-dashed integral
sign~(``$\dashint$''), while \cmdX{\ddashint} produces a double-dashed
one~(``$\ddashint$'').  The \verb|\Xint| macro defined above can also
be used to generate a wealth of new integrals:
\ifAMS
  ``$\Xint\circlearrowright$'' (\verb|\Xint\circlearrowright|),
  ``$\Xint\circlearrowleft$'' (\verb|\Xint\circlearrowleft|),
  ``$\Xint\subset$'' (\verb|\Xint\subset|), ``$\Xint\infty$''
  (\verb|\Xint\infty|), and so forth.
\else
  \verb|\Xint\circlearrowright|, \verb|\Xint\circlearrowleft|,
  \verb|\Xint\subset|, \verb|\Xint\infty|, and so forth.
\fi    % AMS test

\index{integrals|)}

\newcommand\independent{\protect\mathpalette{\protect\independenT}{\perp}}
\def\independenT#1#2{\mathrel{\rlap{$#1#2$}\mkern2mu{#1#2}}}

\latexE provides a simple wrapper for \cmd{\mathchoice} that sometimes
helps produce terser symbol definitions.  The macro is called
\cmd{\mathpalette} and it takes two arguments.  \cmd{\mathpalette}
invokes the first argument, passing it one of ``\cmd{\displaystyle}'',
``\cmd{\textstyle}'', ``\cmd{\scriptstyle}'', or
``\cmd{\scriptscriptstyle}'', followed by the second argument.
\cmd{\mathpalette} is useful when a symbol macro must know which math
style is currently in use (e.g.,~to set it explicitly within an
\cmd{\mbox}).  \person{Donald}{Arseneau} posted the following
\cmd{\mathpalette}-based definition of a
probabilistic-independence\index{probabilistic
independence}\index{independence>probabilistic}\index{statistical
independence}\index{independence>statistical}
symbol~(``$\independent$'') to \ctt in June~2000:

\begin{verbatim}
   \newcommand\independent{\protect\mathpalette{\protect\independenT}{\perp}}
   \def\independenT#1#2{\mathrel{\rlap{$#1#2$}\mkern2mu{#1#2}}}
\end{verbatim}

\noindent
The \cmdX{\independent} macro uses \cmd{\mathpalette} to pass the
\verb|\independenT| helper macro both the current math style and the
\cmdX{\perp} symbol.  \verb|\independenT| typesets \cmdX{\perp} in the
current math style, moves two math units to the right, and finally
typesets a second---overlapping---copy of \cmdX{\perp}, again in the
current math style.  \cmd{\rlap}, which enables text overlap, is
described~\vpageref[later on this page]{desc:rlap}.

\def\hksqrt{\mathpalette\DHLhksqrt}
\def\DHLhksqrt#1#2{\setbox0=\hbox{$#1\sqrt{#2\,}$}\dimen0=\ht0
  \advance\dimen0-0.2\ht0
  \setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
  {\box0\lower0.4pt\box2}}

\index{sqrt=\verb+\sqrt+ ($\blackacc{\sqrt}$)|(}

\begin{morespacing}{1pt}
Some people like their square-root signs with a trailing ``hook''
(i.e.,~``$\!\hksqrt{~}$\,'') as this helps visually distinguish
expressions like~``$\!\sqrt{3x}$\,'' from those
like~``$\!\sqrt{3}x$''.  In March 2002, \person{Dan}{Luecking} posted
a \cmd{\mathpalette}-based definition of a hooked square-root symbol
to \ctt:
\end{morespacing}

\index{hksqrt=\verb+\hksqrt+ ($\blackacc{\hksqrt}$)}%
\begin{verbatim}
   \def\hksqrt{\mathpalette\DHLhksqrt}
   \def\DHLhksqrt#1#2{\setbox0=\hbox{$#1\sqrt{#2\,}$}\dimen0=\ht0
     \advance\dimen0-0.2\ht0
     \setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
     {\box0\lower0.4pt\box2}}
\end{verbatim}

\noindent
Notice how \verb|\DHLhksqrt| uses \cmd{\mathpalette} to recover the
outer math style (argument~\verb|#1|) from within an \verb|\hbox|.
The rest of the code is simply using \tex primitives to position a
hook of height 0.2~times the \verb|\sqrt| height at the right of the
\verb|\sqrt|.  See \TeXbook for more understanding of \tex ``boxes''
and ``dimens''.

\index{sqrt=\verb+\sqrt+ ($\blackacc{\sqrt}$)|)}


\index{arrows>double-headed, diagonal|(}
\label{code:neswarrow}%
\newcommand{\neswarrow}{\mathrel{\text{$\nearrow$\llap{$\swarrow$}}}}
\newcommand{\nwsearrow}{\mathrel{\text{$\nwarrow$\llap{$\searrow$}}}}

Sometimes, however, \pkgname{amstext}'s \cmd{\text}\label{text-macro}
macro is all that is necessary to make composite symbols appear
correctly in subscripts and superscripts, as in the following
definitions of \cmdX{\neswarrow} (``$\neswarrow$'') and
\cmdX{\nwsearrow} (``$\nwsearrow$''):\footnote{Note that if your goal
is to typeset commutative diagrams, then you should probably be using
\xypic.}

\indexcommand[$\string\nearrow$]{\nearrow}
\indexcommand[$\string\swarrow$]{\swarrow}
\indexcommand[$\string\nwarrow$]{\nwarrow}
\indexcommand[$\string\searrow$]{\searrow}
\begin{verbatim}
   \newcommand{\neswarrow}{\mathrel{\text{$\nearrow$\llap{$\swarrow$}}}}
   \newcommand{\nwsearrow}{\mathrel{\text{$\nwarrow$\llap{$\searrow$}}}}
\end{verbatim}

\noindent
\cmd{\text} resembles \latex's \cmd{\mbox} command but shrinks its
argument appropriately when used within a subscript or superscript.
\cmd{\llap} (``left overlap'') and its counterpart,
\cmd{\rlap}\label{desc:rlap} (``right overlap''), appear frequently
when creating composite characters.  \cmd{\llap} outputs its argument
to the left of the current position, overlapping whatever text is
already there.  Similarly, \cmd{\rlap} overlaps whatever text would
normally appear to the right of its argument.  For example,
``\verb|A|\cmd{\llap}\verb|{B}|'' and ``\cmd{\rlap}\verb|{A}B|'' each
produce ``A\llap{B}''.  However, the result of the former is the width
of ``A'', and the result of the latter is the width of
``B''---\cmd{\llap}\verb|{|\dots\verb|}| and
\cmd{\rlap}\verb|{|\dots\verb|}| take up zero space.
\index{arrows>double-headed, diagonal|)}

In a June~2002 post to \ctt, \person{Donald}{Arseneau} presented a
general macro for aligning an arbitrary number of symbols on their
horizontal centers and vertical baselines:

\indexcommand{\ialign}%
\begin{verbatim}
   \makeatletter
     \def\moverlay{\mathpalette\mov@rlay}
     \def\mov@rlay#1#2{\leavevmode\vtop{%
        \baselineskip\z@skip \lineskiplimit-\maxdimen
        \ialign{\hfil$#1##$\hfil\cr#2\crcr}}}
   \makeatother
\end{verbatim}

\noindent
The \cmd{\makeatletter} and \cmd{\makeatother} commands are needed to
coerce \latex{} into accepting ``\texttt{@}'' as part of a macro
name.  \cmd{\moverlay} takes a list of symbols separated by \verb|\cr|
(\tex's equivalent of \latex's \verb|\\|).  For example, the
\cmdX{\topbot} command defined \vpageref[above]{code:topbot} could
have been expressed as ``\verb|\moverlay{\top\cr\bot}|'' and the
\cmdX{\neswarrow} command defined \vpageref[above]{code:neswarrow}
could have been expressed as
``\verb|\moverlay{\nearrow\cr\swarrow}|''.%
\indexcommand[$\string\nearrow$]{\nearrow}%
\indexcommand[$\string\swarrow$]{\swarrow}

The basic concept behind \cmd{\moverlay}'s implementation is that
\cmd{\moverlay} typesets the given symbols in a table that utilizes a
zero \verb|\baselineskip|.  This causes every row to be typeset at the
same vertical position.  See \TeXbook for explanations of the \tex
primitives used by \cmd{\moverlay}.

\subsubsection*{Modifying \latex-generated symbols}

\index{dots (ellipses)|(}
\index{ellipses (dots)|(}
\index{dot symbols|(}
\index{symbols>dot|(}

Oftentimes, symbols composed in the \latexE source code can be
modified with minimal effort to produce useful variations.  For
example, \fontdefdtx composes the \cmdX{\ddots} symbol (see
Table~\vref{dots}) out of three periods, raised~7\,pt., 4\,pt., and
1\,pt., respectively:

\begin{verbatim}
   \def\ddots{\mathinner{\mkern1mu\raise7\p@
       \vbox{\kern7\p@\hbox{.}}\mkern2mu
       \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}}
\end{verbatim}

\noindent
\cmd{\p@} is a \latexE{} shortcut for ``\texttt{pt}'' or
``\texttt{1.0pt}''.  The remaining commands are defined in \TeXbook.
To\label{revddots} draw a version of \cmdX{\ddots} with the dots going
along the opposite diagonal, we merely have to reorder the
\verb|\raise7\p@|, \verb|\raise4\p@|, and \verb|\raise\p@|:

\begin{verbatim}
   \makeatletter
     \def\revddots{\mathinner{\mkern1mu\raise\p@
       \vbox{\kern7\p@\hbox{.}}\mkern2mu
       \raise4\p@\hbox{.}\mkern2mu\raise7\p@\hbox{.}\mkern1mu}}
   \makeatother
\end{verbatim}
    \makeatletter
      \def\revddots{\mathinner{\mkern1mu\raise\p@
        \vbox{\kern7\p@\hbox{.}}\mkern2mu
        \raise4\p@\hbox{.}\mkern2mu\raise7\p@\hbox{.}\mkern1mu}}
    \makeatother
\indexcommand[$\string\revddots$]{\revddots}

\noindent
\cmdX{\revddots} is essentially identical to the \MDOTS\
package's
\ifMDOTS
  \cmdX{\iddots}
\else
  \cmd{\iddots}
\fi
command or the \YH\ package's
\ifYH
  \cmdX{\adots}
\else
  \cmd{\adots}
\fi
command.
\index{symbols>dot|)}
\index{dot symbols|)}
\index{ellipses (dots)|)}
\index{dots (ellipses)|)}


\subsubsection*{Producing complex accents}

\ifx\diatop\undefined
% The following was copied verbatim from ipa.sty, from the wsuipa package.
\def\diatop[#1|#2]{%
    {\setbox1=\hbox{#1{}}% diacritic mark
     \setbox2=\hbox{#2{}}%  letter (the group {} in case it is a diacritic)
     \dimen0=\ifdim\wd1>\wd2\wd1\else\wd2\fi% compute the max width
        % the `natural height' of diacritics is 1ex;
        % \dimen1 is the shift upwards
     \dimen1=\ht2\advance\dimen1by-1ex%
        % center the diacritic mark on the width of the letter:
     \setbox1=\hbox to\dimen0{\hss#1{}\hss}%
     \leavevmode % force horizontal mode
     \rlap{\raise\dimen1\box1}% the raised diacritic mark
     \hbox to\dimen0{\hss#2\hss}% the letter
    }%
  }%
\fi

\index{accents|(}
\index{accents>multiple per character}
\index{multiple accents per character}
Accents\label{multiple-accents} are a special case of combining
existing symbols to make new symbols.  While various tables in this
document show how to add an accent to an existing symbol, some
applications, such as transliterations from non-Latin alphabets,
require \emph{multiple} accents per character.  For instance, the
creator of pdf\TeX\ writes his name as ``H\`an
Th\diatop[\'|\^e]\index{Thanh, Han The=\thanhhanthe} Th\`anh''.  The
\pkgname{dblaccnt} package enables \latex{} to stack accents, as in
``\verb|H\`an| \verb|Th\'{\^e}| \verb|Th\`anh|'' (albeit not in the
OT1 \fntenc[OT1]).  In addition, the \pkgname{wsuipa} package defines
\cmd{\diatop} and \cmd{\diaunder} macros for putting one or more
diacritics or accents above or below a given character.
\ifTIPA\ifWIPA
  For example,
  \verb+\diaunder[{\diatop[\'|\=]}|+\linebreak[0]\verb+\textsubdot{r}]+
  produces ``\diaunder[{\diatop[\'|\=]}|\textsubdot{r}]''.
\fi\fi
\seedocs{\pkgname{wsuipa}}.

\index{accents>any character as}
The \pkgname{accents} package facilitates the fabrication of accents
in math mode.  Its \cmd{\accentset} command enables \emph{any}
character to be used as an accent.
\ifACCENTS
  For instance, \cmd{\accentset}\verb+{+\cmdX{\star}\verb+}{f}+
  produces ``$\accentset{\star}{f}\,$'' and
  \cmd{\accentset}\verb+{e}{X}+ produces ``$\accentset{e}{X}$''.
\fi
\cmd{\underaccent} does the same thing, but places the accent beneath
the character.
\ifACCENTS
  This enables constructs like
  \cmd{\underaccent}\verb+{+\cmdI[$\string\blackacc{\string\tilde}$]{\tilde}\verb+}{V}+,
  which produces ``$\underaccent{\tilde}{V}$''.\index{tilde}
\fi
\pkgname{accents} provides other accent-related features as well; see
the documentation for more information.
\index{accents|)}

\subsubsection*{Creating extensible symbols}

\index{symbols>extensible|(}
\index{extensible symbols, creating|(}

A relatively simple example of creating extensible symbols stems from
a \ctt post by \person{Donald}{Arseneau} (June~2003).  The following
code defines an equals sign that extends as far to the right as
possible, just like \latex's \verb|\hrulefill| command:

\makeatletter
   \def\equalsfill{$\m@th\mathord=\mkern-7mu
   \cleaders\hbox{$\!\mathord=\!$}\hfill
   \mkern-7mu\mathord=$}
\makeatother

\begin{verbatim}
   \makeatletter
   \def\equalsfill{$\m@th\mathord=\mkern-7mu
     \cleaders\hbox{$\!\mathord=\!$}\hfill
     \mkern-7mu\mathord=$}
   \makeatother
\end{verbatim}

\noindent
\tex's \verb|\cleaders| and \verb|\hfill| primitives are the key to
understanding \cmd{\equalsfill}'s extensibility.  Essentially,
\cmd{\equalsfill} repeats a box containing ``$=$'' plus some negative
space until it fills the maximum available horizontal space.
\cmd{\equalsfill} is intended to be used with \latex's \cmd{\stackrel}
command, which stacks one mathematical expression (slightly reduced in
size) atop another.  Hence, ``\cmd{\stackrel}\verb|{a}{\rightarrow}|''
produces ``$\stackrel{a}{\rightarrow}$'' and ``X
\cmd{\stackrel}\verb|{\text{definition}}{\hbox{|\cmd{\equalsfill}\verb|}}|
Y'' produces ``$X \stackrel{\text{definition}}{\hbox{\equalsfill}}
Y$''.\idxboth{definition}{symbols}\label{equalsfill-ex}

\index{symbols>actuarial|(}
\index{actuarial symbols|(}
\index{symbols>life insurance|(}
\index{life-insurance symbols|(}

If all that needs to extend are horizontal and vertical lines---as
opposed to repeated symbols such as the ``$=$'' in the previous
example---\latex's \verb|array| or \verb|tabular| environments may
suffice.  Consider the following code (due to a February~1999 \ctt
post by \person{Donald}{Arseneau}) for typesetting
annuities\index{annuity}:

   \DeclareRobustCommand{\annu}[1]{_{%
    \def\arraystretch{0}%
    \setlength\arraycolsep{1pt}%        adjust these
    \setlength\arrayrulewidth{.2pt}%  two settings
    \begin{array}[b]{@{}c|}\hline
    \\[\arraycolsep]%
    \scriptstyle #1%
    \end{array}%
   }}

\begin{verbatim}
   \DeclareRobustCommand{\annu}[1]{_{%
    \def\arraystretch{0}%
    \setlength\arraycolsep{1pt}%        adjust these
    \setlength\arrayrulewidth{.2pt}%  two settings
    \begin{array}[b]{@{}c|}\hline
    \\[\arraycolsep]%
    \scriptstyle #1%
    \end{array}%
   }}
\end{verbatim}

\noindent
One can then use, e.g.,~``\verb|$A\annu{x:n}$|'' to produce
``$A\annu{x:n}$''.\indexaccent[$\string\blackacc\string\annu$]{\annu}

\index{symbols>actuarial|)}
\index{actuarial symbols|)}
\index{symbols>life insurance|)}
\index{life-insurance symbols|)}

\index{accents|(}
\index{extensible accents|(}
\index{accents>extensible|(}

A more complex example of composing accents is the following
definition of extensible \cmdW{\overbracket}, \cmdW{\underbracket},
\cmdW{\overparenthesis}, and \cmdW{\underparenthesis} symbols, taken
from a May~2002 \ctt post by \person{Donald}{Arseneau}:

\indexcommand{\ialign}%
\makeatletter
\def\overbracket#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3\p@}
      \DAdownbracketfill\crcr\noalign{\kern3\p@\nointerlineskip}
      $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
\def\underbracket#1{\mathop{\vtop{\ialign{##\crcr
      $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}
      \DAupbracketfill\crcr\noalign{\kern3\p@}}}}\limits}
\def\overparenthesis#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3\p@}
      \downparenthfill\crcr\noalign{\kern3\p@\nointerlineskip}
      $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
\def\underparenthesis#1{\mathop{\vtop{\ialign{##\crcr
      $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}
      \upparenthfill\crcr\noalign{\kern3\p@}}}}\limits}
\def\downparenthfill{$\m@th\braceld\leaders\vrule\hfill\bracerd$}
\def\upparenthfill{$\m@th\bracelu\leaders\vrule\hfill\braceru$}
\def\DAupbracketfill{$\m@th\makesm@sh{\llap{\vrule\@height3\p@\@width.7\p@}}%
  \leaders\vrule\@height.7\p@\hfill
  \makesm@sh{\rlap{\vrule\@height3\p@\@width.7\p@}}$}
\def\DAdownbracketfill{$\m@th
  \makesm@sh{\llap{\vrule\@height.7\p@\@depth2.3\p@\@width.7\p@}}%
  \leaders\vrule\@height.7\p@\hfill
  \makesm@sh{\rlap{\vrule\@height.7\p@\@depth2.3\p@\@width.7\p@}}$}
\makeatother

\indexcommand{\displaystyle}%
\indexcommand{\ialign}%
\begin{verbatim}
   \makeatletter
   \def\overbracket#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3\p@}
         \downbracketfill\crcr\noalign{\kern3\p@\nointerlineskip}
         $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
   \def\underbracket#1{\mathop{\vtop{\ialign{##\crcr
         $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}
         \upbracketfill\crcr\noalign{\kern3\p@}}}}\limits}
   \def\overparenthesis#1{\mathop{\vbox{\ialign{##\crcr\noalign{\kern3\p@}
         \downparenthfill\crcr\noalign{\kern3\p@\nointerlineskip}
         $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
   \def\underparenthesis#1{\mathop{\vtop{\ialign{##\crcr
         $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}
         \upparenthfill\crcr\noalign{\kern3\p@}}}}\limits}
   \def\downparenthfill{$\m@th\braceld\leaders\vrule\hfill\bracerd$}
   \def\upparenthfill{$\m@th\bracelu\leaders\vrule\hfill\braceru$}
   \def\upbracketfill{$\m@th\makesm@sh{\llap{\vrule\@height3\p@\@width.7\p@}}%
     \leaders\vrule\@height.7\p@\hfill
     \makesm@sh{\rlap{\vrule\@height3\p@\@width.7\p@}}$}
   \def\downbracketfill{$\m@th
     \makesm@sh{\llap{\vrule\@height.7\p@\@depth2.3\p@\@width.7\p@}}%
     \leaders\vrule\@height.7\p@\hfill
     \makesm@sh{\rlap{\vrule\@height.7\p@\@depth2.3\p@\@width.7\p@}}$}
   \makeatother
\end{verbatim}

\noindent
Table~\ref{manual-extensible-accents} showcases these accents.
\TeXbook or another book on \tex primitives is indispensible for
understanding how the preceding code works.  The basic idea is that
\cmd{\downparenthfill}, \cmd{\upparenthfill}, \cmd{\downbracketfill},
and \cmd{\upbracketfill} do all of the work; they output a left symbol
(e.g.,~\cmdX{\braceld} [``$\braceld$''] for \cmd{\downparenthfill}), a
horizontal rule that stretches as wide as possible, and a right symbol
(e.g.,~\cmdX{\bracerd} [``$\bracerd$''] for \cmd{\downparenthfill}).
\cmdW{\overbracket}, \cmdW{\underbracket}, \cmdW{\overparenthesis}, and
\cmdW{\underparenthesis} merely create a table whose width is
determined by the given text, thereby constraining the width of the
horizontal rules.

\begin{nonsymtable}{Manually Composed Extensible Accents}
\index{accents}
\idxboth{extensible}{accents}
\label{manual-extensible-accents}
\renewcommand{\arraystretch}{1.75}
\begin{tabular}{*2{ll}}
\W\overbracket{abc}  & \W\overparenthesis{abc}  \\
\W\underbracket{abc} & \W\underparenthesis{abc} \\
\end{tabular}
\end{nonsymtable}

Note that the \pkgname{simplewick} package provides mechanisms for
typesetting Wick\index{Wick contractions} contractions, which utilize
\cmdW{\overbracket}- and \cmdW{\underbracket}-like brackets of
variable width \emph{and} height (or depth).
\ifhavesimplewick
  For example, ``\cmd{\acontraction}\verb|{}{A}{B}{C}|\linebreak[0]%
  \cmd{\acontraction}\verb|[2ex]{A}{B}{C}{D}|\linebreak[0]%
  \cmd{\bcontraction}\verb|{}{A}{BC}{D}|\linebreak[0]\verb|ABCD|'' produces
  \[
    \acontraction{}{A}{B}{C}
    \acontraction[2ex]{A}{B}{C}{D}
    \bcontraction{}{A}{BC}{D}
    ABCD
    \qquad.
  \]
\fi    % simplewick test
\seedocs{\pkgname{simplewick}}.

\index{accents>extensible|)}
\index{extensible accents|)}
\index{accents|)}

\index{symbols>extensible|)}
\index{extensible symbols, creating|)}


\subsubsection*{Developing new symbols from scratch}

Sometimes is it simply not possible to define a new symbol in terms of
existing symbols.  Fortunately, most, if not all, \tex distributions
are shipped with a tool called \metafont which is designed
specifically for creating fonts to be used with \tex.  The
\MF{}book~\cite{Knuth:ct-c} is the authoritative text on \metafont.
If you plan to design your own symbols with \metafont, The \MF{}book
is essential reading.  Nevertheless, the following is an extremely
brief tutorial on how to create a new \latex symbol using \metafont.
Its primary purpose is to cover the \latex-specific operations not
mentioned in The \MF{}book and to demonstrate that symbol-font
creation is not necessarily a difficult task.

Suppose we need a symbol to represent a light
bulb~(``\lightbulb'').\footnote{I'm not a very good artist; you'll
have to pretend that~``\lightbulb'' looks like a light bulb.}  The
first step is to draw this in \metafont.  It is common to separate the
font into two files: a size-dependent file, which specifies the design
size and various font-specific parameters that are a function of the
design size; and a size-independent file, which draws characters in
the given size.  Figure~\ref{mftoplevel} shows the \metafont code for
\filename{lightbulb10.mf}.  \filename{lightbulb10.mf} specifies
various parameters that produce a 10\,pt.\ light bulb then loads
\filename{lightbulb.mf}.  Ideally, one should produce
\texttt{lightbulb}\meta{size}\texttt{.mf} files for a variety of
\meta{size}s.  This is called ``optical\idxboth{optical}{scaling}
scaling''.  It enables, for example, the lines that make up the light
bulb to retain the same thickness at different font sizes, which looks
much nicer than the alternative---and
default---``mechanical\idxboth{mechanical}{scaling} scaling''.  When a
\texttt{lightbulb}\meta{size}\texttt{.mf} file does not exist for a
given size \meta{size}, the computer mechanically produces a wider,
taller, thicker symbol:

\begin{center}
\begin{tabular}{*{13}c}
{\fontsize{10}{10}\lightbulb} & vs.\ &
{\fontsize{20}{20}\lightbulb} & vs.\ &
{\fontsize{30}{30}\lightbulb} & vs.\ &
{\fontsize{40}{40}\lightbulb} & vs.\ &
{\fontsize{50}{50}\lightbulb} & vs.\ &
{\fontsize{60}{60}\lightbulb} & vs.\ &
{\fontsize{70}{70}\lightbulb} \\[-1.5ex]
{\tiny 10\,pt.} & &
{\tiny 20\,pt.} & &
{\tiny 30\,pt.} & &
{\tiny 40\,pt.} & &
{\tiny 50\,pt.} & &
{\tiny 60\,pt.} & &
{\tiny 70\,pt.} \\
\end{tabular}
\end{center}

\begin{figure}[htbp]
\centering
\begin{codesample}
% The following are derived from mftmac.tex.
\def\\#1{\textit{#1}} % italic type for identifiers
\def\2#1{\mathop{\textbf{#1}\/\kern.05em}} % operator, in bold type
\def\9{\hfill$\%} % comment separator
% Matching `$' for Emacs font-lock mode
\def\SH{\raise.7ex\hbox{$\scriptstyle\#$}} % sharp sign for sharped units
\let\BL=\medskip % space for empty line
\def\frac#1/#2{\leavevmode\kern.1em
  \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
  /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}

% The following are modified from mft's output.
$\2{font\_identifier}:=\verb+"LightBulb10"+;\ \9 Name the font.\par
$\2{font\_size}10\\{pt}\SH ;\ \9 Specify the design size.\par
\BL
$\\{em}\SH :=10\\{pt}\SH ;\ \9 ``M'' width is 10 points.\par
$\\{cap}\SH :=7\\{pt}\SH ;\ \9 Capital letter height is 7 points above the
baseline.\par
$\\{sb}\SH :=\frac1/{4}\\{pt}\SH ;\ \9 Leave this much space on the side of
each character.\par
$o\SH :=\frac1/{16}\\{pt}\SH ;\ \9 Amount that curves overshoot borders.\par
\BL
$\2{input}\hbox{\tt lightbulb}\9 Load the file that draws the actual glyph.\par
% Matching `$' for Emacs font-lock mode
\end{codesample}
\caption{Sample \metafont size-specific file (\filename{lightbulb10.mf})}
\label{mftoplevel}
\end{figure}

\filename{lightbulb.mf}, shown in Figure~\ref{mfmain}, draws a light
bulb using the parameters defined in \filename{lightbulb10.mf}.  Note
that the the filenames ``\filename{lightbulb10.mf}'' and
``\filename{lightbulb.mf}'' do not follow the Berry font-naming
scheme~\cite{Berry:fontname}; the Berry font-naming scheme is largely
irrelevant for symbol fonts, which generally lack bold, italic,
small-caps, slanted, and other such variants.

\begin{figure}[htbp]
\centering
\begin{codesample}
% The following are derived from mftmac.tex.
\def\\#1{\textit{#1}} % italic type for identifiers
\def\1#1{\mathop{\textrm{#1}}} % operator, in roman type
\def\2#1{\mathop{\textbf{#1}\/\kern.05em}} % operator, in bold type
\def\3#1{\,\mathclose{\textbf{#1}}} % `fi' and `endgroup'
\def\5#1{\textbf{#1}} % `true' and `nullpicture'
\def\6#1{\mathbin{\rm#1}} % `++' and `scaled'
\def\8#1{\mathrel{\mathcode`\.="8000 \mathcode`\-="8000
  #1\unkern}} % `..' and `--'
\def\9{\hfill$\%} % comment separator
% Matching `$' for Emacs font-lock mode
\def\SH{\raise.7ex\hbox{$\scriptstyle\#$}} % sharp sign for sharped units
\let\BL=\medskip % space for empty line
\def\frac#1/#2{\leavevmode\kern.1em
  \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
  /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
\mathchardef\period=`\.
\newbox\shorthyf \setbox\shorthyf=\hbox{-\kern-.05em}
{\catcode`\-=\active \global\def-{\copy\shorthyf\mkern3.9mu}
 \catcode`\.=\active \global\def.{\period\mkern3mu}}

% The following are modified from mft's output.
$\5{mode\_setup};\ \9 Target a given printer.\par
\BL
$\2{define\_pixels}(\\{em},\\{cap},\\{sb});\ \9 Convert to device-specific
units.\par
$\2{define\_corrected\_pixels}(o);\ \9 Same, but add a device-specific fudge
factor.\par
\BL
\%\% Define a light bulb at the character position for ``A''\par
\%\% with width $\frac1/{2}\\{em}\SH$, height $\\{cap}\SH$, and depth $1\\{pt}\SH$.\par
$\2{beginchar}(\verb+"A"+,\frac1/{2}\\{em}\SH ,\\{cap}\SH ,1\\{pt}\SH );\ \verb+"A light bulb"+;$\par
\quad\quad$\2{pickup}\5{pencircle}\6{scaled}\frac1/{2}\\{pt};\ \9 Use a pen
with a small, circular tip.\par
\BL
\quad\quad\%\% Define the points we need.\par
\quad\quad$\\{top}\,z_{1}=(w/2,h+o);\ \9 $z_1$ is at the top of a circle.\par
\quad\quad$\\{rt}\,z_{2}=(w+\\{sb}+o-x_{4},y_{4});\ \9 $z_2$ is at the same
height as $z_4$ but the opposite side.\par
\quad\quad$\\{bot}\,z_{3}=(z_{1}-(0,w-\\{sb}-o));\ \9 $z_3$ is at the bottom of
the circle.\par
\quad\quad$\\{lft}\,z_{4}=(\\{sb}-o,\frac1/{2}[y_{1},y_{3}]);\ \9 $z_4$ is on the
left of the circle.\par
\quad\quad$\2{path}\\{bulb};\ \9 Define a path for the bulb itself.\par
\quad\quad$\\{bulb}=z_{1}\8{..}z_{2}\8{..}z_{3}\8{..}z_{4}\8{..}\1{cycle};\ \9
The bulb is a closed path.\par
\BL
\quad\quad$z_{5}=\2{point}2-\frac1/{3}\2{of}\\{bulb};\ \9 $z_5$ lies on the
bulb, a little to the right of $z_3$.\par
\quad\quad$z_{6}=(x_{5},0);\ \9 $z_6$ is at the bottom, directly under $z_5$.\par
\quad\quad$z_{7}=(x_{8},0);\ \9 $z_7$ is at the bottom, directly under $z_8$.\par
\quad\quad$z_{8}=\2{point}2+\frac1/{3}\2{of}\\{bulb};\ \9 $z_8$ lies on the
bulb, a little to the left of $z_3$.\par
\quad\quad$\\{bot}\,z_{67}=(\frac1/{2}[x_{6},x_{7}],\\{pen\_bot}-o-\frac1/{8}%
\\{pt});\ \9 $z_{67}$ lies halfway between $z_6$ and $z_7$ but a jot lower.\par
\BL
\quad\quad\%\% Draw the bulb and the base.\par
\quad\quad$\2{draw}\\{bulb};\ \9 Draw the bulb proper.\par
\quad\quad$\2{draw}z_{5}\8{--}z_{6}\8{..}z_{67}\8{..}z_{7}\8{--}z_{8};\ \9
Draw the base of the bulb.\par
\BL
\quad\quad\%\% Display key positions and points to help us debug.\par
\quad\quad$\\{makegrid}(0,\\{sb},w/2,w-\\{sb})(0,-1\\{pt},y_{2},h);\ \9 Label
``interesting'' $x$ and $y$ coordinates.\par
\quad\quad$\\{penlabels}(1,2,3,4,5,6,67,7,8);\ \9 Label control points for
debugging.\par
$\!\3{endchar};$\par
$\!\3{end}$\par
% Matching `$' for Emacs font-lock mode
\end{codesample}
\caption{Sample \metafont size-independent file (\filename{lightbulb.mf})}
\label{mfmain}
\end{figure}

The code in Figures~\ref{mftoplevel} and~\ref{mfmain} is heavily
commented and should demonstrate some of the basic concepts behind
\metafont usage: declaring variables, defining points, drawing lines
and curves, and preparing to debug or fine-tune the output.  Again,
The \MF{}book~\cite{Knuth:ct-c} is the definitive reference on
\metafont programming.

\metafont can produce ``proofs'' of fonts---large, labeled versions
that showcase the logical structure of each character.  In fact, proof
mode is \metafont's default mode.  To produce a proof of
\filename{lightbulb10.mf}, issue the following commands at the
operating-system prompt:

\bigskip
\noindent
\begingroup
\let\usercmd=\textbf
\newlength{\commentlen}%
\settowidth{\commentlen}{Produces \filename{lightbulb10.2602gf}}%
\leftskip=\parindent \parindent=0pt \obeylines
\osprompt \usercmd{mf lightbulb10.mf} \hfill $\Leftarrow$\quad%
  \makebox[\commentlen][l]{Produces \filename{lightbulb10.2602gf}}
\osprompt \usercmd{gftodvi lightbulb10.2602gf} \hfill $\Leftarrow$\quad%
  \makebox[\commentlen][l]{Produces \filename{lightbulb10.dvi}}
\endgroup
\bigskip

\noindent
You can then view \filename{lightbulb10.dvi} with any DVI\index{DVI}
viewer.  The result is shown in Figure~\ref{lightbulb10-proof}.
Observe how the grid defined with \textit{makegrid} at the bottom of
Figure~\ref{mfmain} draws vertical lines at positions~0, \textit{sb},
$w/2$, and $w - \textit{sb}$ and horizontal lines at positions~0,
$-1$\textit{pt}, $y_2$, and $h$.  Similarly, observe how the
\textit{penlabels} command labels all of the important coordinates:
$z_1, z_2, \ldots, z_8$ and $z_{67}$, which \filename{lightbulb.mf}
defines to lie between $z_6$ and $z_7$.

\begin{figure}[htbp]
  \centering
  \includegraphics[height=6cm]{lightbulb.eps}
  \caption{Proof diagram of \filename{lightbulb10.mf}}
  \label{lightbulb10-proof}
\end{figure}

Most, if not all, \tex distributions include a Plain \tex file called
\filename{testfont.tex} which is useful for testing new fonts in a
variety of ways.  One useful routine produces a table of all of the
characters in the font:

\bigskip
\noindent
\begingroup
\newcommand*{\usercmd}[1]{\textrm{\textbf{#1}}}%
\leftskip=\parindent \parindent=0pt \ttfamily \obeylines \obeyspaces%
\osprompt \usercmd{tex testfont}
This is TeX, Version 3.14159 (Web2C 7.3.1)
(/usr/share/texmf/tex/plain/base/testfont.tex
Name of the font to test = \usercmd{lightbulb10}
Now type a test command (\string\help for help):)
*\usercmd{\textbackslash{}table}
\vspace{\baselineskip}
*\usercmd{\textbackslash{}bye}
[1]
Output written on testfont.dvi (1 page, 1516 bytes).
Transcript written on testfont.log.
\endgroup
\bigskip

\noindent
The resulting table, stored in \filename{testfont.dvi} and illustrated
in Figure~\ref{font-table}, shows every character in the font.  To
understand how to read the table, note that the character code
for~``A''---the only character defined by
\filename{lightbulb10.mf}---is 41 in hexadecimal (base~16) and 101 in
octal (base~8).

\begin{figure}[htbp]
\centering
\fbox{%
\begin{minipage}{0.9\linewidth}
\centering
\vspace*{\baselineskip}
\begin{minipage}{0.95\linewidth}
{\tiny Test of lightbulb10 on March 11, 2003 at 1127}
\vspace{2\baselineskip}

\renewcommand{\tabularxcolumn}[1]{>{\mbox{}\hfill}p{#1}<{\hfill\mbox{}}}%
% The following two lines are modified from testfont.tex
\def\oct#1{\hbox{\normalfont\'{}\kern-.2em\itshape#1\/\kern.05em}} % octal constant
\def\hex#1{\hbox{\normalfont\H{}\ttfamily#1}} % hexadecimal constant

\begin{tabularx}{\linewidth}{@{}*9{X|}X@{}}
      & \oct{0} & \oct{1} & \oct{2} & \oct{3} &
        \oct{4} & \oct{5} & \oct{6} & \oct{7} & \\ \hline
 \oct{10x}
      &    & \lightbulb & & & & & & &
      \raisebox{-0.5\baselineskip}[0pt][0pt]{\hex{4x}} \\ \cline{1-9}
 \oct{11x}
      &    &            & & & & & & & \\ \hline
      & \hex{8} & \hex{9} & \hex{A} & \hex{B} &
        \hex{C} & \hex{D} & \hex{E} & \hex{F} & \\
\end{tabularx}
\end{minipage}
\vspace*{\baselineskip}
\end{minipage}}
\caption{Font table produced by \filename{testfont.tex}}
\label{font-table}
\end{figure}

The LightBulb10 font is now usable by \tex.  \latexE, however, needs
more information before documents can use the font.  First, we create
a font-description file that tells \latexE how to map fonts in a given
font family and encoding to a particular font in a particular font
size.  For symbol fonts, this mapping is fairly simple.  Symbol fonts
almost always use the ``U''~(``Unknown'') font encoding and frequently
occur in only one variant: normal weight and non-italicized.  The
filename for a font-description file important; it must be of the form
``\meta{encoding}\meta{family}\texttt{.fd}'', where \meta{encoding} is
the lowercase version of the encoding name (typically~``u'' for symbol
fonts) and \meta{family} is the name of the font family.  For
LightBulb10, let's call this ``bulb''.  Figure~\ref{bulb-fd-file}
lists the contents of \filename{ubulb.fd}.  The document ``\latexE
Font Selection''~\cite{fntguide} describes \cmd{\DeclareFontFamily}
and \cmd{\DeclareFontShape} in detail, but the gist of
\filename{ubulb.fd} is first to declare a \texttt{U}-encoded version
of the \texttt{bulb} font family and then to specify that a \latexE
request for a \texttt{U}-encoded version of \texttt{bulb} with a
(\texttt{m})edium font series (as opposed to, e.g., bold) and a
(\texttt{n})ormal font shape (as opposed to, e.g., italic) should
translate into a \tex request for \filename{lightbulb10.tfm}
mechanically\idxboth{mechanical}{scaling} scaled to the current font
size.

\begin{figure}[htbp]
\centering
\begin{tabular}{@{}|l|@{}}
  \hline
  \verb+\DeclareFontFamily{U}{bulb}{}+ \\
  \verb+\DeclareFontShape{U}{bulb}{m}{n}{<-> lightbulb10}{}+ \\
  \hline
\end{tabular}
\caption{\latexE font-description file (\filename{ubulb.fd})}
\label{bulb-fd-file}
\end{figure}

The final step is to write a \latexE style file that defines a name
for each symbol in the font.  Because we have only one symbol our
style file, \filename{lightbulb.sty} (Figure~\ref{bulb-sty-file}), is
rather trivial.  Note that instead of typesetting ``\texttt{A}'' we
could have had \cmdI{\lightbulb} typeset ``\verb+\char65+'',
``\verb+\char"41+'', or ``\verb+\char'101+'' (respectively, decimal,
hexadecimal, and octal character offsets into the font).  For a
simple, one-character symbol font such as LightBulb10 it would be
reasonable to merge \filename{ubulb.fd} into \filename{lightbulb.sty}
instead of maintaining two separate files.  In either case, a document
need only include ``\verb+\usepackage{lightbulb}+'' to make the
\verb+\lightbulb+ symbol available.

\begin{figure}[htbp]
\centering
\begin{tabular}{@{}|l|@{}}
  \hline
  \verb+\newcommand{\lightbulb}{{\usefont{U}{bulb}{m}{n}A}}+ \\
  \hline
\end{tabular}
\caption{\latexE style file (\filename{lightbulb.sty})}
\label{bulb-sty-file}
\end{figure}

\bigskip

\metafont normally produces bitmapped fonts.  However, it is also
possible, with the help of some external tools, to produce \postscript
\PSfont{Type~1} fonts.  These have the advantages of rendering better
in Adobe\regtm\index{Adobe Acrobat} Acrobat\regtm (at least in
versions prior to~6.0) and of being more memory-efficient when handled
by a \postscript interpreter.  See
\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=textrace} for
pointers to tools that can produce \PSfont{Type~1} fonts from
\metafont.


\subsection{Math-mode spacing}
\label{math-spacing}

Terms such as ``binary operators'', ``relations'', and ``punctuation''
in Section~\ref{math-symbols} primarily regard the surrounding
spacing.  (See the Short Math Guide for \latex~\cite{Downes:smg} for a
nice exposition on the subject.)  To use a symbol for a different
purpose, you can use the \tex commands \cmd{\mathord}, \cmd{\mathop},
\cmd{\mathbin}, \cmd{\mathrel}, \cmd{\mathopen}, \cmd{\mathclose}, and
\cmd{\mathpunct}.  For example, if you want to use \cmd{\downarrow} as
a variable (an ``ordinary'' symbol) instead of a delimiter, you can
write ``\verb|$3 x + \mathord{\downarrow}$|'' to get the properly
spaced ``$3 x + \mathord{\downarrow}$'' rather than the
awkward-looking ``$3 x + \downarrow$''.  Similarly, to create a
dotted-union\index{dotted union=dotted union ($\dot\cup$)} symbol
(``$\dot\cup$'') that spaces like the ordinary set-union symbol
(\cmdX{\cup}) it must be defined with \cmd{\mathbin}, just as
\cmdX{\cup} is.  Contrast ``\verb|$A \dot{\cup} B$|'' (``$A {\dot\cup}
B$'') with ``\verb|$A \mathbin{\dot{\cup}} B$|'' (``$A
\mathbin{\dot{\cup}} B$'').  See \TeXbook for the definitive
description of math-mode spacing.

The purpose of the ``log-like symbols'' in
\ifAMS
  Tables~\ref{log} and~\ref{ams-log}
\else
  Table~\ref{log}
\fi
is to provide the correct amount of spacing around and within
multiletter function names.  Table~\vref{log-spacing} contrasts the
output of the log-like symbols with various, na\"{\i}ve alternatives.
In addition to spacing, the log-like symbols also handle subscripts
properly.  For example, ``\verb|\max_{p \in P}|'' produces ``$\max_{p
\in P}$'' in text, but ``$\displaystyle\max_{p \in P}$'' as part of a
displayed formula.

\begin{nonsymtable}{Spacing Around/Within Log-like Symbols}
\label{log-spacing}
\setlength{\tabcolsep}{1em}
\begin{tabular}{@{}ll@{}} \toprule
\latex{} expression & Output \\ \midrule
\verb|$r \sin \theta$|         & $r \sin \theta$ \rlap{\quad (best)} \\
\verb|$r sin \theta$|          & $r sin \theta$          \\
\verb|$r \mbox{sin} \theta$|   & $r \mbox{sin} \theta$   \\
\verb|$r \mathrm{sin} \theta$| & $r \mathrm{sin} \theta$ \\
\bottomrule
\end{tabular}
\end{nonsymtable}

The \pkgname{amsmath} package makes it straightforward to define new
log-like symbols:

\begin{verbatim}
   \DeclareMathOperator{\atan}{atan}
   \DeclareMathOperator*{\lcm}{lcm}
\end{verbatim}
\ifAMS
  \indexcommand[$\string\atan$]{\atan}%
  \indexcommand[$\string\lcm$]{\lcm}
\else
  \indexcommand{\atan}%
  \indexcommand{\lcm}
\fi   % AMS test

\noindent
The difference between \cmd{\DeclareMathOperator} and
\cmd{\DeclareMathOperator*} involves the handling of subscripts.  With
\cmd{\DeclareMathOperator*}, subscripts are written beneath log-like
symbols in display style and to the right in text style.  This is
useful for limit operators (e.g.,~\cmdX{\lim}) and functions that tend
to map over a set (e.g.,~\cmdX{\min}).  In contrast,
\cmd{\DeclareMathOperator} tells \tex that subscripts should always be
displayed to the right of the operator, as is common for functions
that take a single parameter (e.g.,~\cmdX{\log} and~\cmdX{\cos}).
Table~\ref{new-log-likes} contrasts symbols declared with
\cmd{\DeclareMathOperator} and \cmd{\DeclareMathOperator*} in both
text style~(\texttt{\$}$\ldots$\texttt{\$}) and
display~style~(\texttt{\string\[}$\ldots$\texttt{\string\]}).\footnote{Note
that \cmd{\displaystyle} can be used to force display style
within~\texttt{\$}$\ldots$\texttt{\$} and \cmd{\textstyle} can be used
to force text style
within~\texttt{\string\[}$\ldots$\texttt{\string\]}.}

\begin{nonsymtable}{Defining new log-like symbols}
\label{new-log-likes}
\renewcommand{\tabcolsep}{1em}
\begin{tabular}{@{}lll@{}}
  \toprule
  Declaration function &
  \texttt{\$\string\newlogsym\_\string{p \string\in~P\string}\$} &
  \texttt{\string\[~\string\newlogsym\_\string{p \string\in~P\string}~\string\]} \\
  \midrule

  \texttt{\string\DeclareMathOperator} &
  $\newlogsym_{p \in P}$ &
  $\displaystyle\newlogsym_{p \in P}$ \\[1ex]

  \texttt{\string\DeclareMathOperator*} &
  $\newlogsymSTAR_{p \in P}$ &
  $\displaystyle\newlogsymSTAR_{p \in P}$ \\
  \bottomrule
\end{tabular}
\end{nonsymtable}

It is common to use a thin\idxboth{thin}{space} space~(\cmd{\,})
between the words of a multiword operators, as in
``\verb|\DeclareMathOperator*|\linebreak[0]\verb|{\argmax}|\linebreak[0]\verb|{arg\,max}|''.
\cmdX{\liminf}, \cmdX{\limsup}, and all of the
log-like\idxboth{log-like}{symbols}\index{atomic math objects} symbols
shown in Table~\ref{ams-log} utilize this spacing convention.


\subsection{Bold mathematical symbols}
\label{bold-math}

\idxbothbegin{bold}{symbols} \latex does not normally use bold symbols
when typesetting mathematics.  However, bold symbols are occasionally
needed, for example when naming vectors.  Any of the approaches
described at
\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=boldgreek} can be
used to produce bold mathematical symbols.  Table~\ref{bold-symbols}
contrasts the output produced by these various techniques.  As the
table illustrates, these techniques exhibit variation in their
formatting of Latin letters (upright vs.\ italic), formatting of
Greek\index{Greek>bold} letters (bold vs.\ normal), formatting of
operators and relations (bold vs.\ normal), and spacing.

% The following was copied verbatim from amsbsy.sty.
\makeatletter
\DeclareRobustCommand{\pmb}{%
  \ifmmode\else \expandafter\pmb@@\fi\mathpalette\pmb@}
\def\pmb@@#1#2#3{\leavevmode\setboxz@h{#3}%
   \dimen@-\wdz@
   \kern-.5\ex@\copy\z@
   \kern\dimen@\kern.25\ex@\raise.4\ex@\copy\z@
   \kern\dimen@\kern.25\ex@\box\z@
}
\newdimen\pmbraise@
\def\pmb@#1#2{\setbox8\hbox{$\m@th#1{#2}$}%
  \setboxz@h{$\m@th#1\mkern.5mu$}\pmbraise@\wdz@
  \binrel@{#2}%
  \dimen@-\wd8 %
  \binrel@@{%
    \mkern-.8mu\copy8 %
    \kern\dimen@\mkern.4mu\raise\pmbraise@\copy8 %
    \kern\dimen@\mkern.4mu\box8 }%
}
\makeatother

\begin{nonsymtable}{Producing bold mathematical symbols}
  \idxboth{bold}{symbols}
  \label{bold-symbols}
  \begin{tabular}{@{}lll@{}}
    \toprule
    Package & Code & Output \\
    \midrule

    \textit{none} &
    \verb!$\alpha + b = \Gamma \div D$! &
    $\alpha + b = \Gamma \div D$ \rlap{\qquad (no bold)} \\

    \textit{none} &
    \verb!$!\cmd{\mathbf}\verb!{\alpha + b = \Gamma \div D}$! &
\ifBM
    $\alpha + \textbf{b} = \bm{\Gamma} \div \textbf{D}$ \\
\else
    $\mathbf{\alpha + b = \Gamma \div D}$ \\
\fi

    \textit{none} &
    \cmd{\boldmath}\verb!$\alpha + b = \Gamma \div D$! &
    \boldmath$\alpha + b = \Gamma \div D$ \\

    \pkgname{amsbsy} &
    \verb!$!\cmd{\pmb}\verb!{\alpha + b = \Gamma \div D}$! &
    $\pmb{\alpha + b = \Gamma \div D}$ \rlap{\qquad (faked bold)} \\

    \pkgname{amsbsy} &
    \verb!$!\cmd{\boldsymbol}\verb!{\alpha + b = \Gamma \div D}$! &
    \boldmath$\alpha + b = \Gamma \div D$ \\

\ifBM
    \pkgname{bm} &
    \verb!$!\cmd{\bm}\verb!{\alpha + b = \Gamma \div D}$! &
    $\bm{\alpha + b = \Gamma \div D}$ \\
\fi

    \pkgname{fixmath} &
    \verb!$!\cmd{\mathbold}\verb!{\alpha + b = \Gamma \div D}$! &
    \def\GammaIt{\mathord{\usefont{OML}{cmm}{b}{it}\mathchar"7100}}%
    \boldmath$\alpha + b = \GammaIt \div D$ \\
    \bottomrule
  \end{tabular}
\end{nonsymtable}

\idxbothend{bold}{symbols}


\subsection{ASCII and Latin~1 quick reference}
\label{ascii-quickref}

\index{ASCII|(}

Table~\vref{ascii-table} amalgamates data from various other tables in
this document into a convenient reference for \latexE typesetting of
ASCII characters, i.e., the characters available on a typical
U.S. computer keyboard.  The first two columns list the character's
ASCII code in decimal and hexadecimal.  The third column shows what
the character looks like.  The fourth column lists the \latexE command
to typeset the character as a text character.  And the fourth column
lists the \latexE command to typeset the character within a
\verb|\texttt{|$\ldots$\verb|}| command (or, more generally, when
\verb|\ttfamily| is in effect).

\index{ASCII|)}

\begin{nonsymtable}{\latexE ASCII Table}
  \index{ASCII>table}
  \label{ascii-table}
  % Define an equivalent of \vdots that's the height of a "9".
  \newlength{\digitheight}
  \settoheight{\digitheight}{9}
  \newcommand{\digitvdots}{\raisebox{-1.5pt}[\digitheight]{$\vdots$}}

  % Replace all glyphs in a row with vertical dots.
  \makeatletter
  \newcommand{\skipped}{%
    \settowidth{\@tempdima}{99} \makebox[\@tempdima]{\digitvdots} &
    \settowidth{\@tempdima}{99} \makebox[\@tempdima]{\digitvdots} &
    \digitvdots &
    \digitvdots &
    \digitvdots \\
  }
  \makeatother

  % Typesetting a symbol by prefixing it with a "\".
  \newcommand{\bscommand}[1]{#1 & \cmdI{#1} & \cmdI{#1}}

  \begin{tabular}[t]{@{}*2{>{\ttfamily}r}c*2{>{\ttfamily}l}l@{}} \\ \toprule
    \multicolumn{1}{@{}c}{Dec} &
    \multicolumn{1}{c}{Hex} &
    \multicolumn{1}{c}{Char} &
    \multicolumn{1}{c}{Body text} &
    \multicolumn{1}{c@{}}{\ttfamily\string\texttt} \\ \midrule

    33 & 21 & ! & ! & ! \\
    34 & 22 & {\fontencoding{T1}\selectfont\textquotedbl} &
      \string\textquotedbl & " \\      % Not available in OT1
    35 & 23 & \bscommand{\#} \\
    36 & 24 & \bscommand{\$} \\
    37 & 25 & \bscommand{\%} \\
    38 & 26 & \bscommand{\&} \\
    39 & 27 & ' & ' & ' \\
    40 & 28 & ( & ( & ( \\
    41 & 29 & ) & ) & ) \\
    42 & 2A & * & * & * \\
    43 & 2B & + & + & + \\
    44 & 2C & , & , & , \\
    45 & 2D & - & - & - \\
    46 & 2E & . & . & . \\
    47 & 2F & / & / & / \\
    48 & 30 & 0 & 0 & 0 \\
    49 & 31 & 1 & 1 & 1 \\
    50 & 32 & 2 & 2 & 2 \\
    \skipped
    57 & 39 & 9 & 9 & 9 \\
    58 & 3A & : & : & : \\
    59 & 3B & ; & ; & ; \\
    60 & 3C & \textless & \cmdI{\textless} & < \\         % Or $<$
    61 & 3D & = & = & = \\ \bottomrule
  \end{tabular}
  \hfil
  \begin{tabular}[t]{@{}*2{>{\ttfamily}r}c*2{>{\ttfamily}l}l@{}} \\ \toprule
    \multicolumn{1}{@{}c}{Dec} &
    \multicolumn{1}{c}{Hex} &
    \multicolumn{1}{c}{Char} &
    \multicolumn{1}{c}{Body text} &
    \multicolumn{1}{c@{}}{\ttfamily\string\texttt} \\ \midrule

    62 & 3E & \textgreater & \cmdI{\textgreater} & > \\   % Or $>$
    63 & 3F & ? & ? & ? \\
    64 & 40 & @ & @ & @ \\
    65 & 41 & A & A & A \\
    66 & 42 & B & B & B \\
    67 & 43 & C & C & C \\
    \skipped
    90 & 5A & Z & Z & Z \\
    91 & 5B & [ & [ & [ \\
    92 & 5C & \textbackslash & \cmdI{\textbackslash} &
      \verb|\char`\\| \\   % \textbackslash works in non-OT1
    93 & 5D & ] & ] & ] \\
    94 & 5E & \^{} & \verb|\^{}| & \verb|\^{}| \\   % Or \textasciicircum
    95 & 5F & \_ & \verb|\_| & \verb|\char`\_| \\   % \_ works in non-OT1
    96 & 60 & ` & ` & ` \\
    97 & 61 & a & a & a \\
    98 & 62 & b & b & b \\
    99 & 63 & c & c & c \\
    \skipped
   122 & 7A & z & z & z \\
   123 & 7B & \{ & \verb|\{| & \verb|\char`\{| \\   % \{ works in non-OT1
   124 & 7C & \textbar & \cmdI{\textbar} & | \\     % Or $|$
   125 & 7D & \} & \verb|\}| & \verb|\char`\}| \\   % \} works in non-OT1
   126 & 7E & \~{} & \verb|\~{}| & \verb|\~{}| \\   % Or \textasciitilde ($\sim$?)
   \\
   \bottomrule
  \end{tabular}
\end{nonsymtable}

The following are some additional notes about the contents of
Table~\ref{ascii-table}:

\begin{itemize}
  \item
  ``\indexcommand[\string\encone{\string\textquotedbl}]{\textquotedbl}{\encone{\textquotedbl}}''
  is not available in the OT1 \fntenc[OT1].

  \item
  The\label{upside-down}\index{symbols>upside-down|(}\index{upside-down
  symbols|(} characters ``\texttt{<}'', ``\texttt{>}'', and
  ``\texttt{|}'' do work as expected in math mode, although they
  produce, respectively, ``<'', ``>'', and ``|'' in text mode when
  using the OT1 \fntenc[OT1].\footnote{Donald\index{Knuth, Donald E.}
  Knuth didn't think such symbols were important outside of
  mathematics so he omitted them from his text fonts.} The following
  are some alternatives for typesetting ``\textless'',
  ``\textgreater'', and ``\textbar'':

  \begin{itemize}
    \item Specify a document \fntenc{} other than OT1 (as
    described~\vpageref[above]{altenc}).

    \item Use the appropriate symbol commands from
    Table~\vref{text-predef}, viz.~\cmdI{\textless},
    \cmdI{\textgreater}, and \cmdI{\textbar}.

    \item Enter the symbols in math mode instead of text mode,
    i.e.,~\verb+$<$+, \verb+$>$+, and \verb+$|$+.
  \end{itemize}

  \noindent
  Note that for typesetting metavariables many people prefer
  \cmdI{\textlangle} and \cmdI{\textrangle} to \cmdI{\textless} and
  \cmdI{\textgreater}, i.e., ``\meta{filename}'' instead of
  ``$<$\textit{filename}$>$''.\index{symbols>upside-down|)}\index{upside-down
  symbols|)}

  \item Although ``\texttt{/}'' does not require any special
  treatment, \latex additionally defines a \cmdI{\slash} command which
  outputs the same glyph but permits a line~break afterwards.  That
  is, ``\texttt{increase/decrease}'' is always typeset as a single
  entity while ``\verb|increase\slash{}decrease|'' may be typeset with
  ``increase/'' on one line and ``decrease'' on the next.

  \item \label{tildes} \index{tilde|(} \cmdI{\textasciicircum} can be
  used instead of \cmdI[\string\^{}]{\^{}}\verb|{}|, and
  \cmdI{\textasciitilde} can be used instead of
  \cmdI[\string\~{}]{\~{}}\verb|{}|.  Note that \cmdI{\textasciitilde}
  and \cmdI[\string\~{}]{\~{}}\verb|{}| produce raised, diacritic
  tildes.  ``Text'' (i.e.,~vertically\index{tilde>vertically centered}
  centered) tildes can be generated with either the math-mode
  \cmdX{\sim} command (shown in Table~\vref{rel}), which produces a
  somewhat wide ``$\sim$'', or the \TC\ package's \cmdI{\texttildelow}
  (shown in Table~\vref{tc-misc}), which produces a vertically
  centered ``{\fontfamily{ptm}\selectfont\texttildelow}'' in most
  fonts but a baseline-oriented ``\texttildelow'' in \PSfont{Computer
  Modern}, \TX, \PX, and various other fonts originating from the
  \tex\ world.  If your goal is to typeset tildes in URLs or Unix
  filenames, your best bet is to use the \pkgname{url} package, which
  has a number of nice features such as proper line-breaking of such
  names.\index{tilde|)}

  \item The various \verb|\char| commands within \verb|\texttt| are
  necessary only in the OT1 \fntenc[OT1].  In other encodings
  (e.g.,~T1)\index{font encodings>T1}, commands such as \cmdIp{\{},
  \cmdIp{\}}, \cmdI{\_}, and \cmdI{\textbackslash} all work properly.

  \item The code\index{code page 437} page~437 (IBM~PC\index{IBM PC})
  version of ASCII\index{ASCII} characters~1 to~31 can be typeset
  using the \pkgname{ascii} package.
\ifASCII
  See Table~\vref{ibm-ascii}.
\fi

  \item To replace~``\verb|`|'' and~``\verb|'|'' with the more
  computer-like (and more visibly distinct) ``\texttt{\char18}''
  and~``\texttt{\char13}'' within a \texttt{verbatim} environment, use
  the \pkgname{upquote} package.  Outside of \texttt{verbatim}, you
  can use \verb|\char18| and \verb|\char13| to get the modified quote
  characters.  (The former is actually a grave accent.)
\end{itemize}

\index{Latin 1|(}

Similar to Table~\ref{ascii-table}, Table~\vref{latin1-table} is an
amalgamation of data from other tables in this document.  While
Table~\ref{ascii-table} shows how to typeset the 7-bit ASCII character
set, Table~\ref{latin1-table} shows the Latin~1 (Western European)
character set, also known as ISO-8859-1.

\index{Latin 1|)}

\begin{nonsymtable}{\latexE Latin~1 Table}
  \index{Latin 1>table}
  \index{copyright}
  \idxboth{legal}{symbols}
  \label{latin1-table}

  \newcommand{\accented}[2]{#1#2 & \texttt{\string#1\string{#2\string}}}
  \newcommand{\idxencone}[1]{\indexcommand[\string\encone{\string#1}]{#1}\encone{#1}}
  \begin{tabular}[t]{@{}*2{>{\ttfamily}r}c>{\ttfamily}lc@{}} \\ \toprule
    \multicolumn{1}{@{}c}{Dec} &
    \multicolumn{1}{c}{Hex} &
    \multicolumn{1}{c}{Char} &
    \multicolumn{2}{c@{}}{\latexE} \\ \midrule

    161 & A1 & !`                 & !{}` \\
    162 & A2 & \textcent          & \cmdI{\textcent} & (\textsf{tc}) \\
    163 & A3 & \pounds            & \cmdI{\pounds} \\
    164 & A4 & \textcurrency      & \cmdI{\textcurrency} & (\textsf{tc}) \\
    165 & A5 & \textyen           & \cmdI{\textyen} & (\textsf{tc}) \\
    166 & A6 & \textbrokenbar     & \cmdI{\textbrokenbar} & (\textsf{tc}) \\
    167 & A7 & \S                 & \cmdI{\S} \\
    168 & A8 & \textasciidieresis & \cmdI{\textasciidieresis} & (\textsf{tc}) \\
    169 & A9 & \textcopyright     & \cmdI{\textcopyright} \\
    170 & AA & \textordfeminine   & \cmdI{\textordfeminine}   \\
    171 & AB & \idxencone{\guillemotleft} & \string\guillemotleft & (T1) \\
    172 & AC & \textlnot          & \cmdI{\textlnot} & (\textsf{tc}) \\
    173 & AD & -                  & \cmdI[-]{\-} \\
    174 & AE & \textregistered    & \cmdI{\textregistered} \\
    175 & AF & \textasciimacron   & \cmdI{\textasciimacron} & (\textsf{tc}) \\
    176 & B0 & \textdegree        & \cmdI{\textdegree} & (\textsf{tc}) \\
    177 & B1 & \textpm            & \cmdI{\textpm} & (\textsf{tc}) \\
    178 & B2 & \texttwosuperior   & \cmdI{\texttwosuperior} & (\textsf{tc}) \\
    179 & B3 & \textthreesuperior & \cmdI{\textthreesuperior} & (\textsf{tc}) \\
    180 & B4 & \textasciiacute    & \cmdI{\textasciiacute} & (\textsf{tc}) \\
    181 & B5 & \textmu            & \cmdI{\textmu} & (\textsf{tc}) \\
    182 & B6 & \P                 & \cmdI{\P} \\
    183 & B7 & \textperiodcentered & \cmdI{\textperiodcentered} \\
    184 & B8 & \c{}               & \cmdI[\string\blackacchack{\string\c}]{\c}\verb|{}| \\
    185 & B9 & \textonesuperior   & \cmdI{\textonesuperior} & (\textsf{tc}) \\
    186 & BA & \textordmasculine  & \cmdI{\textordmasculine} \\
    187 & BB & \idxencone{\guillemotright} & \string\guillemotright & (T1) \\
    188 & BC & \textonequarter    & \cmdI{\textonequarter} & (\textsf{tc}) \\
    189 & BD & \textonehalf       & \cmdI{\textonehalf} & (\textsf{tc}) \\
    190 & BE & \textthreequarters & \cmdI{\textthreequarters} & (\textsf{tc}) \\
    191 & BF & ?`                 & ?{}` \\
    192 & C0 & \accented{\`}{A} \\
    193 & C1 & \accented{\'}{A} \\
    194 & C2 & \accented{\^}{A} \\
    195 & C3 & \accented{\~}{A} \\
    196 & C4 & \accented{\"}{A} \\
    197 & C5 & \AA                & \string\AA \\
    198 & C6 & \AE                & \string\AE \\
    199 & C7 & \accented{\c}{C} \\
    200 & C8 & \accented{\`}{E} \\
    201 & C9 & \accented{\'}{E} \\
    202 & CA & \accented{\^}{E} \\
    203 & CB & \accented{\"}{E} \\
    204 & CC & \accented{\`}{I} \\
    205 & CD & \accented{\'}{I} \\
    206 & CE & \accented{\^}{I} \\
    207 & CF & \accented{\"}{I} \\
    208 & D0 & \idxencone{\DH}    & \string\DH & (T1) \\ \bottomrule
  \end{tabular}
  \hfil
  \begin{tabular}[t]{@{}*2{>{\ttfamily}r}c>{\ttfamily}lc@{}} \\ \toprule
    \multicolumn{1}{@{}c}{Dec} &
    \multicolumn{1}{c}{Hex} &
    \multicolumn{1}{c}{Char} &
    \multicolumn{2}{c@{}}{\latexE} \\ \midrule

    209 & D1 & \accented{\~}{N} \\
    210 & D2 & \accented{\`}{O} \\
    211 & D3 & \accented{\'}{O} \\
    212 & D4 & \accented{\^}{O} \\
    213 & D5 & \accented{\~}{O} \\
    214 & D6 & \accented{\"}{O} \\
    215 & D7 & \texttimes         & \string\texttimes & (\textsf{tc}) \\
    216 & D8 & \O                 & \string\O \\
    217 & D9 & \accented{\`}{U} \\
    218 & DA & \accented{\'}{U} \\
    219 & DB & \accented{\^}{U} \\
    220 & DC & \accented{\"}{U} \\
    221 & DD & \accented{\'}{Y} \\
    222 & DE & \idxencone{\TH}    & \string\TH & (T1) \\
    223 & DF & \ss                & \string\ss \\
    224 & E0 & \accented{\`}{a} \\
    225 & E1 & \accented{\'}{a} \\
    226 & E2 & \accented{\^}{a} \\
    227 & E3 & \accented{\~}{a} \\
    228 & E4 & \accented{\"}{a} \\
    229 & E5 & \aa                & \string\aa \\
    230 & E6 & \ae                & \string\ae \\
    231 & E7 & \accented{\c}{c} \\
    232 & E8 & \accented{\`}{e} \\
    233 & E9 & \accented{\'}{e} \\
    234 & EA & \accented{\^}{e} \\
    235 & EB & \accented{\"}{e} \\
    236 & EC & \accented{\`}{\i} \\
    237 & ED & \accented{\'}{\i} \\
    238 & EE & \accented{\^}{\i} \\
    239 & EF & \accented{\"}{\i} \\
    240 & F0 & \idxencone{\dh}    & \string\dh & (T1) \\
    241 & F1 & \accented{\~}{n} \\
    242 & F2 & \accented{\`}{o} \\
    243 & F3 & \accented{\'}{o} \\
    244 & F4 & \accented{\^}{o} \\
    245 & F5 & \accented{\~}{o} \\
    246 & F6 & \accented{\"}{o} \\
    247 & F7 & \textdiv           & \string\textdiv & (\textsf{tc}) \\
    248 & F8 & \o                 & \string\o \\
    249 & F9 & \accented{\`}{u} \\
    250 & FA & \accented{\'}{u} \\
    251 & FB & \accented{\^}{u} \\
    252 & FC & \accented{\"}{u} \\
    253 & FD & \accented{\'}{y} \\
    254 & FE & \idxencone{\th}    & \string\th & (T1) \\
    255 & FF & \accented{\"}{y} \\ \bottomrule
  \end{tabular}
\end{nonsymtable}

The following are some additional notes about the contents of
Table~\ref{latin1-table}:

\begin{itemize}
  \item A ``(\textsf{tc})'' after a symbol name means that the \TC\
  package must be loaded to access that symbol.  A ``(T1)'' means that
  the symbol requires the T1 \fntenc[T1].  The \pkgname{fontenc}
  package can change the \fntenc[document] document-wide.

  \item Many of the \verb|\text|\dots\ accents can also be produced
  using the accent commands shown in Table~\vref{text-accents} plus an
  empty argument.  For instance,
  \verb|\={}|\index{_=\magicequalname{}\verb+{}+ (\magicequal{})}
  is essentially the same as \cmd{\textasciimacron}.

  \item The commands in the ``\latexE'' columns work both in body text
  and within a \verb|\texttt{|$\ldots$\verb|}| command (or, more
  generally, when \verb|\ttfamily| is in effect).

  \item The ``\pounds'' and ``\$'' glyphs occupy the same slot~(36) of
  the OT1 \fntenc[OT1], with ``\pounds'' appearing in italic fonts and
  ``\$'' appearing in roman fonts.  A problem with \latex's default
  handling of this double-mapping is that
  ``\texttt{\string{\string\sffamily\linebreak[0]\string\slshape\linebreak[0]\string\pounds\string}}''
  produces
  ``{\fontencoding{OT1}\sffamily\slshape\selectfont\textdollar}'', not
  ``{\fontencoding{T1}\sffamily\slshape\selectfont\textsterling}''.
  Other \fntenc{}s use separate slots for the two characters and are
  therefore robust to the problem of ``\pounds''/''\$'' conflicts.
  Authors who use \cmdI{\pounds} should select a \fntenc{} other than
  OT1 (as explained~\vpageref[above]{altenc}) or use the \TC\ package,
  which redefines \cmdI{\pounds} to use the TS1 \fntenc[TS1].

  \item Character~173, \cmdI[-]{\-}, is shown as ``-'' but is actually
  a discretionary\index{discretionary hyphen}\index{hyphen,
  discretionary} hyphen; it appears only at the end of a line.
\end{itemize}

\index{code page 1252|(}
Microsoft\regtm\index{Microsoft Windows=Microsoft\regtm\
Windows\regtm} Windows\regtm\index{Windows=Windows\regtm} normally
uses a superset of Latin~1 called ``Code Page~1252'' or ``CP1252'' for
short.  CP1252 introduces symbols in the Latin~1 ``invalid'' range
(characters~128--159).  Table~\ref{cp1252-table} presents the
characters with which CP1252 augments the standard Latin~1\index{Latin
1} table.
\index{code page 1252|)}

\begin{nonsymtable}{\latexE Code Page~1252 Table}
  \index{code page 1252>table}
  \label{cp1252-table}
  \newcommand{\accented}[2]{#1#2 & \texttt{\string#1\string{#2\string}}}
  \newcommand{\idxencone}[1]{\indexcommand[\string\encone{\string#1}]{#1}\encone{#1}}

  \begin{tabular}[t]{@{}*2{>{\ttfamily}r}c>{\ttfamily}lc@{}} \\ \toprule
    \multicolumn{1}{@{}c}{Dec} &
    \multicolumn{1}{c}{Hex} &
    \multicolumn{1}{c}{Char} &
    \multicolumn{2}{c@{}}{\latexE} \\ \midrule
    128 & 80 & \texteuro          & \cmdI{\texteuro} & (\textsf{tc}) \\
    130 & 82 & \idxencone{\quotesinglbase} & \string\quotesinglbase & (T1) \\
    131 & 83 & \textit{f}         & \verb|\textit{f}| \\
    132 & 84 & \idxencone{\quotedblbase}   & \string\quotedblbase & (T1) \\
    133 & 85 & \dots              & \cmdI{\dots} \\
    134 & 86 & \dag               & \cmdI{\dag} \\
    135 & 87 & \ddag              & \cmdI{\ddag} \\
    136 & 88 & \textasciicircum   & \cmdI{\textasciicircum} \\
    137 & 89 & \textperthousand   & \cmdI{\textperthousand} & (\textsf{tc}) \\
    138 & 8A & \accented{\v}{S}   \\
    139 & 8B & \idxencone{\guilsinglleft}  & \string\guilsinglleft & (T1) \\
    140 & 8C & \OE                & \cmdI{\OE} \\
    142 & 8E & \accented{\v}{Z}   \\
    \bottomrule
  \end{tabular}
  \hfil
  \begin{tabular}[t]{@{}*2{>{\ttfamily}r}c>{\ttfamily}lc@{}} \\ \toprule
    \multicolumn{1}{@{}c}{Dec} &
    \multicolumn{1}{c}{Hex} &
    \multicolumn{1}{c}{Char} &
    \multicolumn{2}{c@{}}{\latexE} \\ \midrule
    145 & 91 & `                  & ` \\
    146 & 92 & '                  & ' \\
    147 & 93 & ``                 & `` \\
    148 & 94 & ''                 & '' \\
    149 & 95 & \textbullet        & \cmdI{\textbullet} \\
    150 & 96 & --                 & -- \\
    151 & 97 & ---                & --- \\
    152 & 98 & \textasciitilde    & \cmdI{\textasciitilde} \\
    153 & 99 & \texttrademark     & \cmdI{\texttrademark} \\
    154 & 9A & \accented{\v}{s}   \\
    155 & 9B & \idxencone{\guilsinglright}  & \string\guilsinglright & (T1) \\
    156 & 9C & \oe                & \cmdI{\oe} \\
    158 & 9E & \accented{\v}{z}   \\
    159 & 9F & \accented{\"}{Y}   \\
    \bottomrule
  \end{tabular}
\end{nonsymtable}

The following are some additional notes about the contents of
Table~\ref{cp1252-table}:

\begin{itemize}
  \item As in Table~\ref{latin1-table}, a ``(\textsf{tc})'' after a
  symbol name means that the \TC\ package must be loaded to access
  that symbol.  A ``(T1)'' means that the symbol requires the T1
  \fntenc[T1].  The \pkgname{fontenc} package can change the
  \fntenc[document] document-wide.

  \item Not all characters in the 128--159 range are defined.

  \item Look up ``euro signs'' in the index for alternatives to
  \cmdI{\texteuro}.
\end{itemize}

\index{ISO character entities|(}
While too large to incorporate into this document, a listing of
ISO~8879:1986 SGML\index{SGML}/XML\index{XML} character entities and
their \latex{} equivalents is available from
\url{http://www.bitjungle.com/~isoent/}.  Some of the characters
presented there make use of \pkgname{isoent}, a \latexE{} package
(available from the same URL) that fakes some of the missing ISO
glyphs using the \latex{} \texttt{picture}
environment.\footnote{\pkgname{isoent} is not featured in this
document, because it is not available from CTAN\idxCTAN{} and because
the faked symbols are not ``true'' characters; they exist in only one
size, regardless of the body text's font size.}
\index{ISO character entities|)}


\subsection{About this document}
\label{about-doc}

\paragraph{History}
\person{David}{Carlisle} wrote the first version of this document in
October, 1994.  It originally contained all of the native \latex{}
symbols (Tables~\ref{bin}, \ref{op}, \ref{rel}, \ref{arrow},
\ref{log}, \ref{greek}, \ref{dels}, \ref{ldels}, \ref{math-accents},
\ref{extensible-accents}, \ref{ord}, and a few tables that have since
been reorganized) and was designed to be nearly identical to the
tables in Chapter~3 of Leslie\index{Lamport, Leslie} Lamport's
book~\cite{Lamport:latex}.  Even the table captions and the order of
the symbols within each table matched!  The \AMS\ symbols
(Tables~\ref{ams-bin}, \ref{ams-rel}, \ref{ams-nrel},
\ref{ams-arrows}, \ref{ams-narrows}, \ref{ams-greek},
\ref{ams-hebrew}, \ref{ams-del}, and \ref{ams-misc}) and an initial
Math Alphabets table (Table~\ref{alphabets}) were added thereafter.
Later, \person{Alexander}{Holt} provided the \ST\ tables
(Tables~\ref{st-bin}, \ref{st-large}, \ref{st-rel}, \ref{st-arrows},
\ref{st-ext}, and \ref{st-del}).

In January, 2001, \person{Scott}{Pakin} took responsibility for
maintaining the symbol list and has since implemented a complete
overhaul of the document.  The result, now called, ``The \doctitle'',
includes the following new features:

\begin{itemize}
  \item the addition of a handful of new math alphabets, dozens of new
  font tables, and thousands of new symbols

  \item the categorization of the symbol tables into body-text
  symbols, mathematical symbols, science and technology symbols,
  dingbats, and other symbols, to provide a more user-friendly
  document structure

  \item an index, table of contents, and a frequently-requested symbol
  list, to help users quickly locate symbols

  \item symbol tables rewritten to list the symbols in alphabetical
  order

  \item appendices to provide additional information relevant to using
  symbols in \latex{}

  \item tables showing how to typeset all of the characters in the
  ASCII\index{ASCII} and Latin~1\index{Latin 1}
  \fntenc[ASCII]s\index{font encodings>Latin 1}
\end{itemize}

\noindent
Furthermore, the internal structure of the document has been
completely altered from David's original version.  Most of the changes
are geared towards making the document easier to extend, modify, and
reformat.


\paragraph{Build characteristics}
Table~\vref{doc-characteristics} lists some of this document's build
characteristics.  Most important is the list of packages that \latex{}
couldn't find, but that \selftex otherwise would have been able to
take advantage of.  Complete, prebuilt versions of this document are
available from CTAN\idxCTAN{} (\url{http://www.ctan.org/} or one of
its many mirror sites) in the directory
\texttt{tex-archive/info/symbols/comprehensive}.
Table~\ref{package-dates} shows the package date (specified in the
\verb|.sty|~file with \cmd{\ProvidesPackage}) for each package that
was used to build this document and that specifies a package date.
Packages are not listed in any particular order in either
Table~\ref{doc-characteristics} or~\ref{package-dates}.

\begin{nonsymtable}{Document Characteristics}
\label{doc-characteristics}
\begin{tabular}{@{}lp{0.5\textwidth}@{}} \toprule
Characteristic      & Value \\ \midrule
Source file:        & \selftex \\
Build date:         & \today \\
Symbols documented: & \approxcount\prevtotalsymbols \\
Packages included:  & \makeatletter
                        \def\@elt#1{\pkgname{#1}\xspace}
                        \foundpkgs
                      \makeatother \\
Packages omitted:   & \makeatletter
                        \ifcomplete
                          \emph{none}
                        \else
                          \def\@elt#1{\pkgname{#1}\xspace}
                          \missingpkgs
                        \fi
                      \makeatother \\
\bottomrule
\end{tabular}
\end{nonsymtable}


% Automatically generate a table of package version numbers.
\makeatletter
\begingroup
  % Given a package name, output the package's date.
  \def\show@package@date#1/#2/#3#4#5!!!{#1/#2/#3#4}
  \newcommand{\showpackagedate}[1]{%
    \edef\package@date@string{\csname ver@#1.sty\endcsname}%
    \expandafter\show@package@date\package@date@string!!!
  }

  % Format a metavariable.
  \def\meta#1{\textlangle{\textit{#1}}\textrangle}

  % Produce the entire table body as a token list.
  \newtoks\pkg@date@toks
  \def\@elt#1{%
    \expandafter\ifx\csname ver@#1.sty\endcsname\relax
    \else
      \expandafter\ifx\csname ver@#1.sty\endcsname\@empty
      \else
        \pkgname{#1} & \showpackagedate{#1} \\
      \fi
    \fi
  }
  \expandafter\pkg@date@toks\expandafter=\expandafter{\foundpkgs}

  % Output a formatted table which contains the previously defined token list.
  \begin{nonsymtable}{Package versions used in the preparation of this document}
  \label{package-dates}
  \begin{tabular}{@{}ll@{}}
    \toprule
    Name & Date \\
    \midrule
    \the\pkg@date@toks
    \bottomrule
  \end{tabular}
  \end{nonsymtable}
\endgroup
\makeatother


\subsection{Copyright and license}

\mbox{}

\begin{tabular}{@{}l@{}}
  The \doctitle \\
  Copyright~\copyright\ \number\year, Scott Pakin \\
\end{tabular}

\bigskip

\noindent
This work may be distributed and/or modified under the conditions of
the \latex\ Project Public License, either version~1.3c of this license
or (at your option) any later version.  The latest version of this
license is in

\begin{center}
  \url{http://www.latex-project.org/lppl.txt}
\end{center}

\noindent
and version~1.3c or later is part of all distributions of \latex\
version 2006/05/20 or later.

This work has the LPPL maintenance status ``maintained''.

The current maintainer of this work is Scott Pakin.

% This work consists of the files \filename{symbols.tex},
% \filename{README}, \filename{SYMLIST}, \filename{lightbulb10.mf}, and
% \filename{lightbulb.mf}, \filename{lightbulb.map}, and all PDF,
% \postscript, Encapsulated \postscript, and \postscript font files
% derived from those.


% It seems like such a waste to put such a brief bibliography on its own
% page.  So we temporarily restore \section back to its original
% definition, just for the list of references.

\vspace{\stretch{1}}
\begingroup
\let\section=\origsection

\addcontentsline{toc}{section}{References}
\begin{thebibliography}{Knu86b}

\bibitem[AMS99]{AMS1999:amsmath}
  American Mathematical Society.
  \emph{User's Guide for the \textsf{amsmath} Package (Version~2.0)},
  December~13, 1999.
  Available from \url{ftp://ftp.ams.org/pub/tex/doc/amsmath/amsldoc.pdf}.

\bibitem[Ber01]{Berry:fontname}
  Karl Berry.\index{Berry, Karl}
  Fontname: Filenames for \tex fonts,
  June 2001.
  Available from \url{http://www.ctan.org/tex-archive/info/fontname}.

\bibitem[Che97]{Chen1997}
  Raymond Chen.\index{Chen, Raymond}
  A \MF\ of `Simpsons' characters.
  \emph{Baskerville}, 4(4):19, September 1997.
  ISSN~\mbox{1354-5930}.
  Available from
  \url{http://tug.ctan.org/usergrps/uktug/baskervi/4_4/bask4_4.ps}.

\bibitem[Dow00]{Downes:smg}
  Michael Downes.\index{Downes, Michael J.}
  Short math guide for {\latex},
  July~19, 2000.
  Version~1.07.
  Available from \url{http://www.ams.org/tex/short-math-guide.html}.

\bibitem[Gib97]{Gibbons:longdiv}
  Jeremy Gibbons.\index{Gibbons, Jeremy}
  Hey---it works!
  \emph{TUGboat}, 18(2):75--78, June 1997.
  Available from \url{http://www.tug.org/TUGboat/Articles/tb18-2/tb55works.pdf}.

\bibitem[Knu86a]{Knuth:ct-a}
  Donald~E. Knuth.\index{Knuth, Donald E.}
  \emph{The {\TeX}book},
  volume~A of \emph{Computers and Typesetting}.
  Ad{\-d}i{\-s}on-Wes{\-l}ey,
  Reading, MA, USA,
  1986.

\bibitem[Knu86b]{Knuth:ct-c}
  Donald~E. Knuth.\index{Knuth, Donald E.}
  \emph{The {\MF}book},
  volume~C of \emph{Computers and Typesetting}.
  Ad{\-d}i{\-s}on-Wes{\-l}ey,
  Reading, MA, USA,
  1986.

\bibitem[Lam86]{Lamport:latex}
  Leslie Lamport.\index{Lamport, Leslie}
  \emph{\latex: A document preparation system}.
  Ad{\-d}i{\-s}on-Wes{\-l}ey,
  Reading, MA, USA,
  1986.

\bibitem[\LaT{}98]{ltnews09}
  \latex{}3~Project Team.
  A new math accent.
  \emph{\latex News}. Issue~9, June~1998.
  Available from
  \url{http://www.ctan.org/tex-archive/macros/latex/doc/ltnews09.pdf}
  (also included in many \tex{} distributions).

\bibitem[\LaT{}00]{fntguide}
  \latex{}3~Project Team.
  \latexE font selection,
  January~30, 2000.
  Available from
  \url{http://www.ctan.org/tex-archive/macros/latex/doc/fntguide.ps}
  (also included in many \tex{} distributions).
\end{thebibliography}
\endgroup

\clearpage
\addcontentsline{toc}{section}{Index}
{\small\printindex}

\end{document}
