% $Id: qsymbols.tex,v 1.8 1996/12/05 04:27:20 krisrose Exp $
%
% `Quoted math symbol abbreviations' package for LaTeX2e.
% Copyright © 1994  Kristoffer H. Rose  <kris@diku.dk>
%
% This package is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by the
% Free Software Foundation; either version 2 of the License, or (at your
% option) any later version.
%
% This package is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
% or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
% for more details.
%
% You should have received a copy of the GNU General Public License along
% with this package; if not, write to the Free Software Foundation, Inc.,
% 675 Mass Ave, Cambridge, MA 02139, USA.
%
\NeedsTeXFormat{LaTeX2e}
\documentclass[a4paper]{article}
\usepackage{shortvrb} \let\|=| \MakeShortVerb\|
\usepackage{amsmath}

%\usepackage[debug]{qsymbols}
\usepackage[xy,curve,matrix,oldcm,debug]{qsymbols}
%\usepackage[purexy,curve,matrix,debug]{qsymbols}

\newcommand\QSYMBOLS{\texttt{qsymbols}}
\newcommand\AMS{{\the\textfont2 A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}

\ifx\Xy\undefined
 \newcommand{\Xy}{\leavevmode
   \hbox{\kern-.1em X\kern-.3em\lower.4ex\hbox{Y\kern-.15em}}}
 \newcommand{\xymatrix}[1]{}
\fi

\begin{document}

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

\title{ Summary of \QSYMBOLS }

\author{Kristoffer H.~Rose%
  \thanks{E-mail: \texttt{kris\@diku.dk},
    W3~URL: \texttt{http://www.diku.dk/users/kris/}.}}

\date{Version \qsymbolsversion\ $\langle$\qsymbolsdate$\rangle$}

\maketitle

\begin{abstract}\noindent
  \QSYMBOLS\ is a \LaTeX~\cite{L94:LaTeX} package defining systematic
  mnemonic abbreviations, starting with a single open quote |`| for symbols,
  and in double quotes |"|\dots|"| for arrows, for characters from the
  |amssymb| and |stmaryrd| fonts.  Optionally a very large class of arrows
  can be typeset using the \Xy-pic package.
\end{abstract}

\tableofcontents

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

\section{Introduction}

\QSYMBOLS\ sets up a number of mnemonic and compact abbreviations for math
symbols from \LaTeX\ and the packages \texttt{amssymb} and \texttt{stmaryrd},
which it loads.  The abbreviations all start with the backquote character |`|
except for arrows that are of the form |"->"|.  Some are a single characters,
some a more complicated pattern, but always the idea is to use abbreviations
that hint at the \textit{visual} appearance of the symbol.  Finally it is
possible for the user to add more abbreviations of the simpler categories.

You can retrieve \QSYMBOLS\ as well as the \texttt{amssymb} and
\texttt{stmaryrd} packages by anonymous ftp from all CTAN archives in
directory \texttt{/tex-archive\slash macros\slash latex\slash contrib\slash
  supported/}\footnote{The `home' of \QSYMBOLS\ is \texttt{ftp.diku.dk} in
  directory \texttt{/diku/users/kris/TeX/qsymbols/}.} (each package has its
own subdirectory).

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

\section{Simple symbols}

\subsection{Greek letters}

All the standard greek letters used in math are available as |`| followed by
a letter: either lowercase:
\[
\begin{array}{\|r\|*{25}{@{\hspace{1ex}}c}\|}
  \hline
  x    &|a|&|b|&|c|&|d|&|e|&|f|&|g|&|h|&|i|&|j|&|k|&|l|&|m|&|n|&|p|&|q|
       &|r|&|s|&|t|&|u|&|v|&|w|&|x|&|y|&|z|\\
  \hline
  |`|x &`a &`b &`c &`d &`e &`f &`g &`h &`i &`j &`k &`l &`m &`n &`p &`q
       &`r &`s &`t &`u &`v &`w &`x &`y &`z \\
\hline
\end{array}
\]
or uppercase:
\[
\begin{array}{\|r\|*{11}c\|}
  \hline
  X    &|D|&|F|&|G|&|J|&|L|&|P|&|Q|&|S|&|W|&|X|&|Y|\\
  \hline
  |`|X &`D &`F &`G &`J &`L &`P &`Q &`S &`W &`X &`Y \\
  \hline
\end{array}
\]

\subsection{Common symbols}

Simple symbols are available using |`| followed by a symbolic representation
of the symbol.  The most common have single character representations:
\[
\begin{array}{\|r\|*{18}{@{\hspace{.5pc}}c}\|}
  \hline
  x
&|+|&|*|&|:|&|;|&|/|&|U|&|C|&|_|&|T|&|o|&|.|&|=|&|~|&|E|&|A|&|!|&|^|&|V|\\
  \hline
  |`|x
&`+ &`* &`: &`; &`/ &`U &`C &`_ &`T &`o &`. &`= &`~ &`E &`A &`! &`^ &`V \\
  \hline
\end{array}
\]

\subsection{Circled and Boxed Symbols}

These are represented using round and square brackets, respectively:
\[
\begin{array}{\|r\|*{20}{@{\hspace{.5pc}}c}\|}
\hline
    x| |&   & |+|& |-|& |`*|& |/|&   \|   & |`/|&|`.|& |*|& |`o|
        & |`^|& |`V|& |<|& |>|& |?|& |!|& |:-|& |R|& |C|& |a| \\
\hline
|`(|x|)|&`()&`(+)&`(-)&`(`*)&`(/)&\varobar&`(`/)&`(`.)&`(*)&`(`o)
        &`(`^)&`(`V)&`(<)&`(>)&`(?)&`(!)&`(:-)&`(R)&`(C)&`(a) \\
\hline
|`[|x|]|&`[]&`[+]&`[-]&`[`*]&`[/]&\boxbar &`[`/]&`[`.]&`[*]&`[`o]
        &`[`^]&`[`V]&`[<]&`[>]&`[?]&`[!]&`[:-]&`[R]&`[C]&`[a] \\
\hline
|`<|x|>|&`<>&`<+>&`<->&`<`*>&`</>&        &`<`/>&`<`.>&`<*>&`<`o>
        &`<`^>&`<`V>&    &    &`<?>&`<!>&`<:->&`<R>&`<C>&`<a> \\
\hline
|`{|x|}|&`{}&`{+}&`{-}&`{`*}&`{/}&        &`{`/}&`{`.}&`{*}&`{`o}
        &`{`^}&`{`V}&    &    &`{?}&`{!}&`{:-}&`{R}&`{C}&`{a} \\
\hline
\end{array}
\]
As it can be seen, `undefined' codes of the forms |`(a)| and |`[a]| result in
the contents being circled and boxed, respectively.

\subsection{Bold symbols}

The \AMS-\LaTeX\ |\boldsymbol| command is available by using the special
abbreviation |`@|$x$ for the bold version $`@x$ of $x$ as well as |`@`|$x$
where $x$ is on one of the forms described in this section, i.e., |`@`a|
gives~$`@`a$.

\subsection{Adding new symbols}

Symbols of all the above forms can be added using the form
$$
|\newqsymbol|~|{`|\mbox{\it code}|}|~|{|\mbox{\it expansion}|}|
$$ which makes |`|\textit{code} behave as \textit{expansion} in math mode.
\textit{code} should be either a single character or some characters enclosed
in |()|, |[]|, |<>|, or |{}|.

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

\section{Orderings}

Two to four consecutive |`|s indicate an ordering relation:
\[
\def\e{\epsilon}
\def\be{{\backepsilon}}
\begin{array}{\|c\|*6{@{\hspace{\jot}}c}\|*6{@{\hspace{\jot}}c}\|}
  \hline
  \e,\be &|``|\e  &|``/|\e  &|``|\e|=|  &|``/|\e|=|  &|```|\e  &|````|\e
         &|``|\be &|``/|\be &|``|\be|=| &|``/|\be|=| &|```|\be &|````|\be \\
  \hline
  |<|,|>| & ``< & ``/< & ``<= & ``/<= & ```< & ````<
          & ``> & ``/> & ``>= & ``/>= & ```> & ````> \\
  |(|,|)| & ``( & ``/( & ``(= & ``/(= & ```( & ````(
          & ``) & ``/) & ``)= & ``/)= & ```) & ````) \\
  |[|,|]| & ``[ & ``/[ & ``[= & ``/[= & ```[ & ````[
          & ``] & ``/] & ``]= & ``/]= & ```] & ````] \\
  |\{|,|\}| & ``\{ & ``/\{ & ``\{= & ``/\{= & ```\{ & ````\{
            & ``\} & ``/\} & ``\}= & ``/\}= & ```\} & ````\} \\
  |\<|,|\>| & ``\< & ``/\< & ``\<= & ``/\<= & ```\< & ````\<
            & ``\> & ``/\> & ``\>= & ``/\>= & ```\> & ````\> \\
  | ~|,|\~| & ``~ & ``/~ & ``~= & ``/~= & ```~ & ````~
            & ``\~ & ``/\~ & ``\~= & ``/\~= & ```\~ & ````\~ \\
  |(-|,|-)| & ``(- & ``/(- & ``(-= & ``/(-= & ```(- & ````(-
          & ``-) & ``/-) & ``-)= & ``/-)= & ```-) & ````-) \\
  |(+|,|+)| & ``(+ & ``/(+ & ``(+= & ``/(+= & ```(+ & ````(+
          & ``+) & ``/+) & ``+)= & ``/+)= & ```+) & ````+) \\
  \hline
\end{array}
\]
Some abbreviations are provided for convenience:
\[
\begin{array}{\|r\|*{4}c\|}
\hline
x     & |U|& |V|& |S|& |P|\\
\hline
|``|x &``U &``V &``S &``P \\
\hline
\end{array}
\]
There is no simple way to add more orderings.


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

\section{Arrows}

Double quotes |"|\dots|"| make it possible to typeset arrows.  On some
systems |"| is reserved for other uses, in that case you can use |`"|\dots|"|
instead.

\subsection{Canned arrows}

The available arrows are shown in figure~\ref{f.canned-arrows} where $!$
means that the arrow is available in a long version by adding a |!| just
after the stem character (one of |-=|), and |?| means that it stretches to
accomodate labels (when no |!|s are given, see below).

\begin{figure*}[ht]
$$
\begin{array}{\|ccl\|ccl\|ccl\|}
\hline
\verb;"<-"; &`"<-" &!@&\verb;"<->";&`"<->"&!&\verb;"->";&`"->"&!@ \\
\verb;"<="; &`"<=" &!@&\verb;"<=>";&`"<=>"&!&\verb;"=>";&`"=>"&!@ \\
\verb;"<3"; &`"<3" &@ &&&                   &\verb;"3>";&`"3>"&@ \\
\verb;"</-";&`"</-"&  &\verb;"</->";&`"</->"& &\verb;"-/>";&`"-/>"& \\
\verb;"</=";&`"</="&  &\verb;"</=>";&`"</=>"& &\verb;"=/>";&`"=/>"& \\
\hline
\verb;"^<-";&`"^<-"&  &&&                   &\verb;"^->";&`"^->"& \\
\verb;"_<-";&`"_<-"&  &&&                   &\verb;"_->";&`"_->"& \\
\hline
\verb;"<-|";&`"<-|"&!@&&&                   &\verb;"|->";&`"|->"&!@\\
\verb;"<=|";&`"<=|"&!@&&&                   &\verb;"|=>";&`"|=>"&!@\\
\hline
\verb;"<-'";&`"<-'"&@&&&                   &\verb;"`->";&`"`->"&@\\
\verb;"<-<";&`"<-<"& &&&                   &\verb;">->";&`">->"& \\
\hline
\verb;"<|-";&`"<|-"&@&\verb;"<|-|>";&`"<|-|>"&@&\verb;"-|>";&`"-|>"&@\\
&&                   &&&                       &\verb;"-o";&`"-o"  &@\\
\hline
\verb;"<--";&`"<--"& &&&                   &\verb;"-->";&`"-->"& \\
&&                   &\verb;"<~>";&`"<~>"& &\verb;"~>";&`"~>"& \\
\hline
\verb;"<<-";&`"<<-"&@&&&                   &\verb;"->>";&`"->>"&@\\
\verb;"<<=";&`"<<="&@&&&                   &\verb;"=>>";&`"=>>"&@\\
\hline
\hline
\verb;"|-";&`"|-"&  &\verb;"|/-";&`"|/-"& &\verb;"-|";&`"-|"&  \\
\verb;"|=";&`"|="&   &\verb;"|/=";&`"|/="&  &&& \\
\verb;"||-";&`"||-"& &\verb;"||/-";&`"||/-"&&&& \\
\hline
\end{array}
$$
\caption{Standard `canned' arrow symbols.}
\label{f.canned-arrows}
\end{figure*}

\subsection{Labelling arrows}

Inserting |{^|$s$|}| or |{_|$s$|}|, where $s$ is a legal super- or subscript,
respectively, will typeset these as limits, and even grows it in those cases
where the arrow is marked with a ``@'' in the table.
\[
\begin{array}{\|c\|*3c\|}
  \hline
     x    &|-{_1}>|&|3>{^{`a`.`b}}|&{\verb,<|-|>{_{\mbox{push}}},}\\
  \hline
  |"|x|"| &"-{_1}>"&"3>{^{`a`.`b}}"&      "<|-|>{_{\mbox{push}}}"\\
  \hline
\end{array}
\]

\subsection{Adding new arrows}

You can add more `canned' arrows of this kind with commands
$$
|\newqsymbol|~|{"|\mbox{\it arrow}|"}|~|{|\mbox{\it expansion}|}|
$$
which makes |"|\textit{arrow}|"| behave as \textit{expansion} in math mode.

Similarly, you can add stretchable arrows using commands of the form
$$
|\newqsymbol|~|{"|\mbox{\it arrow}|@"}|~|{|\mbox{\it filler}|}|
$$ which makes |"|\textit{arrow}|"| stretch under long labels as
\textit{filler} dictates: this should behave as the plain \TeX\ command
|\rightarrowfill| or use the macro
$$
|\genericarrowfill{|\textit{tail}|}{|\textit{leader}|}{|\textit{head}|}|
$$
\QSYMBOLS\ includes, for example, the declaration
$$
|\newqsymbol{"3>@"}{\genericarrowfill\equiv\equiv\Rrightarrow}|
$$

\subsection{Using \Xy-pic for arrows}

If the option |[xy]| is used in the |\usepackage| command, or if
\Xy-pic~\cite{R94:Xy-picRM}\footnote{\Xy-pic version~3 is needed for this to
  work.} is already loaded, then the \Xy-pic arrow feature (with the `cmtip'
extension) is used to allow a much more general class of arrows.

First, all blank entries in figure~\ref{f.canned-arrows} are filled; if the
option |[purexy]| is used instead of |[xy]| then all the entries of the table
are replaces with \Xy-pic generated arrows (this gives a somewhat more
homogenous look and avoids loading of |ams| and |stmary| arrows).

Second, general arrows can be constructed according to the following rules:
\begin{itemize}

\item Basic arrows are composed by combining the variants
  |23^_|, the tips |<>|\verb,|,|xo`'|, and the connectors |-=.:~|.

\item The character |/| `negates' the arrow (once or twice) similar to the
  way |\not| does for relations:
  \[
  \begin{array}{\|c\|*2c\|}
    \hline
       x    &|`-/>|&|=//!>| \\
    \hline
    \mbox{\tt "}x\mbox{\tt "} &"`-/>"&"=//!>"\\
    \hline
  \end{array}
  \]

\item Each |!| character makes the arrow a bit longer.
  \[
  \begin{array}{\|c\|*4c\|}
    \hline
       x    &|->|&|-!>|&|-!!>| &|-!!!>| \\
    \hline
    \mbox{\tt "}x\mbox{\tt "} &"->"&"-!>"&"-!!>" &"-!!!>" \\
    \hline
  \end{array}
  \]
  \textit{Note}: Some arrows are automatically made a bit longer, e.g., the
  |<~>| arrow shown above.

\item The form |*|\emph{object} inserts the \Xy-pic \emph{object} which will
  be used for the tail, shaft, or tip as indicated by the position.  Here are
  some examples:
  \[
  \begin{array}{\|c\|*2c\|}
    \hline
       x    &|*{x}-*{y}!|&\verb+*{}*{*}|!!+\\
    \hline
    |"|x|"| &"*{x}-*{y}!"&     "*{}*{*}|!!"\\
    \hline
  \end{array}
  \]
  as in the examples it is recommended to specify all three of tail, shaft,
  and head, when using this, in particular an empty tail when the shaft is
  specified with |*| because otherwise it is taken as the tail.

\item The forms |(|$x$|)| and |[|$x$|]| insert a break with $x$ in a
  circle and box, respectively:
  \[
  \begin{array}{\|c\|*2c\|}
    \hline
       x    &|(1)>|&|[1]>>|\\
    \hline
    |"|x|"| &"(1)>"&"[1]>>"\\
    \hline
  \end{array}
  \]

\item The special code |{|$\ell$|}| adds the $\ell$ material to the end of
  the \Xy-pic arrow: All \Xy-pic $\langle$labels$\rangle$ can be used as
  described in~\cite[\S16]{R94:Xy-picRM}, for example,
  \[
  \begin{array}{\|c\|*1c\|}
    \hline
       x    &\verb,={|{`b}}!!|>,\\
    \hline  
    |"|x|"| &     "={|{`b}}!!|>"\\
    \hline
  \end{array}
  \]
  Use this with care!

\item Similarly the special code |@{|$\ell$|}| adds the $|@|\ell$ material
  (note the omission of the braces) to the beginning of the \Xy-pic arrow:
  all \Xy-pic arrow $\langle$form$\rangle$s can be used <form> to the
  beginning of the arrow specification; this can be used to as described
  in~\cite[\S16]{R94:Xy-picRM}, for example,
  \[
  \begin{array}{\|c\|*2c\|}
    \hline
       x    &\verb;|-@{/^/}!!!>|; &\verb;->!!!!@{(dr,ul)};\\
    \hline
    |"|x|"|
            &     "|-@{/^/}!!!>|" &     "->!!!!@{(dr,ul)}"\\
    \hline
  \end{array}
  \]
  Use this with care!

\end{itemize}

\subsection{Using \protect\QSYMBOLS\ arrows in \protect\Xy-pic diagrams}

Finally it is possible to some extent to use \QSYMBOLS\ arrows in \Xy-pic
matrices (as described in the \Xy-pic User's Guide~\cite{R94:Xy-picUG}) and
graphs (as described in the \Xy-pic Reference
Manual~\cite[\S19]{R94:Xy-picRM}).  First notice that you should always use
the |`"|\dots|"| form.  Second, the entire |`"|\dots|"| construction behaves
as an arrow made with |\ar| for matrices and |:| for graphs, that is, you
must add a `target address' for the arrow after it.  Further information of
this can be found

Here is the canonical pull-back example diagram from category theory typeset
using qsymbols:
\begin{verbatim}
    \xymatrix{
     U `"->"@/_/[ddr]_y `".>"[dr]|-{(x,y)} `"->"@/^/[drr]^x \\
      & X \times_Z Y `"=>"[d]^q `"=>"[r]_p & X `"=>"[d]_f   \\
      & Y `"=>"[r]^g                       & Z              }
\end{verbatim}
typesets
\begin{displaymath}
    \xymatrix{
     U `"->"@/_/[ddr]_y `".>"[dr]|-{(x,y)} `"->"@/^/[drr]^x \\
      & X \times_Z Y `"=>"[d]^q `"=>"[r]_p & X `"=>"[d]_f   \\
      & Y `"=>"[r]^g                       & Z              }
\end{displaymath}
As you can see, \Xy-pic is loaded by \QSYMBOLS\ and as a convenience \Xy-pic
options may be passed to \QSYMBOLS.

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

\begin{thebibliography}{1}

\bibitem{L94:LaTeX}
Leslie Lamport.
\newblock {\em {\LaTeX}---A Document Preparation System}.
\newblock Addison-Wesley, 2nd edition, 1994.

\bibitem{R94:Xy-picUG}
Kristoffer~H. Rose.
\newblock {\Xy}-pic user's guide.
\newblock Mathematics Report 94--148, MPCE, Macquarie University, NSW 2109,
  Australia, June 1994.
\newblock For version 2.10+. Latest version available with URL {\tt
  ftp://ftp.diku.dk\slash diku\slash users\slash kris\slash TeX\slash xy\slash
  xyguide.ps}.

\bibitem{R94:Xy-picRM}
Kristoffer~H. Rose and Ross Moore.
\newblock {\Xy}-pic reference manual.
\newblock Mathematics Report 94--155, MPCE, Macquarie University, NSW 2109,
  Australia, June 1994.
\newblock For version 2.10+. Latest version available by anonymous ftp in {\tt
  ftp.diku.dk: /diku\slash users\slash kris\slash TeX\slash xyrefer.ps.Z}.

\end{thebibliography}

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

\end{document}

% $Log: qsymbols.tex,v $
% Revision 1.8  1996/12/05 04:27:20  krisrose
% Handles sub/superscripts without Xy-pic; cleaned up.
%
% Revision 1.7  1994/12/12  01:29:28  kris
% Updates for Xy-pic v3 in progress...
%
% Changed `" to `@ and made `" = ".
%
% Revision 1.5  1994/10/28  18:19:28  kris
% Added '{..} and documented "...{...}..." <labels>.
%
% Revision 1.4  1994/10/28  15:08:46  kris
% Added boldsymbol support.
%
% Revision 1.3  1994/10/26  16:47:07  kris
% Fixed a few things :-)
%
% Revision 1.2  1994/10/26  02:10:17  kris
% Integrated qarrow; use of Xy-pic is an option.
%
% Revision 1.1  1994/10/24  22:55:12  kris
% Initial revision
%
% From kris-sty.tex 1.4.
