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!

4
  • 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, 2013 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)? Sep 16, 2013 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, 2013 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, 2013 at 13:00

1 Answer 1

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.

You must log in to answer this question.

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