As the title says, I was trying to draw a rectangle with rounded corners, and then decided it needed decorating. Well, the result looks awesome, but isn't really what I had in mind. a) What happened? b) How do I do it properly?

    \draw[rounded corners=40mm,
           decorate,decoration={snake,amplitude=5,segment length=30}]
    (0,0) rectangle (5,5);

enter image description here

  • 7
    ...talk about pathmorphing a rectangle... into a bird's nest! tikz-tastic! Remove the snake, which bird's don't enjoy anyway, in order to fix the problem. :)
    – Werner
    Commented Dec 21, 2011 at 8:04
  • 4
    "I see it, but I don't believe it.". So I ran the code myself and can confirm that that genuinely is what one obtains. Totally bizarre. If this is a bug, I sincerely hope that they never fix it as that is a fantastic picture. Commented Dec 21, 2011 at 8:06
  • I think we should call it a feature. Amazing!
    – qubyte
    Commented Dec 21, 2011 at 8:29
  • 5
    Hahah, amazing indeed. Here is a microprocessor : \begin{tikzpicture}[scale=1] \draw[rounded corners=1cm, decorate,decoration={snake,amplitude=5mm,segment length=3}] (0,0) rectangle (5cm,5cm); \end{tikzpicture}. Crazy stuff
    – percusse
    Commented Dec 21, 2011 at 8:40

1 Answer 1


Update 2022-08-24: https://tex.stackexchange.com/a/655154/86 has a different method for disabling the rounded corners before the decoration starts that is probably a better overall method. The explanation below is still relevant, though.

The problem is that the rounded corners option is getting applied to the result of the decoration. So you need to turn it off after the initial path is constructed but before the decoration is applied. This cannot be done in the decoration key because the options for that are actually processed when this key is originally parsed (ie at the start of the path). So putting /tikz/sharp corners in the decoration simply negates the rounded corners.

Decorating the path is the very next thing done after the path has been processed so it's hard to stick something in between the path being constructed and being decorated! However, it is possible and I'll present two ways. The first works by splitting the construction into two pieces. First we construct the rounded rectangle. We do not draw it, but we save it. Then we decorate it in a completely different command. This separates the construction from the decoration and means that the scope of the rounded corners option is over by the time we get to the decoration.

The second way works because TikZ (or PGF) constructs a path as it reads it, rather than saving everything for the end. This means that it is possible to insert options in the middle of the path and have them take effect from that point on (this only applies to options that affect how the path is constructed, not how it is rendered (so colour doesn't work)). We basically want to turn off rounded corners at the end of the path so we do precisely that: at the end of the path we put [sharp corners]. Then by the time the decoration is processed, we no longer round corners.

The second method is simpler, but the first is more powerful. Indeed, it's the idea behind my spath library (still in alpha - indeed, looking at the code for this answer showed that that library lacks a few essential pieces): namely that a path can be defined and used in two different places.

With all that, here's the code (note that the \makeatletter ... \makeatother piece is only needed for the first of the two solutions):

  use path/.code={\pgfsyssoftpath@setcurrentpath{#1}}
 % First method: define and then use
 \path[rounded corners=30mm,save path=\rectpath]
    (0,0) rectangle (8,8);
 \draw[use path=\rectpath,
    decorate,decoration={snake,amplitude=5,segment length=5}] (0,0);
 % Second solution: sharp corners at the end
 \draw[rounded corners=30mm,
    decorate,decoration={snake,amplitude=5,segment length=5}]
    (0,9) rectangle +(8,8) [sharp corners];

Here's the result:

rounded corners with decoration

As I said in my comment, I hope that even if they fix this then they provide a way to turn it back on as the original picture - whilst not what you want - is quite fun! I especially like the fact that the snake decoration turns into a birds nest.

See https://tex.stackexchange.com/a/655147/86 if trying to use this inside a to path

You must log in to answer this question.

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