Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to add a multitude of marks to a single path. However, sometimes these marks are heavily misplaced. For example, the blue arrows should be a little bit ahead of the red ones.

\begin{tikzpicture}
    \draw plot[smooth, tension=.7] coordinates { (5*0.02109, 5*-0.12607)(5*0.2274, 5*-0.1806)(5*0.4037, 5*-0.02751)(5*0.536, 5*0.4091)(5*0.768, 5*0.2045)(5*0.7262, 5*-0.02055)(5*0.8538, 5*-0.1366) }
        [postaction={decorate}, decoration={markings,
            % Red arrows
            mark=between positions 0.1 and 0.9 step 0.25 with {\arrow[red, line width=1mm]{>};},
            % Blue arrows
            mark=between positions 0.2 and 0.9 step 0.25 with {\arrow[blue, line width=1mm]{>};}
        }]
        ;
\end{tikzpicture}

enter image description here

share|improve this question
    
While code snippets are useful in explanations, it is always best to compose a fully compilable MWE that illustrates the problem including the \documentclass and the appropriate packages so that those trying to help don't have to recreate it. –  Peter Grill Dec 11 '11 at 4:43
4  
Have you tried adding a second postaction? Any number are allowed, and they are executed in order. –  Ryan Reich Dec 11 '11 at 5:07
4  
Incidentally, the problem with the original code was that you were marking the path with marks out of order and this is Expressly Forbidden in the manual. Splitting the decoration in two circumvents this restriction as in involves a double-pass on the path. –  Loop Space Dec 11 '11 at 8:22
    
@AndrewStacey, I found it now that you mentioned it, page 328. It's a little hard to notice that sentence when you're just skimming the manual for the information you need. –  David Dec 11 '11 at 17:48
    
I agree that it's an obscure detail and my comment was purely to ensure that the explanation is on this page somewhere as otherwise it's not clear to others why your original code doesn't work. I think it's a good question and a neat solution. –  Loop Space Dec 11 '11 at 19:11

1 Answer 1

up vote 8 down vote accepted

Ryan Reich's (thanks!) comment was the solution: multiple postactions. Note that every "decoration block" needs its own decorate postaction.

\begin{tikzpicture}
    \draw plot[smooth, tension=.7] coordinates { (5*0.02109, 5*-0.12607)(5*0.2274, 5*-0.1806)(5*0.4037, 5*-0.02751)(5*0.536, 5*0.4091)(5*0.768, 5*0.2045)(5*0.7262, 5*-0.02055)(5*0.8538, 5*-0.1366) }
        [postaction={decorate, decoration={markings,
            % Red arrows
            mark=between positions 0.1 and 0.9 step 0.25 with {\arrow[red, line width=1mm]{>};}
        }}]
        [postaction={decorate, decoration={markings,
            % Blue arrows
            mark=between positions 0.2 and 0.9 step 0.25 with {\arrow[blue, line width=1mm]{>};}
        }}]
        ;
\end{tikzpicture}

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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