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.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to draw a figure that looks like the following scenario:

Consider a circle of radius $r$, described parametrically by $x = cos(t) and y = sin(t)$. I'd like to draw a figure where the 90 to 180 degrees arc and the 270 to 360 arc are stretched by adding 1 to the previous point, while keeping the figure connected. Here is a sketch of the figure below: (x and y axis should not be included in the final figure).

enter image description here

The respective labels are $\Omega_1$, $\partial \varphi(1)$, $\partial \varphi (1)$, $t=0$, $t=1$, $t=0$, $t=1$, $\phi^2$, $\Omega_2$

Any help would be greatly appreciated.

Here is part of the picture that I have drawn:

   \rput(2;45){$\Delta \mathfrak{M}$}

I'd also like to have an additional label $\Delta \mathfrak{M}$ in each annulus as well as for them to be shaded.

share|improve this question
It'd be swell if you could show us something that you have tried so far- perhaps Draw arc in tikz when center of circle is specified might help to get you started... – cmhughes Nov 10 '13 at 0:52
@cmhughes I understand how to draw arcs, but not how to connect them, nor how to label them properly – Anthony Peter Nov 10 '13 at 0:55
so are you drawing an annulus, perhaps like this: How to shade a partial annulus – cmhughes Nov 10 '13 at 0:56
@cmhughes it would be two annulus shapes and two arcs, along with the labels – Anthony Peter Nov 10 '13 at 1:05
up vote 11 down vote accepted
\begin{tikzpicture}[scale=2,transform shape]
\draw (1,0) arc (0:90:1);
\draw (-1,0) arc (180:270:1);
\draw[fill=gray!30] (-1,0) -- (-2,0) arc (180:90:2) -- (0,1) arc (90:180:1);
\draw[fill=gray!30] (1,0) -- (2,0) arc (0:-90:2) -- (0,-1) arc (-90:0:1);
\node at (0.2,0.75) {\tiny $\phi^2$};
\node[rotate=50] at (-0.7,0.5) {\tiny $t=0$};
\node[rotate=50] at (0.7,-0.5) {\tiny $t=0$};
\node[rotate=50] at (-1.45,1.2) {\tiny $t=1$};
\node[rotate=50] at (1.45,-1.2) {\tiny $t=1$};
\node[rotate=50] at (-1.6,1.4) {\tiny $\partial \varphi (1)$};
\node[rotate=50] at (1.6,-1.4) {\tiny $\partial \varphi (1)$};
\node at (-2,2) {\tiny $\Omega_1$};
\node at (2,-2) {\tiny $\Omega_2$};
\node at (-1,1) {\tiny $\Delta \mathfrak{M}^2$};
\node at (1,-1) {\tiny $\Delta \mathfrak{M}^2$};


enter image description here

share|improve this answer
Thank you for your answer. Is it possible to add a $\Delta \mathfrak{M}^2$ and $\Delta \mathfrak{M}^2$ in each annulus, as well as to shade them light gray? – Anthony Peter Nov 10 '13 at 1:24
If this can be done, I shall gladly accept your answer. – Anthony Peter Nov 10 '13 at 1:26
In the middle of each annulus, horizontal. – Anthony Peter Nov 10 '13 at 1:29
I seriously hate arcs in tikz – Nicholas Hamilton Nov 10 '13 at 13:26
@Marienplatz maybe, but everything is a riddle. Like how to do arc centered at (x,y) with radius Z, going from angle ThetaA to ThetaB in degrees. – Nicholas Hamilton Nov 10 '13 at 13:53

With the next version of TikZ it is finally possible to place nodes along arcs. This is used here with the CVS version of TikZ. (Although, it is relatively easy to calculate the positions and rotations here manually.)

For more information, refer to


\begin{tikzpicture}[>=latex, declare function={smallR=2; bigR=2*smallR;}, delta angle=90,
  my ring sectors/.style={fill=gray, nodes={midway, sloped}}]
\filldraw[my ring sectors]
  (left:smallR) arc[radius=smallR, start angle=180, delta angle=-90] node[below] {$t=0$}
   -- (up:bigR) arc[radius=bigR, start angle=90]                     node[below] {$t=1$}
                  node[above] {$\partial\varphi(1)$} -- cycle
  (right:smallR) arc[radius=smallR, start angle=0, delta angle=-90]  node[above] {$t=0$}
  -- (down:bigR) arc[radius=bigR, start angle=-90]                   node[above] {$t=1$}
                   node[below] {$\partial\varphi(1)$} -- cycle;

\draw[radius=smallR] (right:smallR) arc[start angle=0]
                      (left:smallR) arc[start angle=180];
\node[below] at (up:smallR) {$\phi^2$};
\path (-bigR,bigR) -- 
  node[at start]   {$\Omega_1$}
  node[near start] {$\Delta \mathfrak{M}^2$}% or at (135:.5*bigR+.5*smallR)
  node[near end]   {$\Delta \mathfrak{M}^2$}% or at (-45:.5*bigR+.5*smallR)
  node[at end]     {$\Omega_2$} (bigR,-bigR);


enter image description here

share|improve this answer
1171 characters. – kiss my armpit Nov 10 '13 at 12:58

Exploiting the symmetrical properties of the diagram in question with PSTricks. It only consumes 583 characters.


    \foreach \A/\B/\C in 
        3.0/1/\Delta \mathfrak{M}^2, 
        4.3/0/\partial \varphi (1)
        \rput{\ifnum\B=1 *0\else *1\fi}(\A;3){$\C$}


enter image description here

share|improve this answer

An alternative to the answers already given:

\tikz{\foreach\i in{0,180}
\foreach\i in{1,2}
 \foreach\r/\s[count=\c]in{5/t=0,8/\Delta\mathfrak M^2,11/t=1,20/\Omega_\i,13/\partial\varphi(1)}
\node at(90:1.25){$\Phi^2$};}

enter image description here

share|improve this answer
446 chars, it is the fewest! +1 you can save more by moving tikz as the class option. – kiss my armpit Nov 10 '13 at 20:01

enter image description here

Countdown=457 characters (Asymptote,Linux). ring.asy:

string[] s={"$\partial\varphi(1)$","$t=0$","$t=1$","$\Omega_","$\Delta\mathfrak{M}^2$"};
real[] d={2,1,2,-2,-1,-2};
pair[] p={NW,SE,SE,SE,NW,NW};
guide r=arc(N-N,2,90,180)--arc(N-N,1,180,90,CW)--cycle;
for(int i=0;i<6;++i){

To get a standalone ring.pdf, run asy -f pdf ring.asy.

share|improve this answer
+1: You won.... – kiss my armpit Nov 10 '13 at 15:10
It does not need \documentclass? – kiss my armpit Nov 10 '13 at 15:20
@Marienplatz: AFAIK, for the moment for non-inline standalone mode it uses \documentclass[12pt]{article} as default. – g.kov Nov 10 '13 at 15:30
Interesting: I usually find that when I do something with both Asymptote and TikZ, the Asymptote code is a bit longer. But that's probably because I deliberately write in a style that values robustness over compactness, and dividing a task into several lines of code is more natural in Asymptote than in TikZ. – Charles Staats Nov 10 '13 at 20:25

Here is my crack at it. I personally find the notation draw(x1,y1) to[in=A,out=B](x2,y2); much easier to work with, as opposed to the crypto mind-bending arc and friends which makes me want to go and drink something strong.

@Jake made a great suggestion to replace with bend right=45 or bend left=45 instead which is even easier to understand.

                 bl/.style={bend left=45},
                 br/.style={bend right=45},}
        \draw   (2, 0) to[br] (0, 2) 
                (-2,0) to[br] (0,-2);
        \draw[f](0, 2) to[br] (-2,0) -- (-4,0) to[bl] (0, 4) -- (0, 2) 
                (0,-2) to[br] (2, 0) -- (4, 0) to[bl] (0,-4) -- (0,-2);
        \node[anchor=north]at (0,2){$\phi^2$};
        \node at (-4,4){$\Omega_1$};
        \node at (4,-4){$\Omega_2$};
        \node[n] at (-1.4,1.4){$t=0$};
        \node[s] at (1.4,-1.4){$t=0$};
        \node[n] at (-2.8,2.8){$t=1$};
        \node[s] at (2.8,-2.8){$t=1$};
        \node[s] at (-2.8,2.8){$\partial \varphi(1)$};
        \node[n] at (2.8,-2.8){$\partial \varphi(1)$};
        \node at (-2.1,2.1) {$\Delta \mathfrak{M}^2$};
        \node at (2.1,-2.1) {$\Delta \mathfrak{M}^2$};


share|improve this answer
You can simplify things a bit further by using bend left=45 and bend right=45 instead of specifying the in and out angles. – Jake Nov 10 '13 at 14:04
Don't forget to cancel the rotation applied to \Delta.... 1073 chars. – kiss my armpit Nov 10 '13 at 14:07
@Jake That suggestion is great. I have made modifications accordingly. – Nicholas Hamilton Nov 10 '13 at 14:15

Your Answer


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.