summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-12-26 00:46:06 +0000
committerKarl Berry <karl@freefriends.org>2007-12-26 00:46:06 +0000
commit09c2e34333852c976a2bfb988393426be3139ea5 (patch)
tree39fa7de8c6977e71c7da74c78cc463b0a7b8463d /Master/texmf-dist/doc
parent8622f0261b07f52a9363d670b16759eb4b3523e1 (diff)
barr update (2005-12-13)
git-svn-id: svn://tug.org/texlive/trunk@5911 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r--Master/texmf-dist/doc/generic/barr/diaxydoc.pdfbin0 -> 238311 bytes
-rw-r--r--Master/texmf-dist/doc/generic/barr/diaxydoc.tex (renamed from Master/texmf-dist/doc/latex/barr/diaxydoc.tex)542
-rw-r--r--Master/texmf-dist/doc/latex/barr/diagdoc.tex422
3 files changed, 360 insertions, 604 deletions
diff --git a/Master/texmf-dist/doc/generic/barr/diaxydoc.pdf b/Master/texmf-dist/doc/generic/barr/diaxydoc.pdf
new file mode 100644
index 00000000000..d9994f8920a
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/barr/diaxydoc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/barr/diaxydoc.tex b/Master/texmf-dist/doc/generic/barr/diaxydoc.tex
index 07ea061fb6e..38c94d4ff28 100644
--- a/Master/texmf-dist/doc/latex/barr/diaxydoc.tex
+++ b/Master/texmf-dist/doc/generic/barr/diaxydoc.tex
@@ -1,7 +1,5 @@
-
\documentclass[12pt]{article}
\input diagxy
- \xyoption{curve}
\textwidth 6in
\oddsidemargin 0pt
\makeindex
@@ -9,33 +7,12 @@
\def\xypic{\hbox{\rm\Xy-pic}}
\title{A new diagram package (Version \thedate)}
-\author{Michael Barr\\Dept of Math and Stats\\McGill University\\805
-Sherbrooke St. W\\Montreal, QC Canada H3A 2K6\\[5pt] barr@barrs.org}
+\author{Michael Barr\\Dept of Math and Stats, McGill University
+\\barr@barrs.org}
\date{}
\maketitle
+\tableofcontents
-\makeatletter
-\contentsline {section}{\numberline {1}Why another diagram package?}{2}
-\contentsline {subsection}{\numberline {1.1}The latest version}{3}
-\contentsline {subsection}{\numberline {1.2}Main features}{3}
-\contentsline {subsection}{\numberline {1.3}Compatibility}{3}
-\contentsline {subsection}{\numberline {1.4}Errant spaces}{4}
-\contentsline {subsection}{\numberline {1.5}Font sizes}{4}
-\contentsline {subsection}{\numberline {1.6}On \LaTeX \ 2.09 and \LaTeX \ 2e}{5}
-\contentsline {subsection}{\numberline {1.7}Acknowledgments}{5}
-\contentsline {subsection}{\numberline {1.8}License}{6}
-\contentsline {section}{\numberline {2}The basic syntax}{6}
-\contentsline {subsection}{\numberline {2.1}A word about parameters}{7}
-\contentsline {section}{\numberline {3}Defined diagrams}{8}
-\contentsline {section}{\numberline {4}Examples}{10}
-\contentsline {subsection}{\numberline {4.1}Complex diagrams}{19}
-\contentsline {subsection}{\numberline {4.2}Empty placement and moving labels}{23}
-\contentsline {subsection}{\numberline {4.3}Inline macros}{25}
-\contentsline {subsubsection}{\numberline {4.3.1}Added:}{26}
-\contentsline {subsection}{\numberline {4.4}2-arrows}{26}
-\contentsline {subsection}{\numberline {4.5}Mixing \hbox {\rm \unhbox \voidb@x \hbox {\kern -.1em X\kern -.3em\lower .4ex\hbox {Y\kern -.15em}}-pic}\ code}{27}
-\contentsline {subsection}{\numberline {4.6}Diagram from TTT}{29}
-\makeatother
\kern 40pt
{\narrower
@@ -58,18 +35,13 @@ written.}
\kern 5pt
- Note: This is the first increase in functionality since the original
-general release. The macros \index{\backslash to}\verb.\to. and
-\index{\backslash two}\verb.\two. that make inline arrows and pairs of arrows now
-accept an option to vary the types of the arrow, for example to get a
-pair of adjoints going in opposite directions. A macro that makes three
-arrows has been added as well as a macro for a 3 x 3 diagram that can be
-expanded into a map between two exact sequences. A new optional
-parameter has been added to \index{\backslash to}\verb.\to.,
-\index{\backslash two}\verb.\two. and \index{\backslash three}\verb.\three. to allow the
-user to override the automatic computation of the arrow size. See the
-sections on inline arrows, page~\pageref{added} and
-page~\pageref{complex} for details.
+ Note: This is the first increase in functionality in a couple years.
+Following a suggestion of Gerd Zeibig (who implemented this in a very
+different way), I have added a new feature wherein you can create simple
+identifiers for nodes and then describe arrows between those nodes using
+the identifiers. See~\ref{nodes&arrows} for details, syntax and
+examples. I have also recently added support for loops, both inline and
+in diagrams.
\section{Why another diagram package?}
@@ -174,7 +146,8 @@ add \index{\backslash fontscale{x}}\verb.\fontscale{x}., with \index{x}\verb.x.
taking on the values \verb.0,h,1,2,3,4,5., after \xypic\ is loaded.
With \verb.11pt. you will want \verb.h. and with \verb.12pt. you will
want 1. The others are in case you use larger sizes for transparencies
-or for later reduction. While on the subject, I might mention that if
+or for later reduction, in conjunction with extarticle.cls. While on
+the subject, I might mention that if
you want thicker arrow shafts without enlarging anything else you could
add the declaration
\begin{verbatim}
@@ -184,6 +157,10 @@ or even larger. However, this does not thicken the arrow tips and is
not really recommended. There is probably no way (short of creating
your own fonts) to thicken the tips without also lengthening them.
+I had some trouble generating the font files at the larger sizes, so the
+file xyfonts.zip, found at my ftp site (ftp.math.mcgill.ca/pub/barr) has
+fonts for the ljfour generated at all sizes from 10--20 points.
+
\subsection{On \LaTeX\ 2.09 and \LaTeX\ 2e}
Since I have no other forum to do so, I use this space to indulge in a
@@ -324,7 +301,7 @@ described in the \xypic\ reference guide. I just mention a couple of
them. The parameter \index{@{->}@<3pt>}\verb.@{->}@<3pt>., for example,
would give an ordinary arrow moved three points in the direction
perpendicular to that of the arrow. If you give
-\index{{@{-->}@/^5pt/}}\verb.{@{-->}@/^5pt/}., you will get an epic
+\index{{@{->>}@/^5pt/}}\verb.{@{->>}@/^5pt/}., you will get an epic
arrow that is curved in the direction perpendicular to the direction of
the arrow by five points. It is imperative that a specification such as
\index{@{>}@/5pt/}\verb.@{>}@/5pt/. be enclosed in braces because of the
@@ -456,13 +433,16 @@ To make a diagram, you have to enclose it inside \index{\backslash xy ...
\backslash endxy}.\verb,\xy ... \endxy,. You will usually want it
displayed,
for which the simplest way is to enclose it in \index{$$\xy ...
-\endxy$$}\verb,$$\xy...\endxy$$,. For old times' sake, I have also let
+\endxy$$}\verb,$$\xy...\endxy$$,. In previous versions of this, the
+macros
\index{\backslash bfig}\verb.\bfig. and \index{\backslash efig}\verb.\efig. be synonyms for
-\index{\backslash xy}\verb.\xy. and \index{\backslash endxy}\verb.\endxy., resp. (In case
-you wonder, these go all the way back to a main frame formatter running
-at McGill when Charles Wells and I were first writing TTT, where
-\verb,.BFIG, and \verb,.EFIG, were used to make display---at least as
-far as that primitive formatter was capable of.)
+ were synonyms for
+\index{\backslash xy}\verb.\xy. and \index{\backslash endxy}\verb.\endxy.,
+resp. They have now been redefined to also put the box produced by
+\verb.\xy. into a \verb.\vcenter. box. The effect of this is that when
+\index{\backslash eqno}\verb.\eqno. is used with a diagram, the
+resulting equation number will be vertically centered.
+
\section{Examples}
@@ -656,7 +636,12 @@ and
\index{\backslash place}\verb.\place.
that places that object anywhere. I have changed the name from
\verb.\put. in order to avoid clashing with the \LaTeX\ picture mode's
-\index{\backslash put}\verb.\put..
+\index{\backslash put}\verb.\put.. The syntax is
+\verb.\place(x,y)[object]. that places the object at \verb.(x,y)..
+There is also an optional parameter that can be used to add any of
+\xypic's positioning parameters. For example
+\verb.\place[L](x,y)[object]. will left align the object. The default
+is to center align it.
Here is an example that uses a construction that is undocumented here,
but uses a documented \Xy\ construction:
\begin{verbatim}
@@ -809,6 +794,48 @@ cube:
\efig$$
+\subsection{Nodes and arrows}\label{nodes&arrows}
+Following a suggestion of Gerd Zeibig, who has implemented this in a
+very different way, I have added a feature wherein you can specify nodes
+and arrows between them. The nodes can be given simple identifiers and
+those used to specify the source and target of the arrows. The way it
+works is that \verb.\node id(x,y)[N]. assigns the node \verb.N. at
+position \verb.(x,y). to the identifier \verb.id. which is then used
+to refer to that node. Then \verb.\arrow[id`id;L]. is used to place
+arrows at the nodes identified by the identifiers and with label
+\verb.L.. There are also optional arguments for label position and
+arrowhead shape, so the full macro looks like \verb.|p|/sh/[id`id;L]..
+Here is an example. The code
+\begin{verbatim}
+$$\bfig
+\node a(0,0)[A\otimes B]
+\node 3b(700,300)[A'\otimes B']
+\node @(0,-500)[A''\otimes B'']
+\node xyzzy(500,0)[C\otimes D]
+\arrow/->>/ [a`3b;f]
+\arrow|l|[a`@;g]
+\arrow|b|/<-/[xyzzy`@;i\otimes j]
+\efig$$
+\end{verbatim}
+produces the diagram
+$$\bfig
+\node a(0,0)[A\otimes B]
+\node 3b(700,300)[A'\otimes B']
+\node @(0,-500)[A''\otimes B'']
+\node xyzzy(500,0)[C\otimes D]
+\arrow/->>/[a`3b;f]
+\arrow|l|[a`@;g]
+\arrow|b|/<-/[xyzzy`@;i\otimes j]
+\efig$$
+
+Notice, incidentally, that the nodes can be defined either inside or
+outside math mode. If it is done outside, the definitions will persist
+(unless redefined) and may be reused. This is useful when there are two
+very similar diagrams. Also note that the identifiers can be any
+string.
+
+An example of a large diagram done this way appears in~
+
\subsection{Complex diagrams}\label{complex}
In homological algebra one often has a $3\times3$ diagram, with or
without 0's on the margins. There is a macro to do that:
@@ -1156,7 +1183,31 @@ similar string, with similar effect, in the following line. The last
line uses simply \index{|\hole}\verb.|\hole. which positions the gap in
the middle of the arrow.
-\subsection{Diagram from TTT}
+
+\subsection{loops}
+ Two new procedures \verb.\Loop. and \verb.\iloop. have been added, the
+latter for inline loops. (Note: \verb.\loop. was changed to
+\verb.\Loop. as the former conflicted with amstex.) Here are
+examples:
+\begin{verbatim}
+ $$\bfig
+ \morphism[A`B;f]
+ \Loop(0,0)A(ur,ul)_g
+ \Loop(500,0)B(dl,dr)_h
+ \efig$$
+\end{verbatim}
+ $$\bfig
+ \morphism[A`B;f]
+ \Loop(0,0)A(ur,ul)_g
+ \Loop(500,0)B(dl,dr)_h
+ \efig$$
+
+Inline: Either \verb.$A\iloop B(ur,ul)C$.
+or \verb.$\xy\Loop(0,0)A(ur,ul)\endxy$. gives the output $\xy
+ \Loop(0,0)A(ur,ul)\endxy$. The direction indicators show what
+direction the loops start and end in.
+
+\subsection{Diagram from TTT}\label{tttdiag}
The last example is a complicated diagram from TTT. If you have the
documentation from the old diagram macros (or the errata from TTT), you
can see how much easier it is to describe this diagram with these
@@ -1198,141 +1249,268 @@ specify the scales on the squares and triangles.
\place(1250,250)[7]%
\efig$$
+Here is code that produces the same diagram using the new \verb.\arrow.
+feature:
+\begin{verbatim}
+\node a(0,1500)[TT]%
+\node b(500,1500)[T]%
+\node c(500,1000)[TTT']%
+\node d(1000,1000)[TT']%
+\node e(0,500)[TT'T]%
+\node f(500,500)[TT'TT']%
+\node g(1000,500)[TT'T']%
+\node h(1500,500)[TT']%
+\node i(0,0)[T'T]%
+\node j(500,0)[T'TT']%
+\node k(1000,0)[T'T']%
+\node l(1500,0)[T']%
+ $$\bfig
+\scalefactor{1.4}%
+\arrow[a`b;\mu]%
+\arrow|l|[a`e;T\eta'T]%
+\arrow|l|[a`c;TT\eta]%
+\arrow[b`d;T\eta]%
+\arrow/@<14\ul>/[c`d;\mu T']%
+\arrow|b|/@<-14\ul>/[c`d;T\sigma]%
+\arrow[d`h;\mbox{id}]%
+\arrow|m|[c`f;T\eta'TT']%
+\arrow|m|[d`g;T\eta'T']%
+\arrow[e`f;TT'T\eta']%
+\arrow[f`g;TT'\sigma]%
+\arrow[g`h;T\mu']%
+\arrow|l|[e`i;\sigma T]%
+\arrow|m|[f`j;\sigma TT']%
+\arrow|m|[g`k;\sigma T']%
+\arrow[h`l;\sigma]%
+\arrow|b|[i`j;T'T\eta']%
+\arrow|b|[j`k;T'\sigma T']%
+\arrow[k`l;\mu']%
+\place(500,1250)[1]\place(215,1000)[2]\place(750,750)[3]%%
+\place(215,250)[4]\place(750,250)[5]\place(1140,750)[6]%%
+\place(1250,250)[7]%
+ \efig$$
+\end{verbatim}
+ It is in some ways easier than the other, but more verbose. In the end
+it comes down to a matter of preference.
+
+
+
+\clearpage
+\def\lab(#1,#2)[#3]{\place(#1,#2)[\backslash\hbox{\texttt#3}]}
+\def\Lab[#1]{{\backslash\hbox{\texttt#1}}}
+
+
+\section{A few comparisons with {\tt xymatrix}}
+
+We give here a few diagrams to contrast the predefined shapes of
+\verb.diagxy. with those produced by \verb.xymatrix.. These are not
+intended to be invidious, but they are chosen to show \verb.xymatrix. in
+the worst light. The diagrams can be improved by using special options
+of \verb.xymatrix. but the second diagrams are the default in
+\verb.diagxy.. Of course, \verb.diagxy. uses \verb.xypic. but not the
+\verb.xymatrix. option., so this is not meant as a putdown of
+\verb.xypic., only as a comparison if you are trying to decide which to
+use. In the end, though you will probably decide on the basis of which
+you feel most comfortable with. Users of \verb.diagxy. like the
+predefined shapes and others find the native syntax of \verb.xypic. more
+comfortable.
+
+\xyoption{matrix}
+The first one illustrates what happens when the nodes are vertically
+unbalanced. Changing \verb.\xymatrix. to \verb.\xymatrix1@. improves
+the appearance, but it is still not perfect.
+
+\begin{verbatim}
+$$\xymatrix {A^{X^Y}\ar[r]&B_{Z_W}\ar[r]&C}
+\qquad A^{X^Y}\to B_{Z_W}\to C$$
+\end{verbatim}
+ produces
+$$\xymatrix {A^{X^Y}\ar[r]&B_{Z_W}\ar[r]&C}
+\qquad A^{X^Y}\to B_{Z_W}\to C$$
+
+The next sample shows what happens to the label when the nodes are of
+quite different length. Putting a - after the \verb.^. fixes this.
+\begin{verbatim}
+$$\xymatrix{A\ar[r]^{(f,g,h)}&B\times C\times D}\qquad
+A\to^{(f,g,h)}B\times C\times D$$
+\end{verbatim}
+ produces
+$$\xymatrix{A\ar[r]^{(f,g,h)}&B\times C\times D}\qquad
+A\to^{(f,g,h)}B\times C\times D$$
+
+
+However, it doesn't fix the problem of too short an arrow. Replacing
+\verb.[r]. by \verb.[rr]. and the \verb.&. by \verb.&&. fixes this.
+\begin{verbatim}
+$$\xymatrix{A\ar[r]^-{(f_1,g_2,h_3)}&B\times C\times D}\qquad
+A\to^{(f_1,g_2,h_3)}B\times C\times D$$
+\end{verbatim}
+ produces
+$$\xymatrix{A\ar[r]^-{(f_1,g_2,h_3)}&B\times C\times D}\qquad
+A\to^{(f_1,g_2,h_3)}B\times C\times D$$
+
+Unbalanced nodes in a triangle result in an unbalanced triangle. I do
+not know how to fix this one up, although \verb.xypic. has so many
+options that there is probably some way.
+\begin{verbatim}
+$$\xymatrix{A\ar[rr]\ar[dr]&&B\times C\times D\ar[dl]\\&E}$$
+$$\xy\Vtriangle[A`B\times C\times D`E;``]\endxy$$
+\end{verbatim}
+ produces
+$$\xymatrix{A\ar[rr]\ar[dr]&&B\times C\times D\ar[dl]\\&E}$$
+$$\xy\Vtriangle[A`B\times C\times D`E;``]\endxy$$
+
+\clearpage
+\section{Thumbnails}
+
+This page shows all the shapes that have been defined so far. In all
+cases, consult the documentation for the syntax and a discussion of the
+optional parameters. Note that \verb.\Square., along with
+\verb.\hSquares. and \verb.\vSquares. grow in width to accomodate the
+nodes and labels.
+
+\scalefactor{.4}
+ % \fontscale{}
+\let\.\cdot
+$\.\to_{\Lab[to]}\.\toleft_{\Lab[toleft]}\.
+\mon_{\Lab[mon]}\.\monleft_{\Lab[monleft]}\.\epi_{\Lab[epi]}\.\epileft_{\Lab[epileft]}\.
+\two_{\Lab[two]}\.\three_{\Lab[three]}\.$
+
+ $$\bfig
+ \square[\.`\.`\.`\.;```]
+ \lab(200,-250)[square]
+ \Atriangle(1000,0)[\.`\.`\.;``]
+ \lab(1400,-250)[Atriangle]
+ \Vtriangle(2500,0)[\.`\.`\.;``]
+ \lab(2900,-250)[Vtriangle]
+ \Ctriangle(4000,0)[\.`\.`\.;``]
+ \lab(4400,-250)[Ctriangle]
+ \Dtriangle(5000,0)[\.`\.`\.;``]
+ \lab(5400,-250)[Dtriangle]
+\def\ru{\.\.\.\.\.}
+ \square(0,-1500)<1000,500>[\ru`\ru`\ru`\ru;```]
+ \lab(400,-1750)[Square]
+ \ptriangle(1800,-1500)[\.`\.`\.;``]
+ \lab(2000,-1750)[ptriangle]
+ \qtriangle(2900,-1500)[\.`\.`\.;``]
+ \lab(3100,-1750)[qtriangle]
+ \dtriangle(4000,-1500)[\.`\.`\.;``]
+ \lab(4200,-1750)[dtriangle]
+ \btriangle(5100,-1500)[\.`\.`\.;``]
+ \lab(5400,-1750)[btriangle]
+ \Atrianglepair(0,-3000)[\.`\.`\.`\.;````]
+ \lab(400,-3250)[Atrianglepair]
+ \Vtrianglepair(1500,-3000)[\.`\.`\.`\.;````]
+ \lab(1900,-3250)[Vtrianglepair]
+ \Ctrianglepair(3500,-3000)[\.`\.`\.`\.;````]
+ \lab(3400,-3250)[Ctrianglepair]
+ \Dtrianglepair(4500,-3000)[\.`\.`\.`\.;````]
+ \lab(4900,-3250)[Dtrianglepair]
+ \hSquares(0,-4500)[\ru`\ru`\ru`\ru`\ru`\ru;``````]
+ \lab(600,-4750)[hSquares]
+ \pullback(2700,-4500)[\.`\.`\.`\.;```][\.;``]
+ \lab(3000,-4750)[pullback]
+ \iiixii(4000,-4500){15}<400>[\.`\.`\.`\.`\.`\.;``````]
+ \lab(4800,-4750)[iiixii]
+ \cube(0,-7000)[\.`\.`\.`\.;```](500,-6500)[\.`\.`\.`\.;```][```]
+ \lab(700,-7250)[cube]
+ \iiixiii(2500,-7000)[\.`\.`\.`\.`\.`\.`\.`\.`\.;```````````]
+ \lab(3000,-7250)[iiixiii]
+ \vSquares(4500,-7000)[\ru`\ru`\ru`\ru`\ru`\ru;``````]
+ \lab(4800,-7250)[vSquares]
+ \efig$$
+
+ \clearpage
+\section{Command summary}
+
+\def\v#1.{{\texttt{#1}}}
+ Below is a summary of the syntax of the supplied shapes. In this
+summary, optional parameters are enclosed in braces (\verb/{}/) because
+the more usual brackets are too much used. In only two cases below are
+braces to be used and they will be made clear. In all cases it is the
+set of parameters that is optional; you must accept the default for all,
+or set them all. But the different sets of parameters are independent.
+Note that continuation lines are marked with a \verb.%. sign. If you
+break one of these macros be sure to end the line with \verb.%., unless
+you are inside the \verb/[...]/, where everything is done in math mode
+and space characters are ignored.
+\begin{trivlist}
+ \item[\v(x,y).:] The coordinates of the lower left corner of the
+smallest rectangle that encloses the figure, whether or not that corner
+is actually in the shape.
+
+\item[\v p.:]
+One of the letters \v a., \v b., \v l.,
+\v m., or \v x. and describe the placement of an arrow label as above,
+below, right, left,in the middle of an arrow, or no label, resp.
+
+\item[\v a.:] The shape of the arrow.
+
+\item[\v <dx,dy>.:] The horizontal and vertical extent of the diagram.
+In a couple cases only one is specified.
+
+\item[\v O.:] An object or node.
+
+\item[\v L.:] An arrow label.
+
+\item[\v N.:] A number in the range 0..15. If it has more than one
+digit, must be placed inbraces.
+
+\item[\v M.:] A number in the range 0.."7777. Also in braces.
+
+\end{trivlist}
+
+
+\begin{verbatim}
+\to{/a/}{^A}{|A}{_A}
+\xar{^A}{|A}{_A}(xar = mon, epi, toleft, monleft, epileft)
+\square{(x,y)}{|pppp|}{/a`a`a`a/}{<dx,dy>}[O`O`O`O;L`L`L`L]
+\Ltriangle{(x,y)}{|ppp|}{/a`a`a/}{<dx,dy>}[O`O`O;L`L`L]
+\Vtriangle{(x,y)}{|ppp|}{/a`a`a/}{<dx,dy>}[O`O`O;L`L`L]
+\Ctriangle{(x,y)}{|ppp|}{/a`a`a/}{<dx,dy>}[O`O`O;L`L`L]
+\Dtriangle{(x,y)}{|ppp|}{/a`a`a/}{<dx,dy>}[O`O`O;L`L`L]
+\Square{(x,y)}{|pppp|}{/a`a`a`a/}{<dy>}[O`O`O`O;L`L`L`L]
+\ptriangle{(x,y)}{|ppp|}{/a`a`a/}{<dx,dy>}[O`O`O;L`L`L]
+\qtriangle{(x,y)}{|ppp|}{/a`a`a/}{<dx,dy>}[O`O`O;L`L`L]
+\dtriangle{(x,y)}{|ppp|}{/a`a`a/}{<dx,dy>}[O`O`O;L`L`L]
+\btriangle{(x,y)}{|ppp|}{/a`a`a/}{<dx,dy>}[O`O`O;L`L`L]
+\Ltrianglepair{(x,y)}{|ppppp|}{/a`a`a`a`a/}{<dx,dy>}%
+ [O`O`O`O;L`L`L`L`L]
+\Vtrianglepair{(x,y)}{|ppppp|}{/a`a`a`a`a/}{<dx,dy>}%
+ [O`O`O`O;L`L`L`L`L]
+\Ctrianglepair{(x,y)}{|ppppp|}{/a`a`a`a`a/}{<dx,dy>}%
+ [O`O`O`O;L`L`L`L`L]
+\Dtrianglepair{(x,y)}{|ppppp|}{/a`a`a`a`a/}{<dx,dy>}%
+ [O`O`O`O;L`L`L`L`L]
+\hSquares{(x,y)}{|ppppppp|}{/a`a`a`a`a`a`a/}{<dx,dy>}%
+ [O`O`O`O`O`O;L`L`L`L`L`L`L]
+\pullback{(x,y)}{|pppp|}{/a`a`a`a/}{<dx,dy>}[O`O`O`O;L`L`L`L]
+ {|ppp|}{/a`a`a/}{<#7,#8>}[O;L`L`L]
+\iiixii{(x,y)}{|ppppppp|}{/a`a`a`a`a`a`a/}{<dx,dy>}%
+ {N{<dx,dy>}}[O`O`O`O`O`O;L`L`L`L`L`L`L]
+\cube{(x,y)}{|pppp|}{/a`a`a`a/}{<dx,dy>}[O`O`O`O;L`L`L`L]%
+ {(x,y)}{|pppp|}{/a`a`a`a/}{<dx,dy>}[O`O`O`O;L`L`L`L]%
+ {|pppp|}{/a`a`a`a/}[L`L`L`L]
+\iiixiii{(x,y)}{|pppppppppppp|}{/a`a`a`a`a`a`a`a`a`a`a`a/}%
+ {<dx,dy>}{M{<dx>}}%
+ [O`O`O`O`O`O`O`O`O;L`L`L`L`L`L`L`L`L`L`L`L`L`L`L]
+\vSquares{(x,y)}{|ppppppp|}{/a`a`a`a`a`a`a/}{<dx,dy>}%
+ [O`O`O`O`O`O;L`L`L`L`L`L`L]
+\end{verbatim}
+
-\begin{theindex}
-
- \item \verb@%@, 3
- \item \verb@(@, 7
- \item \verb@(@,), 7
- \item \verb@(-dx@,-dy), 25
- \item \verb@(dx@,dy), 25
- \item \verb@)@, 7
- \item \verb@*@, 7
- \item \verb@-@, 6, 23
- \item \verb@--@, 6
- \item \verb@-->>@, 7
- \item \verb@->@, 7
- \item \verb@->>@, 7
- \item \verb@/@, 7, 9
- \item \verb@/{sh}/<dx>@, 25
- \item \verb@/{sh}`{sh}/<dx>@, 25
- \item \verb@;@, 7
- \item \verb@<@, 6, 7, 22
- \item \verb@<-@, 7
- \item \verb@<-< @, 7
- \item \verb@<<-@, 7
- \item \verb@<<--@, 7
- \item \verb@<>(@, 23
- \item \verb@=@, 6, 13
- \item \verb@>@, 6, 7, 22
- \item \verb@>>@, 6
- \item \verb@[@, 7
- \item \verb@\startsection@, 5
- \item \verb@\Atriangle@, 9
- \item \verb@\Atrianglepair@, 9, 12
- \item \verb@\Ctriangle@, 8, 9
- \item \verb@\Ctrianglepair@, 9, 12
- \item \verb@\Dtriangle@, 9
- \item \verb@\Dtrianglepair@, 9, 12
- \item \verb@\POS@, 27
- \item \verb@\Square@, 15, 16
- \item \verb@\Vtriangle@, 8, 9
- \item \verb@\Vtrianglepair@, 9, 12
- \item \verb@{-}@, 14
- \item \verb@\bfig@, 9
- \item \verb@\btriangle@, 9
- \item \verb@\cube@, 16, 23
- \item \verb@\dtriangle@, 9, 11
- \item \verb@\efig@, 9
- \item \verb@\endxy@, 9
- \item \verb@\epi@, 24, 25
- \item \verb@\epileft@, 24, 25
- \item \verb@\fontscale{x}@, 4
- \item \verb@\hSquares@, 16
- \item \verb@\halign@, 2
- \item \verb@\hole@, 23
- \item \verb@\ignorespaces@, 3
- \item \verb@\iiixii@, 21
- \item \verb@\iiixiii@, 18
- \item \verb@\let\labelstyle=\textstyle@, 6
- \item \verb@\mon@, 24, 25
- \item \verb@\monleft@, 24, 25
- \item \verb@\morphism@, 2, 5, 8, 10
- \item \verb@\phantom@, 3
- \item \verb@\place@, 8, 14
- \item \verb@\ptriangle@, 8, 9, 11
- \item \verb@\pullback@, 15
- \item \verb@\put@, 14
- \item \verb@\qtriangle@, 8, 9
- \item \verb@\scalefactor@, 24, 28
- \item \verb@\scriptstyle@, 6
- \item \verb@\square@, 8, 9, 11, 15
- \item \verb@\three@, 1
- \item \verb@\to@, 1, 25
- \item \verb@\toleft@, 24, 25
- \item \verb@\two@, 1, 24, 25
- \item \verb@\twoleft@, 24, 25
- \item \verb@\ul@, 6
- \item \verb@\vSquares@, 16
- \item \verb@\xy@, 9
- \item \verb@\xy ... \endxy@, 9
- \item \verb@\xyoption{curve}@, 13
- \item \verb@]@, 7
- \item \verb@^@, 6
- \item \verb@^{ (}->@, 16
- \item \verb@_@, 6
- \item \verb@`@, 7, 9
- \item \verb@{*}@, 7
- \item \verb@3 by 2@, 21
- \item \verb@3 by 3@, 18
-
- \indexspace
-
- \item \verb@ >->@, 7
-
- \indexspace
-
- \item \verb@a@, 6
-
- \indexspace
-
- \item \verb@b@, 6
-
- \indexspace
-
- \item \verb@dx@, 8, 15, 25
- \item \verb@dy@, 8, 16, 25
-
- \indexspace
-
- \item \verb@l@, 6
- \item \verb@label@, 6
-
- \indexspace
-
- \item \verb@m@, 6, 23
-
- \indexspace
-
- \item \verb@r@, 6
-
- \indexspace
-
- \item \verb@sliding arrows@, 13
-
- \indexspace
-
- \item \verb@tips@, 4
-
- \indexspace
-
- \item \verb@x@, 4, 8
-
- \indexspace
-
- \item \verb@y@, 8
-
-\end{theindex}
+\edef\backslash{\ensuremath{\backslash}}
+\catcode`\<=\active
+\catcode`\>=\active
+\catcode`\^=\active
+\catcode`\_=\active
+\def<{\mathhexbox13C}
+\def>{\mathhexbox13E}
+\def^{\mathhexbox362}
+\def_{\vrule width 10pt height .4pt depth 0pt}
+\addcontentsline{toc}{section}{Index}
+\newpage
+\input diaxydoc.ind
\end{document}
diff --git a/Master/texmf-dist/doc/latex/barr/diagdoc.tex b/Master/texmf-dist/doc/latex/barr/diagdoc.tex
deleted file mode 100644
index 5dd69eb2c58..00000000000
--- a/Master/texmf-dist/doc/latex/barr/diagdoc.tex
+++ /dev/null
@@ -1,422 +0,0 @@
-\documentstyle[12pt]{article}
-\input diagram
-\textheight=9in \topmargin=0pt\headheight=0pt\headsep=0pt
-\textwidth=6.5in \oddsidemargin=0pt
-\begin{document}
-{\catcode`\ =13\global\let =\ \catcode`\^^M=13
-\gdef^^M{\par\noindent}}
-\def\verbatim{\tt
-\catcode`\^^M=13
-\catcode`\ =13
-\catcode`\\=12
-\catcode`\{=12
-\catcode`\}=12
-\catcode`\_=12
-\catcode`\^=12
-\catcode`\&=12
-\catcode`\~=12
-\catcode`\#=12
-\catcode`\%=12
-\catcode`\$=12
-\catcode`|=0
-}
-
-All commercial rights reserved. May be freely distributed
-and used with the following exceptions:\\
-1. No commercial use without explicit permission.\\
-2. It may not be distributed without this notice.
-
-\def\\{{\tt \char 92}}
-
-\section*{The diagram macros}
-The file diagram includes a number of macros for drawing commutative
-diagrams in special shapes as well as more flexible macros to paste
-together more complicated diagrams.
-
-In general, there are two kinds of macros. The first kind has the
-following form
-{\tt \\shape\-name[shape\_\-parameters]} and is intended to be used in
-the following way:
-{\verbatim
-$$
-\shapename[shape_parameters]
-$$
-|egroup
-
-This will create a shape with the given parameters. It operates by
-building its own picture environment.
-
-The second kind of procedure must be used inside a picture environment
-and allows the user to put a diagram of a given size and shape at a
-given place. The usual way in which this is used is:
-
-{\verbatim
-$$
-\bfig
-\putshape1<optional parameters>(x1,y1)[shape_parameters1]
-|dots
-\putshape(xn,yn)<optional parameters>[shape_parametersn]
-\efig
-$$
-|egroup
-
-Here is an example of the first kind of macro. I will have to explain a
-few details before giving examples of the second. The code
-{\verbatim
-$$
-\square[A`B`C`D;f`g`h`k]
-$$
-|egroup
-produces the diagram
-$$
-\square[A`B`C`D;f`g`h`k]
-$$
-and the code
-{\verbatim
-$$
-\Atriangle[A`B`C;f`g`h]
-$$
-|egroup
-produces the diagram
-$$
-\Atriangle[A`B`C;f`g`h]
-$$
-The reason for the shape name will be explained later.
-
-If an arrow label extends especially high or low, the space
-automatically expands to match. For example,
-{\verbatim
-$$
-\square[A`B`C`D;\sum_{i=1}^{\infty}`g`h`\Psi^A_k]
-$$
-|egroup
-will get the diagram
-$$
-\square[A`B`C`D;\sum_{i=1}^{\infty}`g`h`\Psi^A_k]
-$$
-and so on.
-
-Before going on, I will explain about the parameters. Any shape will
-have one or two parameters for height and/or length as well as one
-parameter for each arrow in the diagram. These are in addition to the
-parameters used in the actual procedures. For example, the procedure
-{\verbatim
-$$
-\square<-1`0`2`-3;1000`700>[A`B`C`D;f`g`h`k]
-$$
-|egroup
-gives the square:
-$$
-\square<-1`0`2`-3;1000`700>[A`B`C`D;f`g`h`k]
-$$
-The meaning is as follows. The first four parameters refer to four
-arrows in linguistic order (top, left, right, bottom). A negative
-number gives a backward arrow, while a zero causes it to be omitted. A
-parameter with an absolute value of 1 is ordinary, while 2 gives an
-arrow with a tail (monomorphism) and 3 a double headed arrow
-(epimorphism). The last two parameters determine the width and height,
-respectively, in units of 0.01 em (an em is the width of an M, the
-widest letter in a font). It should be noted that it is not
-possible to give only some of the optional parameters; either all
-must be given or none is.
-
-Here are the shapes. We have already seen the shape {\tt \\square}.
-There are eight different triangles, all isoceles right triangles in
-different orientations. The names all have the form {\tt
-\\xtriangle}, where x is the letter that most closely resembles the
-actual shape of the triangle.
-
-Here are the names, followed by a sample of each one:
-\begin{list}{}{}
-\item{\tt \\btriangle}\samepage
-$$
-\btriangle[A`B`C;f`g`h]
-$$
-\pagebreak[0]
-\item{\tt \\dtriangle}\samepage
-$$
-\dtriangle[A`B`C;f`g`h]
-$$
-\pagebreak[0]
-\item{\tt \\ptriangle}\samepage
-$$
-\ptriangle[A`B`C;f`g`h]
-$$
-\pagebreak[0]
-\item{\tt \\qtriangle}\samepage
-$$
-\qtriangle[A`B`C;f`g`h]
-$$
-\pagebreak[0]
-\item{\tt \\Atriangle}\samepage
-$$
-\Atriangle[A`B`C;f`g`h]
-$$
-\pagebreak[0]
-\item{\tt \\Vtriangle}\samepage
-$$
-\Vtriangle[A`B`C;f`g`h]
-$$
-\pagebreak[0]
-\item{\tt \\Ctriangle}\samepage
-$$
-\Ctriangle[A`B`C;f`g`h]
-$$
-\pagebreak[0]
-\item{\tt \\Dtriangle}\samepage
-$$
-\Dtriangle[A`B`C;f`g`h]
-$$
-\end{list}
-
-In addition, there are two special diagrams that come up often enough to
-be worth having a special macros for.
-\begin{list}{}{}
-\item{\tt \\Atrianglepair}\samepage
-$$
-\Atrianglepair[A`B`C`D;f`g`h`k`l]
-$$
-\item{\tt \\Vtrianglepair}\samepage
-$$
-\Vtrianglepair[A`B`C`D;f`g`h`k`l]
-$$
-\end{list}
-Finally, there is one special shape that is probably not used by very
-many mathematicians. Still I have it and the user might as well share
-it.
-
-{\verbatim
-\recurse[A`B`R`C;s`f_0`f`t_0`t]
-|egroup
-$$
-\recurse[A`B`R`C;s`f_0`f`t_0`t]
-$$
-
-Notice what happens if the first parameter is empty:
-{\verbatim
-\recurse[`B`R`C;s`f_0`f`t_0`t]
-|egroup
-$$
-\recurse[`B`R`C;s`f_0`f`t_0`t]
-$$
-
-This takes care of the simple procedures. The remaining procedures are
-there as building blocks for more complicated diagrams.
-
-These take the form
-\vskip0pt\noindent
-{\tt \\putshape(xpos,ypos)[shape\_parameters]}
-\vskip0pt\noindent
-where
-shape is one of the 11 shapes (excluding {\tt \\recurse}) described
-above
-and the parms are as described there. The parameters {\tt xpos} and
-{\tt ypos} are the offsets from the lower left corner of the picture
-measured in umits of .01 em in the usual \LaTeX\ fashion.
-
-There is one
-more shape which is simply an arrow with an attached label. This is
-called {\tt \\putmorphism} and it is used with the syntax
-\vskip0pt\noindent
-{\tt
-\\putmorphism(xpos,ypos)(run,rise)[node1`node2`label]\{dist\}\{type\}\{loc\}}
-\vskip0pt\noindent
-Here the parameters {\tt xpos} and
-{\tt ypos} are as above. The slope is {\tt rise/run} where {\tt rise}
-and {\tt run} are two numbers that give the slope in accordance with the
-\LaTeX\ rules. That is rise and run must have no common divisor and
-must not exceed 4 in absolute value. In addition, these procedures are
-defined so that rise must not be positive and if it is zero, then run
-must be positive. In other words, all arrows must go in the linguistic
-direction, downwards or to the right. Arrows can be made to go in the
-reverse direction as explained below.
-
-The next three parameters are the node that appears first (in linguistic
-order), the one that appears second and the arrow label. The next
-paramater is the distance in the sense of \LaTeX\ between the centers of
-the nodes. This means it is the horizontal component of the distance,
-unless that is negative, in which case it is the vertical distance. The
-second parameter is the code for the arrowtype, an integer between -3
-and 3 with the same meaning as explained above. Using negative values
-of this parameter allows one to draw an arrow that goes upwards or left.
-Note, however, that node1 is always the node that is above or to the
-left of node2. The last parameter should have the value a,b,l,r or m.
-The values a and b are used only for horizontal arrows and direct the
-arrow label to be placed above or below the arrow. The values l and r
-are used for all other arrows and direct the label to be left or right
-of the arrow. Finally, a vertical arrow only can be given the parameter
-m, in which case the arrow will be gapped and the label placed in the
-middle of the gap.
-
-In general, the simple macros are designed to be used as indicated
-either in the display
-environment or in one of the others, usually
-{\verbatim
-\begin{equation}\begin{array}{c}
-|dots
-\end{array}\end{equation}|egroup
-
-The \\putshape macros must be used inside a picture environment that is
-normally placed inside a display or similar environment. The
-reference point for the positioning parameters is determined as the
-lower left corner of the smallest rectangle with sides parallel to the
-coordinate axes that includes the center points of all nodes on its
-border. This rectangle will be degenerate in the case of a horizontal
-or vertical morphism. The reference point may either be on or outside
-the actual figure. For example, in the case of the btriangle, it is the
-center of the lower left node, while for a qtriangle it is outside the
-triangle itself being the fourth corner of the enclosing square.
-
-The macros are made so that they fit together well. That is why all
-distances are from node centers to node centers. If a vertex is part of
-two shapes, it is probably best not to repeat it, since it is
-conceivable that round-off errors will cause its two appearances to be
-slightly offset. It can either be omitted or, since the width is used
-to determine the amount to shorten horizontal arrows, replaced by {\tt
-\\phantom} versions. Both methods are illustrated in the example given
-at the end.
-
-A somewhat baroque (but taken from an actual text) example illustrates
-most of these points.
-{\verbatim
-$$
-\bfig
-\putmorphism(0,2100)(0,-1)[``T\eta'T]{1400}1l
-\putmorphism(0,2100)(1,0)[TT`T`\mu]{700}1a
-\putmorphism(0,2100)(1,-1)[`TTT'`TT\eta']{700}1l
-\putmorphism(700,2100)(1,-1)[`TT'`T\eta]{700}1r
-\put(700,1750){\makebox(0,0){1}}
-\putmorphism(700,1420)(1,0)[\phantom{TTT'}`\phantom{TT'}`\mu
- T']{700}1a
-\putmorphism(700,1380)(1,0)[\phantom{TTT'}`%
- \phantom{TT'}`T\sigma]{700}1b
-\putsquare<0`1`1`1;700`700>(700,700)[TTT'`TT'`TT'TT'`TT'T';`T\eta'TT'``]
-\putmorphism(700,700)(1,0)[\phantom{TT'TT'}`%
- \phantom{TT'T'}`TT'\sigma]{700}1a
-\put(300,1400){\makebox(0,0){2}}
-\put(950,1050){\makebox(0,0){3}}
-\putbtriangle<0`1`0;700>(1400,700)[``TT';T\eta'T'`id`]
-\putmorphism(1400,700)(1,0)[\phantom{TT'T'}`%
- \phantom{TT'}`T\mu']{700}1a
-\put(1600,1050){\makebox(0,0){6}}
-\putsquare<1`1`0`1;700`700>(0,0)[TT'T`\phantom{TT'TT'}`T'T`T'TT';%
- TT'T\eta'`\sigma T``T'T\eta']
-\putmorphism(700,0)(1,0)[\phantom{T'TT'}`%
- \phantom{T'T'}`T'\sigma]{700}1b
-\putsquare<0`0`1`1;700`700>(1400,0)[``T'T'`T';``\sigma`\mu']
-\putmorphism(700,700)(0,-1)[``\sigma TT']{700}1m
-\putmorphism(1400,700)(0,-1)[``\sigma T']{700}1m
-\put(300,350){\makebox(0,0){4}}
-\put(1050,350){\makebox(0,0){5}}
-\put(1750,350){\makebox(0,0){7}}
-\efig
-$$
-|egroup
-which produces
-$$
-\bfig
-\putmorphism(0,2100)(0,-1)[``T\eta'T]{1400}1l
-\putmorphism(0,2100)(1,0)[TT`T`\mu]{700}1a
-\putmorphism(0,2100)(1,-1)[`TTT'`TT\eta']{700}1l
-\putmorphism(700,2100)(1,-1)[`TT'`T\eta]{700}1r
-\put(700,1750){\makebox(0,0){1}}
-\putmorphism(700,1420)(1,0)[\phantom{TTT'}`\phantom{TT'}`\mu
- T']{700}1a
-\putmorphism(700,1380)(1,0)[\phantom{TTT'}`%
- \phantom{TT'}`T\sigma]{700}1b
-\putsquare<0`1`1`1;700`700>(700,700)[TTT'`TT'`TT'TT'`TT'T';`T\eta'TT'``]
-\putmorphism(700,700)(1,0)[\phantom{TT'TT'}`%
- \phantom{TT'T'}`TT'\sigma]{700}1a
-\put(300,1400){\makebox(0,0){2}}
-\put(950,1050){\makebox(0,0){3}}
-\putbtriangle<0`1`0;700>(1400,700)[``TT';T\eta'T'`id`]
-\putmorphism(1400,700)(1,0)[\phantom{TT'T'}`%
- \phantom{TT'}`T\mu']{700}1a
-\put(1600,1050){\makebox(0,0){6}}
-\putsquare<1`1`0`1;700`700>(0,0)[TT'T`\phantom{TT'TT'}`T'T`T'TT';%
- TT'T\eta'`\sigma T``T'T\eta']
-\putmorphism(700,0)(1,0)[\phantom{T'TT'}`%
- \phantom{T'T'}`T'\sigma]{700}1b
-\putsquare<0`0`1`1;700`700>(1400,0)[``T'T'`T';``\sigma`\mu']
-\putmorphism(700,700)(0,-1)[``\sigma TT']{700}1m
-\putmorphism(1400,700)(0,-1)[``\sigma T']{700}1m
-\put(300,350){\makebox(0,0){4}}
-\put(1050,350){\makebox(0,0){5}}
-\put(1750,350){\makebox(0,0){7}}
-\efig
-$$
-
-Here is a page of samples of the results from the various
-{\tt\\putshapes}. The code
-{\verbatim
-$$
-\bfig
-\putsquare(0,0)[A`B`C`D;f`g`h`k]
-\putbtriangle(0,1500)[A`B`C;f`g`h]
-\putdtriangle(2200,1500)[A`B`C;f`g`h]
-\putptriangle(0,3000)[A`B`C;f`g`h]
-\putqtriangle(1000,500)[A`B`C;f`g`h]
-\putCtriangle(1500,750)[A`B`C;f`g`h]
-\putDtriangle(700,1000)[A`B`C;f`g`h]
-\putAtriangle(2000,2200)[A`B`C;f`g`h]
-\putAtrianglepair(0,2500)[A`B`C`D;f`g`h`k`l]
-\putVtriangle(2000,3000)[A`B`C;f`g`h]
-\putVtrianglepair(1000,2500)[A`B`C`D;f`g`h`k`l]
-\efig
-$$
-|egroup
-produces the diagram:
-$$
-\bfig
-\putsquare(0,0)[A`B`C`D;f`g`h`k]
-\putbtriangle(0,1500)[A`B`C;f`g`h]
-\putdtriangle(2200,1500)[A`B`C;f`g`h]
-\putptriangle(0,3000)[A`B`C;f`g`h]
-\putqtriangle(1000,500)[A`B`C;f`g`h]
-\putCtriangle(1500,750)[A`B`C;f`g`h]
-\putDtriangle(700,1000)[A`B`C;f`g`h]
-\putAtriangle(2000,2200)[A`B`C;f`g`h]
-\putAtrianglepair(0,2500)[A`B`C`D;f`g`h`k`l]
-\putVtriangle(2000,3000)[A`B`C;f`g`h]
-\putVtrianglepair(1000,2500)[A`B`C`D;f`g`h`k`l]
-\efig
-$$
-
-Added: For horizontal and vertical lines only, arrow parameters of
-$\pm4$, $\pm5$ and $\pm6$ will give dashed lines.
-
-Here is a double cube:
-{\verbatim
-$$
-\bfig
-\putsquare(0,750)[A`B`C`D;```]
-\putsquare(0,250)[\phantom{C}`\phantom{D}`E`F;```]
-\putsquare(250,500)[A'`B'`C'`D';```]
-\putsquare(250,0)[\phantom{C'}`\phantom{D'}`E'`F';```]
-\putmorphism(0,1250)(1,-1)[```]{250}1a
-\putmorphism(500,1250)(1,-1)[```]{250}1a
-\putmorphism(0,750)(1,-1)[```]{250}1a
-\putmorphism(500,750)(1,-1)[```]{250}1a
-\putmorphism(0,250)(1,-1)[```]{250}1a
-\putmorphism(500,250)(1,-1)[```]{250}1a
-\efig
-$$
-|egroup
-$$
-\bfig
-\putsquare(0,750)[A`B`C`D;```]
-\putsquare(0,250)[\phantom{C}`\phantom{D}`E`F;```]
-\putsquare(250,500)[A'`B'`C'`D';```]
-\putsquare(250,0)[\phantom{C'}`\phantom{D'}`E'`F';```]
-\putmorphism(0,1250)(1,-1)[```]{250}1a
-\putmorphism(500,1250)(1,-1)[```]{250}1a
-\putmorphism(0,750)(1,-1)[```]{250}1a
-\putmorphism(500,750)(1,-1)[```]{250}1a
-\putmorphism(0,250)(1,-1)[```]{250}1a
-\putmorphism(500,250)(1,-1)[```]{250}1a
-\efig
-$$
-
-
-
-\end{document}