[Xy-pic] \newdir

Ross Moore ross@ics.mq.edu.au
Tue, 9 Jul 2002 08:57:33 +1000 (EST)

> Does anyone know how to use \newdir to produce an arrow with a tick.  Say,
> \newdir{+}{<definition>} so that \ar{+>} would produce an arrow like
> ----+---> ?  You can get the effect by \ar@{>}|-{\object@{|}} .

1.  Firstly, do you want to use  \ar{+>}  (as stated)  or  \ar@{+>}
by analogy with line styles, such as  \ar@{.>}, \ar@{=>} ?

Either is possible; neither is easy, for various reassons.

2.  \dir{+}  is already defined as a directional --- an oriented cross
with one arm along the current direction (as distinct from \dir{x}
which has the arms at 45\degrees to the current direction).

Thus \ar@{+>} *should* currently work as an arrow built from
repeated aligned crosses.

Changing the result of a connection built with \dir{+} to be
what you are asking-for is certainly possible, but would require
working at an internal level, I think.

3.  The alternative is to *overload* the \ar macro.

It could be made to:
a.  look ahead, to read the next non-space token
b.  if it is { then read the full argument
c.  test the argument against specified patterns using \ifx
e.g. {+>} for this case, but other patterns could be checked also
d.  if a particular pattern is found, then do something special...
e.  ... otherwise put the tokens back, for usual Xy-pic parsing.

The *doing something special* at step d. could be simply inserting
extra tokens into the parsing stream, so that effectively..

\ar{+>}  ---->  \realXyar @{>}|-*@{|}

where \let\realXyar\ar  has captured a pointer to the real Xy-pic expansion
of \ar before any re-definition has been made.

In OOP terms, TeX's \let primitive provides the pointer to allow *inheritance*
of the existing meaning of a macro, so that it can be redefined locally,
using \def or \edef, to call-up a specialised method for a sub-class type of object.

Hope this helps,

Ross

>
> Michael Barr
>
> _______________________________________________
> Xy-pic mailing list
> http://tug.org/mailman/listinfo/xy-pic