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 need to be able to draw tripled paths in TikZ. I guess this could be done by some clever style which draws a big doubled path to get the outer curves correct, then uses some clever post-action hackery to draw a second non-doubled path to produce the central curve. I need to be able to set the thickness and the spacings of the three lines independently, just like one can with doubled lines.

Luckily, I don't need arrowheads on the line!

Anyone up to the challenge? :)

share|improve this question
    
Just to be clear, the idea is that the three lines will be evenly spaced. So there are two parameters I want to be able to supply: the width of the individual curves, and the separation between adjacent curves. –  Jamie Vicary Dec 15 '11 at 21:21
    
And by using the term "path", you mean that this is not just a straight line, but a number of connected line segments, possibly with rounded edges/curves at each connection. And, no pstricks? –  Werner Dec 15 '11 at 21:26
    
Hi Werner. I need to end up with a PDF - does that rule out pstricks? Maybe that's a stupid question. I'm not sure what the pros and cons are of that option. But anyway, yes, it's a fully-general path. I'll need to use the \draw [triple] (A) to [out=45,in=100] (B) construction and its ilk. –  Jamie Vicary Dec 15 '11 at 21:32
    
pstricks can also be used to produce PDF output via a different compiling sequence or pst-pdf. –  Werner Dec 15 '11 at 21:40
1  
The arrowheads would have been what made this interesting ... (actually, I do have a solution for that; just waiting for someone to ask the right question) –  Loop Space Dec 15 '11 at 22:38

2 Answers 2

up vote 15 down vote accepted

So basically a pre action on the path. I have added a style which is shown how to be called, notice that it will always draw.

\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikzset{
    triple/.style args={[#1] in [#2] in [#3]}{
        #1,preaction={preaction={draw,#3},draw,#2}
    }
}        
\begin{tikzpicture}
  \draw[triple={[line width=1mm,red] in
      [line width=2mm,blue] in
      [line width=4mm,black]}] (0,0) to[out=10,in=100] (0,1);
\end{tikzpicture}
\end{document}
share|improve this answer
    
Perhaps I should wait for more answers, but that seems to do the job! Thanks! –  Jamie Vicary Dec 15 '11 at 21:35
    
@JamieVicary, yes that should at least attract other users who might drop in on a solution. –  zeroth Dec 15 '11 at 21:47
    
I adapted your code to produce this, which works very well for my purposes: –  Jamie Vicary Dec 15 '11 at 21:48
    
\newlength\triplesep \newlength\triplelinewidth \setlength\triplesep{1pt} \setlength\triplelinewidth{1pt} \tikzset{triple/.style={line width=\triplelinewidth,black, preaction={ preaction={draw,line width=2\triplesep+3\triplelinewidth,black}, draw,line width=2\triplesep+\triplelinewidth,white} } } –  Jamie Vicary Dec 15 '11 at 21:48
    
Oops, wasn't expecting it to look like that ... anyway, maybe it'll be useful for someone :). –  Jamie Vicary Dec 15 '11 at 21:49

enter image description here

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks}


\begin{document}


\begin{pspicture}(5,5)
    \rput(2.5,4){Step 1}
    \psline[linewidth=5pt](5,5)
\end{pspicture}


\begin{pspicture}(5,5)
    \rput(2.5,4){Step 2}
    \psline[border=1pt,bordercolor=yellow,linewidth=1pt](5,5)
\end{pspicture}


\begin{pspicture}(5,5)
    \rput(2.5,4){Step 3}
    \psline[linewidth=5pt](5,5)
    \psline[border=1pt,bordercolor=yellow,linewidth=1pt](5,5)
\end{pspicture}

\end{document}
share|improve this answer
    
which parameter setting do you use for the gif. I tried: convert -delay 50 -loop 0 -density 150 -alpha off <file>.pdf <file>.gif but the output is lousy ... –  Herbert Aug 27 '12 at 16:13
    
convert: UnrecognizedAlphaChannelType remove' @ error/convert.c/ConvertImageCommand/657. I have ImageMagick 6.7.2-7 2012-04-26 Q16. –  Herbert Aug 27 '12 at 16:18
1  
thanks, works now –  Herbert Aug 27 '12 at 16:38

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.