I am trying to make a diagram where two arrows will be crossing one arrow. I have the current code for putting in one hole:

 \Omega \ar[r]|(.35)\hole^-{d} \ar[d]^-{e_*}

which seems to work just fine. But I can't quite seem to find a way to put in multiple holes using this command, and I haven't been able to figure out the (seemingly) more complicated approach using "Paths". What can I do? Thanks!

Edit: I also need to be able to position the hole where I need it, because the arrows passing through are curved and coming from the same source. Here is the code so far:

\cdots \ar[r]& \Omega_c^{k-1}(\bbR^n\times\bbR)\ar[r]^-{d} \ar[d]^-{\pi_*} \ar @/_15pt/ [ddl]_(.25)K \ar @/_35pt/ [dd]_(.7){\id} & \Omega_c^{k}(\bbR^n\times\bbR)\ar[r]^-{d} \ar[d]^-{\pi_*} \ar @/_10pt/ [ddl]_(.25)K \ar @/_35pt/ [dd]_(.7){\id}& \Omega_c^{k+1}(\bbR^n\times\bbR)\ar[r]^-{d} \ar[d]^-{\pi_*} \ar @/_10pt/ [ddl]_(.25)K \ar @/_35pt/ [dd]_(.7){\id}& \cdots \\
\cdots \ar[r]|(.5)\hole& \Omega_c^{k-2}(\bbR^n)\ar[r]|(.35)\hole^-{d} \ar[d]^-{e_*} & \Omega_c^{k-1}(\bbR^n)\ar[r]|(.35)\hole^-{d} \ar[d]^-{e_*}& \Omega_c^{k}(\bbR^n)\ar[r]^-{d} \ar[d]^-{e_*}& \cdots \\
\cdots \ar[r]& \Omega_c^{k-1}(\bbR^n\times\bbR)\ar[r]^-{d} & \Omega_c^{k}(\bbR^n\times\bbR)\ar[r]^-{d} & \Omega_c^{k+1}(\bbR^n\times\bbR)\ar[r]^-{d} & \cdots

2 Answers 2


You can add multiples holes by repeating the command. Ex :


P.S. xypic is capable to compute the intersection with other (straight) lines with the command


Some "complete" example :

A\ar[d] & B\ar[d] & C\ar[d] & D\ar[d]\\
  • The first suggestion does the trick. I was trying to repeat the command like: \ar[r]|(.35)\hole|(.65)\hole^{d} which was not working. Thanks again! Commented Nov 1, 2011 at 14:15
  • @GlenMWilson For me \ar[r]|(.35)\hole|(.65)\hole^{d} works fine.
    – PHL
    Commented Nov 1, 2011 at 14:24
  • Hmm... I'm using xypic version 3.7. Maybe that is to blame. I should probably update my TeX distribution one of these days. Also, I'm compiling with xelatex. I'll try just plain latex and see if that fixes things. Commented Nov 1, 2011 at 14:52

One thing you should also note: the multiple holes should be writen in the order as the arrow shows. So this code does not work:


This includes the holes whose positions are given by intersection !{[?];[?]}, or the default (0.5) position of |{Label}.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .