What would you suggest for me as I would like to learn how to draw geometric pictures appeared on mathematical competitions like IMO. For example, like this picture here:

enter image description here

  • Welcome to TeX.SX. Questions about how to draw specific graphics that just post an image of the desired result are really not reasonable questions to ask on the site. Please post a minimal compilable document showing that you've tried to produce the image and then people will be happy to help you with any specific problems you may have. See minimal working example (MWE) for what needs to go into such a document.
    – user31729
    Sep 19, 2014 at 10:16
  • 2
    You can draw pictures in, say, Geogebra and export to LaTeX.
    – Symbol 1
    Sep 19, 2014 at 10:31
  • 4
    Maybe tkz-euclide?
    – egreg
    Sep 19, 2014 at 10:56
  • Heck, you could even do it with pict2e if you calculate the coordinates by hand. Sep 19, 2014 at 14:44
  • 1
    You can draw pictures, say, in Geogebra and export to TeX (not explicitly LaTeX).
    – wipet
    Jul 23, 2020 at 21:04

2 Answers 2


Plain Metapost has all of the tools you need to do elegant geometrical diagrams like this.

enter image description here

prologues := 3;
outputtemplate := "%j%c.eps";


% define the radius
r = 100;

% define four points spaced arbitrarily on a circle of radius r;
z1 = (r,0) rotated 140; 
z2 = (r,0) rotated 72; 
z3 = (r,0) rotated 3;
z4 = (r,0) rotated -120;

% define the points on the circle half way between these points
% do this by finding the angle of the vector sum of the two points
z11 = (r,0) rotated angle (z1 + z2);
z12 = (r,0) rotated angle (z2 + z3);
z13 = (r,0) rotated angle (z3 + z4);
z14 = (r,0) rotated angle (z4 + z1);

% find the intersection of the lines between opposite mid points
z0 = (z11--z13) intersectionpoint (z12--z14);

% draw the circle in grey 
draw fullcircle scaled 2r withcolor .7 white;

% draw some radius lines and a chord in pink
drawoptions(withcolor withcolor .37 red + .5 white);
forsuffixes $=11,12,13,14: 
  draw origin -- z$; 
draw z11 -- z14;

% mark the right angle
draw unitsquare scaled 5 rotated angle (z12-z14) shifted z0 withcolor .7 white;

% draw A-B-C-D and P-R and S-Q
draw z11 -- z13; draw z12 -- z14;
draw z1 -- z2 -- z3 -- z4 -- cycle;

% label the points, the "scaled" trick works because everything is centred at origin
s = 13/12;
label("A", z1 scaled s);
label("B", z2 scaled s);
label("C", z3 scaled s);
label("D", z4 scaled s);

label("P", z11 scaled s);
label("Q", z12 scaled s);
label("R", z13 scaled s);
label("S", z14 scaled s);

label("I",z0 shifted (7,-3));


This handout by Evan Chen describes two possible workflows, one using GeoGebra and one using Asymptote. There is also a thorough worked example. I've tried out the GeoGebra workflow and it worked for me, but Asymptote is even better because it integrates with TeX; however, it seems slightly more time-consuming.

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.