I'm wondering whether is possible to draw a Moebius Strip using TikZ. The closest thing I've seen is in Texamples' page, but no luck so far!

Do you have any ideas? I don't even have a MWE (sorry)

  • I suggest you to use inkscape to draw it. – Sigur Jun 10 '13 at 23:25

With PGFPlots:




    hide axis,
\addplot3 [
    surf, shader=faceted interp,
    point meta=x,
    samples y=5,
    z buffer=sort,
    y domain=-0.5:0.5
] (

\addplot3 [
    domain=-145:180, % The domain needs to be adjusted manually, depending on the camera angle, unfortunately
    samples y=0,
] (

  • Thank you for the marvellous answer! Is it possible to superpose the Moebius strip with the middle circle?, I'd like to highlight that the Moebius strip is based on a circle! :-P Thank you very much. – Dox Jun 11 '13 at 13:20
  • @Dox: Yes, you can add a second plot for that. Unfortunately, PGFPlots can't do the z buffering for separate plots, so you'll have to set the domain for the circle manually to make sure the hidden parts aren't drawn. – Jake Jun 11 '13 at 13:47
  • Magnificent! I tried, but got a much less nice than your. Cheers. – Dox Jun 11 '13 at 14:00
  • @Jake: Why I get a triangular mesh instead of a rectangular mesh as you when I run this code (with pdflatex)? It's all about pgfplots package update or another trick? – rafaeldf Jun 13 '13 at 16:30
  • @rafaeldf: That could be a viewer issue with the interpolated shading. Does using shader=faceted instead of shade=faceted interp help? – Jake Jun 13 '13 at 16:49

As a quotient space:



  mark=at position 0.5 with {\arrow{>}}}
\draw[postaction=decorate] (0,0) -- (2,0);
\draw (2,0) -- (2,-2);
\draw[postaction=decorate] (2,-2) -- (0,-2);
\draw (0,0) -- (0,-2);


enter image description here

And now, taken from MoebiusStrip.tex:

% Title: Moebius Strip
% Tags: Clipping, Node positioning, Shadings, Macros
% Authors: Jacques Duma & Gerard Tisseau
% Site: http://math.et.info.free.fr/TikZ/index.html



:Title: Moebius Strip
:Tags: Clipping, Node positioning, Shadings, Macros
:Authors: Jacques Duma & Gerard Tisseau
:Site: http://math.et.info.free.fr/TikZ/index.html

To build this Moebius Strip, take a normal strip of paper, write "TikZ for LaTeX" on one side, give it 3 half-twists and join the ends.

The resulting strip has only one face and one boundary.

% one third of the Moebius Strip
%: \strip{<angle>}
\shadedraw[very thick,top color=white,bottom color=gray,rotate=#1]
 (0:2.8453) ++ (-30:1.5359) arc (60:0:2)
 -- ++  (90:5) arc (0:60:2) -- ++ (150:3) arc (60:120:2) 
 -- ++ (210:5) arc (120:60:2) -- cycle;}

%: \MoebiusStrip{<text1>}{<text2>}{<text3>}
\begin{scope} [transform shape]
    \draw (-60:3.5) node[scale=6,rotate=30] {#1};
    \draw (180:3.5) node[scale=4,rotate=-90]{#3};
    % redraw the first strip after clipping
    \clip (-1.4,2.4)--(-.3,6.1)--(1.3,6.1)--(5.3,3.7)--(5.3,-2.7)--cycle;
    \draw (60:3.5) node [gray,xscale=-4,yscale=4,rotate=30]{#2};



\begin{tikzpicture} [rotate=22]


enter image description here


enter image description here

As a parametric surface with the Asymptote:

import graph3;
real r=2, w=1;
real x(real u, real v){return (r+v/2*cos(3pi*u))*cos(2pi*u);};
real y(real u, real v){return (r+v/2*cos(3pi*u))*sin(2pi*u);};
real z(real u, real v){return (v/2*sin(3pi*u));};
triple f(pair p){return (x(p.x,p.y),y(p.x,p.y),z(p.x,p.y));};
\caption{M\"obius strip.}

With PSTricks. Stolen from Herbert's answer.


\def\Radius{5 }
   t 2 div cos u mul \Radius add t cos mul
   t 2 div cos u mul \Radius add t sin mul
   t 2 div sin u mul }
   t 2 div cos \Radius add t cos mul
   t 2 div cos \Radius add t sin mul
   t 2 div sin }


enter image description here


Another PsTricks solution, using pst-solide3d, adapted from a code from Manuel Luque:

    \documentclass[pdf,dvipsnames,svgnames, x11names]{standalone}

    \psset[pst-solides3d]{viewpoint=20 10 5, Decran=40, lightsrc=20 10 10}
    \psPoint(0,0,0){O}\uput[d](O){$ O $}
       {2 u v Cos mul add 2 v mul Cos mul}
       {2 u v Cos mul add 2 v mul Sin mul}
       {u v Sin mul}
       base=0.2 0.25 0 pi,linewidth=0.1,
       base=-0.25 -0.2 0 pi,linewidth=0.1,
       base=-0.25 0.25 0 pi,fillcolor=yellow!50,incolor=yellow!50,


enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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