reduce length of pattern lines by one order of magnitude to prevent problems with...
[PyX/mjg.git] / design / dtk / valign.py
blobaf5fb20e2b94ac332ec2e81577913b3546284b73
1 from pyx import *
3 from pyx import __version__
4 if __version__ != "0.8+":
5 raise RuntimeError("need the current developer version to use text.vshift and text.size at the same time (in earlier versions the shift is wrong, since the size change was not taken into account for the shift)")
7 text.set(mode="latex")
8 text.preamble(r"\usepackage{exscale}")
10 spameggswidth = 2.7
11 arrowdist = 0.1
12 arrowlen = 0.2
13 textdist = 0.1
15 c = canvas.canvas()
18 def label(x, y, width, t): # x == -1 -> left; x == 1 -> right
19 c.stroke(path.line(width*(0.5*x+0.5) + x*arrowdist, y,
20 width*(0.5*x+0.5) + x*(arrowdist + arrowlen), y),
21 [deco.barrow.Small])
22 c.text(width*(0.5*x+0.5) + x*(arrowdist + arrowlen + textdist), y,
23 t, [text.vshift.mathaxis, text.boxhalign(0.5-0.5*x)])
26 t = c.text(0, 0, r"\noindent spam \& eggs", [text.parbox(2.7), text.size.Huge])
27 t2 = text.text(0, 0, "eggs", [text.size.Huge])
29 c.stroke(t.bbox().path(), [style.linewidth.THin])
30 c.stroke(path.line(0, 0, 2.7, 0) +
31 path.line(0, t2.depth-t.depth, 2.7, t2.depth-t.depth),
32 [style.linestyle.dashed, style.linewidth.THin])
34 label(-1, t.height, spameggswidth, "valign.top")
35 label(-1, 0.5*(t.height-t.depth), spameggswidth, "valign.middle")
36 label(-1, -t.depth, spameggswidth, "valign.bottom")
37 label(1, 0, spameggswidth, "parbox.top")
38 label(1, 0.5*(t2.depth-t.depth), spameggswidth, "parbox.middle")
39 label(1, t2.depth-t.depth, spameggswidth, "parbox.bottom")
41 mathypos = -2.5
42 mathstr = r"\sum_{i=0}^{\infty}\frac{1}{i^2}=\frac{1}{6}\pi^2"
44 t = c.text(0, mathypos, mathstr, [text.mathmode, text.vshift.mathaxis, text.size.LARGE])
45 t2 = text.text(0, mathypos, mathstr, [text.mathmode, text.size.LARGE])
47 c.stroke(t.bbox().path(), [style.linewidth.THin])
48 c.stroke(path.line(0, mathypos, t.width, mathypos)+
49 path.line(0, mathypos+t.height-t2.height, t.width, mathypos+t.height-t2.height),
50 [style.linestyle.dashed, style.linewidth.THin])
52 label(-1, mathypos, t.width, "vshift.mathaxis")
53 label(1, mathypos+t.height-t2.height, t.width, "baseline")
55 c.writeEPSfile("valign")