3

I was experimenting with

\draw[
     decoration={markings, mark=at position 0.75 with {\arrow[scale=2]{<}}},
     postaction={decorate}
     ] 
     (0,0) circle (2);

and replaced it with

\draw[
     decoration={markings, mark=at position 0.75 with {\arrow[scale=2]{<}}, 
       mark=at position 0.62 with {\fill circle (2pt);}},
     postaction={decorate}
     ] 
     (0,0) circle (2);

i.e. I am trying to put several markings along the circle.

At first I thought I was doing it correctly, just to notice that this doesn't answer my concern 100% as this implementation somehow ruined the alignment of the markings, i.e. either the arrow or the point is off the circle and not really along the circle.

Any suggestions?

Thanks a lot!

  • My temporary fix is to just duplicate \draw with one having the arrow and the other the point. But is there a neater way of doing this? Thanks! – Eric Sep 16 '13 at 12:35
  • 1
    At least replace the second \draw with a \path or remove the postaction (so that the path is only drawn once). Does it help if you switch the order of the marks (so that 0.62 comes before 0.75)? – Qrrbrbirlbel Sep 16 '13 at 12:41
  • \path is a good suggestion! Now after rearranging it as you said, it seems to work now. I find it strange though... But at least now both the point and the arrow align nicely along the circle! Thanks pal! – Eric Sep 16 '13 at 12:47
  • @Qrrbrbirlbel - you're correct. Properly ordering the position does the job! Can you please write that as the answer to my question so we can officially settle my question? Thanks again! – Eric Sep 16 '13 at 13:00
3

The PGFmanual states on page 328 that

[i]t is possible to give the mark option several times, which causes several markings to be applied. In this case, however, it is necessary that the positions on the path are in increasing order. That is, it is not allowed (and will result in chaos) to have a marking that lies earlier on the path to follow a marking that is later on the path.

Thus, you need to do exactly this:

\draw[
  decoration={
    markings,
    mark=at position 0.62 with {\fill circle [radius=+2pt]);},
    mark=at position 0.75 with {\arrow[scale=2]{<}}},
  postaction={decorate}
 ] (0,0) circle [radius=2];

Of course, you could just do

\fill (.62*360:2) circle [radius=+2pt];

for the circular marking, but that is another topic.

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.