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

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! – Glen M Wilson Nov 1 '11 at 14:15
  • @GlenMWilson For me \ar[r]|(.35)\hole|(.65)\hole^{d} works fine. – PHL Nov 1 '11 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. – Glen M Wilson Nov 1 '11 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}.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.