%  Appendix B of FEYNMANDOC
\appendix
\addtocounter{chapter}{1}
\chapter{Syntax and Features}

This appendix summarizes the features available in \FEYNMAN\ and their usage.

\section{Lines}

\subsection{Arguments and Syntax of the \ddrawline\ command}

The \ddrawline\ command:
\begin{verbatim}

\drawline |type| [|direction| |style|] (|starting x-co-ord|,|y-co-ord|)[|length|]

         \fermion    \N     \REG              (integer,integer)       extent (cpt)
         \scalar     \NE    \FLIPPED          (variable,integer)      # segments
         \photon     \E     \CURLY            (integer,variable)      # half-wiggles
         \gluon      \SE    \FLIPPEDCURLY     (variable,variable)     # loops
         \especial   \S     \FLAT             ALL IN CENTIPOINTS      # units
                     \SW    \FLIPPEDFLAT      (1000 cpt = 1/3 cm)     (integer/
                     \W     \CENTRAL                                   variable)
                     \NW    \FLIPPEDCENTRAL                           
                            \LONGPHOTON
                            \FLIPPEDLONG
                            \SQUASHED

\end{verbatim}
Where the length corresponds to the particle {\em type} in the same column.
Not all combination of directions and styles are permitted.  Fermions, for 
instance, only appear in the \verb@\REG@ style.  Integer-valued positions and
lengths will be in {\em centipoints} (cpt) with approximate extent of 
$\frac{1}{3000}\ cm$ or $\frac{1}{7000}\ in$.  Variables may either be
user-defined (see next section) or \FEYNMAN-defined, such as
\verb@\pmidx@, \verb@\gluonlengthy@, \verb@\gaplength@, or
\verb@\fermioncount@.

Examples:
\begin{verbatim}

\drawline\photon[\E\FLIPPEDFLAT](\particlebackx,25000)[9]
\drawline\fermion[\SW\REG](\vertexfourx,\vertexfoury)[\fermionlengthy]

\end{verbatim}

\subsection{Line Modifiers}

The following is a list of modifiers which can be used to alter or embellish
particle lines.  The number in parentheses is the section in which the feature
is discussed.

\begin{verbatim}

  \bigphotons (2.9.2)
  \documentstyle (1.6)
  \gaplength (2.8.2)
  \gluoncap (4.3.3)
  \gluonlink (4.3.1)
  \linethickness (LaTeX manual section C.13.3)
  \THICKLINES; \THINLINES; \thicklines; \thinlines (2.4)
  \seglength (2.8.2)
  \stemmed,\frontstemmed,\backstemmed (4.3.2)
  \stemlength (4.3.2)

\end{verbatim}

\section{Vertices}

\subsection{Arguments and Syntax of the \ddrawvertex\ command}

The \ddrawvertex\ command:
\begin{verbatim}

\drawvertex |type| [|direction| |number|] (|starting x-co-ord|,|y-co-ord|)[|length|]

           \photon     \N           3         (integer,integer)       # half-wiggles
           \gluon      \NE          4         (variable,integer)      # loops
                       \E                     (integer,variable)      
                       \SE                    (variable,variable)     
                       \S                     ALL IN CENTIPOINTS      
                       \SW                    (1000 cpt = 1/3 cm)     (integer/
                       \W                                              variable)
                       \NW    
                            
\end{verbatim}
Where the length corresponds to the particle {\em type} in the same column.
The vertex is drawn starting from the specified (x,y) co-ordinate with either
three or four lines.  The first line is drawn in the indicated direction,
terminating at the hub (midpoint) of the vertex.  It is called {\em line one}.
The remaining lines are drawn radiating from the vertex and numbered
counterclockwise as line two, line three (and line four if `number'=4).
Every line will have the same number of gluon loops or photon wiggles.
Examples of other vertices, such as a fermion-fermion-photon vertex, are
discussed throughout the manual.

Examples:
\begin{verbatim}

\drawvertex\photon[\E 3](\vertexonex,-5000)[5]
\drawvertex\gluon[\SW 4](\vertexfourx,\vertexfoury)[4]

\end{verbatim}

\subsection{Vertex Modifiers}

The following is a list of modifiers which can be used to alter or embellish
vertices.  The number in parentheses is the section in which the feature
is discussed.

\begin{verbatim}

  \bigphotons (2.9.2)
  \documentstyle (1.6)
  \flipvertex (3.7)
  \THICKLINES; \THINLINES; \thicklines; \thinlines (2.4)
  \stemlength (4.3.2)
  \stemvertex, \stemvertices (4.3.2)
  \vertexcap, \vertexcaps (4.3.3)
  \vertexlink, \vertexlinks (4.3.1)

\end{verbatim}


\section{Returned Parameters}

The following is a list of all arguments returned by \ddrawline, \ddrawvertex\ 
and \bs drawloop.
Arguments such as \verb@\photonfronty@ will only be returned when
a photon is drawn.  All returned parameters are {\em globally} defined
and immediately supersede the previous value of the variable.
Thus if a gluon were drawn (or a gluon vertex) the values of
\verb@\pbackx@ and \verb@\gluonlengthx@ would be updated but 
\verb@\photonfrontx@ would retain its former value.  When a vertex or loop is
drawn line parameters, such as \bs pmidx, will refer to the {\em last} line
or line portion drawn.  
Parameters commencing with \bs{\bf vertex} 
are \underline{only} returned by \ddrawvertex.
Parameters commencing with \bs{\bf loop} 
are \underline{only} returned by \bs drawloop.
Note that some of these parameters may be altered by stems, caps, links and
arrows (see appropriate sections).

\begin{verbatim}

\boxlengthx,\boxlengthy:           The absolute valued (x,y) extent of the line.
\fermionbackx,\fermionbacky:       The (x,y) co-ordinates of the back of the line.
\fermioncount                      The number of fermions printed thus far.
\fermionfrontx,\fermionfronty:     The (x,y) co-ordinates of the front of the line.
\fermionlength                     The total length of the fermion line.
\fermionlengthx,\fermionlengthy:   The (x,y) extent of the line.
\gluonbackx,\gluonbacky:           The (x,y) co-ordinates of the back of the line.
\gluoncount                        The number of gluons printed thus far.
\gluonfrontx,\gluonfronty:         The (x,y) co-ordinates of the front of the line.
\gluonlengthx,\gluonlengthy:       The (x,y) extent of the line.
\lastline:                         The name of the last drawn particle line.
\loopbackx,\loopbacky:             The (x,y) co-ordinates of the back of the loop.
\loopfrontx,\loopfronty:           The (x,y) co-ordinates of the front of the loop.
\particlebackx,\particlebacky:     The (x,y) co-ordinates of the back of the line.
\particlefrontx,\particlefronty:   The (x,y) co-ords of the front of the line.
\particlelengthx,\particlelengthy: The (x,y) extent of the line.
\particlemidx,\particlemidy:       The (x,y) co-ordinates of the middle of the line.
\pbackx,\pbacky:                   = \particlebackx,\particlebacky    
\pfrontx,\pfronty:                 = \particlefrontx,\particlefronty  
\plengthx,\plengthy:               = \particlelengthx,\particlelengthy
\pmidx,\pmidy:                     = \particlemidx,\particlemidy
\photoncount                       The number of photons printed thus far.
\photonbackx,\photonbacky:         The (x,y) co-ordinates of the back of the line.
\photonfrontx,\photonfronty:       The (x,y) co-ordinates of the front of the line.
\photonlengthx,\photonlengthy:     The (x,y) extent of the line.
\scalarcount:                      The total number of scalars printed thus far.
\scalarbackx,\scalarbacky:         The (x,y) co-ordinates of the back of the scalar.
\scalarfrontx,\scalarfronty:       The (x,y) co-ordinates of the front of the scalar.
\scalarlengthx,\scalarlengthy:     The (x,y) extent of the scalar.
\unitboxlength,\unitboxheight:     The (x,y) extent of one unit of the last line.
\unitboxnumber:                    The `length' of the previous line in `units'.
\vertexcount:                      The number of vertices printed thus far.
\vertexonex,\vertexoney:           The (x,y) co-ordinates of the back of line one.
\vertextwox,\vertextwoy:           The (x,y) co-ordinates of the back of line two.
\vertexthreex,\vertexthreey:       The (x,y) co-ordinates of the back of line three.
\vertexfourx,\vertexfoury:         The (x,y) co-ordinates of the back of line four.
\vertexmidx,\vertexmidy:           The (x,y) co-ordinates of the middle of the vertex.

\end{verbatim}

\section{Arrows and Loops}

The other two \bs draw commands in \FEYNMAN\ are \bs drawarrow and \bs drawloop.

\subsection{\bs drawarrow}

The syntax is:

\begin{verbatim}

\drawarrow[|direction| |configuration|] (|starting x-co-ord|,|y-co-ord|)

              \N           \ATBASE            (integer,integer)  
              \NE          \ATTIP             (variable,integer) 
              \E                              (integer,variable) 
              \SE                             (variable,variable)
              \S                              ALL IN CENTIPOINTS 
              \SW                             (1000 cpt = 1/3 cm)
              \W
              \NW
              \LINEDIRECTION
              \LDIR

\end{verbatim}
An arrowhead is produced at the specified (x,y) co-ordinates in the specified
direction.  If \bs LDIR or \bs LINEDIRECTION is used then the direction will be
that of the most recently
drawn line in the current picture.  If the previous line was drawn by
the \ddrawvertex\ command then the {\it initially specified}
vertex direction will be used.
If \bs ATBASE is used then the specified co-ordinates refer to the {\em base} 
of the arrow.  
If \bs ATTIP is used then the specified co-ordinates refer to the {\em tip} 
of the arrow.  

The following parameters are returned by \bs drawarrow:


\begin{verbatim}

\arrowlength                  The (absolute) length of the arrow drawn (cp).
\boxlengthx,\boxlengthy       The (x,y) co-ordinatess of the TIP of the arrow.

\end{verbatim}
Other variables, such as \bs pbackx,y and \bs photonlengthx,y are unaffected by
\bs drawarrow.  Arrows may be emboldened, via \bs THICKLINES, independently of
the line to which they are attached.  Arrows will remain invisible in phantom
mode.  Examples are:
\begin{verbatim}

\drawarrow[\LDIR\ATTIP](\pmidx,\pmidy)
\drawarrow[\S\ATBASE](0,0)

\end{verbatim}

\subsection{\bs drawloop}

This was detailed in section 4.4.  The syntax is:
\begin{verbatim}

\drawloop |type| [|direction| |extent|] (|starting x-co-ord|,|y-co-ord|)

          \gluon     \N          0             (integer,integer)  
                     \NE         1             (variable,integer) 
                     \E          2             (integer,variable) 
                     \SE         3             (variable,variable)
                     \S          4             ALL IN CENTIPOINTS 
                     \SW         5             (1000 cpt = 1/3 cm)
                     \W          6
                     \NW         7   
                                 8
                            
\end{verbatim} A {\em central} loop is drawn if the extent is specified as zero
(section 4.4.2).  Returned parameters are:
\begin{verbatim}

\loopbackx,\loopbacky     co-ords of opposite point of loop (non-central loop)
                          co-ords of right-most point of loop (central loop)
\loopfrontx,\loopfronty   co-ords of beginning point of loop (non-central loop)
                          co-ords of left-most point of loop (central loop)
\loopmidx,\loopmidy       co-ords of geometric middle point of loop
\pbackx,\pbacky           co-ords of end point of loop
\gluonbackx,\gluonbacky   co-ords of end point of loop (for a gluon loop)

\end{verbatim}
\bs loopbackx,y and \bs loopmidx,y are only
assigned values if at least half of a loop has been drawn, that is if the loop
`extent' is 0,4,5,6,7 or 8.  Example:
\begin{verbatim}

\drawloop\gluon[\NE 3](\pbackx,\pbacky)
\drawloop\gluon[\E 0](0,0)

\end{verbatim}

\section{Placement and Storage Features}

Placement and storage facilities were discussed in sections 4.1 and 4.2.
The following is a list followed by the syntax or typical usage.  In cases
where the feature is principally discussed in other sections these are listed
in parentheses.  Parameters such as \bs gluonlengthx and \bs vertexmidx have
been listed in appendix B.3.

\begin{verbatim}

\addtocounter: \addtocounter{<variable name><increment>}    (See 4.1.1) 
\advance:      \global\advance<variable> by <increment(number or variable)>
               Example:   \global\advance \X by \Y
\divide:       \global\divide<variable> by <divisor(number or variable)>
\double:       \double<variable>  Eg:  \double\Yfive.
\drawandsaveline: \drawandsaveline `<line name>' as <arguments as with \drawline>
\drawoldpic:   \drawoldpic<line name>(x,y)  Eg: \drawoldpic\mygluon(0,\pbacky)
\hskip:        \hskip<length> (1.6)  Used to move pictures around on the page.
\lastline:     Stored name of previously drawn line.  Eg:  \drawoldpic\lastline(0,0)
\multiply:     \global\multiply<variable> by <multiplier(number or variable)>
               Example:   \global\multiply \Xtwo by 7
\multroothalf: \multroothalf<variable>   
\negate:       \negate<variable>        eg: \negate\plengthx
\newcount:     \global\newcount<your variable name>
               Example:   \global\newcount\pmidycopy   \global\pmidycopy=\pmidy
\newcounter:   \newcounter{<variable name>}                 (See 4.1.1) 
\newsavebox:   \global\newsavebox{<name>}.  Eg:  \global\newsavebox{\Bhabha}.
\put:          \put(<x>,<y>){<object>}.  Eg:  \put(0,\pmidx){\circle{1000}} (2.11.2).
\savebox:      \savebox{<box name>}(<box width>,<box height>)[<position>]{<object>}
\sbox:         \sbox{<name>}{<object>}.  Like \savebox.  Eg:\savebox{\Mypic}{}.
\setcounter:   \setcounter{<variable name><variable value>} (See 4.1.1)
\startphantom: \startphantom...text...\stopphantom
\stopphantom:  \startphantom...text...\stopphantom
\the:          Evaluates a variable (section 4.2.1).
\vskip:        \vskip<length> (1.6)  Used to move pictures around on the page.
\Xone:         Unassigned variable pre-defined by FEYNMAN.
\Xtwo:         Unassigned variable pre-defined by FEYNMAN.
\Xthree:       Unassigned variable pre-defined by FEYNMAN.
\Xfour:        Unassigned variable pre-defined by FEYNMAN.
\Xfive:        Unassigned variable pre-defined by FEYNMAN.
\Xsix:         Unassigned variable pre-defined by FEYNMAN.
\Xseven:       Unassigned variable pre-defined by FEYNMAN.
\Xeight:       Unassigned variable pre-defined by FEYNMAN.
\Yone:         Unassigned variable pre-defined by FEYNMAN.
\Ytwo:         Unassigned variable pre-defined by FEYNMAN.
\Ythree:       Unassigned variable pre-defined by FEYNMAN.
\Yfour:        Unassigned variable pre-defined by FEYNMAN.
\Yfive:        Unassigned variable pre-defined by FEYNMAN.
\Ysix:         Unassigned variable pre-defined by FEYNMAN.
\Yseven:       Unassigned variable pre-defined by FEYNMAN.
\Yeight:       Unassigned variable pre-defined by FEYNMAN.
=:             \global<variable>=<value(number or variable)>.  Eg: \global\X=2.
               
\end{verbatim}
