# Utterly stumped by xypic \newdir — just combining examples from xyguide!

I want to use arrows whose heads and/or tails can be almost-triangles: roughly, something like A ———▷ B or A ▷——> B.  For the heads, there’s a good solution in xyguide:

\newdir{|>}{!/4.5pt/@{|}*:(1,-.2)@^{>}*:(1,+.2)@_{>}}


Now A \to/@{-|>}/ B works as desired.  Trying to use this as a tail suffers from a well-known problem, described further down the same page of the guide: “Often tips used as "tails" have their ink on the wrong side of the point where they are placed,” so they sit too far back and crash into the letter behind them, giving something like A▷——> B.  Fortunately, the guide has an exercise on how to fix this, giving the solution

\newdir{ >}{{}*!/-5pt/@{>}}


which, unmodified, works beautifully to give eg A >——> B. Unfortunately, the modification

\newdir{ |>}{{}*!/-5pt/@{|>}}


does not produce the expected result: A \to/@{ |>->}/ B gives something like A▷ ——>B, with the tail pulled back from the shaft and crashing even further into the letter behind it!

Changing the -5pt to a different length—to 5pt, or 0pt, or 50pt—makes no difference to this result.  Other modifiers here work as I’d expect; for instance, \newdir{ |>}{{}*:(1,1)@{|>}} rotates the triangle.  But the !/-5pt/, which as I understand should shift the reference point, and seems to do this fine in the exercise from the guide, just doesn’t seem to work as expected in this example.  I’m completely stumped.  What gives?

-

\newdir{ |>}{{}*!/-1pt/@{|}*!/-6pt/:(1,-.2)@^{>}*!/-6pt/:(1,+.2)@_{>}}

Adjusting the -1pt, -6pt, and -6pt does shift the arrow tail.