summaryrefslogtreecommitdiff
path: root/info
diff options
context:
space:
mode:
Diffstat (limited to 'info')
-rw-r--r--info/asy-overview/asy/jh.asy17
-rw-r--r--info/asy-overview/asy_overview.pdfbin2057271 -> 2057627 bytes
-rw-r--r--info/asy-overview/src/appendix/appendix.tex19
-rw-r--r--info/asy-overview/src/asy_tut.tex4
-rw-r--r--info/asy-overview/src/chapter1/chapter1.tex4
-rw-r--r--info/asy-overview/src/chapter1/main.tex2
-rw-r--r--info/asy-overview/src/chapter2/asy/cos.asy2
-rw-r--r--info/asy-overview/src/chapter2/asy/exponential.asy4
-rw-r--r--info/asy-overview/src/chapter2/asy/plot.asy2
-rw-r--r--info/asy-overview/src/chapter2/asy/plot_after.asy5
-rw-r--r--info/asy-overview/src/chapter2/chapter2.tex68
-rw-r--r--info/asy-overview/src/chapter3/asy/integral.asy2
-rw-r--r--info/asy-overview/src/chapter3/asy/zoom.asy2
-rw-r--r--info/asy-overview/src/chapter3/asy/zoom_iterate.asy22
-rw-r--r--info/asy-overview/src/chapter3/asy/zoom_times.asy2
-rw-r--r--info/asy-overview/src/chapter3/chapter3.tex42
-rw-r--r--info/asy-overview/src/chapter4/asy/planes.asy2
-rw-r--r--info/asy-overview/src/chapter4/asy/vectors.asy2
-rw-r--r--info/asy-overview/src/chapter4/asy/washer.asy2
-rw-r--r--info/asy-overview/src/chapter4/chapter4.tex56
-rw-r--r--info/asy-overview/src/chapter4/main_3d.tex9
-rw-r--r--info/asy-overview/src/preface/preface.tex2
-rw-r--r--info/biblio/font.bib128
-rw-r--r--info/biblio/font.ltx12
-rw-r--r--info/drawing-with-metapost/Drawing-with-Metapost.pdfbin10841618 -> 9396030 bytes
-rw-r--r--info/drawing-with-metapost/README.md36
-rw-r--r--info/drawing-with-metapost/src/Drawing-with-Metapost.tex6384
-rw-r--r--info/drawing-with-metapost/src/angles-lines.mp78
-rw-r--r--info/drawing-with-metapost/src/arbelos.mp63
-rw-r--r--info/drawing-with-metapost/src/arbelos.pdfbin31873 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-3-4-3-4.mp62
-rw-r--r--info/drawing-with-metapost/src/arch-3-4-3-4.pdfbin18072 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-3-4-6-4.mp54
-rw-r--r--info/drawing-with-metapost/src/arch-3-4-6-4.pdfbin18589 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-4-6-12.mp65
-rw-r--r--info/drawing-with-metapost/src/arch-4-6-12.pdfbin37586 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-4-8-8.mp40
-rw-r--r--info/drawing-with-metapost/src/arch-4-8-8.pdfbin22010 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-hexagon.mp59
-rw-r--r--info/drawing-with-metapost/src/arch-hst.mp62
-rw-r--r--info/drawing-with-metapost/src/arch-hst.pdfbin38506 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-snub-hex-parts.mp49
-rw-r--r--info/drawing-with-metapost/src/arch-snub-hexagon-unit.mp12
-rw-r--r--info/drawing-with-metapost/src/arch-snub-hexagon-unit.pdfbin2713 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-snub-hexagon.pdfbin144876 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-snub-square.pdfbin29720 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/arch-square.mp39
-rw-r--r--info/drawing-with-metapost/src/arch-triangle.mp45
-rw-r--r--info/drawing-with-metapost/src/archimedean-tools.mp33
-rw-r--r--info/drawing-with-metapost/src/archimedes.pdfbin60432 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/area-under-graph.mp37
-rw-r--r--info/drawing-with-metapost/src/area-under-graph.pdfbin2228 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/automatic-grid.mp16
-rw-r--r--info/drawing-with-metapost/src/basedate.mp14
-rw-r--r--info/drawing-with-metapost/src/blended-color-circles.mp44
-rw-r--r--info/drawing-with-metapost/src/blended-color-circles.pdfbin15260 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/border-dashed.pdfbin1693 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/border-shadow.pdfbin1653 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/border.mp50
-rw-r--r--info/drawing-with-metapost/src/border.pdfbin30553 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/braces.mp44
-rw-r--r--info/drawing-with-metapost/src/brachisto.mp56
-rw-r--r--info/drawing-with-metapost/src/brexit-map.mp99
-rw-r--r--info/drawing-with-metapost/src/brexit-map.pdfbin263549 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/brown3a.pdf8196
-rw-r--r--info/drawing-with-metapost/src/cd-tikzcd-example.mp49
-rw-r--r--info/drawing-with-metapost/src/cd-tikzcd-example.pdf (renamed from info/drawing-with-metapost/src/tikzcd-example.pdf)bin25123 -> 25064 bytes
-rw-r--r--info/drawing-with-metapost/src/cd-xypic-example.mp44
-rw-r--r--info/drawing-with-metapost/src/cd-xypic-example.pdf (renamed from info/drawing-with-metapost/src/xypic-example.pdf)bin33547 -> 33476 bytes
-rw-r--r--info/drawing-with-metapost/src/circumcircle.mp49
-rw-r--r--info/drawing-with-metapost/src/clocks.mp27
-rw-r--r--info/drawing-with-metapost/src/closed-antireuleaux-set.mp27
-rw-r--r--info/drawing-with-metapost/src/closed-antireuleaux-set.pdfbin1606 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/closed-polygon-chain.mp18
-rw-r--r--info/drawing-with-metapost/src/closed-polygon-chain.pdfbin7673 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/color-blend-toy.mp24
-rw-r--r--info/drawing-with-metapost/src/color-blended-circles.mp44
-rw-r--r--info/drawing-with-metapost/src/color-blended-circles.pdfbin0 -> 15155 bytes
-rw-r--r--info/drawing-with-metapost/src/color-brexit-map.mp104
-rw-r--r--info/drawing-with-metapost/src/color-brexit-map.pdfbin0 -> 233867 bytes
-rw-r--r--info/drawing-with-metapost/src/color-grey-escher.mp38
-rw-r--r--info/drawing-with-metapost/src/color-grey-escher.pdfbin0 -> 70312 bytes
-rw-r--r--info/drawing-with-metapost/src/color-grey-shadows.mp34
-rw-r--r--info/drawing-with-metapost/src/color-grey-shadows.pdfbin0 -> 50693 bytes
-rw-r--r--info/drawing-with-metapost/src/color-hsv-bathymetric.mp68
-rw-r--r--info/drawing-with-metapost/src/color-hsv-bathymetric.pdfbin8708 -> 8673 bytes
-rw-r--r--info/drawing-with-metapost/src/color-hsv-gamut.mp36
-rw-r--r--info/drawing-with-metapost/src/color-hsv-gamut.pdfbin14278 -> 14138 bytes
-rw-r--r--info/drawing-with-metapost/src/color-hsv-macro.mp27
-rw-r--r--info/drawing-with-metapost/src/compass-rose.mp35
-rw-r--r--info/drawing-with-metapost/src/complex-inverse-and-sqrt.mp48
-rw-r--r--info/drawing-with-metapost/src/complex-operators.mp32
-rw-r--r--info/drawing-with-metapost/src/curves-astroid-family.mp18
-rw-r--r--info/drawing-with-metapost/src/curves-astroid-family.pdfbin6142 -> 6546 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-astroid.mp21
-rw-r--r--info/drawing-with-metapost/src/curves-astroid.pdfbin2665 -> 2589 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-brachisto.mp44
-rw-r--r--info/drawing-with-metapost/src/curves-brachisto.pdf (renamed from info/drawing-with-metapost/src/brachisto.pdf)bin16384 -> 14776 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-cardioid-construction.mp85
-rw-r--r--info/drawing-with-metapost/src/curves-cardioid-construction.pdfbin10429 -> 11417 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-cycloids-extra.mp (renamed from info/drawing-with-metapost/src/cycloids-extra-code.mp)9
-rw-r--r--info/drawing-with-metapost/src/curves-cycloids-extra.pdf (renamed from info/drawing-with-metapost/src/cycloids-extra.pdf)bin33580 -> 33475 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-cycloids.mp48
-rw-r--r--info/drawing-with-metapost/src/curves-cycloids.pdf (renamed from info/drawing-with-metapost/src/cycloids.pdf)bin33034 -> 29227 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-ellipse-family.mp34
-rw-r--r--info/drawing-with-metapost/src/curves-ellipse-family.pdfbin0 -> 27584 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-ellipse-tangents.mp74
-rw-r--r--info/drawing-with-metapost/src/curves-ellipse-tangents.pdfbin24970 -> 27722 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-ellipse.mp84
-rw-r--r--info/drawing-with-metapost/src/curves-ellipse.pdfbin17136 -> 19727 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-limacon-simple.mp42
-rw-r--r--info/drawing-with-metapost/src/curves-limacon-simple.pdfbin14987 -> 14912 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-parabola-directrix.mp93
-rw-r--r--info/drawing-with-metapost/src/curves-parabola-directrix.pdfbin31251 -> 31207 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-parabola.mp51
-rw-r--r--info/drawing-with-metapost/src/curves-parabola.pdfbin10934 -> 10346 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-spiral-archimedes.mp12
-rw-r--r--info/drawing-with-metapost/src/curves-spiral-archimedes.pdfbin57306 -> 56604 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-spiral-equiangular.mp8
-rw-r--r--info/drawing-with-metapost/src/curves-spiral-gnomon-sq.mp34
-rw-r--r--info/drawing-with-metapost/src/curves-spiral-gnomon-sq.pdfbin4583 -> 4570 bytes
-rw-r--r--info/drawing-with-metapost/src/curves-spiral-gnomon-trig.mp59
-rw-r--r--info/drawing-with-metapost/src/curves-spiral-gnomon-trig.pdfbin9844 -> 9821 bytes
-rw-r--r--info/drawing-with-metapost/src/cycloids-code.mp63
-rw-r--r--info/drawing-with-metapost/src/cycloids-extra.mp10
-rw-r--r--info/drawing-with-metapost/src/cycloids.mp10
-rw-r--r--info/drawing-with-metapost/src/deco-borders.mp58
-rw-r--r--info/drawing-with-metapost/src/deco-borders.pdfbin0 -> 3860 bytes
-rw-r--r--info/drawing-with-metapost/src/desargues.mp56
-rw-r--r--info/drawing-with-metapost/src/dice.mp41
-rw-r--r--info/drawing-with-metapost/src/dice.pdfbin9102 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/double-dragon.mp57
-rw-r--r--info/drawing-with-metapost/src/double-dragon.pdfbin384746 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/draw-picture.mp73
-rw-r--r--info/drawing-with-metapost/src/draw-picture.pdfbin13026 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/dwmpcode.sty94
-rw-r--r--info/drawing-with-metapost/src/eggs-357.mp24
-rw-r--r--info/drawing-with-metapost/src/eggs-357.pdfbin19082 -> 19068 bytes
-rw-r--r--info/drawing-with-metapost/src/eggs-five-better.mp8
-rw-r--r--info/drawing-with-metapost/src/eggs-five-better.pdfbin13619 -> 13585 bytes
-rw-r--r--info/drawing-with-metapost/src/eggs-four-point.mp11
-rw-r--r--info/drawing-with-metapost/src/eggs-four-point.pdfbin4419 -> 4404 bytes
-rw-r--r--info/drawing-with-metapost/src/eggs-fried.mp31
-rw-r--r--info/drawing-with-metapost/src/eggs-fried.pdfbin3995 -> 3943 bytes
-rw-r--r--info/drawing-with-metapost/src/eggs-gold.mp27
-rw-r--r--info/drawing-with-metapost/src/eggs-gold.pdfbin19239 -> 19207 bytes
-rw-r--r--info/drawing-with-metapost/src/eggs-moss.mp28
-rw-r--r--info/drawing-with-metapost/src/eggs-perfect.mp3
-rw-r--r--info/drawing-with-metapost/src/eggs-perfect.pdfbin2068 -> 2055 bytes
-rw-r--r--info/drawing-with-metapost/src/eggs-shaded.mp18
-rw-r--r--info/drawing-with-metapost/src/eggs-shaded.pdfbin185735 -> 182946 bytes
-rw-r--r--info/drawing-with-metapost/src/eggs-super.mp3
-rw-r--r--info/drawing-with-metapost/src/eggs-super.pdfbin4026 -> 4011 bytes
-rw-r--r--info/drawing-with-metapost/src/eggs-thom.mp3
-rw-r--r--info/drawing-with-metapost/src/escher.mp38
-rw-r--r--info/drawing-with-metapost/src/escher.pdfbin61953 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/excircle.mp39
-rw-r--r--info/drawing-with-metapost/src/explode.mp31
-rw-r--r--info/drawing-with-metapost/src/explode.pdfbin5600 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/func-addition-of-sines.mp61
-rw-r--r--info/drawing-with-metapost/src/func-addition-of-sines.pdfbin55902 -> 57286 bytes
-rw-r--r--info/drawing-with-metapost/src/func-angles-lines.mp53
-rw-r--r--info/drawing-with-metapost/src/func-angles-lines.pdf (renamed from info/drawing-with-metapost/src/angles-lines.pdf)bin11756 -> 11709 bytes
-rw-r--r--info/drawing-with-metapost/src/func-epi-v-pie.mp13
-rw-r--r--info/drawing-with-metapost/src/func-epi-v-pie.pdfbin31330 -> 31219 bytes
-rw-r--r--info/drawing-with-metapost/src/func-exponential.mp71
-rw-r--r--info/drawing-with-metapost/src/func-exponential.pdfbin27823 -> 27725 bytes
-rw-r--r--info/drawing-with-metapost/src/func-lemniscate.mp28
-rw-r--r--info/drawing-with-metapost/src/func-linear-graph.mp51
-rw-r--r--info/drawing-with-metapost/src/func-linear-graph.pdf (renamed from info/drawing-with-metapost/src/linear-graph.pdf)bin41679 -> 41648 bytes
-rw-r--r--info/drawing-with-metapost/src/func-maurer-rose.mp32
-rw-r--r--info/drawing-with-metapost/src/func-maurer-rose.pdfbin15388 -> 15332 bytes
-rw-r--r--info/drawing-with-metapost/src/func-numbered-axes.mp25
-rw-r--r--info/drawing-with-metapost/src/func-numbered-axes.pdf (renamed from info/drawing-with-metapost/src/numbered-axes.pdf)bin24306 -> 24288 bytes
-rw-r--r--info/drawing-with-metapost/src/func-parametric.mp12
-rw-r--r--info/drawing-with-metapost/src/func-parametric.pdfbin14480 -> 14403 bytes
-rw-r--r--info/drawing-with-metapost/src/func-plain-axes.mp14
-rw-r--r--info/drawing-with-metapost/src/func-plain-axes.pdf (renamed from info/drawing-with-metapost/src/plain-axes.pdf)bin8723 -> 8706 bytes
-rw-r--r--info/drawing-with-metapost/src/func-pulse.mp42
-rw-r--r--info/drawing-with-metapost/src/func-pulse.pdfbin16133 -> 16107 bytes
-rw-r--r--info/drawing-with-metapost/src/func-reflection.mp12
-rw-r--r--info/drawing-with-metapost/src/func-sines.mp85
-rw-r--r--info/drawing-with-metapost/src/func-sines.pdfbin44424 -> 44310 bytes
-rw-r--r--info/drawing-with-metapost/src/func-stress.mp67
-rw-r--r--info/drawing-with-metapost/src/geometry-apollonius.mp (renamed from info/drawing-with-metapost/src/apollonius.mp)2
-rw-r--r--info/drawing-with-metapost/src/geometry-apollonius.pdf (renamed from info/drawing-with-metapost/src/apollonius.pdf)bin22816 -> 22772 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-arbelos.mp54
-rw-r--r--info/drawing-with-metapost/src/geometry-arbelos.pdfbin0 -> 24969 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-axis-of-similitude.mp (renamed from info/drawing-with-metapost/src/axis-of-similitude.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-axis-of-similitude.pdf (renamed from info/drawing-with-metapost/src/axis-of-similitude.pdf)bin30343 -> 30343 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-bisection-euclidean.mp (renamed from info/drawing-with-metapost/src/bisection-euclidean.mp)2
-rw-r--r--info/drawing-with-metapost/src/geometry-bisection-euclidean.pdf (renamed from info/drawing-with-metapost/src/bisection-euclidean.pdf)bin13647 -> 13647 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-bisection-interior.mp (renamed from info/drawing-with-metapost/src/bisection-interior.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-bisection-interior.pdf (renamed from info/drawing-with-metapost/src/bisection-interior.pdf)bin13007 -> 13007 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-bisection-vector.mp (renamed from info/drawing-with-metapost/src/bisection-vector.mp)9
-rw-r--r--info/drawing-with-metapost/src/geometry-bisection-vector.pdf (renamed from info/drawing-with-metapost/src/bisection-vector.pdf)bin13037 -> 13016 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-bisection.mp (renamed from info/drawing-with-metapost/src/bisection.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-circumcircle.mp59
-rw-r--r--info/drawing-with-metapost/src/geometry-circumcircle.pdf (renamed from info/drawing-with-metapost/src/circumcircle.pdf)bin9308 -> 9315 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-drawing-circles.mp (renamed from info/drawing-with-metapost/src/drawing-circles.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-drawing-circles.pdf (renamed from info/drawing-with-metapost/src/drawing-circles.pdf)bin20864 -> 20864 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-examples-desargues.mp55
-rw-r--r--info/drawing-with-metapost/src/geometry-examples-desargues.pdf (renamed from info/drawing-with-metapost/src/desargues.pdf)bin19973 -> 21722 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-examples-napoleon.mp40
-rw-r--r--info/drawing-with-metapost/src/geometry-examples-napoleon.pdfbin0 -> 13755 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-examples-projections.mp (renamed from info/drawing-with-metapost/src/projections-code.mp)15
-rw-r--r--info/drawing-with-metapost/src/geometry-examples-projections.pdf (renamed from info/drawing-with-metapost/src/projections.pdf)bin17991 -> 18010 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-examples-trisections.mp (renamed from info/drawing-with-metapost/src/trisection-triangles.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-examples-trisections.pdf (renamed from info/drawing-with-metapost/src/trisection-triangles.pdf)bin5133 -> 5123 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-excircle.mp50
-rw-r--r--info/drawing-with-metapost/src/geometry-excircle.pdf (renamed from info/drawing-with-metapost/src/excircle.pdf)bin10379 -> 10357 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-incircle.mp50
-rw-r--r--info/drawing-with-metapost/src/geometry-incircle.pdf (renamed from info/drawing-with-metapost/src/incircle.pdf)bin10351 -> 10338 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-intersection-AB-or-BA.mp (renamed from info/drawing-with-metapost/src/intersection-AB-or-BA.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-intersection-AB-or-BA.pdf (renamed from info/drawing-with-metapost/src/intersection-AB-or-BA.pdf)bin15783 -> 15783 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-intersection-algorithm.mp (renamed from info/drawing-with-metapost/src/intersection-algorithm.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-intersection-algorithm.pdf (renamed from info/drawing-with-metapost/src/intersection-algorithm.pdf)bin19329 -> 19329 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-intersection-all-three.mp (renamed from info/drawing-with-metapost/src/intersection-all-three.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-intersection-all-three.pdf (renamed from info/drawing-with-metapost/src/intersection-all-three.pdf)bin9301 -> 9301 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-intersection-only-two.mp (renamed from info/drawing-with-metapost/src/intersection-only-two.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-intersection-only-two.pdf (renamed from info/drawing-with-metapost/src/intersection-only-two.pdf)bin9120 -> 9120 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-magic-square-14.mp (renamed from info/drawing-with-metapost/src/magic-square-14.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-magic-square-14.pdf (renamed from info/drawing-with-metapost/src/magic-square-14.pdf)bin5120 -> 5094 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-mediation-pitfall.mp (renamed from info/drawing-with-metapost/src/mediation-pitfall.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-mediation-pitfall.pdf (renamed from info/drawing-with-metapost/src/mediation-pitfall.pdf)bin41817 -> 41817 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-mediation-sallows.mp (renamed from info/drawing-with-metapost/src/mediation-sallows.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-mediation-sallows.pdf (renamed from info/drawing-with-metapost/src/mediation-sallows.pdf)bin1324 -> 1324 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-mediation-shapes.mp (renamed from info/drawing-with-metapost/src/mediation-shapes.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-mediation-shapes.pdf (renamed from info/drawing-with-metapost/src/mediation-shapes.pdf)bin8377 -> 8377 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-nine-point-circle.mp54
-rw-r--r--info/drawing-with-metapost/src/geometry-nine-point-circle.pdf (renamed from info/drawing-with-metapost/src/nine-point-circle.pdf)bin11834 -> 11773 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-parallel.mp (renamed from info/drawing-with-metapost/src/parallel.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-parallel.pdf (renamed from info/drawing-with-metapost/src/parallel.pdf)bin10745 -> 10745 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-pole-and-polar.mp68
-rw-r--r--info/drawing-with-metapost/src/geometry-pole-and-polar.pdf (renamed from info/drawing-with-metapost/src/pole-and-polar.pdf)bin41868 -> 42139 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-radical-axis.mp53
-rw-r--r--info/drawing-with-metapost/src/geometry-radical-axis.pdf (renamed from info/drawing-with-metapost/src/radical-axis.pdf)bin16742 -> 16698 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-tangent-times-on-circle.mp (renamed from info/drawing-with-metapost/src/tangent-times-on-circle.mp)2
-rw-r--r--info/drawing-with-metapost/src/geometry-tangent-times-on-circle.pdf (renamed from info/drawing-with-metapost/src/tangent-times-on-circle.pdf)bin11419 -> 11384 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-tangent-times.mp12
-rw-r--r--info/drawing-with-metapost/src/geometry-tangents-on-path.mp (renamed from info/drawing-with-metapost/src/tangents-on-path.mp)3
-rw-r--r--info/drawing-with-metapost/src/geometry-tangents-on-path.pdf (renamed from info/drawing-with-metapost/src/tangents-on-path.pdf)bin7945 -> 7881 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-tangents-point-to-circle.mp (renamed from info/drawing-with-metapost/src/tangents-point-to-circle.mp)22
-rw-r--r--info/drawing-with-metapost/src/geometry-tangents-point-to-circle.pdf (renamed from info/drawing-with-metapost/src/tangents-point-to-circle.pdf)bin16944 -> 16917 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-tangents-two-circles-exterior.mp (renamed from info/drawing-with-metapost/src/tangents-two-circles-exterior.mp)15
-rw-r--r--info/drawing-with-metapost/src/geometry-tangents-two-circles-exterior.pdfbin0 -> 10251 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-tangents-two-circles-interior.mp (renamed from info/drawing-with-metapost/src/tangents-two-circles-interior.mp)15
-rw-r--r--info/drawing-with-metapost/src/geometry-tangents-two-circles-interior.pdf (renamed from info/drawing-with-metapost/src/tangents-two-circles-interior.pdf)bin17518 -> 17472 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-triangles-on-circle.mp24
-rw-r--r--info/drawing-with-metapost/src/geometry-triangles-on-circle.pdfbin1241 -> 1562 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-trisection-classical.mp (renamed from info/drawing-with-metapost/src/trisection-classical.mp)0
-rw-r--r--info/drawing-with-metapost/src/geometry-trisection-classical.pdf (renamed from info/drawing-with-metapost/src/trisection-classical.pdf)bin16797 -> 16797 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-trisection-simple.mp20
-rw-r--r--info/drawing-with-metapost/src/geometry-trisection-simple.pdf (renamed from info/drawing-with-metapost/src/trisection-simple.pdf)bin16523 -> 16523 bytes
-rw-r--r--info/drawing-with-metapost/src/geometry-whatever.mp26
-rw-r--r--info/drawing-with-metapost/src/geometry-whatever.pdf (renamed from info/drawing-with-metapost/src/whatever.pdf)bin22750 -> 22946 bytes
-rw-r--r--info/drawing-with-metapost/src/gons.mp28
-rw-r--r--info/drawing-with-metapost/src/graph-paper.mp34
-rw-r--r--info/drawing-with-metapost/src/graph-paper.pdfbin4339 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/greek-default-encoding.mp29
-rw-r--r--info/drawing-with-metapost/src/greek-default-encoding.pdfbin19403 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/icosahedron.pdfbin24682 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/ifs-heigh-open.mp6
-rw-r--r--info/drawing-with-metapost/src/ifs-heigh-open.pdfbin43633 -> 43032 bytes
-rw-r--r--info/drawing-with-metapost/src/ifs-heigh.mp11
-rw-r--r--info/drawing-with-metapost/src/ifs-heigh.pdfbin38166 -> 37603 bytes
-rw-r--r--info/drawing-with-metapost/src/illusions-cafe-wall.mp21
-rw-r--r--info/drawing-with-metapost/src/illusions-cafe-wall.pdfbin0 -> 5218 bytes
-rw-r--r--info/drawing-with-metapost/src/illusions-cubes.mp65
-rw-r--r--info/drawing-with-metapost/src/illusions-cubes.pdfbin0 -> 1926 bytes
-rw-r--r--info/drawing-with-metapost/src/illusions-fraser-spiral.mp26
-rw-r--r--info/drawing-with-metapost/src/illusions-fraser-spiral.pdfbin0 -> 108183 bytes
-rw-r--r--info/drawing-with-metapost/src/illusions-impossible-ring.mp42
-rw-r--r--info/drawing-with-metapost/src/illusions-impossible-ring.pdfbin0 -> 4682 bytes
-rw-r--r--info/drawing-with-metapost/src/illusions-impossible-triangle.mp56
-rw-r--r--info/drawing-with-metapost/src/illusions-impossible-triangle.pdfbin0 -> 1174 bytes
-rw-r--r--info/drawing-with-metapost/src/illusions-pinna.mp25
-rw-r--r--info/drawing-with-metapost/src/illusions-pinna.pdfbin0 -> 6317 bytes
-rw-r--r--info/drawing-with-metapost/src/illusions-shaded-diamonds.mp31
-rw-r--r--info/drawing-with-metapost/src/illusions-shaded-diamonds.pdfbin0 -> 166593 bytes
-rw-r--r--info/drawing-with-metapost/src/illusions-wonky-grid.mp28
-rw-r--r--info/drawing-with-metapost/src/illusions-wonky-grid.pdfbin0 -> 10256 bytes
-rw-r--r--info/drawing-with-metapost/src/incircle.mp38
-rw-r--r--info/drawing-with-metapost/src/line-caps-and-joins.mp56
-rw-r--r--info/drawing-with-metapost/src/line-caps-and-joins.pdfbin22128 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/linear-graph.mp52
-rw-r--r--info/drawing-with-metapost/src/listex.py131
-rw-r--r--info/drawing-with-metapost/src/marked-up-photo-with-grid.pdfbin848242 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/neo-labels-tte.mp34
-rw-r--r--info/drawing-with-metapost/src/neo-labels.mp34
-rw-r--r--info/drawing-with-metapost/src/neo-labels.pdfbin19610 -> 19582 bytes
-rw-r--r--info/drawing-with-metapost/src/neo-marked-up-photo-grid.mp (renamed from info/drawing-with-metapost/src/penrose-P3.mp)8
-rw-r--r--info/drawing-with-metapost/src/neo-marked-up-photo-grid.pdfbin0 -> 1290 bytes
-rw-r--r--info/drawing-with-metapost/src/neo-marked-up-photo.mp (renamed from info/drawing-with-metapost/src/marked-up-photo.mp)17
-rw-r--r--info/drawing-with-metapost/src/neo-marked-up-photo.pdf (renamed from info/drawing-with-metapost/src/marked-up-photo.pdf)bin847912 -> 848046 bytes
-rw-r--r--info/drawing-with-metapost/src/neo-multi-line-labels.mp (renamed from info/drawing-with-metapost/src/multi-line-labels.mp)18
-rw-r--r--info/drawing-with-metapost/src/neo-multi-line-labels.pdf (renamed from info/drawing-with-metapost/src/multi-line-labels.pdf)bin5478 -> 7716 bytes
-rw-r--r--info/drawing-with-metapost/src/neo-reference-grid.mp15
-rw-r--r--info/drawing-with-metapost/src/neo-simple-circle-labels.mp16
-rw-r--r--info/drawing-with-metapost/src/neo-simple-circle-labels.pdfbin0 -> 17317 bytes
-rw-r--r--info/drawing-with-metapost/src/neo-simple-number-line.mp (renamed from info/drawing-with-metapost/src/arch-snub-hexagon.mp)9
-rw-r--r--info/drawing-with-metapost/src/neo-simple-number-line.pdf (renamed from info/drawing-with-metapost/src/simple-number-line.pdf)bin16874 -> 16852 bytes
-rw-r--r--info/drawing-with-metapost/src/neo-unicode.mp (renamed from info/drawing-with-metapost/src/unicode.mp)1
-rw-r--r--info/drawing-with-metapost/src/neo-unicode.pdf (renamed from info/drawing-with-metapost/src/unicode.pdf)bin16360 -> 16360 bytes
-rw-r--r--info/drawing-with-metapost/src/new-fangled-transparency.mp35
-rw-r--r--info/drawing-with-metapost/src/new-fangled-transparency.pdfbin0 -> 7661 bytes
-rw-r--r--info/drawing-with-metapost/src/new-fangled-trilobe.mp46
-rw-r--r--info/drawing-with-metapost/src/new-fangled-trilobe.pdfbin0 -> 18190 bytes
-rw-r--r--info/drawing-with-metapost/src/nine-point-circle.mp54
-rw-r--r--info/drawing-with-metapost/src/numbered-axes.mp27
-rw-r--r--info/drawing-with-metapost/src/overlaps-missing-filler.mp16
-rw-r--r--info/drawing-with-metapost/src/pairs-complex-inverse-and-sqrt.mp47
-rw-r--r--info/drawing-with-metapost/src/pairs-complex-inverse-and-sqrt.pdf (renamed from info/drawing-with-metapost/src/complex-inverse-and-sqrt.pdf)bin15337 -> 12516 bytes
-rw-r--r--info/drawing-with-metapost/src/pairs-complex-operators.mp32
-rw-r--r--info/drawing-with-metapost/src/pairs-complex-operators.pdf (renamed from info/drawing-with-metapost/src/complex-operators.pdf)bin38060 -> 38060 bytes
-rw-r--r--info/drawing-with-metapost/src/pairs-double-dragon.mp44
-rw-r--r--info/drawing-with-metapost/src/pairs-double-dragon.pdfbin0 -> 49701 bytes
-rw-r--r--info/drawing-with-metapost/src/pairs-random-function.mp (renamed from info/drawing-with-metapost/src/random-function.mp)0
-rw-r--r--info/drawing-with-metapost/src/pairs-random-function.pdf (renamed from info/drawing-with-metapost/src/random-function.pdf)bin18184 -> 18184 bytes
-rw-r--r--info/drawing-with-metapost/src/pairs-random-selection.mp (renamed from info/drawing-with-metapost/src/random-selection.mp)0
-rw-r--r--info/drawing-with-metapost/src/pairs-random-selection.pdf (renamed from info/drawing-with-metapost/src/random-selection.pdf)bin107831 -> 107831 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-antireuleaux-set.mp24
-rw-r--r--info/drawing-with-metapost/src/paths-antireuleaux-set.pdfbin0 -> 1584 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-area-under-graph.mp38
-rw-r--r--info/drawing-with-metapost/src/paths-area-under-graph.pdfbin0 -> 2090 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-fixed-polygon.mp (renamed from info/drawing-with-metapost/src/closed-fixed-polygon.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-fixed-polygon.pdf (renamed from info/drawing-with-metapost/src/closed-fixed-polygon.pdf)bin1559 -> 1559 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-little-hexagon.mp (renamed from info/drawing-with-metapost/src/little-hexagon.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-little-hexagon.pdf (renamed from info/drawing-with-metapost/src/little-hexagon.pdf)bin969 -> 969 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-open-triangle.mp (renamed from info/drawing-with-metapost/src/open-triangle.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-open-triangle.pdf (renamed from info/drawing-with-metapost/src/open-triangle.pdf)bin20779 -> 20779 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-overlaps-default-fillers.mp (renamed from info/drawing-with-metapost/src/overlaps-default-fillers.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-overlaps-default-fillers.pdf (renamed from info/drawing-with-metapost/src/overlaps-default-fillers.pdf)bin12410 -> 12410 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-overlaps-missing-filler.mp18
-rw-r--r--info/drawing-with-metapost/src/paths-overlaps-missing-filler.pdf (renamed from info/drawing-with-metapost/src/overlaps-missing-filler.pdf)bin12302 -> 12302 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-overlaps.mp (renamed from info/drawing-with-metapost/src/overlaps.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-overlaps.pdf (renamed from info/drawing-with-metapost/src/overlaps.pdf)bin6426 -> 6426 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-points.mp (renamed from info/drawing-with-metapost/src/closed-points.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-points.pdf (renamed from info/drawing-with-metapost/src/closed-points.pdf)bin7878 -> 7878 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-polygon-chain.mp24
-rw-r--r--info/drawing-with-metapost/src/paths-polygon-chain.pdfbin0 -> 7597 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-polygon-tops.mp (renamed from info/drawing-with-metapost/src/closed-polygon-tops.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-polygon-tops.pdf (renamed from info/drawing-with-metapost/src/closed-polygon-tops.pdf)bin6392 -> 6392 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-polygons.mp (renamed from info/drawing-with-metapost/src/closed-polygons.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-polygons.pdf (renamed from info/drawing-with-metapost/src/closed-polygons.pdf)bin7143 -> 7143 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-reuleaux-geometry.mp (renamed from info/drawing-with-metapost/src/closed-reuleaux-geometry.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-reuleaux-geometry.pdf (renamed from info/drawing-with-metapost/src/closed-reuleaux-geometry.pdf)bin30406 -> 30406 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-reuleaux-set.mp (renamed from info/drawing-with-metapost/src/closed-reuleaux-set.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-reuleaux-set.pdf (renamed from info/drawing-with-metapost/src/closed-reuleaux-set.pdf)bin1727 -> 1727 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-saturn.mp (renamed from info/drawing-with-metapost/src/saturn-code.mp)9
-rw-r--r--info/drawing-with-metapost/src/paths-saturn.pdf (renamed from info/drawing-with-metapost/src/saturn.pdf)bin2163 -> 2163 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-schlafli-polygons.mp28
-rw-r--r--info/drawing-with-metapost/src/paths-schlafli-polygons.pdf (renamed from info/drawing-with-metapost/src/gons.pdf)bin20402 -> 20210 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-standards.mp (renamed from info/drawing-with-metapost/src/closed-standards.mp)4
-rw-r--r--info/drawing-with-metapost/src/paths-standards.pdf (renamed from info/drawing-with-metapost/src/closed-standards.pdf)bin26538 -> 26537 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-superellipses.mp26
-rw-r--r--info/drawing-with-metapost/src/paths-superellipses.pdfbin0 -> 11502 bytes
-rw-r--r--info/drawing-with-metapost/src/paths-triangles.mp (renamed from info/drawing-with-metapost/src/closed-triangles.mp)0
-rw-r--r--info/drawing-with-metapost/src/paths-triangles.pdf (renamed from info/drawing-with-metapost/src/closed-triangles.pdf)bin20334 -> 20334 bytes
-rw-r--r--info/drawing-with-metapost/src/penrose-P3.pdfbin153501 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/penrose-stages.mp39
-rw-r--r--info/drawing-with-metapost/src/penrose-stages.pdfbin1372 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/penrose.mp84
-rw-r--r--info/drawing-with-metapost/src/pens-arrow-styles.mp59
-rw-r--r--info/drawing-with-metapost/src/pens-arrow-styles.pdfbin0 -> 9358 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-besides.mp63
-rw-r--r--info/drawing-with-metapost/src/pens-besides.pdfbin0 -> 2431 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-crossings.mp57
-rw-r--r--info/drawing-with-metapost/src/pens-crossings.pdfbin0 -> 10864 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-curly.mp46
-rw-r--r--info/drawing-with-metapost/src/pens-curly.pdfbin0 -> 5847 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-feynmp-styles.mp34
-rw-r--r--info/drawing-with-metapost/src/pens-feynmp-styles.pdfbin0 -> 17830 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-fleuron.mp17
-rw-r--r--info/drawing-with-metapost/src/pens-fleuron.pdfbin0 -> 3361 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-greek-meander.mp40
-rw-r--r--info/drawing-with-metapost/src/pens-greek-meander.pdfbin0 -> 11772 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-highway.mp15
-rw-r--r--info/drawing-with-metapost/src/pens-highway.pdfbin0 -> 1064 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-line-caps-and-joins.mp57
-rw-r--r--info/drawing-with-metapost/src/pens-line-caps-and-joins.pdfbin0 -> 8950 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-pen-oddity.mp71
-rw-r--r--info/drawing-with-metapost/src/pens-pen-oddity.pdfbin0 -> 38397 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-strokes.mp109
-rw-r--r--info/drawing-with-metapost/src/pens-strokes.pdfbin0 -> 78106 bytes
-rw-r--r--info/drawing-with-metapost/src/pens-tubes.mp32
-rw-r--r--info/drawing-with-metapost/src/pens-tubes.pdfbin0 -> 1830 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-border-common.mp30
-rw-r--r--info/drawing-with-metapost/src/pics-border-dashed.mp23
-rw-r--r--info/drawing-with-metapost/src/pics-border-dashed.pdfbin0 -> 6832 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-border-rope.mp13
-rw-r--r--info/drawing-with-metapost/src/pics-border-rope.pdfbin0 -> 30133 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-border-shadow.mp18
-rw-r--r--info/drawing-with-metapost/src/pics-border-shadow.pdfbin0 -> 6415 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-corners.mp (renamed from info/drawing-with-metapost/src/corners.mp)0
-rw-r--r--info/drawing-with-metapost/src/pics-corners.pdf (renamed from info/drawing-with-metapost/src/corners.pdf)bin6119 -> 6119 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-double-angle.mp (renamed from info/drawing-with-metapost/src/double-angle.mp)0
-rw-r--r--info/drawing-with-metapost/src/pics-double-angle.pdf (renamed from info/drawing-with-metapost/src/double-angle.pdf)bin43701 -> 43701 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-draw-picture.mp74
-rw-r--r--info/drawing-with-metapost/src/pics-draw-picture.pdfbin0 -> 13533 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-fake-transparency.mp (renamed from info/drawing-with-metapost/src/fake-transparency.mp)36
-rw-r--r--info/drawing-with-metapost/src/pics-fake-transparency.pdf (renamed from info/drawing-with-metapost/src/fake-transparency.pdf)bin3271 -> 3236 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-graph-paper-5mm.mp5
-rw-r--r--info/drawing-with-metapost/src/pics-graph-paper-cm.mp5
-rw-r--r--info/drawing-with-metapost/src/pics-graph-paper-example.mp23
-rw-r--r--info/drawing-with-metapost/src/pics-graph-paper-example.pdfbin0 -> 7841 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-graph-paper-inch.mp6
-rw-r--r--info/drawing-with-metapost/src/pics-graph-paper.mp16
-rw-r--r--info/drawing-with-metapost/src/pics-icosahedron.mp (renamed from info/drawing-with-metapost/src/icosahedron.mp)2
-rw-r--r--info/drawing-with-metapost/src/pics-icosahedron.pdfbin0 -> 24124 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-shady-circles.mp29
-rw-r--r--info/drawing-with-metapost/src/pics-shady-circles.pdfbin0 -> 1572 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-twister.mp53
-rw-r--r--info/drawing-with-metapost/src/pics-twister.pdfbin0 -> 40936 bytes
-rw-r--r--info/drawing-with-metapost/src/pics-youth.mp13
-rw-r--r--info/drawing-with-metapost/src/pics-youth.pdfbin0 -> 1545840 bytes
-rw-r--r--info/drawing-with-metapost/src/picture_frame.mp103
-rw-r--r--info/drawing-with-metapost/src/pinwheel.mp36
-rw-r--r--info/drawing-with-metapost/src/pinwheel.pdfbin196384 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/plain-axes.mp17
-rw-r--r--info/drawing-with-metapost/src/pole-and-polar.mp59
-rw-r--r--info/drawing-with-metapost/src/qed.mp42
-rw-r--r--info/drawing-with-metapost/src/qed.pdfbin4190 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/radical-axis.mp72
-rw-r--r--info/drawing-with-metapost/src/random-dice.mp40
-rw-r--r--info/drawing-with-metapost/src/random-dice.pdfbin0 -> 10406 bytes
-rw-r--r--info/drawing-with-metapost/src/random-explosions.mp32
-rw-r--r--info/drawing-with-metapost/src/random-explosions.pdfbin0 -> 5566 bytes
-rw-r--r--info/drawing-with-metapost/src/random-exponential-test.mp89
-rw-r--r--info/drawing-with-metapost/src/random-exponential-test.pdfbin0 -> 125385 bytes
-rw-r--r--info/drawing-with-metapost/src/random-freehand-circumcircle.mp39
-rw-r--r--info/drawing-with-metapost/src/random-freehand-circumcircle.pdfbin4425 -> 4388 bytes
-rw-r--r--info/drawing-with-metapost/src/random-freehand-through.mp47
-rw-r--r--info/drawing-with-metapost/src/random-freehand-through.pdfbin4600 -> 4574 bytes
-rw-r--r--info/drawing-with-metapost/src/random-gaussian.mp (renamed from info/drawing-with-metapost/src/gaussian.mp)0
-rw-r--r--info/drawing-with-metapost/src/random-gaussian.pdf (renamed from info/drawing-with-metapost/src/gaussian.pdf)bin235262 -> 235262 bytes
-rw-r--r--info/drawing-with-metapost/src/random-other-distributions.mp48
-rw-r--r--info/drawing-with-metapost/src/random-qed.mp39
-rw-r--r--info/drawing-with-metapost/src/random-qed.pdfbin0 -> 17494 bytes
-rw-r--r--info/drawing-with-metapost/src/random-shapes.mp25
-rw-r--r--info/drawing-with-metapost/src/random-shapes.pdfbin12249 -> 12085 bytes
-rw-r--r--info/drawing-with-metapost/src/random-torn-edge-circle.mp18
-rw-r--r--info/drawing-with-metapost/src/random-torn-edge-circle.pdfbin0 -> 7501 bytes
-rw-r--r--info/drawing-with-metapost/src/random-torn-edge.mp8
-rw-r--r--info/drawing-with-metapost/src/random-torn-straight-edge.mp14
-rw-r--r--info/drawing-with-metapost/src/random-torn-straight-edge.pdfbin0 -> 2879 bytes
-rw-r--r--info/drawing-with-metapost/src/random-two-dimensional-brownian.mp22
-rw-r--r--info/drawing-with-metapost/src/random-two-dimensional-brownian.pdfbin0 -> 245023 bytes
-rw-r--r--info/drawing-with-metapost/src/random-walks-normal-bridge.mp25
-rw-r--r--info/drawing-with-metapost/src/random-walks-normal-bridge.pdfbin0 -> 10877 bytes
-rw-r--r--info/drawing-with-metapost/src/random-walks-normal.mp27
-rw-r--r--info/drawing-with-metapost/src/random-walks-normal.pdfbin0 -> 27004 bytes
-rw-r--r--info/drawing-with-metapost/src/random-walks-red-blue.mp58
-rw-r--r--info/drawing-with-metapost/src/random-walks-red-blue.pdfbin26260 -> 15929 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-bush.mp24
-rw-r--r--info/drawing-with-metapost/src/rec-bush.pdfbin74542 -> 76035 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-dragon-golden.mp11
-rw-r--r--info/drawing-with-metapost/src/rec-dragon-golden.pdfbin478812 -> 200471 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-dragon.mp40
-rw-r--r--info/drawing-with-metapost/src/rec-dragon.pdfbin192887 -> 190925 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-flowsnake-construction.mp63
-rw-r--r--info/drawing-with-metapost/src/rec-flowsnake-construction.pdfbin16634 -> 16594 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-flowsnake.mp39
-rw-r--r--info/drawing-with-metapost/src/rec-flowsnake.pdfbin27153 -> 26514 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-gcd-comparison.mp34
-rw-r--r--info/drawing-with-metapost/src/rec-general-tree-deviate.mp41
-rw-r--r--info/drawing-with-metapost/src/rec-general-tree-deviate.pdfbin58852 -> 48777 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-general-tree.mp14
-rw-r--r--info/drawing-with-metapost/src/rec-general-tree.pdfbin498779 -> 120813 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-h-tree.mp28
-rw-r--r--info/drawing-with-metapost/src/rec-h-tree.pdfbin5207 -> 93281 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-koch-steps.mp38
-rw-r--r--info/drawing-with-metapost/src/rec-koch-steps.pdfbin21651 -> 24001 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-sierpinski-garlands.mp36
-rw-r--r--info/drawing-with-metapost/src/rec-sierpinski-garlands.pdfbin0 -> 114606 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-sierpinski-pentagon.mp33
-rw-r--r--info/drawing-with-metapost/src/rec-sierpinski-pentagon.pdfbin113584 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-sierpinski-triangle.mp22
-rw-r--r--info/drawing-with-metapost/src/rec-sierpinski-triangle.pdfbin4367 -> 4181 bytes
-rw-r--r--info/drawing-with-metapost/src/rec-simple-tree.mp18
-rw-r--r--info/drawing-with-metapost/src/rec-simple-tree.pdfbin45218 -> 43692 bytes
-rw-r--r--info/drawing-with-metapost/src/rope.mp37
-rw-r--r--info/drawing-with-metapost/src/ruler-cm.mp5
-rw-r--r--info/drawing-with-metapost/src/ruler-inch.mp7
-rw-r--r--info/drawing-with-metapost/src/ruler-pt.mp6
-rw-r--r--info/drawing-with-metapost/src/ruler.mp30
-rw-r--r--info/drawing-with-metapost/src/saturn.mp10
-rw-r--r--info/drawing-with-metapost/src/shadows.mp37
-rw-r--r--info/drawing-with-metapost/src/shadows.pdfbin170504 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/shady-circles.mp24
-rw-r--r--info/drawing-with-metapost/src/shady-circles.pdfbin1705 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/show_name.mp1
-rw-r--r--info/drawing-with-metapost/src/simple-circle-labels.mp15
-rw-r--r--info/drawing-with-metapost/src/simple-circle-labels.pdfbin17558 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/simple-number-line.mp14
-rw-r--r--info/drawing-with-metapost/src/tangent-times.mp11
-rw-r--r--info/drawing-with-metapost/src/tangents-two-circles-exterior.pdfbin17454 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/tikzcd-example.mp58
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann-bounded.mp20
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann-bounded.pdfbin0 -> 46699 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann-procedures.mp81
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann-substitutions-bounded.mp65
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann-substitutions-bounded.pdfbin0 -> 9697 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann-substitutions-overlapping.mp59
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann-substitutions-overlapping.pdfbin0 -> 9684 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann.mp20
-rw-r--r--info/drawing-with-metapost/src/tiling-ammann.pdfbin0 -> 153265 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-3-4-3-4.mp51
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-3-4-3-4.pdfbin0 -> 17144 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-3-4-6-4.mp50
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-3-4-6-4.pdfbin0 -> 15556 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-4-6-12.mp63
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-4-6-12.pdfbin0 -> 71508 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-4-8-8-parts.mp (renamed from info/drawing-with-metapost/src/arch-4-8-8-parts.mp)0
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-4-8-8-parts.pdf (renamed from info/drawing-with-metapost/src/arch-4-8-8-parts.pdf)bin6312 -> 6312 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-4-8-8.mp33
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-4-8-8.pdfbin0 -> 21574 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-hexagon.mp47
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-hexagon.pdfbin0 -> 18503 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-hst.mp54
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-hst.pdfbin0 -> 18493 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-snub-hex-parts.mp48
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-snub-hexagon-unit.mp (renamed from info/drawing-with-metapost/src/projections.mp)4
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-snub-hexagon-unit.pdfbin0 -> 2158 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-snub-hexagon.mp14
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-snub-hexagon.pdfbin0 -> 101866 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-snub-square.mp (renamed from info/drawing-with-metapost/src/arch-snub-square.mp)18
-rw-r--r--info/drawing-with-metapost/src/tiling-arch-snub-square.pdfbin0 -> 28910 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-archimedes.mp (renamed from info/drawing-with-metapost/src/archimedes.mp)86
-rw-r--r--info/drawing-with-metapost/src/tiling-archimedes.pdfbin0 -> 59352 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-conway.mp (renamed from info/drawing-with-metapost/src/conway.mp)13
-rw-r--r--info/drawing-with-metapost/src/tiling-conway.pdf (renamed from info/drawing-with-metapost/src/conway.pdf)bin9765 -> 9827 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-hex-trig.mp80
-rw-r--r--info/drawing-with-metapost/src/tiling-hex-trig.pdfbin118698 -> 117847 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-kepler-k.mp8
-rw-r--r--info/drawing-with-metapost/src/tiling-kepler-k.pdfbin35075 -> 33597 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-kepler-y.mp50
-rw-r--r--info/drawing-with-metapost/src/tiling-kepler-y.pdfbin0 -> 74142 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart-construction.mp96
-rw-r--r--info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart-construction.pdfbin0 -> 11784 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart.mp49
-rw-r--r--info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart.pdfbin0 -> 126947 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs-construction.mp98
-rw-r--r--info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs-construction.pdfbin0 -> 18880 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs.mp49
-rw-r--r--info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs.pdfbin0 -> 87565 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-pinwheel-macro.mp15
-rw-r--r--info/drawing-with-metapost/src/tiling-pp48a.mp29
-rw-r--r--info/drawing-with-metapost/src/tiling-pp48a.pdfbin0 -> 25182 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-simple.mp37
-rw-r--r--info/drawing-with-metapost/src/tiling-simple.pdfbin3952 -> 3811 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-subs-pinwheel.mp16
-rw-r--r--info/drawing-with-metapost/src/tiling-subs-pinwheel.pdfbin0 -> 141941 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling-subs-triangle.mp82
-rw-r--r--info/drawing-with-metapost/src/tiling-subs-triangle.pdfbin0 -> 21068 bytes
-rw-r--r--info/drawing-with-metapost/src/tiling.mp56
-rw-r--r--info/drawing-with-metapost/src/tiling.pdfbin72306 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/torn-edge-circle.mp18
-rw-r--r--info/drawing-with-metapost/src/torn-edge-circle.pdfbin7621 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/torn-edge-straight.mp14
-rw-r--r--info/drawing-with-metapost/src/torn-edge-straight.pdfbin3042 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/torn-edge.mp7
-rw-r--r--info/drawing-with-metapost/src/trad-braces.mp37
-rw-r--r--info/drawing-with-metapost/src/trad-braces.pdf (renamed from info/drawing-with-metapost/src/braces.pdf)bin17729 -> 17711 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-callout.mp (renamed from info/drawing-with-metapost/src/callout.mp)15
-rw-r--r--info/drawing-with-metapost/src/trad-callout.pdf (renamed from info/drawing-with-metapost/src/callout.pdf)bin10353 -> 10331 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-dynamic-labels.mp (renamed from info/drawing-with-metapost/src/dynamic-labels.mp)0
-rw-r--r--info/drawing-with-metapost/src/trad-dynamic-labels.pdf (renamed from info/drawing-with-metapost/src/dynamic-labels.pdf)bin17711 -> 17711 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-euler-sampler.mp (renamed from info/drawing-with-metapost/src/euler-sampler.mp)0
-rw-r--r--info/drawing-with-metapost/src/trad-euler-sampler.pdf (renamed from info/drawing-with-metapost/src/euler-sampler.pdf)bin31262 -> 31262 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-greek-default-encoding.mp20
-rw-r--r--info/drawing-with-metapost/src/trad-greek-default-encoding.pdfbin0 -> 30298 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-greek-gfs-encoding.mp (renamed from info/drawing-with-metapost/src/greek-gfs-encoding.mp)6
-rw-r--r--info/drawing-with-metapost/src/trad-greek-gfs-encoding.pdf (renamed from info/drawing-with-metapost/src/greek-gfs-encoding.pdf)bin59925 -> 73839 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-greek-homer.mp (renamed from info/drawing-with-metapost/src/greek-homer.mp)0
-rw-r--r--info/drawing-with-metapost/src/trad-greek-homer.pdf (renamed from info/drawing-with-metapost/src/greek-homer.pdf)bin12348 -> 12348 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-infont-annotated.mp (renamed from info/drawing-with-metapost/src/infont-annotated.mp)0
-rw-r--r--info/drawing-with-metapost/src/trad-infont-annotated.pdf (renamed from info/drawing-with-metapost/src/infont-annotated.pdf)bin21407 -> 21359 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-infont-example.mp (renamed from info/drawing-with-metapost/src/infont-example.mp)0
-rw-r--r--info/drawing-with-metapost/src/trad-infont-example.pdf (renamed from info/drawing-with-metapost/src/infont-example.pdf)bin8622 -> 8622 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-minus.mp (renamed from info/drawing-with-metapost/src/minus.mp)2
-rw-r--r--info/drawing-with-metapost/src/trad-minus.pdf (renamed from info/drawing-with-metapost/src/minus.pdf)bin40019 -> 40019 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-porson.mp (renamed from info/drawing-with-metapost/src/porson.mp)0
-rw-r--r--info/drawing-with-metapost/src/trad-porson.pdf (renamed from info/drawing-with-metapost/src/porson.pdf)bin69200 -> 69200 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-split-labels.mp (renamed from info/drawing-with-metapost/src/split-labels.mp)3
-rw-r--r--info/drawing-with-metapost/src/trad-split-labels.pdf (renamed from info/drawing-with-metapost/src/split-labels.pdf)bin5904 -> 5876 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-utf8.mp (renamed from info/drawing-with-metapost/src/utf8.mp)13
-rw-r--r--info/drawing-with-metapost/src/trad-utf8.pdfbin0 -> 20257 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-verbatim-listing.mp (renamed from info/drawing-with-metapost/src/verbatim-listing.mp)20
-rw-r--r--info/drawing-with-metapost/src/trad-verbatim-listing.pdfbin0 -> 7762 bytes
-rw-r--r--info/drawing-with-metapost/src/trad-verbatim-with-infont.mp18
-rw-r--r--info/drawing-with-metapost/src/trad-verbatim-with-infont.pdfbin0 -> 72668 bytes
-rw-r--r--info/drawing-with-metapost/src/trigonometry-functions.mp49
-rw-r--r--info/drawing-with-metapost/src/trisection-simple.mp22
-rw-r--r--info/drawing-with-metapost/src/tufte-budget.mp85
-rw-r--r--info/drawing-with-metapost/src/tufte-budget.pdfbin7068 -> 6977 bytes
-rw-r--r--info/drawing-with-metapost/src/tufte-currency.mp113
-rw-r--r--info/drawing-with-metapost/src/tufte-currency.pdfbin12230 -> 19167 bytes
-rw-r--r--info/drawing-with-metapost/src/tufte-manila-paper.mp3
-rw-r--r--info/drawing-with-metapost/src/tufte-mpg.mp63
-rw-r--r--info/drawing-with-metapost/src/tufte-mpg.pdfbin8684 -> 8625 bytes
-rw-r--r--info/drawing-with-metapost/src/tufte-snow.mp67
-rw-r--r--info/drawing-with-metapost/src/tufte-snow.pdfbin0 -> 10845 bytes
-rw-r--r--info/drawing-with-metapost/src/tufte-srm-damage.mp115
-rw-r--r--info/drawing-with-metapost/src/tufte-srm-damage.pdfbin0 -> 10768 bytes
-rw-r--r--info/drawing-with-metapost/src/twister.mp31
-rw-r--r--info/drawing-with-metapost/src/twister.pdfbin28048 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/utf8.pdfbin10725 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/verbatim-listing.pdfbin10225 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/verbatim-with-infont.mp13
-rw-r--r--info/drawing-with-metapost/src/verbatim-with-infont.pdfbin15438 -> 0 bytes
-rw-r--r--info/drawing-with-metapost/src/whatever.mp48
-rw-r--r--info/drawing-with-metapost/src/workflow-plain.mp12
-rw-r--r--info/drawing-with-metapost/src/workflow-plain.pdfbin9546 -> 9455 bytes
-rw-r--r--info/drawing-with-metapost/src/xypic-example.mp53
-rw-r--r--info/drawing-with-metapost/src/youth.mp12
-rw-r--r--info/drawing-with-metapost/src/youth.pdfbin1551980 -> 0 bytes
-rw-r--r--info/dtk-bibliography/README.md4
-rw-r--r--info/dtk-bibliography/dtk-bibliography.bib226
-rw-r--r--info/dtk-bibliography/dtk-bibliography.pdfbin287336 -> 289553 bytes
-rw-r--r--info/dtk-bibliography/dtk-bibliography.tex2
-rw-r--r--info/install-latex-guide-zh-cn/README.md4
-rw-r--r--info/install-latex-guide-zh-cn/appendix/updateinfo.tex3
-rw-r--r--info/install-latex-guide-zh-cn/chapter/overleaf.tex4
-rw-r--r--info/install-latex-guide-zh-cn/chapter/preface.tex2
-rw-r--r--info/install-latex-guide-zh-cn/chapter/ubuntu.tex4
-rw-r--r--info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdfbin829826 -> 829916 bytes
-rw-r--r--info/knuth-hint/README.md6
-rw-r--r--info/knuth-hint/bibtex/bibtex-changes.hntbin620020 -> 650920 bytes
-rw-r--r--info/knuth-hint/bibtex/bibtex.hntbin745144 -> 745156 bytes
-rw-r--r--info/knuth-hint/ctie/ctie-changes.hntbin444867 -> 475238 bytes
-rw-r--r--info/knuth-hint/ctie/ctie.hntbin453833 -> 453836 bytes
-rw-r--r--info/knuth-hint/cweb/common-changes.hntbin476784 -> 507140 bytes
-rw-r--r--info/knuth-hint/cweb/common.hntbin549042 -> 549045 bytes
-rw-r--r--info/knuth-hint/cweb/ctangle-changes.hntbin470989 -> 501348 bytes
-rw-r--r--info/knuth-hint/cweb/ctangle.hntbin487785 -> 487788 bytes
-rw-r--r--info/knuth-hint/cweb/ctwill.hntbin828110 -> 828080 bytes
-rw-r--r--info/knuth-hint/cweb/cweave-changes.hntbin568458 -> 598996 bytes
-rw-r--r--info/knuth-hint/cweb/cweave.hntbin712514 -> 712517 bytes
-rw-r--r--info/knuth-hint/cweb/cwebman.hntbin731032 -> 731284 bytes
-rw-r--r--info/knuth-hint/cweb/refsort-changes.hntbin383053 -> 413131 bytes
-rw-r--r--info/knuth-hint/cweb/refsort.hntbin418765 -> 418770 bytes
-rw-r--r--info/knuth-hint/cweb/twinx-changes.hntbin393438 -> 423493 bytes
-rw-r--r--info/knuth-hint/cweb/twinx.hntbin394206 -> 394204 bytes
-rw-r--r--info/knuth-hint/errata/errata.eight.hntbin806105 -> 806109 bytes
-rw-r--r--info/knuth-hint/errata/errata.eleven.hntbin824007 -> 824009 bytes
-rw-r--r--info/knuth-hint/errata/errata.five.hntbin789103 -> 789108 bytes
-rw-r--r--info/knuth-hint/errata/errata.four.hntbin948479 -> 948482 bytes
-rw-r--r--info/knuth-hint/errata/errata.hntbin904965 -> 904968 bytes
-rw-r--r--info/knuth-hint/errata/errata.nine.hntbin407766 -> 407770 bytes
-rw-r--r--info/knuth-hint/errata/errata.one.hntbin733431 -> 733434 bytes
-rw-r--r--info/knuth-hint/errata/errata.seven.hntbin741534 -> 741537 bytes
-rw-r--r--info/knuth-hint/errata/errata.six.hntbin909786 -> 909790 bytes
-rw-r--r--info/knuth-hint/errata/errata.ten.hntbin1057095 -> 1057100 bytes
-rw-r--r--info/knuth-hint/errata/errata.three.hntbin1158523 -> 1158528 bytes
-rw-r--r--info/knuth-hint/errata/errata.twelve.hntbin1107166 -> 1107170 bytes
-rw-r--r--info/knuth-hint/errata/errata.two.hntbin728926 -> 728931 bytes
-rw-r--r--info/knuth-hint/errata/errorlog.hntbin601777 -> 601778 bytes
-rw-r--r--info/knuth-hint/etc/vftovp-changes.hntbin402211 -> 432681 bytes
-rw-r--r--info/knuth-hint/etc/vftovp.hntbin519878 -> 519883 bytes
-rw-r--r--info/knuth-hint/etc/vptovf-changes.hntbin391090 -> 421471 bytes
-rw-r--r--info/knuth-hint/etc/vptovf.hntbin588023 -> 588033 bytes
-rw-r--r--info/knuth-hint/hitex/hitex.hntbin2128059 -> 2128057 bytes
-rw-r--r--info/knuth-hint/index.html36
-rw-r--r--info/knuth-hint/index.pdfbin151802 -> 219819 bytes
-rw-r--r--info/knuth-hint/mf/mf-changes.hntbin817883 -> 848680 bytes
-rw-r--r--info/knuth-hint/mf/mf.hntbin1568599 -> 1568604 bytes
-rw-r--r--info/knuth-hint/mf/trapman.hntbin466175 -> 466177 bytes
-rw-r--r--info/knuth-hint/mfware/gftodvi-changes.hntbin510409 -> 540919 bytes
-rw-r--r--info/knuth-hint/mfware/gftodvi.hntbin696325 -> 696334 bytes
-rw-r--r--info/knuth-hint/mfware/gftopk-changes.hntbin411326 -> 441699 bytes
-rw-r--r--info/knuth-hint/mfware/gftopk.hntbin492258 -> 492262 bytes
-rw-r--r--info/knuth-hint/mfware/gftype-changes.hntbin406825 -> 437232 bytes
-rw-r--r--info/knuth-hint/mfware/gftype.hntbin503518 -> 503522 bytes
-rw-r--r--info/knuth-hint/mfware/mft-changes.hntbin444596 -> 502125 bytes
-rw-r--r--info/knuth-hint/mfware/mft.hntbin523645 -> 523649 bytes
-rw-r--r--info/knuth-hint/mp/mp.hntbin1818565 -> 1818564 bytes
-rw-r--r--info/knuth-hint/mp/mpost.hntbin497733 -> 497741 bytes
-rw-r--r--info/knuth-hint/other/dvicopy-changes.hntbin480015 -> 510576 bytes
-rw-r--r--info/knuth-hint/other/dvicopy.hntbin703121 -> 703131 bytes
-rw-r--r--info/knuth-hint/other/patgen-changes.hntbin346856 -> 377108 bytes
-rw-r--r--info/knuth-hint/other/patgen.hntbin502625 -> 502631 bytes
-rw-r--r--info/knuth-hint/other/pktogf-changes.hntbin376122 -> 406520 bytes
-rw-r--r--info/knuth-hint/other/pktogf.hntbin451060 -> 451060 bytes
-rw-r--r--info/knuth-hint/other/pktype-changes.hntbin368455 -> 398816 bytes
-rw-r--r--info/knuth-hint/other/pktype.hntbin397404 -> 397405 bytes
-rw-r--r--info/knuth-hint/pdftex/pdftex-changes.hntbin1286651 -> 1320442 bytes
-rw-r--r--info/knuth-hint/pdftex/pdftex.hntbin2182740 -> 2183435 bytes
-rw-r--r--info/knuth-hint/tex/glue.hntbin437653 -> 437662 bytes
-rw-r--r--info/knuth-hint/tex/tex-changes.hntbin1029743 -> 1061983 bytes
-rw-r--r--info/knuth-hint/tex/tex.hntbin1625074 -> 1625073 bytes
-rw-r--r--info/knuth-hint/tex/tripman.hntbin450713 -> 450717 bytes
-rw-r--r--info/knuth-hint/texware/dvitype-changes.hntbin429279 -> 459810 bytes
-rw-r--r--info/knuth-hint/texware/dvitype.hntbin590266 -> 590270 bytes
-rw-r--r--info/knuth-hint/texware/pltotf-changes.hntbin386777 -> 417163 bytes
-rw-r--r--info/knuth-hint/texware/pltotf.hntbin561616 -> 561623 bytes
-rw-r--r--info/knuth-hint/texware/pooltype-changes.hntbin400727 -> 430904 bytes
-rw-r--r--info/knuth-hint/texware/pooltype.hntbin403340 -> 403340 bytes
-rw-r--r--info/knuth-hint/texware/tftopl-changes.hntbin385411 -> 415810 bytes
-rw-r--r--info/knuth-hint/texware/tftopl.hntbin487806 -> 487811 bytes
-rw-r--r--info/knuth-hint/tie/tie-changes.hntbin444032 -> 474265 bytes
-rw-r--r--info/knuth-hint/tie/tie.hntbin522888 -> 522888 bytes
-rw-r--r--info/knuth-hint/web/tangle-changes.hntbin453283 -> 483758 bytes
-rw-r--r--info/knuth-hint/web/tangle.hntbin591493 -> 591499 bytes
-rw-r--r--info/knuth-hint/web/twill.hntbin675856 -> 709431 bytes
-rw-r--r--info/knuth-hint/web/weave-changes.hntbin488689 -> 519088 bytes
-rw-r--r--info/knuth-hint/web/weave.hntbin654030 -> 654043 bytes
-rw-r--r--info/knuth-hint/web/webman.hntbin585159 -> 585589 bytes
-rw-r--r--info/knuth-hint/xetex/xetex-changes.pdfbin2344346 -> 2356516 bytes
-rw-r--r--info/knuth-hint/xetex/xetex.pdfbin4251718 -> 4251884 bytes
-rw-r--r--info/knuth-pdf/README.md2
-rw-r--r--info/knuth-pdf/bibtex/bibtex-changes.pdfbin629416 -> 629366 bytes
-rw-r--r--info/knuth-pdf/bibtex/bibtex.pdfbin1327941 -> 1327857 bytes
-rw-r--r--info/knuth-pdf/ctie/ctie-changes.pdfbin145326 -> 145252 bytes
-rw-r--r--info/knuth-pdf/ctie/ctie.pdfbin283980 -> 283853 bytes
-rw-r--r--info/knuth-pdf/cweb/common-changes.pdfbin231562 -> 231550 bytes
-rw-r--r--info/knuth-pdf/cweb/common.pdfbin364470 -> 364355 bytes
-rw-r--r--info/knuth-pdf/cweb/ctangle-changes.pdfbin225044 -> 224964 bytes
-rw-r--r--info/knuth-pdf/cweb/ctangle.pdfbin381756 -> 381615 bytes
-rw-r--r--info/knuth-pdf/cweb/ctwill.pdfbin1147761 -> 1147677 bytes
-rw-r--r--info/knuth-pdf/cweb/cweave-changes.pdfbin417800 -> 417717 bytes
-rw-r--r--info/knuth-pdf/cweb/cweave.pdfbin838763 -> 838509 bytes
-rw-r--r--info/knuth-pdf/cweb/cwebman.pdfbin357792 -> 365896 bytes
-rw-r--r--info/knuth-pdf/cweb/refsort-changes.pdfbin52986 -> 52905 bytes
-rw-r--r--info/knuth-pdf/cweb/refsort.pdfbin162976 -> 162724 bytes
-rw-r--r--info/knuth-pdf/cweb/twinx-changes.pdfbin86829 -> 86727 bytes
-rw-r--r--info/knuth-pdf/cweb/twinx.pdfbin194209 -> 194074 bytes
-rw-r--r--info/knuth-pdf/errata/errata.eight.pdfbin275286 -> 275286 bytes
-rw-r--r--info/knuth-pdf/errata/errata.eleven.pdfbin250940 -> 250940 bytes
-rw-r--r--info/knuth-pdf/errata/errata.five.pdfbin306863 -> 306863 bytes
-rw-r--r--info/knuth-pdf/errata/errata.four.pdfbin334571 -> 334571 bytes
-rw-r--r--info/knuth-pdf/errata/errata.nine.pdfbin156353 -> 156353 bytes
-rw-r--r--info/knuth-pdf/errata/errata.one.pdfbin270067 -> 270067 bytes
-rw-r--r--info/knuth-pdf/errata/errata.pdfbin368795 -> 368747 bytes
-rw-r--r--info/knuth-pdf/errata/errata.seven.pdfbin267573 -> 267573 bytes
-rw-r--r--info/knuth-pdf/errata/errata.six.pdfbin303640 -> 303640 bytes
-rw-r--r--info/knuth-pdf/errata/errata.ten.pdfbin378717 -> 378717 bytes
-rw-r--r--info/knuth-pdf/errata/errata.three.pdfbin443746 -> 443746 bytes
-rw-r--r--info/knuth-pdf/errata/errata.twelve.pdfbin413920 -> 413862 bytes
-rw-r--r--info/knuth-pdf/errata/errata.two.pdfbin247190 -> 247190 bytes
-rw-r--r--info/knuth-pdf/errata/errorlog.pdfbin404270 -> 404270 bytes
-rw-r--r--info/knuth-pdf/etc/vftovp-changes.pdfbin216902 -> 216848 bytes
-rw-r--r--info/knuth-pdf/etc/vftovp.pdfbin461387 -> 461221 bytes
-rw-r--r--info/knuth-pdf/etc/vptovf-changes.pdfbin202774 -> 202680 bytes
-rw-r--r--info/knuth-pdf/etc/vptovf.pdfbin556019 -> 555804 bytes
-rw-r--r--info/knuth-pdf/hitex/hitex.pdfbin4392280 -> 4391869 bytes
-rw-r--r--info/knuth-pdf/index.html31
-rw-r--r--info/knuth-pdf/index.pdfbin151266 -> 219474 bytes
-rw-r--r--info/knuth-pdf/mf/mf-changes.pdfbin1216755 -> 1218699 bytes
-rw-r--r--info/knuth-pdf/mf/mf.pdfbin3231757 -> 3231039 bytes
-rw-r--r--info/knuth-pdf/mf/trapman.pdfbin266243 -> 266243 bytes
-rw-r--r--info/knuth-pdf/mfware/gftodvi-changes.pdfbin280945 -> 280788 bytes
-rw-r--r--info/knuth-pdf/mfware/gftodvi.pdfbin705180 -> 705007 bytes
-rw-r--r--info/knuth-pdf/mfware/gftopk-changes.pdfbin148214 -> 148184 bytes
-rw-r--r--info/knuth-pdf/mfware/gftopk.pdfbin370755 -> 370602 bytes
-rw-r--r--info/knuth-pdf/mfware/gftype-changes.pdfbin137496 -> 137441 bytes
-rw-r--r--info/knuth-pdf/mfware/gftype.pdfbin327409 -> 327508 bytes
-rw-r--r--info/knuth-pdf/mfware/mft-changes.pdfbin206765 -> 208171 bytes
-rw-r--r--info/knuth-pdf/mfware/mft.pdfbin389351 -> 389219 bytes
-rw-r--r--info/knuth-pdf/mp/mp.pdfbin4179204 -> 4180651 bytes
-rw-r--r--info/knuth-pdf/mp/mpost.pdfbin300726 -> 300582 bytes
-rw-r--r--info/knuth-pdf/other/dvicopy-changes.pdfbin318016 -> 317947 bytes
-rw-r--r--info/knuth-pdf/other/dvicopy.pdfbin789955 -> 789908 bytes
-rw-r--r--info/knuth-pdf/other/patgen-changes.pdfbin158662 -> 158583 bytes
-rw-r--r--info/knuth-pdf/other/patgen.pdfbin402456 -> 402321 bytes
-rw-r--r--info/knuth-pdf/other/pktogf-changes.pdfbin124016 -> 123929 bytes
-rw-r--r--info/knuth-pdf/other/pktogf.pdfbin318062 -> 317924 bytes
-rw-r--r--info/knuth-pdf/other/pktype-changes.pdfbin96842 -> 96771 bytes
-rw-r--r--info/knuth-pdf/other/pktype.pdfbin259019 -> 259109 bytes
-rw-r--r--info/knuth-pdf/pdftex/pdftex-changes.pdfbin2723866 -> 2726702 bytes
-rw-r--r--info/knuth-pdf/pdftex/pdftex.pdfbin5402637 -> 5404281 bytes
-rw-r--r--info/knuth-pdf/tex/glue.pdfbin198043 -> 197900 bytes
-rw-r--r--info/knuth-pdf/tex/tex-changes.pdfbin1869694 -> 1869636 bytes
-rw-r--r--info/knuth-pdf/tex/tex.pdfbin3614612 -> 3613764 bytes
-rw-r--r--info/knuth-pdf/tex/tripman.pdfbin325778 -> 325778 bytes
-rw-r--r--info/knuth-pdf/texware/dvitype-changes.pdfbin194586 -> 194452 bytes
-rw-r--r--info/knuth-pdf/texware/dvitype.pdfbin469704 -> 469821 bytes
-rw-r--r--info/knuth-pdf/texware/pltotf-changes.pdfbin179394 -> 179301 bytes
-rw-r--r--info/knuth-pdf/texware/pltotf.pdfbin474185 -> 474004 bytes
-rw-r--r--info/knuth-pdf/texware/pooltype-changes.pdfbin78866 -> 78771 bytes
-rw-r--r--info/knuth-pdf/texware/pooltype.pdfbin191709 -> 191809 bytes
-rw-r--r--info/knuth-pdf/texware/tftopl-changes.pdfbin160857 -> 160777 bytes
-rw-r--r--info/knuth-pdf/texware/tftopl.pdfbin360811 -> 360708 bytes
-rw-r--r--info/knuth-pdf/tie/tie-changes.pdfbin130255 -> 130163 bytes
-rw-r--r--info/knuth-pdf/tie/tie.pdfbin311712 -> 311577 bytes
-rw-r--r--info/knuth-pdf/web/tangle-changes.pdfbin262160 -> 262082 bytes
-rw-r--r--info/knuth-pdf/web/tangle.pdfbin580773 -> 580597 bytes
-rw-r--r--info/knuth-pdf/web/twill.pdfbin839862 -> 862529 bytes
-rw-r--r--info/knuth-pdf/web/weave-changes.pdfbin289149 -> 289087 bytes
-rw-r--r--info/knuth-pdf/web/weave.pdfbin765097 -> 764839 bytes
-rw-r--r--info/knuth-pdf/web/webman.pdfbin316276 -> 325263 bytes
-rw-r--r--info/knuth-pdf/xetex/xetex-changes.pdfbin2353558 -> 2353714 bytes
-rw-r--r--info/knuth-pdf/xetex/xetex.pdfbin4248217 -> 4248275 bytes
-rw-r--r--info/latex-doc-ptr/README14
-rw-r--r--info/latex-doc-ptr/latex-doc-ptr.css.replacement148
-rw-r--r--info/latex-doc-ptr/latex-doc-ptr.html927
-rw-r--r--info/latex-doc-ptr/latex-doc-ptr.pdfbin169323 -> 179459 bytes
-rw-r--r--info/latex-doc-ptr/latex-doc-ptr.tex13
-rw-r--r--info/russian/basiclatex-ru/BasicLatex.pdfbin3133138 -> 0 bytes
-rw-r--r--info/russian/basiclatex-ru/BasicLatex_v2.1.pdfbin0 -> 4191082 bytes
-rw-r--r--info/russian/basiclatex-ru/README22
-rw-r--r--info/russian/basiclatex-ru/README.ru24
-rw-r--r--info/tex-vpat/README.md4
-rw-r--r--info/tex-vpat/texlive-vpat.css6
-rw-r--r--info/tex-vpat/texlive-vpat.html835
-rw-r--r--info/tex-vpat/texlive-vpat.pdfbin338388 -> 352254 bytes
-rw-r--r--info/tex-vpat/texlive-vpat.tex26
-rw-r--r--info/tex-vpat/texlive-vpat2.html4
-rw-r--r--info/tex-vpat/texlive-vpat3.html4
-rw-r--r--info/tex-vpat/texlive-vpat4.html4
-rw-r--r--info/tex-vpat/texlive-vpat5.html4
-rw-r--r--info/tex-vpat/texlive-vpat6.html4
-rw-r--r--info/tex-vpat/texlive-vpat7.html4
-rw-r--r--info/tex-vpat/texlive-vpat8.html4
-rw-r--r--info/tex-vpat/texlive-vpat9.html4
815 files changed, 9483 insertions, 18479 deletions
diff --git a/info/asy-overview/asy/jh.asy b/info/asy-overview/asy/jh.asy
index a6bd31400f..94bc1fa560 100644
--- a/info/asy-overview/asy/jh.asy
+++ b/info/asy-overview/asy/jh.asy
@@ -1,15 +1,12 @@
// Common definitions for asy_tut
-// Function to call the texpreamble() function
-void define_texpreamble() {
- texpreamble("\usepackage{mathtools}
- \usepackage[utf8]{inputenc}
- \usepackage[osf,scaled=.92,loosest]{heuristica}
- \usepackage[heuristica,vvarbb,bigdelims]{newtxmath}
- \usepackage[T1]{fontenc}
- \renewcommand*\oldstylenums[1]{\textosf{#1}}");
-}
-
+// Set up LaTeX for each label
+texpreamble("\usepackage{mathtools}
+ \usepackage[utf8]{inputenc}
+ \usepackage[osf,scaled=.92,loosest]{heuristica}
+ \usepackage[heuristica,vvarbb,bigdelims]{newtxmath}
+ \usepackage[T1]{fontenc}
+ \renewcommand*\oldstylenums[1]{\textosf{#1}}");
// Change default size of fonts
import fontsize;
defaultpen(fontsize(9pt)); // Like LaTeX \small
diff --git a/info/asy-overview/asy_overview.pdf b/info/asy-overview/asy_overview.pdf
index 7a7b8a1341..524c6c53e6 100644
--- a/info/asy-overview/asy_overview.pdf
+++ b/info/asy-overview/asy_overview.pdf
Binary files differ
diff --git a/info/asy-overview/src/appendix/appendix.tex b/info/asy-overview/src/appendix/appendix.tex
index f4016f9cd6..1c21dc0bfa 100644
--- a/info/asy-overview/src/appendix/appendix.tex
+++ b/info/asy-overview/src/appendix/appendix.tex
@@ -4,19 +4,20 @@ Rather than copy and paste code common across graphics,
we can put them in a separate file and import them.
In the earlier \Asy{} sources the lines
\begin{minted}{Asymptote}
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
\end{minted}
-will first run the commands in the file \path{../../../asy/jh.asy},
-and then run the function defined in that file.
+will run the commands in the file \path{../../../asy/jh.asy}
+and also make available the routines and data defined there.
-Here is the file.
-Its first few lines define the command to set the fonts,
+Here is the file's contents.
+First, it sets the fonts
and changes the default font size.
-(This change leaves more room for graphic elements and
-also helps the graphics have a visually cohesive identity.)
+(The smaller size leaves more room for graphic elements and
+also helps the graphics have a visually cohesive identity distinct from
+the document's body.)
Then it defines a color scheme.\footnote{%
- Thank you to \protect\texttt{color.adobe.com} user Michelle Delapenha.}
-Lastly, it defines the
+ Credit to \protect\texttt{color.adobe.com} user Michelle Delapenha for this scheme.}
+Last, it gives the
\mintinline{Asymptote}{material} defaults
for 3D graphics.
\begin{center}
diff --git a/info/asy-overview/src/asy_tut.tex b/info/asy-overview/src/asy_tut.tex
index fc88e07b2b..c90d49037e 100644
--- a/info/asy-overview/src/asy_tut.tex
+++ b/info/asy-overview/src/asy_tut.tex
@@ -5,8 +5,8 @@
% See: https://github.com/vectorgraphics/asymptote/blob/master/doc/externalprc.tex
% Compile .asy files with asy -inlineimage <fn>
\RequirePackage{asymptote}
-\def\asydir{chapter4/asy/}
-\graphicspath{{asy/}}
+\def\asydir{chapter4/asy}
+\graphicspath{ {asy/} {chapter4/asy/} }
% uncomment for 3D graphics:
\input chapter4/asy/vectors.pre
\input chapter4/asy/planes.pre
diff --git a/info/asy-overview/src/chapter1/chapter1.tex b/info/asy-overview/src/chapter1/chapter1.tex
index 40c4ecb1be..bc7946a58d 100644
--- a/info/asy-overview/src/chapter1/chapter1.tex
+++ b/info/asy-overview/src/chapter1/chapter1.tex
@@ -3,7 +3,7 @@
Making an \Asy{} input file is like making a \LaTeX{} input file,
so you already have a feel for the basics.
To start,
-in your favorite editor open an \Asy{} input file \path{asy/unit_circle.asy}.
+use your favorite editor to open a file \path{asy/unit_circle.asy}.
\begin{minted}{Bash}
jim@millstone:~/Documents/asy_tut/src$ cd asy
jim@millstone:~/Documents/asy_tut/src/asy$ emacs unit_circle.asy
@@ -88,7 +88,7 @@ for a list of the options.)
Second, the dot showing the generic point on the unit circle is too big.
In the revised source below we've adjusted the size by inserting
-\mintinline{Asymptote}{dotfactor = 4} in line~23
+\mintinline{Asymptote}{dotfactor = 4} in line~22
(the default factor is $6$).
Finally, the $(\cos\theta,\sin\theta)$ label is in a different font than
diff --git a/info/asy-overview/src/chapter1/main.tex b/info/asy-overview/src/chapter1/main.tex
index 4617cd0c20..4ca0d66228 100644
--- a/info/asy-overview/src/chapter1/main.tex
+++ b/info/asy-overview/src/chapter1/main.tex
@@ -11,6 +11,6 @@ include the output PDF in your \LaTeX{} file.
\includegraphics{asy/unit_circle_after.pdf}
% Can instead include the .asy source in the text body.
% \asyinclude{asy/unit_circle_after.asy}
- % There is also an environment where you type the .asy source directly.
+ % There is also an environment where you type the Asy source directly.
\end{center}
\end{document}
diff --git a/info/asy-overview/src/chapter2/asy/cos.asy b/info/asy-overview/src/chapter2/asy/cos.asy
index bc053d3bf4..2e4ca0e5b3 100644
--- a/info/asy-overview/src/chapter2/asy/cos.asy
+++ b/info/asy-overview/src/chapter2/asy/cos.asy
@@ -1,6 +1,6 @@
// cos.asy
settings.outformat="pdf";
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import graph;
diff --git a/info/asy-overview/src/chapter2/asy/exponential.asy b/info/asy-overview/src/chapter2/asy/exponential.asy
index e81c9545b5..b9d1f2f26c 100644
--- a/info/asy-overview/src/chapter2/asy/exponential.asy
+++ b/info/asy-overview/src/chapter2/asy/exponential.asy
@@ -1,6 +1,6 @@
// exponential.asy
settings.outformat="pdf";
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import graph;
@@ -25,7 +25,7 @@ dot(Label("$(\ln(2),2)$",filltype=Fill(white)), (log(2),2), 2*E);
// Axes making graph paper
pen GRAPHPAPERPEN=(0.25*LIGHT_COLOR+0.75*white)
- +squarecap; // Make graph paper lines
+ +squarecap; // For graph paper lines
xaxis(axis=YEquals(ymax+0.2),
xmin=xmin-0.5, xmax=xmax+0.5,
diff --git a/info/asy-overview/src/chapter2/asy/plot.asy b/info/asy-overview/src/chapter2/asy/plot.asy
index 77ad978bc5..3893038233 100644
--- a/info/asy-overview/src/chapter2/asy/plot.asy
+++ b/info/asy-overview/src/chapter2/asy/plot.asy
@@ -7,7 +7,7 @@ texpreamble("\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\renewcommand*\oldstylenums[1]{\textosf{#1}}");
-import graph; // Access plotting routines
+import graph;
// Function to be plotted
real fcn(real x) {
diff --git a/info/asy-overview/src/chapter2/asy/plot_after.asy b/info/asy-overview/src/chapter2/asy/plot_after.asy
index 0d5ab883c6..09f131a02e 100644
--- a/info/asy-overview/src/chapter2/asy/plot_after.asy
+++ b/info/asy-overview/src/chapter2/asy/plot_after.asy
@@ -1,7 +1,8 @@
// plot_after.asy
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+settings.outformat="pdf";
+import "../../../asy/jh.asy" as jh;
-import graph; // Access plotting routines
+import graph;
// Function to be plotted
real fcn(real x) {
diff --git a/info/asy-overview/src/chapter2/chapter2.tex b/info/asy-overview/src/chapter2/chapter2.tex
index 658d4c3896..ae454e7cb9 100644
--- a/info/asy-overview/src/chapter2/chapter2.tex
+++ b/info/asy-overview/src/chapter2/chapter2.tex
@@ -9,8 +9,8 @@ we can't ask \Asy{} to plot all $x$'s.
We will instead plot the $x$'s where the associated $y$'s
are between $-5$ and~$5$.
To find these
-we can use \textit{Sage} to solve
-$5=x+(1/(x-1))$ and $-5=x+(1/(x-1))$.
+we can use a computer algebra system such as \textit{Sage} to solve
+$5=x+1/(x-1)$ and $-5=x+1/(x-1)$.
\begin{minted}{Python}
sage: x = var('x')
sage: solve( [5==x+(1/(x-1))], x )
@@ -51,24 +51,25 @@ We make the $y$~unit height be half of the $x$ unit width by adding this command
\begin{minted}{Asymptote}
scale(Linear, Linear(0.5))
\end{minted}
-(the \mintinline{Asymptote}{Linear} is in contrast with
-\mintinline{Asymptote}{Logarithmic}).
+(\mintinline{Asymptote}{Linear} is in contrast with a
+\mintinline{Asymptote}{Logarithmic} scale).
The axes and graph now come out rescaled but
we must also adjust the location
of points, the ones defining the vertical asymptote line, using for example
-line~29's \mintinline{Asymptote}{Scale((1,ymin))}.
+line~26's \mintinline{Asymptote}{Scale((1,ymin))}.
-That tweak of the $y$~axis causes the tick labels to be scrunched together,
-so we arrange that \Asy{} lists only every fifth label.
+That tweak of the $y$~axis causes its tick labels to be scrunched together,
+so we arrange that \Asy{} labels only every fifth tick
+(the labeled ones are called major ticks and the others are minor ticks).
\begin{minted}{Asymptote}
yaxis(ymin=ymin-0.4, ymax=ymax+0.4,
LeftTicks(Step=5, step=1, OmitTick(0), Size=3pt, size=2pt),
Arrows(TeXHead));
\end{minted}
-That command also sets the length of the major and minor ticks.
+That command also sets the length of these major and minor ticks.
-Here is \path{asy/plot_after.asy}
-(more on the first couple of lines in the next section).
+Here is \path{asy/plot_after.asy}.
+An explanation of line~3 is in the next section.
\begin{center}
\inputminted{Asymptote}{chapter2/asy/plot_after.asy}
\end{center}
@@ -82,9 +83,16 @@ Here is the output.
\section{Defaults}
Rather than copy and paste elements common across graphics
such as the font commands or colors,
-we can put them in a separate file \path{jh.asy} and import them,
-as in the prior source's line~2.
-That file's source is in the Appendix.
+we can put them in a separate file and import them,
+as in the prior source's line~3.
+The source of that file, \path{jh.asy}, is in the Appendix.
+(About the
+\mintinline{Asymptote}{"../../../asy/"}
+directory stuff:~usually we set up \Asy{} with a directory for common files
+and then just say \mintinline{Asymptote}{import jh}.
+But for this document we want that a user can compile without setup
+so the relative path is in the source.)
+
\section{Ticks}
@@ -108,10 +116,10 @@ Note line~25's \mintinline{Asymptote}{NW}, which prints
the $3\pi/2$ northwest of its tick.
Our other tick example has a graph paper effect,
-where ticks in a light color extending across the graph.
+with lines in a light color extending across the graph.
(I sometimes use this for lectures; here,
-to estimate by eye that the slope of the tangent line
-at $y=2$ is $2$.)
+to estimate by eye that at $y=2$ the slope of the tangent line
+is~$2$.)
\begin{center}
\includegraphics{chapter2/asy/exponential.pdf}
\end{center}
@@ -120,28 +128,32 @@ The source has a number of interesting features.
\begin{center}
\inputminted{Asymptote}{chapter2/asy/exponential.asy}
\end{center}
-The graph paper effect is due to the input in lines 30 through~46.
+The graph paper effect is due to the input in lines 26 through~46.
The horizontal lines are a little clearer so we will cover them.
-They are created by the first two \mintinline{Asymptote}{yaxis(..)} commands,
-which produce two vertical axes, one on the left and one on the right,
-These are drawn with a \mintinline{Asymptote}{nullpen} so we don't see
-vertical black lines at those locations.
+They are created by the \mintinline{Asymptote}{yaxis(..)} commands
+in lines 39--46.
+These two vertical axes, one on the left and one on the right,
+are drawn with a \mintinline{Asymptote}{nullpen} so we don't see
+vertical black lines at \mintinline{Asymptote}{xmin-0.2}
+and \mintinline{Asymptote}{xmax+0.2}.
What we do see are
-the ticks extending back and forth between them in the color given by
+the ticks for those axes,
+extending back and forth between them in the color given by
\mintinline{Asymptote}{GRAPHPAPERPEN}, because of
the \mintinline{Asymptote}{extend=true}.
These ticks have a null label because of the
\LaTeX{} comment character~\mintinline{Asymptote}{"%"}.
-(The $y$~axis on the left produces the horizontal
+The $y$~axis on the left produces the horizontal
graph paper marks between
-$x=\text{\mintinline{Asymptote}{xmin-0.2}}$ and the third $y$~axis at
+$x=\text{\mintinline{Asymptote}{xmin-0.2}}$ and
$x=0$, while the one on the right generates the marks
-from $x=0$ to $x=\text{\mintinline{Asymptote}{xmax+0.2}}$.)
+from $x=0$ to $x=\text{\mintinline{Asymptote}{xmax+0.2}}$.
+(The $x=0$ comes from the $y$~axis in lines 52--54.)
-The commands from line~49 to the end produce the black line axes.
+The commands from line~49 to the end produce the axes shown in black.
% Note that \mintinline{Asymptote}{yaxis(..)} produces only one arrow.
-This is a long file but we will discuss a few finer points.
+This is a long file but we will discuss a few fine points.
One is that the $(\ln(2),2)$ label has a white background
obscuring some of the graph paper lines, from the
\mintinline{Asymptote}{Label("$(\ln(2),2)$",filltype=Fill(white))}
@@ -152,7 +164,7 @@ is there because \Asy{} draws the graph by connecting dots that
evaluate
\mintinline{Asymptote}{fcn}
at a finite number of points, and the default was too small so that
-the graphic had jaggies on the left.
+the graphic had visible jaggies.
Finally, lines 18 and~19 as well as lines 27 and~28 make clear that
essential to understanding \Asy{} is understanding the ideas of
diff --git a/info/asy-overview/src/chapter3/asy/integral.asy b/info/asy-overview/src/chapter3/asy/integral.asy
index 1b756c0404..ccc2249a17 100644
--- a/info/asy-overview/src/chapter3/asy/integral.asy
+++ b/info/asy-overview/src/chapter3/asy/integral.asy
@@ -1,6 +1,6 @@
// integral.asy
settings.outformat="pdf";
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import graph;
diff --git a/info/asy-overview/src/chapter3/asy/zoom.asy b/info/asy-overview/src/chapter3/asy/zoom.asy
index 462bf9d048..8c45316b58 100644
--- a/info/asy-overview/src/chapter3/asy/zoom.asy
+++ b/info/asy-overview/src/chapter3/asy/zoom.asy
@@ -1,6 +1,6 @@
// zoom.asy
settings.outformat="pdf";
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import graph;
diff --git a/info/asy-overview/src/chapter3/asy/zoom_iterate.asy b/info/asy-overview/src/chapter3/asy/zoom_iterate.asy
index 2c6268fa8c..3ecf6d9c86 100644
--- a/info/asy-overview/src/chapter3/asy/zoom_iterate.asy
+++ b/info/asy-overview/src/chapter3/asy/zoom_iterate.asy
@@ -1,12 +1,18 @@
// zoom_iterate.asy
settings.outformat="pdf";
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import graph;
path f = GENERIC_FCN_PLOT; // Shorter to type
real c = 3.1;
+// Find f(c) on f and get f'(c)
+real c_time = times(f, c)[0];
+pair c_point = point(f,c_time);
+pair d = dir(f, c_time);
+real t_line_fcn(real x) { return (d.y/d.x)*(x-c_point.x) + c_point.y; }
+
string OUTPUT_FN = "zoom_iterate%03d";
for (int i=0; i<4; ++i) {
picture pic; // Generate a new picture
@@ -16,20 +22,14 @@ for (int i=0; i<4; ++i) {
real delta = 1/2^(i);
real xmin = c-delta; real xmax = c+delta;
- // Find f(c) on f, and get f'(c) as a pair
- real c_time = times(f, c)[0];
- pair c_point = point(f,c_time);
- pair d = dir(f, c_time);
- real t_line_fcn(real x) { return (d.y/d.x)*(x-c_point.x) + c_point.y; }
- path t_line = graph(t_line_fcn, xmin, xmax);
-
- // Limits of f to show
+ // Limits of f and tangent line to show
real left_time = times(f, xmin)[0];
real right_time = times(f, xmax)[0];
path f_shown = subpath(f, left_time, right_time);
+ path t_line = graph(t_line_fcn, xmin, xmax);
- // Draw f and tangent line
- transform f_trans = shift(0, 0.5*delta)*shift(0, -1*c_point.y); // Shift f close to axis
+ // Shift f and tangent line close to x-axis, then draw
+ transform f_trans = shift(0, 0.5*delta)*shift(0, -1*c_point.y);
draw(pic, f_trans*f_shown, BOLD_COLOR);
draw(pic, f_trans*t_line, HIGHLIGHT_COLOR);
dotfactor = 3;
diff --git a/info/asy-overview/src/chapter3/asy/zoom_times.asy b/info/asy-overview/src/chapter3/asy/zoom_times.asy
index a3d3964883..d7d4628b29 100644
--- a/info/asy-overview/src/chapter3/asy/zoom_times.asy
+++ b/info/asy-overview/src/chapter3/asy/zoom_times.asy
@@ -1,6 +1,6 @@
// zoom_times.asy
settings.outformat="pdf";
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import graph;
diff --git a/info/asy-overview/src/chapter3/chapter3.tex b/info/asy-overview/src/chapter3/chapter3.tex
index 162ef87df7..d592b69c22 100644
--- a/info/asy-overview/src/chapter3/chapter3.tex
+++ b/info/asy-overview/src/chapter3/chapter3.tex
@@ -2,12 +2,13 @@
\chapter{Paths and pens}
\section{Paths}
-This plots a function that is generic in that it isn't $f(x)=x^2$ or some
-other function derived from a simple expression.
-We will use this it for the classic Calculus
-lesson of zooming in on a point of tangency to
-illustrate that
-the curve is locally well-approximated by the line.
+This plots a function that is generic in that it isn't
+derived from a simple expression such as $\cos x$ or $x+(1/(x-1))$.
+We will use it for the classic Calculus
+lesson
+illustrating that
+the curve is locally well-approximated by the line,
+by zooming in on a point of tangency.
\begin{center}
\includegraphics{chapter3/asy/zoom.pdf}
\end{center}
@@ -24,6 +25,7 @@ so I included a copy in \path{jh.asy}
as \mintinline{Asymptote}{GENERIC_FCN_PLOT}.)
Earlier, when we drew a vertical asymptote line we instead connected two
points with a \mintinline{Asymptote}{--} operator, which gives a line segment.
+There are other connectors but these two are the most common.
In line~17, \Asy's
\mintinline{Asymptote}{dir(..)} command gives the direction of the
@@ -40,7 +42,7 @@ As to line~15's \mintinline{Asymptote}{c_time = times(f, c)[0]},
just as \MF{} and \MP{} do.
These curves are
parametrized by a variable called `time'.
-By definition, the initial point $(0,-25)$ is at time~$0$, the next point
+By definition, the initial point $(0,-0.25)$ is at time~$0$, the next point
$(1,0.35)$ is at time~$1$, etc.
(To forestall any confusion:~the time has nothing to do with the
first coordinate, it comes from when the point is specified in the
@@ -51,7 +53,7 @@ This illustrates, showing some times.
\includegraphics{chapter3/asy/zoom_times.pdf}
\end{center}
The \mintinline{Asymptote}{times(..)} command returns an array of times
-where the path it intersects the vertical line
+where the path intersects the vertical line
$x=\text{\mintinline{Asymptote}{c}}$.
We extract the first one (in this case the only one) with the
\mintinline{Asymptote}{[0]}.
@@ -66,11 +68,11 @@ The source for the prior graphic shows two useful aspects of
\begin{center}
\inputminted{Asymptote}{chapter3/asy/zoom_times.asy}
\end{center}
-The first aspect is in line~19.
+The first of those is in line~19.
The \mintinline{Asymptote}{format("$%0.02f$",t)}
turns the floating point number~$t$ into the string used in the label.
-A larger point is in lines~17 through~20, where the code has an iteration.
+The other is in lines~17 through~20, where the code has an iteration.
One strength of \Asy{} is that it is a standard programming language,
with clean constructs that are like those you use in other languages
in your daily work.
@@ -98,8 +100,8 @@ is more complex than the others that we have seen.
One reason is that this one file produces four pictures,
so that we needn't maintain
four separate \path{.asy} files with lots of overlap.
-The four output files are produced in the loop between lines~11 and~47.
-Line~12 creates a new
+The four output files are produced in the loop between lines~17 and~47.
+Line~18 creates a new
\mintinline{Asymptote}{picture}
and line~46 outputs it.
The files are named
@@ -112,15 +114,15 @@ form of that name is given by the string
Besides using a single input to create multiple output files,
there are two other things that are new here.
-One is line~13's
+One is line~19's
\mintinline{Asymptote}{size(pic, 3cm, 0)}.
-This makes each output graphic be three centimeters wide, and as tall as
+This makes each output graphic be three centimeters wide and as tall as
required, setting the size of the $x$ and~$y$ units as needed to
get that width.
The result is a zooming-in on successively shorter intervals of the $x$~axis.
The other new thing
-is that when the $x$~axis interval is small, rescaling the units to make the
+is that rescaling the units to make the
entire figure three centimeters wide
would put the plotted function very far above the
$x$~axis.
@@ -128,8 +130,8 @@ So we have moved the function down near the axis.
This transformation applies not just to the function but also to the tangent
line and to the point $(c,f(c))$, so we have broken this
transformation out as a separate thing,
-line~32's
-\mintinline{Asymptote}{transform f_trans = shift(0,0.5*delta)*shift(0,-1*c_point.y)}.
+in line~32.
+%\mintinline{Asymptote}{transform f_trans = shift(0,0.5*delta)*shift(0,-1*c_point.y)}.
Transformations are applied with the star operator,
as on lines~33, 34, and~36.
@@ -158,8 +160,8 @@ Here is the resulting graphic.
The
\mintinline{Asymptote}{buildcycle(left_side, f, right_side, bottom)}
on line~20 is new.
-It takes the paths surrounding the region of interest and
-constructs the path that is its boundary.
+It takes paths surrounding the region of interest and
+constructs the path that is the region's boundary.
(A more common way to make a cyclic path is to end with
\mintinline{Asymptote}{cycle}, as with
\mintinline{Asymptote}{path triangle = (0,0)--(0,1)--(1,0)--cycle}.)
@@ -167,7 +169,7 @@ constructs the path that is its boundary.
Then line~23's \mintinline{Asymptote}{fill(region, NEUTRAL_COLOR+opacity(0.5))}
covers the region using a pen that, in addition to
its color, allows some of the material behind it to show through.
-Note that some PDF viewers have trouble with opacity so your results may vary,
+Note that some PDF viewers have trouble with opacity so your results may vary
but one viewer that gives good results is Adobe's Reader.
The \Asy{} reference gives many options for pens.
diff --git a/info/asy-overview/src/chapter4/asy/planes.asy b/info/asy-overview/src/chapter4/asy/planes.asy
index 6f7d6efc9e..b5b0ea81dc 100644
--- a/info/asy-overview/src/chapter4/asy/planes.asy
+++ b/info/asy-overview/src/chapter4/asy/planes.asy
@@ -3,7 +3,7 @@ settings.outformat="pdf";
settings.tex="pdflatex";
settings.prc = true;
settings.render = 0;
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import graph3;
projection default_projection = orthographic(3,1.5,0.5,up=Z);
diff --git a/info/asy-overview/src/chapter4/asy/vectors.asy b/info/asy-overview/src/chapter4/asy/vectors.asy
index b1f2ad1700..a0c965a823 100644
--- a/info/asy-overview/src/chapter4/asy/vectors.asy
+++ b/info/asy-overview/src/chapter4/asy/vectors.asy
@@ -3,7 +3,7 @@ settings.outformat = "pdf";
settings.tex = "pdflatex"; // For compiling in-pic text
settings.prc = true; // Manipulable in a PDF file
settings.render = 0; // Needed for "poster" image, i.e., picture to click on
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import fontsize;
diff --git a/info/asy-overview/src/chapter4/asy/washer.asy b/info/asy-overview/src/chapter4/asy/washer.asy
index c74f6c0d16..1f071aad17 100644
--- a/info/asy-overview/src/chapter4/asy/washer.asy
+++ b/info/asy-overview/src/chapter4/asy/washer.asy
@@ -3,7 +3,7 @@ settings.tex = "pdflatex";
settings.outformat = "pdf";
settings.render = 8; // Tweaked this until poster pic looked better
settings.prc = true;
-cd("../../../asy"); import jh; cd(""); define_texpreamble();
+import "../../../asy/jh.asy" as jh;
import graph3;
projection default_projection = orthographic(3,1.5,0.5,up=Z);
diff --git a/info/asy-overview/src/chapter4/chapter4.tex b/info/asy-overview/src/chapter4/chapter4.tex
index ff1f3064f4..4e12c76957 100644
--- a/info/asy-overview/src/chapter4/chapter4.tex
+++ b/info/asy-overview/src/chapter4/chapter4.tex
@@ -1,9 +1,10 @@
% Chapter 4 from Asymptote tutorial Jim Hefferon
-\def\asydir{chapter4/asy/}
+\def\asydir{chapter4/asy}
\chapter{3D}
A strength of \Asy{} is its ability in three dimensions.
-It can easily draw what you want to draw, including
+It can easily draw what you want to draw.
+That includes
% that it extends to three dimensions constructs for good-looking paths
% that come from two-dimensional \MF{} and \MP.
doing projections, which can be tricky to get right by eye.
@@ -11,16 +12,15 @@ doing projections, which can be tricky to get right by eye.
In addition, you can choose to make these graphics manipulable, so that you can
use your mouse to turn them around or peek under them, and in
general have an explore.
-This is great for a Calculus lecture so its what I'm showing here.
-
-Note that only some PDF viewers let you manipulate.
-For instance, Adobe's Reader works but the readers embedded in web
+This is great for a Calculus lecture so it is what I'm showing here.
+(Note that only some PDF viewers let you manipulate.
+For instance, Adobe's Reader works but the ones embedded in web
browsers do not.
To test your reader just click on the graphic below.
-(You may be asked to let the reader
+You may be asked to let the reader
run the code that does the manipulation.)
-We start with a picture showing the vector of displacements $(2,1,1)$ at a
+We start with a picture showing the displacement vector $(2,1,1)$ at a
number of initial points.
% \begin{center}
% \asyinclude{chapter4/asy/vectors}
@@ -29,8 +29,8 @@ number of initial points.
\input chapter4/asy/vectors.tex
\end{center}
-The input code has two different things going on.
-First, so that the vectors are scattered about,
+The input code shows two new things.
+First, to scatter the vectors about,
in lines 34--36 they get a randomly-chosen initial point.
The randomization uses the seed from line~24.
To find that number I uncommented lines 21--23 and commented out line~24,
@@ -43,7 +43,7 @@ until there are such eight vectors.
\begin{center}
\inputminted{Asymptote}{chapter4/asy/vectors.asy}
\end{center}
-The other thing in the code is the 3D stuff.
+However, the really new stuff is the 3D stuff.
It is surprisingly like the 2D constructs that we have seen.
Line~10's
\mintinline{Asymptote}{import graph3} gives access to
@@ -57,10 +57,15 @@ and instead of
you say
\mintinline{Asymptote}{xaxis3(..)}.
But much of it is at least similar.
+(Lines~11 and~12 give the projection,
+essentially setting the location of the camera
+that is taking this picture.
+Even if we use a reader that allows us to manipulate the image,
+we still need a starting view.)
-The next graphic shows surfaces,
-which are genuinely different than what we saw in 2D.
-It illustrates that the angle between two
+We next see something
+genuinely different from a 2D context, surfaces.
+This graphic illustrates that the angle between two
intersecting planes is the same as the angle between their normal
vectors.
% \begin{center}
@@ -69,15 +74,11 @@ vectors.
\begin{center}
\vcenteredhbox{\input chapter4/asy/planes.tex }%
\end{center}
-We can imagine that lines~19 and~20 set the location of the camera
-that is taking this picture.
-Even if we use a reader where the image is manipulable,
-we need a starting view.
\begin{center}
\inputminted{Asymptote}{chapter4/asy/planes.asy}
\end{center}
-This graphic's code
+This code
spotlights the power of transforms.
We don't have to give the equations of the planes or specify their normals.
Instead, in line~17 we define the edge of
@@ -91,12 +92,12 @@ The new plane with its edge and its normal vector
then comes from applying that transform
to the horizontal plane, its edge, and its normal.
-To color the surfaces, in lines~24 and~26 we use
-\mintinline{Asymptote}{figure material}.
-We will reuse these later so the definition is in \path{jh.sty};
-see lines~28--35 in the Appendix.
-This coloring involves \mintinline{Asymptote}{opacity(..)} and
-note that you can indeed see through the planes to some extent.
+In lines~24 and~26 we use
+\mintinline{Asymptote}{figure_material} to give the surfaces color.
+We will reuse this later so the definition is in \path{jh.sty};
+see lines~26--32 in the Appendix.
+This involves \mintinline{Asymptote}{opacity(..)} and
+note that you can indeed see through the planes.
Finally, in lines~40--46 we take advantage of one of \Asy's many helper functions
to find and draw the arc of the angle between the planes and the normals.
@@ -144,8 +145,9 @@ Here is a shot of the output.
\framebox{\includegraphics[page=1,scale=0.325,trim=0.25in 5in 0.25in 0.25in]{chapter4/main_3d.pdf}}
\end{center}
In that output PDF,
-you should be able to click on the graphic and move it around
-(of course, your reader must supports this).
+you should be able to click on the poster graphic to bring up
+the manipulable graphic,
+if your reader supports that.
diff --git a/info/asy-overview/src/chapter4/main_3d.tex b/info/asy-overview/src/chapter4/main_3d.tex
index 9af013d4ff..40fe635435 100644
--- a/info/asy-overview/src/chapter4/main_3d.tex
+++ b/info/asy-overview/src/chapter4/main_3d.tex
@@ -1,14 +1,15 @@
% main_3d.tex LaTeX demonstraton file showing Asymptote 3D, Jim Hefferon
\documentclass{article}
\usepackage{graphicx}
-\graphicspath{ {asy/} } % Trailing slash, dirs in curly braces
+\graphicspath{ {asy/} } % Path to poster graphic; dirs in curly braces, trailing slash
\usepackage{asymptote}
\def\asydir{asy} % No trailing slash
% For non-manipulable 3D figures, just compile with "asy vectors" and
% include the PDF output as with 2D figures.
% For manipulable 3D figures:
-% (1) Compile .asy file with "asy -inlineimage vectors".
-% It outputs a number of files, including .tex and .pre files.
+% (1) Compile the .asy file with "asy -inlineimage vectors".
+% It outputs a number of files, including .tex and .pre files,
+% and the .pdf "poster" that you click on to start the manipulation.
% (2) Include the .pre line here along with one of the lines in center below
\input asy/vectors.pre
@@ -19,6 +20,6 @@ Include the output graphic directly in the text body.
\input asy/vectors.tex %
\end{center}
If you use the commented-out way then run
-\texttt{asy -inlinimage <latex-fn>-1}
+\texttt{asy -inlineimage <latex-fn>-1}
between a pair of \LaTeX{} runs of this file.
\end{document}
diff --git a/info/asy-overview/src/preface/preface.tex b/info/asy-overview/src/preface/preface.tex
index 8a2cb9cdbf..f3e5a6209e 100644
--- a/info/asy-overview/src/preface/preface.tex
+++ b/info/asy-overview/src/preface/preface.tex
@@ -49,5 +49,5 @@ Showing only one option is just a question of going shorter.
\begin{flushleft}
Jim Hef{}feron \\
University of Vermont \\
-2024-May-26
+2024-Sep-29
\end{flushleft} \ No newline at end of file
diff --git a/info/biblio/font.bib b/info/biblio/font.bib
index 287032abf9..65c446021c 100644
--- a/info/biblio/font.bib
+++ b/info/biblio/font.bib
@@ -2,9 +2,9 @@
%%% ====================================================================
%%% BibTeX-file{
%%% author = "Nelson H. F. Beebe",
-%%% version = "1.127",
-%%% date = "08 May 2024",
-%%% time = "07:47:15 MST",
+%%% version = "1.129",
+%%% date = "03 August 2024",
+%%% time = "16:28:35 MDT",
%%% filename = "font.bib",
%%% address = "University of Utah
%%% Department of Mathematics, 110 LCB
@@ -14,7 +14,7 @@
%%% telephone = "+1 801 581 5254",
%%% FAX = "+1 801 581 4148",
%%% URL = "https://www.math.utah.edu/~beebe",
-%%% checksum = "18065 25010 114533 1094663",
+%%% checksum = "28623 25116 115060 1099457",
%%% email = "beebe at math.utah.edu, beebe at acm.org,
%%% beebe at computer.org (Internet)",
%%% codetable = "ISO/ASCII",
@@ -24,7 +24,7 @@
%%% docstring = "This bibliography records publications about
%%% typographic fonts.
%%%
-%%% At version 1.127, the year coverage looked
+%%% At version 1.129, the year coverage looked
%%% like this:
%%%
%%% 1785 ( 1) 1865 ( 0) 1945 ( 0)
@@ -88,14 +88,14 @@
%%% 1859 ( 0) 1939 ( 0) 2019 ( 5)
%%% 1860 ( 0) 1940 ( 1) 2020 ( 1)
%%% 1861 ( 0) 1941 ( 0) 2021 ( 1)
-%%% 1862 ( 0) 1942 ( 0) 2022 ( 1)
-%%% 1863 ( 0) 1943 ( 0) 2023 ( 2)
-%%% 1864 ( 0) 1944 ( 0) 2024 ( 1)
+%%% 1862 ( 0) 1942 ( 0) 2022 ( 2)
+%%% 1863 ( 0) 1943 ( 0) 2023 ( 3)
+%%% 1864 ( 0) 1944 ( 0) 2024 ( 3)
%%% 19xx ( 3)
%%% 20xx ( 2)
%%%
-%%% Article: 531
-%%% Book: 167
+%%% Article: 532
+%%% Book: 170
%%% Booklet: 4
%%% InCollection: 5
%%% InProceedings: 71
@@ -108,7 +108,7 @@
%%% TechReport: 30
%%% Unpublished: 1
%%%
-%%% Total entries: 990
+%%% Total entries: 994
%%%
%%% This bibliography has been collected from
%%% bibliographies in the author's personal
@@ -24056,6 +24056,44 @@
keywords = "Adobe Systems co-founder",
}
+@Book{Cheung:2022:TLB,
+ editor = "Victor Cheung",
+ booktitle = "From Type to Logo: the Best Logotypes from Around the
+ World",
+ title = "From Type to Logo: the Best Logotypes from Around the
+ World",
+ publisher = "Victionary",
+ address = "Hong Kong",
+ pages = "269 + 3",
+ year = "2022",
+ ISBN = "988-756-659-4 (hardcover)",
+ ISBN-13 = "978-988-756-659-5 (hardcover)",
+ LCCN = "NC1002.L63 F76 2022",
+ bibdate = "Sat Aug 3 16:23:22 MDT 2024",
+ bibsource = "fsz3950.oclc.org:210/WorldCat;
+ https://www.math.utah.edu/pub/tex/bib/font.bib",
+ abstract = "``When it comes to building a brand, logo design is
+ often one of the first few important steps in the
+ creative journey. With so much more competition to
+ contend with today, how can designers help start-ups
+ and evolving brands put their best foot forward
+ visually? A key branding element used by many of the
+ biggest companies around the world, a logotype revolves
+ around a company's name or initials and features
+ typography as the main design approach. From Type to
+ Logo details the processes of combining the two
+ distinct design disciplines in a compelling book of
+ case studies that make an inspiring reference point for
+ budding and working branding professionals alike.",
+ acknowledgement = ack-nhfb,
+ tableofcontents = "Foreword \\
+ Preface \\
+ Logotypes \\
+ Feature Stories \\
+ Showcase \\
+ Biography",
+}
+
@Article{Durazzi:2022:RTM,
author = "Allison Durazzi",
title = "Review of {``\booktitle{Type Matters: The Rhetoricity
@@ -24158,6 +24196,56 @@
Computerized typesetting.",
}
+@Book{Anonymous:2024:SUC,
+ author = "Anonymous",
+ title = "Serif in Use: a Collection of Serif Typefaces",
+ publisher = "Victionary",
+ address = "Hong Kong",
+ pages = "531 + 45",
+ year = "2024",
+ ISBN = "988-768-443-0 (hardcover)",
+ ISBN-13 = "978-988-768-443-5 (hardcover)",
+ LCCN = "Z250.5.S47 S47 2024",
+ bibdate = "Fri Aug 02 10:58:16 2024",
+ bibsource = "https://www.math.utah.edu/pub/tex/bib/font.bib",
+ acknowledgement = ack-nhfb,
+}
+
+@Book{Cheung:2023:SUC,
+ author = "Victor Cheung",
+ title = "Sans in Use: Creative Typefaces and Their
+ Applications. From {A} to {Z}. {Book A}",
+ publisher = "Victionary",
+ address = "North Point, Hong Kong",
+ pages = "576",
+ remark = "Covers 93 typefaces.",
+ year = "2023",
+ ISBN = "988-768-442-2",
+ ISBN-13 = "978-988-768-442-8",
+ LCCN = "Z250.5.S24 S24 2024",
+ bibdate = "Sat Aug 3 14:46:34 MDT 2024",
+ bibsource = "fsz3950.oclc.org:210/WorldCat; https://www.math.utah.edu/pub/tex/bib/font.bib",
+ acknowledgement = ack-nhfb,
+ abstract = "In the world of typography, it is not uncommon to see
+ combinations of serif and sans serif typefaces in the
+ same design. However, it takes skill to combine them in
+ a way to avoid unwanted graphic tension or clashing
+ fonts, and ensure maximum legibility of the text in the
+ design. From font weights to classifications, each
+ typeface has its own distinct personality, and should
+ be carefully paired to convey the right tone and mood
+ of the design. Featuring a selection of type specimens,
+ their design applications, and the thoughts that go
+ behind the craft, \booktitle{Sans in Use}\slash
+ \booktitle{Serif in Use} collects the best combinations
+ of both categories and serves as a reference point for
+ inspiration-seeking designers and typographers
+ alike. Through examples and interviews with
+ internationally renowned type foundries, typography
+ designers and type experts, the future of typeface
+ creation is laid bare.",
+}
+
@Article{Hossain:2024:TSR,
author = "Anushah Hossain",
title = "Text Standards for the ``Rest of World'': The Making
@@ -24186,6 +24274,24 @@
Writing",
}
+@Article{Lovenheim:2024:SRS,
+ author = "Peter Lovenheim",
+ title = "Seeing {Rochester} signs through {Chuck Bigelow}'s
+ eyes",
+ journal = "Rochester Beacon",
+ volume = "??",
+ number = "??",
+ pages = "??--??",
+ day = "29",
+ month = jul,
+ year = "2024",
+ bibdate = "Fri Aug 02 09:04:12 2024",
+ bibsource = "https://www.math.utah.edu/pub/tex/bib/font.bib",
+ URL = "https://rochesterbeacon.com/2024/07/29/seeing-rochester-signs-through-chuck-bigelows-eyes/",
+ acknowledgement = ack-nhfb,
+ keywords = "Chuck Bigelow; Kris Holmes",
+}
+
@Misc{Anonymous:20xx:W,
author = "Anonymous",
title = "{WhatTheFont}",
diff --git a/info/biblio/font.ltx b/info/biblio/font.ltx
index f05b486605..9d1647a027 100644
--- a/info/biblio/font.ltx
+++ b/info/biblio/font.ltx
@@ -2,9 +2,9 @@
%%% ====================================================================
%%% @LaTeX-file{
%%% author = "Nelson H. F. Beebe",
-%%% version = "1.127",
-%%% date = "08 May 2024",
-%%% time = "07:47:28 MST",
+%%% version = "1.129",
+%%% date = "03 August 2024",
+%%% time = "16:28:39 MDT",
%%% filename = "font.ltx",
%%% address = "University of Utah
%%% Department of Mathematics, 110 LCB
@@ -14,7 +14,7 @@
%%% telephone = "+1 801 581 5254",
%%% FAX = "+1 801 581 4148",
%%% URL = "https://www.math.utah.edu/~beebe",
-%%% checksum = "44652 81 290 3038",
+%%% checksum = "37061 81 290 3044",
%%% email = "beebe@math.utah.edu, beebe@acm.org,
%%% beebe@computer.org (Internet)",
%%% codetable = "ISO/ASCII",
@@ -62,8 +62,8 @@
WWW URL: \protect\path=https://www.math.utah.edu/~beebe/=
}
-\date{08 May 2024 \\
-Version 1.127}
+\date{03 August 2024 \\
+Version 1.129}
\begin{document}
\maketitle
\nocite{*}
diff --git a/info/drawing-with-metapost/Drawing-with-Metapost.pdf b/info/drawing-with-metapost/Drawing-with-Metapost.pdf
index 780071b759..0216380d7d 100644
--- a/info/drawing-with-metapost/Drawing-with-Metapost.pdf
+++ b/info/drawing-with-metapost/Drawing-with-Metapost.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/README.md b/info/drawing-with-metapost/README.md
index 5b84892242..29fb143f8d 100644
--- a/info/drawing-with-metapost/README.md
+++ b/info/drawing-with-metapost/README.md
@@ -1,37 +1,45 @@
# Drawing-with-Metapost
+Toby Thurston -- 31 Oct 2024
+
This project provides a document that discusses how to draw technical diagrams
-with John Hobby's Metapost language. It includes over 200 illustrations
-created with Metapost, complete with source code as inspiration and examples.
-The intended level is for intermediate to advanced users rather than complete
-beginners. For introductions, tutorials, and other articles about Metapost,
-see http://www.tug.org/metapost.html
+with John Hobby's Metapost language. It includes over 200 illustrations created
+with Metapost, complete with source code as inspiration and examples. The
+intended level is for intermediate to advanced users rather than complete
+beginners. For introductions, tutorials, and other articles about Metapost, see
+http://www.tug.org/metapost.html
-Start with "Drawing-with-Metapost.pdf" in the top directory.
+Start with `Drawing-with-Metapost.pdf` in the top directory.
The `src` directory contains
- the TeX source for the main document
- the style file used for marking up Metapost source code
- the Metapost source for each illustration used in the main document
-- the corresponding PDF file created from the MP source
+- the corresponding PDF files created from each MP source file
+
+The text includes a discussion of the techniques used for drawing the
+illustrations, and includes complete or partial listings for most of them.
+These listings are included directly from the source code used, so in all cases
+the output should exactly match what you see on the page.
You might like to read the main document first, but you might also like to
-browse through the PDFs in the src directory, and when you find one that is
+browse through the PDFs in the `src` directory, and when you find one that is
interesting, have a look at the corresponding MP source file. There is a
one-to-one match between the PDF names and the MP source names, so
-"apollonius.pdf" is created from "apollonius.mp". The src directory contains
-a few drawings that are not (yet) included in the main document.
+`geometry-apollonius.pdf` is created from `geometry-apollonius.mp`. The `src`
+directory contains a few drawings that are not included in the main document.
To update the main PDF document I follow these steps
- build any new or updated Metapost source files with `lualatex` to create PDFs in the src directory
-- build the main tex file with `lualatex -output-directory=.. -recorder Drawing-with-Metapost`
-- run a Python script to read the .fls and `git add` all the files used
+- build the main tex file with `lualatex -recorder Drawing-with-Metapost`
+- run a Python script to read the `.fls` and `git add` all the files used
- git commit and push
-Toby Thurston -- 14 Apr 2023
+If you find any errors, or have any suggestions for improvement, please raise an
+issue or submit a pull request on Github.
-Copyright (c) 2023 by Toby Thurston. This material may be distributed only
+Copyright (c) 2024 by Toby Thurston. This material may be distributed only
subject to the terms and conditions set forth in the Open Publication License,
v1.0 or later (the latest version is presently available at
http://www.opencontent.org/openpub/).
diff --git a/info/drawing-with-metapost/src/Drawing-with-Metapost.tex b/info/drawing-with-metapost/src/Drawing-with-Metapost.tex
index e7143f4333..d90f56683c 100644
--- a/info/drawing-with-metapost/src/Drawing-with-Metapost.tex
+++ b/info/drawing-with-metapost/src/Drawing-with-Metapost.tex
@@ -1,14 +1,18 @@
-% Copyright (c) 2023 by Toby Thurston. This material may be distributed only
+% Copyright (c) 2024 by Toby Thurston. This material may be distributed only
% subject to the terms and conditions set forth in the Open Publication License,
% v1.0 or later (the latest version is presently available at
% http://www.opencontent.org/openpub/).
+
+\loop\iftrue
+\errmessage{This manual is copyrighted and should not be compiled as is.}
+\repeat
\documentclass[a4paper,landscape]{article}
\usepackage{luamplib}
\mplibtextextlabel{enable}
+\everymplib{beginfig(0);} \everyendmplib{endfig;}
\usepackage{fontspec}
\newfontfamily{\demo}{TeX Gyre Pagella}
\DeclareTextFontCommand{\textdemo}{\demo}
-\usepackage{unicode-math}
\usepackage[inner=1in,textwidth=5in,textheight=6in, marginparsep=0.5in, marginparwidth=4.2in]{geometry}
\usepackage{sectsty}
\allsectionsfont{\normalfont\sffamily\bfseries}
@@ -17,34 +21,45 @@
\def\mfbook{\textsl{The \MF\kern1pt book}}
\def\texbook{\textsl{The \TeX\kern1pt book}}
\usepackage{shortvrb}\MakeShortVerb{"}
+\usepackage{enumitem}
\usepackage{dwmpcode}
\title{Drawing with Metapost}
\author{Toby Thurston}
-\date{March 2017 – April 2023}
+\date{March 2017 – October 2024}
\overfullrule=2pt
-\def\kw#1{\begingroup\def\_{\kern.04em
- \vbox{\hrule width.3em height .6pt}\kern.08em}%
-\ifmmode\mathop{\textbf{#1}}\else\hbox{\bf#1\/}\fi\endgroup}
-\def\op#1{\begingroup\def\_{\kern.04em
- \vbox{\hrule width.3em height .6pt}\kern.08em}%
-\ifmmode\mathop{\textrm{#1}}\else\hbox{\rm#1\/}\fi\endgroup}
-\def\id#1{\begingroup\def\_{\kern.04em
- \vbox{\hrule width.3em height .6pt}\kern.08em}%
-\ifmmode\mathop{\textit{#1}}\else\hbox{\it#1\/}\fi\endgroup}
-\def\cycle{{\rm cycle}}
+\def\kw#1{\begingroup\def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
+\ifmmode\mathop{\textbf{#1}}\else\textbf{#1}\fi\endgroup}
+\def\op#1{\begingroup\def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
+\ifmmode\mathop{\textrm{#1}}\else\textrm{#1}\fi\endgroup}
+\def\id#1{\begingroup\def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}%
+\ifmmode\mathop{\textit{#1}}\else\textit{#1}\fi\endgroup}
+\def\cycle{\textrm{cycle}}
\def\vpic#1#2{\moveright5.5in\vbox to 0pt{\hsize4in\vskip#1\centerline{\includegraphics{#2}}\vss}}
\def\mpic#1#2{\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip#1\centerline{\includegraphics{#2}}\vss}}}
-\def\mnote#1#2{\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip#1\noindent #2\par\vss}}}
\def\mwpic#1#2{\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip#1\centerline{\includegraphics[width=4in]{#2}}\vss}}}
-\def\mxpic#1#2#3{\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip#1\centerline{\includegraphics[width=#2]{#3}}\vss}}}
-\def\nb{$\vcenter{\begin{mplibcode}beginfig(1);
+\def\mnote#1#2{\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip#1\noindent #2\par\vss}}}
+\def\nb{$\vcenter{\begin{mplibcode}
for t=0 upto 3: fill unitsquare scaled 4 shifted right shifted up rotated 45 rotated 90t;
-endfor currentpicture := currentpicture scaled 1/2; endfig;\end{mplibcode}}$\ }
+endfor currentpicture := currentpicture scaled 1/2; \end{mplibcode}}$\ }
\def\unit#1{\ifmmode\,\else\thinspace\fi\hbox{#1}}
\def\to{\mathrel{\ldotp\ldotp}}
\def\<#1>{\ensuremath{\langle\hbox{#1}\rangle}}
-\newfontface\ding{Zapf Dingbats}
-\def\hey{\llap{\ding ☞\ }}
+\usepackage{pifont}
+\def\hey{\llap{{\ding{43}}\ }}
+\newcommand\fleuron{\begin{mplibcode}
+ -z1 = z4 = 7 dir 8;
+ y2 - y1 = y4 - y3 = 3(y4 - y1);
+ z2 - z1 = z4 - z3 = whatever * dir 50;
+ draw z1 .. controls z2 and z3 .. z4
+ withpen pencircle xscaled 1.2 yscaled 0.2 rotated 50;
+ currentpicture := currentpicture rotated - angle z4;
+\end{mplibcode}}
+\newcommand\continued{\moveright 296pt\vbox to 0pt{\vskip -36pt
+\begin{mplibcode}
+ ahangle := 30;
+ drawarrow origin {right} .. {dir 60} 42 dir 60;
+ label.lft("\small \dots continued", origin);
+\end{mplibcode}\vss}}
%
\begin{document}
\let\folio\thepage
@@ -57,7 +72,7 @@ endfor currentpicture := currentpicture scaled 1/2; endfig;\end{mplibcode}}$\ }
0pt{\vskip23pt\noindent\sffamily{\Large\bfseries\@title}\par\bigskip
\noindent\@author\ --- \@date\par
\bigskip\noindent
- \includegraphics{archimedes.pdf}
+ \includegraphics{tiling-archimedes}
\vss}
\makeatother
\thispagestyle{empty}
@@ -67,7 +82,7 @@ This document contains a collection of ideas and techniques for producing attrac
technical drawings with John Hobby’s \MP\ language. I’m assuming that you already
know the basics of the language, that you have it installed as part of your up to
date \TeX\ ecosystem, and that you have established a reasonable workflow that
-let’s you write a Metapost program, compile it, and include the results in your
+let’s you write a \MP\ program, compile it, and include the results in your
\TeX\ document. If not, you might like to start at the \MP\ page on CTAN, and read
some of the excellent tutorials, including "mpintro.pdf". If you have already done
this, please read on.
@@ -86,12 +101,21 @@ be useful and then see how it’s done.
And when I say \textit{plain} \MP\ I mean \MP\ with the default format (as defined
in the file "plain.mp") loaded and only a few simple external packages (like
-"boxes.mp" occasionally). Nearly all of the examples here are supposed to be self
+"colorbrewer") occasionally. Nearly all of the examples here are supposed to be self
contained, and any macros are defined locally so you can get to grips with what’s
going on. \MP\ is a very subtle language, and it’s possible to do some very clever
-and completely inscrutable things with it; in contrast I’ve tried to be as clear as
+and completely inscrutable things with it; but here I have tried to be as clear as
possible in my examples.
+\vbox to 0pt{
+\vskip 1in
+\noindent
+\begingroup\footnotesize\blue{
+Copyright \copyright\ 2024 by Toby Thurston. This material may be distributed only
+subject to the terms and conditions set forth in the Open Publication License,~v1.0
+or later (the latest version is presently available at
+"http://www.opencontent.org/openpub/").}\endgroup\par\vss}
+
\newpage
\section{Some features of the syntax}
@@ -100,7 +124,7 @@ possible in my examples.
current scopeâ€; the assignment "a:=3;" means “update the value of "a" to the value "3"
immediatelyâ€. The difference becomes apparent when you try to update a
variable in the same scope.
- \mwpic{0pt}{tiling}
+ \mwpic{-64pt}{tiling-arch-hexagon}
This difference also lets you write linear equations
like "a=-b;". After this, as soon as you give a value to "a", \MP\ immediately works
@@ -165,7 +189,7 @@ simple, and since the basic tutorials can go out of date, here are descriptions
my own workflows that you might find helpful. You might also think I'm being really
inefficient; if so please drop me a line and suggest an improvement.
-The common features of each of these workflows are: mac os, the MacVim editor to
+The common features of each of these workflows are: Mac~OS, the MacVim editor to
edit \MP\ source code, and
Skim.app to view PostScript and PDF files. I have the complete MacTeX distribution
installed; any commands mentioned below are supplied by MacTeX.
@@ -191,26 +215,26 @@ line means that the output will be written to files with an extension that match
the chosen output format, which will be "png", "svg", or more usually "eps", which
is the default (and suggests that the output is Encapsulated PostScript).
+\smallskip
+
I then add drawing and label commands, using all the traditional facilities for
typesetting labels described in section \ref{sec:trad-labels}. I compile the source
with "mpost". I usually do this from within MacVim using the command line ":!mpost %"
where "!" means “this is an external command†and the "%" picks up the current file
name. Usually I need several attempts to get a diagram right, so I open Skim to preview the
-output with ":!open -a Skim %:r1.eps". I have Skim set up so that when I recompile
-the source, it automatically updates the view of the PostScript output.
+output.
\vadjust{\moveright5.4in\vbox to 0pt{\vss\hsize 4in\noindent
-$$\includegraphics[width=4in]{workflow-plain.pdf}$$
-If I want to use the diagram in a \LaTeX\ document I can include the EPS file
-directly with
-\begin{texcode}
- \includegraphics{some-diagram1.eps}
-\end{texcode}
-but usually I prefer to convert the EPS to PDF using "epstopdf" rather than rely on
-the automatic conversion. This is mainly because the PDFs are generally more useful
-files to have about (I can include them in presentations etc). Sometimes I do this
-manually but usually I use a small Python script to automate this process: run
+$$\includegraphics[width=4in]{workflow-plain}$$
+Until recent (2024) versions of Mac~OS, it was possible to get Skim to view the
+PostScript output directly, with automatic updates on recompile,
+but the conversion from PostScript no longer works properly, so
+I now prefer to convert the EPS to PDF using "epstopdf". This
+slightly complicates the edit, compile, and preview loop. On the other hand
+the PDFs are generally more useful files to create, so it is worth the extra effort.
+
+I use a small Python script to automate the process: run
"mpost" with the "-recorder" option; scan the list of files to see what got
-produced; check which ones are PostScript; call "esptopdf" to make each one into a
+produced; check which ones are PostScript; call "epstopdf" to make each one into a
PDF file; remove each EPS file if successful. Your mileage may vary.\par
}}
@@ -226,8 +250,8 @@ the template I use:
\begin{texcode}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
-\begin{document}
\mplibtextextlabel{enable}
+\begin{document}
\begin{mplibcode}
\end{texcode}
\vskip-12pt
@@ -246,11 +270,16 @@ using the \texttt{standalone} class, which automatically adjusts the page size t
fit the contents of document, so is ideal for single diagrams. One small
disadvantage is that you can only produce a single PDF output file, so you need to have a
separate file for each picture, but the good news is that you get a much simpler and
-more effective integration with \LaTeX, in particular with the font environment.
-Since this only works with "lualatex" you have to use the "fontspec" package, as
-explained in section \ref{sec:neo-labels}.
+more effective integration with \LaTeX, in particular with the font environment, but
+as this only works with "lualatex" you have to use the "fontspec" package, as
+explained in section \ref{sec:neo-labels}.\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize 4in\noindent
+\hey\small If you like the fancier \MP\ format provided with ConTexT, you can use it directly with this
+"luamplib" approach. Just add this option to your preamble:
+\begin{texcode}
+\mplibsetformat{metafun}
+\end{texcode}}}
-\subsection{Integrated graphics with Lua\LaTeX}
+\subsection{Integrated graphics with Lua\LaTeX}\label{sec:lua-integrated}
If you are ready to use "lualatex" for processing your entire document, then you can
directly embed your \MP\ drawings in a series of "mplibcode" environments. Each one
@@ -264,26 +293,26 @@ modern machine this is not really an issue any more.
\label{plain-shapes}
In \MP\ there are two sorts of paths: open and closed.
-\mpic{-12pt}{closed-triangles}
+\mpic{-12pt}{paths-triangles}
A closed path is called a cycle, and is created with the \mpl{cycle} primitive like this:
\begin{code}
path t; t = origin -- (55,0) -- (55,34) -- cycle;
\end{code}
You can think of \mpl{cycle} as meaning ‘connect back to the start and close the path’.
-Note that you have explicitly put \mpl{cycle} to make a closed path. If you wrote
+Note that you have explicitly put \mpl{cycle} to make a closed path. If you wrote
\begin{code}[xrightmargin=-32pt]
path u; u = origin {right} .. (55,0) .. (55,34) .. {-2,-1} origin;
\end{code}
then $u$ would be an open path even though the last point is the same as the
first. Any path that does not have \mpl{cycle} at the end is an open
-path.\mpic{-12pt}{open-triangle}
+path.\mpic{-12pt}{paths-open-triangle}
You can use \mpl{draw} with either sort of path, but you can only use \mpl{fill} with a
cycle. This concept is common to most drawing languages but it’s often hidden: an
open path might be automatically closed for you when you try to fill it. \MP\ takes
a more cautious approach; if you pass an open path to \mpl{fill} you will get an error
that says ‘Not a cycle’, even if the first and last points are the same like path
-$u$ above.
+$u$ above.
If you want to write a macro that deals differently with the two types
of path, then you can use \mpl{cycle} in a boolean context to test
@@ -306,7 +335,7 @@ quite sure what the five joiners do, $\longrightarrow$\marginpar{%
--&straight line\cr
---&tense line\cr
\&&splice.\cr}\vss}} or you would like to bone up on exactly what \mpl{curl} and
-\mpl{tension} are for, then you are recommended to review Chapter 14 of \mfbook.
+\mpl{tension} are for, then you are recommended to review Chapter 14 of \mfbook.
\vfill\noindent
Most of the examples in this document use only the two simple joiners \mpl{--} and
@@ -317,47 +346,48 @@ point.
\subsection{Predefined closed paths}
There are several closed paths defined for you in plain \MP.
-\mpic{0pt}{closed-standards}
+\mpic{-36pt}{paths-standards}
\begin{itemize}
\item "unitsquare" is defined as the path
\mpl{(0,0)--(1,0)--(1,1)--(0,1)--cycle}. It runs counter-clockwise from the
origin, and you can use it to draw any rectangle with appropriate
use of \mpl{xscaled} and \mpl{yscaled}, or a parallelogram with \mpl{slanted},
or a diamond with \mpl{rotated} --- but note that the definition means
- that is it centred on point \mpl{(1/2, 1/2)} so you might want to
+ that is it centred on point \mpl{(1/2, 1/2)} so you might want to
shift it by \mpl{-(1/2,1/2)} before you transform it.
\item "fullcircle" which you can use to draw any circle or ellipse with
appropriate use of \mpl{xscaled} and \mpl{yscaled}. Unlike the square, it is defined so that it is centred
at the origin. But beware that it has unit \textit{diameter}, so its radius
is $0.5\unit{bp}$ long. The path runs counter-clockwise and starts at 3
- o’clock; which means \mpl{point 0 of fullcircle = 1/2 right} is true.
+ o’clock; which means \mpl{point 0 of fullcircle = 1/2 right} is true.
\item "superellipse()" which creates the shape beloved of the Danish designer Piet Hein. Unlike the
other two, this one is defined as a function rather than a \<path> constant, so you need to call it
like this:
\begin{code}
-path s;
-s = superellipse(1/2 right, 1/2 up, 1/2 left, 1/2 down, .8);
+path s;
+s = superellipse(1/2 right, 1/2 up, 1/2 left, 1/2 down, 13/16);
\end{code}
- to create a ‘unit’ shape that matches \mpl{fullcircle} as shown on the right.
- The fifth parameter is the ‘superness’: the value
- 1 makes it look almost square, 0.8 is about right, 0.5 gives you a diamond,
- and values outside the range $(0.5,1)$ give you rather weird propeller
+ to create a ‘unit’ shape that matches \mpl{fullcircle} as shown above.
+ The fifth parameter is the ‘superness’: the value \mpic{-132pt}{paths-superellipses}
+ 1 makes it look almost square; $\frac12$ gives you a diamond; a value somewhere
+ between $\frac34$ and $\frac78$ looks about right.\quad$\longrightarrow$\\
+ Values outside the range $(0.5,1)$ give you rather weird propeller
shapes.
- Note that, unaccountably, $\id{superellipse}()$ is defined
-in \texttt{plain.mp} with a \kw{def} rather than a \kw{vardef}.
-This means you need to enclose it in a group before you can
-transform it in any way. One way to do this is to use parentheses; or you
-can assign it to a \<path> variable, as shown above.
+ \nb Note that, unaccountably, $\id{superellipse}()$ is defined in
+ \texttt{plain.mp} with a \kw{def} rather than a \kw{vardef}. This means you
+ need to enclose it in a group before you can transform it in any way. One
+ way to do this is to use parentheses; or you can assign it to a \<path>
+ variable, as shown above.
\end{itemize}
\newpage\subsection{Points on the standard closed paths}
-\noindent\mpic{-10pt}{closed-points}%
+\noindent\mpic{-10pt}{paths-points}%
\textsc{Here are the three shapes} centred on the origin and labelled to show the points
along them. \textbf{Note} that the \textit{unitsquare} shape has been shifted so that it is
centred on the origin in all of these examples. The small red circle marks the
@@ -384,15 +414,15 @@ could try
center p -- subpath(0,1/5 length p) of p -- cycle
\end{code}
Clearly this works rather better with more circular shapes. Indeed for a circle you
-can convert directly between circumference angle and points along the path. So
-you have defined path $c$ to be scaled copy of \mpl{fullcircle}, then
-\mpl{point 1 of c} is $45^\circ$ round and 1~radian is \mpl{point 1.27324 of c}, (because
-$4/\pi \simeq 1.27324$).
+can convert directly between circumference angle and points along the path. So you
+have defined path $c$ to be scaled copy of \mpl{fullcircle}, then \mpl{point 1 of c}
+is $45^\circ$ round and 1~radian is \mpl{point 1.27324 of c}, (because $4/\pi \simeq
+1.27324$).
\vfill\noindent
In a closed path, the point numbering in \MP\ wraps round: so in a
circle, point $n$ is the same as point $n+8$; and in general point $n$ is the same as
-point $n+\hbox{\bf length }p$. This works with negative numbers too, so we could use
+point $n+\kw{length} p$. This works with negative numbers too, so we could use
\begin{code}
center p -- subpath(-1,1) of p -- cycle
\end{code}
@@ -405,17 +435,17 @@ drawarrow subpath(1/2, length p + 1/2) of p;
\newpage
\subsection{Regular polygons of a given radius}\label{polygons}
-\noindent\mpic{-10pt}{closed-polygons}%
+\noindent\mpic{-10pt}{paths-polygons}%
\textsc{Regular polygons} with a given radius can be defined or drawn directly with a simple inline loop:
-\vadjust{\moveright -60pt \vbox to 0pt{\vskip-3pt\includegraphics{little-hexagon.pdf}\vss}}
+\vadjust{\moveright -60pt \vbox to 0pt{\vskip-3pt\includegraphics{paths-little-hexagon}\vss}}
\begin{code}
draw for i=0 upto 5: 20 dir 60i -- endfor cycle;
\end{code}
which works because \mpl{dir d} expands to \mpl{right rotated d}. But
you might prefer to make a macro:
\begin{code}
-vardef polygon(expr n, r) =
- for i=0 upto n-1: (r, 0) rotated (360/n * i) -- endfor cycle
+vardef polygon(expr n, r) =
+ for i=0 upto n-1: (r, 0) rotated (360/n * i) -- endfor cycle
enddef;
\end{code}
This produces a closed path to represent an $n$-sided polygon that fits in a circle
@@ -425,64 +455,42 @@ previous segment chart.\rlap{\ $\rightarrow$}\\
If you need polygon paths that start at the top, you can just swap the
coordinates:
\begin{code}
-vardef polygon(expr n, r) =
- for i=0 upto n-1: (0, r) rotated (360/n * i) -- endfor cycle
+vardef polygon(expr n, r) =
+ for i=0 upto n-1: (0, r) rotated (360/n * i) -- endfor cycle
enddef;
\end{code}
-$$\includegraphics[width=0.66\textwidth]{closed-polygon-tops.pdf}$$
+$$\includegraphics[width=0.66\textwidth]{paths-polygon-tops}$$
\hey Note also that some extra care is required to find the centres of these shapes. The
\mpl{center} macro defined in "plain.mp" gives you the centre of the bounding box,
but this is not the same as the centre of the polygon when the number of sides is
-odd. What you need instead is the geometric median:
+odd. What you need instead is the geometric center or \textit{centroid}:
\begin{code}
-vardef median primary p =
+vardef centroid primary p =
origin for i=1 upto length p: + point i of p / length p endfor
enddef;
\end{code}
-This should work for any closed path, not just regular polygons.
+This should work for any closed path, not just regular polygons. For ways to
+label the vertices neatly, as shown above, see §\ref{sec:new-dynamic}.
\newpage
\subsection{Regular polygons of a given side length}\label{polygons-given-side}
But you might want a polygon with a fixed side instead of a fixed radius. This needs
-a little trigonometry, using the sine rule:\mpic{-42pt}{closed-fixed-polygon}
-\begin{code}
-vardef polygon_with_side(expr n, s) =
- save a, b, r; numeric a, b, r;
- a * n = 360; a + 2b = 180; r = s * sind(b) / sind(a);
- for i = 0 upto n-1: (0, r) rotated (a * i) -- endfor cycle
-enddef;
-\end{code}
-Which you can use like this to produce a nest of polygons $\rightarrow$
-\begin{smallcode}
-for n = 11 downto 3: path p; p = polygon_with_side(n, 72);
- fill p withcolor (n/32)[white, 3/4 if odd n: red else: blue fi];
- draw p;
-endfor
-\end{smallcode}
+a little trigonometry, using the sine rule:\mpic{-60pt}{paths-fixed-polygon}
+\smallmpexternal[firstline=7, lastline=11]{paths-fixed-polygon.mp}
+\noindent
+Which you can use like this to produce a nest of polygons \rightarrowfill
+\smallmpexternal[firstline=12, lastline=16]{paths-fixed-polygon.mp}
+
+\vfill
+\noindent
These polygon paths are centred on $(0, 0)$ but
sometimes it is more convenient to construct a polygon on a known segment
-rather than working out how to rotate and shift it into place.
-$$\includegraphics[width=0.9\textwidth]{closed-polygon-chain.pdf}$$
-Here is a way to do that using the \mpl{of} syntax in the macro construction
-$\longrightarrow$
+rather than working out how to rotate and shift it into place.
+$$\includegraphics[width=0.9\textwidth]{paths-polygon-chain}$$
+Here is a way to do that using the “\mpl{of}†syntax in the macro construction \rightarrowfill
\vadjust{\moveright 384pt\vbox to 0pt{\vss
-\begin{smallcode}
-vardef poly expr n of p = save x, y;
- z0 = point 0 of p; z1 = point 1 of p;
- for i=2 upto n-1:
- z[i] = z[i-2] rotatedabout(z[i-1], 180(2/n-1));
- endfor
- for i=0 upto n-1: z[i] -- endfor cycle
-enddef;
-path P[]; P3 = for i=0 upto 2: 6 up rotated 120i -- endfor cycle;
-fill P3 withcolor 3/4 red; draw P3;
-for n = 4 upto 23:
- numeric m; m = floor(n / 2);
- P[n] = poly n of subpath (m, m-1) of P[n-1];
- fill P[n] withcolor (n/32)[3/4 if odd n: red else: blue fi, white];
- draw P[n]; label(decimal n, median(P[n]));
-endfor
-\end{smallcode}\vskip -12pt}}
+\smallmpexternal[firstline=6,lastline=22]{paths-polygon-chain.mp}
+\vskip -42pt}}
\newpage\subsection{Curved polygons}
@@ -491,11 +499,11 @@ endfor
\mpl{..} you would get a circle, and contrariwise, if you try
\mpl{tensepath(fullcircle scaled 20)} you will get a regular octagon. But we can
also adjust the directions at the corners to make a variety of closed polygon shapes
-with closed edges.
+with closed edges.
One of the most pleasing is the Reuleaux polygon, with circular arcs for edges.
-$$\includegraphics[width=0.9\textwidth]{closed-reuleaux-set.pdf}$$
-The figure on the right attempts to explain the geometry.\mwpic{-160pt}{closed-reuleaux-geometry}
+$$\includegraphics[width=0.9\textwidth]{paths-reuleaux-set}$$
+The figure on the right attempts to explain the geometry.\mwpic{-160pt}{paths-reuleaux-geometry}
\begin{code}
vardef reuleaux(expr n, r) =
save a; numeric a; a = 90/n;
@@ -506,38 +514,16 @@ enddef;
\end{code}
If you swap the directions at each point you get shapes that are not quite like
hypocycloids; play about a bit more to get flower shapes or windmills.
-$$\includegraphics[width=0.9\textwidth]{closed-antireuleaux-set.pdf}$$
+$$\includegraphics[width=0.9\textwidth]{paths-antireuleaux-set}$$
\newpage
\subsection{A triangle of Schläfli polygons}\label{sec:gcd}
Apart from the curious polygon patterns in the display, the main \MP\ point of interest
-is the recursive "gcd" macro to find the greatest common divisor.\mpic{-108pt}{gons}
-
-\begin{code}
-input colorbrewer-rgb
+is the recursive "gcd" macro to find the greatest common
+divisor.\mpic{-108pt}{paths-schlafli-polygons}
-vardef gcd(expr a, b) =
- if b = 0: a else: gcd(b, a mod b) fi
-enddef;
-
-beginfig(1);
-for n=2 upto 24:
- for s=1 upto floor n/2:
- pair p; p = (12n - 24s, -24n);
- path gon; gon =
- for t=0 upto n/gcd(s,n) - 1:
- 10 up rotated (360/n * s * t) --
- endfor cycle;
- if (n mod s = 0):
- fill gon shifted p withcolor Blues 9 2;
- label("$" & decimal (n/s) & "$", p);
- fi
- draw gon shifted p withpen pencircle scaled 1/8;
- endfor
-endfor
-endfig;
-\end{code}
+\mpexternal[firstline=6,lastline=26]{paths-schlafli-polygons.mp}
\noindent
The macro also leads directly to an efficient way to find the least common multiple:
@@ -553,39 +539,38 @@ overflow.
Plain \MP\ has a built-in function to compute the intersection points of two paths, and
there’s a handy high level function called "buildcycle" that uses this function to
create an arbitrary closed path.
-\mpic{0pt}{area-under-graph}
+\mpic{-36pt}{paths-area-under-graph}
The arguments to the function are just a list of paths, and providing the paths all
intersect sensibly, it
returns a closed path that can be filled or drawn. This is often used for colouring an
area under a function in a graph.
Here is an example. The red line has been defined
-as path "f" and the two axes as paths "xx", and "yy". The blue area was defined
+as path "f" and the two axes as paths "xx", and "yy". The light blue area was defined
with
-\begin{code}
-buildcycle(yy shifted (1u,0), f, yy shifted (2.71828u,0), xx)
-\end{code}
+\mpexternal[firstline=18,lastline=18]{paths-area-under-graph.mp}
+\noindent
Note the re-use of the $y$-axis path shifted along by different amounts.
-\smallskip\noindent
+\vfill\noindent
There are similar examples in the \MP\ manual, but "buildcycle" can also
be useful in more creative graphics.
Here’s a second example that uses closed paths to give an illusion of depth to a simple
graphic of the planet Saturn.
-\mpic{0pt}{saturn}
+\mpic{0pt}{paths-saturn}
\marginpar{\hbox{}\vskip1.3in\raggedright\noindent\textbf{Notes}\begin{itemize}
- \item The first five paths are just circles and ellipses based on "fullcircle".
- \item The drawing is done inside an "image" simply so that the final result can
+ \item The first five paths are just circles and ellipses based on \mpl{fullcircle}.
+ \item The drawing is done inside an \mpl{image} simply so that the final result can
be drawn at an angle
- \item "unfill gap" is shorthand for "fill gap withcolor background"
- \item The subpaths passed to "buildcycle" are chosen carefully to make sure we
+ \item \mpl{unfill gap} means: \mpl{fill gap withcolor background}
+ \item The subpaths passed to \mpl{buildcycle} are chosen carefully to make sure we
get the intersections at the right points and so that the component paths
- all run in the same direction. Note that "subpath (8,4) of globe" runs
+ all run in the same direction. Note that \mpl{subpath (8,4) of globe} runs
clockwise (that is backwards) from point 8 to point 4.
\end{itemize}}
-\mpexternal{saturn-code.mp}
+\mpexternal[firstline=7,lastline=23]{paths-saturn.mp}
\newpage\subsection{The implementation of \texttt{buildcycle}}
-\textsc{The implementation} of "buildcycle" in plain \MP\ is interesting for a number of
+\textsc{The implementation} of \mpl{buildcycle} in plain \MP\ is interesting for a number of
reasons. Here it is copied from "plain.mp" (with minor simplifications) $\longrightarrow$
\vadjust{\moveright5.5in\vbox to 0pt{\kern-1cm%
\begin{code}
@@ -614,19 +599,19 @@ enddef;
Notice how freely the indentation can vary; this is both a blessing
(because you can line up things clearly) and a curse (because the syntax may not
be very obvious at first glance). Notice also the different ways we can use a
-$\kw{for}$-loop. The first two are used at the ‘outer’ level to repeat complete
+\mpl{for}-loop. The first two are used at the ‘outer’ level to repeat complete
statements (that end with semi-colons); the third one is used at the ‘inner’ level
to build up a single statement.
-The use of a "text" parameter allows us to pass a comma-separated list as an
+The use of a \mpl{text} parameter allows us to pass a comma-separated list as an
argument; in this case the list is supposed to be a list of path expressions that
-(we hope) will make up a cycle. The first "for" loop provides us with a standard
+(we hope) will make up a cycle. The first \mpl{for} loop provides us with a standard
idiom to split a list; in this case the comma-separated value of "input_path_list"
is separated into into a more convenient array of paths called "pp" indexed by "k".
-Note that the declaration of the array as "path" forces the argument to be a list of
+Note that the declaration of the array as \<path> forces the argument to be a list of
paths.
-The second "for" loop steps through this array of paths looking for intersections.
+The second \mpl{for} loop steps through this array of paths looking for intersections.
The index "j" is set to be "k" when "i=1", and then set to the previous value of "i"
at the end of the loop; in this way
"pp[j]" is the path before "pp[i]" in what is supposed to be a cycle.
@@ -638,14 +623,12 @@ by reversing the previous path and setting the $b$-point indirectly by subtracti
the time returned from the length of the path.
If all has gone well, then "ta" will hold all the start points of the desired
-subpaths, and "tb" all the corresponding end
-points.
-The third and final "for" loop assumes that this is indeed the case, and tries to
-connect them all together. Note that it uses ".." rather than "&" just in case the
-points are not quite co-incident; finally it finishes with a
-\mpl{cycle} to close the path even though point "tb" of path "k" should be identical (or
-at least very close) to
-point "ta" of path "0".
+subpaths, and "tb" all the corresponding end points. The third and final \mpl{for}
+loop assumes that this is indeed the case, and tries to connect them all together.
+Note that it uses \mpl{..} rather than \mpl{&} just in case the points are not quite
+co-incident; finally it finishes with a \mpl{cycle} to close the path even though
+point \mpl{tb[k] of pp[k]} should be identical (or at least very close) to point
+\mpl{ta[0] of pp[0]}.
This implementation of \mpl{buildcycle} works well in most cases, provided that there
are enough components to the cycle of paths. If you only have two paths, then the
@@ -656,16 +639,10 @@ be contained within the other. This is explored in the next section.
\subsection{Strange behaviour of \texttt{buildcycle} with two closed paths}
The implementation of "buildcycle" in plain \MP\ can get confused if you use it with
-just two paths. Consider the following example: \mpic{0pt}{overlaps-missing-filler}
-\begin{code}
-beginfig(1);
- path A, B;
- A = fullcircle scaled 2.5cm;
- B = fullcircle scaled 1.8cm shifted (1cm,0);
- fill buildcycle(A,B) withcolor .8[blue,white];
- drawarrow A; drawarrow B;
-endfig;
-\end{code}
+just two paths. Consider the following example: \mpic{0pt}{paths-overlaps-missing-filler}
+
+\mpexternal[firstline=7,lastline=14]{paths-overlaps-missing-filler.mp}
+
When we compile this example, we get no error message from "buildcycle", but there
is no fill colour visible in the output. The problem is that the points found by
"buildcycle" are the same both times that it steps through the middle loop, so
@@ -673,12 +650,12 @@ the closed path it returns consists of two identical (or very close) points and
so the fill has zero area.
Now observe what happens when we rotate and reverse each of the paths in
-turn.\mpic{-24pt}{overlaps-default-fillers}
+turn.\mpic{-24pt}{paths-overlaps-default-fillers}
Number 1 corresponds to the example shown above; point~0 of~$A$ is inside the closed
path $B$. In~2 we have rotated path $A$ by 180° so that the start of path~$A$ is no
longer inside $B$, and now "buildcycle" works ‘properly’ --- but this is the only
time it does so. In~3, we've rotated $B$ by 180° as well, so that $B$ starts inside
-$A$ and as expected "buildcycle" fails. In 4 we've rotated $A$ back to it's
+$A$ and as expected "buildcycle" fails. In 4 we've rotated $A$ back to its
original position, so that both paths start inside each other; and we get the
union of the two shapes. In 5--8, we've repeated the exercise with path $A$
reversed, and "buildcycle" fails in yet more interesting ways.
@@ -743,116 +720,12 @@ vardef overlap(expr a, b) =
enddef;
\end{smallcode}
Using this "overlap" macro in place of "buildcycle" produces less surprising
-results.\mpic{-2in}{overlaps}
-
-\newpage
-\subsection{Fitting dashed lines to a path}
-
-\textsc{This one is} perhaps for perfectionists, but also shows how simple it
-is to make useful adjustments in \MP. As you will know, plain \MP\ provides two
-built-in dash patterns, so that you can draw a path \mpl{dashed withdots} or
-\mpl{dashed evenly}.
-\vadjust{%
-\moveright384pt\vbox to 0pt{\vskip-46pt\hsize 4.2in\small
-$$
-\begin{mplibcode}
-vardef exactly(expr a) =
- save m; numeric m; 2m = (a-6) / round(a/6);
- dashpattern(on m off m)
-enddef;
-vardef gooddots(expr a) =
- save m; numeric m; 2m = (a-5) / round(a/5);
- dashpattern(off m on 0 off m)
-enddef;
- beginfig(1);
- for i=2 upto 8:
- path c[];
- c1 = fullcircle scaled 16i shifted 80 left;
- c2 = fullcircle scaled 16i shifted 80 right;
- draw c1 dashed evenly withcolor 2/3 blue;
- draw c2 dashed exactly(arclength c2) withcolor 1/2 red;
- %draw c1 shifted 160 down dashed withdots withcolor 2/3 blue;
- %draw c2 shifted 160 down dashed gooddots(arclength c2) withcolor 1/2 red;
- endfor
- endfig;
-\end{mplibcode}
-$$
-
-\noindent
-The blue circles on the left were drawn with \mpl{dashed evenly}, and the uneven
-gaps are noticeable at the “three o’clock†positions where the paths begin and end.
-As you can see the default dash spacing looks fine at some sizes but bad on others. On the right you can see the
-same circular paths coloured red, and drawn with \mpl{dashed exactly(arclength c,
-6)}.
-
-$$
-\begin{mplibcode}
-vardef exactly(expr a, u) =
- save m; numeric m; 2m = a / round(a/u);
- dashpattern(on m off m)
-enddef;
- beginfig(1);
- for i=2 upto 8:
- path c[];
- c1 = unitsquare shifted -(1/2, 1/2) scaled 16i shifted 80 left;
- c2 = unitsquare shifted -(1/2, 1/2) scaled 16i shifted 80 right;
- draw c1 dashed evenly withcolor 2/3 blue;
- draw c2 dashed (exactly(arclength c2, 8) shifted 6 right) withcolor 1/2 red;
- endfor
- endfig;
-\end{mplibcode}
-$$
-Other paths may require a bit more ingenuity and thought. Because the square paths
-have four equal sides, they work better with a target dash length that is a multiple
-of 4. Here the blue squares on the left use the default \mpl{dashed evenly}, and the
-red on the right, \mpl{exactly(arclength c2, 8)} \mpl{shifted 6 right}. The shift makes
-the corners look better.
-
-
-\vss}}
-
-The keyword \mpl{dashed} gives you access to the PostScript "setdash" command, its
-argument is a special \<picture> defined with the \MP\ \mpl{dashpattern} function.
-If you look in "plain.mp" you will find these declarations:
-\begin{code}
-picture evenly,withdots;
-evenly = dashpattern(on 3 off 3); % dashed evenly
-withdots = dashpattern(off 2.5 on 0 off 2.5); % dashed withdots
-\end{code}
-The detailed syntax is explained in §9.4 of the \MP\ manual, but essentially
-\mpl{withdots} creates a unit 5 points long with a dot in the middle, and
-\mpl{evenly} creates a unit 6 points long with the dashes 3pt long (plus the round
-bit at the end of each dash, unless you have changed \mpl{linecap}) and gaps 3pt
-long (minus any round bits).
-
-You probably also know that you can adjust these sizes by applying a suitable
-scaling, so that \mpl{dashed withdots scaled 1/2} gives a rather denser dotted line,
-and \mpl{dashed evenly scaled 4} will give you very long dashes. But you may also
-notice that the dash patterns (particularly the longer ones) do not always fit your
-paths exactly -- this is especially noticeable with closed paths, where you may end
-up with one unsightly long dash or a very short gap a the point where the path
-begins and ends.
-
-Fortunately there is a very simple solution: adjust the length of the dash pattern
-so that an integer number of dash units exactly fit your path.
-\begin{code}
-vardef exactly(expr a, u) =
- save m; numeric m; 2m = (a-u) / round(a/u);
- dashpattern(on m off m)
-enddef;
-\end{code}
-Here "a" is supposed to be the \mpl{arclength} of your path, and "u" the desired
-unit size, so you can use it like this:
-\begin{code}
-path c; c = fullcircle scaled 200;
-draw c dashed exactly(arclength c, 6);
-\end{code}
-to get a close approximation to \mpl{dashed evenly} that exactly fits the path.
+results.\mpic{-2in}{paths-overlaps}
\newpage
\section{Numbers}
-This section discusses plain \MP's scalar numeric variables
+This section discusses plain \MP\ scalar numeric variables
and what you can do with them.
\MP\ inherits its unusual native system of scaled numbers from \MF; like many of
Knuth's creations it is slightly quirky, but works very well once you get the hang
@@ -872,19 +745,16 @@ implications:
choose fractional step-values in a "for" loop; the errors can accumulate so that
you may miss your expected terminal value.\vadjust{\moveright5.5in\vbox to
0pt{\kern-2in\hsize4in\noindent
- Compare the following two snippets:
+ Compare the following two snippets:
$$\vbox{\halign{#\hfil\quad&#\hfil\cr
Code&Output\cr\noalign{\smallskip\hrule\bigskip}
- \vtop{\parindent0pt\hsize2.2in
- \bgroup\obeylines
- $\kw{for}$ $i=0$ \kw{step} $1/10$ \kw{until} $1$:
- \quad$\kw{show}$ $i$;
- $\kw{endfor}$
- \egroup
-
-}
+\vtop{\begin{code}[xleftmargin=0pt, xrightmargin=160pt]
+for i = 0 step 1/10 until 1:
+ show i;
+endfor
+\end{code}}
&
- \vtop{\parindent0pt\parskip-2pt\obeylines\hsize60pt\tt
+ \vtop{\parindent0pt\parskip-2pt\obeylines\hsize60pt\ttfamily
>> 0
>> 0.1
>> 0.20001
@@ -897,15 +767,13 @@ implications:
>> 0.90005
}
\cr\noalign{\bigskip}
- \vtop{\parindent0pt\hsize2.2in
- \bgroup\obeylines
- $\kw{for}$ $i=0$ \kw{step} $1$ \kw{until} $10$:
- \quad$\kw{show}$ $i/10$;
- $\kw{endfor}$
- \egroup
-}
+\vtop{\begin{code}[xleftmargin=0pt, xrightmargin=160pt]
+for i = 0 step 1 until 10:
+ show i/10;
+endfor
+\end{code}}
&
- \vtop{\parindent0pt\parskip-2pt\obeylines\hsize60pt\tt
+ \vtop{\parindent0pt\parskip-2pt\obeylines\hsize60pt\ttfamily
>> 0
>> 0.1
>> 0.2
@@ -919,7 +787,8 @@ implications:
>> 1
}\cr\noalign{\bigskip\hrule}\cr
}}$$
-You get 11 iterations in the second but only 10 with the first.
+Unless you run this with "-numbersystem=decimal", you will get
+11 iterations in the second but only 10 with the first.
\vss}}
\item The system limits you to numbers that are less than 4096 in absolute value.
@@ -951,7 +820,7 @@ and \id{eps}:
\begin{itemize}
\item $\id{eps}$ is defined to be a
small amount that is noticeable to \MF’s rounding algorithms, namely
-${32\over65536}={1\over2048}\simeq 0.00049$. As a distance on the page or screen it's invisible at
+${32\over65536}={1\over2048}\simeq 0.00049$. As a distance on the page or screen, it's invisible at
any resolution less than 150,000 dots per square inch. If you were designing fonts
in \MF, $\id{eps}$ could help you avoid bad choices of pixels at low resolutions, but in
\MP\ it's only really useful in comparisons that might suffer from rounding errors.
@@ -974,9 +843,9 @@ have.
\vadjust{\moveright5.5in\vbox to 0pt{\kern-221pt\hsize 4.25in
\noindent
Running the toy program:
-\par\bigskip
-$\kw{show} \id{numbersystem}, \id{eps}, \id{epsilon}, \id{infinity}; \kw{end}\!.$
-\par\bigskip\noindent
+\begin{code}
+show numbersystem, eps, epsilon, infinity; end.
+\end{code}
gives the following results with the different
number systems:
@@ -1109,54 +978,15 @@ Note that $\kw{mod}$ preserves any fractional part, so $355/113 \mathrel{\kw{mod
\smallskip
\parshape=1 0pt 3.4in
This behaviour is usually what you want.
-\vadjust{\moveright 266pt \vbox to 0pt{\noindent
+\vadjust{\moveright 266pt \vbox to 0pt{\noindent
\begin{mplibcode}
input clocks
-beginfig(1); draw clock(hour, minute) scaled 0.8; endfig;
+draw clock(hour, minute) scaled 0.8;
\end{mplibcode}\vss}}
For example we can use it to turn the time of day into an appropriate rotation for
the hands of a clock.%
\vadjust{\moveright 384pt\vbox to 0pt{\kern-196pt
-\begin{code}
-path hand[];
-hand1 = origin .. (.257,1/50) .. (.377,1/60)
- & (.377,1/60) {up} .. (.40,3/50)
- .. (.60, 1/40) .. {right} (.75,0);
-hand1 := (hand1 .. reverse hand1 reflectedabout(left,right)
- .. cycle) scaled 50;
-hand2 = origin .. (.60, 1/64) .. {right} (.925,0);
-hand2 := (hand2 .. reverse hand2 reflectedabout(left,right)
- .. cycle) scaled 50;
-
-% hour of the day to degrees
-vardef htod(expr hours) = 30*((15-hours) mod 12) enddef;
-vardef mtod(expr minutes) = 6*((75-minutes) mod 60) enddef;
-
-vardef clock(expr hours, minutes) = image(
- % face and outer ring
- fill fullcircle scaled 100 withcolor 1/256(240, 240, 230);
- draw fullcircle scaled 99 withcolor .8 white;
- draw fullcircle scaled 100 withpen pencircle scaled 7/8;
- % numerals
- for h=1 upto 12:
- label( decimal h infont "bchr8r", (40,0) rotated htod(h));
- endfor
- % hour and minute marks
- for t=0 step 6 until 359:
- draw ((48,0)--(49,0)) rotated t;
- endfor
- drawoptions(withpen pencircle scaled 7/8);
- for t=0 step 30 until 359:
- draw ((47,0)--(49,0)) rotated t;
- endfor
- % hands rotated to the given time
- filldraw hand1 rotated htod(hours+minutes/60);
- filldraw hand2 rotated mtod(minutes);
- % draw the center on top
- fill fullcircle scaled 5;
- fill fullcircle scaled 3 withcolor .4 white;
-) enddef;
-\end{code}
+\mpexternal[firstline=9,lastline=46,xleftmargin=0pt]{clocks.mp}
\vss}}
In the program given on the right, this idea
is used to define functions that convert from hours and minutes
@@ -1170,9 +1000,9 @@ to give a sort of graphical time stamp.
\vfill
There is also a "round" function that rounds a number to the nearest integer. It is
-essentially defined as $\mathop{\kw{floor}}(x+0.5)$ except that it is enhanced to
-deal with $\kw{pair}$ variables as well. If you round a pair the $x$-part and
-the $y$-part are rounded separately, so that $\mathop{\kw{round}}(3.14159, 2.71828)
+essentially defined as $\kw{floor}(x+0.5)$ except that it is enhanced to
+deal with \<pair> variables as well. If you round a pair the $x$-part and
+the $y$-part are rounded separately, so that $\kw{round}(3.14159, 2.71828)
= (3,3)$.
The "round" function only takes a single argument, but you can use it to round to a
@@ -1185,12 +1015,11 @@ must remain less than 32767 if you are using the default number system.
\newpage
\subsection{Integer powers}
-\textsc{Even if you use} one of the new number systems, you may occasionally get
-caught out by the \mpl{**} operator. As the table on the right shows, you may get
+\textsc{Occasionally} you might get
+caught out by the implementation of the \mpl{**} operator. As the table on the right shows, you may get
an approximate answer from \mpl{x ** y} even when $x$ and $y$ are both integers.
\vadjust{\moveright 384pt\vbox to 0pt{\kern -2pt
$$\begin{mplibcode}
-beginfig(0);
%primarydef x ** y = 1 for n=1 upto y: * x endfor enddef;
for x=1 upto 19:
for y = 1 upto 7:
@@ -1206,32 +1035,31 @@ endfor
label.lft("Results of \mpl{x**y} for small values, using", lrcorner currentpicture shifted 36 up);
label.lft("the default \mpl{scaled} number system", lrcorner currentpicture shifted 24 up);
currentpicture := currentpicture scaled 0.8;
-endfig;
\end{mplibcode}$$\vss}}
Note that the squares are all integers, and the powers of two appear to be ok
(although if the page was wider you would see that \mpl{2**9} is $512.00002$), but
-that with a couple of exceptions cubes and higher powers are slightly off. Changing
-the number system makes it worse; even $x^1$ is not always an integer. The reason
+that with a couple of exceptions cubes and higher powers are all slightly off. Changing
+to one of the new number systems makes it worse; even $x^1$ is not always an integer. The reason
can be found in the way that the \mpl{**} operator is defined in "plain.mp".
\begin{smallcode}[xleftmargin=0pt, xrightmargin=-36pt]
primarydef x ** y = if y = 2: x * x else: takepower y of x fi enddef;
def takepower expr y of x =
- if x > 0:
+ if x > 0:
mexp(y * mlog x)
- elseif (x = 0) and (y > 0):
+ elseif (x = 0) and (y > 0):
0
- else:
+ else:
if y = floor y:
if y >= 0: 1 for n=1 upto y: * x endfor
else: 1 for n=-1 downto y: / x endfor
fi
- else:
+ else:
hide(errmessage "Undefined power: " & decimal x & "**" & decimal y)
- fi
- fi
+ fi
+ fi
enddef;
\end{smallcode}
-This is inherited direction from plain \MF, and as it says in the \mfbook, it is
+This is inherited directly from plain \MF, and as it says in the \mfbook, it is
optimized for $x^2$ and takes care to handle correctly negative numbers and zeros.
But for all positive values of $x$ other than 2 it is implemented using logs, and
the results are therefore only approximate. To avoid confusion where this might
@@ -1246,7 +1074,7 @@ primarydef x ** y = 1 for n=1 upto y: * x endfor enddef;
\newpage
\section{Pairs, triples, and other tuples}
-\vpic{7pt}{random-selection}
+\vpic{7pt}{pairs-random-selection}
\noindent
\MP\ inherits a generalized concept of number from \MF\ that includes ordered pairs.
@@ -1311,7 +1139,7 @@ vardef z@#=(x@#,y@#) enddef;
which you can use to find orthogonal points.
\bigskip\noindent
-\includegraphics{random-function}
+\includegraphics{pairs-random-function}
\vss}}%
The deceptively simple definition of $\id{z}$ as a subscripted macro allows you to
write "z1 = (10,20);" and have it automatically expanded into the equivalent of
@@ -1387,34 +1215,8 @@ However \MP\ does let you add (and subtract) two pairs, so complex addition and
subtraction are just done with the
normal operators.
\vadjust{\moveright 384pt\vbox to 0pt{\vskip -3.74in
-$$\includegraphics{complex-operators}$$
-\begin{code}
-beginfig(1);
- numeric u; u = 1cm;
- z1 = 2 dir 15; z2 = 1.2 dir 60;
- z3 = z1+z2; z4 = z1 zscaled z2; z5 = (x1,-y1);
- drawoptions(withcolor 2/3 white);
- draw (1/2 left -- 3 right) scaled u ;
- draw (1/2 down -- 3 up ) scaled u ;
- draw subpath (0,3) of fullcircle scaled 2u rotated -22.5;
- drawoptions();
- dotlabel.lrt (btex $\scriptstyle 1$ etex, (u,0));
- dotlabel.ulft(btex $\scriptstyle i$ etex, (0,u));
- interim ahangle := 30;
- forsuffixes @=1,2,3,4,5:
- x@ := x@ * u; y@ := y@ * u;
- drawarrow origin -- z@
- cutafter fullcircle scaled 5 shifted z@
- withcolor 2/3 if @ < 3: blue else: red fi;
- endfor
- fill fullcircle scaled dotlabeldiam;
- dotlabel.rt (btex $A$ etex, z1);
- dotlabel.urt(btex $B$ etex, z2);
- dotlabel.top(btex $A+B$ etex, z3);
- dotlabel.top(btex $A \times B$ etex, z4);
- dotlabel.rt (btex $\bar{A}$ etex, z5);
-endfig;
-\end{code}
+$$\includegraphics{pairs-complex-operators}$$
+\mpexternal[firstline=6,lastline=30]{pairs-complex-operators.mp}
\vss}}%
To get the complex conjugate you
could use "reflectedabout(left,right)", but it's probably easier just to write
@@ -1442,23 +1244,11 @@ usual operations when they are required\dots
Since multiplication by $z$ can be thought of as a transformation consisting of
rotation by the argument of $z$ and scaling by $|z|$, you can define the complex
inverse and complex square root simply using \mpl{angle} and \mpl{abs}.
-\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip -24pt
-\centerline{\includegraphics{complex-inverse-and-sqrt}}
-The interesting part of the left hand figure was drawn as follows:
-\begin{smallcode}
-input colorbrewer-rgb
-for i=1 upto 3:
- z[i] = (3/2 + 1/4 normaldeviate) * dir (16 i + normaldeviate);
- path a;
- a = z[i] scaled 42 -- origin -- zinverse(z[i]) scaled 42;
- drawarrow a cutafter fullcircle scaled 5 shifted point 2 of a
- withcolor SetTwo[7][2+i];
- drawdot point 0 of a withpen pencircle scaled dotlabeldiam;
- drawdot point 2 of a withpen pencircle scaled dotlabeldiam;
- drawdot point 2 of a withpen pencircle scaled 2 withcolor white;
-endfor
-\end{smallcode}
-The only difference on the right is that the drawing used "zsqrt()".
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip -84pt
+\centerline{\includegraphics{pairs-complex-inverse-and-sqrt}}
+\noindent
+The drawing uses the two functions defined on the left.
+\smallmpexternal[firstline=11,lastline=44,xleftmargin=0pt]{pairs-complex-inverse-and-sqrt.mp}
\vss}}
\smallskip\noindent
@@ -1470,9 +1260,9 @@ z zscaled zinverse(z) = (1,0)
In other words you need to find a complex number with an argument that is the
negative of the argument of $z$ and a modulus that will scale $|z|$ to 1.
You can use the polar notation with "dir" to write this directly:
-\begin{code}
-vardef zinverse(expr z) = 1/abs z * dir - angle z enddef;
-\end{code}
+
+\mpexternal[firstline=6,lastline=6]{pairs-complex-inverse-and-sqrt.mp}
+
The complex division, $z/w$, can now be done as: \mpl{z zscaled zinverse(w)}.
The only difficulty with this function is how it deals with zero, or rather with
the point $(0,0)$. Since `\mpl{abs (0,0)}' gives $0$, the function will give you
@@ -1491,11 +1281,7 @@ def zsqrt(expr z) = sqrt(abs z) * dir 1/2 angle z enddef;
This function also has a difficulty with the point $(0,0)$, because "angle (0,0)" is
not well defined, and so \MP\ throws an error. If you want a function that
correctly returns $(0,0)$ as its own square root, then try something like this:
-\begin{code}
-def zsqrt(expr z) =
- if abs z > 0: sqrt(abs z) * dir 1/2 angle fi z
-enddef;
-\end{code}
+\mpexternal[firstline=7,lastline=9]{pairs-complex-inverse-and-sqrt.mp}
\newpage
\subsubsection{Using complex numbers to draw fractals}
@@ -1503,57 +1289,10 @@ enddef;
As an example of what you can do with complex arithmetic, here is a version of the
diagram from §4.1 of Knuth's \textsl{Seminumerical Algorithms} showing $S$, the set
of all points that can be written as $\sum_{k\ge1}a_k(i-1)^{-k}$.
-\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip -81pt
-\begin{smallcode}
-vardef fizz(expr X) =
- pair m, n;
- m = right;
- n = origin;
- numeric a, x;
- x = X;
- forever:
- exitif x = 0;
- m := m zscaled zinverse((-1, 1));
- a := x mod 2;
- n := n + a * m;
- x := x div 2;
- endfor
- n
-enddef;
-input colorbrewer-rgb
-color shade[];
-shade0 = Reds 5 4; shade1 = Oranges 5 4;
-shade2 = Greens 5 4; shade3 = Blues 5 4;
-
-beginfig(1);
- numeric s, t; s = 256; t = 4;
- for n=0 upto (s/t*s/t-1):
- numeric h, v;
- h = floor 1/8 (n mod 32);
- v = n mod 4;
- fill fullcircle scaled t shifted (fizz(n) scaled s)
- withcolor (1/2 + 1/8 v)[white, shade[h]];
- endfor;
-
- path xx, yy;
- xx = (left--right) scaled (s+8);
- yy = xx rotated 90;
- for i=-1 upto 1:
- draw xx shifted (0, s*i) withpen pencircle scaled 1/8;
- draw yy shifted (s*i, 0) withpen pencircle scaled 1/8;
- endfor
- dotlabel.lrt(btex $-1-i$ etex, (-1, -1) scaled s);
- dotlabel.lrt(btex $-1$ etex, (-1, 0) scaled s);
- dotlabel.lrt(btex $-1+i$ etex, (-1, 1) scaled s);
- dotlabel.lrt(btex $-i$ etex, (0, -1) scaled s);
- dotlabel.lrt(btex $+i$ etex, (0, 1) scaled s);
- dotlabel.lrt(btex $+1-i$ etex, (1, -1) scaled s);
- dotlabel.lrt(btex $+1$ etex, (1, 0) scaled s);
- dotlabel.lrt(btex $+1+i$ etex, (1, 1) scaled s);
-endfig;
-\end{smallcode}
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip -36pt
+\mpexternal[firstline=7,lastline=42,xleftmargin=0pt]{pairs-double-dragon.mp}
\vss}}
-$$\includegraphics[width=\textwidth]{double-dragon.pdf}$$
+$$\includegraphics[width=\textwidth]{pairs-double-dragon}$$
\vbox to 0pt{\noindent\small\textbf{Note}: you can adjust the “resolution†with the parameter $t$, but don't
make it smaller than 1 if you are using the default number system; the diagram looks
a bit strange unless $t$ is an integer power of 2.\vss}
@@ -1584,25 +1323,26 @@ or, slightly more idiomatically:
As you can see, you can apply implicit multiplication to a \mpl{color}, so after
the declaration above "2 brg" would be a valid colour, although you have to think
a bit to know what that means in terms of colour in your drawings.
-\vadjust{\moveright 384pt\vbox to 0pt{\kern-72pt
+\vadjust{\moveright 396pt\vbox to 0pt{\kern-144pt\noindent
To use RGB hex strings, you'll need to write a function:
\begin{code}
vardef hexrgb(expr Spec) =
- save r, g, b;
- numeric r, g, b;
- r = hex(substring (1,3) of Spec);
- g = hex(substring (3,5) of Spec);
- b = hex(substring (5,7) of Spec);
- 1/256(r,g,b)
+ save r, g, b;
+ numeric r, g, b;
+ r = hex substring (1,3) of Spec;
+ g = hex substring (3,5) of Spec;
+ b = hex substring (5,7) of Spec;
+ 1/256(r,g,b)
enddef;
brg = hexrgb("#014225");
pbr = hexrgb("#df3439");
\end{code}
+\noindent\hey The \mpl{hex} function is a built-in primitive operation.
\vss}}%
Plain \MP\ defines five basic colour constants: \mpl{red}, \mpl{green},
\mpl{blue}, \mpl{white}, \mpl{black}. These are quite useful with leading
-fractions: \mpl{2/3 red} gives a nice dark red, that's good for drawing lines you
+fractions: \mpl{2/3 red} gives a nice dark red, that is good for drawing lines you
want to emphasize; \mpl{1/2 white} gives you a shade of grey; and so on. But since
\mpl{black} is defined as \mpl{(0,0,0)}, \mpl{1/2 black} just gives you \mpl{black}.
@@ -1612,21 +1352,9 @@ easier to read. Much more usefully, you can use the mediation notation to get a
colour that is part way between two others. So \mpl{1/2[red, white]} gives you a
shade of pink, and \mpl{2/3[blue, white]} a sort of sky blue. You can also use this
idea to vary colour with data, as in \mpl{(r)[red, blue]} where \mpl{r} is some
-calculated value. \vadjust{\moveright 384pt\vbox to 0pt{\kern-36pt
-\begin{code}
-color brg; brg = 1/256 (1, 66, 37);
-color pbr; pbr = 1/256 (223, 52, 57);
-N = 5; n = 0;
-for y=1 upto N:
- for x=1 upto N:
- fill fullcircle scaled 16 shifted 20(x,y)
- withpen pencircle scaled 2
- withcolor (n/N/N)[pbr, brg];
- label(decimal incr n infont "phvr8r", 20(x,y))
- withcolor white;
- endfor
-endfor
-\end{code}\vss}}
+calculated value. \vadjust{\moveright 396pt\vbox to 0pt{\kern-64pt
+\mpexternal[firstline=6,lastline=18]{color-blend-toy.mp}
+\vss}}
Here's a toy example:
\vbox to 0pt{\centerline{\includegraphics[scale=0.8]{color-blend-toy}}\vss}
@@ -1635,78 +1363,34 @@ Here's a toy example:
\subsection{CMYK colours}
\MP\ also implements a CMYK colour model, using tuples of four numerics.
-This is more or less a direct mapping onto the PostScript "cmykcolor" functions.
In this model the four components represent cyan, magenta, yellow, and black.
White is \mpl{(0,0,0,0)} and black is anything where the last component is 1.
-Beware however that the constants, \mpl{white} and \mpl{black} are defined in
-"plain.mp" as RGB colours, and you can't mix the two models, so anything like
-\mpl{1/2[(1,1,0,0), white]} will not work. If you want to do lots of work with CMYK colours
-you might like to redefine the color constants.
-$$\includegraphics[width=0.7\textwidth]{blended-color-circles}$$
+
+Beware that the five colour constants defined in "plain.mp" are defined as RGB
+colours, and you can't mix colour models, so anything like \mpl{1/2[(1,1,0,0),
+white]} will not work, unless you redefine the color constants as CMYK colours:
+\begin{smallcode}
+cmykcolor black, white, red, green, blue;
+black = (0,0,0,1); white = (0,0,0,0);
+red = (0,1,1,0); green = (1,0,1,0); blue = (1,1,0,0);
+\end{smallcode}
+$$\includegraphics[width=0.7\textwidth]{color-blended-circles}$$
\hey The apparent blending of colours here is done by calculating the overlaps
-and filling them in order. In plain \MP, there is no support for transparency in any of the
-colour models; this is because they are inherited directly from PostScript.
+and filling them in order. With plain "mpost", there is no support for transparency in any of the
+colour models; but "luamplib" gives you access to PDF transparency, see
+§\ref{sec:transparent}.
\moveright 384pt\vbox to 0pt{\vss
-\begin{code}
-% the illusion of blended colours is helped by buildcycle
-
-path C[], B[];
-
-% arrange each circle so that point 0 is outside the others
-C1 = fullcircle scaled 120 rotated 90 shifted 40 up;
-C2 = C1 rotated 120;
-C3 = C2 rotated 120;
-
-B0 = buildcycle(C1, C2, C3);
-B1 = buildcycle(C1, C2);
-B2 = buildcycle(C2, C3);
-B3 = buildcycle(C3, C1);
-
-picture P;
-for x=0 upto 1:
- for y=0 upto 1:
- P := image(
- s := 1/4 + x/2;
- k := 0 + y/4;
- fill C1 withcolor s*(1,0,0,k);
- fill C2 withcolor s*(0,1,0,k);
- fill C3 withcolor s*(0,0,1,k);
- fill B3 withcolor s*(1,0,1,k);
- fill B2 withcolor s*(0,1,1,k);
- fill B1 withcolor s*(1,1,0,k);
- fill B0 withcolor s*(1,1,1,k);
- undraw C1; undraw C2; undraw C3;
- ) shifted -(200x, 200y);
- draw P;
- label.bot(("shade: " & decimal s & ", k: " & decimal k)
- infont "phvr8r", point 1/2 of bbox P);
- endfor
-endfor
-\end{code}}
-
+\mpexternal[firstline=9,lastline=41]{color-blended-circles.mp}
+}
\newpage
\subsection{HSV colours}
HSV colours are colours defined by a triple of hue, saturation, and value.
Unlike RGB and CMYK colours there is no native support in \MP\ but it is possible to
write a routine that maps HSV triples into RGB colours:
-\begin{code}
-vardef hsv_color(expr h,s,v) =
- save chroma, hh, x, m;
- chroma = v*s;
- hh = h/60;
- x = chroma * (1-abs(hh mod 2 - 1));
- m = v - chroma;
- if hh < 1: (chroma,x,0)+(m,m,m)
- elseif hh < 2: (x,chroma,0)+(m,m,m)
- elseif hh < 3: (0,chroma,x)+(m,m,m)
- elseif hh < 4: (0,x,chroma)+(m,m,m)
- elseif hh < 5: (x,0,chroma)+(m,m,m)
- else: (chroma,0,x)+(m,m,m)
- fi
-enddef;
-\end{code}
+\mpexternal{color-hsv-macro.mp}
+\noindent
This is based on information from the Wikipedia article on
on “HSL and HSVâ€.
@@ -1719,110 +1403,22 @@ darker. Once you get the hang of them, they make choosing colours rather easier
You can produce ranges of colour by changing hue, or make gradations of a single
colour by changing the saturation or value.
-\moveright 384pt\vbox to 0pt{\vss
-\begin{code}
-defaultfont := "phvr8r";
-
-numeric s[], v[];
-s0 = 1/2; v0 = 7/8;
-s1 = 7/8; v1 = 7/8;
-s2 = 7/8; v2 = 1/2;
-for y=0 upto 2:
- for h=0 step 15 until 360:
- fill fullcircle scaled 24 shifted (h, -32y)
- withcolor hsv_color(h, s[y], v[y]);
- draw fullcircle scaled 24 shifted (h, -32y)
- withcolor white;
- if y=1:
- label(decimal h infont defaultfont scaled 1/2, (h,-16));
- fi
- endfor
-endfor
-
-label.urt("Less saturation", (-20,12));
-label.lrt("Lower value", (-20,-76));
-
-drawarrow (-15, -12) -- (-15,12);
-drawarrow (-15, -52) -- (-15,-76);
-\end{code}}
+\moveright 376pt\vbox to 0pt{\vss
+\mpexternal[firstline=5,lastline=31]{color-hsv-gamut.mp}}
\newpage
-\subsubsection{An HSV example of a graduated scale}
+\subsection*{An HSV example of a graduated scale}
\noindent
-This example requires the \mpl{hsv_color} routine from the previous page.
-\mpic{12pt}{color-hsv-bathymetric}
-\begin{code}[xleftmargin=0pt]
-defaultfont := "phvr8r"; defaultscale := 3/4;
-path h,d,b; numeric n; n = 10;
-h = ((-2,0)--(0,0)--(-1,3)--(-2,3)--cycle) scaled 60;
-d = h rotated 180;
-b = subpath (0,1) of h -- point 1+1/n of d --
- (xpart point 0 of h, ypart point 1+1/n of d) -- cycle;
-fill b withcolor hsv_color(123, 1/8, 7/8);
-draw subpath (2.13,4) of b;
-for i=1 upto n:
- fill point 4-(i-1)/n of h -- point 1+(i-1)/n of h
- -- point 1+i/n of h -- point 4-i/n of h -- cycle
- withcolor hsv_color(42, 1/4 + 3/4 * i/n, 1 - i/3n);
- fill point 4-(i-1)/n of d -- point 1+(i-1)/n of d
- -- point 1+i/n of d -- point 4-i/n of d -- cycle
- withcolor hsv_color(200, i/n - 1/n, 1 - i/3n);
-endfor
-string s;
-for i=1 upto n-1:
- draw point 4-i/n of h -- point 1+i/n of h;
- draw point 4-i/n of d -- point 1+i/n of d;
- s := decimal if i < 4: (i**2+1) else: (10 + (i-3)*10) fi & "00";
- label.rt(s, point 1+i/n of h);
- label.lft(s, point 1+i/n of d);
-endfor
-label.rt("Metres", point 2 of h);
-label.lft("Metres", point 2 of d);
-label.lft("Hypsometric tints" infont defaultfont
- scaled defaultscale rotated 90, point 7/2 of h);
-label.rt("Bathymetric tints" infont defaultfont
- scaled defaultscale rotated -90, point 7/2 of d);
-label.lft("sea level", point 0 of h);
-label("areas below sea level", center b);
-draw h; draw d;
-\end{code}
-
-
+This example requires the \mpl{hsv_color} macro from the previous page.
+\mpic{2pt}{color-hsv-bathymetric}
+\mpexternal[firstline=7,lastline=39, xleftmargin=0pt]{color-hsv-bathymetric.mp}
\newpage
\subsection{Grey scale}
-\moveright5.5in\vbox to 0pt{\vskip6pt
-\begin{code}[xleftmargin=0pt]
-numeric s; s = 13;
-path atom;
-atom = origin
- -- (2s,0) rotated -30 -- (2s,0) rotated -30 + (0,s)
- -- ( s,0) rotated 30 -- ( s,0) rotated 30 + (0,s)
- -- (0,2s) -- cycle;
-
-picture p[];
-for i=0 upto 2:
- p[i] = image(
- fill atom rotated -120i withcolor (7/8 - 1/8i) ;
- draw atom rotated -120i;
- );
-endfor
-
-n = 13;
-for i=-n upto n:
- for j=-n upto n:
- forsuffixes $=0,1,2:
- draw p$ shifted ((3i*s,0) rotated -30
- + (0,floor(1/2i)*3s + 3j*s));
- endfor
- endfor
-endfor
-
-clip currentpicture to (unitsquare shifted -(1/2,1/2)
- xscaled 55.425s yscaled 30s);
-\end{code}
+\moveright5.4in\vbox to 0pt{\vskip6pt
+\mpexternal[firstline=5,lastline=36,xleftmargin=0pt]{color-grey-escher.mp}
\vss}
\noindent
The \mpl{withcolor} command will also take a single \mpl{numeric} instead of a 3-tuple or
@@ -1833,9 +1429,8 @@ number in plain \MP\ is: $\id{epsilon} = 1/256/256;$ then you can have at most 6
between.
Grey scale is appropriate for some printed media, and can make effective textures
-and patterns.
-The code on the right was used to produce this:
-$$\includegraphics[width=\textwidth]{escher}$$
+and patterns. The pattern below was produced by this program \rightarrowfill
+$$\includegraphics{color-grey-escher}$$
First a basic path (named $\id{atom}$) is defined, then in the first loop three
picture variables, $p_1$, $p_2$, and $p_3$, are defined, each one rotated
120° from the previous and filled with a slightly darker shade of grey.
@@ -1843,49 +1438,23 @@ The double loop then draws the three versions of the shape on an up-and-down gri
Finally the picture is clipped to a neat rectangle.
\newpage
-\subsubsection{Drawing algorithmic shadows}
-\moveright5.5in\vbox to 0pt{\vskip6pt
-\begin{code}[xleftmargin=0pt]
-path b, w;
-b = ((-3,-4)--(3,-2)--(3,+2)--(-3,4)--cycle) scaled 5;
-w = b reflectedabout(up, down);
-
-numeric n;
-n = 128;
-
-picture B, W;
-B = image(for i=0 step 1/n until 1:
- draw point 4-i of b -- point 1+i**2 of b
- withcolor 1-i**8;
- endfor);
-
- W = image(for i=0 step 1/n until 1:
- draw point 4-i of w -- point 1+i**2 of w
- withcolor 3/4-i**8;
- endfor);
-
-for i=-9 upto 9:
- for j=-4 upto 4:
- draw if odd (i+j): W else: B fi shifted (i*30,j*30);
- endfor
-endfor
-
-clip currentpicture to bbox currentpicture yscaled 7/8;
-\end{code}
+\subsection*{Drawing algorithmic shadows}
+\moveright5.25in\vbox to 0pt{\vskip6pt
+\mpexternal[firstline=5,lastline=32]{color-grey-shadows.mp}
\vss}
\noindent
Here is a more complex pattern, showing one way to create an
illusion of shadows with multiple fine lines.
-$$\includegraphics[width=\textwidth]{shadows}$$
+$$\includegraphics{color-grey-shadows}$$
The first part defines two wedge-shaped closed paths, $\id{w}$ being
the mirror image of $\id{b}$. Like the standard \id{unitsquare} path, the
path $\id{b}$ is defined so that point 0 is the bottom left corner.
-The two $\kw{picture}$ variables are produced
-by drawing lines across the shapes from bottom to top. By setting $n$ high enough,
-these multiple lines blend smoothly to give an even colour. And by using higher
-powers of the index variable, an effective shadow can be drawn ‘bunched up’ into the
-top of each shape.
+The two \<picture> variables are produced by drawing lines across the shapes from
+bottom to top. If you set the loop step small enough, these multiple lines blend smoothly to
+give an even colour. And by using higher powers of the index variable, an effective
+shadow can be drawn ‘bunched up’ into the top of each shape. Note that \MP\ likes
+integer powers of two.
By repeating them alternately in a grid, we get an effective texture, which is
clipped at the end to a neat rectangle again.
@@ -1896,24 +1465,15 @@ clipped at the end to a neat rectangle again.
\moveright 384pt\vbox to 0pt{\vskip144pt\raggedright\hsize4in\noindent
This map shows the "RdYlBu[9]" palette in action on a map of the Brexit vote in
-London. The outlines are the 33 London boroughs, and the colours show how we voted,
-faded by turnout. The data and the outlines are from publicly-available UK
-government sources. They were prepared for \MP\ using various Python scripts, and
-they are available in the source for this document.
+London. The outlines are the 33 London boroughs, and the colours show how we voted.
+The size of the labels shows the turnout. The data and the outlines are from
+public domain sources. They were prepared for \MP\ using various scripts,
+and they are available in the source for this document.
-\vskip 72pt
+\vskip 48pt
Here is the code for the palette used as the legend:
-\begin{smallcode}
-input colorbrewer-rgb
-numeric s; s = 10;
-for i = 1 upto 9:
- fill unitsquare scaled s shifted (i*s, 0) withcolor RdYlBu[9][i];
- if i > 1: draw (i*s, 0) -- (i*s, s); fi
-endfor
-draw unitsquare xscaled 9s yscaled s shifted (s,0);
-label.top("Leave" infont "phvr8r", (s, s));
-label.top("Remain" infont "phvr8r", (10s, s));
-\end{smallcode}
+\mpexternal[firstline=9,lastline=9]{color-brexit-map.mp}
+\mpexternal[firstline=11,lastline=19]{color-brexit-map.mp}
\vss}
\noindent
@@ -1926,7 +1486,7 @@ otherwise you can get it from "https://ctan.org/pkg/metapost-colorbrewer". The
package provides two files that define all the colour ranges; one for CMYK and
another for RGB; an example of usage is shown below on the right.
-$$\includegraphics[width=\textwidth]{brexit-map.pdf}$$
+$$\includegraphics[width=\textwidth]{color-brexit-map.pdf}$$
%--------------------------------------------
@@ -1934,46 +1494,9 @@ $$\includegraphics[width=\textwidth]{brexit-map.pdf}$$
\section{Random numbers}
\MP\ provides us with two built-in functions to generate random numbers.
-\vadjust{\moveright 384pt\vbox to 0pt{\kern-24pt
-\begin{code}
-vardef dice(expr pip_count, pip_color) =
- save d,r,p, ul, ur, lr, ll;
- r=1/8; path d; picture p;
- d = for i=0 upto 3:
- quartercircle scaled 3 shifted (15,15) rotated 90i --
- endfor cycle;
- p = image(draw fullcircle scaled 6;
- fill fullcircle scaled 6 withcolor pip_color);
- pair ul, ur, ll, lr;
- ul = 1/5[ulcorner d, lrcorner d];
- lr = 4/5[ulcorner d, lrcorner d];
- ur = 1/5[urcorner d, llcorner d];
- ll = 4/5[urcorner d, llcorner d];
- image(fill d withcolor background; draw d;
- if odd(pip_count):
- draw p shifted center d;
- fi;
- if pip_count > 1:
- draw p shifted ul; draw p shifted lr;
- fi;
- if pip_count > 3:
- draw p shifted ur; draw p shifted ll;
- fi;
- if pip_count = 6:
- draw p shifted 1/2[ul,ur];
- draw p shifted 1/2[ll,lr];
- fi)
-enddef;
-
-beginfig(1);
-for i=0 upto 4:
- draw dice(1+floor uniformdeviate 6, red)
- rotated (2 normaldeviate)
- shifted (36i,0);
-endfor
-endfig;
-\end{code}
- $$\includegraphics{dice}$$
+\vadjust{\moveright 372pt\vbox to 0pt{\kern-24pt
+\mpexternal[firstline=5,lastline=39,xrightmargin=-36pt]{random-dice.mp}
+$$\includegraphics{random-dice}$$
\vss}}
\begin{itemize}
\item `$\kw{uniformdeviate}\,n$' generates a random real number between $0$ and
@@ -2003,7 +1526,7 @@ endfig;
about 68.3\%; between $-2$ and 2, about 95.4\%.
\vadjust{\moveright 3.6in\vbox to 0pt{\hsize 1.6in \vskip21pt \noindent
\small 10000 samples suggest\\\kw{normaldeviate} works.\par\vss}}
- $$\includegraphics[width=4.6in]{gaussian}$$
+ $$\includegraphics[width=4.6in]{random-gaussian}$$
To relocate the mean, just add a constant. To rescale the distribution,
multiply by the desired standard deviation (the square root of the
desired variance).
@@ -2018,85 +1541,39 @@ The \kw{normaldeviate} function is provided as a primitive \MP\ operation. The
implementation is based on the `Ratio method' presented in \textsl{The Art of
Computer Programming}, section~3.4.1. It turns out to be very straightforward to
implement the algorithm for this method as a user-level program $\longrightarrow$
-\vadjust{\moveright5.5in\vbox to 0pt{\kern -64pt
-\begin{smallcode}
-vardef normaldeviate =
- save u, v, xa;
- forever:
- forever:
- u := uniformdeviate 1;
- exitif (u>1/64);
- endfor
- v := sqrt(8/mexp(256)) * ( -1/2 + uniformdeviate 1 );
- xa := v/u;
- exitif ( xa**2 <= -mlog(u)/64 );
- endfor
- xa
-enddef;
-
-vardef exponentialdeviate =
- save u;
- forever:
- u := uniformdeviate 1;
- exitif (u>0);
- endfor
- -mlog(u)/256
-enddef;
-
-vardef gammadeviate(expr a,b) =
- save y, x, v, s, accept; boolean accept;
- s = sqrt(2a-1);
- forever:
- forever:
- y := tand(uniformdeviate 180);
- exitif y<64;
- endfor
- x := s * y + a - 1;
- accept := false;
- if x>0:
- v := uniformdeviate 1;
- if (v <= (1+y**2)*mexp((a-1)*mlog(x/(a-1))-(256*s*y))):
- accept := true;
- fi
- fi
- exitif accept;
- endfor
- x/b
- enddef;
-\end{smallcode}
+\vadjust{\moveright5.5in\vbox to 0pt{\kern -112pt
+\smallmpexternal{random-other-distributions.mp}
\vss}}%
-There are a couple points here. First, the inner loop around the assignment to $u$ is
-designed to avoid very small values that would cause $v/u$ to be larger than 64, and
-hence make "xa**2" overflow. This is a useful general technique, and justified in
-terms of the algorithm since large values of $v/u$ are rejected anyway. Secondly,
-the expression "sqrt(8/mexp(256))" is a constant ($ \sqrt{8/e} \simeq 1.71553 $) and could be
-replaced by it's value, but this does not make an appreciable improvement to the
+This version of \mpl{normaldeviate} is of academic interest only, in all real code
+you should use the primitive operation, but there are a couple of programming notes.
+If you put ‘\mpl{u = uniformdeviate 1}’, then you have $0 \le u < 1$, so $v/u$ might
+give you a divides-by-zero error; using ‘\mpl{u = 1 - uniformdeviate 63/64}’ ensures
+that $1/64 < u \le 1$, which not only avoids the possibility of a divide-by-zero
+error, but also ensures that $|(v/u)| < 64$, so that you can square it without
+overflow. This is a useful general technique, and justified in terms of the
+algorithm since large values of $v/u$ are rejected anyway. Secondly, the expression
+\mpl{sqrt(8/mexp(256))} is a constant ($ \sqrt{8/e} \simeq 1.71553 $) and could be
+replaced by its value, but this does not make an appreciable improvement to the
speed of the routine. On a modern machine, this routine is only very slightly
slower than using the primitive function.
+\medskip\noindent
It is also fairly straightforward to implement random number generators that follow other statistical
distributions. The mathematical details are in the section of \textsl{TOACP}
referenced above. Two examples, for the exponential distribution and the gamma
distribution, are shown on the right. In both cases, note the care required to avoid
-arithmetic overflow (and see section~\ref{trig} for the "tand" function).
+arithmetic overflow with the default scaled number system.
\medskip\label{mexp}\noindent
You can also see the special nature of \MP's \kw{mexp} and \kw{mlog}
functions. They are defined so that $\kw{mexp} x = \exp(x/256)$ and $\kw{mlog} x =256\log(x)$.
This is another artefact of the scaled number system. \MP\ computes $x^y$ using the
-formula "mexp(y*mlog(x))", and the adjusted log values give more accurate results.
+formula \mpl{mexp(y*mlog(x))}, and the adjusted log values give more accurate results.
Note that this means that you have $e=\kw{mexp}(256)$.
-\medskip\noindent
-At the start of each job, \MP\ automatically sets a new seed for the random number
-generator, so that the sequence of numbers is different each time. But you can set
-this yourself if you need the same sequence each time. At the start of your program
-you should put "randomseed:=3.14;" (or whatever value you prefer). According to
-\textsl{The Metafont Book}, the default value is
-$\id{day}+\id{time}\ast\id{epsilon}$, but in \MP\ the exact value used depends on
-the resolution of the timers available on your system; essentially the value
-should be different every time you run \MP.
+It is sometimes useful to define macros for the usual versions of $\exp$ and $\log$
+as shown on the right. This not only helps you make fewer programming mistakes, and
\newpage\subsection{Random walks}
@@ -2104,34 +1581,9 @@ should be different every time you run \MP.
You can use the random number generation routines to produce visualizations of
random walks, with various levels of analysis.
\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4.4in\kern -2\baselineskip
-\begin{code}
-beginfig(1);
-numeric w, h, n; w = 377; h = 80; n = 500;
-draw (origin--right) scaled w;
-draw (origin--right) scaled w shifted (0,+h/2) withcolor 3/4;
-draw (origin--right) scaled w shifted (0,-h/2) withcolor 3/4;
-pair zenith, nadir; zenith = nadir = origin;
-path walk[];
-for i=1 upto 8:
- numeric y; y = 0;
- walk[i] = origin for x=w/n step w/n until w:
- hide(
- y := y if uniformdeviate 1 < 1/2: + else: - fi 1;
- if y > ypart zenith: zenith := (x,y) ; fi
- if y < ypart nadir: nadir := (x,y) ; fi
- )
- -- (x,y)
- endfor;
- undraw walk[i] withpen pencircle scaled 3/4;
- draw walk[i] withcolor (1/2+y/h)[red, blue]
-endfor
-drawarrow (12 up -- 2 up) shifted zenith withcolor blue;
-drawarrow (12 down -- 2 down) shifted nadir withcolor red;
-endfig;
-\end{code}
-
+\mpexternal[firstline=5,lastline=31,xleftmargin=0pt]{random-walks-red-blue.mp}
\smallskip\noindent
-\hey Note the \mpl{undraw} line using a slightly thicker pen; this makes it
+\hey Note the \mpl{undraw} line using a slightly thicker pen; this makes it
easier to follow the lines as they cross each other.
\vss}}
$$\includegraphics[width=\textwidth]{random-walks-red-blue}$$
@@ -2150,32 +1602,40 @@ set this delta value, for example by using a different type of random variate, o
the value, or changing the odds in favour of one direction or the other. For
example:
\begin{code}
-y := y if uniformdeviate 1 < p: + 2 else: - 1 fi;
+y := y if uniformdeviate 1 < p: + 2 else: - 1 fi;
\end{code}
will set the delta to $+2$ with probability $p$ and and to $-1$ with probability $1-p$.
-\newpage\subsection{Brownian motion}
+\newpage
+\subsubsection{Random walks with different constraints}
-A random walk is normally constrained to move one unit at a time, but if you relax
+\textsc{Formally}, a random walk is constrained to move one unit at a time, but if you relax
that constraint and use `\kw{normaldeviate}' in place of `\kw{uniformdeviate}' you
-can get rather more interesting patterns.\vadjust{\moveright5.5in\vbox to 0pt{
-\hsize4in\kern -20pt
-\begin{code}
-beginfig(2);
-for n=1 upto 4:
- x:=y:=0;
- draw (x,y) for i=1 upto 2000:
- hide(x:=x+4normaldeviate; y:=y+4normaldeviate;)
- .. (x,y)
- endfor withcolor ((n+2)/9)[blue,white];
- fill fullcircle scaled 3 shifted (x,y) withcolor red;
-endfor
-% mark the origin
-fill fullcircle scaled 3 withcolor green;
-endfig;
-\end{code}
+may get more “realistic†patterns.
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4.2in\kern2\baselineskip\noindent
+The drawing here is much the same as the previous page, except that the definition of
+\id{walk} in the central loop is simplified to this:
+\mpexternal[firstline=15,lastline=18,xleftmargin=0pt]{random-walks-normal.mp}
+}}
+$$\includegraphics[width=\textwidth]{random-walks-normal}$$
+Alternatively you could add an extra constraint that the final value should be zero
+(or some other desired target value); this is the so-called “Brownian bridgeâ€.
+$$\includegraphics[width=\textwidth]{random-walks-normal-bridge}$$
+To do this, you make a random walk path, as above, with \id{n} points, and then copy
+it into a new path where the $i$-th point is adjusted by $i/n\times(t-y)$ where $t$
+is the target value, and $y$ is the $y$-value of the last point on the walk path.
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4.2in\vss
+\mpexternal[firstline=7,lastline=23,xleftmargin=0pt]{random-walks-normal-bridge.mp}
+}}
-\kern 120pt
+\newpage\subsection{Brownian motion}
+
+Relaxing all the constraints, can give you even more
+interesting patterns.\vadjust{\moveright5.5in\vbox to 0pt{
+\hsize4.2in\vskip -32pt
+\mpexternal[firstline=6,lastline=20,xleftmargin=0pt]{random-two-dimensional-brownian.mp}
+
+\kern 84pt
\noindent
Using these random number generators means that the output is
different each time because \MP\ produces a different sequence of numbers. You may
@@ -2188,16 +1648,17 @@ using a random number at the top of your program.
randomseed := uniformdeviate infinity;
\end{code}
Now \MP\ writes the (random) value used in the log for you to copy. Note that if you are using
-"luamplib" you need to add the "\mplibshowlog{enable}" option.
+"luamplib" you need to add the "\mplibshowlog{enable}" option to get this value in
+the log.
\vss}}
If you also allow the $x$-coordinates to
wander at random as well as the $y$-coordinates you get two-dimensional random
patterns. And if you replace the straight line segments "--" with ".." so that \MP\
-draws a smooth curve through the points, as well as vary the colour each time
-you draw a new curve, then the result is almost artistic.
+draws a smooth curve through the points, then the result is almost artistic.
-\medskip\noindent
-\hbox to \textwidth{\includegraphics[width=1.2\textwidth]{brown3a}\hss}
+\vbox to 0pt{\noindent
+\hbox to \textwidth{\includegraphics[width=1.2\textwidth]{random-two-dimensional-brownian}\hss}
+\vss}
\newpage\subsection{Drawing freehand}
@@ -2207,45 +1668,7 @@ examples there are all in French (including all the names of the custom macros),
perhaps it would be better to say `translated' rather than `stolen'; moreover my
implementations are easier to use with plain \MP.\vadjust{\moveright5.5in\vbox to 0pt{
\hsize4in\kern -5.5\baselineskip
-\begin{smallcode}
-def freehand_segment(expr p) =
- point 0 of p {direction 0 of p rotated (4+normaldeviate)} ..
- point 1 of p {direction 1 of p rotated (4+normaldeviate)}
-enddef;
-def freehand_path(expr p) =
- freehand_segment(subpath(0,1) of p)
- for i=1 upto length(p)-1:
- & freehand_segment(subpath(i,i+1) of p)
- endfor
- if cycle p: & cycle fi
-enddef;
-defaultfont := "eurm10";
-color sepia; sepia = (0.44, 0.26, 0.08);
-picture marker; marker = image(for s=-1/2, 1/2:
- draw (left--right) scaled 2 rotated 60 shifted (s,0);
-endfor);
-def moved_along expr x of p = rotated angle direction x of p
- shifted point x of p enddef;
-
-beginfig(1);
-pair A, B, C, D;
-A = (0,-30); B = (180,0); C = (120,90);
-D = (1/2 + 1/40 normaldeviate)[A, B];
-path triangle, circumcircle, bisector;
-triangle = freehand_path(A--D--B--C--cycle);
-bisector = freehand_segment(C--D);
-circumcircle = freehand_path(A..B..C..cycle);
-draw triangle;
-draw bisector;
-draw circumcircle withcolor .67 red;
-draw marker moved_along 1/2 of triangle withcolor .67 red;
-draw marker moved_along 3/2 of triangle withcolor .67 red;
-label.lft("A", A);
-label.rt ("B", B);
-label.top("C", C);
-label.bot("D", D);
-endfig;
-\end{smallcode}
+\smallmpexternal[firstline=5,lastline=42,xleftmargin=0pt]{random-freehand-circumcircle.mp}
\vss}}
\subsubsection{Making curves and straight lines look hand drawn}
@@ -2269,48 +1692,11 @@ you might find that a little of this type of decoration goes a long way.
This second freehand figure uses a macro to draw a wonky line through two points
with a bit of overlap at each end. The overlap size is given using the suffix
-syntax. The lines are drawn in sepia ink to enhance the hand-drawn look. The angle
+syntax. The lines are drawn in sepia ink to enhance the hand-drawn look. The angle
labels are positioned on invisible arcs between neighbouring wonky lines.
\vadjust{\moveright5.5in\vbox to 0pt{
\hsize4in\kern -4.5\baselineskip
-\begin{code}[xleftmargin=0pt]
-vardef freehand_through@#(expr a, b) =
- save t; pair t;
- t = @# * unitvector(b - a) rotated (4 + normaldeviate);
- a - t .. a {t} .. b {t} .. b + t
-enddef;
-
-vardef mid_arc@#(expr p, a, b) =
- save c; path c;
- c = fullcircle scaled (2*@#) shifted p cutbefore a cutafter b;
- point arctime 1/2 arclength c of c of c
-enddef;
-
-beginfig(1);
-defaultfont := "eurm10"; color sepia; sepia = (0.44, 0.26, 0.08);
-pair A, B, C; A = (0,-30); B = (180,0); C = (120,90);
-
-path a, b, c;
-a = freehand_through 7 (A, B);
-b = freehand_through 8 (B, C);
-c = freehand_through 6 (C, A);
-
-drawoptions(withcolor sepia);
-draw a; draw b; draw c;
-
-drawoptions(withcolor .67 blue);
-label.bot ("a", point 3/2 of a);
-label.rt ("b", point 3/2 of b);
-label.ulft("c", point 3/2 of c);
-
-drawoptions(withcolor .5 red);
-label(char 11, mid_arc 16 (A, a, c));
-label(char 12, mid_arc 14 (B, b, a));
-label(char 13, mid_arc 14 (C, c, b));
-
-drawoptions();
-endfig;
-\end{code}
+\mpexternal[firstline=5,lastline=41,xleftmargin=0pt]{random-freehand-through.mp}
\vss}}
$$\includegraphics{random-freehand-through}$$
@@ -2319,8 +1705,8 @@ $$\includegraphics{random-freehand-through}$$
\noindent\llap{\nb\ }The AMS Euler font available to \MP\ as "eurm10" is encoded as a subset of the \TeX\
math italic layout --- essentially it has all the Greek letters but none of the
arrows, nor the musical notation.
-$$\includegraphics{euler-sampler}$$
-If you can't get the upper case $\Gamma$ at \mpl{char 0}, then you might be running
+$$\includegraphics{trad-euler-sampler}$$
+If you can't get the upper case $\Gamma$ at \mpl{char 0}, then you might be running
an old out-of-date version of "luamplib".
\newpage\subsection{Increasingly random shapes of the same size}
@@ -2331,26 +1717,7 @@ $$\hbox to \textwidth{\includegraphics{random-shapes}\hss}$$
For these shapes the objective was to make them increasingly random, but to keep
them all the same length.\vadjust{\moveright5.5in\vbox to 0pt{
\hsize4in
-\begin{code}
-beginfig(1);
-numeric desired_length, n, s;
-desired_length = 180; n = 30; s = 80;
-
-for r=0 upto 8:
-
- path shape;
- shape = for i=1 upto n:
- (s + r * normaldeviate, 0) rotated (360/n*i) ..
- endfor cycle;
-
- shape := shape scaled (desired_length/arclength shape);
-
- draw shape shifted (r*s, 0) withcolor (r/8)[black,red];
- label(decimal r, (r*s, 0));
-
-endfor
-endfig;
-\end{code}
+\mpexternal[firstline=6,lastline=21,xleftmargin=0pt]{random-shapes.mp}
\vss}}
Each time round the outer loop the \id{shape} is redeclared to clear it, and
then redefined by an inline-loop with $n$ steps like
@@ -2373,101 +1740,45 @@ you need to have defined \id{shape} before you can refer to it.
\newpage\subsection{Explosions and splashes}
Random numbers are also useful to make eye catching banners for posters,
-presentations, and infographics. Here are two simple example shapes: $\to$
-\mpic{18pt}{explode}
-
-\begin{smallcode}
-string heavy_font;
-heavy_font = "PlayfairDisplay-Black-osf-t1--base";
-
-randomseed:=2128.5073;
-
-beginfig(1);
-n = 40; r = 10; s = 50;
-path explosion, splash;
-explosion = for i=1 upto n:
- (s if odd(i): - else: + fi r + uniformdeviate r,0) rotated (i*360/n) --
-endfor cycle;
-
-splash = for i=1 upto n:
- (s if odd(i): - else: + fi r + uniformdeviate r,0) rotated (i*360/n) ..
-endfor cycle;
-splash := splash shifted (3s,0);
-
-fill explosion withcolor 1/2 green + red;
-draw explosion withpen pencircle scaled 2 withcolor 2/3 red;
-label("BOOM!" infont heavy_font scaled 2, center explosion)
- withcolor red;
-fill splash withcolor 1/2 green + blue;
-draw splash withpen pencircle scaled 2 withcolor 2/3 blue;
-label("SPLAT!" infont heavy_font scaled 2, center splash)
- withcolor blue;
-endfig;
-\end{smallcode}
-
+presentations, and infographics. Here are two simple example shapes \rightarrowfill
+\mwpic{0pt}{random-explosions}
+\mpexternal[firstline=8,lastline=29,xleftmargin=0pt]{random-explosions.mp}
\noindent
-In this figure "n" is the number of points in the shape, "r" is the amount of
-randomness, and :"s" is the radius used.
-In order to get a clear zig-zag outline, the loop alternately adds or subtracts "r";
-and then adds a random amount on top to make it look random.
-Notice that the only difference between the "explosion" and "splash" is that how
-the connecting lines are constrained to be straight or allowed to make smooth
-curves.\vadjust{\moveright5.5in\vtop to -2pt{\hsize 4in\vss\noindent
-The display font used here is one of the gems hidden away in "psfonts.map".
+In this figure $n$ is the number of points in the shape, $s$ is the radius, and $r$
+is the amount of randomness added to or removed from $s$. In order to get a clear
+zig-zag outline, the loop alternately adds or subtracts $r$; and then adds a random
+amount on top to make it look random. Notice that the only difference between the
+"explosion" and "splash" is that how the connecting lines are constrained to be
+straight or allowed to make smooth curves.
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent\small
+The display font used here is Playfair Display Black. If you have it installed
+as a system font, you can use "fontspec" and "luamplib" with "lualatex" as described
+in §\ref{sec:sa-lua-flow}, but if you are still using
+plain "mpost", then you need to hunt for it in your local "psfonts.map".
If you run \MP\ with the "-recorder" option, it will create a list of all the files
used, with the current job name and an extension of ".fls". This file will include
a line which tells you exactly which version of "psfonts.map" is being used.
-
The DVIPS documentation explains the format of the file, but for \MP's purposes the
-first word of each non-comment line defines a font name you can try. However beware
-that just because a name is defined in your map file, does not necessarily mean that
-you actually have the required PostScript font files installed as well. But if you have a
-full TexLive installation you will find that very many of them are already
-installed.\strut
-}}
+first word of each non-comment line defines a font name you can try. When you find
+it you can add something like this to the top of the example:
+\begin{smallcode}
+defaultfont = "PlayfairDisplay-Black-osf-t1--base";
+defaultscale = 3;
+\end{smallcode}}}
\newpage\subsection{Simulating jagged edges or rough surfaces}
You can use the idea of adding a little bit of noise to simulate a rough surface.
-$$\includegraphics[width=0.95\textwidth]{qed}$$
+\vadjust{\moveright5.25in\vbox to 0pt{\hsize 4in\vskip-12pt
+\smallmpexternal[firstline=6,lastline=37,xleftmargin=0pt]{random-qed.mp}
+\vss}}
+$$\includegraphics[width=0.95\textwidth]{random-qed}$$
These diagrams are supposed to represent light rays reflecting from a surface: on
the left the surface is smooth ($r=0$) and on the right it's rough ($r=0.42$).
The parameter $r$ is used in the \MP\ program as a scaling factor for the random
noise added to each point along the rough surface; the only difference in the code
to produce the two figures was the value of $r$.%
-\vadjust{\moveright5.5in\vbox to
- 0pt{\hsize 4in\vss
-\begin{smallcode}
-def perpendicular expr t of p =
- direction t of p rotated 90 shifted point t of p
- enddef;
-
-beginfig(1);
-u = 5mm; r = 0.42; n = 32; s = 8u; theta = -45;
-
-path base;
-base = origin
- for i=1 upto n-1: -- (i/n*s,r*normaldeviate) endfor
- -- (s,0) -- (s,-u) -- (0,-u) -- cycle;
-fill base withcolor .8[blue,white];
-draw base withcolor .67 blue;
-
-path ray[];
-for i=2 upto 6:
- ray[i] = (left--right) scaled 2/3 s rotated theta shifted (i*u,0);
- b := ypart (ray[i] intersectiontimes base);
- ray[i] := point 0 of ray[i]
- -- point b of base
- -- point 0 of ray[i]
- reflectedabout(point b of base, perpendicular b of base);
- drawarrow ray[i];
-endfor
-
-label("r=" & decimal r, center base);
-endfig;
-\end{smallcode}
-\vss}}
First the base block is created with some noise on the upper side. Then five rays
are created. Applying \mpl{ypart} to the pair of times returned by
\mpl{intersectiontimes} gives us the point of the base where the incident ray hits
@@ -2487,45 +1798,21 @@ sometimes this can create unexpected loops.
It's also possible to use a random
walk approach so that each random step takes account of the previous one to avoid
any big jumps. Here's one way to do that.
-$$\includegraphics{torn-edge-straight}$$
-\begin{code}
-path t; numeric x, y;
-x = 0; y=0;
-t = (x, -20) -- (x, y) for i=1 upto 288:
- -- (incr x, walkr y)
- endfor -- (x, -20) -- cycle;
-draw t withcolor .67 blue;
-\end{code}
+$$\includegraphics{random-torn-straight-edge}$$
+\mpexternal[firstline=6,lastline=12]{random-torn-straight-edge.mp}
+
+\noindent
The "walkr" routine works like the "incr" and "decr" commands; it updates the value of the
argument. The idea is that the further away from zero you are, the more likely is
that the next value will take you back towards zero.
-\begin{code}
-vardef walkr suffix $ =
- $ := $ if uniformdeviate 1 < (2**-abs($)): + else: - fi
- signr $; $
- enddef;
-vardef signr suffix $ =
- if $<0: - else: + fi uniformdeviate 1
- enddef;
-\end{code}
+\mpexternal{random-torn-edge.mp}
You can use this to produce more realistic torn edges. You can also apply this as a
form of jitter to a curved path, by adding a suitably rotated vector to enough
-points along the path.
+points along the path, as shown in the example on the right.\rightarrowfill
\moveright5.5in\vbox to 0pt{\kern-4in
-\begin{code}
-path c; c = fullcircle scaled 200;
-draw c withcolor .8 white;
-
-y=0; n = 600;
-path t; t = for i=0 upto n-1:
- point i/n*length(c) of c
- + (0, walkr y) rotated angle direction i/n*length(c) of c
- --
-endfor cycle;
-draw t withcolor .67 red;
-\end{code}
-$$\includegraphics{torn-edge-circle}$$
+\mpexternal[firstline=6,lastline=16]{random-torn-edge-circle.mp}
+$$\includegraphics{random-torn-edge-circle}$$
\vss}
@@ -2536,21 +1823,7 @@ $$\includegraphics{torn-edge-circle}$$
Here is the equilateral triangle point macro in action.
$$\includegraphics{geometry-triangles-on-circle}$$
\vskip -12pt
-\begin{code}
-beginfig(1);
-path c; c = fullcircle scaled 144;
-pair a,b,p,q;
-for i=0 upto 7:
- a := point i of c;
- b := point i+1 of c;
- p := equilateral_triangle_point(a,b);
- q := equilateral_triangle_point(b,a);
- draw a -- p -- b withcolor .67 green;
- draw a -- q -- b withcolor .67 red;
-endfor
-draw c withcolor .53 blue;
-endfig;
-\end{code}
+\mpexternal[firstline=8,lastline=21,xleftmargin=0pt]{geometry-triangles-on-circle.mp}
\vss}}%
This section deals with drawing geometrical figures that involve lines,
angles, polygons, and circles. Plain \MP\ provides very few tools that are
@@ -2588,40 +1861,35 @@ vardef equilateral_triangle_point(expr a, b) =
enddef;
\end{code}
And if you want to get right back to primitives you could even write that as:
-\begin{code}
-vardef equilateral_triangle_point(expr a, b) =
- b shifted -a rotated 60 shifted a
-enddef;
-\end{code}
+\mpexternal[firstline=5,lastline=7]{geometry-triangles-on-circle.mp}
\newpage
\subsection{Bisecting lines and paths}
\moveright5.5in\vbox to 0pt{\hsize4in\noindent
-$$\includegraphics{mediation-pitfall}$$
+$$\includegraphics{geometry-mediation-pitfall}$$
\vskip 50pt
-$$\includegraphics[width=4in]{mediation-shapes}$$
+$$\includegraphics[width=4in]{geometry-mediation-shapes}$$
\bigskip
-$$\includegraphics[width=4in]{mediation-sallows}$$
+$$\includegraphics[width=4in]{geometry-mediation-sallows}$$
\centerline{\textsl{Lee Sallows' theorem of median triangles}}
\vss}
\noindent
-The best way to bisect a line depends on how you have defined it.
-If you have two pairs $a$ and $b$, then the simplest way to find
-the pair that bisects them is to write "1/2[a,b]". This mediation
-mechanism is entirely general, so you can write \mpl{1/3[a,b]}, "1/4[a,b]", and
+\textsc{The best way to bisect} a line depends on how you have defined it.
+If you have two \<pair>s $a$ and $b$, then the simplest way to find
+the \<pair> that bisects them is to write "1/2[a,b]". This mediation
+mechanism is entirely general, so you can write "1/3[a,b]", "1/4[a,b]", and
so on to define other pairs that are part of the way from $a$ to $b$.
-The expression "0[a,b]" is equal to $a$, and "1[a,b]" is equal to $b$;
-but the number before the left bracket does not have to
+But the number before the left bracket does not have to
be confined to the range $(0,1)$. If you write "3/2[a,b]" you will get a pair on
the extension of the line from $a$ to $b$ beyond $b$. To get a pair going the
other way you can either reverse $a$ and $b$, or use a negative number; but don't
get caught out by the \MP\ precedence rules: "-1/2[a,b]" is interpreted as
"-(1/2[a,b])" and not as "(-1/2)[a,b]", so either put in the parentheses or swap
-the order of the pairs: "(3/2)[b,a]". See $\longrightarrow$.
+the order of the pairs: "(3/2)[b,a]". See \rightarrowfill
-If you want to work with a \kw{path} variable, rather than separate \kw{pair}
+If you want to work with a \<path> variable, rather than separate \<pair>
variables, you can
use the \mpl{point t of p}
notation to do mediation along the path. For a simple straight path $p$ of length 1
@@ -2632,33 +1900,32 @@ but for more complicated, curved paths you have to use this rather cumbersome no
\begin{code}
point arctime 1/2 arclength p of p of p
\end{code}
-If your path is closed, and makes a triangle or a regular polygon,
-then you can bisect it with the line
+If your path makes a regular polygon, then you can bisect the shape with the line
\begin{code}
point t of p -- point t + 1/2 length p of p
\end{code}
-\textbf{NB}: if the polygon has an odd number of sides, then $2t$ must be a whole
-number.
+\noindent
+\hey If the polygon has an odd number of sides, then $2t$ must be a whole number.
-\smallskip\noindent
-In a triangle these bisecting lines are called medians. The three medians intersect
+\vfill\noindent
+\textsc{In a triangle} these bisecting lines are called medians. The three medians intersect
at the centroid of the triangle. The centroid is a good place to put a label on a
-triangle. You could find it \mpl{intersectionpoint} or with
+triangle. You could find it using the macro from \ref{polygons}, or with
a construction using \mpl{whatever} on any two medians, but since we know that the centroid
divides each median in the ratio $2:1$ we can find the centroid of a triangle path
$p$ most simply with:
\begin{code}
z0 = 2/3[point 0 of p, point 3/2 of p];
\end{code}
-The median is the basis for several beautiful theorems about the geometry of the
+The median lines are the basis for several beautiful theorems about the geometry of the
triangle. The theorem shown here was first published in 2014.
\newpage
\subsection{Bisecting angles}\label{sec:bisect}
\moveright5.5in\vbox to 0pt{\hsize4in\noindent
-$$\includegraphics{bisection-euclidean}$$
+$$\includegraphics{geometry-bisection-euclidean}$$
\smallskip
-$$\includegraphics{bisection-vector}$$
+$$\includegraphics{geometry-bisection-vector}$$
\vss}
\noindent
In an equilateral triangle the medians also bisect the angles at each vertex; this
@@ -2677,7 +1944,7 @@ ABC$, then you could simplify this and make it more efficient by using
$e = \frac12[p,q]$
instead of calling the triangle macro at all. However the macro is still making two
calls to \mpl{intersectionpoint}. If you wanted to eliminate this you could use the
-useful plain \MP\ macro "unitvector" to produce a solution based on adding two equal
+useful plain \MP\ macro \mpl{unitvector} to produce a solution based on adding two equal
length vectors from the corner to the two other points. Another approach is to
exploit another geometric theorem that states that the bisector of an angle in a
triangle divides the opposite side in the ratio of the two other sides.
@@ -2685,7 +1952,7 @@ So if sides $AB$ and $BC$ have lengths $p$ and $q$ then the bisector will
be ${p\over p+q}={1\over1+q/p}$ from $A$ to $C$, and you can express this
simply using \MP's mediation syntax:
\vbox to 0pt{
-$$\includegraphics{bisection-interior}$$
+$$\includegraphics{geometry-bisection-interior}$$
\vss}
\newpage
@@ -2693,23 +1960,12 @@ $$\includegraphics{bisection-interior}$$
There is no classical method to trisect an arbitrary angle, so you need to resort
to measuring and arithmetic in \MP. If the angle is a given this is trivial:
-\mpic{-12pt}{trisection-simple.pdf}
-\begin{smallcode}
-path ray;
-numeric theta;
-ray = origin -- 200 right;
-theta = 42;
-draw ray;
-draw ray rotated 1/3 theta withcolor 2/3 red;
-draw ray rotated 2/3 theta withcolor 2/3 red;
-draw ray rotated theta;
-dotlabel.llft("$0$", origin);
-label("$\theta/3$", 72 right rotated 1/6 theta);
-label("$\theta/3$", 72 right rotated 3/6 theta);
-label("$\theta/3$", 72 right rotated 5/6 theta);
-\end{smallcode}
+\mpic{-12pt}{geometry-trisection-simple}
+\smallmpexternal[firstline=6,lastline=17]{geometry-trisection-simple.mp}
+
+\noindent
But if you have only the coordinates of some points then you need to use the
-\mpl{angle} primitive to measure the angle first; \mpl{angle} takes a \kw{pair}
+\mpl{angle} primitive to measure the angle first; \mpl{angle} takes a \<pair>
argument and returns a numeric representing the angle in degrees measured clockwise
from the $x$-axis to a line through the origin and the point represented by the pair.
This definition means that if you have three points $A$, $B$, and $C$, then you can
@@ -2722,13 +1978,13 @@ vardef measured_angle(expr P, Q, R) =
(angle (P-Q) - angle (R-Q)) * turningnumber (P--Q--R--cycle) mod 360
enddef;
\end{smallcode}
-The primitive \mpl{turningnumber} is explained on p.\thinspace 111 of \textsl{The
-METAFONTbook}. It takes a closed path and returns number of times that you would
+The primitive \mpl{turningnumber} is explained on p.\thinspace 111 of \mfbook.
+It takes a closed path and returns number of times that you would
turn through 360${}^\circ$ if you traversed the path. We use this here to
negate the measured angle if necessary, so that you always get the interior angle.
The \mpl{mod 360} on the end ensures that the result is in the range $0 \le \theta <
360$. Armed with a measured angle, all you then need is arithmetic.
-\mpic{-160pt}{trisection-classical.pdf}
+\mpic{-160pt}{geometry-trisection-classical}
It might be possible to use the \id{solve} macro to simulate the Neusis construction
(that allows you to measure a length) illustrated on the right, but measuring the
angles is rather easier.
@@ -2738,27 +1994,15 @@ angles is rather easier.
\moveright5.5in\vbox to 0pt{\hsize4in\noindent
\centerline{A puzzle square featuring some intersections}
-$$\includegraphics[width=3in]{magic-square-14}$$
+$$\includegraphics[width=3in]{geometry-magic-square-14}$$
The points were defined like this (the order was important).
-\begin{code}
-z1 = (10,10);
-z4 = 144 right rotated 12;
-z5 = z4 shifted (2, 78);
-z7 = z4 reflectedabout(origin, (1,1));
-
-z2 = 1/2 [z5, z7];
-z9 = whatever [z1, z4];
-z2-z9 = whatever * (z7-z1);
-z8 = whatever [z1, z5] = whatever [z2, z4];
-z3 = whatever [z2, z9] = whatever [z4, z7];
-z6 = whatever [z1, z7] = whatever [z3, z5];
-\end{code}
+\mpexternal[firstline=8,lastline=18]{geometry-magic-square-14.mp}
\vss}
\noindent
If you have line segments defined by their endpoints, then the
canonical way to find their intersection, is to use
the mediation syntax with \id{whatever} twice:
-$$\includegraphics[width=\textwidth]{whatever.pdf}$$
+$$\includegraphics{geometry-whatever}$$
The mediation syntax works even if the intersection point does not actually lie on
either of the two line segments. The intersection will be the point where the two
(infinite) lines through the pairs of points meet. If the two lines are parallel,
@@ -2781,7 +2025,7 @@ than straight lines, you need to use the \mpl{intersectiontimes} primitive or th
\subsubsection{The intersection algorithm}
\MP\ inherits a fast algorithm for finding the intersection between two paths from
-\MF. It is explained rather more gnomically than usual at the end of Chapter 14 of
+\MF. It is explained rather more succinctly than usual at the end of Chapter 14 of
\mfbook, with more detail given in the web source for \MF. The core algorithm works
on paths of length 1. If you have longer paths, \MP\ works its way along the paths
applying the core algorithm to successive pairs of unit subpaths. It does this is
@@ -2798,14 +2042,12 @@ found will always be as early as possible on $A$. Note that after the call abov
point $t$ of $A$ will be very close to point $u$ of $B$, as they both refer to the
same intersection point. If you want the alternative point that is earlier on $B$,
then use `$B \mathbin{\textrm{intersectiontimes}} A$'
-instead.\mpic{-222pt}{intersection-AB-or-BA}
+instead.\mpic{-222pt}{geometry-intersection-AB-or-BA}
\vfill\noindent
When we get down to paths of length 1, the algorithm works something like this:
-$$
-\includegraphics{intersection-algorithm}
-$$
+$$\includegraphics{geometry-intersection-algorithm}$$
\vadjust{\moveright 384pt\vbox to 0pt{\hsize 4.2in\vss \noindent
The two paths are represented as rectangles that enclose the end points and the
control points for each path. If these rectangles don't overlap then there is
@@ -2817,7 +2059,7 @@ rectangles. The two times returned by \mpl{intersectiontimes} are the midpoints
the subpaths enclosed by these two tiny rectangles, which is why they do not always
refer to exactly the same point.}}
-\subsubsection{Finding all intersection points}
+\subsubsection{Finding all intersection points}\label{sec:allxp}
As noted above, the \mpl{intersectiontimes} algorithm will stop at the first
intersection of the two paths, but it is possible that the two paths will intersect
@@ -2853,10 +2095,10 @@ intersectiontimes B}, but in a loop this causes an inconsistent equation error o
the second iteration. If you need to avoid the repeated use of \mpl{xpart} and
\mpl{ypart}, one alternative is to do this inside the loop:
\begin{smallcode}
- ...
- numeric t, u;
- (t, u) = A intersectiontimes B;
- ...
+...
+numeric t, u;
+(t, u) = A intersectiontimes B;
+...
\end{smallcode}
Now the numerics are reset each time and the equation is not inconsistent.
\vadjust{\moveright 384pt\vbox to 0pt{\hsize 4.2in\vss \noindent
@@ -2865,7 +2107,7 @@ both of the paths are close together, so that the unit subpaths are short;
But it
is possible to create quite long paths of unit \mpl{length} and these may intersect
each other more than once, like so:
-$$\includegraphics{intersection-only-two}$$
+$$\includegraphics{geometry-intersection-only-two}$$
Here the two paths $A$ and $B$ are Bézier splines of with \mpl{length=1}, so the
normal \MP\ algorithm is only ever going to give you one of the intersections. In
the diagram above, the
@@ -2875,18 +2117,10 @@ but what about the one in the middle?
The most reliable approach is to take a copy of one of the paths, and snip it off at
the intersection and try again until there is nothing left to snip.
-$$\includegraphics{intersection-all-three}$$
+$$\includegraphics{geometry-intersection-all-three}$$
The three points marked here were captured like this:
-\begin{code}
-pair P[]; numeric n; n=0;
-path R; R := A; % take a copy of A
-forever:
- R := R cutbefore B; % snip where we cross B
- exitif length cuttings = 0; % stop if nothing was cut
- P[incr n] = point 0 of R; % capture the point
- R := subpath (epsilon, infinity) of R; % nudge along
-endfor
-\end{code}
+\mpexternal[firstline=13,lastline=20]{geometry-intersection-all-three.mp}
+\noindent
This technique also works on paths with \mpl{length} greater than one,
so you may prefer it as your general “get all the intersections†approach.
Note that the \mpl{cutbefore} macro is defined using \mpl{intersectiontimes}.
@@ -2899,7 +2133,7 @@ Note that the \mpl{cutbefore} macro is defined using \mpl{intersectiontimes}.
Given five known points --- $A$, $B$, $C$, $D$, and $E$ --- \MP\ can find the point $F$
on the line $A \to B$, so that $E \to F$ is parallel to $C \to D$ like this:
-\mpic{0pt}{parallel}
+\mpic{0pt}{geometry-parallel}
\begin{code}
F = whatever[A, B]; % F is on the line A..B
E-F = whatever * (C-D) % E..F || C..D
@@ -2954,7 +2188,7 @@ find the other point by reversing the circle.\par}
The canonical way to draw a circle in plain \MP\ is to use the pre-defined path
\mpl{fullcircle} with a suitable transformation.
-\mpic{-12pt}{drawing-circles.pdf}
+\mpic{-12pt}{geometry-drawing-circles}
The path is defined (in "plain.mp") using two \MP\ primitive commands:
\begin{code}
path fullcircle; fullcircle = makepath pencircle;
@@ -2980,14 +2214,8 @@ points, but if the line between the two points is a diameter [\blue{II}], then y
draw fullcircle scaled abs (B-A) shifted 1/2[A,B];
\end{code}
Finally three points define a unique circle [\green{III}]:
-\begin{code}
-vardef circle_through(expr A, B, C) =
- save o; pair o;
- o = whatever * (A-B) rotated 90 shifted 1/2 [A,B]
- = whatever * (B-C) rotated 90 shifted 1/2 [B,C];
- fullcircle scaled 2 abs (A-o) shifted o
-enddef;
-\end{code}
+\mpexternal[firstline=27,lastline=32]{geometry-drawing-circles.mp}
+\noindent
Plain \MP\ also defines \id{halfcircle} and \id{quartercircle}, as the appropriate
subpaths of \id{fullcircle}, both starting at point 0 (3 o'clock). Curiously, this
differs from \MF\ where \id{quartercircle} is defined first, and the other two
@@ -2997,45 +2225,26 @@ complete circle of which they would be part; so if you did “\kw{draw}
$(34.5,21)$ to $(34,21.5)$.
\newpage
-\subsection{Incircle and excircle of a triangle}
+\subsection{Incircle and excircles of a triangle}
-The incircle of a triangle is the largest circle contained in the triangle.
+\textsc{The incircle of a triangle} is the largest circle contained in the triangle.
The centre of the incircle lies at the intersection of the internal angle bisectors.
So we can use ideas from §\ref{sec:bisect} and §\ref{sec:intersect} to define a
macro that returns the required path given points $A$, $B$, and $C$:
-\mxpic{-1in}{5in}{incircle}
-\begin{code}
-vardef incircle(expr A,B,C) =
- save a, b, m, t; pair a, b, m, t;
- a = A + unitvector (C-A) + unitvector (B-A);
- b = B + unitvector (A-B) + unitvector (C-B);
- m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
- t-m = whatever * (B-A) rotated 90;
- fullcircle scaled 2 abs (t-m) shifted m
-enddef;
-\end{code}
+\mpic{-1in}{geometry-incircle}
+\mpexternal[firstline=11,lastline=18]{geometry-incircle.mp}
-\bigskip\noindent
-The excircles of a triangle are the three circles lying outside the triangle and
+\vfill\noindent
+\textsc{The excircles of a triangle} are the three circles lying outside the triangle and
tangent to one edge and the extensions of the other two. The centres of each
excircle lie at the intersection of one internal angle bisector and the external
angle bisector of one of the other corners.
-
To get the external angle bisector,
-all you have to do is reverse the direction of one of the \mpl{unitvector} calls:
-\mxpic{0pt}{5in}{excircle}
-\begin{code}
-vardef excircle(expr A,B,C) =
- save a, b, m, t; pair a, b, m, t;
- a = A + unitvector (C-A) - unitvector (B-A);
- b = B + unitvector (A-B) + unitvector (C-B);
- m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
- t-m = whatever * (B-A) rotated 90;
- fullcircle scaled 2 abs (t-m) shifted m
-enddef;
-\end{code}
-
-\smallskip\noindent
+all you have to do is reverse the direction of one of the \mpl{unitvector} calls
+(can you see why?)
+\mpic{-.5in}{geometry-excircle}
+\mpexternal[firstline=11,lastline=18]{geometry-excircle.mp}
+\noindent\hey
To get the other excircles, call the macro with the points in a different order.
\newpage
@@ -3045,113 +2254,52 @@ The circumcircle of a triangle is the circle through the three corners, so if yo
already have the corners of your triangle as separate \<pair> variables, you can
use the \mpl{circle_through} macro from §\ref{sec:circles}. Or you can adapt the
macro to take a single triangular path:
-\begin{smallcode}[xleftmargin=0pt, xrightmargin=-60pt]
-vardef circumcircle(expr T) =
- save m; pair m;
- m = whatever * (point 0 of T - point 1 of T) rotated 90 shifted point 1/2 of T
- = whatever * (point 1 of T - point 2 of T) rotated 90 shifted point 3/2 of T;
- fullcircle scaled 2 abs (point 0 of T - m) shifted m
-enddef;
-\end{smallcode}
-Note that as the diagram on the right shows,\mxpic{-2in}{4.6in}{circumcircle}
+\smallmpexternal[firstline=11,lastline=16,xleftmargin=0pt, xrightmargin=-60pt]{geometry-circumcircle.mp}
+\noindent
+Note that as the diagram on the right shows,\mpic{-2in}{geometry-circumcircle}
the centre of the circumcircle is the intersection of all three of the perpendicular bisectors of
sides, but for the purposes of drawing in \MP\ you only need to find the
-intersection of two of them. You could write
+intersection of two of them. You could write
\begin{smallcode}[xleftmargin=0pt, xrightmargin=-60pt]
- m = whatever * (point 0 of T - point 1 of T) rotated 90 shifted point 1/2 of T
- = whatever * (point 1 of T - point 2 of T) rotated 90 shifted point 3/2 of T
- = whatever * (point 2 of T - point 3 of T) rotated 90 shifted point 5/2 of T;
+ m = whatever * (point 0 of T - point 1 of T) rotated 90 shifted point 1/2 of T
+ = whatever * (point 1 of T - point 2 of T) rotated 90 shifted point 3/2 of T
+ = whatever * (point 2 of T - point 3 of T) rotated 90 shifted point 5/2 of T;
\end{smallcode}
but this does not add any more information to the equation for $m$, and
-\MP\ will sometimes give you an “inconsistent equation†error if your triangle
+\MP\ will sometimes give you an “inconsistent equation†error if your triangle
is long and thin.
\vfill
\noindent
\hey The marks that show line segments are equal were created by this macro.
-\begin{code}
-vardef mark_equal(expr a, b, n) =
- save m, s; numeric s; 2s = n - 1;
- picture m; m = image(for t=-s upto s:
- draw (down--up) scaled 2 rotated -13 shifted (t,0)
- withpen pencircle scaled 1/4;
- endfor);
- draw m rotated angle (b-a) shifted 1/4[a,b];
- draw m rotated angle (b-a) shifted 3/4[a,b];
-enddef;
-\end{code}
-Given the triangular \<path> $T$, the macro was used like this:
+\smallmpexternal[firstline=38,lastline=47]{geometry-circumcircle.mp}
+Given the triangular \<path> $T$, the macro was used like this:
$\longrightarrow$\vadjust{\moveright5.5in\vbox to 0pt{\vss
-\begin{code}
-mark_equal(point 0 of T, point 1 of T, 1);
-mark_equal(point 1 of T, point 2 of T, 2);
-mark_equal(point 2 of T, point 0 of T, 3);
-\end{code}}}
+\smallmpexternal[firstline=49,lastline=51]{geometry-circumcircle.mp}
+}}
\newpage
\subsection{The nine-point circle of a triangle}
-The orthocentre of a triangle is the point is the intersection of the three
+The orthocentre of a triangle is the point at the intersection of the three
altitudes, shown as point $D$ below.
The point $N$, half-way from $D$ to the
circumcentre $M$ is the centre of the remarkable nine-point circle which passes
through the bases of the three altitudes and bisects the six line segments $AB$, $AC$, $AD$,
-$BC$, $BD$, and $CD$.\vadjust{\moveright5.2in\vbox to 0pt{\hsize 4in\vskip-80pt\noindent
-\begin{smallcode}
-pair A, B, C, D, N, M, p, q, r;
-A = origin; B = 377 dir 10; C = 233 dir 70;
-% pedal points (not labelled)
-p = whatever[B, C]; A - p = whatever * (B-C) rotated 90;
-q = whatever[C, A]; B - q = whatever * (C-A) rotated 90;
-r = whatever[A, B]; C - r = whatever * (A-B) rotated 90;
-
-D = whatever[A, p] = whatever[B, q];
-N = 1/4(A + B + C + D); % remarkably...
-M = D rotatedabout(N, 180); % M is also the circumcentre
-
-path circumcircle, nine_point_circle;
-nine_point_circle = fullcircle scaled 2 abs(N - 1/2[A, B]) shifted N;
-circumcircle = fullcircle scaled 2 abs(M - A) shifted M;
-
-draw nine_point_circle withcolor 3/4 red;
-draw circumcircle withcolor 1/2[3/4 blue, white];
-
-drawoptions(dashed evenly scaled 1/4 withcolor 1/2);
-draw 1/2[A,B] -- M -- 1/2[B, C];
-draw 1/2[C,A] -- M -- D;
-draw A -- p;
-draw B -- q;
-draw C -- r;
-
-% show the nine points with small circle markers
-drawoptions(withpen pencircle scaled 1/4);
-draw fullcircle scaled 2 shifted 1/2[A, B];
-draw fullcircle scaled 2 shifted 1/2[A, C];
-draw fullcircle scaled 2 shifted 1/2[A, D];
-draw fullcircle scaled 2 shifted 1/2[B, C];
-draw fullcircle scaled 2 shifted 1/2[B, D];
-draw fullcircle scaled 2 shifted 1/2[C, D];
-draw fullcircle scaled 2 shifted p;
-draw fullcircle scaled 2 shifted q;
-draw fullcircle scaled 2 shifted r;
-
-drawoptions();
-draw A--B--C--cycle;
-dotlabel.llft("$A$", A);
-dotlabel.rt("$B$", B);
-dotlabel.ulft("$C$", C);
-dotlabel.urt("\ $D$", D);
-dotlabel.llft("$M$", M);
-dotlabel.llft("$N$", N);
-\end{smallcode}\vss}}
-$$\includegraphics[width=\textwidth]{nine-point-circle}$$
+$BC$, $BD$, and $CD$.\vadjust{\moveright5.25in\vbox to 0pt{\hsize 4in\vskip-88pt\noindent
+\smallmpexternal[firstline=6,lastline=52,xleftmargin=0pt]{geometry-nine-point-circle.mp}
+\vss}}
+
+\smallskip
+
+$$\includegraphics{geometry-nine-point-circle}$$
\newpage
\subsection{Lines tangent to a point on a path}
\MP\ represents paths internally as a sequence of nodes. Each node consists of three
-pairs: the pre-control point, the point itself, and the post-control point.
-\mpic{0pt}{tangents-on-path}%
+pairs: the pre-control point, the point itself, and the post-control point.
+\mpic{0pt}{geometry-tangents-on-path}%
For a given path $p$ you can extract these points at time $t$ with these operators:
\begin{code}
precontrol t of p
@@ -3159,7 +2307,7 @@ point t of p
postcontrol t of p
\end{code}
Unless you explicitly set them differently, \MP’s curve fitting will make these
-three points co-linear, so you can draw a tangent at point $t$ with
+three points co-linear, so you can draw a tangent at point $t$ with
\begin{code}
draw precontrol t of p -- postcontrol t of p;
\end{code}
@@ -3167,7 +2315,7 @@ The length of the tangent line drawn
like this depends on the size and shape of the curve, but it is somewhat arbitrary.
So you may prefer to extract a \<pair> representing the tangent at point $t$ with
\begin{code}
-pair d; d = postcontrol t of p - precontrol t of p;
+pair d; d = postcontrol t of p - precontrol t of p;
\end{code}
In fact, this is so useful that
"plain.mp" provides \mpl{direction} as a shorthand:
@@ -3176,7 +2324,7 @@ vardef direction expr t of p = postcontrol t of p - precontrol t of p enddef;
\end{smallcode}
which can save you some typing. But the clever bit is that $t$ does not have to be a whole
number. If you set $t=\frac14$ (say), \MP\ works out the corresponding fractional
-control points, so that you can use \mpl{direction t of p} to get a tangent at any point.
+control points, so that you can use \mpl{direction t of p} to get a tangent at any point.
The vector pairs returned have the right direction, but still have rather arbitrary magnitudes, so
the usual idiom is something like this:
@@ -3195,13 +2343,11 @@ outside a circle. To do this, you need to adapt the standard geometrical
construction: for a given circle $C$ and a point $p$, find the midpoint of $p$ and
the center of $C$; draw a semicircle through $p$, centred on this midpoint; the tangent
point is where the semicircle intersects $C$. %
-\mpic{-110pt}{tangents-point-to-circle.pdf}
+\mpic{-110pt}{geometry-tangents-point-to-circle}
Given a suitable \mpl{path C} and \mpl{pair p} you can do this:
-\begin{code}
-pair o, m, t, t'; o = center C; m = 1/2[o, p];
-t = C intersectionpoint halfcircle zscaled (p-o) shifted m;
-t' = C intersectionpoint halfcircle zscaled (o-p) shifted m;
-\end{code}
+\mpexternal[firstline=11,lastline=13]{geometry-tangents-point-to-circle.mp}
+
+\noindent
No parentheses are needed around the second path, because \mpl{intersectionpoint} is
defined with \mpl{secondarydef}.
@@ -3213,82 +2359,62 @@ that $b > a$ in all cases regardless of the relative rotation of $C$ and $p$. T
means that \mpl{subpath (a, b) of C} is always the “long way round†C, on the
opposite side from $p$, and \mpl{subpath (a, b-8) of C} is always the shorter
segment.
-\begin{code}
-vardef tangent_times(expr C, p) =
- % return the two times on C that correspond
- % to the external tangents from p to C
- save o, a, b, G, H;
- pair o; numeric a, b; path G, H;
- o = center C;
- H = halfcircle zscaled (p-o) shifted 1/2[o, p];
- G = halfcircle zscaled (o-p) shifted 1/2[o, p];
- (a, whatever) = C intersectiontimes H;
- (b, whatever) = C intersectiontimes G;
- (a, b if b < a: + 8 fi)
-enddef;
-\end{code}
-Note the elegant syntax here;
-if \mpl{z} is a \<pair> then the operation \mpl{zscaled z} is equivalent
-to \mpl{scaled abs z rotated angle z}.
-\vpic{-200pt\noindent Here is the macro in action.
+\mpexternal{geometry-tangent-times.mp}
+
+\noindent
+Note the elegant syntax here; if \mpl{z} is a \<pair> then the operation
+\mpl{zscaled z} is equivalent to \mpl{scaled abs z rotated angle z}.
+
+\moveright5.5in\vbox to 0pt{\hsize4in\vskip-200pt
+\noindent Here is the macro in action.
Having obtained the two times $a$ and $b$ from the macro, the dashed line
-was drawn along a path that was composed with:
-\vrule depth 20pt width 0pt height 2pt
-\mpl{p -- subpath (a,b) of C -- cycle}
-}{tangent-times-on-circle}
+was drawn along a path that was composed with: \mpl{p -- subpath (a,b) of C -- cycle}
+$$\includegraphics{geometry-tangent-times-on-circle}$$
+\vss}
\newpage
\subsection{Lines tangent to two circles (exterior)}\label{sec:adjust-times}
The same \mpl{tangent_times} macro can be reused to find the tangents that touch two
-circles, using an approach like this: \mwpic{-12pt}{tangents-two-circles-exterior}
-\begin{code}
-path A, B;
-A = fullcircle scaled 144;
-B = fullcircle scaled 60 shifted (200, 140);
-
-numeric R, r;
-R = abs (point 0 of A - center A);
-r = abs (point 0 of B - center B);
+circles, using an approach like this: \mwpic{-36pt}{geometry-tangents-two-circles-exterior}
-path C; numeric t, u;
-C = fullcircle scaled (2R-2r) shifted center A;
-(t, u) = tangent_times(C, center B);
+\smallmpexternal[firstline=9,lastline=24]{geometry-tangents-two-circles-exterior.mp}
-draw A withpen pencircle scaled 2 withcolor 3/4[blue, white];
-draw B withpen pencircle scaled 2 withcolor 3/4[blue, white];
-
-draw subpath (t, u) of A -- subpath (u-8, t) of B -- cycle;
-\end{code}
Here $A$ and $B$ are the two circles you want to connect, and $A$ is larger than
$B$. $R$ is the radius of the larger, $r$ of the smaller. $C$ is an auxiliary circle
centred at the same point as $A$ and scaled so that its radius is $R-r$. If we
then find the tangent points on $C$ from the center of $B$, the points we want are
the corresponding points on $A$ and $B$.
-\medskip\noindent
-This works well, provided that none of three
-circles $A$, $B$, or $C$ has been rotated (that is that point 0 is at 3 o'clock in
-all of them). But
-this may not always be the case. For example, you might have written
+Notice how the times are used with \mpl{subpath}; if $a>b$, then the path returned
+from \mpl{subpath (a, b) of P} is the same as \mpl{reverse subpath (b, a) of P},
+which means that \mpl{subpath (u,t) of B} would give you the wrong side. The remedy
+is to subtract 8 from $u$ (or, more generally, to subtract the length of path $B$).
+Because there are 8 points on a \mpl{fullcircle} path, point $u$ and point $u-8$
+refer to the same place, but since $u-8 < t$, the subpath will run clockwise as
+required.
+
+\vfill
+\noindent\hey
+This all works provided that all three
+circles $A$, $B$, or $C$ have the same rotation.
+But this may not always be the case.
+For example, you might have defined $B$ as
\begin{code}
-B = fullcircle scaled 60 shifted 240 right rotated 36;
+B = fullcircle scaled 60 shifted 240 dir 36;
\end{code}
and then point $t$ of $B$ would \textit{not} correspond to point $t$ of the
-auxiliary circle. So to make the code above more general you have to adjust the
-tangent times to take account of the relative rotation of the circles.
-\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vskip-24pt\noindent
-\begin{code}
-vardef adjust_time(expr tt, AA, BB) =
- tt + 1/45 angle (point 0 of AA - center AA)
- - 1/45 angle (point 0 of BB - center BB)
-enddef;
-\end{code}
-\vss}}
-The in the figure $t$ was adjusted to $t'$ for $A$ and $t''$ for $B$, using the
-routine shown on the right. This routine shows the relationship between \mpl{angle}
-and points around a circle: $360^\circ = 8\:\hbox{points}$.
+auxiliary circle $C$.
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent
+To cope with circles that might not have the same rotation, you need to adjust the
+tangent times to take account of the different relative rotation.
+\mpexternal[firstline=7,lastline=10]{geometry-tangents-two-circles-interior.mp}
+\noindent
+This macro exploits the relationship between \mpl{angle}
+and points around a \mpl{fullcircle} path: $360^\circ = 8\:\hbox{points}$.
+You can see it in action on the following page.
+}}
\newpage
\subsection{Lines tangent to two circles (interior)}
@@ -3296,65 +2422,24 @@ and points around a circle: $360^\circ = 8\:\hbox{points}$.
To find the interior tangents, you just need to add the smaller radius rather than
subtract it, and add 4 to the times on the smaller circles, so that they are on the
other side:
-$$\includegraphics[width=\textwidth]{tangents-two-circles-interior}$$
+$$\includegraphics[width=\textwidth]{geometry-tangents-two-circles-interior}$$
\bigskip\noindent
The complete code for this is shown on the right. It uses the same
routines given above; \mpl{tangent_times} from section \ref{sec:tangent-times}, and
\mpl{adjust_time} from section \ref{sec:adjust-times}.
-\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent
-\begin{smallcode}
-path A, B;
-A = fullcircle scaled 144 rotated uniformdeviate 360;
-B = fullcircle scaled 60 shifted 240 right rotated 36;
-
-numeric R, r;
-R = abs (point 0 of A - center A);
-r = abs (point 0 of B - center B);
-
-path C;
-C = fullcircle scaled (2R+2r) shifted center A; % NB +ve
-
-numeric t, t', t'', u, u', u'';
-(t, u) = tangent_times(C, center B);
-t' = adjust_time(t, C, A);
-u' = adjust_time(u, C, A);
-t'' = adjust_time(t + 4, C, B); % Note the plus fours
-u'' = adjust_time(u + 4, C, B);
-
-draw A withpen pencircle scaled 2 withcolor 3/4[blue, white];
-draw B withpen pencircle scaled 2 withcolor 3/4[blue, white];
-draw C withpen pencircle scaled 1 withcolor 3/4[blue, white];
-
-draw subpath (t', u') of A -- subpath (u'', t'') of B -- cycle;
-draw center B -- subpath (t, u) of C -- cycle dashed evenly;
-
-draw center B -- point t'' of B dashed withdots scaled 1/2;
-draw center B -- point u'' of B dashed withdots scaled 1/2;
-draw point t of C -- point t' of A dashed withdots scaled 1/2;
-draw point u of C -- point u' of A dashed withdots scaled 1/2;
-
-dotlabel.ulft(btex $t$ etex, point t of C);
-dotlabel.lrt (btex $t'$ etex, point t' of A);
-dotlabel.lrt (btex $t''$ etex, point t'' of B);
-dotlabel.lrt (btex $u$ etex, point u of C);
-dotlabel.ulft(btex $u'$ etex, point u' of A);
-dotlabel.ulft(btex $u''$ etex, point u'' of B);
-drawdot center B withpen pencircle scaled dotlabeldiam;
-
-drawoptions(withcolor 1/2[blue, white]);
- label.urt(btex $A$ etex, point 1/2(t'+u'- 7.6) of A);
- label.rt (btex $B$ etex, point 1/2(t''+u''- 2) of B);
- label.urt(btex $C$ etex, point 1/2(t+u-8) of C);
-drawoptions();
-\end{smallcode}\vskip -1in
+\vadjust{\moveright5.25in\vbox to 0pt{\hsize 4in\vss\noindent
+\smallmpexternal[firstline=12,lastline=54]{geometry-tangents-two-circles-interior.mp}
+\vskip -72pt
}}
\subsection{Axis of similitude}\label{sec:axosim}
-\bigskip
-\noindent\hbox to \textwidth{\includegraphics[scale=0.92]{axis-of-similitude}\hss}
-\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent
+\vbox to 0pt{\vskip-\baselineskip\noindent\hbox to
+\textwidth{\includegraphics[scale=0.92]{geometry-axis-of-similitude}\hss}\vss}
+
+\vfill
+\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent
Given three circles taken in pairs, you can use the techniques of the preceding
sections to find the three points where the common external tangents
intersect (shown here as $E_{12}$, $E_{31}$, and $E_{23}$) and the
@@ -3364,58 +2449,53 @@ The line common to the three $E$ points is known as the \textit{Axis of
Similitude}.
The drawing is left as an exercise for the reader, except
-to note that if $r_1$ and $r_2$ are \mpl{numeric} variables representing
-the radius of the circles centred at the \mpl{pair} variables $C_1$ and $C_2$,
-then we have:
-$$\vbox{\openup3pt\halign{\hfil$#$&${}=#$\hfil\cr
-E_{12}&({r_1\over r_1 - r_2})[C_1, C_2];\cr
-I_{12}&({r_1\over r_1 + r_2})[C_1, C_2];\cr
-}}$$
-which is a bit quicker than working out all the tangent points.}}
+to note that if \mpl{r1} and \mpl{r2} are \<numeric> variables representing
+the radius of the circles centred at the \<pair> variables \mpl{C1} and \mpl{C2},
+then:
+\begin{smallcode}
+E12 = (r1/(r1 - r2)[C1, C2]; I12 = (r1/(r1 + r2)[C1, C2];
+\end{smallcode}
+which is a bit quicker than working out all the tangent points.
+My version is in the file "geometry-axis-of-similitude.mp"
+}
\newpage
\subsection{Inversion, pole, and polar}\label{sec:inversion}
Inversion in a circle is a generalization of reflection in a line.
-\mpic{-68pt}{pole-and-polar}
-It is useful for certain constructions in geometry, and easy to
-implement as a macro \MP. For given circle, and a
-given point $P$ lying outside the circle, the inverted point $P'$ lies inside the
-circle at the intersection of the line from $P$ to the centre of the circle, and the
-line between the tangent points [§\ref{sec:tangent-times}] from $P$, shown here as
-$Q$ and $R$.\rlap{\quad$\longrightarrow$}
+\mpic{-48pt}{geometry-pole-and-polar}
+It is useful for certain constructions in geometry, and easy to implement as a macro
+\MP. For given circle, and a given point $P$ lying outside the circle, the inverted
+point $P'$ lies inside the circle at the intersection of the line from $P$ to the
+centre of the circle, and the line between the tangent points
+[§\ref{sec:tangent-times}] from $P$, shown here as $Q$ and $R$.\rlap{\quad$\longrightarrow$}
But $OPQ$ and $OQP'$ are similar triangles, so $r/OP=OP'/r$ and so $OP' =
r^2/OP$, and since $P'$ must lie on the line through $O$ and $P$, this is enough to
-define a macro directly to find $P'$ given $P$, $O$, and $r$:
+to find $P'$ directly given $P$, $O$, and $r$:
\begin{code}
-P' = O + unitvector(P-O) scaled r * r / abs (P-O);
+P' = O + unitvector(P-O) scaled (r * r / abs (P-O));
\end{code}
-But examining \mpl{plain.mp} shows that \mpl{unitvector} is a macro defined like this:
+But examining "plain.mp" shows that \mpl{unitvector} is a macro defined like this:
\begin{code}
vardef unitvector primary z = z/abs z enddef;
\end{code}
-which suggests this alternative (safer) approach:
+which suggests this alternative formulation:
\begin{code}
-vardef invert(expr P, O, r) =
- save s; numeric s; s = r / abs (P-O);
- O + (P-O) * s * s
-enddef;
+P' = O + (P - O) scaled (r / abs (P - O) * r / abs (P - O));
\end{code}
-This works well provided that $|P| > \frac1{180} r$, which is usually the case, but
-you could also consider checking that $|t|>0$ and that $s$ was not too large.
-
-If it was more convenient to deal with the \<path> of the circle of inversion
-instead of the centre and the radius, you get the macro to work out the centre and
-the radius for you.
+or as a macro, and dividing first to avoid overflow:
\begin{code}
-vardef invert(expr P, C) =
- save o; pair o; o = 1/2[point 0 of C, point 4 of C];
- save r; numeric r; r = abs (point 0 of C - o);
- save s; numeric s; s = r / abs (P - o);
- o + (P - o) * s * s
+vardef invert(expr P, O, r) =
+ save s; numeric s; s = abs(P - O);
+ O + (P - O) / s * r / s * r
enddef;
\end{code}
+This works well in most cases, but you could consider checking that $s$ is not too small.
+If it is more convenient to deal with the \<path> of the circle of inversion
+instead of the centre and the radius, you can get the macro to calculate
+them for you:
+\mpexternal[firstline=6,lastline=11]{geometry-pole-and-polar.mp}
\vfill
@@ -3435,8 +2515,9 @@ perpendicular to the line through the point and the center of the circle of
inversion.
\smallskip
-\noindent\llap{\nb}The small dotted circle through $O$ and $P'$ above is the inversion
-of the whole polar line (infinitely extended).}
+\noindent\llap{\nb}The inversion of points on the polar (shown as blue dots)
+lie on a circle through $O$ and $P'$. The complete circle would be the inversion
+of the infinitely extended polar.}
\newpage
\subsection{Radical axis and radical centre}\label{sec:radical}
@@ -3447,64 +2528,27 @@ with respect to both circles; that is the points from which the tangents to each
are of equal length. A circle centred at any point on the axis, and drawn with radius equal to the
length of the tangent will cut both circles at right angles.
-\medskip\noindent\centerline{\includegraphics{radical-axis}}
+\medskip\noindent\centerline{\includegraphics{geometry-radical-axis}}
\medskip\noindent
-In a system of three circles as shown, the \textit{radical centre} is the
+In a system of three circles as shown, the \textit{radical centre} ("radix") is the
intersection of the three mutual radical axes. The tangents from this point to all three circles
-have the same length, so a circle with this radius cuts all three circles at right
-angles.
-
-\moveright5.5in\vbox to 0pt{\vss\hsize 4in\begin{smallcode}
-vardef radical_axis(expr ca, cb) =
- numeric t, d, ra, rb;
- ra = abs(center ca - point 0 of ca);
- rb = abs(center cb - point 0 of cb);
- d = abs(center cb - center ca);
- 2t = 1 + (ra+rb) / d * (ra-rb) / d;
- (up -- down) scaled 89
- rotated angle (center cb - center ca)
- shifted t[center ca, center cb]
-enddef;
-beginfig(1);
- path c[], a[];
- z1 = origin; z2 = 233 right rotated 4; z3 = 209 right rotated -42;
- c1 = fullcircle scaled 202 shifted z1;
- c2 = fullcircle scaled 106 shifted z2;
- c3 = fullcircle scaled 62 shifted z3;
- a1 = radical_axis(c1, c2);
- a2 = radical_axis(c2, c3);
- a3 = radical_axis(c3, c1);
- z0 = whatever [point 0 of a1, point 1 of a1]
- = whatever [point 0 of a2, point 1 of a2];
- numeric t; (t, whatever) = tangent_times(c1, z0);
- drawoptions(withpen pencircle scaled 1 withcolor 3/4[blue, white]);
- draw c1; draw c2; draw c3;
- drawoptions(withcolor 3/4[blue, white]);
- draw z1 -- point t of c1 dashed evenly;
- drawoptions(withpen pencircle scaled 1/4);
- draw z1 -- z2 -- z3 -- cycle;
- drawoptions();
- draw a1; draw a2; draw a3;
- drawoptions(withcolor 2/3 red);
- draw fullcircle scaled 2 abs (point t of c1 - z0) shifted z0;
- draw z0 -- point t of c1 dashed evenly;
- drawdot z0 withpen pencircle scaled dotlabeldiam;
- drawoptions(withcolor 1/4[blue, white]);
- drawdot z1 withpen pencircle scaled dotlabeldiam;
- drawdot z2 withpen pencircle scaled dotlabeldiam;
- drawdot z3 withpen pencircle scaled dotlabeldiam;
- label.urt(btex $C_1$ etex, point 1 of c1);
- label.urt(btex $C_2$ etex, point 1 of c2);
- label.rt (btex $C_3$ etex, point 0 of c3);
-endfig;
-\end{smallcode}\vskip -1in}
+have the same length, so a circle with this radius (shown above in \red{red})
+cuts all three circles at right angles.
+
+\moveright5.5in\vbox to 0pt{\vss\hsize 4in
+\smallmpexternal[firstline=6,lastline=51]{geometry-radical-axis.mp}
+\vskip -1in}
\newpage
\subsection{Circles tangent to other circles}
-\bigskip
-\noindent\hbox to \textwidth{\includegraphics[height=\textheight]{apollonius}\hss}
-\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent
+
+\vbox to 0pt{\noindent
+\hbox to \textwidth{\includegraphics[height=\textheight]{geometry-apollonius}\hss}
+\vss}
+
+\vfill
+\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent
The classical Problem of Apollonius is to find a circle tangent to three others.
All of the approaches are rather involved, but Gergonne's is probably the simplest
to follow in \MP.
@@ -3524,127 +2568,45 @@ technique [§\ref{sec:circles}].
\smallskip\noindent
{\small
-The drawing is also left as an exercise for the reader, although you can find my
-version in the source code for this document. You might like to try to make a more
-robust version or to find all the other tangent circles.}
-}}
+The drawing is left as an exercise for the reader, although you can find my
+"geometry-apollonius.mp" in the source for this document. You might try to make a more
+robust version or to find all the other tangent circles.}}
\newpage
\subsection{Coordinate geometry examples}
\kern-\baselineskip
-\vpic{-24pt}{desargues}
-\kern-.5\baselineskip
-\begin{code}[xleftmargin=0pt, xrightmargin=-72pt]
-beginfig(1);
- z.P = 200 up rotated 21; z.A = 100 left rotated -21;
- z.B = origin; z.C = 90 right rotated 42;
-
- z.A' = 3/8[z.P, z.A];
- z.B' = 1/2[z.P, z.B];
- z.C' = 5/8[z.P, z.C];
-
- z.R = whatever [z.A, z.B] = whatever [z.A', z.B'];
- z.S = whatever [z.B, z.C] = whatever [z.B', z.C'];
- z.T = whatever [z.C, z.A] = whatever [z.C', z.A'];
-
- path t[];
- t1 = z.A--z.B--z.C--cycle;
- t2 = z.A'--z.B'--z.C'--cycle;
-
- fill t1 withcolor 7/8[red, white];
- fill t2 withcolor 7/8[blue, white];
- draw t1 withcolor 1/2 white;
- draw t2 withcolor 1/2 white;
-
- drawoptions(dashed withdots scaled 1/2);
- draw z.P--z.A;
- draw z.P--z.B;
- draw z.P--z.C;
-
- drawoptions(dashed evenly scaled 1/2);
- draw z.B--z.R--z.B';
- draw z.C--z.S--z.C';
- undraw subpath (1/4, 3/4) of (z.C'--z.T) withpen
- pencircle scaled 5;
- draw z.C--z.T--z.C';
-\end{code}
-\moveright 384pt \vbox to 0pt{\vss
-\begin{code}[xleftmargin=0pt, xrightmargin=-72pt]
-
- drawoptions(withcolor 2/3 red);
- draw 9/8[z.S,z.R] -- 9/8[z.R,z.S];
- picture pp; pp = thelabel("perspectrix", origin);
- draw pp shifted 7 down rotated angle (z.S-z.R)
- shifted 1/2[z.R, z.T];
- dotlabel.urt("perspector", z.P);
-
- drawoptions();
- dotlabel.lft (btex $A$ etex, z.A);
- dotlabel.llft(btex $B$ etex, z.B);
- dotlabel.lrt (btex $C$ etex, z.C);
- dotlabel.lft (btex $A'$ etex, z.A');
- dotlabel.llft(btex $B'$ etex, z.B');
- dotlabel.bot (btex $C'$ etex, z.C');
- label.rt(btex Desargues' Theorem etex, (x.C', 1/2(y.P+y.C')));
-endfig;
-\end{code}
+\vpic{-24pt}{geometry-examples-desargues}
+
+\mpexternal[xleftmargin=0pt,firstline=6,lastline=37]{geometry-examples-desargues.mp}
+\moveright 340pt \vbox to 0pt{\vss
+\mpexternal[xleftmargin=0pt,xrightmargin=-80pt,firstline=38,lastline=53]{geometry-examples-desargues.mp}
\vskip -42pt}
\newpage
-\moveright5.5in\vbox to 0pt{\vskip10pt\includegraphics[width=4.2in]{trisection-triangles}\vss}
-\vskip-\baselineskip
-\begin{code}[xleftmargin=0pt, xrightmargin=-80pt]
-randomseed := 2485.81543;
-vardef measured_angle(expr p, o, q) =
- (angle (p-o) - angle (q-o)) mod 360
-enddef;
-beginfig(1);
-picture T;
-for i=0 upto 1:
- for j=0 upto 1:
- clearxy;
- T := image(
- z1 = (120 + uniformdeviate 21, 0);
- z2 = (120 + uniformdeviate 21, 0) rotated 120 rotated 21 normaldeviate;
- z3 = (120 + uniformdeviate 21, 0) rotated 240 rotated 21 normaldeviate;
- numeric a, b, c;
- a = measured_angle(z3, z1, z2);
- b = measured_angle(z1, z2, z3);
- c = measured_angle(z2, z3, z1);
- z4 = whatever [z1, z2 rotatedabout(z1, 1/3 a)]
- = whatever [z2, z3 rotatedabout(z2, 2/3 b)];
- z5 = whatever [z2, z3 rotatedabout(z2, 1/3 b)]
- = whatever [z3, z1 rotatedabout(z3, 2/3 c)];
- z6 = whatever [z3, z1 rotatedabout(z3, 1/3 c)]
- = whatever [z1, z2 rotatedabout(z1, 2/3 a)];
- fill z4--z5--z6--cycle withcolor 3/4[red + 1/2 green, white];
- draw z4--z5--z6--cycle;
- draw z1 -- z4 -- z2 -- z5 -- z3 -- z6 -- cycle
- dashed withdots scaled 1/4;
- draw z1 -- z2 -- z3 -- cycle;
- );
- draw T shifted (200i, 240j);
- endfor
-endfor
-label.rt(btex \vbox{\halign{#\hfil\cr The trisectors of each angle\cr
-in any given triangle form a\cr central equilateral triangle.\cr}} etex, (24, 128));
-endfig;
-\end{code}
+\vpic{-36pt}{geometry-examples-trisections}
+\vbox to 0pt{
+ \mpexternal[xleftmargin=0pt,xrightmargin=-80pt,firstline=6,lastline=40]{geometry-examples-trisections.mp}
+\vss}
\newpage
-\kern-\baselineskip
-\vpic{1in}{projections}
-\mpexternal[xleftmargin=0pt]{projections-code.mp}
-
+\kern-3\baselineskip
+\vpic{0.25in}{geometry-examples-napoleon}
+\vbox to 0pt{
+ \mpexternal[xleftmargin=0pt,firstline=6,lastline=37]{geometry-examples-napoleon.mp}
+\vss}
\newpage
-\moveright5.5in\vbox to 0pt{\hsize4in\noindent This needs an \mpl{invert} macro, such
-as the one from [§\ref{sec:inversion}].
-
-\smallskip\noindent
-\includegraphics[width=288pt]{arbelos}
+\kern-3\baselineskip
+\vpic{1in}{geometry-examples-projections}
+\vbox to 0pt{
+ \mpexternal[xleftmargin=0pt,firstline=6,lastline=41]{geometry-examples-projections.mp}
+\vss}
-\vskip 1.414in\noindent
+\newpage
+\moveright5.25in\vbox to 0pt{\hsize4.25in\noindent
+\smallmpexternal[firstline=7,lastline=14,xleftmargin=0pt]{geometry-arbelos.mp}
+\centerline{\includegraphics{geometry-arbelos}}
+\vfill\noindent
\begingroup
\raggedleft\fontsize{8}{10}\selectfont\textsf{%
One must also recognize that any attempt to illustrate geometry\\
@@ -3654,48 +2616,113 @@ of finite length, of positive thickness, and rough edged.\\[2pt]
— Benoit Mandelbrot, \textsl{The Fractal Geometry of Nature}}
\par\endgroup
\vss}
-\begin{smallcode}[xleftmargin=0pt, xrightmargin=-72pt]
-beginfig(1);
-pair A,B,C; A = origin; C = 244 right; B = 7/8[A, C];
-path c[];
-c1 = fullcircle scaled 2 abs(A-C); % large circle for the inversions
-c2 = fullcircle scaled abs(A-C) shifted 1/2[A,C];
-c3 = fullcircle scaled abs(A-B) shifted 1/2[A,B];
-c4 = fullcircle scaled abs(B-C) shifted 1/2[B,C];
-c5 = invert(c4,c1);
-numeric d; d = abs(point 0 of c5 - point 4 of c5); % diameter of c5
-
-drawoptions(withcolor 3/4 white);
-draw c4; draw c5;
-draw invert(subpath(0, 3/2) of c2, c1);
-draw invert(subpath(0, 3/2) of c3, c1);
-drawoptions();
-draw subpath(-1/4,1) of c1 withcolor 3/4[1/2 red,white];
-label.bot("\textit{circle of inversion}", point -1/4 of c1)
- withcolor 1/4[1/2 red, white];
-
-for i=1 upto 72:
- path c, c';
- c = c5 shifted (0, i*d); c' = invert(c, c1);
- if i < 5:
- drawoptions(withcolor 3/4 white);
- draw c; draw origin -- center c;
- fill fullcircle scaled dotlabeldiam shifted center c;
- fill fullcircle scaled dotlabeldiam shifted center c';
- drawoptions();
- fi
- draw c' withpen pencircle scaled 1/4 withcolor 2/3 blue;
-endfor
-forsuffixes $=2,3,4: draw subpath (0,4) of c$
- withpen pencircle scaled 1/4 withcolor 2/3 blue;
-endfor
-draw A--C;
-dotlabel.lft("$A$", A); dotlabel.llft("$B$", B); dotlabel.rt("$C$", C);
-endfig;
+\smallmpexternal[firstline=15,lastline=52,xleftmargin=0pt,xrightmargin=-72pt]{geometry-arbelos.mp}
+
+\newpage
+\subsection{Drawing angle marks}
+
+\textsc{Observant readers} will have noticed that the occasional angle marks in the
+preceding examples are generally drawn using plain \MP\ commands rather than a
+macro. This is partly in order to make the examples self-contained and partly to
+show what can be done with the default plain \MP\ format.
+
+\smallskip\noindent
+To mark a right angle at point $a$ on the line $a\to b$ you can do something like
+this:
+\begin{code}
+draw unitsquare scaled 5 rotated angle (b-a) shifted a;
+\end{code}
+with a suitable pen and a suitable colour. You \textit{could} write a macro to do
+this, but it hardly seems worth the effort.%
+\vadjust{\moveright 5.5in\vbox to 0pt{\hsize 4.2in\vskip -108pt\noindent
+For example, this is one way to annotate a right-angle triangle:
+\begin{code}
+pair a, b, c; a = 10 dir 10; b = 160 dir 20;
+c - a = whatever * (b - a rotated 90); ypart c = ypart b;
+draw unitsquare scaled 5 rotated angle (b-a) shifted a
+ withcolor 3/4;
+draw a--b--c--cycle;
+\end{code}
+which produces this:
+$$\begin{mplibcode}
+pair a, b, c; a = 10 dir 10; b = 160 dir 20;
+c - a = whatever * (b - a) rotated 90; ypart c = ypart b;
+draw unitsquare scaled 5 rotated angle (b-a) shifted a withcolor 3/4;
+draw a--b--c--cycle;
+dotlabel.llft("$a$", a);
+dotlabel.rt ("$b$", b);
+dotlabel.ulft("$c$", c);
+\end{mplibcode}$$
+
+\bigskip\noindent
+Equipped with the macro shown on the left, you could add this:
+\begin{code}
+ draw angle_mark(a, c, b, 16) withcolor 2/3 red;
+\end{code}
+to get this:
+$$\begin{mplibcode}
+pair a, b, c; a = 10 dir 10; b = 160 dir 20;
+c - a = whatever * (b - a) rotated 90; ypart c = ypart b;
+vardef angle_mark(expr P, O, Q, r) =
+ fullcircle scaled 2r rotated angle (P - O)
+ shifted O cutafter (O -- Q)
+enddef;
+draw unitsquare scaled 5 rotated angle (b-a) shifted a withcolor 3/4;
+draw angle_mark(a, c, b, 16) withcolor 2/3 red;
+draw a--b--c--cycle;
+ dotlabel.llft("$a$", a);
+ dotlabel.rt ("$b$", b);
+ dotlabel.ulft("$c$", c);
+\end{mplibcode}$$
+Or, using the fancier macro:
+$$\begin{mplibcode}
+pair a, b, c; a = 10 dir 10; b = 160 dir 20;
+c - a = whatever * (b - a) rotated 90; ypart c = ypart b;
+vardef angle_label(expr P, O, Q, r) = image(
+ save a; path a; a = fullcircle scaled 2r rotated angle (P - O) shifted O cutafter (O -- Q);
+ fill O -- a -- cycle withcolor 7/8[red, white]; draw a withcolor 2/3 red;
+ save t; string t; t = decimal (round(angle (Q-O) - angle (P-O)) mod 360) & "°";
+ label(t, O + r * (unitvector(P-O) + unitvector(Q-O)));
+) enddef;
+draw unitsquare scaled 5 rotated angle (b-a) shifted a withcolor 3/4;
+draw angle_label(a, c, b, 16);
+draw a--b--c--cycle;
+ dotlabel.llft("$a$", a);
+ dotlabel.rt ("$b$", b);
+ dotlabel.ulft("$c$", c);
+\end{mplibcode}$$
+\vss}}
+
+\smallskip\noindent
+On the other hand, you might want to make a macro for a curved angle mark since, it
+is a bit more cumbersome. It is probably simplest make the macro create only the
+required path, so you can use it with \mpl{draw} or \mpl{fill} as required. The
+idea here is that $P$, $O$, and $Q$ are \<pair> variables and $r$ is a \<numeric>
+representing the desired radius.
+\begin{code}
+vardef angle_mark(expr P, O, Q, r) =
+ fullcircle scaled 2r rotated angle (P - O)
+ shifted O cutafter (O -- Q)
+enddef;
+\end{code}
+Note that \mpl{(P-O)} returns a \<pair>, but \mpl{(O--Q)} make a \<path>. Less is
+usually more in coordinate geometry diagrams, but you could go on to make it much
+fancier if you wanted:
+\begin{smallcode}[xrightmargin=-40pt]
+vardef fancier_angle_label(expr P, O, Q, r) = image(
+ save a, t; path a; string t;
+ a = fullcircle scaled 2r rotated angle (P - O) shifted O cutafter (O -- Q);
+ fill O -- a -- cycle withcolor 7/8[red, white]; draw a withcolor 2/3 red;
+ t = decimal (round(angle (Q-O) - angle (P-O)) mod 360) & "°";
+ label(t, O + r * (unitvector(P-O) + unitvector(Q-O)));
+) enddef;
\end{smallcode}
+Note that the angle label is calculated automatically. But
+it is tediously time-consuming to make this sort of macro completely
+general and fool-proof, so this example might not work for all angles.
\newpage
-\section{Trigonometry functions}\label{trig}
+\section{The missing trigonometry functions}\label{trig}
\MP\ provides only two basic trigonometry functions, "sind" and "cosd". This lack
appears to be a deliberate design; in general it's much easier to use the "rotated"
@@ -3708,45 +2735,7 @@ For this you need to know the value of $\pi$, but this is not built into plain \
If you are using the default number system then it's enough to define it to five
decimal digits,%
\vadjust{\moveright 384pt\vbox to 0pt{\kern-144pt
-\begin{code}
-numeric pi;
-% approximate value
-pi := 3.14159;
-% measure round a circular arc...
-pi := 1/4 arclength (quartercircle scaled 16);
-% up to 32 digits of precision
-pi := 3.1415926535897932384626433832795;
-% as many digits as are needed...
-vardef getpi =
- numeric lasts, t, s, n, na, d, da;
- lasts=0; s=t=3; n=1; na=0; d=0; da=24;
- forever:
- exitif lasts=s;
- lasts := s;
- n := n+na; na := na+8;
- d := d+da; da := da+32;
- t := t*n/d;
- s := s+t;
- endfor
- s
-enddef;
-pi := getpi;
-
-% conversions
-vardef degrees(expr theta) = 180 / pi * theta enddef;
-vardef radians(expr theta) = pi / 180 * theta enddef;
-% trig functions that expect radians
-vardef sin(expr theta) = sind(degrees(theta)) enddef;
-vardef cos(expr theta) = cosd(degrees(theta)) enddef;
-% inverse trig functions
-vardef acosd(expr a) = angle (a,1+-+a) enddef;
-vardef asind(expr a) = angle (1+-+a,a) enddef;
-vardef acos(expr a) = radians(acosd(a)) enddef;
-vardef asin(expr a) = radians(asind(a)) enddef;
-% tangents
-vardef tand(expr theta) = save x,y; (x,y)=dir theta; y/x enddef;
-vardef atand(expr a) = angle (1,a) enddef;
-\end{code}
+\mpexternal[firstline=1,lastline=37]{trigonometry-functions.mp}
\vss}}
but if you are using one of the new number systems you might want more digits of
precision. In fact there's no harm in always defining these extra digits; even when
@@ -3757,7 +2746,9 @@ multiple of $1\over65536$ (which turns out to be $3.14159$). The same applies to
an error if you supply more digits that the default precision. So in general
it's best to use no more than 32 digits. It's also possible, but not really worth
the trouble, to define a routine to calculate $\pi$ to the current
-precision.\rlap{\raise1ex\hbox{\ $\smash{\nearrow}$}} However you define it, once you are armed with a value for $\pi$ you can
+precision.\rlap{\raise1ex\hbox{\ $\smash{\nearrow}$}}
+
+However you define it, once you are armed with a value for $\pi$ you can
then define functions to convert between degrees and radians, and some more `normal'
versions of sine and cosine.
@@ -3770,12 +2761,11 @@ operator.
$\kw{dir}\,30$ gives you the point $(x,y)$ on the unit circle such that $\tan
30^{\circ} = y/x$. You can use these ideas to define tangent and arctan functions
if you really need them, but often "angle" and "dir" are more directly useful
-for drawing.
-
-You should also be aware that the tangent function shown here does not
-check whether $x=0$; if this is an issue, then add something like this
+for drawing.
+You should also be aware that the "tand" function shown here does not
+check whether $x$ is close to zero; if this is an issue, then add something like this
at the appropriate point:
-$$\kw{if}\,x=0\!:\id{infinity}\: \kw{else}\!: y/x \kw{fi}$$
+$$\kw{if}\,\id{abs}(x)<\id{eps}\!:\id{infinity}\: \kw{else}\!: y/x \kw{fi}$$
\newpage
\section{Traditional labels and annotations}\label{sec:trad-labels}
@@ -3788,14 +2778,14 @@ annotations in the newfangled (but better) world of "lualatex" and the
\noindent
\MP\ does not draw text directly; but it provides two different mechanisms to
-turn some text into a \<picture>, which can then be treated like any other;
+turn some text into a \<picture>, which can then be treated like any other;
saved as a variable, drawn directly, or transformed in some way with a
scaling, a reflection, or a rotation. The first mechanism is described below,
-the other in §\ref{btex}.
+the second in §\ref{btex}.
\subsection{Simple strings in PostScript fonts with \texttt{infont}}\label{infont}
-The first mechanism is the primitive binary operation "infont". As explained in
+The first mechanism is the primitive binary operation \mpl{infont}. As explained in
section~8.3 of the \MP\ manual, it takes two strings as arguments: the left hand
argument is the string of text to be printed; the right hand argument is the name of
the font to use; and the result is a "picture" primary.\vadjust{
@@ -3804,7 +2794,7 @@ the font to use; and the result is a "picture" primary.\vadjust{
To find the name of a suitable font, you have to consult your local "psfonts.map"
file, and probably the PSNFSS documentation.
Here are a few of the many fonts available on my local \TeX\ installation; the name
-to use with "infont" is in the first column.
+to use with \mpl{infont} is in the first column.
$$\includegraphics{trad-font-samples}$$
The text example in the first line
of this table was produced with
@@ -3840,7 +2830,7 @@ one of these:
the numeric expression is rounded to the nearest integer modulo
256.
- \item Use \mpl{decimal} to get a string representing
+ \item Use \mpl{decimal} to get a string representing
the value of a numeric expression.
\item Apply \mpl{str} to any suffix (and hence to any variable). You get back a
@@ -3858,22 +2848,20 @@ one of these:
\end{itemize}
\newpage
-\subsubsection{Character sets used by \texttt{infont} to set
-text}\label{sec:charsets}
+\subsubsection{Character sets used by \texttt{infont} to set text}\label{sec:charsets}
Standard \MP\ is configured to accept as input only space and the usual 94 visible
ASCII characters (that is the characters numbered 32 to 126 in the tables at the
-right), but you can use any 8-bit characters as the payload of a string.
-However, plain \MP\ is set by default to use "cmr10", the familiar Computer Modern typeface
+right), but you can use any 8-bit characters as the payload of a string. However,
+plain \MP\ is set by default to use "cmr10", the familiar Computer Modern typeface
developed by Knuth for \TeX, and unfortunately, this is encoded using the \TeX\ text
-font encoding (also known as `OT1', and as shown in the first table in Appendix~F of the {\sl \TeX book}).
-\mpic{-108pt}{trad-font-tables}
-From the point of
-view of using "infont" to make simple labels, this means that the characters for
-space and seven other characters ("< > \ _ { | }") are in the wrong place.
-You are likely to notice this first if you try to set a label with two words; the
-space will come out as a small diagonal stroke accent that is used in plain \TeX\
-to make the characters Å and Å‚, used in Polish and other Slavic languages.
+font encoding (also known as `OT1', and as shown in the first table in Appendix~F of
+the {\sl \TeX book}). \mpic{-108pt}{trad-font-tables} From the point of view of
+using \mpl{infont} to make simple labels, this means that the characters for space
+and seven other characters ("< > \ _ { | }") are in the wrong place. You are likely
+to notice this first if you try to set a label with two words; the space will come
+out as a small diagonal stroke accent that is used in plain \TeX\ to make the
+characters Å and Å‚, used in Polish and other Slavic languages.
To fix this you should change the default font at the start of your program:
\begin{code}
@@ -3887,16 +2875,16 @@ arrangement or "8r" to get the arrangement shown in the lower table.
Choosing a font with one of these encodings means that if you use Windows code page
1252 or ISO Latin 1 as the encoding for your text editor, you can create labels with
-accented characters using "infont" and without resorting to "btex" \dots\ "etex".
+accented characters using \mpl{infont} and without resorting to \mpl{btex ... etex}.
But if you are using UTF-8 characters (as many of us are now), then you have to do
-some extra work to get them printed correctly with "infont". A solution is shown on
+some extra work to get them printed correctly with \mpl{infont}. A solution is shown on
the next page.
-In the normal course of labelling a drawing, it is always possible to
-use "btex" \dots\ "etex" to produce your accented characters as discussed in section
-\ref{btex} below; but it may be that you are using \MP\ to represent data and labels
-supplied from some other program or a website. In this case it can be useful to be
-able to work with at least a subset of UTF-8 input.
+When labelling a drawing, it is always possible to use \mpl{btex ... etex} to
+produce your accented characters as discussed in section \ref{btex} below; but it
+may be that you are using \MP\ to represent data and labels supplied from some other
+program or a website. In this case it can be useful to be able to work with at
+least a subset of UTF-8 input. This is discussed in the next section.
\newpage
\subsubsection{Mapping a subset of UTF-8 for \texttt{infont}}
@@ -3914,7 +2902,7 @@ UTF-8.\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip -9.5pt\parindent 0pt
then pick the appropriate character in your encoding with "char". But your
output is still, of course, limited to the 256 characters in your encoded font.
-\item If you get tired of writing "decode", you could define a short cut with a
+\item If you get tired of typing "decode", you could define a short cut with a
shorter name. You could even write it as a primary without parentheses like
this:
\begin{code}
@@ -3922,53 +2910,30 @@ def U primary s = if string s: decode(s) fi enddef;
\end{code}
which would let you write:
\begin{code}
-label.rt(U"café à la möde", (x,y));
+label.rt(U"café à la crème", (x,y));
\end{code}
-\item However, there's no point in making any of this too elaborate. If you
- really want proper Unicode support you should use \MP\ with Lua\TeX. (See
+\item \red{However, there's no point in making any of this too elaborate}. If you
+ really want proper Unicode support you should use \MP\ with Lua\TeX. (See
below in §\ref{sec:neo-labels}).
\vss}}
-\begin{code}[xrightmargin=-10pt]
-vardef decode(expr given) =
- save a,i,s,out; string s, out; numeric a, i;
- out = ""; i=0;
- forever:
- i := i+1; s := substring (i-1,i) of given; a := ASCII s;
- if a < 128:
- elseif a = 194:
- i := i+1; s := substring (i-1,i) of given;
- elseif a = 195:
- i := i+1; s := char (64 + ASCII substring (i-1,i) of given);
- else:
- s := "?";
- fi
- out := out & s;
- exitif i >= length given;
- endfor
- out
-enddef;
-\end{code}
-Use it with "infont" like this: \verb|decode("café") infont "ptmr8r"| to produce a
-normal "picture" that can be passed to \mpl{draw} or saved as
-usual.\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip -9.5pt
-\noindent The fragment on the left produces:
-$$\includegraphics{utf8}$$
+\mpexternal[firstline=6,lastline=23,xrightmargin=-10pt]{trad-utf8.mp}
+\noindent
+Use it with \mpl{infont} like this: ‘\mpl{decode("café") infont "ptmr8r"}’
+to produce a normal \<picture> that can be passed to \mpl{draw} or saved as
+usual.\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip -9.5pt\noindent
+The fragment on the left produces:
+$$\includegraphics{trad-utf8}$$
The \texttt{label} macro automatically calls \texttt{infont} with the current value
-of \texttt{defaultfont}; notice how it also adds some extra space.
+of \texttt{defaultfont}; notice how it also adds \mpl{labeloffset} space.
\vss}}
-\begin{code}
-draw "café noir £2.50" infont "pncr8r";
-draw decode("café noir £2.50") infont "pncr8r" shifted 12 down;
-defaultfont := "pncr8r";
-label.rt("café noir £2.50", 24 down);
-label.rt(decode("café noir £2.50"), 36 down);
-\end{code}
+\mpexternal[firstline=25,lastline=29]{trad-utf8.mp}
+
+\noindent
Note that you can't just use \mpl{draw} with a string variable; you have to use
-"infont" to turn the string into a picture.
-On the other hand, "label" calls "infont" automatically, but you must explicitly set
-the default font, preferably to one with an encoding that
-is compatible with ISO Latin~1.
+\mpl{infont} to turn the string into a picture. On the other hand, \mpl{label} calls
+\mpl{infont} automatically, but you must explicitly set the default font, preferably
+to one with an encoding that is compatible with ISO Latin~1.
\newpage
@@ -3985,18 +2950,18 @@ because the first character of the string produced by \mpl{decimal -1} is an
which is the hyphen character. What we need is the mathematical minus sign instead;
this is what you get with \mpl{btex $-1$ etex} of course, but that's harder to put in a
loop with traditional \MP. Instead you can do this:\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize4in
-$$\includegraphics{minus}$$
+$$\includegraphics{trad-minus}$$
\vss}}
\begin{code}
string minus_sign;
minus_sign := char 143; % if you are using the texnansi encoding
minus_sign := char 12; % if you are using the 8r encoding
for x = -3 upto 3:
- label.bot(if x<0: minus_sign & fi decimal abs(x), (x*cm, 0));
+ label.bot(if x<0: minus_sign & fi decimal abs(x), (x*cm, 0));
endfor
\end{code}
Note that this does not work with the default encoding used in "cmr10" because
-there is no minus sign available in that font. Plain TeX uses "char 0" from
+there is no minus sign available in that font. Plain TeX uses \mpl{char 0} from
"cmsy10".
\subsubsection{Bounding boxes and clipping with \texttt{infont}}
@@ -4005,28 +2970,27 @@ Once the encoding is fixed, the other two parts of a PostScript font are the fon
metrics and the programs that draw the actual glyphs. The font metrics define the
width of each character and provide a kerning table to adjust the space between
particular pairs.\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize4in
-$$\includegraphics{infont-example}$$
-}} This means that certain characters will overlap each other or stick out
-beyond the bounding box of the picture produced by "infont". This is not normally a
+$$\includegraphics{trad-infont-example}$$
+}} This means that certain characters will overlap each other or stick out beyond
+the bounding box of the picture produced by \mpl{infont}. This is not normally a
problem unless the picture happens to be at the edge of your figure. In the first
-example observe how the last letter sticks out to the right; in the second a
-wider baseline has been added to prevent this.
-If you want this effect, but you
-don't want to see the baseline, then draw it
-using the colour \mpl{background}.
+example observe how the last letter sticks out to the right; in the second a wider
+baseline has been added to prevent this. If you want this effect, but you don't
+want to see the baseline, then draw it using the colour \mpl{background}.
\subsubsection{But what about the \texttt{label} command?}
-As a convenience, the plain \MP\ format provides a "label" macro that automatically
-turns strings into pictures for you using whatever font name is the current value of
-"defaultfont" and scaled to the current value of "defaultscale".\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize4in
+As a convenience, the plain \MP\ format provides a \mpl{label} macro that
+automatically turns strings into pictures for you using whatever font name is the
+current value of \mpl{defaultfont} and scaled to the current value of
+\mpl{defaultscale}.\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize4in
\noindent
-The "label" macro is defined (essentially) to do this:
+Plain \MP\ defines a \mpl{label} macro (approximately) like this:
\begin{code}
- def *label(expr s, z) =
- draw s if string s: infont defaultfont
- scaled defaultscale fi shifted z
- enddef;
+def label(expr s, z) =
+ draw s if string s: infont defaultfont
+ scaled defaultscale fi shifted z
+enddef;
\end{code}
plus some clever code to align the label for you.
}}
@@ -4036,25 +3000,24 @@ plus some clever code to align the label for you.
\label{infontbbox}
To allow you to align a text label on a specific point, \MP\ provides five unary
-operators to measure the bounding box of a picture; they are shown in
-\textcolor{red!67!black}{red} in the diagram, and you can use them to measure the
-width, depth, and height of a textual picture. You can also work out the location
-of the baseline of the text or the x-height, provided you know how much your picture
-has been shifted.
-The easiest way to do this is to
-measure the picture \textit{before} you shift it.\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize4in
-$$\includegraphics[width=4in]{infont-annotated}$$
+operators to measure the bounding box of a picture; they are shown in \red{red} in
+the diagram, and you can use them to measure the width, depth, and height of a
+textual picture. You can also work out the location of the baseline of the text or
+the x-height, provided you know how much your picture has been shifted.
+The easiest way to do this is to measure the picture \textit{before}
+you shift it.\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize4in
+$$\includegraphics[width=4in]{trad-infont-annotated}$$
\vss}}
\begin{code}
- picture pp; pp = "proof" infont "pplri8r";
+picture pp; pp = "proof" infont "pplri8r";
\end{code}
Here the picture \id{pp}
is created with the origin of the text sitting at coordinates $(0,0)$;
then you can get the dimensions like this
\begin{code}
- wd = xpart urcorner pp;
- ht = ypart urcorner pp;
- dp = ypart lrcorner pp;
+wd = xpart urcorner pp;
+ht = ypart urcorner pp;
+dp = ypart lrcorner pp;
\end{code}
In this particular case you will find that you have $wd=20.47292$, $ht=7.19798$, and
$dp=-2.60017$. The depth is negative because the descenders on the
@@ -4070,7 +3033,7 @@ regardless of any ascenders or descenders. To draw your label left-aligned with
origin at position $(x,y)$ you just need to use: \kw{draw} \id{pp} \kw{shifted} $(x,y)$.
To draw it right-aligned, you subtract
\id{wd} from the $x$-coordinate: \kw{draw} \id{pp} \kw{shifted} $(x-wd,y)$. Or to
-centre it, subtract $1/2wd$. To center it vertically on the lowercase letters,
+centre it, subtract $1/2\id{wd}$. To center it vertically on the lowercase letters,
subtract $1/2\id{xheight}$ from the $y$-coordinate. You might of course like to
wrap these adjustments up in your own convenient macro to help you maintain
consistency in a diagram with many labels.
@@ -4079,20 +3042,20 @@ Alternatively you can adjust the bounding box of your textual picture and then u
it with "label" as normal. Assuming \id{wd} is set to the width of your picture
and \id{xheight} is set correctly for the current font, then
\begin{code}
- setbounds pp to unitsquare xscaled wd yscaled xheight;
+setbounds pp to unitsquare xscaled wd yscaled xheight;
\end{code}
will make the "label" alignment routines ignore any ascenders or descenders.
\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in \vss \small
\noindent\llap{\nb}Beware that if the resulting label is right at the edge of your
drawing then any parts of the text that stick out of the adjusted bounding box will
-be clipped. See also §\ref{sec:rotated-boxes} for more on what happens if you
-rotate the text.}}
+be clipped.\\
+See also §\ref{sec:rotated-boxes} for more on what happens if you rotate the text.}}
\newpage
\subsubsection{Setting Greek letters with \texttt{infont}}
\leavevmode\hbox{}
-$$\includegraphics[width=0.5\textwidth]{greek-homer}$$
+$$\includegraphics[width=0.5\textwidth]{trad-greek-homer}$$
While it's technically possible to set the whole of Homer's \textsl{Iliad} using the Greek
fonts available to \mpl{infont}, it's probably not a great use of time; on the other hand you
might want to label parts of a diagram with Greek letters, and for single Greek
@@ -4109,30 +3072,11 @@ the right, or check the table in §\ref{euler} that shows
Herman Zapf's elegant Euler font, available as "eurm10". This
makes a refreshing change for some diagrams.\vadjust{\moveright5.5in\vbox to
0pt{\hsize4in\kern-164pt
-\begin{code}
-beginfig(1);
-string ab, AB;
-ab = ("" for i=11 upto 23: & char i endfor
- & "o" for i=24 upto 33: & char i endfor);
-AB = ("AB" & char 0 & char 1 & "EZH" & char 2 & "IK"
- & char 3 & "MNO" & char 4 & char 5 & "P"
- & char 6 & "T" & char 7 & char 8 & "X"
- & char 9 & char 10);
-
-draw ab infont "cmmi10";
-draw AB infont "cmmi10" shifted 12 down;
-draw ab infont "eurm10" shifted 32 down;
-draw AB infont "eurm10" shifted 44 down;
-endfig;
-\end{code}
-\centerline{\includegraphics{greek-default-encoding}}
+\mpexternal[firstline=5,lastline=18]{trad-greek-default-encoding.mp}
+\centerline{\includegraphics{trad-greek-default-encoding}}
-\begin{code}
-string ab, AB;
-ab = "abgdezhjiklmnoxprstufqyw";
-AB = "ABGDEZHJIKLMNOXPRSTUFQYW";
-\end{code}
-\centerline{\includegraphics{greek-gfs-encoding}}
+\mpexternal[firstline=6,lastline=8]{trad-greek-gfs-encoding.mp}
+\centerline{\includegraphics{trad-greek-gfs-encoding}}
\vss}}
\medskip\noindent
@@ -4143,7 +3087,7 @@ so much. However in recent versions there is no character you
can use as a word space, so if you want to set Greek text rather than individual
letters, see §\ref{sec:neo-otf}.
-\vbox to 0pt{\centerline{\includegraphics{porson}}\vss}
+\vbox to 0pt{\centerline{\includegraphics{trad-porson}}\vss}
@@ -4151,14 +3095,14 @@ letters, see §\ref{sec:neo-otf}.
\subsection{Setting text with \texttt{btex ... etex}}\label{btex}
As soon as you need anything complicated in a label, like multiple fonts, multiple
-lines, or mathematics, you will find it easier to switch from "infont" to the
-"btex ... etex" mechanism that calls \TeX\ to create your textual picture. In fact
+lines, or mathematics, you will find it easier to switch from \mpl{infont} to the
+\mpl{btex ... etex} mechanism that calls \TeX\ to create your textual picture. In fact
you might prefer to use \TeX\ for all your labels, even simple strings, for the sake
of consistency. The only downside is that this mechanism is a little bit slower.
-The "btex" mechanism produces a textual picture just as "infont" does with a height,
+The "btex" mechanism produces a textual picture just as \mpl{infont} does with a height,
width, and depth that you can measure, and adjust, as discussed in
-section~\ref{infontbbox}. And again, just like "infont" you can either use \mpl{draw}
+section~\ref{infontbbox}. And again, just like \mpl{infont} you can either use \mpl{draw}
to place the resulting picture directly, or pass it to the "label" macro.
What you need to be aware of is that \MP\ places everything you put between the
@@ -4200,11 +3144,12 @@ neatly:\quad\mpl{label(btex \\strut a etex, origin);}
\subsubsection{Multi-line text labels}
-Another consequence of the "hbox" feature is that there is no automatic text
+Another consequence of the "\hbox" feature is that there is no automatic text
wrapping done for you, but again you can work round this easily because \TeX\ lets
you nest a "\vbox" inside an "\hbox". This gives you proper paragraph-like wrapping
but you will almost certainly need to adjust the line length, justification, and
-indentation in order to get a satisfactory result \rightarrow \vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vskip -42pt\noindent
+indentation in order to get a satisfactory result \rightarrow
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vskip -64pt\noindent
\begin{code}
...
label(btex \vbox{\hsize 2in\parindent 0pt\raggedright
@@ -4239,27 +3184,65 @@ Notice how you can still use the macro with single lines, you just get a one-lin
table as it were.
Note also that the definition of "\s" as given will centre each line of the text under
the one above. If you want them left aligned or right aligned, omit one of the
-"\hfil" commands. \mpic{-160pt}{split-labels}
-The three examples from this page are typeset over here \rightarrow\break
+"\hfil" commands. \mpic{-212pt}{trad-split-labels}
+The three examples given above are typeset over here $\longrightarrow$\break
The small red circle show the reference points and the pale blue lines the
bounding boxes of the pictures that \MP\ gets back from \TeX.
You can of course achieve the same effects using \LaTeX\ tabular structures, but
-then you have to use the "-tex=latex" option to run
-\MP.
+then you have to use the "-tex=latex" option to run \MP.
\smallskip\noindent
\textbf{Note}: In case it's not obvious, if you want text wrapping or tabular
-arrangements as discussed here, you need to use \texttt{btex ... etex} to set your
-labels. There's no text wrapping with "infont". On the other hand if all of your
-labels are in "infont" but you just want one extra that has two lines, you can split
+arrangements as discussed here, you need to use \mpl{btex ... etex} to set your
+labels. There's no text wrapping with \mpl{infont}. On the other hand if all of your
+labels are done with \mpl{infont}, but you just want one extra that has two lines, you can split
the text into two separate labels and position them independently.
\newpage
+\subsubsection{Pins and braces}\label{sec:braces}
+
+\textsc{In some awkward corners}, you may find that you just can't get your label in
+the right place with \mpl{dotlabel} even if you adjust \mpl{labeloffset}. In these
+cases there are two simple techniques you can use. First, you could separate
+drawing the dot from placing the label; given a point $P$ you can try:\mpic{0pt}{trad-callout}
+\mpexternal[firstline=9,lastline=10]{trad-callout.mp}
+\noindent
+Using \mpl{dotlabeldiam} ensures that your dots match any others done with
+\mpl{dotlabel}.
+Secondly, if that's not enough, use a temporary pair to create a call out line:
+\mpexternal[firstline=11,lastline=15]{trad-callout.mp}
+\noindent
+If you want to do this sort of thing often, then it might be worth making a macro;
+it is hard to write anything completely general, but see §\ref{sec:extimage} for an
+example.
+
+\enlargethispage{24pt}
+
+\vfill\noindent
+\textsc{You might also want} to mark a straight line between two points.
+\vadjust{\moveright5.3in\vbox to 0pt{\hsize 4.2in\vspace{-2\baselineskip}
+\smallmpexternal[firstline=6,lastline=19]{trad-braces.mp}
+\smallmpexternal[firstline=28,lastline=28]{trad-braces.mp}
+\noindent
+Note that, as well as drawing the braces, the macro uses the grouping provided by \mpl{vardef} to return the
+mid point so that you can put a label next to it.
+\vss}}
+The simplest way to do this is just to use \mpl{drawdblarrow} on a copy of your straight
+path shifted to one side, like so:
+\begin{code}
+drawdblarrow (z1--z2) shifted (12 up rotated angle (z2-z1));
+\end{code}
+If you combine this with temporarily setting \mpl{ahangle:=180}, you get the simple
+dimension line shown in blue.
+$$\includegraphics{trad-braces}$$
+The red braces are a more complex variation on this theme $\longrightarrow$
+
+\newpage
\subsubsection{Dynamic labels}\label{sec:old-and-dynamic}
If you are a maven of programming language syntax you may have noticed that
-"btex ... etex" fits into the type system that \MP\ inherits from \MF\ as a "picture" and
+\mpl{btex ... etex} fits into the type system that \MP\ inherits from \MF\ as a "picture" and
not as a "string". Effectively, "btex" and "etex" act as a special pair of quotation
marks that create a picture; however the contents are used verbatim, so that the
whole construction is a syntactical atom. This means that you \textbf{cannot} write
@@ -4271,9 +3254,9 @@ endfor
\end{code}
Given this input \MP\ would attempt to get \TeX\
to typeset
-\begin{code}
+\begin{texcode}
\hbox{"$p_" & decimal i & "$"}
-\end{code}
+\end{texcode}
which would probably result in a
`Misplaced alignment tab character' error.
To get round this problem, \MP\ provides a general mechanism to write out a
@@ -4298,22 +3281,11 @@ The example on the right shows how to speed things up, by using the same file fo
all the labels and only writing it once.
The "write" command is a \MP\ primitive, and "EOF" is defined in "plain.mp".%
\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize4in\noindent
-\begin{code}
-path c; c = fullcircle scaled 100; draw c withcolor .67 red;
-for i=0 upto 7:
- fill fullcircle scaled 3 shifted point i of c;
- z[i] = point i of c scaled 1.15;
- write "label(btex $p_" & decimal i & "$ etex,("
- & decimal x[i] & "," & decimal y[i]
- & "));" to ".mplabels";
-endfor
-write EOF to ".mplabels";
-input ".mplabels";
-\end{code}
+\mpexternal[firstline=7,lastline=16]{trad-dynamic-labels.mp}
$$
-\includegraphics{dynamic-labels}
+\includegraphics{trad-dynamic-labels}
$$
-Note that you can't use "decimal" on a "pair" variable, but you can save the pair
+Note that you can't use \mpl{decimal} on a \<pair> variable, but you can save the pair
as a "z"-variable and then use the "x" and "y" syntax. The scaling trick used here
only works because "c" is centred on the origin. If "c" were drawn elsewhere, you
would have to write:
@@ -4322,10 +3294,11 @@ would have to write:
scaled 1.15
shifted center c ...
\end{code}
+\vskip -12pt
}}
\newpage
-\subsection{Matching fonts}\label{sec:fonts}
+\subsubsection{Matching fonts}\label{sec:fonts}
Despite the apparent restriction of using plain \TeX\ it is almost always possible
to match the font and format of an enclosing \LaTeX\ document.
@@ -4386,22 +3359,17 @@ are limited to whatever font packages you have that work with the traditional
\ref{sec:neo-labels}.
\newpage
-\subsection{Setting verbatim listings}\label{sec:verbatim}
+\subsubsection{Setting verbatim listings}\label{sec:verbatim}
-\textsc{There is a good chance} that you will never need to set a verbatim
+\textsc{There is a good chance} that you will never need to set a verbatim
listing in a \MP\ drawing, but if you do there are a couple of things to think
about. The issue about setting text verbatim with \TeX\ is that turning off the
control characters can be tricky, so if you have text for a label with characters
that are special in \TeX\ like the backslash or the underscore, then the simplest
thing to do is to avoid \TeX\ completely and use \mpl{infont} instead.
-\mpic{-36pt}{verbatim-with-infont}
-\begin{code}
-string s; s = "\TeX\ sets maths like this $e=mc^2$";
-draw ("1. " & s) infont defaultfont;
-draw ("2. " & s) infont "texnansi-lmr10" shifted 20 down;
-draw ("3. " & s) infont "cmtt10" shifted 40 down;
-draw ("4. " & s) infont "texnansi-lmtt10" shifted 60 down;
-\end{code}
+\mpic{-48pt}{trad-verbatim-with-infont}
+\mpexternal[firstline=6,lastline=10]{trad-verbatim-with-infont.mp}
+\noindent
But as you can see, (1) this is a bit of a disaster with the default font "cmr10"
because it does not have all the glyphs in the usual ASCII positions (as noted
above §\ref{sec:charsets}). The solution is to use the version of the font
@@ -4409,89 +3377,20 @@ with the "texnansi" encoding (2), but you probably want it in the monofont (3) a
as you can see "cmtt10" has the “visible space†character instead of a regular
space. If this is not what you want then use the alternative encoding (4).
+\vfill
If you want more than this, then you really need to use \LaTeX\ to process the
label, as discussed in §\ref{sec:fonts}, and load the appropriate preamble. \rightarrowfill\break
-\vadjust{\moveright5.5in\vbox to 0pt{\vskip -72pt\begin{smallcode}
-prologues := 3; outputtemplate := "%j.eps";
-verbatimtex
-\documentclass{article}
-\usepackage{listings}
-\newcommand\mpstyle{\lstset{language=Metapost, basicstyle=\ttfamily,
-columns=fullflexible, keepspaces=true, showstringspaces=false}}
-\lstnewenvironment{code}[1][]{\mpstyle\lstset{#1}}{}
-\begin{document}
-etex
-beginfig(1);
-picture P;
-P = thelabel(btex \vbox{\begin{code}
- % special operators
- vardef incr suffix $ = $:=$+1; $ enddef;
- vardef decr suffix $ = $:=$-1; $ enddef;
-
- def reflectedabout(expr w,z) = % reflects about the line w..z
- transformed begingroup transform T_;
- w transformed T_ = w;
- z transformed T_ = z;
- xxpart T_ = -yypart T_;
- xypart T_ = yxpart T_; % T_ is a reflection
- T_ endgroup enddef;
-\end{code}} etex, origin);
-fill bbox P withcolor (1,1,31/32); draw P; draw bbox P;
-endfig; end.
-\end{smallcode}\vss}}
+\vadjust{\moveright5.5in\vbox to 0pt{\vskip -10\baselineskip
+\smallmpexternal{trad-verbatim-listing.mp}
+\noindent\hey Compile this with "mpost -tex=latex" and use "epstopdf" to make a PDF.
+\vss}}
+$$\includegraphics[width=0.9\textwidth]{trad-verbatim-listing}$$
-\bigskip
-$$\includegraphics[width=0.9\textwidth]{verbatim-listing}$$
-
-
-
-%% \subsubsection{Getting full access to your system fonts}
-%%
-%% If you want full access to all of your system fonts you can
-%% approach the problem the other way round and use one of the various means to include
-%% \MP\ graphics as part of your \LaTeX\ source code. These include "gmp" for
-%% pdf\LaTeX, "luamplib" for lua\LaTeX, and the whole Context system. The great
-%% advantage of these systems is that all of your \MP\ labels directly inherit the
-%% environment of the parent document, and give you access to all your system fonts and
-%% full Unicode support -- the only disadvantages are that it's not so fast or simple as plain \MP\
-%% and you have to compile every graphic everytime you compile the document. It is of course always possible to
-%% use these systems to produce standalone PDF graphics that you can then include in a
-%% more conventional \TeX\ document. The example on the right shows how; in this case
-%% the text uses the fonts set in the \LaTeX\ preamble.\vadjust{\moveright5.5in\vbox to
-%% 0pt{\hsize 4in\vss\noindent
-%% Here is a version of the Lua logo, with a Unicode accent for show.
-%% $$\includegraphics[scale=0.7]{lulu.pdf}$$
-%% produced with "luamplib":
-%% \begin{smallcode}
-%% \documentclass[margin=5mm]{standalone}
-%% \usepackage{fontspec}
-%% \setmainfont{TeX Gyre Heros}
-%% \usepackage{luamplib}
-%% \begin{document}
-%% \begin{mplibcode}
-%% beginfig(1);
-%% color lemon, midnight; lemon = (1,1,1/2); midnight = (0,0,1/2);
-%%
-%% fill unitsquare shifted -(1/2,1/2) scaled 4cm withcolor lemon;
-%% fill fullcircle scaled 3cm withcolor midnight;
-%% draw fullcircle scaled 3.7cm dashed evenly scaled 2 withcolor .5 white;
-%%
-%% fill fullcircle scaled 8mm shifted (0.7cm,0.7cm) withcolor white;
-%% fill fullcircle scaled 8mm shifted (1.4cm,1.4cm) withcolor midnight;
-%%
-%% label.bot(btex Luã etex scaled 2.8,origin) withcolor white;
-%% endfig;
-%% \end{mplibcode}
-%% \end{document}
-%% \end{smallcode}
-%% }}
-
-
-\newpage
-\section{Modern labels and annotations}\label{sec:neo-labels}
+\newpage
+\section{Modern labels, annotations, and other goodies}\label{sec:neo-labels}
This section is a re-working of the previous section, that attempts to show how much
-nicer it is to handle labels in the new world of "luamplib". If this is all new
+nicer it is to work in the new-fangled world of "luamplib". If this is all new
to you, you probably should start by doing "texdoc luamplib" on your system
and reading the documentation provided with the package. In order to use these
newfangled facilities you need to create your \MP\ diagrams inside a \TeX-wrapper
@@ -4500,8 +3399,8 @@ as explained above in §\ref{sec:sa-lua-flow}.
\medskip\noindent
The first thing to say is that everything in the preceding section
will continue to work more or less the same when you use "luamplib" with Lua\LaTeX.
-It is designed to be backwards-compatible, so that existing \MP\ programs using "infont" and
-"btex" \dots\ "etex" will continue to work without change. The only differences are:
+It is designed to be backwards-compatible, so that existing \MP\ programs using \mpl{infont} and
+\mpl{btex ... etex} will continue to work without change. The only differences are:
that the "TEX()" macro is re-implemented with internal library functions
so that it no longer uses temporary files, and is therefore very much faster; and it
is easier to integrate your drawings into \LaTeX\ because you no longer need to muck
@@ -4516,27 +3415,7 @@ So the example code shown on the right,\vadjust{\moveright5.5in\vbox to 0pt{\hsi
\begin{mplibcode}
\end{texcode}
\vskip-\baselineskip
-\begin{smallcode}
- beginfig(1);
- for x = 0 upto 1:
- draw (80x,16) -- (80x, -68) withcolor 3/4[red, white];
- endfor
- for y = 0 upto 3:
- draw (0, -20y) -- (160, -20y) withcolor 3/4[red, white];
- endfor
-
- string s; s = "Hand gloves";
- draw s infont defaultfont shifted (0, 0);
- draw s infont "phvr8r" shifted (0, -20);
- draw TEX(s) shifted (0, -40);
- draw btex Hand gloves etex shifted (0, -60);
-
- dotlabel.urt(s, (80, 0));
- dotlabel.urt(s infont "phvr8r", (80, -20));
- dotlabel.urt(TEX(s), (80, -40));
- dotlabel.urt(btex Hand gloves etex, (80, -60));
- endfig;
-\end{smallcode}
+\smallmpexternal[firstline=7,lastline=25]{neo-labels.mp}
\vskip-\baselineskip
\begin{texcode}
\end{mplibcode}
@@ -4547,13 +3426,12 @@ $$\includegraphics{neo-labels.pdf}$$
Note that "defaultfont" is still "cmr10" with the encoding that has the small stroke
(that plain \TeX\ uses for the \L\ character) instead of a space, and that you can
still use PostScript fonts like "phvr8r". But also notice that the "TEX()" macro
-and the "btex" \dots\ "etex" construction have picked up the font set by the \LaTeX\
+and the \mpl{btex ... etex} construction have picked up the font set by the \LaTeX\
wrapper. As you can see they produce exactly the same output; "TEX()" is generally
more useful because you can pass a primary string variable as an argument, which
makes it easier to construct dynamic labels. "TEX()" also has the synonym
-"textext()" for compatibility with ConTexT. You can use either name, as you prefer.
-
-\smallskip\noindent
+"textext()" for compatibility with ConTexT. You can use either name, as you
+prefer.\\
But this isn't the clever bit\dots
\clearpage
@@ -4567,7 +3445,7 @@ to the preamble:
\mplibtextextlabel{enable}
\end{texcode}
If you add this line to the example from the previous
-page,\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip-80pt
+page,\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip-78pt
\begin{texcode}
\documentclass[border=5mm]{standalone}
\usepackage{fontspec}
@@ -4578,27 +3456,7 @@ page,\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip-80pt
\begin{mplibcode}
\end{texcode}
\vskip-\baselineskip
-\begin{smallcode}
- beginfig(1);
- for x = 0 upto 1:
- draw (80x,16) -- (80x, -68) withcolor 3/4[red, white];
- endfor
- for y = 0 upto 3:
- draw (0, -20y) -- (160, -20y) withcolor 3/4[red, white];
- endfor
-
- string s; s = "Hand gloves";
- draw s infont defaultfont shifted (0, 0)0
- draw s infont "phvr8r" shifted (0, -20);
- draw TEX(s) shifted (0, -40);
- draw btex Hand gloves etex shifted (0, -60);
-
- dotlabel.urt(s, (80, 0));
- dotlabel.urt(s infont "phvr8r", (80, -20));
- dotlabel.urt(TEX(s), (80, -40));
- dotlabel.urt(btex Hand gloves etex, (80, -60));
- endfig;
-\end{smallcode}
+\smallmpexternal[firstline=8,lastline=26]{neo-labels-tte.mp}
\vskip-\baselineskip
\begin{texcode}
\end{mplibcode}
@@ -4643,23 +3501,15 @@ these new facilities with plain Lua\TeX, but this chapter is about using them wi
Lua\LaTeX, and in particular it assumes some familiarity with the packages
"fontspec" and "unicode-math" that provide complete support for Unicode and OTF
fonts; you need this familiarity in order to use "luamplib" properly.
-\mpic{1cm}{unicode}
+\mpic{1cm}{neo-unicode}
You also need an editor that will handle Unicode. \MP\ still restricts you to using
-printable ASCII in your source code, except within a string literal or a "btex"
-\dots\ "etex" picture literal. So it becomes very easy to write this sort of label:
-\begin{smallcode}
-label("café noir £2.50", origin);
-\end{smallcode}
+printable ASCII in your source code, but you can put whatever you want inside a string literal or a "btex"
+\dots\ "etex" picture literal. So it becomes very easy to produce this sort of label:
+\smallmpexternal[firstline=8,lastline=8]{neo-unicode.mp}
+\noindent
or even whole paragraphs that use Unicode:
-\begin{smallcode}
-label(btex \vbox{\hsize 4in
- Nous étions à l'Étude, quand le Proviseur entra, suivi d'un
- \textit{nouveau} habillé en bourgeois et d'un garçon de classe
- qui portait un grand pupitre. Ceux qui dormaient se réveillèrent,
- et chacun se leva comme surpris dans son travail.
-\par} etex, 40 down);
-\end{smallcode}
+\smallmpexternal[firstline=9,lastline=14]{neo-unicode.mp}
But you also need a font that actually supports the Unicode characters you use.
The default Latin Modern font used by Lua\LaTeX\ has a good range for English and
most European languages, but is a bit lacking in (say) polytonic Greek. So you will
@@ -4679,7 +3529,7 @@ label(btex \vbox{\polytonic\halign{#\hfil\cr
\end{smallcode}
will produce the first few lines of the Iliad (just in case you wanted them).
Essentially if you can produce something in \LaTeX, you can produce exactly the same
-in \MP\ using "luamplib" (but see also §\ref{sec:verbatim}).
+in \MP\ using "luamplib".
\newpage
@@ -4688,39 +3538,28 @@ in \MP\ using "luamplib" (but see also §\ref{sec:verbatim}).
It is a rule of syntax in \MP\ that a string token has to be given all on one line.
So if you have very long labels, or paragraphs of text, then you have to split them
up into separate shorter string tokens:
-\begin{code}
-label("\vbox{\hsize 4in It is a truth universally acknowledged,"
- & " that a single man in possession of a good fortune,"
- & " must be in want of a wife.\par}", origin);
-\end{code}
+\mpexternal[firstline=7,lastline=9]{neo-multi-line-labels.mp}
+\noindent
taking care to include the necessary spaces, which can get fiddly.
-\mpic{-15mm}{multi-line-labels}
+\mpic{-15mm}{neo-multi-line-labels}
-But this is where the "btex" \dots\ "etex" construction comes into play, even with
+But this is where the \mpl{btex ... etex} construction comes into play, even with
"luamplib". As we saw in the preceding section the construction fits into the \MP\
syntax scheme as a special pair of quotation marks that produces a \<picture>.
-Unlike regular string token, a "btex" \dots\ "etex" picture token can span several
+Unlike regular string token, a \mpl{btex ... etex} picture token can span several
lines of source code, so you can (more easily) write long \TeX\ labels like this:
-\begin{code}
-label(btex \vbox{\hsize 4in
- It is a truth universally acknowledged,
- that a single man in possession of a good fortune,
- must be in want of a wife.
- \par} etex, 128 down);
-\end{code}
+\mpexternal[firstline=10,lastline=13]{neo-multi-line-labels.mp}
+\noindent
Thanks to the backward compatibility of the implementation, this works very well
even when you have "mplibtextextlabel" enabled.
-You also have full access to your \LaTeX\ environment, so you can get tables in the
-same way in \MP\ using environments like "tabular":
-\begin{code}
-label(btex
- \begin{tabular}{c}
- A way to get simple\\
- two line labels
- \end{tabular} etex, 256 down);
-\end{code}
-But recall that whatever you ask the \mpl{TEX()} macro to typeset like this is going into
+\vfill
+\noindent
+You also have comprehensive access to your \LaTeX\ environment, so with "luamplib"
+you can get tables in in \MP\ using environments like "tabular":
+\mpexternal[firstline=14,lastline=17]{neo-multi-line-labels.mp}
+
+But keep in mind that whatever you ask the \mpl{TEX()} macro to typeset is going into
a restricted horizontal mode box; so don't try to use floating environments like
"table" or "figure". And if you want automatic paragraph wrapping, you will have
to wrap your text in a suitable "\vbox", as shown above.
@@ -4731,11 +3570,10 @@ Because the \mpl{TEX()} macro typesets everything in restricted horizontal mode,
cannot use "$$ .. $$" to create display maths directly. This is not a \TeX\
\textit{v} \LaTeX\ issue, it is just that for compatibility with plain \MP\ (and
common sense), the designers of "luamplib" chose to typeset labels into
-horizontal-mode boxes This is usually what you want. If you prefer
-large integral
-operators (etc) in your labels,
-then you should either add
-"\displaystyle" at the beginning of your formula $\longrightarrow$\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent
+horizontal-mode boxes This is usually what you want. If you prefer large integral
+operators (etc) in your labels, then you should either add "\displaystyle" at the
+beginning of your formula \rightarrowfill\break
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4in\vss\noindent
\begin{code}
...
label("$\displaystyle \int_0^t 3x^2\, dx$", z0);
@@ -4743,22 +3581,17 @@ label("$\displaystyle \int_0^t 3x^2\, dx$", z0);
label("\vbox{\hsize 2in $$\int_0^t 3x^2\, dx$$}", z1);
...
\end{code}
-}}
-\\
+\vskip-1.5\baselineskip}}%
or wrap the formula in a "\vbox" with a suitable "\hsize". Using "\displaystyle" is
probably simpler.
-\subsection{Typographical minus signs and other dynamic labels}
+\subsection{Typographical minus signs and other dynamic labels}\label{sec:new-dynamic}
This is really easy with "mplibtextextlabel" enabled, because we can assemble a string
-on the fly using standard \MP\ syntax:\mpic{0pt}{simple-number-line}
-\begin{code}
-draw (left--right) scaled 2in withcolor 2/3 red;
-for i=-4 upto 4:
- dotlabel.top("$" & decimal i & "$", (32i, 0));
-endfor
-\end{code}
+on the fly using standard \MP\ syntax:\mpic{0pt}{neo-simple-number-line}
+\mpexternal[firstline=8,lastline=11]{neo-simple-number-line.mp}
+\noindent
The normal operator precedence rules ensure that the string argument to
\mpl{dotlabel} is assembled before it is passed to the \mpl{TEX()} macro.
The individual parts of the string you assemble do not have to be
@@ -4766,31 +3599,24 @@ valid bits of \TeX\ in themselves; they only have to make sense once they
are actually passed to the macro. With "luamplib" there are no slow
external files being used, so the complexities used above
[§\ref{sec:old-and-dynamic}] to label points around a
-circle can be simplified without sacrificing speed:\mpic{-80pt}{simple-circle-labels}
-\begin{code}
-path C; C = fullcircle scaled 100; draw C withcolor 2/3 red;
-for i=0 upto 11:
- drawdot point 2/3 i of C withpen pencircle scaled dotlabeldiam;
- label("$p_{" & decimal i & "}$", point 2/3 i of C scaled 1.17);
-endfor
-\end{code}
+circle can be simplified without sacrificing speed:\mpic{-80pt}{neo-simple-circle-labels}
+\mpexternal[firstline=7,lastline=12]{neo-simple-circle-labels.mp}
+
+\smallskip\noindent\nb Note that you can't do this string concatenation with \mpl{btex ... etex};
+although these operators might appear to be special quotation marks, they produce
+\<picture> values, and in this context \mpl{&} only works with \<string> values.
-\smallskip\noindent\nb But note that you can't do this string concatenation with "btex" \dots\ "etex";
-although they might appear to be special quotation marks, they produce a
-\<picture>, and \mpl{&} only works with strings or paths.
\newpage
\subsection{Drawing on an external image}\label{sec:extimage}
-One of the limitations of the way that plain "mpost" uses \TeX\ is that
-any "\special" commands are removed from the intermediate file that \MP\ translates
-into a \<picture> variable. Hence, in particular, you cannot use
-"\includegraphics" in a \TeX\ label. Fortunately, "luamplib" removes this
-limitation, so it is now possible to annotate images using the full array of \MP\
-tools.
-$$\includegraphics[width=360pt]{marked-up-photo}$$
-The source is shown on the right.
-\vadjust{\moveright5.5in\vbox to 0pt{\vskip-3.75in\hsize 4in\raggedright\noindent
+A limitation of plain "mpost"'s use of \TeX\ is that
+"\special" commands are removed from the ".dvi" file that is made
+into a \<picture> variable. So, in particular, you can’t use
+"\includegraphics" in a \TeX\ label. But "luamplib" removes this
+limitation, so you can annotate images using the full array of \MP\
+tools, as shown here \rlap{$\longrightarrow$}%
+\vadjust{\moveright5.25in\vbox to 0pt{\vskip-60pt\hsize 4.5in\raggedright\noindent
\begin{texcode}
\documentclass[border=1mm]{standalone}
\usepackage{luamplib}
@@ -4800,43 +3626,69 @@ The source is shown on the right.
\begin{document}
\begin{mplibcode}
\end{texcode}
-\begin{smallcode}
-beginfig(1);
-draw btex \includegraphics[width=5in]{glenshiel.jpg} etex;
-if false:
-for i=1 upto 36:
- draw (origin -- 180 up) shifted (10i, 0)
- withcolor if i mod 10 = 0: red else: 1/2 fi;
-endfor
-for i=1 upto 18:
- draw (origin -- 360 right) shifted (0, 10i)
- withcolor if i mod 10 = 0: red else: 1/2 fi;
-endfor
-fi
-vardef callout@#(expr t, p, o) =
- save T; picture T; T = thelabel.@#(t, p+o);
- draw T; drawarrow p+o -- p cutbefore bbox T;
-enddef;
-ahangle := 20; ahlength := 2;
-drawoptions(withpen pencircle scaled 1/4 withcolor 1/2 blue);
-callout.top("Sgurr na Ciste Dubhe", (80, 96), (-10, 20));
-callout.top("Sgurr nan Spainteach", (100, 91), (6, 12));
-label.top("\tiny Cuillin Ridge, Isle of Skye", (140, 81));
-label.top("Sgurr na Carnach", (190, 90));
-label.top("Sgurr Fhuaran", (282, 94));
-label.bot("\itshape View looking west ...",
- point 5/2 of bbox currentpicture shifted 4 down);
-endfig;
-\end{smallcode}
-\begin{texcode}
-\end{mplibcode}
-\end{document}
-\end{texcode}
+\vskip -\baselineskip
+\smallmpexternal[firstline=8,lastline=24,xleftmargin=0pt,xrightmargin=-10pt]{neo-marked-up-photo.mp}
+\small
+If you uncomment the \mpl{\% input neo-reference-grid} line, so that the
+code on \llap{$\leftarrow$\;}the left is included, you get this automatically-sized grid superimposed:
+$$\includegraphics[width=3in]{neo-marked-up-photo-grid}$$
+The grid makes it easier to find the coordinates for your annotations.
\vss}}
-The two loops commented out with \mpl{if false:} will add a grid
-on top of the photo like this:
-$$\includegraphics[width=200pt]{marked-up-photo-with-grid}$$
-This makes it easier to find the appropriate coordinates for your annotations.
+
+\medskip\noindent
+\includegraphics[width=\textwidth]{neo-marked-up-photo}
+
+\vfill\noindent
+Here is a general purpose reference grid routine:
+\smallmpexternal[firstline=3,lastline=16,xleftmargin=0pt,xrightmargin=-36pt]{neo-reference-grid.mp}
+
+\newpage
+\subsection{Using PDF transparency}\label{sec:transparent}
+
+\textsc{Another limitation} of the plain "mpost" compiler is that it does not
+support any transparent colours. However, if you use the "luamplib" package with
+"lualatex" you get access to the PDF 1.4 transparency functions. Currently (2024) there
+is little documentation for this support and no ‘official’ macro for it, but you can
+add your own like this:
+\begin{code}
+def withalpha expr a =
+ withprescript "tr_alternative=2"
+ withprescript "tr_transparency=" & decimal a
+enddef;
+\end{code}
+and then use it like this, adding \mpl{withalpha} after the
+colour specification:\mpic{-144pt}{new-fangled-transparency}
+\begin{code}
+path r, g, b;
+r = fullcircle scaled 40 shifted 10 up;
+g = r rotated 120; b = g rotated 120;
+
+numeric a; a = 0.5;
+fill r withcolor 1/2[white, red] withalpha a;
+fill g withcolor 1/2[white, green] withalpha a;
+fill b withcolor 1/2[white, blue] withalpha a;
+draw r withcolor 1/2;
+draw g withcolor 1/2;
+draw b withcolor 1/2;
+\end{code}
+
+\smallskip\noindent
+The effect of changing the alpha value is shown on the right. The magic variable
+names "tr_transparency" and "tr_alternative" are only understood by the "luamplib" code,
+plain "mpost" simply ignores them. \textit{Note that since these are not documented anywhere
+except in the source code, they might change in future}.
+You can see from the figure that "tr_transparency"
+controls the alpha value, but the other variable is slightly more mysterious ---
+"tr_alternative" appears to control the PDF blending mode. A value of 1 seems to apply PDF
+‘normal’ mode, which makes colours completely opaque with when alpha is 1; a value
+of 2, as used here, seems to apply PDF ‘multiply’ mode which blends all colours
+evenly, so that the order that you fill overlaps does not matter. This mode works
+well with slightly lighter colours.
+
+\newpage\noindent
+Here is a slightly more ambitious example, using the same \mpl{withalpha}
+macro.\mpic{-12pt}{new-fangled-trilobe}
+\smallmpexternal[firstline=6,lastline=43,xleftmargin=0pt,xrightmargin=-44pt]{new-fangled-trilobe.mp}
\newpage
\section{Working with pictures}
@@ -4849,7 +3701,7 @@ of the variable is a pattern of pixels for a font, in \MP\ the contents are vect
graphics commands. This section reviews some of the things you can do with a
\<picture> variable — including putting one in a frame (see §\ref{sec:pictureframe})
like so\rlap{\ $\longrightarrow$}
-\mpic{-96pt}{youth}
+\mpic{-96pt}{pics-youth}
\bigskip\noindent
Plain \MP\ provides two built-in \<picture> variables: \mpl{nullpicture}, which is
@@ -4915,8 +3767,8 @@ picture, you could do:
\end{code}
and \MP\ will add copies of $P$ with the reference points shifted to $(20,0)$,
$(40,0)$, and $(60,0)$. A selection of other transformations is shown on the right $\longrightarrow$
-\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip-240pt\centerline{\includegraphics[width=4in]{twister}}\par
-\centerline{\textsl{\small The reference point for each compass is the small dot in the middle.}}
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize4in\vskip-240pt\centerline{\includegraphics[width=4in]{pics-twister}}\par
+\centerline{\textit{\small The reference point for each compass is the small dot in the middle.}}
\vss}}
\smallskip\noindent
@@ -4960,30 +3812,11 @@ You can apply \mpl{clip} to any picture, so you might prefer to capture your
pattern in \<picture> variable with \mpl{image}, apply \mpl{clip} to that, and
then \mpl{draw}. This works nicely if you want to repeat the clipped image.
\vadjust{\moveright 5.5in\vbox to 0pt{\hsize 4.2in \vss
-\noindent\includegraphics[width=4in]{shady-circles}
+\noindent
+\centerline{\includegraphics{pics-shady-circles}}
\medskip
-\begin{smallcode}
-path c, C; numeric r; r = 60;
-c = fullcircle scaled 2r shifted (-r, 0);
-C = fullcircle scaled 4r shifted (2r, 0);
-
-numeric t, u;
-(t, whatever) = C intersectiontimes
- C shifted (center c - center C);
-(u, whatever) = c intersectiontimes (point t of C -- center c);
-
-path s;
-s = subpath (0, u) of c -- subpath (t, 4) of C -- cycle;
-for i=0 upto r:
- draw (left--right) scaled 2r rotated -42 shifted (3i, 0)
- withpen pencircle scaled 1/4 withcolor 2/3 blue;
-endfor
-clip currentpicture to s;
-
-draw c; draw C;
-draw center c -- center C -- point t of C -- cycle;
-\end{smallcode}
+\mpexternal[firstline=6,lastline=27,xleftmargin=0pt]{pics-shady-circles.mp}
\vskip -126pt}}
You can also use this technique to fill with a gradient: just reduce the gap
@@ -5009,7 +3842,7 @@ also change, but not quite in the way you might think. It turns out that
the \mpl{bbox} is always a rectangle aligned to the edges of your page.
Effectively, the corners are determined \textit{after} any transformation,
and the \mpl{center} is strictly the intersection of the lines between opposite
-corners.\mpic{-68pt}{corners}
+corners.\mpic{-68pt}{pics-corners}
You will notice this if you use the technique given on p.\thinspace29 of the \MP\ manual to draw a
label on a coloured (or erased) background; if you have rotated the label, the
@@ -5049,8 +3882,8 @@ draw P1 shifted 100 up; draw P2 shifted 100 down;
Sometimes it is more convenient to use \mpl{label} to place the pictures, taking
advantage of the automatic alignment provided. Note also that, unless you have
-explicitly filled them with \mpl{white} colour, the blank parts of each picture are
-really transparent so you can overlap them when appropriate.
+explicitly or implicitly filled them with the \mpl{background} colour, the blank
+parts of each picture are really transparent so you can overlap them when appropriate.
\newpage
\subsection{Adding a caption to the current picture}
@@ -5101,7 +3934,7 @@ centered on the origin and scaled to $2 \id{bboxmargin}$.
\moveright5.5in\vbox to 0pt{\hsize 4in \vss
\noindent
Here is an example.
-$$\includegraphics[width=4in]{double-angle}$$
+$$\includegraphics[width=4in]{pics-double-angle}$$
The labels at the bottom were added like this:
\begin{smallcode}
label.bot("$\triangle ACD \sim \triangle ABC$",
@@ -5122,30 +3955,7 @@ Consider the \<picture> with different colours and pens in the example here
$\longrightarrow$
\vadjust{\moveright5.5in\vbox to 0pt{\vskip
-1.5\baselineskip
-\begin{smallcode}
-numeric s; s = 21;
-path alpha;
-alpha = ((-2s, s) {right}
- .. halfcircle rotated -90 scaled 2s shifted (2s, 0)
- .. {left} (-2s, -s)) shifted (s*left);
-
-vardef overdraw(expr a, b, r, P, shade) =
- linecap := butt;
- undraw subpath (a+r, b-r) of P withpen pencircle scaled 2;
- draw subpath (a, b) of P withcolor shade;
-enddef;
-
-picture cb; cb = image(
- draw alpha withcolor 2/3 red;
- undraw alpha rotated 180 withpen pencircle scaled 2;
- draw alpha rotated 180 withcolor 2/3 blue;
- overdraw(0.21, 0.36, 0.02, alpha, 2/3 red);
- overdraw(0.67, 0.86, 0.02, alpha, 2/3 red);
- overdraw(3.4, 4.3, 0.1, alpha, 2/3 red);
- overdraw(5.4, 5.6, 0.02, alpha, 2/3 red);
- overdraw(5.4, 5.6, 0.02, alpha rotated 180, 2/3 blue);
-);
-\end{smallcode}
+\smallmpexternal[firstline=8,lastline=29]{pics-draw-picture.mp}
\vskip 48pt\noindent
\begin{minipage}{4in}
@@ -5156,7 +3966,7 @@ picture cb; cb = image(
\item Examples 2, 3, and 4 show what happens if you change the pen, or the
colour, or both.
- \item Example 5 shows you how to make a bagel in \MP.
+ \item Example 5 shows you how to make a pretzel in \MP.
\item Example 6 shows you the slightly tricky syntax to extract the paths, pens,
and colours from the \<picture> and adjust them as needed.
@@ -5165,50 +3975,31 @@ picture cb; cb = image(
\vss}}
With this captured in a \<picture> variable, you can \mpl{draw} it with
different colours and pens to obtain a variety of effects:
-$$\includegraphics[width=\textwidth]{draw-picture.pdf}$$
+$$\includegraphics[width=\textwidth]{pics-draw-picture}$$
The picture is supposed to represent a fancy knot (a “Carrick bendâ€), and to show
the red and blue strands crossing each other. The \mpl{overdraw} macro tries to do
-this by undrawing with a thick pen, then redrawing the upper strand on top.
+this by using \mpl{undraw} with a thick pen, then drawing the upper strand on top.
\newpage
-\subsection{Simulating transparency}
+\subsection{Simulating transparency with pictures}\label{sec:simulated_alpha}
-Filling with transparent colour can sometimes be a very effective graphic technique, but the
-underlying technical implementation is often dauntingly complex. Plain \MP\
-provides no colour model that directly supports transparency for any output format,
-so if you need it you will have to resort to layering and managing the colour
-blending yourself. This page presents an example of the basic technique, that can
-be adapted to more general purpose macros as required. The technique is included in
-this section, because it involves more manipulation of \<picture> variables.
+Filling with transparent colour can sometimes be a very effective graphic technique,
+but plain \MP\ provides no colour model that directly supports transparency for any
+output format. If you are using "mpost", you will have to resort to layering and
+managing the colour blending yourself. This section presents an example of the
+basic technique, that could be adapted to more general purpose macros as
+required.\\
+\hey \red{But, the technique is quite laborious so you might prefer to switch to "luamplib"
+which provides support for the PDF transparency model, as discussed in
+§\ref{sec:transparent}}.
\vadjust{\moveright5.5in\vbox to 0pt{\vskip -128pt
-$$\includegraphics[width=3in]{fake-transparency}$$
+$$\includegraphics[width=3in]{pics-fake-transparency}$$
+
Omitting the simple grid, this drawing was produced like this:
-\begin{smallcode}
-% Large A
-label.urt("A" infont defaultfont scaled 8, origin) withcolor 1/4 green;
-% An arbitrary shape
-path shape; shape = (superellipse(right, up, left, down, 0.81))
- shifted 1/2 right scaled 30 rotated 30;
-% Parameters
-alpha = 5/8; % alpha: 0=invisible, 1=opaque
-color filler; filler = .95[red,white];
-picture fg, bg;
-bg = currentpicture; % capture the current drawing
-fg = image(
- for e within bg: % redraw everything in blended color
- draw e withcolor alpha[colorpart e, filler];
- endfor % and add some decorations
- draw shape withpen pencircle scaled 2 withcolor 3/4;
- draw subpath (2.718, 3.1415) of shape
- shifted - center shape scaled 7/8 shifted + center shape
- withpen pencircle scaled 2 withcolor white;
-);
-clip fg to shape; % now clip the fg drawing to the shape
-fill shape withcolor filler; % fill the shape
-draw fg; % and put the fg drawing on top
-draw shape withcolor 3/4 blue; % make a nice edge
-\end{smallcode}
+\smallmpexternal[firstline=28,lastline=48]{pics-fake-transparency.mp}
\vss}}%
+
+\smallskip\noindent
The two useful tools in the plain \MP\ kit bag are:
\begin{itemize}
\item The ability to loop through all the elements of a picture
@@ -5239,36 +4030,17 @@ The \<picture> capture technique provides a simple way to add a background or do
other post-processing on your drawing. The advantage is that you do not have to
work out the size of your drawing before you start.
-\moveright5.5in\vbox to 0pt{\vskip -43pt
-Here is an example that adds graph paper behind
-a drawing.
-$$\includegraphics{graph-paper}$$
-\begin{smallcode}
-input colorbrewer-rgb
-path C; C = fullcircle scaled 120 shifted 12 up rotated 6;
-for t=0,1.2,4: draw center C -- point t of C withcolor Blues 8 8; endfor
-draw C withcolor Reds 8 8; dotlabel.urt("Start", point 0 of C);
-
-vardef grid(expr ll, ur, grid_unit) =
- save llx, lly, urx, ury, G; numeric llx, lly, urx, ury;
- (llx, lly) = ll; (urx, ury) = ur;
- picture G; G = image(
- for x = floor(llx / grid_unit) + 1 upto floor(urx / grid_unit):
- draw (x * grid_unit, lly) -- (x * grid_unit, ury);
- endfor
- for y = floor(lly / grid_unit) + 1 upto floor(ury / grid_unit):
- draw (llx, y * grid_unit) -- (urx, y * grid_unit);
- endfor
- fill fullcircle; % <-- show the origin
- ); G enddef;
-
-picture P; P = currentpicture; currentpicture := nullpicture;
-drawoptions(withpen pencircle scaled 1/4);
-draw grid(llcorner P, urcorner P, 1mm) withcolor Blues 8 1;
-draw grid(llcorner P, urcorner P, 10mm) withcolor Blues 8 2;
-drawoptions();
-draw P;
-\end{smallcode}
+\moveright5.5in\vbox to 0pt{\vskip -96pt\hsize 4.2in
+\noindent\includegraphics{pics-graph-paper-example}
+
+\smallmpexternal[firstline=8,lastline=11, xleftmargin=0pt]{pics-graph-paper-example.mp}
+\noindent
+This is "pics-graph-paper-inch.mp":
+\smallmpexternal[xleftmargin=0pt]{pics-graph-paper-inch.mp}
+
+\noindent
+And this is "automatic-grid.mp"
+\smallmpexternal[xleftmargin=0pt]{automatic-grid.mp}
\vss}
\smallskip\noindent
@@ -5280,7 +4052,7 @@ Or you can be more ambitious, as shown in the example on the right
\rightarrowfill\break
In general, you draw any background you want, like this:
\begin{smallcode}
-picture P; P = currentpicture; currentpicture := nullpicture;
+picture P; P = currentpicture; clearit;
% do complex background drawing...
clip currentpicture to bbox P; draw P;
\end{smallcode}
@@ -5297,7 +4069,7 @@ if wd > 360: currentpicture := currentpicture scaled (360/wd); fi
If you wanted to apply one of these changes to all the figures in your "mpost" input file then
you can use the hook provided by plain \MP:
\begin{smallcode}
-extra_endfig := "picture P; P = currentpicture;" &
+extra_endfig := "picture P; P = currentpicture; clearit;" &
"fill bbox P withcolor (1,1,31/32); draw P;";
\end{smallcode}
The definition of \mpl{endfig}, includes the line \mpl{scantokens extra_endfig;} so
@@ -5315,51 +4087,29 @@ fill bbox P withcolor (1,1,31/32); draw P; endfig;}
\textsc{If you wish} to check the dimensions of your drawing, it can be useful to
add a temporary ruler that shows you the dimensions of the bounding box like this:
-$$\includegraphics{icosahedron}$$
+$$\includegraphics{pics-icosahedron}$$
The red rulers were added by putting \mpl{input ruler-cm} at the end of the figure.
-\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize 4in\raggedright\noindent
+\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize 4in\noindent
Here is the implementation of "ruler.mp":
-\begin{code}
-% add a ruler along the left hand and lower edges
-% of the bounding box of the currentpicture
-path B; B = bbox currentpicture;
-for s=0, 1:
- path p; numeric a; pair o;
- p = subpath (0, 1) of if s=0: reverse fi B;
- a = arclength p;
- o = if s=0: left else: down fi;
- for i=0 upto 3:
- exitif not known u[i];
- for j=0 upto floor(a/u[i]):
- pair t; t = point arctime j*u[i] of p of p;
- draw (origin -- (6 - 2i) * o) shifted t;
- if i=0: label(decimal j, t shifted 12 o); fi
- endfor
- endfor
- draw p;
-endfor
-\end{code}
+\mpexternal{ruler.mp}
+\noindent
The inner loop draws successively shorter lines at each of the
minor units, and numbers at the major units.
+
+Note that this macro designed to be used a temporary input added at the
+bottom of a drawing to see how big it is. You would not usually leave it in place
+in a final drawing. This is why none of the variable names is protected.
+To make the macros more robust you could enclose them with \mpl{begingroup} and
+\mpl{endgroup}, and \mpl{save} the names, and clear \mpl{drawoptions}.
\vss}}
They are drawn round the bounding box, set here with the default
margin of 2\unit{bp}.
The "ruler-cm.mp" file looks like this:
-\begin{code}
-numeric u[]; u0 = 1 cm; u1 = 1 mm;
-drawoptions(withcolor 0.54 red);
-input ruler
-drawoptions();
-\end{code}
-and there is a companion "ruler-inch.mp" file that looks like this:
-\begin{code}
-numeric u[]; u0 = 1 in; u1 = 1/4 in; u2 = 1/12 in;
-drawoptions(withcolor 3/4 blue);
-input ruler
-drawoptions();
-\end{code}
-The idea is that you set a subscripted variable \mpl{u[]} to a number of unit sizes
-where you want markers and then call \mpl{input ruler}.
+\mpexternal{ruler-cm.mp}
+\noindent and there is a companion "ruler-inch.mp" file that looks like this:
+\mpexternal{ruler-inch.mp}
+\noindent The idea is that you set a subscripted variable \mpl{u[]} to a number of unit sizes
+where you want markers and then call \mpl{input ruler}.
\newpage
@@ -5369,257 +4119,550 @@ where you want markers and then call \mpl{input ruler}.
you might want to add emphasis or pick out part of a drawing. The examples here can
be applied to \mpl{currentpicture} or any other \<picture>
variable.\vadjust{\moveright 396pt\vbox to 0pt{\hsize 4in\vskip -42pt
-$$\includegraphics{border.pdf}$$
-\begin{smallcode}
-% don't take this one too seriously...
-vardef rope expr c =
-save hemp, s, w, n, A, a, b;
-color hemp; hemp = 1/256 (224, 202, 169);
-numeric s, w, n, A;
-A = arclength c; s = A/floor(A/2); w = -1; n = -1;
-path a[]; for t=0 step s until A + 1: a[incr n] =
- (0,+w) rotated angle direction arctime t-3/2s of c of c
- shifted point arctime t-3/2s of c of c
-.. (0,+w) rotated angle direction arctime t-1/2s of c of c
- shifted point arctime t-1/2s of c of c
-.. (0,-w) rotated angle direction arctime t+1/2s of c of c
- shifted point arctime t+1/2s of c of c
-.. (0,-w) rotated angle direction arctime t+3/2s of c of c
- shifted point arctime t+3/2s of c of c;
-endfor
-image(for i=1 upto n:
- path b; b = buildcycle(a[i-1], reverse a[i]);
- fill b withcolor hemp;
- draw b withpen pencircle scaled 1/8;
-endfor) enddef;
-interim bboxmargin := 16;
-draw rope rounded_corners bbox currentpicture;
-\end{smallcode}\vss}}
+$$\includegraphics{pics-border-rope}$$
+Don't take this one too seriously\dots
+\smallmpexternal[xleftmargin=0pt]{rope.mp}
+\smallmpexternal[xleftmargin=0pt,firstline=9,lastline=10]{pics-border-rope.mp}
+\vss}}
-$$\vbox{\halign{$\vcenter{\hbox{\includegraphics[width=150bp]{#}}}$&\quad$\vcenter{\hbox{#}}$\cr
-border-shadow&
-\begin{smallcode}
-picture P; P = currentpicture;
-fill bbox P shifted (3,-3) withcolor 3/4;
-unfill bbox P; draw bbox P;
-draw P;
-\end{smallcode}\cr
-border-dashed&
-\begin{smallcode}
-vardef rounded_corners expr p =
- for i=1 upto length p:
- subpath (i-15/16, i-1/16) of p ..
- endfor cycle
-enddef;
+\bigskip
-interim bboxmargin := 16;
-draw rounded_corners bbox currentpicture
- dashed evenly scaled 3/4;
-\end{smallcode}\cr
-}}$$
+\noindent\includegraphics[width=.95\textwidth]{pics-border-shadow}
+
+\bigskip
+
+\noindent\includegraphics[width=\textwidth]{pics-border-dashed}
\newpage
\subsection{Adding a frame}\label{sec:pictureframe}
As promised at the start of this section, here is the code for the picture
frame drawn round Raphael's young man.
-\begin{code}
-input picture_frame
-beginfig(1);
- picture F;
- F = thelabel(TEX("\includegraphics{youth.jpg}"), origin);
- draw F; draw frame bbox F;
-endfig;
-\end{code}
+\smallmpexternal[firstline=6,lastline=11]{pics-youth.mp}
+\noindent
All the heavy lifting is done by "frame" macro defined in
"picture_frame.mp" $\longrightarrow$
-\vadjust{\moveright5.2in\vbox to 0pt{\hsize 4in\vskip-184pt
-\begin{smallcode}
-vardef frame expr P =
- save base, side, f, t, u, xx;
- picture base, side; path f; numeric t, u, xx;
- % work out some measurements
- t = arclength subpath (0,1) of P;
- u = arclength subpath (1,2) of P;
- xx = max(t, u) + 2 pf_wd;
- f = unitsquare xscaled xx yscaled pf_wd;
- % convenience / nonce function
- vardef paint_strip(expr y, wd, shade) =
- draw subpath (0, 1) of f
- shifted (0, if y < 0: pf_wd + fi y)
- withpen pencircle scaled wd
- withcolor shade
- enddef;
- base = image(
- % background colour
- fill f withcolor gold;
- % grey strips
- paint_strip(2, 3, 5/4 grey);
- paint_strip(3.5, 1/4, grey);
- paint_strip(5, 1/4, 1/2[gold, dark]);
- paint_strip(-6.5, 1/4, 1/2[gold, dark]);
- paint_strip(-6, 1/4, 1/2[gold, dark]);
- paint_strip(-2, 2, 5/4 grey);
- % spatter with random spots
- for i=0 upto 4 * arclength(subpath (0,1) of f):
- fill fullcircle scaled uniformdeviate 3/4
- shifted (uniformdeviate xx, uniformdeviate pf_wd)
- withcolor dark;
- endfor
- % decorative balls
- for x = 2 step 3 until xx:
- draw ball shifted (x, 2);
- endfor
- );
- % make two trapezium shapes
- side = base;
- clip side to (pf_wd, 0) -- (pf_wd + u, 0)
- -- (2 pf_wd + u, pf_wd) -- (0, pf_wd) -- cycle;
- clip base to (pf_wd, 0) -- (pf_wd + t, 0)
- -- (2 pf_wd + t, pf_wd) -- (0, pf_wd) -- cycle;
- % arrange the pieces around path P
- image(
- draw base rotated 180 shifted point 1 of P shifted (+pf_wd, 0);
- draw base rotated 0 shifted point 3 of P shifted (-pf_wd, 0);
- draw side rotated 90 shifted point 0 of P shifted (0, -pf_wd);
- draw side rotated 270 shifted point 2 of P shifted (0, +pf_wd);
- )
-enddef;
-\end{smallcode}
+\vadjust{\moveright5in\vbox to 0pt{\hsize 4.2in\vskip-164pt
+\smallmpexternal[firstline=18,lastline=64,xrightmargin=-40pt]{picture_frame.mp}
\vss}}
\noindent This macro also needs some colours:
+\smallmpexternal[firstline=4,lastline=7]{picture_frame.mp}
+\noindent a picture of a small silvery-gold ball:
+\smallmpexternal[firstline=9,lastline=14]{picture_frame.mp}
+\noindent and an internal variable that defines the width of the frame:
+\smallmpexternal[firstline=16,lastline=16]{picture_frame.mp}
+\noindent The macro takes a path or picture $P$ as an argument, and makes a thin rectangle $f$
+that is scaled to the desired width and the longer of the two sides of the bounding
+box. This thin rectangle is then decorated with background colour, strips of colour
+to suggest depth, a random spatter-pattern, and a row of little balls. The macro
+then makes two trapezium shaped copies of the decorated rectangle, pieces them
+together around $P$, and returns the result as a \<picture>.
+
+\newpage
+\section{Drawing and decorating lines}
+
+\textsc{This section} is all about making marks along a \<path> using
+\mpl{draw} and a number of other more sophisticated techniques.
+
+\subsection{Choosing a pen}
+
+\MP\ inherits a rather complicated system of pens from \MF. As explained in \mfbook,
+the original intention of this system was to improve the digitisation of font
+characters so that low-resolution raster versions would look aesthetically pleasing.
+This is not really a problem for graphics that you might produce with \MP, and so
+for most purposes you can stick to the default circular pen, and not worry about
+using \mpl{pensquare}, \mpl{penrazor}, and \mpl{penspeck}, nor creating your own
+\<pen> variables. On the other hand, you probably will need to change the size and
+shape of the pen occasionally, and it is good to understand the mechanisms
+available.
+
+The default, built-in, pen is \mpl{pencircle} -- at the start of every job
+this pen is scaled to $0.5\unit{bp}$ and saved as \mpl{currentpen} and
+\mpl{defaultpen}. Every time you use \mpl{draw}, \MP\ automatically adds
+\mpl{withpen currentpen} unless you have added your own \mpl{withpen}.
+\begin{code}[xrightmargin=-42pt]
+draw origin -- 20 right; % uses "currentpen"
+draw (0,10) -- (20,10) withpen pencircle scaled 2; % thick pen
+\end{code}
+If you get tired of typing \mpl{withpen},
+you can change pens with the \mpl{pickup} macro; essentially this just updates the value of
+\mpl{currentpen}.\vadjust{\moveright 4in\vbox to 0pt{\bigskip
+\begin{mplibcode}
+draw origin -- 42 right; % uses "currentpen"
+pickup pencircle scaled 2; % use a thick pen
+draw (0,-24) -- (42,-24);
+draw (0,-36) -- (42,-36);
+pickup defaultpen; % change back to default
+\end{mplibcode}\vss}}
+\begin{code}
+draw origin -- 42 right; % uses "currentpen"
+pickup pencircle scaled 2; % use a thick pen
+draw (0,-24) -- (42,-24);
+draw (0,-36) -- (42,-36);
+pickup defaultpen; % change back to default
+\end{code}
+If you are using a fat pen and you don't like the big rounded ends, then
+you can use \mpl{cutdraw} or set \mpl{linecap := butt;} — see
+§\ref{sec:linecaps} for more.
+\vadjust{\moveright5.5in\vbox to 0pt{\vss\hsize 4.4in\noindent
+Here is an example that makes use of a circular pen transformed to a thin ellipse.
+\begin{texcode}
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\newcommand\fleuron{\begin{mplibcode}
+\end{texcode}
+\vskip-\baselineskip
+\begin{smallcode}
+beginfig(1);
+ -z1 = z4 = 7 dir 8;
+ y2 - y1 = y4 - y3 = 3(y4 - y1);
+ z2 - z1 = z4 - z3 = whatever * dir 50;
+ draw z1 .. controls z2 and z3 .. z4
+ withpen pencircle xscaled 1.2 yscaled 0.2 rotated 50;
+ currentpicture := currentpicture rotated - angle z4;
+endfig;
+\end{smallcode}
+\vskip-\baselineskip
+\begin{texcode}
+\end{mplibcode}}
+\begin{document}
+Here is a \fleuron\ mark.
+\end{document}
+\end{texcode}
+This example shows how to use an elliptical pen to draw a little twiddle mark
+— and incidentally how to define a La\TeX\ command that draws a \MP\
+figure — that comes out looking like this: \fleuron. The idea is that you could use
+it as a decoration.
+
+\medskip
+\centerline{\fleuron\quad \textit{A typographical ornament} \quad\fleuron}
+\medskip
+
+\noindent
+With a little work, you could also use it as a fancy rule between
+sections.
+$$\includegraphics{pens-fleuron}$$
+The important parts are that \mpl{pencircle} is scaled to be wider than it is tall,
+and then rotated so that it is at the correct angle at the start and at the end of
+the path. Think of it as a calligraphic nib. For another example, look at
+§\ref{sec:braces}, which uses a similar pen to draw the braces for the dimension
+label.}}
+
+
+\newpage
+\subsection{Multiple lines}
+
+\textsc{The pens available} in \MP\ are all simple convex polygons without holes, so
+if you want to draw double or triple lines, you have to draw the individual parts of
+the marks you want along the path.
+
+The simplest approach is to draw the path with a thicker pen, then draw over it with
+a thinner pen using the background colour, like this:
+\begin{code}
+path a; a = origin -- (48, 3) -- (96, -3) -- 144 right;
+draw a withpen pencircle scaled 3/2;
+draw a withpen pencircle scaled 1/2 withcolor background;
+\end{code}
+which produces this:
+\begin{mplibcode}
+path a; a = origin -- (48, 3) -- (96, -3) -- 144 right;
+draw a withpen pencircle scaled 3/2;
+draw a withpen pencircle scaled 1/2 withcolor background;
+\end{mplibcode}\enspace
+Notice that the lines have been drawn with the default rounded ends. If you don't
+want this then use \mpl{cutdraw} for the background lines (or set \mpl{linecap :=
+butt}), so that you get ends that look open, like this:
+\begin{mplibcode}
+path a; a = origin -- (48, 3) -- (96, -3) -- 144 right;
+cutdraw a withpen pencircle scaled 3/2;
+draw a withpen pencircle scaled 1/2 withcolor background;
+\end{mplibcode}\enspace
+For triple lines, you will need to draw three times: first broad, then medium with
+the background colour, then thin in the middle; and so on.
+
+Beware that you will need to be careful if the line needs to have an arrowhead or to
+touch another object. Beware also that drawing with the background colour does not
+erase anything, it just draws over the path with an opaque line that happens to be
+the same colour as the background, so you will not see
+anything that happens to lie under the line even if you want to.
+
+If you want to draw real separate parallel lines, then the simplest approach is just to shift
+the path sideways using something like this:
\begin{smallcode}
-color gold, dark, grey;
-gold = 1/256(243, 197, 127);
-dark = 1/256(144, 87, 50);
-grey = 1/256(156, 147, 138);
+path p; p = origin -- 100 dir 30; draw p;
+draw p shifted 4 unitvector(direction 1/2 of p rotated 90);
+\end{smallcode}
+If your path is a regular cycle, like a circle or a polygon, then another approach
+is to draw a scaled copy.
+\begin{smallcode}[xrightmargin=-20pt]
+path p; p = fullcircle scaled 100 shifted 42(normaldeviate, normaldeviate);
+draw p; draw p shifted -center p scaled 0.98 shifted center p;
\end{smallcode}
-a picture of a small silvery-gold ball:
+but if your path is more complex, then you need something like the macro
+shown at the right. The piano-shaped path $p$ is drawn in black; the outer blue path
+was drawn with \mpl{draw beside(p, 2)} and the red one with
+\mpl{draw beside(p, -2)}.
+
+\moveright5.5in\vbox to 0pt{\vss\hsize 4.4in\noindent
+\smallmpexternal[firstline=8,lastline=32,xleftmargin=0pt]{pens-besides.mp}
+\noindent\includegraphics[width=4in]{pens-besides}
+\vskip -60pt
+}
+
+\newpage
+\subsubsection*{Making tubes}
+
+Drawing with multiple lines can also produce a three-dimensional effect for
+knot diagrams (provided that you don't think of toothpaste).
+$$
+\begin{mplibcode}
+path a; a = origin .. (72, 10) .. (144, -10) .. (216, 0);
+for i=4 step -1/8 until 1/2:
+ draw a withpen pencircle scaled i withcolor (i*i/16)[white, 1/2 blue];
+endfor
+\end{mplibcode}
+$$
+This tube-like effect can be created with a loop like this:
\begin{smallcode}
-picture ball; ball = image(for i=0 upto 16:
- fill interpath(i/16,
- fullcircle scaled 10,
- fullcircle scaled 3 shifted (-2, 2)
- ) withcolor (i/16)[gold, 15/16 white];
-endfor) scaled 1/4;
+path a; a = origin .. (72, 10) .. (144, -10) .. (216, 0);
+for i=4 step -1/8 until 1/2:
+ draw a withpen pencircle scaled i withcolor (i*i/16)[white, 1/2 blue];
+endfor
\end{smallcode}
-and an internal variable that defines the width of the frame:
+The idea is to
+draw a path repeatedly with lines that get thinner and use a lighter shade
+Notice the colour fades from white to dark blue using the mediation syntax.
+You might like to experiment with linear or quadratic transitions until you get a
+gradient that you like. In the loop above as $i$ varies from 4 down to $\frac12$,
+the mediation fraction varies from 1 down to $\frac1{64}$, like this:
+$$\vbox{\halign{\hss #:\quad&&\hss #\hss\cr
+$i$ & 4.00 & 3.75 & 3.50 & 3.25 & 3.00 & 2.75 & 2.50 & 2.25 & 2.00 & 1.75 & 1.50 & 1.25 & 1.00 & 0.75 & 0.50 \cr
+$i^2/16$ & 1.00 & 0.88 & 0.77 & 0.66 & 0.56 & 0.47 & 0.39 & 0.32 & 0.25 & 0.19 & 0.14 & 0.10 & 0.06 & 0.04 & 0.02 \cr
+}}$$
+which makes the gradient steeper nearer the edges.
+If you don't want the rounded ends, then you should use \mpl{cutdraw} instead of
+\mpl{draw}.
+
+\subsection{Showing crossings}
+
+In general it is a good idea to avoid line crossings completely, but
+occasionally you may end up with a diagram where at least one line
+has to cross another. The simple way to deal with this is to use the technique
+shown in §\ref{sec:cd}; capture the line to be drawn in a \<path>
+variable, and then do
\begin{smallcode}
-newinternal pf_wd; pf_wd := 21;
+cutdraw line withpen pencircle scaled 4 withcolor background; draw line;
\end{smallcode}
-The macro takes a rectangular path $P$ as an argument, and
-makes a thin rectangle $f$ that is scaled to the desired width and
-the longer of the two sides of the path. This thin rectangle is then
-decorated with background colour, strips of colour to suggest depth, a random
-spatter-pattern, and a row of little balls. The macro then makes two trapezium
-shaped copies of the decorated rectangle, pieces them together around $P$, and returns the result as a
-\<picture>.
+so that you erase behind the line before you draw it. Alternatively you could use
+the ideas in §\ref{sec:allxp} to find all the intersections between two paths
+and mark them appropriately. But the marks might not improve legibility; compare
+these two \rlap{$\longrightarrow$}\mpic{-6in}{pens-crossings}
+
\newpage
-\section{Annotations}
+\subsection{Using dash patterns with extra precision}
-\textsc{In some awkward corners}, you may find that you just can't get your label in
-the right place with \mpl{dotlabel} even if you adjust \mpl{labeloffset}. In these
-cases there are two simple techniques you can use. First, you could separate
-drawing the dot from placing the label; given a point $P$ you can try:\mpic{0pt}{callout}
+\textsc{As you may know}, plain \MP\ provides two
+built-in dash patterns, so that you can draw a path \mpl{dashed withdots} or
+\mpl{dashed evenly}.
+\vadjust{%
+\moveright384pt\vbox to 0pt{\vskip-46pt\hsize 4.2in\small
+$$
+\begin{mplibcode}
+vardef exactly(expr a) =
+ save m; numeric m; 2m = (a-6) / round(a/6);
+ dashpattern(on m off m)
+enddef;
+vardef gooddots(expr a) =
+ save m; numeric m; 2m = (a-5) / round(a/5);
+ dashpattern(off m on 0 off m)
+enddef;
+ for i=2 upto 8:
+ path c[];
+ c1 = fullcircle scaled 16i shifted 80 left;
+ c2 = fullcircle scaled 16i shifted 80 right;
+ draw c1 dashed evenly withcolor 2/3 blue;
+ draw c2 dashed exactly(arclength c2) withcolor 1/2 red;
+ %draw c1 shifted 160 down dashed withdots withcolor 2/3 blue;
+ %draw c2 shifted 160 down dashed gooddots(arclength c2) withcolor 1/2 red;
+ endfor
+\end{mplibcode}
+$$
+
+\noindent
+The blue circles on the left were drawn with \mpl{dashed evenly}, and the uneven
+gaps are noticeable at the “three o’clock†positions where the paths begin and end.
+As you can see the default dash spacing looks fine at some sizes but bad on others.
+On the right you can see the same circular paths coloured red, and drawn with
+\mpl{dashed exactly(arclength c, 6)}.
+
+$$
+\begin{mplibcode}
+vardef exactly(expr a, u) =
+ save m; numeric m; 2m = a / round(a/u);
+ dashpattern(on m off m)
+enddef;
+ for i=2 upto 8:
+ path c[];
+ c1 = unitsquare shifted -(1/2, 1/2) scaled 16i shifted 80 left;
+ c2 = unitsquare shifted -(1/2, 1/2) scaled 16i shifted 80 right;
+ draw c1 dashed evenly withcolor 2/3 blue;
+ draw c2 dashed (exactly(arclength c2, 8) shifted 6 right) withcolor 1/2 red;
+ endfor
+\end{mplibcode}
+$$
+Other paths may require a bit more ingenuity and thought. Because the square paths
+have four equal sides, they work better with a target dash length that is a multiple
+of 4. Here the blue squares on the left use the default \mpl{dashed evenly}, and the
+red squares on the right were done with:
\begin{code}
-drawdot P withpen pencircle scaled dotlabeldiam;
-label("$P$", P shifted 10 dir 68);
+dashed (exactly(arclength s, 8) shifted 6 right)
\end{code}
-Using \mpl{dotlabeldiam} ensures that your dots match any others done with
-\mpl{dotlabel}.
-Secondly, if that's not enough, use a temporary pair to create a call out line:
+The right shift made the corners look better.
+\vss}}
+
+The keyword \mpl{dashed} gives you access to the PostScript "setdash" command, whose
+argument is a special \<picture> defined with the \MP\ \mpl{dashpattern} function.
+If you look in "plain.mp" you will find these declarations:
\begin{code}
-z0 = P + 20 dir -20;
-draw z0 -- P
- cutafter fullcircle scaled 8 shifted P
- withpen pencircle scaled 1/4;
-label.rt("\textit{pole}", z0);
+picture evenly,withdots;
+evenly = dashpattern(on 3 off 3); % dashed evenly
+withdots = dashpattern(off 2.5 on 0 off 2.5); % dashed withdots
\end{code}
-If you want to do this sort of thing often, then it might be worth making a macro.
-It is hard to write anything completely general, but see §\ref{sec:extimage} for an
-example.
+The detailed syntax is explained in §9.4 of the \MP\ manual, but essentially
+\mpl{withdots} creates a unit 5 points long with a dot in the middle, and
+\mpl{evenly} creates a unit 6 points long with the dashes 3pt long (plus the round
+bit at the end of each dash, unless you have changed \mpl{linecap}) and gaps 3pt
+long (minus any round bits).
-\medskip\noindent
-\textsc{You might also want} to mark a straight line between two points.
-\vadjust{\moveright5.3in\vbox to 0pt{\hsize 4.2in
-\begin{smallcode}
-vardef do_brace(expr a,b,m,r) =
- save d, e, n, bb; numeric d, n; pair e; path bb;
- n = 1/2 m; d = angle (b-a);
- e = up scaled m rotated d shifted r[a,b];
- bb = ((origin {0,n} .. {right} (abs n,n))
- rotated d shifted a --
- ((-abs n,-n){right} .. {0,n} origin {0,-n} .. {right}(abs n,-n))
- rotated d shifted e --
- ((-abs n,n){right} .. {0,-n} origin)
- rotated d shifted b
- ) shifted (up scaled n rotated d);
- draw bb withpen pencircle yscaled .6 xscaled .1666 rotated d;
- point 3 of bb
-enddef;
+You might be tempted to get creative with this and make complex dot-dot-dash patterns,
+but they rarely look very good and they may puzzle your readers. Scaling the two
+default patterns is probably all you ever need; so if you want a denser dotted line
+try \mpl{dashed withdots scaled 1/2},
+or to get very long dashes you could use
+\mpl{dashed evenly scaled 4}.
-label.lrt("Here",do_brace(z1, z2, -12, 3/4));
-\end{smallcode}
-Note that, as well as drawing the braces, the macro uses the grouping provided by \mpl{vardef} to return the
-mid point so that you can put a label next to it.
-\vss}}
-The simplest way to do this is just to use \mpl{drawdblarrow} on a copy of your straight
-path shifted to one side, like so:
+But you may also notice that the dash patterns (particularly the longer ones) do not
+always fit your paths exactly -- this is especially noticeable with closed paths,
+where you may end up with one unsightly long dash or a very short gap at the point
+where the path begins and ends.
+
+There is a simple solution: adjust the length of the dash pattern
+so that an integer number of dash units exactly fit your path.
\begin{code}
-drawdblarrow (z1--z2) shifted (12 up rotated angle (z2-z1));
+vardef exactly(expr a, u) =
+ save m; numeric m; 2m = (a-u) / round(a/u);
+ dashpattern(on m off m)
+enddef;
\end{code}
-If you combine this with temporarily setting \mpl{ahangle:=180}, you get the simple
-dimension line shown in blue.
-$$\includegraphics{braces}$$
-The red braces are a more complex variation on this theme $\longrightarrow$
+Here $a$ is supposed to be the \mpl{arclength} of your path, and $u$ the desired
+unit size, so you can use it like this:
+\begin{code}
+path c; c = fullcircle scaled 200;
+draw c dashed exactly(arclength c, 6);
+\end{code}
+to get a close approximation to \mpl{dashed evenly} that exactly fits the path.
\newpage
-\section{Line caps and line joins}
+\subsection{Decorating a path}
+
+\textsc{A little decoration} generally goes a long way, so you may want to restrain
+your creativity before you apply too many of the ideas from this page. There are
+two basic techniques shown here: creative use of dash patterns; and drawing shapes
+along the path.\mpic{-48pt}{pens-strokes}
+
+\smallskip\noindent
+With a curved path $S$, the first “with a dash pattern†was drawn like this:
+\smallmpexternal[firstline=21,lastline=21,xleftmargin=0pt]{pens-strokes.mp}
+\noindent
+Notice that the default rounded pen makes dots and dashes with rounded ends.
+The second line “with a sharp dash pattern†uses \mpl{cutdraw} to change the line
+ends.
+\smallmpexternal[firstline=26,lastline=26,xleftmargin=0pt]{pens-strokes.mp}
+\noindent
+The “railway line†uses a combination of three drawing operations:
+\smallmpexternal[firstline=31,lastline=33,xleftmargin=0pt,xrightmargin=-30pt]{pens-strokes.mp}
+
+\smallskip\noindent
+The “plainer railway line†was done like this:
+\smallmpexternal[firstline=40,lastline=44,xleftmargin=0pt]{pens-strokes.mp}
+\noindent
+Note that it's essential to use \mpl{arctime} and \mpl{arclength} in order to get
+the markers evenly spaced. But you don't need to worry about the rotation in order
+to get the “fading away†effect:
+\smallmpexternal[firstline=49,lastline=52,xleftmargin=0pt]{pens-strokes.mp}
+\noindent
+The remaining three are just fancy variations on the same theme. You might
+like to try to re-create them as an exercise, or you can look in the source file.
+
+\newpage
+\subsection{Morphing a path}
+
+A more flexible, but more complicated, decoration technique is to use a macro
+to morph your path before you actually draw it. This is how the venerable "feynmp"
+package marks photons and gluons etc in Feynman diagrams. Since "feynmp" is a
+standard part of the base \MP\ distribution you can use these macros in normal
+drawings; so to draw a zigzag line you can do:
+\begin{code}
+input feynmp
+path S; S = (left {dir 30} .. right {dir 30}) scaled 100;
+draw zigzag S;
+\end{code}
+The package also provides "curly", and "wiggly", as shown at the
+right\mwpic{-100pt}{pens-feynmp-styles}, and defines a number of parameters
+to control the sizes of the shapes:
+\begin{itemize}[itemsep=0pt]
+ \item "curly_len" sets the wave length of the loops, default 8.5
+ \item "wiggly_len" ditto for waves, default 11.34
+ \item "zigzag_len" ditto for zigs, default 5.67
+ \item "wiggly_slope" steepness of waves, default 60°
+ \item "zigzag_width", amplitude of zigs, default 4
+\end{itemize}
+
+\noindent
+You might like to try your hand at defining your own. Here is one that does
+a vaguely hellenic meander pattern, adapted to cope with curved
+paths.\mwpic{80pt}{pens-greek-meander}
+\smallmpexternal[firstline=6,lastline=21,xrightmargin=-42pt]{pens-greek-meander.mp}
+
+\newpage
+\subsection{Arrow styles}
+
+Plain \MP\ provides just two commands for drawing arrows: \mpl{drawarrow} and
+\mpl{drawdblarrow}. The default arrows are shown at
+\sep{"1"}\mwpic{-48pt}{pens-arrow-styles} in the drawing on the
+right.\rlap{$\rightarrow$}
+
+There are two parameters that you can set to control the shape. The length of the
+arrow head is defined by \mpl{ahlength} which is set to 4pt, and the angle is
+defined by \mpl{ahangle} which starts at 45°. In some diagrams your arrows may look
+more elegant if they are a bit longer and slightly sharper. The arrows shown at
+\sep{"2"} were created by setting \mpl{ahangle := 20;} and \mpl{ahlength := 6;}
+(note that you need to use the assignment operator to update them).
+
+\bigskip
+
+If your diagram needs a wider range of arrow head styles, perhaps because you are
+drawing UML, then you can use the "mparrows" package from CTAN. If
+you have a complete \TeX\ distribution installed, you can just put \mpl{input
+mparrows} near the top of your program, and then use the "setarrows" macro
+to change the arrow style.
+In the drawing on the right
+\begin{itemize}
+ \item \sep{"mp1"} shows the result of \mpl{setarrows(open)},
+ \item \sep{"mp2"} shows \mpl{setarrows(defaultunfilled)}, and
+ \item \sep{"mp3"} shows \mpl{setarrows(barbed)}.
+\end{itemize}
+
+\noindent
+The package uses the same length and angle parameters as the default arrows. It also
+provides an extra parameter called "barbedarrowindent" to control the shape of the
+barbed arrows. For full details try: "texdoc mparrows"
+
+\bigskip
+
+If you would rather have arrows in your drawings that match the various arrows
+provided by the Computer Modern font, then you can use the "cmarrows" package from CTAN. You can
+include this package by adding \mpl{input cmarrows} near the top of your program.
+It is slightly more complicated to control, but the details are explained in the
+manual. At \sep{"cm1"} you can see the result of
+\begin{smallcode}[xrightmargin=-40pt]
+setup_cmarrows(macro_name="drawarrow"; arrow_name="texarrow"; ... );
+setup_cmarrows(macro_name="drawdblarrow"; arrow_name="twowayarrow"; ...);
+\end{smallcode}
+Here I have chosen to override the built-in command, but you can assign a
+different macro name if you prefer. The arrow names used at \sep{"cm2"} were
+"lefthalfarrow" and "paralleloppositelefthalfarrows".
+
+\newpage
+\subsection{Line caps and line joins}\label{sec:linecaps}
The PostScript language defines parameters that affect how the ends of each line are
drawn and how lines are joined together. Plain \MP\ provides access to these
-parameters through internal variables called "linecap" and "linejoin"; it sets both
-of them to the value "rounded" at the start of each job.
-\mpic{0pt}{line-caps-and-joins}
+parameters through internal variables called \mpl{linecap} and \mpl{linejoin}; it
+sets both of them to the value \mpl{rounded} at the start of each job.
+\mwpic{-20pt}{pens-line-caps-and-joins}
-The figure on the right shows the affect of the different settings, using an
+The figure on the right shows the effect of the different settings, using an
exaggerated line width of 2 points (instead of the usual 0.5 points). Some
observations
to note:
\begin{itemize}
- \item When $\id{linecap}=\id{squared}$ then \kw{drawdot} produces diamond-shaped
+ \item When \mpl{linecap = squared} then \mpl{drawdot} makes diamond-shaped
dots, even when you are drawing with the default circular pen.
- \item When $\id{linecap}=\id{butt}$ then \kw{drawdot} produces invisible dots.
+ \item When \mpl{linecap = butt} then \mpl{drawdot} produces invisible dots.
They still count towards the bounding box of the picture but there's no mark
on the page.
- \item When $\id{linecap}=\id{squared}$ then \kw{drawarrow} produces some
- unpleasant results; even when $\id{linejoin}=\id{mitered}$, you can still
+ \item When \mpl{linecap = squared} then \mpl{drawarrow} produces some
+ unpleasant results; even when \mpl{linejoin = mitered}, you can still
see small jaggies on the slopes of the arrows.
\item The arrows are nice and sharp when
- $\id{linejoin}=\id{mitered}$, but they over shoot the mark slightly.
+ \mpl{linejoin = mitered}, but they over shoot the mark slightly.
- \item If you zoom in, you can see the effect of $\id{linejoin}$ on the corners of the grey box
- as well as on the arrow heads, but you might not notice the difference when
- the picture is printed unless you have a very high resolution printer.
+ \item If you zoom in, you can see the effect of \mpl{linejoin} on the corners in
+ the centre as well as on the arrow heads, but you might not notice the
+ difference when the picture is printed unless you have a very high
+ resolution printer.
\item
This drawing was done with \mpl{pencircle scaled 2}, so that the dots
would be easy to see. This does make the arrows drawn with the
default line modes (rounded caps and rounded joins) looks a bit fat;
- they look better with the usual \mpl{pencircle scaled .5}.
+ they look better with the usual \mpl{pencircle scaled .5}, Like this:
+ \begin{mplibcode}drawdblarrow (left--right) scaled 20;\end{mplibcode}
\end{itemize}
-There is one more PostScript parameter affecting line joins. \MP\ makes it available as "miterlimit"
-and it affects how much a mitered join is allowed to stick out at each corner. Plain \MP\ sets
-"miterlimit=10;" which is correct for nearly all drawings. If you set
-"miterlimit:=0;" then the mitered line join mode becomes more or less the same as the
-beveled mode.
+There is one more PostScript parameter affecting line joins. \MP\ makes it available
+as \mpl{miterlimit} and it affects how much a mitered join is allowed to stick out
+at each corner. Plain \MP\ sets \mpl{miterlimit = 10;} which works well for most
+drawings. If you set \mpl{miterlimit := 0;} then the mitered line join mode becomes
+more or less the same as the beveled mode.
+
+\newpage
+\subsection{Line caps and line joins with square pens}
+
+\textsc{The parameters explained} in the previous section were designed (or at least
+named) for use with the default pen \mpl{pencircle}.\mwpic{-60pt}{pens-pen-oddity}
+You will get some rather odd shapes if you use them with any other pen, such as
+\mpl{pensquare}, especially if you use a large pen. In the drawings on the right,
+the thin red lines are drawn with each pen scaled to $0.5\unit{bp}$ (the default
+size), and
+the large grey and blue areas show what would be draw with the same pens scaled to
+16\unit{bp}, so that you can see the artefacts more clearly.
+From these drawings you can see:
+\begin{itemize}
+ \item The default setting \mpl{linecap := rounded} actually seems to mean “draw
+ a dot with the current pen at each end of the pathâ€, so with
+ \mpl{pensquare} you get a square dot on the end and it's not rounded at all.
+
+ \item With \mpl{linecap := butt}, \MP\ appears to draw the terminal dots using
+ half of the current pen. With the square pen, this has the unfortunate
+ effect of cutting the pen at 45°, so that the end of the lines appear
+ bevelled rather than squared off. Notice also that the cut is correctly
+ rotated with the circular pen, but remains at 45° with the square pen.
+
+ \item You get a similar effect with \mpl{linecap := squared}. \MP\ uses the
+ same cut “across†the pen, but pushes it out so that it just touches the
+ far edge of the pen-sized dot that would be drawn with \mpl{linecap := rounded}.
+
+\end{itemize}
+
+You can also see from the drawings that the effect of the \mpl{linejoin} setting, which is
+admittedly pretty subtle with a circular pen, is null with the square pen. And
+that the single point dots disappear unless you have \mpl{linecap := rounded}.
+
+\bigskip
+\noindent
+If you need to use a large square pen, then you can mitigate some of the artefacts
+if you rotate the pen by 45°. Using \mpl{pensquare rotated 45} corrects most of the
+faults, except that \mpl{linecap := rounded} will give you lines with pointed ends,
+and that the squared off ends of the lines with the other settings may not be
+exactly orthogonal to the direction of the path at each end.
\newpage
\section{Plotting functions}\label{func}
@@ -5634,162 +4677,47 @@ hours scratching your head wondering how to adjust the axis labels.
\subsection{Making axes}
-You can start by drawing a simple set of axes.\mpic{-124pt}{plain-axes}
-\begin{smallcode}
-path xx, yy;
-xx = (left -- right) scaled 130;
-yy = (down -- up) scaled 80;
-drawarrow xx; label.rt("$x$", point 1 of xx);
-drawarrow yy; label.top("$y$", point 1 of yy);
-\end{smallcode}
+You can start by drawing a simple set of axes.\mpic{-124pt}{func-plain-axes}
+\smallmpexternal[firstline=6,lastline=10]{func-plain-axes.mp}
+\noindent
Here the axes are scaled arbitrarily to 130\,pt and 80\,pt, but you will probably
find it useful to set consistent units, and express sizes in terms of them. Purely
from habit, I use $u$ for the horizontal unit and $v$ for the vertical unit. This
makes it more convenient when you want to add a grid and/or a number
-scale.\mpic{-16pt}{numbered-axes}
+scale.\mpic{-16pt}{func-numbered-axes}
\vskip -12pt
\vbox to 0pt{
-\begin{smallcode}
-numeric u, v; u = 40; v = 29;
-path xx, yy;
-xx = (3/2 left -- 5 right) scaled u;
-yy = (3/2 down -- 4 up) scaled v;
-for x=-1, 1, 2, 3, 4:
- draw yy shifted (x * u, 0) withcolor 7/8; % grid
- draw (down--up) shifted (x * u, 0); % ticks
- label("$" & decimal x & "$", (x * u, -8));
-endfor
-for y=-1, 1, 2, 3:
- draw xx shifted (0, y * v) withcolor 7/8; % grid
- draw (left--right) shifted (0, y * v); % ticks
- label("$" & decimal y & "$", (-10, y * v));
-endfor
-drawarrow xx; label.rt("$x$", point 1 of xx);
-drawarrow yy; label.top("$y$", point 1 of yy);
-\end{smallcode}\vss}
+\smallmpexternal[firstline=7,lastline=21]{func-numbered-axes.mp}
+\vss}
\newpage
\subsection{Drawing linear functions}
-\textsc{For simple} linear graphs, you just need to define two points and draw a
+\textsc{For simple} linear graphs, you just need to define two points and draw a
line between them; it is tempting to try to make some generalized macro to do this,
but it is hard to make something completely general, so for most graphs it is easier
just to specify two points and use \mpl{draw}; often it is handy to making your line
longer than you need, then trim it using \mpl{cutbefore} and/or \mpl{cutafter} so
that it fits neatly.
-\vadjust{\moveright 384pt\vbox to 0pt{\hsize 4in\vskip -100pt\begin{smallcode}
-numeric u, m, m', b, b';
-u = 1.44cm;
-b = 3.6u; b' = b + 1/2 u;
-m = -1; m' = 3/4 m;
-
-path xx, yy;
-xx = (left -- 5 right) scaled u;
-yy = xx rotated 90;
-
-numeric minx, maxx; path ff, gg;
-minx = xpart point 1/16 of xx;
-maxx = xpart point 15/16 of xx;
-ff = (minx, minx * m + b) -- (maxx, maxx * m + b);
-gg = (minx, minx * m' + b') -- (maxx, maxx * m' + b');
-
-z0 = point 0.4 of ff;
-z1 = point 0.54 of ff;
-z1 0 = whatever [point 0 of gg, point 1 of gg]; x1 0 = x0;
-z1 1 = whatever [point 0 of gg, point 1 of gg]; x1 1 = x1;
-
-forsuffixes @=0, 1:
- draw (x@, 0) -- z@ -- (0, y@) dashed evenly scaled 3/4;
- draw z@ -- z1 @ -- (0, y1 @) dashed withdots scaled 1/2;
- label.bot("$x_{" & decimal @ & "}$", (x@, 0));
- label.lft("$y_{" & decimal @ & "}$", (0, y@));
- label.lft("$y'_{" & decimal @ & "}$", (0, y1 @));
-endfor
-draw ff withcolor 2/3 red;
-draw gg withcolor 3/4 blue;
-drawarrow xx; drawarrow yy;
-
-label.rt("$x$", point 1 of xx);
-label.top("$y$", point 1 of yy);
-
-dotlabel.urt("$b$", (0, b));
-dotlabel.urt("$b'$", (0, b'));
-
-draw thelabel("slope: $m=" & decimal m & "$", 7 up)
- rotated angle (1, m) shifted point 2/3 of ff;
-draw thelabel("slope: $m'=" & decimal m' & "$", 7 up)
- rotated angle (1, m') shifted point 2/3 of gg;
-\end{smallcode}\vss}}
-$$\includegraphics[width=0.84\textwidth]{linear-graph.pdf}$$
+\vadjust{\moveright 384pt\vbox to 0pt{\hsize 4in\vskip -100pt
+\smallmpexternal[firstline=6,lastline=49]{func-linear-graph.mp}
+\vss}}
+$$\includegraphics[width=0.84\textwidth]{func-linear-graph}$$
But in this example it was easier to calculate them using $y=mx+b$.
Note also that spaces are allowed in suffixes, which makes the loop a bit simpler.
-\newpage
-In this second example of a linear function, the emphasis of the diagram was on
+\newpage\noindent
+In this second example of a drawing with linear functions, the emphasis of the diagram was on
the angles at the $x$-axis made by the two lines, so the lines were defined using
\mpl{rotated}, \mpl{shifted}, and \mpl{cutbefore} instead.
-\vadjust{\moveright 384pt\vbox to 0pt{\hsize 4in\vskip -24pt\begin{smallcode}
-path ell, tee, arc;
-ell = (left--right) scaled 10u rotated theta shifted P cutbefore xx;
-tee = (left--right) scaled 10u rotated psi shifted P cutbefore xx;
-arc = subpath (1.6, 3.2) of halfcircle rotated -180 shifted 1/2 up
- scaled 10u shifted P rotatedabout(P, psi);
-% the rest of the points then follow...
-Q = ell intersectionpoint subpath (1.5, 3) of arc;
-H = P + whatever * dir psi;
-xpart H = xpart Q = xpart M; ypart M = ypart N = 0;
-xpart N = xpart P;
-L = point 0 of ell;
-T = point 0 of tee;
-% now get on with the drawing
-draw arc dashed withdots scaled 1/4 withcolor 1/2 red;
-draw P--N dashed withdots scaled 1/2;
-draw Q--M dashed withdots scaled 1/2;
-drawarrow xx; label.rt("$x$", point 1 of xx);
-drawarrow yy; label.top("$y$", point 1 of yy);
-drawoptions(withcolor 2/3 blue);
-draw fullcircle scaled 32 shifted T cutafter tee;
-draw fullcircle scaled 28 shifted L cutafter ell;
-label("$\psi$", 24 right rotated 1/2 psi shifted T);
-label("$\theta$", 20 right rotated 1/2 theta shifted L);
-drawoptions();
-% trim the function lines neatly
-path boundary;
-z1 = point .95 of xx;
-z2 = point .95 of yy;
-boundary = z1--(x1,y2)--z2;
-draw ell cutafter boundary;
-draw tee cutafter boundary;
-% and finally label the points.
-label.bot("$T$", T);
-label.bot("$L$", L);
-label.bot("$N$", N);
-label.bot("$M$", M);
-dotlabel.ulft("$P$", P);
-dotlabel.lrt("$Q$", Q);
-dotlabel.lrt("$H$", H);
-\end{smallcode}\vss}}
-$$\includegraphics[width=\textwidth]{angles-lines.pdf}$$
-The lines are both trimmed to a convenient path (\id{boundary}) when they are
-drawn.\vadjust{\moveright296pt\vbox to 0pt{\vskip 80pt\begin{mplibcode}beginfig(0);drawarrow
-origin {right} .. {dir 70} 42 dir 60;
- label.lft("\small \dots continues", origin);
-endfig;\end{mplibcode}\vss}}
-
-\begin{smallcode}
-numeric u; u = 1cm;
-
-path xx, yy;
-xx = (2 left -- 10 right) scaled u;
-yy = (down -- 7 up) scaled u;
-
-numeric theta, psi; psi = 28; theta = 50;
-
-pair P, Q, H, N, M, T, L;
-P = (4u, 3u);
-\end{smallcode}
-
+$$\includegraphics[width=\textwidth]{func-angles-lines}$$
+The lines are both trimmed to a convenient path (\id{boundary}) when they are drawn.
+\smallmpexternal[firstline=6,lastline=12]{func-angles-lines.mp}
+\vskip-12pt\continued
+\moveright 384pt\vbox to 0pt{\hsize 4in\vss
+\smallmpexternal[firstline=14,lastline=51]{func-angles-lines.mp}
+\vskip -12pt}
\newpage
\subsection{Making curves for functions with a loop}
@@ -5800,15 +4728,15 @@ loop like this:
\begin{code}
vardef f(expr x) = x ** 2 enddef;
path ff;
-ff = (for x = minx step s until maxx - s:
- (x, f(x)) ..
- endfor (maxx, f(maxx))) xscaled u yscaled v;
+ff = (for x = minx step s until maxx - s:
+ (x, f(x)) ..
+ endfor (maxx, f(maxx))) xscaled u yscaled v;
\end{code}
provided you have first defined variables \id{minx} and \id{maxx} to represent the
domain of $x$, and worked out appropriate values for horizontal and vertical
-units, $u$, and $v$ so that the range of $f(x)$ fits neatly on your graph.
+units, $u$, and $v$ so that the range of $f(x)$ fits neatly on your graph.
-The loop
+The loop
above also uses a variable $s$ to control the number of points used to define the
path.\mwpic{-180pt}{func-powers}
The figures on the right show that over the domain $-3$ to $3$ a step of $\frac12$
@@ -5829,9 +4757,9 @@ step using the $\{\<pair>\}$ syntax:
vardef f(expr x) = x ** 2 enddef;
vardef fp(expr x) = 2x enddef; % NB "fp" because "f'" is illegal
path ff;
-ff = (for x = minx step s until maxx - s:
- (x, f(x)){1, fp(x)} ..
- endfor (maxx, f(maxx))) xscaled u yscaled v;
+ff = (for x = minx step s until maxx - s:
+ (x, f(x)){1, fp(x)} ..
+ endfor (maxx, f(maxx))) xscaled u yscaled v;
\end{code}
\vfill
@@ -5842,22 +4770,12 @@ smaller step size.
\newpage
\subsection{Making curves for functions from path pieces}\label{sec:pathpieces}
-\textsc{In some situations}, you might find it easier to stich together various
+\textsc{In some situations}, you might find it easier to stitch together various
\<path> pieces to make your curve. This can be especially elegant if there is a
symmetry in the path. For example:\mwpic{-48pt}{func-reflection}
-\begin{code}
-path ff, negative_ff;
-
-ff = (1,1) for x = 3/2 step 1/2 until 6: ... (x, 1/x) endfor;
-ff := reverse ff reflectedabout(origin, dir 45) & ff;
-ff := ff scaled 24;
-negative_ff = ff reflectedabout(origin, dir -45);
-
-draw ff withcolor 2/3 red;
-draw negative_ff withcolor 2/3 red;
-\end{code}
+\mpexternal[firstline=15,lastline=23]{func-reflection.mp}
-\smallskip\centerline{\small (Omitting code for the axes, the grid, and the dots at
+\centerline{\small (Omitting code for the axes, the grid, and the dots at
each \mpl{point} of the paths).}
\smallskip
@@ -5865,7 +4783,7 @@ each \mpl{point} of the paths).}
\begin{itemize}
\item Notice that you can update the path using the assignment operator
“\mpl{:=}â€.
- \item You need to \mpl{reverse} the reflected portion so that the two ends coincide.
+ \item You need to \mpl{reverse} the reflected portion so that the two ends coincide.
\item The two path segments are spliced together with \mpl{&}. You could use
a path join like \mpl{..} instead, but then the joined path would have an extra
\mpl{point} at \mpl{(1,1)}.
@@ -5873,12 +4791,13 @@ each \mpl{point} of the paths).}
the more horizontal part.
\end{itemize}
+\vfill\noindent
Reflection of a function in the line at 45° gives the inverse of the function, which
is especially useful for $y=1/x$, but it applies to functions generally. So if you want to
plot $y=\sqrt x$ it may be easier to define a path for $y=x^2$ and then reflect it.
This is particularly useful if you want to plot, say, $y=\sqrt[3]x$, over a domain
that includes negative numbers, because \MP\ will not calculate reciprocal powers of
-negative numbers.\mwpic{-60pt}{func-cuberoot}
+negative numbers.\mwpic{-90pt}{func-cuberoot}
The curve in this chart was created by reflecting the line $y=x^3$.
\newpage
@@ -5886,89 +4805,23 @@ The curve in this chart was created by reflecting the line $y=x^3$.
\textsc{A further example} of creating paths by
transformation.\mpic{-36pt}{func-exponential}
-\begin{smallcode}
-numeric u; u = 42;
-path xx, yy;
-xx = (-3u, 0) -- (5u, 0);
-yy = xx rotated 90;
-path ee, ll, nn;
-numeric minx, maxx, s;
-minx = -3; maxx = 1/256 mlog(4.5); s = 1/4;
-ee = (for x = minx step s until maxx - s:
- (x, mexp(256x)){1, mexp(256x)} ...
-endfor (maxx, mexp(256 maxx)){1, mexp(256 maxx)}) scaled u;
-ll = ee reflectedabout(origin, dir 45);
-nn = (for x=1 step s until 4-s: (x, 1/x) ... endfor (4, 1/4)) scaled u;
-nn := reverse nn reflectedabout(origin, dir 45) & nn;
-
-draw unitsquare xscaled mexp(256) scaled u withcolor 7/8;
-draw unitsquare yscaled mexp(256) scaled u withcolor 7/8;
-path T[];
-numeric p; p = directiontime dir 45 of ee;
-T1 = (precontrol p of ee -- postcontrol p of ee)
- shifted - point p of ee scaled 1/2 u shifted point p of ee;
-T2 = (precontrol p of ll -- postcontrol p of ll)
- shifted - point p of ll scaled 1/2 u shifted point p of ll;
-drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
-draw T1; draw T2; draw interpath(1/2, T1, T2) dashed evenly;
-drawoptions();
-
-draw nn; label.urt("$1/x$", point 0 of nn);
-draw ee withcolor 2/3 blue; label.top("$e^x$", point infinity of ee);
-draw ll withcolor 3/4 red; label.top("$\ln(x)$", point infinity of ll);
-drawarrow xx; label.rt("$x$", point 1 of xx);
-drawarrow yy; label.top("$y$", point 1 of yy);
-dotlabel.lft("$e$", (0, mexp(256) * u));
-dotlabel.bot("$e$", (mexp(256) * u, 0));
-dotlabel.ulft("$1$", (0, u));
-dotlabel.lrt("$1$", (u, 0));
-\end{smallcode}
-\moveright6in\vbox to 0pt{\vss\noindent
+\vadjust{\moveright5.5in\vbox to 0pt{\vskip5in\noindent
If you prefer more ‘normal’ functions, you can define:
\begin{smallcode}
vardef exp(expr x) = mexp(256x) enddef;
vardef log(expr x) = 1/256 mlog(x) enddef;
-\end{smallcode}}
+\end{smallcode}\vss}}
+
+\smallmpexternal[firstline=6,lastline=40,xleftmargin=0pt]{func-exponential.mp}
\newpage
\subsection{Functions using trigonometric functions}
\textsc{As noted} in §\ref{trig}, \MP’s built-in trigonometric functions work in
degrees, this example shows how you might use them in a graph.%
-\vadjust{\moveright5in\vbox to 0pt{\vskip-24pt\begin{code}
- numeric u, pi; u = 50; pi = 3.141592653589793;
-
- path xx, yy;
- xx = (3.5 left -- 3.6 right) scaled u;
- yy = (1.1 down -- 1.2 up) scaled u;
-
- path ss;
- ss = origin for t=1 upto 360: -- (t, sind(t)) endfor;
- ss := ss shifted 360 left & ss;
- ss := ss xscaled (pi/180) scaled u;
-
- draw ss cutbefore yy shifted point 0 of xx
- cutafter yy shifted point 1 of xx
- withcolor 3/4 blue;
- draw ss shifted (-1/2 pi * u ,0)
- cutbefore yy shifted point 0 of xx
- cutafter yy shifted point 1 of xx
- withcolor 2/3 red;
-
- drawoptions(dashed withdots scaled 1/4);
- draw ((1/4 pi, 0) .. (1/4 pi, sind(45))) scaled u;
- draw ((1/2 pi, 0) .. (1/2 pi, sind(90))) scaled u;
- draw ((3/4 pi, 0) .. (3/4 pi, sind(135))) scaled u;
- drawoptions();
-
- drawarrow xx; label.rt("$t$", point 1 of xx);
- drawarrow yy; label.top("$u(t)$", point 1 of yy);
-
- for i=-4, -3, -2, -1, 1, 2, 3, 4:
- draw (down--up) scaled 2 shifted (pi * i/4 * u, 0);
- label.bot(pi_quarters(i), (pi * i/4 * u, -2));
- endfor
-\end{code}\vss}}
+\vadjust{\moveright5.25in\vbox to 0pt{\vskip-30pt
+\mpexternal[firstline=15,lastline=50]{func-sines.mp}
+\vss}}
$$\includegraphics[width=\textwidth]{func-sines}$$
For this diagram, the sine wave path ("ss", shown in \blue{blue})
@@ -5977,194 +4830,66 @@ section from the origin to $2\pi$ is created in a loop; with 360 steps, you can
\mpl{--} and still get a smooth path. Secondly the cycle is duplicated by splicing
itself to a shifted copy. Thirdly it is $x$-scaled to radians, and then scaled in both
directions to the chosen unit size, and drawn chopped off to the width of
-the $x$-axis. The cosine path is the same path, shifted $\frac12\pi$ left,
+the $x$-axis. The cosine path is the same path, shifted $\frac12\pi$ left,
drawn in \red{red}, and chopped off to fit the same width.
-
The fancy fraction labels were produced with this subroutine:
-\begin{smallcode}
-vardef pi_quarters(expr n) =
- save s, f, q; string s, f; numeric q;
- s = if n < 0: "-" else: "" fi; q = abs(n);
- if q mod 4 = 0:
- f = if q > 4: decimal 1/4 q else: "" fi;
- elseif q mod 2 = 0:
- f = "\frac{" & decimal 1/2 q & "}{2}";
- else:
- f = "\frac{" & decimal q & "}{4}";
- fi
- "$\scriptstyle" & s & f & "\pi$"
-enddef;
-\end{smallcode}
+\smallmpexternal[firstline=6,lastline=13]{func-sines.mp}
\newpage
\subsection{Manipulating functions}
\textsc{This second example} with trigonometric functions shows one way to add
two functions, by combining the \MP\ paths themselves.%
-\vadjust{\moveright5in\vbox to 0pt{\vskip-24pt\begin{code}
- numeric u, pi; u = 50; pi = 3.141592653589793;
-
- path xx, yy;
- xx = (3.5 left -- 4 right) scaled u;
- yy = (1.2 down -- 1.3 up) scaled u;
-
- path ss, tt, uu;
- ss = origin for x=1 upto 360: -- (x, sind(x)) endfor;
- tt = origin for x=1 upto 360: -- (x, 1/2 sind(3x)) endfor;
- uu = origin for x=1 upto 360: --
- (x, ypart point x of ss + ypart point x of tt) endfor;
-
- forsuffixes $=ss, tt, uu:
- $ := $ shifted 360 left & $;
- $ := $ xscaled (pi/180) scaled u;
- $ := $ cutbefore yy shifted point 0 of xx
- cutafter yy shifted point 1 of xx;
- endfor
-
- draw ss withcolor 1/2[blue, white];
- draw tt withcolor 1/2[red, white];
- draw uu withcolor 1/4 green;
-
- label.top("$f(x)=sin(x)$", point 290 of ss);
- label.bot("$g(x)=\frac12 sin(3x)$", point 295 of tt);
- label.urt("$f(x) + g(x)$", point 350 of uu);
-
- drawarrow xx; label.rt("$x$", point 1 of xx);
- drawarrow yy; label.top("$y$", point 1 of yy);
-
- for i=-6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7:
- draw (down--up) scaled 2 shifted (pi * i/6 * u, 0);
- label.bot(pi_sixths(i), (pi * i/6 * u, -2));
- endfor
-\end{code}\vss}}
+\vadjust{\moveright5.25in\vbox to 0pt{\vskip-28pt
+\mpexternal[firstline=22, lastline=56, xrightmargin=-20pt]{func-addition-of-sines.mp}
+\vss}}
$$\includegraphics[width=\textwidth]{func-addition-of-sines}$$
Notice how the same extension, scaling, and trimming operations
-can be applied to all three paths using a \mpl{forsuffixes} loop.
-Note that you can use any regular variable name for the loop index;
-you don't have to use \mpl{$}, but like \mpl{@} it is a
+can be applied to all three paths using a \mpl{forsuffixes} loop.
+Note that you can use any regular variable name for the loop index;
+you don't have to use \mpl{$}, but like \mpl{@} it is a
valid variable name in \MP, and it looks a bit like a placeholder marker in other
languages.
Note that you need to start with the first point of the path outside the loop
-so that you don't end up with a dangling \mpl{--} path connector. Using
+so that you don't end up with a dangling \mpl{--} path connector. Using
\mpl{origin} is just a short cut for writing \mpl{(0, sind(0))}. If you were
plotting a different function this would not work. For example, \mpl{(0, cosd(0))}
is \mpl{(0,1)}.
-\bigskip\noindent
-\hey The missing \mpl{pi_sixths} macro is left as an exercise for the reader.
+\vfill\noindent
+\hey The missing \mpl{pi_sixths} macro is left as an exercise for the reader.
Hint: you can adapt the \mpl{pi_quarters} on the previous page, allowing for halves,
thirds, and sixths instead of halves and quarters.
\newpage
\subsection{Focus on a specific region of a function}
-\textsc{This visual proof} required a large $y$-axis scale.\mwpic{-24pt}{func-epi-v-pie}
-The axes are separated to show the
+\textsc{This visual proof} required a large $y$-axis scale.\mwpic{-36pt}{func-epi-v-pie}
+The axes are separated to show the
discontinuity in scales, and that the origin is not on the chart.\enlargethispage\baselineskip
-\begin{smallcode}[xleftmargin=0pt]
-numeric minx, maxx, s, u, v;
-minx = 13/8; s = 1/16; maxx = 19/4; u = 89; v = 3072;
-
-def f(expr x) = 1/256 mlog(x) / x enddef;
-path ff, xx, yy;
-ff = for x=minx step s until maxx-s: (x, f(x)) .. endfor (maxx, f(maxx));
-ff := ff xscaled u yscaled v;
-xx = origin -- right scaled (maxx-minx) scaled u;
-yy = origin -- up scaled 0.09v;
-xx := xx shifted point 0 of ff shifted 20 down;
-yy := yy shifted point 0 of ff shifted 20 left;
-
-numeric pi, e, fpi, fe;
-pi = 3.141592653589793 u; fpi = f(3.141592653589793) * v;
-e = 2.718281828459045 u; fe = f(2.718281828459045) * v;
-path ee, pp;
-ee = (e, ypart point 0 of xx) -- (e, fe) -- (xpart point 0 of yy, fe);
-pp = (pi, ypart point 0 of xx) -- (pi, fpi) -- (xpart point 0 of yy, fpi);
-
-draw ee dashed withdots scaled 1/4 withcolor 2/3 red;
-draw pp dashed withdots scaled 1/2 withcolor 2/3 red;
-draw ff withcolor 3/4 blue;
-
-drawarrow xx; label.rt("$x$", point 1 of xx);
-drawarrow yy; label.top("$y$", point 1 of yy);
-for x=2 upto 4:
- draw (down--up) scaled 2 shifted (x * u, ypart point 0 of xx);
- label.bot("$" & decimal x & "$", (x * u, ypart point 0 of xx - 2));
-endfor
-for y=31 upto 38:
- draw (left--right) scaled 2 shifted (xpart point 0 of yy, y/100*v);
-endfor
-for y=32, 35, 38:
- label.lft("$" & decimal (y/100) & "$", (xpart point 0 of yy-2, y/100*v));
-endfor
-\end{smallcode}
-
-\moveright384pt\vbox to 0pt{\vss\hsize 4in\begin{smallcode}
-drawoptions(withcolor 1/2 red);
-label.bot("$e$", point 0 of ee shifted 4 down);
-label.lft("$1/e$", point 2 of ee shifted 2 left);
-
-label.bot("$\pi$", point 0 of pp shifted 4 down);
-label.lft("$\ln\pi/\pi$", point 2 of pp shifted 2 left);
-
-drawoptions(withcolor 2/3 blue);
-label.urt("$\displaystyle y={\ln x\over x}$", point 42 of ff);
-
-drawoptions();
-label("\dots\ hence\enspace $e^\pi > \pi^e$.", (4u, 0.38v));
-\end{smallcode}}
+\smallmpexternal[xleftmargin=0pt, firstline=8, lastline=42]{func-epi-v-pie.mp}
+\vskip-12pt\continued
+\moveright384pt\vbox to 0pt{\vss\hsize 4in\null\bigskip
+\smallmpexternal[firstline=44, lastline=57]{func-epi-v-pie.mp}
+}
\newpage
\subsection{Approximate function diagrams}
\textsc{Sometimes} you may need to plot a function that does not have a simple
-mathematical definition. You can use \MP’s normal path definitions to make a likely
-looking approximation.\mwpic{-48pt}{func-stress}
-\begin{smallcode}[xleftmargin=0pt, xrightmargin=-140pt]
-z1 = 377 right; z2 = 233 up;
-path ff; ff = origin .. (72, 144){1,2} .. (84, 144) .. (96, 144){1,1}
- .. (220, 220){right} .. (370, 160){2,-1.3};
-
-for t=2, 4, 4.9:
- draw point t of ff -- (xpart point t of ff, y2 + 6)
- dashed evenly scaled 1/2;
-endfor
-label.top("Strain hardening",
- (1/2 (xpart point 2 of ff + xpart point 4 of ff), y2));
-label.top("Necking",
- (1/2 (xpart point 4 of ff + xpart point 4.9 of ff), y2));
-
-path rr;
-rr = point 0.4 of ff -- (xpart point 0.8 of ff, ypart point 0.4 of ff) -- point 0.8 of ff;
-draw rr; label.bot("Run", point 1/2 of rr); label.rt("Rise", point 3/2 of rr);
-
-vardef pin_label@#(expr p, a, b)=
- draw a -- b cutbefore fullcircle scaled 8 shifted a withpen pencircle scaled 1/4 withcolor 1/2 white;
- label@#(p, b);
-enddef;
-pin_label.lrt("Yield strength", point 1.2 of ff, point 2 of ff + (8, -18));
-pin_label.bot("Ultimate strength", point 4 of ff, point 4 of ff + (4, -24));
-pin_label.bot("Fracture", point 5 of ff, point 5 of ff + (-8, -18));
-
-draw ff withpen pencircle scaled 1 withcolor 2/3 blue;
-clip currentpicture to unitsquare scaled 400; % clip thick pen at origin
-
-drawdblarrow z1 -- origin -- z2;
-label.ulft("Strain, $\epsilon$", z1);
-label.urt("Stress, $\sigma$", z2);
-
-label("$\displaystyle\hbox{Young's modulus} = \hbox{Slope} = {\hbox{Rise}\over\hbox{Run}}$",
- 1/2 z1 shifted 36 up) withcolor 2/3 blue;
-\end{smallcode}
+mathematical definition. You can a \MP \<path> to make a likely looking approximation.
+\mwpic{-48pt}{func-stress}
+\vskip-12pt
+\smallmpexternal[firstline=6,lastline=40,xleftmargin=0pt, xrightmargin=-300pt]{func-stress.mp}
\newpage
\subsubsection{Taming Bezier paths with controls}
-\textsc{It takes some} practice to translate a sketch of a curve into a smooth
+\textsc{It takes some} practice to translate a sketch of a curve into a smooth
path. Plain \MP\ inherits from \MF\ a useful \id{flex} macro, that takes a list of \<pair>s
(any number of them) and produces a pleasing path through them. As Knuth says in the
-\mfbook:
+\mfbook:
“The idea is to specify two endpoints, $z_1$ and $z_n$, together with
one or more intermediate points where the path is traveling in the
same direction as the straight line from $z_1$ to~$z_n$; these
@@ -6176,7 +4901,6 @@ flex(z5,z6,z7) & flex(z7,z8,z9,z1) & cycle;
\end{code}
(with appropriate definitions of the points), produces this:
\lower 12pt\hbox{\smash{\begin{mplibcode}
-beginfig(0);
z1=(0,509);
z2=(-14,492);
z3=(-32,481);
@@ -6190,27 +4914,14 @@ z9=(4,493);
flex(z5,z6,z7) & flex(z7,z8,z9,z1) & cycle;
for i=1 upto 9: draw z[i] withpen pencircle scaled 2 withcolor red; endfor
currentpicture := currentpicture scaled 0.7071 rotatedabout(z3, -20);
-endfig;
\end{mplibcode}}}
\bigskip\noindent
\textsc{Another approach} is just to define the end-points and some control points,
and then define a path that is shaped by the control points but does not actually go
-through them. Consider this program:\mwpic{-20pt}{func-pulse}
-\begin{code}
-vardef pulse(expr w, h, d) =
-for i=0 upto 4: x[i] = w/4 * i; endfor
- y0 = y1 = 0;
- y3 = y4 = d;
- y2 = h;
- z0 .. 1/2[z0, z1] .. controls z1
- .. 1/2[z1, z2] .. controls z2
- .. 1/2[z2, z3] .. controls z3
- .. 1/2[z3, z4] .. z4
-enddef;
-draw pulse(300, 100, -40);
-\end{code}
-This produces the smooth blue line shown on the right. A second copy of the line is
+through them. Consider this program:\mwpic{-36pt}{func-pulse}
+\mpexternal[firstline=7,lastline=16]{func-pulse.mp}
+\noindent This produces the smooth blue line shown on the right. A second copy of the line is
shown below, decorated with the three control points $z_1$, $z_2$, and $z_3$ in red,
and showing the six points of the path as small black circles. You can tweak this
curve by adjusting the controls left or right, or changing the mediation parameters
@@ -6219,50 +4930,32 @@ so that the points on the path are closer to one control point than the other.
\newpage
\subsection{Parametric plots}
-\textsc{If you want to plot} one function against another, then you can make each
+\textsc{If you want to plot} one function against another, then you can make each
coordinate a function of an independent variable. All functions can be converted,
trivially, to this form:
\begin{code}
vardef f(expr x) = x enddef;
vardef g(expr x) = sind(x) enddef; % or whatever function ...
-path ff; ff = for t = mint step s until maxt - s:
- (f(t), g(t)) ..
+path ff; ff = for t = mint step s until maxt - s:
+ (f(t), g(t)) ..
endfor (f(maxt), g(maxt));
\end{code}
-But you can make more complicated curves, for example curves
+But you can make more complicated curves, for example curves
that can have more than one value for $y$ for a given $x$, if you change $f(x)$ and
$g(x)$ appropriately.
The first example\mwpic{-24pt}{func-lemniscate} shows the lemniscate of Bernoulli
and was drawn like this:
-\begin{smallcode}
-numeric a, c; c = 128; a = sqrt(2) * c;
-vardef f(expr x) = a * cosd(x) / (1 + sind(x) ** 2) enddef;
-vardef g(expr x) = f(x) * sind(x) enddef;
-numeric mint, maxt, s; mint = 0; s = 30; maxt = 360;
-path p;
-p = for t = mint step s until maxt - s:
- (f(t), g(t)) ...
-endfor cycle;
-draw p withcolor 3/4 blue;
-path xx, yy;
-xx = (left -- right) scaled 200;
-yy = (down -- up) scaled 64;
-drawarrow xx; label.rt("$x$", point 1 of xx);
-drawarrow yy; label.top("$y$", point 1 of yy);
-dotlabel.bot("$F_1$", c * left);
-dotlabel.bot("$F_2$", c * right);
-\end{smallcode}
+\smallmpexternal[firstline=6,lastline=21]{func-lemniscate.mp}
+\noindent
Although sometimes, especially when you know the domain is 0° to 360° and that the
path is cyclic, it is simpler to write the two expressions directly in the
loop:\mwpic{-108pt}{func-parametric}
-\begin{smallcode}
-path p;
-p = for t = 0 upto 360: (144 cosd(3t), 89 sind(2t)) ... endfor cycle;
-draw p withcolor 2/3 red;
-\end{smallcode}
+\smallmpexternal[firstline=12,lastline=14]{func-parametric.mp}
+\noindent
which produces this Lissajous curve $\longrightarrow$
\newpage
-\subsubsection{Parametric plots with polar coordinates: Maurer roses}
+
+\subsection*{Parametric plots with polar coordinates: Maurer roses}
\textsc{Instead of} defining separate functions for the $x$ and $y$ coordinates in a
parametric plot, it is sometimes convenient to use \MP’s polar coordinate notation (discussed in
@@ -6270,41 +4963,25 @@ parametric plot, it is sometimes convenient to use \MP’s polar coordinate nota
do in this way. Here is a Maurer rose, based on $r=\cos(2\theta)$ and connecting
every 29th point on the curve.\mpic{-24pt}{func-maurer-rose}
-\begin{code}
- numeric n; n = 2;
- path r; r = (for t=0 upto 360:
- cosd(n * t) * dir t ...
- endfor cycle) scaled 150;
-
- numeric d; d = 29;
- path k; k = for t = 0 upto 360:
- point d * t mod 360 of r --
- endfor cycle;
-
- draw k dashed withdots scaled 1/8
- withpen pencircle scaled 1/4
- withcolor 1/2[blue, white];
-
- draw r withcolor 2/3 red;
-
- path xx, yy; % you might not need the axes...
- xx = (left -- right) scaled 160;
- yy = (down -- up) scaled 160;
- drawarrow xx; label.rt("$x$", point 1 of xx);
- drawarrow yy; label.top("$y$", point 1 of yy);
-\end{code}
-Different values of $n$ and $d$ give an endless variety of patterns. But note that if
-your choice of $d$ exceeds $2^{15}/360 \simeq 91$ you will need to use
-"-numbersystem=double" to avoid arithmetic overflow.
+\mpexternal[firstline=6,lastline=23]{func-maurer-rose.mp}
+
+\noindent
+Different values of the parameters in $r$ and $k$ give an endless variety of patterns. But note that if
+you put anything higher than \mpl{point 91t of r} in $k$, you will need to use
+"-numbersystem=double" to avoid arithmetic overflow (because $360\times92 > 32768$).
+You get prettier curves if the parameter in $k$ is a prime number.
\newpage
\section{Drawing plane curves}
-{\textsc{“Plane curves offer} a rich \dots\ field of study which may be approached
+\moveright72pt\vbox{\begingroup\hsize4in
+\raggedleft\fontsize{8}{10}\selectfont\textsf{%
+Plane curves offer a rich \dots\ field of study which may be approached
from a quite elementary level. Anyone who can draw a circle with a given centre and
a given radius can draw a cardioid or a limaçon. Anyone who can use a set square
-can draw a parabola or a strophoid†\hfill — \textsl{A Book of Curves}, E.\@ H.\@
-Lockwood\parfillskip0pt\par}
+can draw a parabola or a strophoid \hfill — \textsl{A Book of Curves}, E.\@ H.\@
+Lockwood\parfillskip0pt
+}\par\endgroup}
\subsection{Parabola}
@@ -6312,71 +4989,28 @@ Lockwood\parfillskip0pt\par}
\le 1$ and then transform as required (see next page), but it can be illuminating to follow more
traditional constructions, such as that shown on the
right.\mwpic{-180pt}{curves-parabola}
-\vadjust{\moveright7.2in\vbox to 0pt{\hsize 200pt\noindent
+\vadjust{\moveright7.2in\vbox to 0pt{\vskip48pt\hsize 200pt\noindent
The idea here is that you put the right angle of your set square on the vertical
-axis with the short side touching $S$, and then draw the long side. If you do this
+axis with the short side touching $S$, and then draw the long side. If you do this
in enough places, the edges form a parabola. In the \MP\ code here, the intersection
of each ray with the one before is captured as variable $t$ and then added one at a
time to the \<path> \id{parabola}, (using a neat trick at the beginning).
\vss}}
-\begin{smallcode}[xleftmargin=0pt]
-pair A, S; A = origin; S = 66 right;
-path parabola, last;
-for q = -144 step 8 until 144:
- pair Q; Q = (0, q);
- path ray;
- ray = (origin -- unitvector(S - Q)) scaled 300
- rotated if q < 0: - fi 90 shifted Q;
- draw S -- ray withcolor 7/8;
- if known last:
- pair t;
- t = whatever[point 0 of ray, point 1 of ray]
- = whatever[point 0 of last, point 1 of last];
- parabola := if known parabola: parabola .. fi t;
- fi
- last := ray;
-endfor
-
-draw parabola withcolor 3/4[red, white];
-for t=0 upto length parabola:
- draw point t of parabola withpen pencircle scaled 3/2 withcolor red;
-endfor
-draw (up--down) scaled 300;
-
-dotlabel.lft("$A$", A);
-dotlabel.rt("$S$", S);
-\end{smallcode}
+\mpexternal[firstline=6,lastline=26,xleftmargin=0pt,xrightmargin=-36pt]{curves-parabola.mp}
\newpage
-\subsubsection{Parabola from directrix and focus}
+\subsubsection*{Parabola from directrix and focus}
-\textsc{The classical definition} of the parabola is the locus of points that are
+\textsc{The classical definition} of the parabola is the locus of points that are
equidistant from a given line (the \textit{directrix}, shown as $A\to B$ on the
right) to a given focus point (shown as $S$).\mpic{-24pt}{curves-parabola-directrix}
-Each point on the parabola path is related to each point, and you can construct an
+Each point on the parabola path is related to each point on the directrix, and you can construct an
equilateral parallelogram at each point as shown. This leads to a macro that
generates a parabola given two \<pair> variables to define the directrix and another
to define the focus:
-\begin{code}
-vardef parabola(expr A, B, S) =
- save m, q, n, parabola;
- pair n; % n = nearest point to S on A--B
- n = whatever[A, B]; n - S = whatever * (A-B) rotated 90;
- path parabola;
- for t=0 step 1/64 until 1:
- pair m, q;
- m = 1/2[S, t[A, B]];
- q = whatever[S, n];
- q - m = whatever * (S - m) rotated 90;
- parabola := if known parabola: parabola -- fi
- q reflectedabout(S, m);
- endfor
- parabola
-enddef;
-
-\end{code}
+\mpexternal[firstline=17,lastline=31]{curves-parabola-directrix.mp}
-\subsubsection{Parabola from $y=x^2$ and $dy/dx=2x$}
+\subsubsection*{Parabola from $y=x^2$ and $dy/dx=2x$}
Alternatively you could define a “unit parabola†like this:
\begin{code}
@@ -6400,8 +5034,8 @@ the lines from the centre of the circle $O$ through the tangent points from the
$S$. When the ratio of $OS/OA = \sqrt2$, the asymptotes are at right angles.
You can also draw the hyperbola as the function $y=1/x$ (as shown in
-§\ref{sec:pathpieces}), which can be transformed to any desired shape.
-The untransformed function is shown on the bottom left, with the focus $S$
+§\ref{sec:pathpieces}), which can be transformed to any desired shape.
+The untransformed function is shown on the bottom left, with the focus $S$
at the point $(\sqrt2, \sqrt2)$. If the desired angle between the asymptotes is
$2\alpha$, the transformation can be created like this:
\begin{code}
@@ -6421,52 +5055,45 @@ $$\includegraphics[width=0.9\textwidth]{curves-hyperbola-function}$$
path by a different amount in each direction. By convention, the $y$-axis is the
minor axis of an ellipse.\mwpic{-24pt}{curves-ellipse}
The ellipse shown on the right, was defined like this:
-\begin{code}
-path ellipse;
-ellipse = fullcircle scaled 320 yscaled 5/8 rotated 13;
-\end{code}
+\mpexternal[firstline=10,lastline=11]{curves-ellipse.mp}
+\noindent
Then the lengths of the semi-major axes, $a$ and $b$, were extracted like this:
-\begin{code}
-numeric a, b;
-2a = abs (point 4 of ellipse - point 0 of ellipse);
-2b = abs (point 6 of ellipse - point 2 of ellipse);
-\end{code}
+\mpexternal[firstline=13,lastline=15]{curves-ellipse.mp}
+\noindent
If you already had $a$ and $b$, then you could use them directly to scale your
ellipse; the following snippet would produce the same elliptical path:
\begin{code}
-numeric a, b; a = 160; b = 100; path ellipse;
-ellipse = fullcircle xscaled 2a yscaled 2b rotated 13;
+numeric a, b; a = 160; b = 100; path ellipse;
+ellipse = fullcircle xscaled 2a yscaled 2b rotated 13;
\end{code}
-
-\bigskip\noindent
The “eccentricityâ€, $e$, of the ellipse is the ratio between the distance from the centre
to each focus and the semi-major axis, $a$. By definition, the distance from $F_1$
to $T$ to $F_2$ is constant as $T$ moves round the ellipse and is equal to $2a$.
Hence when $T$ lies on the minor axis, you have $TF_1=a$, and so $a^2 = b^2 +
a^2e^2$, and $e^2=1-b^2/a^2$:
-\begin{code}
-numeric e; e = 1 +-+ b/a; % the Pythagorean difference operator
-\end{code}
+\mpexternal[firstline=17,lastline=17]{curves-ellipse.mp}
+\noindent
The focus points can then be found like this:
-\begin{code}
-z0 = 1/2[point 0 of ellipse, point 4 of ellipse];
-z1 = e[z0, point 0 of ellipse];
-z2 = e[z0, point 4 of ellipse];
-\end{code}
+\mpexternal[firstline=19,lastline=21]{curves-ellipse.mp}
+\noindent
+Note that in the example above the ellipse is centred at the origin, because
+the \mpl{fullcircle} path was only scaled and rotated, not shifted. But the method
+shown will find the centre of any ellipse no matter where you have placed it.
+
\vfill
-\moveright 384pt\vbox to 0pt{\vss
-The tangent and the normal at $T$ were added like this:
-\begin{code}
-numeric t; t = 1.732;
-draw (left--right) scaled 21
- rotated angle direction t of ellipse
- shifted point t of ellipse;
-draw (1/2 down--up) scaled 21
- rotated angle direction t of ellipse
- shifted point t of ellipse;
-\end{code}}
+
+\noindent
+\hey If you already have the two focus points, then the distance between them will be
+$2ae$, so if you also have $a$ or $e$ you can calculate $b$ and hence draw your
+ellipse appropriately scaled, rotated, and shifted.
+
+\moveright 5.5in\vbox to 0pt{\vss\noindent
+The tangent and the normal at $T$ above were added like this:
+\mpexternal[firstline=39,lastline=46]{curves-ellipse.mp}
+}
+
\newpage
-\subsubsection{Tangent from external point to ellipse}
+\subsection*{Tangent from external point to ellipse}
$$\includegraphics[width=\textwidth]{curves-ellipse-tangents}$$
To find the tangent points from an external point $A$ to an ellipse, the classical
@@ -6475,78 +5102,30 @@ second arc centred at the other focus with radius $2a$. The intersection points
$P$ and $Q$, of these two arcs are the images of the first focus point in the
required tangents (because $F_2TF_1=2a$ by definition, and $F_2P=2a$ by
construction), and so the tangent points $T$ and $T'$ are the intersections of
-$F_2P$ and $F_2Q$ with the ellipse.
+$F_2P$ and $F_2Q$ with the ellipse.
-\vfill\noindent
There is no such direct construction for the nearest point on an ellipse to a given
point, but you can use the macro \id{solve} to find it numerically. The blue arrow
shows the shortest distance from $A$ to the ellipse.
-\vadjust{\moveright 384pt\vbox to 0pt{\vss
-\begin{smallcode}
-secondarydef a through b =
- begingroup; save d; numeric d; d = abs(a-b);
- (1+12/d)[b,a]--(1+12/d)[a,b] endgroup
-enddef;
-path ellipse; ellipse = fullcircle scaled 300 yscaled 5/8 rotated 13;
-z0 = 1/2[point 4 of ellipse, point 0 of ellipse];
-numeric a, b, e;
-2a = abs (point 4 of ellipse - point 0 of ellipse);
-2b = abs (point 6 of ellipse - point 2 of ellipse);
-e = 1 +-+ b/a;
-z1 = e[z0, point 0 of ellipse];
-z2 = e[z0, point 4 of ellipse];
-z3 = 240 dir 25;
-path pp, qq;
-pp = fullcircle scaled 2 abs (z1 - z3) shifted z3;
-qq = fullcircle scaled 4a shifted z2;
-z4 = pp intersectionpoint qq;
-z5 = reverse pp intersectionpoint qq;
-numeric t, u;
-(t, whatever) = ellipse intersectiontimes (z2 -- z4);
-(u, whatever) = ellipse intersectiontimes (z2 -- z5);
-vardef f(expr x) =
- angle (z3 - point x of ellipse) + 90 > angle direction x of ellipse
-enddef;
-drawarrow z3 -- point solve f(0, t) of ellipse withcolor 2/3 blue;
-drawoptions(dashed evenly withcolor 7/8);
-draw point 0 of ellipse through point 4 of ellipse;
-draw point 2 of ellipse through point 6 of ellipse;
-drawoptions(withcolor 3/4);
-draw z4 -- z1 -- z5;
-draw z2 -- z4 -- z3 -- z5 -- cycle;
-draw point t of ellipse -- z1 -- point u of ellipse;
-drawoptions();
-draw point t of ellipse -- z3 -- point u of ellipse withcolor 2/3 red;
-dotlabel.llft("$F_1$", z1); dotlabel.llft("$F_2$", z2);
-dotlabel.urt("$A$", z3);
-dotlabel.ulft("$P$", z4); dotlabel.lrt ("$Q$", z5);
-dotlabel.ulft("$T$", point t of ellipse);
-dotlabel.lrt("$T'$", point u of ellipse);
-draw ellipse;
-picture P; P = currentpicture; currentpicture := nullpicture;
-draw pp dashed withdots scaled 1/2;
-draw qq dashed withdots scaled 1/2;
-bboxmargin := 24; clip currentpicture to bbox P; draw P;
-\end{smallcode}
-\vskip -48pt}}
+\vadjust{\moveright 382pt\vbox to 0pt{\vss
+\mpexternal[firstline=7,lastline=44,xleftmargin=0pt,xrightmargin=-36pt]{curves-ellipse-tangents.mp}
+\vskip -36pt}}
\newpage
\subsection{Cardioid}
-\textsc{To draw a cardioid by hand}, you can draw a base circle, mark a fixed point $A$ on it, and
-then draw a circle centred at any point $Q$ on the circle that passes through point
-$A$. If you then repeat this for many different positions of Q, the cardioid is the
-curve that encloses all the circles.\mpic{-24pt}{curves-cardioid-simple}
+\textsc{To draw a cardioid by hand}, you can draw a base circle, mark a fixed point
+$A$ on it, and then draw a circle centred at any point $Q$ on the circle that passes
+through point $A$. If you then repeat this for many different positions of Q, the
+cardioid is the curve that encloses all the circles.\mpic{-24pt}{curves-cardioid-simple}
But for \MP, you want only a single point $P$ from the circumference of each circle;
-this turns out to be the image of $A$ reflected in the tangent at each point $Q$, like so:
+this turns out to be the image of $A$ reflected in the tangent at each point $Q$,
+like so:
$$\includegraphics[width=0.7\textwidth]{curves-cardioid-construction}$$
\vskip -84pt\noindent
-With a small step size $s$ and a base circle \id{base}, this suggests: \begin{smallcode}
-pair A; A = point 0 of base;
-path cardioid; cardioid = for t = 0 step s until length base:
- A reflectedabout(precontrol t of base, postcontrol t of base) ..
-endfor cycle;
-\end{smallcode}
+With a small step size $s$ and a rotated circle \id{base}, this suggests:
+\smallmpexternal[firstline=13,lastline=16]{curves-cardioid-construction.mp}
+\noindent
You can also show that $AP=2a(1+\cos\theta)$, where $a$ is the radius of the
base circle and $\theta$ is the angle that $AP$ makes with the diameter through
$A$, so you might use:
@@ -6557,7 +5136,7 @@ cardioid = for t=0 upto 360: 2a * (1+cosd(t)) * dir t .. endfor cycle;
\newpage
\subsection{Limaçon}
-\textsc{The limaçon can be seen} as a generalization of the cardioid, obtained by
+\textsc{The limaçon can be seen} as a generalization of the cardioid, obtained by
moving point $A$ off the base circle.
\vadjust{\moveright356pt\vbox to 0pt{\vskip -20pt\noindent
\rlap{\includegraphics[scale=0.833]{curves-limacon-simple}}\vss}}
@@ -6565,15 +5144,10 @@ Here $A$ has been moved to the left, but each $P$ on the curve is still $A$
reflected in the tangent at each $Q$. The “hole†gets larger as $A$ moves away from
the \id{base} circle; when $A$ touches the \id{base} the hole disappears and the
curve becomes the cardioid, as before.
-
Following this ruler-and-compasses approach, the red limaçon path in the figure here
was generated from the \id{base} circle shown in blue.
-\begin{smallcode}
-pair A; A = 2[center base, point 0 of base];
-path limacon; limacon = for t = 0 step s until length base:
- A reflectedabout(precontrol t of base, postcontrol t of base) ..
-endfor cycle;
-\end{smallcode}
+\smallmpexternal[firstline=12,lastline=15]{curves-limacon-simple.mp}
+\noindent
Or if you prefer a more trigonometrical approach:
\begin{smallcode}
limacon = for t=0 upto 359: 2a*(1+2cosd(t))*dir t .. endfor cycle;
@@ -6583,12 +5157,12 @@ Here $2a$ is the diameter of the blue \id{base} circle. Note that if you use
\vfill
\noindent
-An alternative approach (due to Albrecht Dürer) is shown below. In this dia-
+\textsc{An alternative approach} (due to Albrecht Dürer) is shown below. In this
\par\kern 2pt
-\vbox{\halign{#&\quad\vbox{\hsize=2.4in\noindent #}\cr
+\vbox{\halign{#&\kern 1em\vbox{\hsize=18em\noindent #}\cr
$$\includegraphics{curves-limacon-durer}$$
-&gram the base circle is divided into 12 parts like a
-clock face. At 1 o’clock, you draw a line segment of a given
+&diagram, the base circle is divided into 12 parts like a
+clock face. At 1 o’clock, you draw a line segment of a given
length parallel to the radius to 2 o’clock; at 2 you draw the same length
segment parallel to 4 o’clock, and so on. The limaçon is the curve through
the far ends of each segment (plus any intermediate points required).
@@ -6613,46 +5187,33 @@ part and $y$ part of each point $T$ round the base circle.
$$\includegraphics[scale=0.8]{curves-astroid-construction}$$
Then the point $P$ on $A \to B$ that is closest to $T$ will lie on the astroid, so you
can make the path with:
-\begin{smallcode}
-path astroid; astroid = for t=0 step 1/16 until 8:
- hide(pair a, b, p;
- a = (xpart point t of base, 0); b = (0, ypart point t of base);
- p = whatever[a, b]; p-point t of base = whatever * (a-b) rotated 90;
- ) p -- endfor cycle;
-\end{smallcode}
+\smallmpexternal[firstline=8,lastline=12,xleftmargin=0pt]{curves-astroid.mp}
+\noindent
Note that you need to use “\mpl{--}†so that the cusps stay neatly
pointed.\marginpar{\vskip-38pt\small\noindent
-\llap{\hey\,}The geometry of the subtended angles shows that the length of the arc
+\hey The geometry of the subtended angles shows that the length of the arc
$T\to S$ equals the length of the arc from $T\to P$ on the quarter-sized circle
through $T$ and $M$. So the astroid is also the path of a point on the smaller
circle rolling around the inside of the base circle.}
\newpage
-\subsubsection{Astroid and cousins}
+\subsubsection*{Astroid and cousins}
The geometry of the astroid also allows us to define a simple parametric equation
for the point $P$.
$$\includegraphics[scale=0.8]{curves-astroid-construction}$$
If the distance $OT = a$, then $OA = BT = a\cos\theta$.
-But then $BP = BT\,\cos\theta = a\cos^2\theta$, and the
+But then $BP = BT\,\cos\theta = a\cos^2\theta$, and the
$x$-coordinate of $P = BP\,\cos\theta=a\cos^3\theta$. By a similar
-argument the $y$-coordinate is $a\sin^3\theta$, so the parametric
+argument the $y$-coordinate is $a\sin^3\theta$, so the parametric
equations for $P = (x, y)$:
$$\centerline{$x=a\cos^3\theta$ \quad and \quad $y=a\sin^3\theta$}$$
This is used to make this rather psychedelic family of astroid cousins $\longrightarrow$
\moveright384pt\vbox to 36pt{\vss
-$$\includegraphics[scale=0.9]{curves-astroid-family}$$
-\begin{smallcode}
-numeric a; a = 144; input colorbrewer-rgb
-for n=1 upto 7:
- path p; p = a * right for t=6 step 6 until 90:
- .. a * (cosd(t) ** n, sind(t) ** n)
- endfor;
- p := for i=0 upto 3: p rotated 90i & endfor cycle;
- fill p withcolor Oranges[9][n]; draw p;
-endfor
-\end{smallcode}}
+$$\includegraphics[scale=0.95]{curves-astroid-family}$$
+\mpexternal[firstline=7,lastline=14]{curves-astroid-family.mp}
+}
\newpage
@@ -6662,102 +5223,47 @@ endfor
rolling wheel. In the first diagram the cycloid is drawn in red and the
corresponding rolling wheel in blue. The main idea in this diagram is to make the
whole drawing depend on just a few parameters; here there are two: the radius $r$
-and the amount of rotation $θ$. If we make $r$ bigger, the drawing will be
-scaled up; if we change $θ$, the wheel will appear to have rolled along.
-\mpic{-66pt}{cycloids}
-
+and the amount of rotation $\theta$. If we make $r$ bigger, the drawing will be
+scaled up; if we change $\theta$, the wheel will appear to have rolled along.
+$$\includegraphics[width=0.9\textwidth]{curves-cycloids}$$
-\marginpar{\par\kern1in
\begin{itemize}
- \item Near the beginning we define $\pi=3.14159265$, as there’s no such constant
- built in, but it makes the source more understandable to write "pi/180"
- instead of "0.017453". It would be nice to use the Greek letters themselves
- in the source, but \MP\ only lets you use plain ASCII characters, to you
- have to write "pi" instead. Later on "t" is used instead of $\theta$.
-
- \item The path of the cycloid $c$ is defined using an inline "for" loop. There’s a
- slight awkwardness to doing this as you have to repeat yourself either at
- the beginning or the end, because you can’t have a dangling "--" or ".." at
- the end of the path. With a closed path it’s easier because you can just
- put "--cycle" after the "endfor". The strange numbers here are because
- we are going from a rotation of $-100°$ to $+460°$; $360°$ corresponds to
- one hop of the cycloid.
+
+ \item The path of the cycloid is defined using an inline "for" loop, using a
+ neat trick to avoid a leading "--" in the path. The strange numbers here
+ are because we are going from a rotation of $-80°$ to $+440°$; $360°$
+ corresponds to one hop of the cycloid.
\item The axes are done in the usual way, except that we use "xpart" and the
"point .. of .." notation to make the $x$-axis neatly line up with the ends
of the cycloid path.
- \item To label points with dots but no text it’s convenient just to fill a
- circle scaled to "dotlabeldiam"; this internal parameter is the current size
- to be used for the dots in "dotlabel".
-
-\end{itemize}}
-
-\mpexternal[xleftmargin=0pt]{cycloids-code.mp}
-
-\noindent
-You can generalize the picture to make cycloids where the point tracing the
-cycloid is not on the circumference doing the rolling; the classic example is the
-wheel of the train with a flange. Here I have added $R$ to define the radius of an
-outer rim, while the wheel still rolls along a circle of radius $r$.
-\mpic{-40pt}{cycloids-extra}
-You might like to experiment with making $R<r$. Note also that variable names are
-case sensitive in \MP.
+ \item To label points with dots but no text it’s convenient just to draw
+ the point with \mpl{pencircle scaled dotlabeldiam};
+ this internal parameter is the current size
+ to be used for the dots in \mpl{dotlabel}.
-\mpexternal[xleftmargin=0pt]{cycloids-extra-code.mp}
+\end{itemize}
-\noindent The output\mpic{-122pt}{cycloids-extra} is repeated at the right to save you flicking pages.
+\moveright 384pt\vbox to 0pt{\hsize 320pt\vss
+\smallmpexternal[firstline=5,lastline=46,xleftmargin=-10pt]{curves-cycloids.mp}
+\vskip -64pt}
\newpage
-\subsubsection{The cycloid compared to other curves}
+\subsubsection*{The cycloid compared to other curves}
\noindent\textsc{You can't easily} draw a cycloid through two arbitrary points, but
-if you get the size of the generating circle right, you can make it pass through
-points at each end of a quarter circle, and then it's easy to draw other curves
-between the two points. \vadjust{\moveright5.25in\vbox to 0pt{\vskip-48pt\begin{smallcode}
-numeric r; r = 164;
-path Y, L, C, P, S;
-
-Y = origin for t=5 step 5 until 140:
- -- (0, r) rotated t shifted (t/57.29577951308232*r, -r)
-endfor cutafter (origin -- (4r, 0) rotated -45);
-
-z0 = point 0 of Y;
-z1 = point infinity of Y;
-
-L = z0 -- z1;
-C = quartercircle rotated 180 scaled 2x1 shifted (x1, y0);
-% The idea here is to use the derivative as the direction at each point.
-% If you treat A as x=-1, and B as x=0 and used x=-1/2 in the middle,
-% then three points are enough to make the curves look realistic.
-% parabola f = x^2, f' = 2x
-P = z0{1,-2}
- ... (xpart 1/2[z1, z0], ypart 1/4[z1, z0]){1,-1} ... z1 {1, 0};
-% sixth degree f = x^6, f' = 6x^5
-S = z0{1,-6}
- ... (xpart 1/2[z1, z0], ypart 1/64[z1, z0]){1, -6/32} ... z1 {1, 0};
-
-draw z0 -- (x0,y1) -- z1 withcolor 3/4;
-
-drawoptions(withcolor 2/3 red);
- draw L; dotlabel.urt("Line", point 1/4 of L);
-drawoptions(withcolor 1/2 green);
- draw C; dotlabel.urt("Circle", point 1 of C);
-drawoptions(withcolor 1/4[red, green]);
- draw P; dotlabel.urt("Parabola", point 1/2 of P);
-drawoptions(withcolor 3/4[red, green]);
- draw S; dotlabel.llft("Sixth degree", point 3/4 of S);
-drawoptions(withcolor 1/2 blue);
- draw Y; dotlabel.urt("Cycloid", point 22 of Y);
-drawoptions();
-dotlabel.ulft(btex $A$ etex, z0);
-dotlabel.urt(btex $B$ etex, z1);
-\end{smallcode}\vss}}
-Here is an example with an inverted cycloid, the
-so-called \textit{brachistochrone} (the curve joining two points such that a body
-travelling along it under gravity takes a shorter time than is possible along any
-other curve between the points).
-$$\includegraphics{brachisto}$$
+taking the equations for $x$ and $y$ from the previous page, we can use \mpl{solve}
+to find a value $a$ for $\theta>0$ where $\theta-\sin\theta=1-\cos\theta$, and then
+you have two points for $\theta=0$ and $\theta=a$ which are
+at each end of a quarter circle, and it's easy to draw other curves
+through them.\vadjust{\moveright5.25in\vbox to 0pt{\vskip-48pt
+\smallmpexternal[firstline=6,lastline=42]{curves-brachisto.mp}
+\vss}}
+The cycloid is drawn here inverted, to make the \textit{brachistochrone} (the curve
+joining two points such that a body travelling along it under gravity takes a
+shorter time than is possible along any other curve between the points).
+$$\includegraphics{curves-brachisto}$$
\newpage
\subsection{Spirals}
@@ -6770,7 +5276,7 @@ mathematical terms the radius of the spiral is proportional to the angle turned,
$r=a\theta$.\mpic{-36pt}{curves-spiral-archimedes}
This is very simple to program in \MP.
\begin{code}
-numeric a; a = 1/8; path S;
+numeric a; a = 1/8; path S;
S = origin for t=1 upto 360: .. a * t * dir t endfor;
\end{code}
except that you are unlikely to need one point for every degree of turn in your spiral, so you are
@@ -6783,112 +5289,51 @@ which spreads the points out and gives you eight full turns, or perhaps
S = origin for t=1 upto 90: .. 1/12 t * dir 16t endfor;
\end{code}
which would give you four complete turns with a tighter spacing.\marginpar{\small
-The rope was drawn (very slowly) with the \mpl{rope} macro from §\ref{pics-border}.}
+The rope was drawn (quite slowly) with the \mpl{rope} macro from §\ref{pics-border}.}
-\bigskip\noindent
-The next simplest is the logarithmic spiral where you have
-$r=a^\theta$.\mwpic{10pt}{curves-spiral-equiangular} This is also very simple to
-program in \MP, provided you are careful about the scaling. The complete program
-for the spiral shown on the right was:
-\begin{code}
-numeric a; a = 2.6; path S;
-S = right for t=1 upto 360: .. a ** (t/64) * dir 4t endfor;
-drawarrow S;
-\end{code}
+\vfill\noindent
+\textsc{The next simplest} is the logarithmic spiral where you have
+$r=a^\theta$.\mwpic{-72pt}{curves-spiral-equiangular} This is also very simple to
+program in \MP, provided you are careful about the scaling.
+For the spiral shown on the right, the complete program was:
+\mpexternal[firstline=7,lastline=9,xleftmargin=0pt]{curves-spiral-equiangular.mp}
+\noindent
Note that $a$ was carefully chosen to get a curve that would fit the page, and that
$t$ has been divided by 64 to bring it into a suitable range to work with the
-default number system.
+default number system.
\newpage
-\subsubsection{Logarithmic spiral and the golden rectangle}
+\subsubsection*{Logarithmic spiral and the golden rectangle}
-\textsc{The logarithmic spiral} is connected to growth in nature. If you start with
-a small square and keep adding squares scaled to the longer side of the resulting
+\textsc{The logarithmic spiral} is connected to growth in nature. If you start with
+a small square and keep adding squares scaled to the longer side of the resulting
rectangle, you get the golden rectangle and the logarithmic spiral emerges from
it.\mpic{-48pt}{curves-spiral-gnomon-sq}
-\begin{code}[xleftmargin=0pt, xrightmargin=-20pt]
-drawoptions(withpen pencircle scaled 1/4 withcolor 1/4);
-path s[]; s0 = unitsquare;
-fill s0 withcolor 1/2[2/3 blue, white]; draw s0;
-numeric a, b, t, n; a = 1; b = 1; n = 11;
-for i = 1 upto n:
- t := b; b := b + a; a := t; % Fibonacci sequence
- s[i] = unitsquare scaled a;
- s[i] := s[i] shifted (point i of s[i-1] - point i-1 of s[i]);
- fill s[i] withcolor (1/2 + i/32)[2/3 blue, white];
- draw s[i];
-endfor
-% cross hairs
-for i = n-1 upto n:
- draw point i-2 of s[i-2] -- point i of s[i];
-endfor
-drawoptions();
-% Draw the spiral as a red arrow
-drawarrow origin for i=0 upto n: .. point i of s[i] endfor
- withcolor 2/3 red;
-% Show the Fibonacci sizes for the bigger boxes
-for i = 5 upto n:
- label(TEX(decimal arclength subpath (0, 1) of s[i])
- scaled 0.8 rotated angle point n of s[n], center s[i]);
-endfor
-% Rotate whole picture to show off the spiral
-currentpicture := currentpicture rotated - angle point n of s[n];
-\end{code}
+\mpexternal[firstline=6,lastline=33,xleftmargin=0pt]{curves-spiral-gnomon-sq.mp}
\moveright 396pt \vbox to 0pt{\vss\hsize 4in\small
\noindent\llap{• }You can't assign to a pair literal in \MP, so you cannot write
\mpl{(a,b) := (b,a+b)}; use a temporary numeric instead.
\noindent\llap{• }The uses of \mpl{point} with the square paths \mpl{s[]}
-exploit the fact the the \mpl{unitsquare} path is cyclic, so point 4 is the same
+exploit the fact the the \mpl{unitsquare} path is cyclic, so point 4 is the same
as point 0, and so on.
-\noindent\llap{• }Note also the rotation of the labels, so that they are horizontal
+\noindent\llap{• }Note also the rotation of the labels, so that they are horizontal
when the whole picture is rotated at the end to show the spiral better.
\par}
-
\newpage
-\subsubsection{Logarithmic spiral and similar triangles}
+\subsubsection*{Logarithmic spiral and similar triangles}
-\textsc{This drawing} starts with a large triangle and transforms it to make
+\textsc{This drawing} starts with a large triangle and transforms it to make
smaller similar copies. The spiral is drawn through the apex of successive
transformed triangles.\mpic{0pt}{curves-spiral-gnomon-trig}
-\begin{code}[xleftmargin=0pt, xrightmargin=-80pt]
-path t[], base; pair apex;
-base = (left--right) scaled 100;
-apex = whatever * dir +72 shifted point 0 of base
- = whatever * dir -72 shifted point 1 of base;
-t0 = (base -- apex -- cycle);
-
-transform S;
-r = arclength subpath (0, 1) of t0 / arclength subpath (2, 3) of t0;
-point 0 of t0 transformed S = (r*r)[point 0 of t0, point 2 of t0];
-point 1 of t0 transformed S = point 0 of t0;
-point 2 of t0 transformed S = point 1 of t0;
-
-n = 16;
-for i=1 upto n:
- t[i] = t[i-1] transformed S;
- draw subpath (2,3) of t[i] withpen pencircle scaled 1/4;
-endfor
-
-drawoptions(withpen pencircle scaled 1/8 withcolor blue);
-draw point 0 of t0 -- point 3/2 of t0;
-draw point 0 of t1 -- point 3/2 of t1;
-drawoptions();
-draw t0;
-drawarrow point 2 of t[n] for i=n-1 downto 0:
- .. point 2 of t[i] endfor withcolor 2/3 red;
-
-z0 = whatever[point 0 of t0, point 3/2 of t0]
- = whatever[point 0 of t1, point 3/2 of t1];
-currentpicture := currentpicture rotated - angle (point 2 of t0 - z0);
-\end{code}
+\mpexternal[firstline=6,lastline=36,xleftmargin=0pt, xrightmargin=-80pt]{curves-spiral-gnomon-trig.mp}
\moveright 396pt \vbox to 0pt{\vss\hsize 4in\small
-\noindent The \<transform> $S$ is defined implicitly. It is sufficient
-to give equations for three non-collinear points, and \MP\ will work out
-the rest. In order to do this, you need to know the ratio of $x/a$, but by
-definition $a/b=b/x$, so $x=b^2/a$, hence $x/a=(b/a)^2$. The code shown
+\noindent The \<transform> $S$ is defined implicitly. It is sufficient
+to give equations for three non-collinear points, and \MP\ will work out
+the rest. In order to do this, you need to know the ratio of $x/a$, but by
+definition $a/b=b/x$, so $x=b^2/a$, hence $x/a=(b/a)^2$. The code shown
sets $r=b/a$, and then uses $r^2$ as the required fraction along $a$.
\smallskip\noindent\hey
@@ -6901,7 +5346,7 @@ an isosceles with base angles of $72^\circ$ as shown.
\newpage
\section{Eggs}\label{eggs}
-\textsc{Drawing bird's eggs} excites a curious fascination in some people. This
+\textsc{Drawing hens' eggs} excites a curious fascination in some people. This
section shows some possible ways to make eggs with \MP. The first few
compass-and-ruler constructions are taken from Robert Dixon's
\textsl{Mathographics}. They all follow the same basic idea of constructing the
@@ -6910,135 +5355,57 @@ each egg path has 8 points starting with point 0 at “3 o’clock†like \mpl{
\subsection{Euclidean egg}
-The first is made of four circular arcs, defined here as parts of
+The first is made of four circular arcs, defined here as parts of
circles $a$, $b$, $c$, \& $d$.\mwpic{0pt}{eggs-moss}\marginpar{\par\kern 3in
\begin{itemize}
\item "eggs-common.mp" defines the colours, and the \mpl{numbered_points}
routine that is used to show the points of the "egg" path.
\item Note that it is not necessary that the parts of the arcs touch;
- in fact it is better to join them with the \mpl{..} connector in case the
+ in fact it is better to join them with the \mpl{..} connector in case the
ends are not close enough for you to use \mpl{&}.
- \item The rigmarole with saving the current picture, is to show a copy
+ \item The rigmarole with saving the current picture, is to show a copy
of the egg path with and without the construction lines.
\end{itemize}
}
-\begin{code}[xleftmargin=0pt]
-input eggs-common
-path a, b, c, d, egg; numeric r; r = 100;
-a = fullcircle scaled 2r;
-b = fullcircle scaled 4r shifted point 4 of a;
-c = fullcircle scaled 4r shifted point 0 of a;
-d = fullcircle scaled 2 abs (point 2 of a - point 1 of b)
- shifted point 2 of a;
-egg = subpath (0, 1) of b .. point 2 of d ..
- subpath (3, 4) of c .. subpath (5, 7) of a .. cycle;
-beginfig(1);
-fill egg withpen pencircle scaled 2 withcolor eggshell;
-picture P; P = currentpicture;
-drawoptions(withpen pencircle scaled 1/4 withcolor dark_eggshell);
-draw a; draw d;
-drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
-draw point 1 of egg -- point 4 of egg --
- point 0 of egg -- point 3 of egg;
-draw egg;
-drawoptions(withpen pencircle scaled 2 withcolor 7/16);
-draw center a;
-draw center d;
-draw numbered_points(egg);
-drawoptions();
-draw P shifted 240 right;
-endfig;
-\end{code}
+\mpexternal[firstline=5,lastline=29,xleftmargin=0pt]{eggs-moss.mp}
+\noindent
\newpage
\subsection{Pythagorean egg}
The centres of the arcs are determined by the 3-4-5 triangle at the
origin.\mwpic{0pt}{eggs-thom}
-\begin{code}
-numeric r, a, b, t; a = 60; 4b = 3a; r = a ++ b;
-path base, cap, egg;
-base = subpath (4, 8) of fullcircle scaled 2(2r-b);
-cap = subpath (0, 4) of fullcircle scaled 2r shifted (0, a)
- cutbefore ((b, 0) -- (b, 2r))
- cutafter ((-b, 0) -- (-b, 2r));
-egg = point 4 of base {up} .. cap .. {down} base & cycle;
-% more naturally "base {up} .. cap .. {down} cycle"
-% but then point 0 would not be at 3 o'clock
-\end{code}
+\mpexternal[firstline=8,lastline=17]{eggs-thom.mp}
+\noindent
Note that you can use $\to$ to create reasonably large circular arcs.
-The parts of the drawing for filling the egg,
+The parts of the drawing for filling the egg,
and showing the construction are similar to the first example.
\subsection{A taller Pythagorean egg}
A slightly different approach using a $\sqrt3$-$\sqrt4$-$\sqrt7$
triangle.\mwpic{20pt}{eggs-357}
-\begin{code}
-path base, cup, cap, egg;
-base = fullcircle scaled 200;
-z1 = point -2/3 of base;
-z2 = point 2/3 of base;
-z3 = point 10/3 of base;
-z4 = point 14/3 of base;
-z5 = 1/2[z2, z3];
-z6 = 1/2[z4, z1];
-numeric a, b;
-a = abs(z3 - z1) - abs(z4 - z6);
-b = abs(z3 - z1) - abs(z4 - z5);
-cup = subpath (4, 8) of fullcircle scaled 2a shifted z6;
-cap = fullcircle scaled 2b shifted z5
- cutbefore (z5 -- 2[z4, z5])
- cutafter (z5 -- 2[z1, z5]);
-egg = point 4 of cup {up} .. cap .. {down} cup & cycle;
-\end{code}
+\mpexternal[firstline=9,lastline=22]{eggs-357.mp}
\newpage
\subsection{Golden section egg}
-An alternative construction.\mwpic{-10pt}{eggs-gold}
-\begin{code}[xleftmargin=0pt]
-path base, aa, bb; pair m, n, n';
-base = fullcircle scaled 200; m = 1/2 point 0 of base;
-aa = halfcircle scaled 2 abs (point 2 of base - m)
- shifted m cutbefore (origin -- 1000 up);
-n = point infinity of aa; n' = n reflectedabout(up, down);
-bb = subpath (0, 2) of base shifted n cutafter (origin -- 1000 up);
-
-path dome, cap, cup, egg;
-dome = fullcircle
- scaled 2 (abs(n - point 0 of base) - abs(n - point 0 of bb))
- shifted point infinity of bb;
-cap = dome cutbefore (point 4 of bb -- 2[n, point 4 of bb])
- cutafter (point 4 of bb -- 2[n', point 4 of bb]);
-cup = subpath (4, 8) of base;
-egg = point 4 of cup {up} .. cap .. {down} cup & cycle;
-\end{code}
+Another alternative construction, for Callicrates.\mwpic{-10pt}{eggs-gold}
+\mpexternal[firstline=9,lastline=23,xleftmargin=0pt]{eggs-gold.mp}
\subsection{Four point egg}
-% eggs-four-point.mp
+
So far all the eggs have been drawn with semi-circular big end, but this
-can be improved.
+can be improved.
To get a smoother curve, you can use four different sized arcs with four different
-centres of rotation to make up
+centres of rotation to make up
each side of the egg.\mwpic{-36pt}{eggs-four-point}
-\begin{code}[xleftmargin=0pt]
-path egg, a, b, c, d;
-a = fullcircle scaled 80;
-b = a scaled 2 shifted point 6 of a;
-c = halfcircle
- scaled 2 (abs(point 0 of a - point 5 of b) - abs(point 0 of a));
-d = fullcircle
- scaled 2 abs(point 2 of a - point 2 of c) shifted point 2 of c;
-
-egg = point 0 of c {up} .. subpath (1,3) of d .. {down} point 4 of c
- .. subpath (5, 7) of b .. cycle;
-\end{code}
+\mpexternal[firstline=9,lastline=17,xleftmargin=0pt]{eggs-four-point.mp}
\newpage
\subsection{Five point egg}
-The next level of sophistication is to use five different arcs,
-but this is more complex and you lose the
+The next level of sophistication is to use five different arcs,
+but this is more complex and you lose the
points at exactly E, N, W, and S.\mwpic{0pt}{eggs-five-better}\marginpar{\par\vskip 3in
\noindent\hey Instead of defining and joining circular arcs, this construction defines
the points for the egg and the desired directions at each point;
@@ -7047,45 +5414,12 @@ connector. The six symmetrically-arranged rings $r_1$ to $r_6$ are used to defi
rotation $o_1$ to $o_8$ which are either points on the rings or intersections of
lines between them. Then eight directions $u_1$ to $u_8$ are defined at right
angles to lines between pairs of centre points. Finally the handy
-\mpl{directionpoint} macro is used to find the points where the relevant circle is
-moving in that direction. To make the egg, these points are joined up with $\to$
+\mpl{directionpoint} macro is used to find the points where the relevant circle is
+moving in that direction. To make the egg, these points are joined up with $\to$
constrained by the matching direction to make circular arcs.\\
\llap{$\longleftarrow$\ }{\small Like so.}
-}
-\begin{smallcode}[xleftmargin=0pt]
-numeric a; a = 56;
-path r[]; % the rings
-r1 = fullcircle scaled 2a shifted (0, -3/2 a);
-r2 = fullcircle scaled 2a shifted (0, -1/2 a);
-r3 = fullcircle scaled 2a shifted (0, +1/2 a);
-r4 = fullcircle scaled 2a shifted (0, +3/2 a);
-r5 = r2 rotatedabout(point 2 of r2, -60);
-r6 = r2 rotatedabout(point 2 of r2, +60);
-pair o[]; % the centres of rotation for each arc
-o1 = point 6 of r5;
-o2 = point 2 of r3;
-o3 = point 6 of r6;
-o4 = whatever[o3, point 2+4/3 of r2] = whatever[o2, point 2-4/3 of r1];
-o8 = whatever[o1, point 2-4/3 of r2] = whatever[o2, point 2+4/3 of r1];
-o6 = 1/2[point 2-4/3 of r1, point 2+4/3 of r1];
-o5 = whatever[o6, point 2-4/3 of r3] = whatever[o4, point 2+4/3 of r1];
-o7 = whatever[o6, point 2+4/3 of r3] = whatever[o8, point 2-4/3 of r1];
-pair u[], t[]; % directions and points for the egg path
-u0 = (o8 - o1) rotated 90; t0 = directionpoint u0 of r6;
-u1 = (o2 - o1) rotated 90; t1 = directionpoint u1 of r4;
-u2 = (o2 - o3) rotated 90; t2 = directionpoint u2 of r4;
-u3 = (o4 - o3) rotated 90; t3 = directionpoint u3 of r5;
-u4 = (o5 - o4) rotated 90;
-u5 = (o6 - o5) rotated 90;
-u6 = (o6 - o7) rotated 90;
-u7 = (o7 - o8) rotated 90;
-t4 = directionpoint u4 of fullcircle scaled 2 abs (t3 - o4) shifted o4;
-t5 = directionpoint u5 of fullcircle scaled 2 abs (t4 - o5) shifted o5;
-t6 = directionpoint u6 of fullcircle scaled 2 abs (t5 - o6) shifted o6;
-t7 = directionpoint u7 of fullcircle scaled 2 abs (t6 - o7) shifted o7;
-
-path egg; egg = for i=0 upto 7: t[i] {u[i]} .. endfor cycle;
-\end{smallcode}
+}
+\smallmpexternal[firstline=6,lastline=37,xleftmargin=0pt]{eggs-five-better.mp}
\newpage
\subsection{A superellipse egg}
@@ -7093,27 +5427,18 @@ path egg; egg = for i=0 upto 7: t[i] {u[i]} .. endfor cycle;
All this construction is a good exercise in ingenuity, but if you just want
a simple quick egg path, then the \mpl{superellipse} macro gives you a \MP-specific
option. All you need is this:\mwpic{-36pt}{eggs-super}
-\begin{code}[xleftmargin=0pt]
-path egg;
-egg = superellipse(right, 1.6 up, left, 1.2 down, 0.69);
-egg := egg scaled 100;
-\end{code}
+\mpexternal[firstline=6,lastline=8]{eggs-super.mp}
-
-\vfill \centerline{\tiny [This space intentionally left blank]}
+\vfill
+\centerline{\tiny [This space intentionally left blank]}
\vfill
\subsection{The perfect egg}
The last word in egg curve perfection is the algebraic solution provided by the TDCC
Laboratory in Japan [{\small \mpl{https://nyjp07.com/index_E.html}}].\mwpic{0pt}{eggs-perfect}
-\begin{code}
-path egg;
-egg = for t=-180 step 15 until 180 - eps:
- (0.78 cosd(1/4 t) * sind(t), -cosd(t)) ..
- endfor cycle;
-egg := egg scaled 128;
-\end{code}
+\mpexternal[firstline=9,lastline=13]{eggs-perfect.mp}
+\noindent
Note that, unlike all the others, this path has 24 points and the path starts at the
top. You can draw it starting at 3 o’clock, and with only 8 points but the egg is slightly less perfect.
Just replace the loop above with:
@@ -7127,46 +5452,14 @@ egg = for t=90, 135, 180, -135, -90, -45, 0, 45:
\subsection{Egg kitsch}
If you want eggs that look solid, then you can use \mpl{interpath}:\mpic{-24pt}{eggs-shaded}
-\begin{smallcode}[xleftmargin=0pt]
-path egg, spot;
-egg = (for t=-180 step 15 until 180 - eps:
- (0.78 cosd(1/4 t) * sind(t), -cosd(t)) ..
-endfor cycle) scaled 100;
-spot = fullcircle scaled 4 shifted 3/4 point 3 of egg;
-vardef fade_filled(expr egg, spot, dark, light, n) = image(
- for i = 0 upto n:
- fill interpath(i/n, egg, spot) withcolor ((i/n)**1/3)[dark,light];
- endfor)
-enddef;
-beginfig(1);
- color a, b;
- a = 1/256(150, 100, 60);
- b = 1/256(256, 220, 180);
- draw fade_filled(egg, spot, a, b, 256) rotated -30;
-endfig;
-\end{smallcode}
+\smallmpexternal[firstline=6,lastline=20,xleftmargin=0pt]{eggs-shaded.mp}
+\noindent
This works nicely with any of the "egg" paths defined in this section.
+
+\vfill\noindent
And finally, if all that has made you feel peckish, then how about
-these?\mwpic{12pt}{eggs-fried}
-\begin{smallcode}[xleftmargin=0pt, xrightmargin=-24pt]
-path yolk, base;
-color cooked_egg_yolk, cooked_egg_white;
-cooked_egg_yolk = 1/256(216, 136, 49);
-cooked_egg_white = 1/256(235, 237, 233);
-vardef fried_egg(expr r) =
- save base, yolk; path base, yolk;
- yolk = for i=0 upto 17: (r + 1/8 normaldeviate) * dir 20i .. endfor cycle;
- base = for i=0 upto 17: (2r + 1/8r * normaldeviate) * dir 20i .. endfor cycle;
- base := base shifted (uniformdeviate r/2, uniformdeviate r/2);
- image(
- fill base withcolor cooked_egg_white;
- fill yolk withcolor cooked_egg_yolk;
- fill subpath (6.7, 9.6) of yolk scaled 0.8 --
- subpath (9.6, 6.7) of yolk scaled 0.66 -- cycle
- withcolor 1/2[cooked_egg_yolk, white];
- ) enddef;
-for i=0 upto 1: draw fried_egg(40) shifted 120 dir 120i; endfor
-\end{smallcode}
+these?\mwpic{0pt}{eggs-fried}
+\smallmpexternal[firstline=6,lastline=20,xleftmargin=0pt,xrightmargin=-24pt]{eggs-fried.mp}
%===============================================================
\newpage
@@ -7175,17 +5468,34 @@ for i=0 upto 1: draw fried_egg(40) shifted 120 dir 120i; endfor
\textsc{Graphs and other displays} that show data, rather than a mathematical
function, are presented in this section, with a focus on illustrations for books and
technical papers. Most of the examples here follow those developed in Edward
-Tufte's \textsl{The Visual Display of Quantitative Information}.
+Tufte's books on graphics.\vadjust{\moveright5.5in\vbox to 0pt{\vskip-42pt\noindent
+\begin{itemize}
+\item \textsl{The Visual Display of Quantitative Information}
+\item \textsl{Visual Explanations}
+\item \textsl{Beautiful Evidence}
+\item \dots\ and others, at \texttt{https://edwardtufte.com}
+\end{itemize}\vss}}
-\bigskip\noindent
-Most of them have a pale manilla background, which was added using the technique
-from §\ref{backgrounds}, like this:
+\vfill\noindent
+Most of the drawings in this section have a pale manila background, which was added
+using the technique from §\ref{backgrounds}. At the beginning, the background
+colour is changed like this:
+\begin{code}
+background := (1, 1, 31/32); % change at start so "unfill" works
+\end{code}
+Then at the end of the figure, the background is applied like this:
\begin{code}
-picture p; p = currentpicture; currentpicture := nullpicture;
-bboxmargin := 12;
-fill bbox p withcolor 1/32(32, 32, 31);
-draw p;
+picture p; p = currentpicture; clearit;
+bboxmargin := 12; unfill bbox p; draw p;
\end{code}
+But there are lots of figures in this section, so this “wrapping†is actually
+applied using the begin- and end-figure “hooksâ€. If you examine the source code,
+you will see that each figure inputs a file
+called "tufte-manila-paper" which contains this:
+\mpexternal{tufte-manila-paper.mp}
+\noindent
+The \mpl{beginfig} and \mpl{endfig} macros provided by plain \MP\ automatically apply
+anything that is set in the two "extra" strings.
\newpage
\subsection{Simple time lines}
@@ -7197,130 +5507,125 @@ use of "fontspec" to get the Palatino-like font, used in E.\@ Tufte's books.
\item The data is stored as \<pair> values in a \<path> variable. This only
works if both data values are numeric. If the values are larger than 4096
you either need to scale them or use the "double" number system.
- \item Notice how the horizontal unit $u$ is set by measuring the width of a label using
+ \item Notice how the horizontal unit $u$ is set by measuring the width of a label using
the technique discussed in §\ref{textsize}. And that you have to shift the data
path left before applying the $x$-scaling to avoid overflow.
\end{itemize}
}
-\begin{texcode}[xleftmargin=0pt]
-\documentclass{standalone}
-\usepackage{luamplib}
-\usepackage{fontspec}
-\setmainfont[Numbers=OldStyle]{TeX Gyre Pagella}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-\end{texcode}\vskip -8pt
-\begin{smallcode}[xleftmargin=2pt]
-beginfig(1);
-path data, p;
-data = (1978, 18) -- (1979, 19) -- (1980, 20) -- (1981, 22)
- -- (1982, 24) -- (1983, 26) -- (1984, 27) -- (1985, 27.5);
-numeric u, v;
-u = xpart urcorner textext("1980\kern 0.75em"); v = 8;
-p = data shifted -(xpart point 0 of data, 0) xscaled u yscaled v;
-draw (xpart point 0 of p, 20) -- p -- (xpart point infinity of p, 20);
-draw (xpart point 0 of p, 0) -- (xpart point infinity of p, 0);
-for t=0 upto length p:
- numeric x, y; (x, y) = point t of p;
- undraw (x, y) withpen pencircle scaled 2 dotlabeldiam;
- draw (x, y) withpen pencircle scaled dotlabeldiam;
- label("\strut" & decimal ypart point t of data, (x, y + 8));
- draw (x, 0) -- (x, 4);
- label("\strut" & decimal xpart point t of data, (x, 12));
-endfor
-dotlabel.rt(btex \vbox to 6pt{\halign{\small #\hss\cr
-13.7 mpg, average\cr for all cars on\cr road, 1978\cr}\vss} etex,
-(xpart point 0 of p, 13.7v));
-dotlabel.lft(btex \vbox to 6pt{\halign{\small #\hss\cr
-19.5 mpg, expected\cr average for all cars\cr on road, 1985\cr}\vss} etex,
-(xpart point infinity of p, 19.5v));
-label.top(btex \vbox{\halign{\hss\textsc{#}\hss\cr
-required fuel economy standards:\cr
-new cars built from 1978 to 1985\cr}} etex,
-point 5/2 of bbox currentpicture shifted 21 up);
-endfig;
-\end{smallcode}\vskip -10pt
-\vbox to 0pt{\begin{texcode}[xleftmargin=0pt]
-\end{mplibcode}
-\end{document}
-\end{texcode}\vss}
+\enlargethispage{36pt}\vskip-12pt
+\smalltexternal[firstline=1,lastline=7,xleftmargin=0pt]{tufte-mpg.mp}
+\vskip-12pt
+\smallmpexternal[firstline=8,lastline=36,xleftmargin=0pt]{tufte-mpg.mp}
+\vskip-12pt
+\smalltexternal[firstline=37,lastline=38,xleftmargin=0pt]{tufte-mpg.mp}
\newpage
\subsection{Time line with minimal annotation}
\noindent\mpic{120pt}{tufte-budget}\marginpar{
\begin{itemize}
- \item This one has an even sparser frame, and
- uses the \mpl{ahangle} trick to make the neat
- I-beam annotation mark.
+ \item This one has an even sparser frame, and dispenses
+ with the labels on each data point.
\item It is suggested that you resist the temptation to make very many
- special macros to do charts like this; the ideas here are mainly
+ special macros to do charts like this; the ideas here are mainly
to show that \MP\ makes a good environment for following Tufte’s advice
- about charts: to maximize data ink, and minimize chart junk.
+ about charts: to maximize data ink and minimize chart junk;
+ albeit at the cost of some pains-taking.
\end{itemize}}
-\begin{smallcode}[xleftmargin=0pt]
-beginfig(1);
-path data, p;
-data = (1967, 311) -- (1968, 332) -- (1969, 372) -- (1970, 385)
- -- (1971, 385) -- (1972, 393) -- (1973, 387) -- (1974, 381)
- -- (1975, 387) -- (1976, 400) -- (1977, 380);
-numeric u, v;
-u = xpart urcorner textext("1980\kern 0.75em"); v = 1.414;
-p = data shifted -(xpart point 0 of data, 300) xscaled u yscaled v;
-draw p;
-for d = 300 step 20 until 400:
- numeric y; y = (d - 300) * v;
- label.lft("\strut\scriptsize\$\,\small" & decimal d, (-12, y));
- draw (-8, y) -- (-12, y);
- if d > 370:
- draw (xpart point 3 of p, y) -- (xpart point infinity of p + 8, y)
- dashed evenly scaled 1/4 withpen pencircle scaled 1/4;
- fi
-endfor
-path a; a = (xpart point infinity of p + 21, (380 - 300) * v)
- -- (xpart point infinity of p + 21, (400 - 300) * v);
-interim ahangle := 180;
-interim ahlength := 2;
-drawdblarrow a withpen pencircle scaled 1/4;
-label("\small 5\%", point 1/2 of a shifted 12 right);
-for t=0 upto length p:
- numeric x, y; (x, y) = point t of p;
- undraw (x, y) withpen pencircle scaled 2 dotlabeldiam;
- draw (x, y) withpen pencircle scaled dotlabeldiam;
- draw (x, -8) -- (x, -12);
- label("\strut\small" & decimal xpart point t of data, (x, -20));
-endfor
-label.urt(btex \vbox{\halign{\small #\hfill\cr
-Per capita\cr budget expenditure\cr in constant dollars\cr}} etex,
-(0, (410 - 300) * v));
-endfig;
-\end{smallcode}
+\smallmpexternal[firstline=10,lastline=44,xleftmargin=0pt,xrightmargin=-30pt]{tufte-budget.mp}
\newpage
\subsection{Time line with more complex dates}
-If the dates in your time line are more granular than years, then you need a
-better way to deal with them. This chart shows the £/€ exchange rate by month.
-$$\includegraphics[width=\textwidth]{tufte-currency}$$
-The dates on the horizontal axis where transformed from calendar dates to a
-serial number using this routine:
-\begin{code}
-vardef base(expr Y, M, d) =
- save m, y; numeric m, y;
- if M < 3: m = M + 9; y = Y - 1;
- else: m = M - 3; y = Y; fi
- 365/1024 y + (floor(y/4) - floor(y/100) + floor(y/400)
- + floor((2+3m)/5) + 30m + d - 307) / 1024
-enddef;
-\end{code}
-which allows you to add events like this:
+If the dates in your time line are more granular, then you need a
+better way to deal with them. This chart below shows the £/€ exchange rate by month.
+The dates on the horizontal axis were transformed from calendar dates to a
+serial number using the routine shown on the right,
+which allows you to do this:
\begin{code}
dotlabel.bot("Brexit vote", (base(2016, 6, 24) * u, 78 v));
\end{code}
for suitable values of $u$ and $v$.
+\vadjust{\moveright5.5in\vbox to 0pt{\vss
+\mpexternal[xleftmargin=0pt]{basedate.mp}
+}}
+
+\bigskip
+\noindent\hbox to \textwidth{\includegraphics{tufte-currency}\hss}
+
+
+\newpage
+\subsection{Daily events with annotation}
+
+\textsc{This chart} is adapted from Edward Tufte's \textsl{Visual explanations},
+p.33;
+it presents the data from John Snow's table of daily deaths in the London
+cholera epidemic of 1854 in a simple bar chart form, with annotation pointing out
+that the epidemic was already declining when the supposedly decisive intervention of
+removing the handle from the water pump at the centre of the outbreak was made.
+\vadjust{\moveright5.5in\vbox to 0pt{\hsize=4in\vskip -76pt
+\smallmpexternal[firstline=11,lastline=48,xleftmargin=0pt]{tufte-snow.mp}
+\noindent\hey
+\textit{The code for the annotation and the title was omitted to save space.\\
+See the source file for details}.\vss}}
+
+\medskip\noindent\includegraphics[width=\textwidth]{tufte-snow}
+
+\bigskip
+\noindent
+The data for the chart was edited directly into the \MP\ source, using a text editor
+to copy the data from the source table, and format them into lists so that you can use
+loops to capture the values in two parallel indexed numeric variables \mpl{deaths[]}
+and \mpl{day_number[]}. It is useful to be able to group the data visually into weeks to
+reduce the chance of errors, but there is no other significance.
+
+Note that the bars are drawn with a wide pen and \mpl{cutdraw} in order to get nice square ends
+on the bars; then \mpl{undraw} is used to make implicit grid lines.
\newpage
-\section{Commutative diagrams}
+\subsection{Scatter plot with annotations and simple jitter}
+
+\textsc{This chart} is from Tufte’s analysis of the Challenger space shuttle
+disaster. His objective here was to show all the available
+data relating launch temperature and damage to the booster rockets, and to point
+out that the forecast for 28 January 1986 was very much colder than any other
+launch.\vadjust{\moveright5.5in\vbox to 0pt{\hsize 4.2in\vskip -48pt
+\begin{smallcode}[xleftmargin=0pt]
+numeric r; r = 1/5; % adjustment of the marks where required...
+path damage; damage = origin .. (53, 11) .. (57, 4) .. (58, 4) ..
+ (63, 2)..
+ (66, 0)..
+ (67, 0 + 2r) .. % because the data set is quite small
+ (67, 0) .. % the simplest way to show multiple points
+ (67, 0 - 2r) .. % at the same (x, y) location is to add
+ (68, 0).. % this little vertical shift by hand
+ (69, 0)..
+ (70, 4 + r).. % the data is captured in a path, but only the
+ (70, 4 - r).. % points are drawn, not the lines between them
+ (70, 0 + r)..
+ (70, 0 - r)..
+ (72, 0)..
+ % and so on
+\end{smallcode}
+\vss}}
+
+The data was again edited directly into the \MP\ source, but this time captured
+as a \<path> variable. One advantage of this is that it allows you to process
+all the values in parallel using \mpl{scaled} or \mpl{shifted} on the whole path.
+\begin{smallcode}[xleftmargin=0pt]
+numeric u, v; u = 10.8; 5u = 4v;
+damage := damage xscaled u yscaled v;
+\end{smallcode}
+The individual points are accessed using the \mpl{point n of p} syntax:
+\begin{smallcode}[xleftmargin=0pt, xrightmargin=-36pt]
+for i = 1 upto length damage:
+ draw point i of damage withpen pencircle scaled (3/2r * v) withcolor 2/3 red;
+endfor
+\end{smallcode}
+
+\vbox to 0pt{\hbox to \textwidth{\includegraphics{tufte-srm-damage}\hss}\vss}
+
+\newpage
+\section{Commutative diagrams}\label{sec:cd}
\textsc{If you want lots} of complex bells and whistles on your commutative diagrams, then
you probably want to use specialist tools like "tikz-cd" or "xypic", but if your
@@ -7330,62 +5635,21 @@ using it for other illustrations, there is one less thing to learn.
Here are two examples to illustrate some general techniques. They may be familiar to
readers of the manuals for the tools referred to above.
$$
-\includegraphics{tikzcd-example}
+\includegraphics{cd-tikzcd-example}
\qquad
-\includegraphics{xypic-example}
+\includegraphics{cd-xypic-example}
$$
The complete code used to generate the right-hand picture is shown on the
right.\rlap{\rightarrow}%
\vadjust{\moveright5.5in\vbox to 0pt{\kern-218pt
-\begin{smallcode}
-picture U, XY, X, Y, Z;
-z1 = -z2 = (-61, 42);
-
-U = thelabel("$U$", z1);
-XY = thelabel("$X\times_ZY$", origin);
-X = thelabel("$X$", (x2, 0));
-Y = thelabel("$Y$", (0, y2));
-Z = thelabel("$Z$", z2);
-
-forsuffixes @=U, XY, X, Y, Z: draw @; endfor
-
-ahangle := 20;
-vardef curved_connect@#(expr s, a, b, d) =
- save line, mark;
-
- path line;
- line = center a {d} .. center b;
- interim bboxmargin := 4;
- drawarrow line cutbefore bbox a cutafter bbox b;
-
- picture mark;
- mark = thelabel@#("$\scriptstyle " & s & "$", point 1/2 of line);
- interim bboxmargin := 1;
- unfill bbox mark; draw mark;
-enddef;
-
-vardef connect@#(expr s, a, b) =
- curved_connect@#(s, a, b, center b - center a)
-enddef;
-
-connect.bot("p", XY, X);
-connect.rt ("q", XY, Y);
-connect.top("g", Y, Z);
-connect.lft("f", X, Z);
-
-curved_connect.urt("x", U, X, right);
-curved_connect.llft("y", U, Y, dir -80);
-
-drawoptions(dashed withdots scaled 1/2);
-connect("(x,y)", U, XY);
-drawoptions();
-\end{smallcode}
-\noindent\textit{\small This example assumes you are using "mplibtextextlabel" – §\ref{ttlabel}}
+\mpexternal[firstline=6,lastline=42,xleftmargin=0pt,xrightmargin=-20pt]{cd-xypic-example.mp}
+\noindent
+\textit{\small This example assumes you are using "mplibtextextlabel" – §\ref{ttlabel}}
\vss}}
The approach taken for both examples is first to define the node labels as pictures
placed as needed, and then write a special-purpose "connect" macro to make
consistent arrows between the nodes, using \mpl{center}, \mpl{bbox},
-\mpl{cutbefore}, and \mpl{cutafter} as appropriate.
+\mpl{cutbefore}, and \mpl{cutafter} as appropriate.
The $X\times_ZY$ example needs two variations. The "curved_connect" macro
takes a string for the label, the two nodes to be connected, and the initial
@@ -7397,327 +5661,40 @@ $b$.
For the $f^*E$ example, "connect" is simpler, because all the arrows are
straight and there are no labels, but needs to allow for arrows crossing:
-\begin{smallcode}
-vardef connect(expr a, b) =
- save line; path line; interim bboxmargin := 4;
- line = center a .. center b cutbefore bbox a cutafter bbox b;
- cutdraw line withpen pencircle scaled 4 withcolor background;
- drawarrow line
-enddef;
-\end{smallcode}
-
-\newpage
-\section{Tilings and tessellations}
-
-\textsc{In mathematical terms}, a “tiling†is a countable set of tiles
-that cover the plane without gaps or overlaps.\footnote{Adapted from \textsl{Tilings
-and Patterns}, Branko Grünbaum \& G.\@ C.\@ Shephard, Freeman, 1987}
-This section loosely follows that idea, and presents some ideas and general
-techniques for creating tilings and other patterns or textures.
-
-You can make an effective grid by drawing repeated lines and then clipping to the
-size you want:\mpic{-42pt}{tiling-simple}
-\begin{code}
-for i = -10 upto 10:
- draw (left--right) scaled 200 shifted (0, 20i);
- draw (down--up) scaled 200 shifted (20i, 0);
-endfor
-clip currentpicture to fullcircle scaled 200;
-\end{code}
-but this is a bit limited. If you want to produce more interesting tilings, you
-need to define a unit shape or picture, and a pair of vectors to repeat it.
-\begin{code}
-path unit; pair u, v; color a, b;
-unit = unitsquare scaled 24;
-u = point 1 of unit - point 0 of unit;
-v = point 3 of unit - point 0 of unit;
-a = 3/4[red, white]; b = 3/4[blue, white];
-for i=-5 upto 5:
- for j=-5 upto 5:
- fill unit shifted (i*u + j*v)
- withcolor if odd (i+j): a else: b fi;
- draw unit shifted (i*u + j*v);
- endfor
-endfor
-clip currentpicture to fullcircle scaled 200;
-\end{code}
-In tilings with more complex shapes you may find that using \mpl{fill} and
-\mpl{draw} in the same loop causes uneven lines because the fill overlaps part of
-the line. In these cases it is a good idea to duplicate the loops; use the first
-set for filling, the second for drawing.
-
-\newpage
-\subsection{Tiling with regular polygons}\label{sec:regtiling}
-
-\textsc{After tiling with squares}, the two simplest tilings are with triangles and
-hexagons\mwpic{-24pt}{tiling-hex-trig}
-(using the regular polygons from §\ref{polygons}). The basic loop is the same as the
-previous page except
-that the vectors $u$ and $v$ are now at 60° to each other (as shown in blue and
-red in the examples to the right). All of these examples where drawn with the same
-basic loop as before:
-\begin{code}
-for i = -n upto n:
- for j = -n upto n:
- draw P shifted (i * u + j * v);
- endfor
-endfor;
-\end{code}
-In the first row, $P$ was set to a simple polygon path:
-\begin{code}
-triangle = for i=0 upto 2: (0, 16) rotated 120i -- endfor cycle;
-hexagon = for i=0 upto 5: (0, 16) rotated 60i -- endfor cycle;
-\end{code}
-The vectors $u$ (in red) and $v$ (in blue) were defined as (for both tilings):
-\begin{code}
-u = point 0 of triangle - point 1 of triangle;
-v = u rotated -60;
-\end{code}
-To make the coloured versions, $P$ was defined as an appropriate \<picture>.
-For the triangular tiling, it looked like this: $\vcenter{
-\begin{mplibcode}
-input colorbrewer-rgb
-path t, tt;
-t = for i=0 upto 2: (0,8) rotated 120i --endfor cycle;
-tt = t reflectedabout(point 2 of t, point 0 of t);
- beginfig(0);
-fill t withcolor Reds 8 2; fill tt withcolor Blues 8 2; draw t; draw tt; endfig;
-\end{mplibcode}}$ so that the tiling actually filled the plane. In the hexagonal
-tiling there are no gaps to fill, but in order to get a non-adjacent colouring, the
-unit picture was defined as three shifted copies of the hexagon each filled with a
-different color. The unit vectors were therefore scaled by $\sqrt3$ and rotated by
-30° (as shown).
-
-The bottom row the unit pictures were replaced with drawings that connect the centre
-of each shape to the midpoint of each side (in red), like this:
-$$
-\begin{mplibcode}
-path p[]; input colorbrewer-rgb
-p3 = for i=0 upto 2: (0, 14) rotated 120i -- endfor cycle;
-p6 = for i=0 upto 5: (0, 14) rotated 60i -- endfor cycle;
-picture P[];
-for i=3,6:
- P[i] = image(
- for j=1 upto length p[i]:
- draw origin -- point j+1/2 of p[i] withcolor Reds 7 6;
- endfor
- draw p[i]);
-endfor
- beginfig(0); draw P3; draw P3 reflectedabout(point 0 of p3, point 2 of p3);
- draw P6 shifted (60, 3); endfig;
-\end{mplibcode}
-$$
-This has the effect of
-connecting the centres of adjacent shapes in the tiling, which reveals that each
-tiling is the dual of the other.
-
-\newpage
-\subsection{Separating filling and drawing}
-
-\textsc{Repeating a unit image} can sometimes cause unwanted overlaps, so as noted
-above, the solution is to make a filler unit and a drawing unit and do the filling
-first and the drawing second. In this example\mwpic{-32pt}{arch-4-8-8} the drawing
-unit (the octagon) is simple so you can just draw that path instead of making another
-\<picture> for it.
-\begin{smallcode}
-input colorbrewer-rgb
-path o, r[]; % o is the octagon, r[] are the "corners"
-o = (for i=0 upto 7: 21 dir 45i -- endfor cycle) rotated -90/4;
-pair t; t = whatever[point 0 of o, point 1 of o]
- = whatever[point 2 of o, point 3 of o];
-r1 = subpath (1,2) of o -- t -- cycle;
-r2 = r1 rotated 90;
-r3 = r2 rotated 90;
-r4 = r3 rotated 90;
-picture filler; filler = image(
- filldraw r1 withcolor Reds 8 3;
- filldraw r3 withcolor Reds 8 3;
- filldraw r2 withcolor Blues 8 3;
- filldraw r4 withcolor Blues 8 3;
- filldraw o withcolor Purples 8 2;
-);
-pair u, v;
-u = point 0 of o - point 5 of o; v = u rotated 90;
-beginfig(1);
-numeric n; n = 5;
-for i=-n upto n:
- for j=-n upto n:
- draw filler rotated ((i+j) mod 2 * 90) shifted (i*u + j * v);
- endfor
-endfor
-for i=-n upto n:
- for j=-n upto n:
- draw o shifted (i*u + j * v);
- endfor
-endfor
-\end{smallcode}
-Rotating every other \mpl{filler} allows you to get the alternate colours in the squares.
-\mpic{-60pt}{arch-4-8-8-parts}%
-Using \mpl{filldraw} ensures that there are no gaps between adjacent segments.
-
-\newpage
-\subsection{Tilings with more complex patterns}
-
-\textsc{The next example} also uses the square lattice,\mwpic{0pt}{arch-3-4-3-4}
-but the unit is more complicated, so the drawing needs two \<picture>
-variables, one for the colour fill and a second for the grid.
-\begin{smallcode}
-input colorbrewer-rgb
-path s[], t[];
-s1 = unitsquare scaled 21 rotated 15;
-s2 = s1 rotated 150;
-t1 = subpath (4, 3) of s1 -- point 1 of s2 -- cycle;
-t2 = t1 reflectedabout(point 1 of t1, point 2 of t1);
-t3 = t1 rotated 150;
-t4 = t1 rotated 210;
-picture color_unit, grid_unit;
-color_unit = image(
- fill s1 withcolor Oranges 8 1;
- fill s2 withcolor Oranges 8 2;
- fill t1 withcolor Blues 8 1;
- fill t2 withcolor Blues 8 2;
- fill t3 withcolor Blues 8 3;
- fill t4 withcolor Blues 8 4;
-);
-grid_unit = image(
- draw s1; draw s2;
- draw t2; draw t3; draw t4;
-);
-pair u, v;
-u = point 1 of s1 - point 1 of s2;
-v = u rotated 90;
-numeric n; n = 4;
-forsuffixes $=color_unit, grid_unit:
- for i=-n upto n:
- for j=-n upto n:
- draw $ shifted (i * u + j * v);
- endfor
- endfor
-endfor
-\end{smallcode}
-
-
-
-\newpage
-\subsection{Showing the dual tiling}
-
-\textsc{These tilings can be classified} by the configuration of the polygons that meet
-at each vertex. This one is $(3^4, 6)$ because each vertex has four triangles and one
-hexagon. It exists in two enantiomorph forms.\mxpic{-80pt}{3.6in}{arch-snub-hexagon}
-The unit pictures look like this:
-\par\bigskip
-\vbox{\halign{#&\qquad\qquad\vbox to 48pt{\hsize=2.7in\noindent #\par\vss}\cr
-\includegraphics[scale=0.75]{arch-snub-hexagon-unit}
-&\hey\itshape To reveal the dual of the tiling, you can draw a line from
-the median (or centroid if you prefer) of each polygon to the centre of each
-edge.\cr}}
-
-\bigskip
-\noindent They are drawn like this, where $h$ is the hexagon, $t_1 \dots\ t_6$ are the blue
-triangles surrounding it, and $t_7$ \& $t_8$ are the two “connecting†triangles,
-which swap sides to make the enantiomorphs.
-\begin{code}
-unit[k] = image(
- for i=1 upto 6:
- fill t[i] withcolor Blues 8 if odd i: 2 else: 3 fi;
- endfor
- for i=7 upto 8:
- fill t[i] withcolor Oranges 8 if odd i: 3 else: 2 fi;
- endfor
- fill h withcolor Oranges 8 2;
- forsuffixes S=h, t1, t2, t3, t4, t5, t6, t7, t8:
- draw S withpen pencircle scaled 1/4 withcolor 3/4;
- pair m; m = median(S);
- for i=1 upto length S:
- draw m -- point i - 1/2 of S withcolor 3/4;
- endfor
- endfor);
-\end{code}
-The $\id{median}()$ routine is from §\ref{polygons-given-side} and the colours are from
-§\ref{colorbrewer}. This tiling is generated using the loop-with-triangular-grid-vectors
-from §\ref{sec:regtiling}.
-
-\newpage
-\subsection{Tiling with a dynamic unit}
-
-\textsc{In order to reveal} patterns in a tiling, you might want to vary the colours
-or line styles used in each repeated drawing unit. In this case, you can write a
-macro that takes a parameter and returns a picture to draw.\mwpic{-36pt}{arch-3-4-6-4}
-
-\begin{smallcode}
-\mplibsetformat{metafun} % <-- for the "transparent" macro
-\begin{mplibcode}
-input colorbrewer-rgb
-beginfig(1);
-numeric r; r = 5;
-path d; d = for i=1 upto 12:
- (0, r) shifted (r * (sqrt(3)+2), 0) rotated 30i --
-endfor cycle;
-color shade[];
-shade0 = Oranges 8 3; shade2 = Greens 8 3;
-shade1 = Blues 8 3; shade3 = Reds 8 3;
-vardef unit(expr n) = image(
- fill d withcolor transparent (2, .9, shade[n mod 4]);
- draw d;
-) enddef;
-pair u, v;
-u = point 0 of d - point 3 of d;
-v = u rotated 60;
-numeric n; n = 6;
-for i=-n upto n:
- for j=-n upto n:
- draw unit(i*j) shifted ((i - floor(j / 2)) * u + j * v);
- endfor
-endfor
-clip currentpicture to unitsquare shifted -(1/2, 1/2) scaled (n * 9 r);
-endfig;
-\end{mplibcode}
-\end{smallcode}
-Instead of defining six triangles, six squares, and a hexagon, you can just define
-the dodecagon and overlap each one. Using a macro to create the unit, allows you to
-choose a different colour for each filler. Using the \mpl{transparent} macro from
-Metafun automatically mixes the colours for the overlaps. But the edges don't look
-so good, so you need to clip the whole picture to a neat square.
-
+\mpexternal[firstline=26,lastline=31]{cd-tikzcd-example.mp}
\newpage
\section{Recursion and iteration}
+\vpic{10pt}{rec-bush}
+
+\noindent
\textsc{This chapter is not a tutorial} on recursion or iteration \textit{per se}, but rather
more of an exploration of the \MP\ techniques you can use to create some particular types
-of drawing such as trees, plane-filling curves, non-periodic tilings, and fractals.\mwpic{-48pt}{rec-bush}
+of drawing such as trees, plane-filling curves, fractals, and some types of tiling pattern [§\ref{aperiodic}].
\medskip\noindent
-Even so,
-it is perhaps useful to review some of the basic programming ideas
-involved.
-Consider for example the greatest common divisor algorithm presented in
+Even so, it is perhaps useful to review some of the basic programming ideas
+involved. Consider for example the greatest common divisor algorithm presented in
§\ref{sec:gcd}.
-\begin{smallcode}
-vardef gcd(expr a, b) = if b = 0: a else: gcd(b, a mod b) fi enddef;
-\end{smallcode}
+\smallmpexternal[firstline=1,lastline=1]{rec-gcd-comparison.mp}
+\noindent
The reason this works is that we know (mathematically) that $0 \le a \bmod b < b$,
and therefore that the arguments to the recursive call must get smaller each time
and eventually we must get to $b=0$ when the answer will be $a$. This is the basic
recursive approach: ensure at least one argument gets smaller each time and stop
-when you get to a given limit.
+when you get to a given limit.
The examples in this chapter use one of two simple approaches:
\begin{itemize}
- \item Explicitly pass a \mpl{level} argument that is decremented on each
+ \item Explicitly pass a \mpl{level} argument that is decremented on each
recursive call, and stop the recursion when the level gets to zero
\item Pass a \<path> or two \<pair> arguments, and stop the recursion when the
path is too short or the pairs are too close together.
\end{itemize}
If you find recursion confusing, you can nearly always use an iterative approach
instead. For example, you can implement the \mpl{gcd} function like this:
-\begin{smallcode}
-vardef gcd(expr A, B) = save r, a, b; numeric a, b, r; a := A; b := B;
- forever:
- r := a mod b; exitif r = 0;
- a := b; b := r;
- endfor b
-enddef;
-\end{smallcode}
+\smallmpexternal[firstline=15,lastline=20]{rec-gcd-comparison.mp}
+\noindent
Notice that you have to use assignment in the loop to update the variables, and
that you cannot assign to the arguments of a macro. Notice also that this version
requires both arguments to be positive integers. You need to use your judgement to
@@ -7729,25 +5706,13 @@ decide which is the better approach for a given problem.
\textsc{The Swedish mathematician} Helge von Koch\mpic{-30pt}{rec-koch-steps} originally devised the
Koch curve as an example of a non-differentiable curve that could be constructed with
elementary geometry. It makes a good introduction to recursive paths with \MP. The
-construction is recursive: each straight line segment in the path is replaced with
+construction is recursive: each straight line segment in the path is replaced with
four copies of itself, scaled down $\frac13$ and arranged as shown
at Level 1 \rightarrowfill\break
At each level of the construction, the number of points in the path increases
-four-fold and the \mpl{arclength} of the path gets $\frac43$ longer.
-\begin{code}
-vardef koch(expr level, a, b) =
- if level = 0:
- a -- b
- else:
- save p, q, r; pair p, q, r;
- p = 1/3[a,b]; r = 2/3[a,b]; q = r rotatedabout(p, 60);
- koch(level-1, a, p) &
- koch(level-1, p, q) &
- koch(level-1, q, r) &
- koch(level-1, r, b)
- fi
-enddef;
-\end{code}
+four-fold and the \mpl{arclength} of the path gets $\frac43$ longer.
+\mpexternal[firstline=7,lastline=18]{rec-koch-steps.mp}
+\noindent
The five levels were drawing using this function in a loop like this:
\begin{code}
for n=0 upto 4:
@@ -7768,38 +5733,25 @@ detail.
\subsection{Sierpinski's gaskets}
\textsc{The second example} of recursive construction also dates from the early 20th
-century, but unlike von Koch's infinite curve, the area of Sierpinski's gasket tends
+century, but unlike the infinite length of von Koch's curve, the area of Sierpinski's gasket tends
to zero.\mwpic{-12pt}{rec-sierpinski-triangle} In the original specification, you
are supposed to remove the central quarter of each triangle, but this program does
it the other way round and delays drawing the triangles until they are small enough.
-\begin{code}[xleftmargin=0pt, xrightmargin=-2in]
-vardef gasket(expr t, s, limit) =
- if length (point 1 of t - point 0 of t) < limit:
- fill t;
- else:
- save little_t; path little_t; little_t = t scaled s;
- for i=1 upto length t:
- gasket(little_t shifted (point i of t - point i of little_t), s, limit);
- endfor
- fi
-enddef;
-\end{code}
+\mpexternal[firstline=6,lastline=15,xleftmargin=0pt,xrightmargin=-72pt]{rec-sierpinski-triangle.mp}
+\noindent
Note the useful idiom \mpl{shifted (point i of t - point i of little_t)} – this
neatly tucks a copy of the small triangle into the appropriate corner of the big
triangle. You can make this even simpler by coding the scaling parameter $s$ and
-\id{limit} as constants in the recursive routine, so that you do not have to pass
+\id{limit} as constants in the recursive routine, so that you do not have to pass
them down each time. The triangular gasket was generated using the macro like this:
-\begin{code}[xleftmargin=0pt, xrightmargin=-2in]
-beginfig(1);
- path T; T = for i = 1 upto 3: 220 up rotated 120i -- endfor cycle;
- gasket(T, 1/2, 20);
-endfig;
-\end{code}
-You can generalize it, for example by making
+\mpexternal[firstline=16,lastline=19,xleftmargin=0pt,xrightmargin=-72pt]{rec-sierpinski-triangle.mp}
+\noindent
+You can generalize this idea, for example by making
the path \id{T} into a pentagon with scaling factor $s=(3-\sqrt5)/2$,
or a hexagon with $s=1/3$, and so on:
-\vbox to 0pt{\vskip-2pt\hsize10in\noindent\includegraphics[width=10in]{rec-sierpinski-pentagon.pdf}\par\vss}
+\vbox to
+0pt{\vskip-2pt\hsize10in\noindent\includegraphics[width=10in]{rec-sierpinski-garlands.pdf}\par\vss}
\newpage
\subsection{The Heighway dragon}
@@ -7815,32 +5767,15 @@ copies of itself scaled down and arranged as shown.\mwpic{-36pt}{rec-dragon}
Note that every other segment is flipped left and right. At each stage, the number of points
increases two-fold and the path gets $\sqrt2$ times longer. Here is a recursive
routine to generate the curve as a single path.
-\begin{smallcode}
-numeric r, theta; r = sqrt 1/2; theta = 45;
-vardef dragon(expr level, a, b) =
- if level > 0:
- save p; pair p;
- p = r[a, b] rotatedabout(a, theta);
- dragon(level - 1, a, p) & reverse dragon(level - 1, b, p)
- else:
- a .. b
- fi
-enddef;
-\end{smallcode}
+\smallmpexternal[firstline=6,lastline=15]{rec-dragon.mp}
+\noindent
The blue dragon was created with: {\small\mpl{draw dragon(15, origin, 240 right)}}\rlap{\raise1ex\hbox{\ $\smash{\nearrow}$}}
After the fourth level the corners of the curve start to touch each
other, but they never cross. You can see this if you draw the curve with rounded
corners.
-\begin{smallcode}
-vardef rounded_corners expr p =
- save r, n; numeric r, n; r = 1/3; n = length p;
- subpath (0, 1-r) of p
- for t=1 upto n-1:
- .. subpath (t+r, t+1-r) of p
- endfor .. subpath (n-r, n) of p
-enddef;
-\end{smallcode}
+\smallmpexternal[firstline=17,lastline=23]{rec-dragon.mp}
+\noindent
The red dragon was: {\small\mpl{draw rounded_corners dragon(10, origin, 240
right)}}\rlap{\hbox{\ $\smash{\longrightarrow}$}}
@@ -7852,7 +5787,7 @@ number system when $n > 11$.}
\newpage
\subsection{Iterative dragons}
-\textsc{The dragon curve} can also be created with iteration instead of recursion.
+\textsc{The dragon curve} can also be created with iteration instead of recursion.
Another way of viewing the stages of developing the curve is that at each stage the
whole curve is replaced by two copies of itself arranged as shown:
@@ -7861,16 +5796,8 @@ whole curve is replaced by two copies of itself arranged as shown:
\smallskip\noindent
We can do this in two steps in a loop, like this:\mpic{-160pt}{ifs-heigh}
-\begin{smallcode}
-path p; p = origin -- dir 30;
-numeric n;
-for i=1 upto 12:
- n := length p;
- p := p rotated 45;
- p := p & reverse p rotatedabout(point n of p, 90);
-endfor
-draw p scaled (384 / xpart (urcorner p - llcorner p));
-\end{smallcode}
+\smallmpexternal[firstline=6,lastline=13,xleftmargin=0pt]{ifs-heigh.mp}
+\noindent
In this approach, instead of scaling down each time, the curve is just allowed to
grow $\sqrt2$-times bigger in each loop, then scaled to the desired width
(384\unit{pt}) when it is complete. The 12 stages in the loop produce the rotated blue
@@ -7878,48 +5805,34 @@ dragon as shown.\rlap{\raise1ex\hbox{\ $\smash{\nearrow}$}}
\vfill\noindent
With a small adaptation, you can also use this to explore variations.
-\begin{smallcode}
-path p; p = origin -- dir 30;
-numeric n, r; r = 3;
-for i=1 upto 12:
- n := length p;
- p := p rotated (45 - r);
- p := p & reverse p rotatedabout(point n of p, 90 + 2r);
-endfor
-\end{smallcode}
+\smallmpexternal[firstline=6,lastline=13,xleftmargin=0pt]{ifs-heigh-open.mp}
+\noindent
The extra parameter $r$ is used to open up the folds, making it more
“organicâ€.\mpic{-200pt}{ifs-heigh-open}
\newpage
\subsection{The golden dragon}
-\textsc{You can also explore variations} with the recursive approach by altering
-the scaling and rotation. Here $r\simeq 0.74274$ and
-$\theta\simeq 32.893°$ in the initial triangle.\vadjust{\moveright136pt\vbox to
-0pt{\vskip 3.16in \hsize 3.6in \noindent
+\textsc{You can explore variations} with the recursive approach by altering
+the scaling and rotation. Here $r=1/\phi^{1/\phi}\simeq 0.74274$ and
+$\theta\simeq 32.893°$ in the initial triangle.
+
+\medskip
+\vbox to 3in{\noindent\hbox to \textwidth{\includegraphics{rec-dragon-golden.pdf}\hss}\vss}
+
+\moveright136pt\vbox to 0pt{\hsize 3.6in \noindent
Because the initial triangle shape is shorter on one side, it is better to adapt
the \mpl{dragon} routine to measure the gap between points instead of using a fixed
level parameter:
-\begin{smallcode}
-vardef dragon(expr a, b) =
- if abs(a-b) > 1:
- save p; pair p;
- p = r[a, b] rotatedaround(a, theta);
- dragon(a, p) & reverse dragon(b, p)
- else:
- a .. b
- fi
-enddef;
-\end{smallcode}
-\vss}}
-$$\hbox to \textwidth{\includegraphics{rec-dragon-golden.pdf}\hss}$$
+\smallmpexternal[firstline=12,lastline=20]{rec-dragon-golden.mp}
+\vss}
\newpage
\subsection{The Peano-Gosper curve, or flow-snake}
-\textsc{The Peano-Gosper curve} is a space-filling curve. It is
-constructed in the same way as the dragons, but generating shape has seven sections
-instead of two, and they are cunningly arranged to fill the space.\mpic{-48pt}{rec-flowsnake-construction}
+\textsc{The Peano-Gosper curve} is a space-filling curve. It is
+constructed in the same way as the dragons, but the generating shape has seven sections
+instead of two, and they are cunningly arranged to fill the space.\mpic{-72pt}{rec-flowsnake-construction}
The arrows indicate the reversals so that the scaled-down copies fill the larger
part of the hexagons that contain them.\rlap{\hbox{\ $\smash{\rightarrow}$}}
$$\includegraphics[width=\textwidth]{rec-flowsnake}$$
@@ -7927,25 +5840,9 @@ This fourth-level curve is the boundary between the filled and unfilled branches
\vadjust{\moveright 384pt \vbox to 0pt{\vss\hsize 4in
\noindent Given the \id{snake} path scaled to unit length as shown above in
\red{red}, the
-flow-snake path can be created with:
-\begin{smallcode}
-vardef rattle(expr level, a, b) =
- if level > 0:
- save s; path s; s = snake zscaled (b-a) shifted a;
- reverse rattle(level - 1, point 1 of s, a) &
- rattle(level - 1, point 1 of s, point 2 of s) &
- rattle(level - 1, point 2 of s, point 3 of s) &
- rattle(level - 1, point 3 of s, point 4 of s) &
- reverse rattle(level - 1, point 5 of s, point 4 of s) &
- reverse rattle(level - 1, point 6 of s, point 5 of s) &
- rattle(level - 1, point 6 of s, b)
- else:
- a -- b
- fi
-enddef;
-path S; S = rattle(4, origin, 360 right);
-\end{smallcode}
-}}
+flow-snake on the left was created with
+\smallmpexternal[firstline=18,lastline=38]{rec-flowsnake.mp}
+\vskip -48pt}}
\newpage
\subsection{Fractal trees}
@@ -7955,72 +5852,31 @@ path S; S = rattle(4, origin, 360 right);
then make the first branch by scaling the trunk by $r$, rotating it $+\theta$, and
moving it to the top of the trunk; make the second in the same way but rotate it by
$-\theta$. Then repeat using each branch as a new trunk.\mpic{-114pt}{rec-simple-tree}
-And stop after enough levels.
+And stop after enough levels.
This can be implemented easily in \MP, but requires a
slightly different technique. There is no simple way to represent the tree as a single
\<path> because a path cannot have branches, so
you need to draw each segment separately instead of trying to join them up. Compare
this to the \mpl{rattle} routine on the page before.
-\begin{code}
-vardef make_tree(expr level, bar) =
- draw bar;
- if level > 0:
- for t=-theta, theta:
- make_tree(level - 1, bar shifted - point 0 of bar
- scaled r rotated t shifted point 1 of bar);
- endfor
- fi
-enddef;
-\end{code}
+\mpexternal[firstline=7,lastline=16]{rec-simple-tree.mp}
+\noindent
To combine several such trees in a drawing either move the initial \id{bar} path, or
capture the tree as a \<picture> using \mpl{image(make_tree(...))}, like so:
-\begin{code}
-picture T[]; numeric r, theta;
-r = 0.58; theta = 60; T1 = image(
- make_tree(3, origin -- 100 up);
-);
-% update r and theta...
-r := 0.75; theta := 14; T2 = image(
- make_tree(10, origin -- 100 up);
-);
-draw T1 shifted 32 up;
-draw T2 shifted 128 right;
-\end{code}
+\mpexternal[firstline=18,lastline=26]{rec-simple-tree.mp}
+\noindent
Notice that $r$ and $\theta$ are treated as global constants. You could pass them
to the \mpl{make_tree} routine instead. Notice also that the smaller tree only has
-three levels, but the larger one has 10. And that the labels were omitted.
+three levels, but the larger one has 10.
\newpage
-\subsubsection{More fractal vegetation}
+\subsubsection*{More fractal vegetation}
\textsc{If you are more interested} in the visual aspect of your tree than the
mathematical, you can tweak the \mpl{make_tree} routine a
bit.\mpic{-12pt}{rec-general-tree}
-\begin{smallcode}[xleftmargin=0pt]
-vardef make_tree(expr bar) =
- save a; numeric a; a = abs(point 1 of bar - point 0 of bar);
- cutdraw bar withpen pencircle scaled 1.2(1/8 a) withcolor background;
- cutdraw bar withpen pencircle scaled (1/8 a) withcolor 1/256(57, 35, 32);
- if a > leaf:
- save s; pair s;
- s = 1/32 a * r * unitvector(direction 1 of bar) rotated 90;
- make_tree(bar shifted - point 0 of bar
- shifted s scaled r rotated theta
- shifted point 1 of bar);
- make_tree(bar shifted - point 0 of bar
- shifted -s scaled r rotated -theta
- shifted point 1 of bar);
- else:
- draw point 1 of bar withpen pencircle scaled 1 withcolor 2/3 green;
- fi
-enddef;
-beginfig(1);
- numeric leaf, r, theta;
- r = 0.75; theta = 14; leaf = 3;
- make_tree(origin -- 100 up);
-endfig;
-\end{smallcode}
+\smallmpexternal[firstline=6,lastline=31,xleftmargin=0pt]{rec-general-tree.mp}
+\noindent
\begin{itemize}
\item The recursion is controlled by measuring the length of the branches instead
of using a \id{level} parameter.
@@ -8032,7 +5888,7 @@ endfig;
\end{itemize}
\newpage
-\subsubsection{Randomized recursive plants}
+\subsubsection*{Randomized recursive plants}
\vskip-\baselineskip
\noindent\hbox to \linewidth{\includegraphics{rec-general-tree-deviate}\hss}
@@ -8040,154 +5896,320 @@ endfig;
\noindent
\textsc{To get plants that look more natural} you can introduce some random factors.
Strictly these are not fractal because they are not
-self-similar. The only change from the previous \mpl{make_tree} is to replace
-\mpl{scaled r rotated theta} with
-\begin{smallcode}[xleftmargin=0pt]
-scaled (r + 1/16 normaldeviate) rotated (theta + 8 normaldeviate)
-\end{smallcode}
-The bush is similar, except that it splits into four branches at each step instead of
-two and only the lengths randomized.\mwpic{-96pt}{rec-bush}
+self-similar. The only change from the previous \mpl{make_tree} was to replace
+\mpl{scaled r rotated theta} with
+\smallmpexternal[firstline=17,lastline=17,xleftmargin=0pt]{rec-general-tree-deviate.mp}
+
+\vfill\noindent
+\textsc{The bush} is similar, except that it splits into four branches at each step instead of
+two and only the lengths are randomized.\mwpic{-96pt}{rec-bush}
The colouring was a happy accident.
-\begin{smallcode}[xleftmargin=0pt, xrightmargin=-100pt]
+\mpexternal[firstline=8,lastline=17,xleftmargin=0pt,xrightmargin=-150pt]{rec-bush.mp}
+
+\newpage
+\section{Periodic tilings}
+
+\textsc{In mathematical terms}, a “tiling†is a countable set of tiles
+that cover the plane without gaps or overlaps.\footnote{Adapted from \textsl{Tilings
+and Patterns}, Branko Grünbaum \& G.\@ C.\@ Shephard, Freeman, 1987}
+A \textit{periodic} tiling is one that consists of a unit shape or pattern that is
+repeated by translation in two dimensions.\vadjust{\moveright5.5in\vbox to
+0pt{\hsize4in\vskip -60pt
+\centerline{For notes on drawing \textit{aperiodic} tilings, see below in §\ref{aperiodic}}\vss}}
+This section loosely follows that idea, and presents some ideas and general
+techniques for creating tilings and other patterns or textures. ——
+You can make an effective grid by drawing repeated lines and then clipping to the
+size you want:\mpic{-42pt}{tiling-simple}
+\mpexternal[firstline=8,lastline=12,xleftmargin=0pt,xrightmargin=-12pt]{tiling-simple.mp}
+\noindent
+but this is a bit limited. If you want to produce more interesting periodic
+tilings, you need to define a unit shape or picture, and a pair of vectors to repeat it.
+\mpexternal[firstline=16,lastline=28,xleftmargin=0pt,xrightmargin=-12pt]{tiling-simple.mp}
+\noindent
+In tilings with more complex shapes you may find that using \mpl{fill} and
+\mpl{draw} in the same loop causes uneven lines because the fill overlaps part of
+the line. In these cases it is a good idea to duplicate the loops; use the first
+set for filling, the second for drawing.
+
+\newpage
+\subsection{Tiling with regular polygons}\label{sec:regtiling}
+
+\textsc{After tiling with squares}, the next two simplest tilings use triangles and
+hexagons\mwpic{-24pt}{tiling-hex-trig}
+(made using the routines from §\ref{polygons}). The basic loop is the same as the
+previous page except
+that the vectors $u$ and $v$ are now at 60° to each other (as shown in blue and
+red in the examples to the right). All of these examples were drawn with the same
+basic loop as before:
+\mpexternal[firstline=11,lastline=15,xleftmargin=0pt]{tiling-hex-trig.mp}
+\noindent
+In the first row, $P$ was set to a simple polygon path:
+\mpexternal[firstline=28,lastline=29,xleftmargin=0pt]{tiling-hex-trig.mp}
+\noindent
+The vectors $u$ (in red) and $v$ (in blue) were defined as (for both tilings):
+\mpexternal[firstline=31,lastline=32,xleftmargin=0pt]{tiling-hex-trig.mp}
+\noindent
+To make the coloured versions, $P$ was defined as an appropriate \<picture>.
+For the triangular tiling, it looked like this: $\vcenter{
+\begin{mplibcode}
input colorbrewer-rgb
-vardef bush(expr start, aim, level, limit) =
- save s, target; numeric s; pair target; s = level / limit;
- for a = -32, -8, 8, 16:
- target = aim scaled ((32 + 16 normaldeviate) * s) rotated a shifted start;
- draw start -- target withpen pencircle scaled s withcolor BrBG[limit][limit-level];
- if level > 1: bush(target, aim rotated a, level - 1, limit); fi
- endfor
-enddef;
-beginfig(1); bush(origin, dir 80, 6, 8); endfig;
-\end{smallcode}
+path t, tt;
+t = for i=0 upto 2: (0,8) rotated 120i --endfor cycle;
+tt = t reflectedabout(point 2 of t, point 0 of t);
+fill t withcolor Reds 8 2; fill tt withcolor Blues 8 2; draw t; draw tt;
+\end{mplibcode}}$ so that the tiling actually filled the plane. In the hexagonal
+tiling there are no gaps to fill, but in order to get a non-adjacent colouring, the
+unit picture was defined as three shifted copies of the hexagon each filled with a
+different color. The unit vectors were therefore scaled by $\sqrt3$ and rotated by
+30° (as shown).
+
+The bottom row the unit pictures were replaced with drawings that connect the centre
+of each shape to the midpoint of each side (in red), like this:
+$$
+\begin{mplibcode}
+path p[]; input colorbrewer-rgb
+p3 = for i=0 upto 2: (0, 14) rotated 120i -- endfor cycle;
+p6 = for i=0 upto 5: (0, 14) rotated 60i -- endfor cycle;
+picture P[];
+for i=3,6:
+ P[i] = image(
+ for j=1 upto length p[i]:
+ draw origin -- point j+1/2 of p[i] withcolor Reds 7 6;
+ endfor
+ draw p[i]);
+endfor
+ draw P3; draw P3 reflectedabout(point 0 of p3, point 2 of p3);
+ draw P6 shifted (60, 3);
+\end{mplibcode}
+$$
+This has the effect of
+connecting the centres of adjacent shapes in the tiling, which reveals that each
+tiling is the dual of the other.
\newpage
-\subsection{Penrose tilings}
+\subsection{Separating filling and drawing}
-\textsc{Recursion is useful} for generating non-periodic tilings,%
-\vadjust{\moveright5.5in\vbox to 0pt{\kern-8pt
-\begin{smallcode}
-% golden ratio constant
-numeric psi; psi = (sqrt 5 - 1) / 2;
+\textsc{Repeating a unit image} can sometimes cause unwanted overlaps, so as noted
+above, the solution is to make a filler unit and a drawing unit and do the filling
+first and the drawing second. In this example\mwpic{-32pt}{tiling-arch-4-8-8} the drawing
+unit (the octagon) is simple so you can just draw that path instead of making another
+\<picture> for it.
+\mpexternal[firstline=5,lastline=31]{tiling-arch-4-8-8.mp}
+\noindent
+Rotating every other \mpl{filler} allows you to get the alternate colours in the squares.
+\mpic{-60pt}{tiling-arch-4-8-8-parts}%
+Using \mpl{filldraw} ensures that there are no gaps between adjacent segments.
-% inflating tall shape makes two others
-vardef inflate_tall(expr level, a, b, c) =
- if level = 0:
- draw a--b--c withpen pencircle scaled 1/8;
- else:
- save d; pair d; d = psi[b,a];
- inflate_tall(level - 1, d, c, a);
- inflate_wide(level - 1, c, d, b);
- fi
-enddef;
+\newpage
+\subsection{Tilings with more complex patterns}
-% inflating wide makes three
-vardef inflate_wide(expr level, a, b, c) =
- if level = 0:
- draw a--b--c withpen pencircle scaled 1/8;
- else:
- save d, e; pair d, e; d = psi[a,b]; e = psi[a,c];
- inflate_tall(level - 1, d, e, b);
- inflate_wide(level - 1, e, d, a);
- inflate_wide(level - 1, c, e, b);
- fi
-enddef;
+\textsc{The next example} also uses the square lattice,\mwpic{0pt}{tiling-arch-3-4-3-4}
+but the unit is more complicated, so the drawing needs two \<picture>
+variables, one for the colour fill and a second for the grid.
+\mpexternal[firstline=7,lastline=36,xleftmargin=0pt]{tiling-arch-3-4-3-4.mp}
-% start with a tall triangle with apex at origin
-pair a, b, c;
-b = origin;
-c = (sind(18), sind(72)) scaled 800;
-a = (-xpart c, ypart c);
+\newpage
+\subsection{Showing the dual tiling}
-% make an inflated "wedge"
-picture P; P = image(inflate_tall(7, a, b, c));
+\textsc{These tilings can be classified} by the configuration of the polygons that meet
+at each vertex. This one is $(3^4, 6)$ because each vertex has four triangles and one
+hexagon. It exists in two enantiomorph forms.\mpic{-80pt}{tiling-arch-snub-hexagon}
+The unit pictures look like this:
+\par\bigskip
+\vbox{\halign{#&\qquad\qquad\vbox to 48pt{\hsize=2.7in\noindent #\par\vss}\cr
+\includegraphics[scale=0.75]{tiling-arch-snub-hexagon-unit}
+&\hey\itshape To reveal the dual of the tiling, you can draw a line from
+the centroid of each polygon to the midpoint of each edge.\cr}}
-% then exploit the five-fold symmetry to make the picture
-for t = 0 upto 9:
- draw P if odd t: reflectedabout(b, c) fi rotated 72t;
-endfor;
-\end{smallcode}
+\bigskip
+\noindent They are drawn like this, where $h$ is the hexagon, $t_1 \dots\ t_6$ are the blue
+triangles surrounding it, and $t_7$ \& $t_8$ are the two “connecting†triangles,
+which swap sides to make the enantiomorphs.
+\mpexternal[firstline=23,lastline=37,xleftmargin=0pt]{tiling-arch-snub-hex-parts.mp}
+\noindent
+The $\id{centroid}()$ routine is from §\ref{polygons} and the colours are from
+§\ref{colorbrewer}. This tiling is generated using the loop-with-triangular-grid-vectors
+from §\ref{sec:regtiling}.
+
+\newpage
+\subsection{Tiling with a dynamic unit}
+
+\textsc{In order to reveal} patterns in a tiling, you might want to vary the colours
+or line styles used in each repeated drawing unit. In this case, you can write a
+macro that takes a parameter and returns a picture to draw.\mwpic{-48pt}{tiling-arch-3-4-6-4}
+\smallmpexternal[firstline=6,lastline=30]{tiling-arch-3-4-6-4.mp}
+\noindent
+Instead of defining six triangles, six squares, and a hexagon, you can just define
+the dodecagon and overlap each one. Using a macro to create the unit, allows you to
+choose a different colour for each filler. Using the transparency support from
+"luamplib" automatically mixes the colours for the overlaps. But the edges don't look
+so good, so you need to clip the whole picture to a neat square.
+
+\newpage
+\subsection{Colouring with a set number of colours}
-\qquad\hey \textit{\small Colouring the tiling is left as an exercise for the
-reader.}\par\vss}}
-like those discovered in the 1970s by the British polymath Sir Roger Penrose.
-$$\includegraphics[width=\textwidth]{penrose-P3.pdf}$$
-By definition, there is no periodic unit to repeat; but there are well-known
-expansion rules to split each shape in the tiling into smaller congruent copies. So
-you can start with a single large shape and apply the rules recursively to make the
-tiling. The tiling above is made from two rhombus shapes, but each of these shapes can be
-split in half into two triangles, and the expansion process actually works on these:
-$$\includegraphics{penrose-stages.pdf}$$
+\textsc{This “attractive and ingenious†pattern of squares} is given in Grünbaum \&
+Shephard, chapter 8, and is shown here coloured with three colours so that no two
+squares with the same colour touch each other.\mpic{-12pt}{tiling-pp48a}
+
+\mpexternal[firstline=7,lastline=26,xleftmargin=0pt]{tiling-pp48a.mp}
+\noindent
+The points of interest here are
+\begin{itemize}
+ \item The use of the \mpl{sind} function to position the square in the unit so
+ that it makes the six-pointed star when rotated.
+ \item The expression “\mpl{t mod 3 + 3}†which cycles through 3, 4, and 5 for
+ different values of $t$.
+\end{itemize}
+Many different colourings are possible but you might need to make a more complex
+unit drawing for some of them.
+
+
+\newpage
+\section{Aperiodic tilings}\label{aperiodic}
+
+\textsc{Mathematical research in the 1960s and 1970s} established that it is also
+possible to tile an infinite plane with polygons that do not have any periodic
+repeating pattern. There are various mathematical approaches to creating these
+tilings; this section explores substitution tilings, which lend themselves to
+recursive programming. The rules for a substitution define a dissection for each
+shape that makes up the tiling.
+
+The idea is to define a recursive macro for each shape in the tiling, with
+parameters for the recursion level and points that define the shape. If
+$\id{level}=0$, draw or decorate that particular shape, otherwise work out
+the points for the dissection and call the appropriate macros for each shape with
+$level-1$. Here is an example:\mpic{-123pt}{tiling-subs-triangle.pdf}
+
+\mpexternal[firstline=7,lastline=28]{tiling-subs-triangle.mp}
\vbox to 0pt{\noindent
-Each expansion of half the thick rhombus, produces two more thick halves and one
-thin half; each expansion of half the thin rhombus produces a thick half and a thin
-half. No other shapes are produced, so the recursive process can be repeated
-indefinitely. At the desired lowest level the triangles are patched back into
-rhombus shapes simply by \textit{not} drawing the edges shown with dots.\par\vss}
+These procedures are illustrated on the right. The completed
+tiling was drawn with \mpl{tall(6, 173 dir 210, 173 dir 330, 173 dir 90)}.
+\par\vss}
\newpage
\subsection{Pinwheel tiling}
-\textsc{Another non-periodic tiling} is the so-called pinwheel tiling, devised in 1994
+\textsc{The second aperiodic tiling example} is the so-called pinwheel tiling, devised in 1994
by Charles Radin, based on
-this dissection by John Conway.\mpic{-22pt}{pinwheel}
-$$\includegraphics{conway.pdf}$$
+this dissection by John Conway.\mpic{-22pt}{tiling-subs-pinwheel}
+$$\includegraphics[scale=0.8]{tiling-conway}$$
Starting with a triangle of this shape, the tiling recursively divides into
five smaller copies of itself. The colouring is passed down each level but only used
on the lowest.
-\begin{smallcode}
-input colorbrewer-rgb
-vardef pinwheel(expr level, a, b, c, s) =
- if level = 0:
- fill a--b--c--cycle withcolor s;
- draw a--b--c--cycle withpen pencircle scaled 1/8 withcolor white;
- else:
- save d, e, f, g; pair d, e, f, g;
- d = 2/5[b, c]; e = 4/5[b,c]; f = 1/2[e, a]; g = 1/2[a, b];
- pinwheel(level - 1, e, a, c, Blues 9 4);
- pinwheel(level - 1, f, g, a, Blues 9 3);
- pinwheel(level - 1, f, g, e, Blues 9 2);
- pinwheel(level - 1, d, e, g, Blues 9 5);
- pinwheel(level - 1, d, b, g, Blues 9 6);
- fi
-enddef;
-beginfig(1);
- pinwheel(5, origin, 200 right, 100 up, "");
- pinwheel(5, (200,100), 100 up, 200 right, "");
-endfig;
-\end{smallcode}
-Notice that to make the dissection work, it is important to pass the three
-\<pair> arguments in the right order.
+\smallmpexternal[firstline=1,lastline=15]{tiling-pinwheel-macro.mp}
+\vskip -\baselineskip
+
+\smallmpexternal[firstline=7,lastline=14]{tiling-subs-pinwheel.mp}
+
+\enlargethispage{24pt}
+
+\noindent
+\hey To make the dissection work, it is important to pass the three
+\<pair> arguments in the right order. Note also the manipulation of
+\mpl{currentpicture} at the end.
\newpage
-\tableofcontents
+\subsection{Ammann A5 tiling}
+
+\textsc{Of the various sets} of aperiodic tiles discovered by Robert Ammann in 1977,
+the best known and probably most attractive is the set known as A5. The recursive
+substitutions for the tiling are usually given as follows,
+
+\smallskip
+\centerline{\includegraphics{tiling-ammann-substitutions-overlapping.pdf}}
+\smallskip\noindent
+with the square shapes overlapping the edges of the parent shapes. This can be
+implemented with two co-operating recursive macros \rightarrowfill
+\vadjust{\moveright384pt\vbox to 0pt{\vskip -138pt
+\centerline{\small\textit{This needs the \mpl{withalpha} macro given in §\ref{sec:transparent}}.}
+\smallmpexternal[firstline=10, lastline=48, xleftmargin=0pt, xrightmargin=-30pt]{tiling-ammann-procedures.mp}
+\vss}}
+
+The overlaps mean that much of the tiling is overlaid by other expansions which
+makes the resulting PDF rather large, and that you need to clip the final picture to
+the original shape. The uneven texture is apparent if you colour the tiles with
+transparent colours (although this is not unattractive):
+
+\noindent
+\vbox to 0pt{\noindent
+\centerline{\includegraphics{tiling-ammann.pdf}}
+\vss}
\newpage
-\section*{To do...}
+\subsection{Ammann A5 tiling improved}
-- angle marks, including curved angle marks
+\textsc{With some extra thought}, you can devise a substitution pattern that avoids
+the overlaps and makes a smaller tiling. The idea is to split the square in half,
+and make a macro that can do the top half or the bottom half as required.
-- drawing knots, double lines, ropes
+\smallskip
+\centerline{\includegraphics{tiling-ammann-substitutions-bounded.pdf}}
+\smallskip\noindent
+This requires an extra parameter for the new "half_square" macro to tell it which
+half to do, and two triangular paths for the upper and lower halves. Note that
+the second of these paths is reversed, which simplifies the macro.
+\vadjust{\moveright384pt\vbox to 0pt{\vskip -172pt
+\smallmpexternal[firstline=10, lastline=14, xleftmargin=0pt, xrightmargin=-30pt]{tiling-ammann-procedures.mp}
+\smallmpexternal[firstline=50, lastline=81, xleftmargin=0pt, xrightmargin=-30pt]{tiling-ammann-procedures.mp}
+\vss}}
-- decorating lines
+Now there is no overlapping of any of the tiles and the tiling does not overflow outside the original
+shape, and the colouring is uniform.
+$$\includegraphics[width=\textwidth]{tiling-ammann-bounded.pdf}$$
+In general, aperiodic tilings work best if you can find a set of recursive
+substitutions that are bounded within each parent shape.
-- the eye, hand
+\noindent\hey{\small Notice also the useful idiom \mpl{zscaled (b-a) shifted a} used
+with a “unit†shape.}
-- physics diagrams, pendulum, indicating movement and vibration
+\newpage
+\subsection{Penrose P2 tiling}
-- examining a glyph
+\textsc{The same techniques are useful} for generating the well-known aperiodic
+tilings discovered in the 1970s by the British polymath Sir Roger Penrose.
+This P2 tiling is also known as the “kite and dart†tiling.
+\vadjust{\moveright384pt\vbox to 0pt{\vskip
+-36pt\smallmpexternal[firstline=7, lastline=46, xleftmargin=0pt]{tiling-penrose-tatham-p2-kite-dart.mp}\vss}}
+The expansion rules used here are those documented by Simon Tatham.
+$$\includegraphics{tiling-penrose-tatham-p2-kite-dart-construction.pdf}$$
+Each of the shapes is split into two opposite triangles and the expansion rules
+applied separately. Only part of the edge of each triangle is drawn, so that the
+proper shapes appear in the final result. The patch below was clipped to a
+rectangle.
-- all sorts of arrow, arrows between arrows, arrows next to a path (handles)
+\bigskip
+\vbox to 2.4in{\noindent
+\includegraphics[width=\textwidth]{tiling-penrose-tatham-p2-kite-dart.pdf}
+\vss}
+\newpage
+\subsection{Penrose P3 tiling}
-- faking 3d
+\textsc{The final example} is Penrose's P3 tiling, composed of thick and thin
+rhombus shapes. There is no new \MP\ technique, but it is perhaps of mathematical
+interest that the code for P3 is so similar to P2 on the previous page.
+\vadjust{\moveright384pt\vbox to 0pt{\vskip -36pt
+\smallmpexternal[firstline=7, lastline=46, xleftmargin=0pt]{tiling-penrose-tatham-p3-rhombs.mp}
+\vss}}
+$$\includegraphics[scale=0.9]{tiling-penrose-tatham-p3-rhombs-construction.pdf}$$
+Each of the shapes is again split into two opposite triangles and the expansion rules
+applied separately, and only part of the edge of each triangle is drawn, so that the
+proper shapes appear in the final result.
+
+\bigskip
+\vbox to 2.4in{\noindent
+\includegraphics[width=\textwidth]{tiling-penrose-tatham-p3-rhombs.pdf}
+\vss}
-- functions, def, vardef, recursion, primarydef etc, of syntax, expr suffix text
-- four box model charts - Tufte charts - Venn diagrams
+% \newpage{Physics and engineering}
+% - the eye, hand
+% - physics diagrams, pendulum, indicating movement and vibration
-- tour of the plain format
+\newpage
+\tableofcontents
\end{document}
diff --git a/info/drawing-with-metapost/src/angles-lines.mp b/info/drawing-with-metapost/src/angles-lines.mp
deleted file mode 100644
index 5b2f3be14c..0000000000
--- a/info/drawing-with-metapost/src/angles-lines.mp
+++ /dev/null
@@ -1,78 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- % define a unit
- numeric u;
- u = 1cm;
-
- % define the axes
- path xx, yy;
- xx = (2 left -- 10 right) scaled u;
- yy = (down -- 7 up) scaled u;
-
- % and the angles
- numeric theta, psi;
- psi = 28;
- theta = 50;
-
- % and some points
- pair P, Q, H, N, M, T, L;
- P = (4, 3) scaled 1cm;
-
- % now some lines
- path ell, tee, arc;
- ell = (left--right) scaled 10u rotated theta shifted P cutbefore xx;
- tee = (left--right) scaled 10u rotated psi shifted P cutbefore xx;
-
- % this is a bit if a fiddle, but gets us a circular arc tangent to
- % the line tee at point P, which appears to be what is wanted....
- arc = subpath (1.6, 3.2) of halfcircle rotated -180 shifted 1/2 up
- scaled 10u shifted P rotatedabout(P, psi);
-
- % the rest of the points then follow...
- Q = ell intersectionpoint subpath (1.5, 3) of arc;
- H = P + whatever * dir psi;
- xpart H = xpart Q = xpart M; ypart M = ypart N = 0;
- xpart N = xpart P;
- L = point 0 of ell;
- T = point 0 of tee;
-
- % now we can get with the drawing
- draw arc dashed withdots scaled 1/4 withcolor 1/2 red;
- draw P--N dashed withdots scaled 1/2;
- draw Q--M dashed withdots scaled 1/2;
-
- drawarrow xx; label.rt("$x$", point 1 of xx);
- drawarrow yy; label.top("$y$", point 1 of yy);
-
- drawoptions(withcolor 2/3 blue);
- draw fullcircle scaled 32 shifted T cutafter tee;
- draw fullcircle scaled 28 shifted L cutafter ell;
- label("$\psi$", 24 right rotated 1/2 psi shifted T);
- label("$\theta$", 20 right rotated 1/2 theta shifted L);
- drawoptions();
-
- path boundary;
- z1 = point .95 of xx;
- z2 = point .95 of yy;
- boundary = z1--(x1,y2)--z2;
-
- draw ell cutafter boundary;
- draw tee cutafter boundary;
-
- % and finally label the points.
- label.bot("$T$", T);
- label.bot("$L$", L);
- label.bot("$N$", N);
- label.bot("$M$", M);
- dotlabel.ulft("$P$", P);
- dotlabel.lrt("$Q$", Q);
- dotlabel.lrt("$H$", H);
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/arbelos.mp b/info/drawing-with-metapost/src/arbelos.mp
deleted file mode 100644
index 7fe9bfc796..0000000000
--- a/info/drawing-with-metapost/src/arbelos.mp
+++ /dev/null
@@ -1,63 +0,0 @@
-\RequirePackage{luatex85}
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-% invert path or pair P in circle C
-vardef invert(expr P, C) =
- save I, r; pair I; numeric r;
- I = center C;
- r = abs(point 0 of C shifted -I);
- if pair P: if abs(P-I) > 0: unitvector(P-I) scaled (r/abs(P-I)*r) shifted fi I
- elseif path P:
- save T; numeric T;
- T = length P;
- for t=0 upto T-1: invert(point t of P, C) .. endfor if cycle P: cycle else: invert(point T of P, C) fi
- fi
-enddef;
-beginfig(1);
- pair A,B,C;
- A = origin; C = 244 right; B = 7/8[A, C];
-
- path c[];
- c1 = fullcircle scaled 2 abs(A-C); % large circle for the inversions
- c2 = fullcircle scaled abs(A-C) shifted 1/2[A,C];
- c3 = fullcircle scaled abs(A-B) shifted 1/2[A,B];
- c4 = fullcircle scaled abs(B-C) shifted 1/2[B,C];
- c5 = invert(c4,c1);
-
- numeric d; d = abs(point 0 of c5 - point 4 of c5); % diameter of c5
-
- drawoptions(withcolor 3/4 white);
- draw c4; draw c5;
- draw invert(subpath(0, 3/2) of c2, c1);
- draw invert(subpath(0, 3/2) of c3, c1);
- drawoptions();
-
- draw subpath(-1/4,1) of c1 withcolor 3/4[1/2 red,white];
- label.bot("\textit{circle of inversion}", point -1/4 of c1) withcolor 1/4[1/2 red, white];
-
- for i=1 upto 72:
- path c, c';
- c = c5 shifted (0, i*d);
- c' = invert(c, c1);
- if i<5:
- drawoptions(withcolor 3/4 white);
- draw c; draw origin -- center c;
- fill fullcircle scaled dotlabeldiam shifted center c;
- fill fullcircle scaled dotlabeldiam shifted center c';
- drawoptions();
- fi
- draw c' withpen pencircle scaled 1/4 withcolor 2/3 blue;
- endfor
-
- forsuffixes $=2,3,4: draw subpath (0,4) of c$
- withpen pencircle scaled 1/4 withcolor 2/3 blue;
- endfor
-
- draw A--C;
- dotlabel.lft("$A$", A); dotlabel.llft("$B$", B); dotlabel.rt("$C$", C);
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/arbelos.pdf b/info/drawing-with-metapost/src/arbelos.pdf
deleted file mode 100644
index df5f9a957f..0000000000
--- a/info/drawing-with-metapost/src/arbelos.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-3-4-3-4.mp b/info/drawing-with-metapost/src/arch-3-4-3-4.mp
deleted file mode 100644
index 42b01cb7eb..0000000000
--- a/info/drawing-with-metapost/src/arch-3-4-3-4.mp
+++ /dev/null
@@ -1,62 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-vardef median(expr p) = origin for i=1 upto length p: + point i of p / length p endfor enddef;
-beginfig(1);
- path s[], t[];
- s1 = unitsquare scaled 21 rotated 15;
- s2 = s1 rotated 150;
- t1 = subpath (4, 3) of s1 -- point 1 of s2 -- cycle;
- t2 = t1 reflectedabout(point 1 of t1, point 2 of t1);
- t3 = t1 rotated 150;
- t4 = t1 rotated 210;
-
- picture color_unit, grid_unit;
- color_unit = image(
- fill s1 withcolor Oranges 8 1;
- fill s2 withcolor Oranges 8 2;
- fill t1 withcolor Blues 8 1;
- fill t2 withcolor Blues 8 2;
- fill t3 withcolor Blues 8 3;
- fill t4 withcolor Blues 8 4;
- );
- grid_unit = image(
- forsuffixes $=s1, s2, t1, t2, t3, t4:
- draw $;
- % pair m; m = median($);
- % for i=1 upto length $:
- % draw m -- point i - 1/2 of $
- % withpen pencircle scaled 1/4;
- % endfor
- endfor
- );
-
- pair u, v;
- u = point 1 of s1 - point 1 of s2;
- v = u rotated 90;
-
- numeric n; n = 3;
- forsuffixes $=color_unit, grid_unit:
- for i=-n upto n:
- for j=-n upto n:
- draw $ shifted (i * u + j * v);
- endfor
- endfor
- endfor
- label.bot("The arrangement of polygons in the units was carefully", point 1/2 of bbox currentpicture
- shifted 21 down);
- label.bot("chosen to give the tiling neat edges." , point 1/2 of bbox currentpicture);
-
- path b; b = bbox currentpicture shifted 34 down;
- draw color_unit shifted point 1/4 of b;
- draw grid_unit shifted point 3/4 of b;
- path b; b = bbox currentpicture shifted 13 down;
- label("\texttt{color\_unit}", point 1/4 of b);
- label("\texttt{grid\_unit}", point 3/4 of b);
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/arch-3-4-3-4.pdf b/info/drawing-with-metapost/src/arch-3-4-3-4.pdf
deleted file mode 100644
index 1ceea33b78..0000000000
--- a/info/drawing-with-metapost/src/arch-3-4-3-4.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-3-4-6-4.mp b/info/drawing-with-metapost/src/arch-3-4-6-4.mp
deleted file mode 100644
index 0a7094be3b..0000000000
--- a/info/drawing-with-metapost/src/arch-3-4-6-4.mp
+++ /dev/null
@@ -1,54 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\mplibsetformat{metafun}
-\begin{mplibcode}
-input colorbrewer-rgb
-beginfig(1);
- numeric r; r = 5;
- path d; d = for i=1 upto 12:
- up scaled r
- shifted (r * (sqrt(3)+2), 0)
- rotated 30i --
- endfor cycle;
-
- color shade[];
- shade0 = Oranges 8 3;
- shade1 = Blues 8 3;
- shade2 = Greens 8 3;
- shade3 = Reds 8 3;
-
- vardef unit(expr n) = image(
- fill d withcolor transparent (2, .9, shade[n mod 4]);
- draw d;
- ) enddef;
- pair u, v;
- u = point 0 of d - point 3 of d;
- v = u rotated 60;
- numeric n; n = 6;
- for i=-n upto n:
- for j=-n upto n:
- draw unit(i*j) shifted ((i - floor(j / 2)) * u + j * v);
- endfor
- endfor
- clip currentpicture to unitsquare shifted -(1/2, 1/2) scaled (n * 9 r);
- picture p; p = image(
- draw d; draw point 0 of d withpen pencircle scaled 2;
- drawoptions(withcolor 3/4[red, white]);
- draw d shifted u; draw point 0 of d shifted u withpen pencircle scaled 2;
- drawoptions(withcolor 3/4[blue, white]);
- draw d shifted v; draw point 0 of d shifted v withpen pencircle scaled 2;
- drawoptions();
- drawarrow origin -- u withcolor red;
- drawarrow origin -- v withcolor blue;
- );
- label.bot(p, point 1/2 of bbox currentpicture shifted 13 down);
- label.bot(btex \vbox{\hsize 3.4in\noindent
- The vectors are chosen so that the dodecagons overlap to make
- the required triangles, squares, and hexagons.} etex,
- point 1/2 of bbox currentpicture shifted 13 down);
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/arch-3-4-6-4.pdf b/info/drawing-with-metapost/src/arch-3-4-6-4.pdf
deleted file mode 100644
index e145578609..0000000000
--- a/info/drawing-with-metapost/src/arch-3-4-6-4.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-4-6-12.mp b/info/drawing-with-metapost/src/arch-4-6-12.mp
deleted file mode 100644
index 8d8ddf2684..0000000000
--- a/info/drawing-with-metapost/src/arch-4-6-12.mp
+++ /dev/null
@@ -1,65 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input archimedean-tools
-input colorbrewer-rgb
-beginfig(1);
- path dodo, h[], s[];
- dodo = poly 12 of (origin -- 21 up);
- for i=1 upto 3:
- s[i] = poly 4 of subpath(2i, 2i-1) of dodo;
- endfor
- h1 = poly 6 of subpath (4, 3) of s1;
- h2 = poly 6 of subpath (2, 1) of s3;
-
- picture cols, lines;
- cols = image(
- fill dodo withcolor Greens 9 2;
- for i=1 upto 2:
- fill h[i] withcolor Greens 9 3;
- endfor
- for i=1 upto 3:
- fill s[i] withcolor Greens 9 4;
- endfor
- );
- lines = image(
- forsuffixes $=dodo, s1, s2, s3, h1, h2:
- if known $:
- draw $ withpen pencircle scaled 1/4;
- pair m; m = median($);
- for i=1 upto length $:
- cutdraw m -- point i - 1/2 of $
- if odd i: cutbefore fullcircle scaled (length $ / 4) shifted m fi
- withpen pencircle scaled 1/4
- withcolor Reds 4 3;
- ;
- endfor
- fi
- endfor
- );
-
- pair u, v;
- u = point 2 of s1 - point 8 of dodo;
- v = u rotated 60;
-
- numeric n;
- n = 2;
-
- forsuffixes @ = cols, lines:
- for i=-n upto n+1:
- for j=-n upto n:
- draw @ shifted (i*u + j*v - floor(i/2) * v);
- endfor
- endfor
- endfor
-
- clip currentpicture to unitsquare xscaled ((2n+1) * xpart u) yscaled (2n * ypart v)
- shifted median(s2 shifted (-n*u - n*v + floor(n/2) * v));
-
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/arch-4-6-12.pdf b/info/drawing-with-metapost/src/arch-4-6-12.pdf
deleted file mode 100644
index 4868f44da3..0000000000
--- a/info/drawing-with-metapost/src/arch-4-6-12.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-4-8-8.mp b/info/drawing-with-metapost/src/arch-4-8-8.mp
deleted file mode 100644
index 117588ff02..0000000000
--- a/info/drawing-with-metapost/src/arch-4-8-8.mp
+++ /dev/null
@@ -1,40 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\begin{mplibcode}
-beginfig(1);
-input colorbrewer-rgb
-path o, r[];
-o = (for i=0 upto 7: 21 dir 45i -- endfor cycle) rotated -90/4;
-pair t; t = whatever[point 0 of o, point 1 of o]
- = whatever[point 2 of o, point 3 of o];
-r1 = subpath (1,2) of o -- t -- cycle;
-r2 = r1 rotated 90;
-r3 = r2 rotated 90;
-r4 = r3 rotated 90;
-
-picture filler;
-filler = image(
- filldraw r1 withcolor Reds 8 3;
- filldraw r2 withcolor Blues 8 3;
- filldraw r3 withcolor Reds 8 3;
- filldraw r4 withcolor Blues 8 3;
- filldraw o withcolor Purples 8 2;
-);
-pair u, v;
-u = point 0 of o - point 5 of o; v = u rotated 90;
-beginfig(1);
-numeric n; n = 5;
-for i=-n upto n:
- for j=-n upto n:
- draw filler rotated ((i+j) mod 2 * 90) shifted (i*u + j * v);
- endfor
-endfor
-for i=-n upto n:
- for j=-n upto n:
- draw o shifted (i*u + j * v);
- endfor
-endfor
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/arch-4-8-8.pdf b/info/drawing-with-metapost/src/arch-4-8-8.pdf
deleted file mode 100644
index e5fa45dde0..0000000000
--- a/info/drawing-with-metapost/src/arch-4-8-8.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-hexagon.mp b/info/drawing-with-metapost/src/arch-hexagon.mp
deleted file mode 100644
index 0cb259d124..0000000000
--- a/info/drawing-with-metapost/src/arch-hexagon.mp
+++ /dev/null
@@ -1,59 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-input archimedean-tools
-beginfig(1);
-
- path h[];
- % 42/sqrt(3) \simeq 24.2487;
- for i=0 upto 2:
- h[i] = poly 6 of (origin -- 42 / sqrt(3) * dir (30 + 120i));
- endfor
-
- picture unit;
- unit = image(
- % fill h0 withcolor Purples 8 3;
- % fill h1 withcolor Oranges 8 3;
- % fill h2 withcolor Blues 8 2;
- numeric i; i = -1;
- forsuffixes $ = Purples, Oranges, Blues:
- pair m; m = median(h[incr i]);
- for j=1 upto 3:
- fill subpath (-2i+2j, 2-2i+2j) of h[i] -- m -- cycle withcolor $[8][1+j];
- endfor
- for j=1 upto 3:
- draw m -- point 2j of h[i] withcolor $[8][1];
- endfor
- endfor
-
- % for i=0 upto 2:
- % pair m; m = median(h[i]);
- % for j=0 upto 2:
- % draw point 2j+1/2 of h[i] -- m -- point 2j+3/2 of h[i];
- % endfor
- % endfor
- );
-
- pair u, v;
- u = point 3 of h1 - point 1 of h0;
- v = u rotated 60;
-
- numeric n;
- n = 4;
-
- for i=-n upto n:
- for j=-n upto n:
- draw unit shifted (i*u + j*v);
- endfor
- endfor
-
- clip currentpicture to superellipse(168 right, 168 up, 168 left, 168 down, 0.78);
-
-
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/arch-hst.mp b/info/drawing-with-metapost/src/arch-hst.mp
deleted file mode 100644
index ebcf5668d2..0000000000
--- a/info/drawing-with-metapost/src/arch-hst.mp
+++ /dev/null
@@ -1,62 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-input archimedean-tools
-beginfig(1);
- path t[], s[], h;
- h = poly 6 of (origin -- 42 dir 30);
- for i=1 upto 3:
- s[i] = poly 4 of subpath (2i, 2i-1) of h;
- endfor
- t1 = poly 3 of subpath (4, 3) of s1;
- t2 = poly 3 of subpath (2, 1) of s2;
-
- picture unit;
- unit = image(
- for i=1 upto 2:
- fill t[i] withcolor Blues 8 4;
- endfor
- for i=1 upto 3:
- fill s[i] withcolor Greens 8 1;
- endfor
- fill h withcolor Oranges 9 4;
- forsuffixes $=t1, t2:
- pair m; m = median($);
- for i=1 upto length $:
- draw m -- point i - 1/2 of $ withcolor Blues 8 8;
- endfor
- endfor
- forsuffixes $=s1, s2, s3:
- draw point 1/2 of $ -- point 5/2 of $ withcolor Oranges 8 8;
- draw point 3/2 of $ -- point 7/2 of $ withcolor Blues 8 8;
- endfor
- for i=1 upto 3:
- draw point i-1/2 of h -- point i+5/2 of h withcolor Oranges 8 8;
- endfor
- );
-
- pair u, v;
- u = point 2 of s1 - point -1 of h;
- v = u rotated 60;
-
- numeric n; n=4;
- for i=-n upto n:
- for j=-n upto n:
- draw unit rotated 0 shifted (i*u + j*v - floor (j/2) * u);
- endfor
- endfor
- %draw bbox unit withcolor red;
-
- clip currentpicture to fullcircle scaled (3/2n * abs(v));
-
- % picture p; p = currentpicture;
- % (wd, ht) = (urcorner p - llcorner p);
- % currentpicture := nullpicture;
- % p := p scaled (148.5mm / wd);
- % draw p;
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/arch-hst.pdf b/info/drawing-with-metapost/src/arch-hst.pdf
deleted file mode 100644
index 6d973adde9..0000000000
--- a/info/drawing-with-metapost/src/arch-hst.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-snub-hex-parts.mp b/info/drawing-with-metapost/src/arch-snub-hex-parts.mp
deleted file mode 100644
index bf3ff14355..0000000000
--- a/info/drawing-with-metapost/src/arch-snub-hex-parts.mp
+++ /dev/null
@@ -1,49 +0,0 @@
-input colorbrewer-rgb
-input archimedean-tools
-path t[], h;
-h = poly 6 of (origin -- 21 dir 30);
-for i=1 upto 6:
- t[i] = poly 3 of subpath (i, i-1) of h;
-endfor
-picture P[], unit[];
-for k=1 upto 2:
- pair u, v;
- if k=1:
- u = point 2 of h - point 2 of t6;
- t7 := poly3 of subpath (0, -1) of t6;
- t8 := poly3 of subpath (0, -1) of t3;
- else:
- u = point 3 of h - point 2 of t6;
- t7 := poly3 of subpath (2, 1) of t6;
- t8 := poly3 of subpath (2, 1) of t3;
- fi
-
- v = u rotated -60;
-
- unit[k] = image(
- for i=1 upto 6:
- fill t[i] withcolor Blues 8 if odd i: 2 else: 3 fi;
- endfor
- for i=7 upto 8:
- fill t[i] withcolor Oranges 8 if odd i: 3 else: 2 fi;
- endfor
- fill h withcolor Oranges 8 2;
- forsuffixes $=h, t1, t2, t3, t4, t5, t6, t7, t8:
- draw $ withpen pencircle scaled 1/4 withcolor 3/4;
- pair m; m = median($);
- for i=1 upto length $:
- draw m -- point i - 1/2 of $ withcolor 3/4;
- endfor
- endfor
- );
-
- numeric n; n=4;
- P[k] = image(
- for i=-n upto n:
- for j=-n upto n:
- draw unit[k] shifted (i*u + j*v - floor (j/2) * u);
- endfor
- endfor
- clip currentpicture to superellipse(168 right, 168 up, 168 left, 168 down, 0.78);
- );
-endfor
diff --git a/info/drawing-with-metapost/src/arch-snub-hexagon-unit.mp b/info/drawing-with-metapost/src/arch-snub-hexagon-unit.mp
deleted file mode 100644
index b5200f6a6f..0000000000
--- a/info/drawing-with-metapost/src/arch-snub-hexagon-unit.mp
+++ /dev/null
@@ -1,12 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input arch-snub-hex-parts
-beginfig(1);
- draw unit1 rotated 210;
- draw unit2 rotated 210 shifted 100 left;
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/arch-snub-hexagon-unit.pdf b/info/drawing-with-metapost/src/arch-snub-hexagon-unit.pdf
deleted file mode 100644
index 1dd83c0b0d..0000000000
--- a/info/drawing-with-metapost/src/arch-snub-hexagon-unit.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-snub-hexagon.pdf b/info/drawing-with-metapost/src/arch-snub-hexagon.pdf
deleted file mode 100644
index aed6e4d102..0000000000
--- a/info/drawing-with-metapost/src/arch-snub-hexagon.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-snub-square.pdf b/info/drawing-with-metapost/src/arch-snub-square.pdf
deleted file mode 100644
index 4cc73ce6e5..0000000000
--- a/info/drawing-with-metapost/src/arch-snub-square.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-square.mp b/info/drawing-with-metapost/src/arch-square.mp
deleted file mode 100644
index 3511abf4e9..0000000000
--- a/info/drawing-with-metapost/src/arch-square.mp
+++ /dev/null
@@ -1,39 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-input archimedean-tools
-beginfig(1);
-
- path s;
- s = poly 4 of (origin -- 42 right);
- pair m;
- m = median(s);
-
- picture unit[];
- unit0 = image(
- fill s withcolor Oranges 8 5;
- for i=1 upto length s:
- draw m -- point i-1/2 of s;
- endfor<D-`>
-
- );
- unit1 = image(fill s withcolor Blues 8 4);
-
-
- pair u, v;
- u = point 1 of s - point 0 of s;
- v = point 3 of s - point 0 of s;
-
-
- numeric n;
- n = 4
-
-
-
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/arch-triangle.mp b/info/drawing-with-metapost/src/arch-triangle.mp
deleted file mode 100644
index cc80674664..0000000000
--- a/info/drawing-with-metapost/src/arch-triangle.mp
+++ /dev/null
@@ -1,45 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-input archimedean-tools
-beginfig(1);
-
- path s, t;
- s = poly 3 of (origin -- 42 right);
- t = poly 3 of subpath(2,1) of s;
- pair ms, mt;
- ms = median(s);
- mt = median(t);
-
- picture unit;
- unit = image(
- fill s withcolor Oranges 8 3;
- fill t withcolor Blues 8 2;
- draw point 5/2 of s -- ms;
- draw point 3/2 of t -- mt;
- draw point 1/2 of s -- ms -- mt -- point 5/2 of t;
- );
-
- pair u, v;
- u = point 1 of s - point 0 of s;
- v = point 2 of s - point 0 of s;
-
- numeric n;
- n = 0;
-
- for i=-n upto n:
- for j=-n upto n:
- draw unit shifted (i*u + j*v);
- endfor
- endfor
-
- clip currentpicture to superellipse(168 right, 168 up, 168 left, 168 down, 0.78);
-
-
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/archimedean-tools.mp b/info/drawing-with-metapost/src/archimedean-tools.mp
deleted file mode 100644
index e10c8f447f..0000000000
--- a/info/drawing-with-metapost/src/archimedean-tools.mp
+++ /dev/null
@@ -1,33 +0,0 @@
-% a polygon of n sides on a given path
-vardef poly expr n of p =
- save x, y;
- z0 = point 0 of p;
- z1 = point 1 of p;
- for i=2 upto n-1:
- z[i] = z[i-2] rotatedabout(z[i-1], 180(2/n-1));
- endfor
- for i=0 upto n-1: z[i] -- endfor cycle
-enddef;
-vardef polyc expr n of p =
- save x, y;
- z0 = point 0 of p;
- z1 = point 1 of p;
- for i=2 upto n-1:
- z[i] = z[i-2] rotatedabout(z[i-1], 180(2/n-1));
- endfor
- for i=0 upto n-1: z[i] ... endfor cycle
-enddef;
-
-% a polygon of n sides of a given length
-vardef polya(expr n, s) =
- save r, x, y; numeric r, x, y;
- (x, y) = dir (180/n);
- 2r = s * x / y;
- for i=0 upto n-1:
- (left * s/2) shifted (r * down) rotated (360 / n * i) --
- endfor cycle
-enddef;
-vardef median(expr P) =
- (origin for i=1 upto length P: + point i of P endfor) / length P
-enddef;
-
diff --git a/info/drawing-with-metapost/src/archimedes.pdf b/info/drawing-with-metapost/src/archimedes.pdf
deleted file mode 100644
index ead562d6f9..0000000000
--- a/info/drawing-with-metapost/src/archimedes.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/area-under-graph.mp b/info/drawing-with-metapost/src/area-under-graph.mp
deleted file mode 100644
index e9dc5f5886..0000000000
--- a/info/drawing-with-metapost/src/area-under-graph.mp
+++ /dev/null
@@ -1,37 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-ahangle := 30;
-beginfig(1);
- numeric u;
- u = 1cm;
- path xx, yy, f;
- xx = (1/4 left -- 17/4 right) scaled u;
- yy = (1/4 down -- 9/4 up) scaled u;
-
- f = ((15/32,32/15) for x = 1/2 step 1/8 until 33/8: .. (x,1/x) endfor) scaled u;
-
- path A;
- A = buildcycle(yy shifted (u,0), f, yy shifted (2.71828u,0), xx);
- fill A withcolor Blues 8 2;
-
- drawoptions(withcolor 3/4);
- for x=1 upto 4:
- draw yy shifted (x*u,0) cutafter (xx shifted (0, ypart point 0 of f));
- endfor
- for y=1 upto 2:
- draw xx shifted (0,y*u) cutafter (yy shifted (xpart point infinity of f,0));
- endfor
-
- drawoptions();
- draw f withcolor Reds 8 7;
- drawarrow xx;
- drawarrow yy;
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/area-under-graph.pdf b/info/drawing-with-metapost/src/area-under-graph.pdf
deleted file mode 100644
index 8230d85b40..0000000000
--- a/info/drawing-with-metapost/src/area-under-graph.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/automatic-grid.mp b/info/drawing-with-metapost/src/automatic-grid.mp
new file mode 100644
index 0000000000..a6a59ced16
--- /dev/null
+++ b/info/drawing-with-metapost/src/automatic-grid.mp
@@ -0,0 +1,16 @@
+vardef grid(expr p, grid_unit) =
+ save llx, lly, urx, ury;
+ (llx, lly) = llcorner p - (bboxmargin, bboxmargin);
+ (urx, ury) = urcorner p + (bboxmargin, bboxmargin);
+ image(
+ for x = 1 + floor(llx / grid_unit) upto floor(urx / grid_unit):
+ draw (x * grid_unit, lly) -- (x * grid_unit, ury);
+ endfor
+ for y = 1 + floor(lly / grid_unit) upto floor(ury / grid_unit):
+ draw (llx, y * grid_unit) -- (urx, y * grid_unit);
+ endfor
+ if (llx < 0) and (lly < 0) and (urx > 0) and (ury > 0):
+ draw fullcircle scaled 3; % show origin if in range
+ fi
+ )
+enddef;
diff --git a/info/drawing-with-metapost/src/basedate.mp b/info/drawing-with-metapost/src/basedate.mp
index f91c360894..f355ce991f 100644
--- a/info/drawing-with-metapost/src/basedate.mp
+++ b/info/drawing-with-metapost/src/basedate.mp
@@ -1,11 +1,7 @@
vardef base(expr Y, M, d) =
- save m, y; numeric m, y;
- if M < 3:
- m = M + 9;
- y = Y - 1;
- else:
- m = M - 3;
- y = Y;
- fi
- 365/1024 y + (floor(y/4) - floor(y/100) + floor(y/400) + floor((2+3m)/5) + 30m + d - 307) / 1024
+ save m, y;
+ if M < 3: m = M + 9; y = Y - 1;
+ else: m = M - 3; y = Y; fi
+ 365/1024 y + (floor(y/4) - floor(y/100) + floor(y/400)
+ + floor((2+3m)/5) + 30m + d - 307) / 1024
enddef;
diff --git a/info/drawing-with-metapost/src/blended-color-circles.mp b/info/drawing-with-metapost/src/blended-color-circles.mp
deleted file mode 100644
index 4da586d64b..0000000000
--- a/info/drawing-with-metapost/src/blended-color-circles.mp
+++ /dev/null
@@ -1,44 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\usepackage{fontspec}
-\setmainfont{Helvetica}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-
-path C[], B[];
-
-% arrange each circle so that point 0 is outside the others
-C1 = fullcircle scaled 120 rotated 90 shifted 40 up;
-C2 = C1 rotated 120;
-C3 = C2 rotated 120;
-
-B0 = buildcycle(C1, C2, C3);
-B1 = buildcycle(C1, C2);
-B2 = buildcycle(C2, C3);
-B3 = buildcycle(C3, C1);
-
-picture P;
-for x=0 upto 1:
- for y=0 upto 1:
- P := image(
- s := 1/4 + x/2;
- k := 0 + y/4;
- fill C1 withcolor s*(1,0,0,k);
- fill C2 withcolor s*(0,1,0,k);
- fill C3 withcolor s*(0,0,1,k);
- fill B3 withcolor s*(1,0,1,k);
- fill B2 withcolor s*(0,1,1,k);
- fill B1 withcolor s*(1,1,0,k);
- fill B0 withcolor s*(1,1,1,k);
- undraw C1; undraw C2; undraw C3;
- ) shifted -(200x, 200y);
- draw P;
- label.bot(("shade: " & decimal s & ", k: " & decimal k)
- infont "phvr8r", point 1/2 of bbox P);
- endfor
-endfor
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/blended-color-circles.pdf b/info/drawing-with-metapost/src/blended-color-circles.pdf
deleted file mode 100644
index d5b4b4c631..0000000000
--- a/info/drawing-with-metapost/src/blended-color-circles.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/border-dashed.pdf b/info/drawing-with-metapost/src/border-dashed.pdf
deleted file mode 100644
index 0f46ba0340..0000000000
--- a/info/drawing-with-metapost/src/border-dashed.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/border-shadow.pdf b/info/drawing-with-metapost/src/border-shadow.pdf
deleted file mode 100644
index 5ba2540848..0000000000
--- a/info/drawing-with-metapost/src/border-shadow.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/border.mp b/info/drawing-with-metapost/src/border.mp
deleted file mode 100644
index 71dd27309b..0000000000
--- a/info/drawing-with-metapost/src/border.mp
+++ /dev/null
@@ -1,50 +0,0 @@
-\documentclass[border=2mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-input rope
-beginfig(1);
-
- interim ahangle := 30;
-
- z0 = 42 left rotated normaldeviate;
- z1 = 30 up rotated normaldeviate;
- z2 = 31 right rotated normaldeviate;
- z3 = 34 down rotated normaldeviate;
-
- path s[];
- for i=0 upto 3:
- s[i] = unitsquare zscaled (z[(i+1) mod 4] - z[i]) shifted z[i];
- fill s[i] withcolor if odd i: Blues else: Oranges fi 8 1;
- draw point 3 of s[i] -- subpath (1,4) of s[i] -- point 2 of s[i] withcolor 3/4;
- drawarrow subpath (0, 1) of s[i];
- z[i+4] = 1/2[point 0 of s[i], point 2 of s[i]];
- endfor
-
- z8 = whatever[z4, z6] = whatever[z5, z7];
-
- draw unitsquare scaled 5 rotated angle (z4-z6) shifted z8 withcolor 3/4;
-
- drawarrow z4--z6;
- drawarrow z5--z7;
-
- vardef with_rounded_corners expr p =
- for i=1 upto length p:
- subpath (i-15/16, i-1/16) of p ..
- endfor cycle
- enddef;
-
- interim bboxmargin := 16;
- draw rope with_rounded_corners bbox currentpicture;
- % dashed evenly scaled 3/4;
- %picture P; P = currentpicture;
- %fill bbox P shifted (3,-3) withcolor 3/4;
- %unfill bbox P; draw bbox P;
- %draw P;
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/border.pdf b/info/drawing-with-metapost/src/border.pdf
deleted file mode 100644
index 3b1e9fcd6f..0000000000
--- a/info/drawing-with-metapost/src/border.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/braces.mp b/info/drawing-with-metapost/src/braces.mp
deleted file mode 100644
index 454adfb42a..0000000000
--- a/info/drawing-with-metapost/src/braces.mp
+++ /dev/null
@@ -1,44 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-vardef do_brace(expr a,b,m,r) =
- save d, e, n, bb;
- numeric d, n; pair e; path bb;
- d = angle (b-a);
- e = up scaled m rotated d shifted r[a,b];
- n = 1/2 m;
- bb = (
- (origin {0,n} .. {right} (abs n,n))
- rotated d shifted a
- --
- ((-abs n,-n) {right} .. {0,n} origin {0,-n} .. {right}(abs n,-n))
- rotated d shifted e
- --
- ((-abs n,n){right}..{0,-n}origin)
- rotated d shifted b
- ) shifted (up scaled n rotated d);
- draw bb withpen pencircle yscaled .6 xscaled .1666 rotated d;
- point 3 of bb
-enddef;
-beginfig(1);
-
-z1 = origin;
-z2 = 180 right rotated 13;
-draw z1--z2 withcolor .7 white;
-dotlabel.llft("$z_1$",z1);
-dotlabel.urt("$z_2$",z2);
-
-begingroup; interim ahangle := 180; interim ahlength := 3;
-drawdblarrow (z1--z2) shifted (12 up rotated angle (z2-z1)) withcolor 2/3 blue;
-endgroup;
-
-drawoptions(withcolor 2/3 red);
-label.lrt("Here",do_brace(z1,z2,-12,3/4));
-drawoptions();
-
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/brachisto.mp b/info/drawing-with-metapost/src/brachisto.mp
deleted file mode 100644
index aab584db00..0000000000
--- a/info/drawing-with-metapost/src/brachisto.mp
+++ /dev/null
@@ -1,56 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-
- path Y, L, C, P, S;
-
- % cycloid
- numeric r, s; r = 160;
- def sin(expr x) = sind( 57.29577951308232 x) enddef;
- def cos(expr x) = cosd( 57.29577951308232 x) enddef;
- vardef u(expr x) = x - sin(x) enddef;
- vardef v(expr x) = 1 - cos(x) enddef;
- vardef f(expr t) = u(t) < v(t) enddef;
- tolerance := epsilon;
- numeric a; a = solve f(2,3);
-
- Y = (origin for t = 1 upto 128: -- (u(t / 128 * a), -v(t / 128 * a)) endfor) scaled r;
-
- % Y = origin for t=5 step 5 until 140:
- % -- (0, r) rotated t shifted (t / 57.29577951308232 * r, -r)
- % endfor cutafter (origin -- 4r * dir -45);
-
- z0 = point 0 of Y;
- z1 = point infinity of Y;
-
- % line
- L = z0 -- z1;
-
- % circle
- C = quartercircle rotated 180 scaled 2x1 shifted (x1, y0);
-
- % parabola f = x^2, f' = 2x
- P = z0{1,-2} ... (xpart 1/2[z1, z0], ypart 1/4[z1, z0]){1,-1} ... z1 {1, 0};
-
- % sixth degree f = x^6, f' = 6x^5
- S = z0{1,-6} ... (xpart 1/2[z1, z0], ypart 1/64[z1, z0]){1, -6/32} ... z1 {1, 0};
-
- % axes
- draw z0 -- (x0,y1) -- z1 withcolor 3/4;
-
- drawoptions(withcolor 2/3 red); draw L; dotlabel.urt("Line", point 1/4 of L);
- drawoptions(withcolor 1/2 green); draw C; dotlabel.urt("Circle", point 1 of C);
- drawoptions(withcolor 1/4[red, green]); draw P; dotlabel.urt("Parabola", point 1/2 of P);
- drawoptions(withcolor 3/4[red, green]); draw S; dotlabel.llft("Sixth degree", point 3/4 of S);
- drawoptions(withcolor 1/2 blue); draw Y; dotlabel.urt("Cycloid", point 100 of Y);
- drawoptions();
-
- dotlabel.ulft("$A$", z0);
- dotlabel.urt("$B$", z1);
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/brexit-map.mp b/info/drawing-with-metapost/src/brexit-map.mp
deleted file mode 100644
index 5f3f68d6b4..0000000000
--- a/info/drawing-with-metapost/src/brexit-map.mp
+++ /dev/null
@@ -1,99 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\mplibtextextlabel{enable}
-\begin{document}
-\begin{mplibcode}
-input london-boroughs
-input colorbrewer-rgb
-vardef median(expr p) =
- save n; numeric n; n = length p;
- 1/n * point 0 of p for i=1 upto n: + 1/n * point i of p endfor
-enddef;
-
-beginfig(1);
-
-fill Barking_and_Dagenham withcolor 0.638 [white, RdYlBu 9 3]; draw Barking_and_Dagenham;
-fill Barnet withcolor 0.721 [white, RdYlBu 9 6]; draw Barnet;
-fill Bexley withcolor 0.752 [white, RdYlBu 9 3]; draw Bexley;
-fill Brent withcolor 0.650 [white, RdYlBu 9 5]; draw Brent;
-fill Bromley withcolor 0.788 [white, RdYlBu 9 5]; draw Bromley;
-fill Camden withcolor 0.654 [white, RdYlBu 9 7]; draw Camden;
-fill City_of_London withcolor 0.735 [white, RdYlBu 9 7]; draw City_of_London;
-fill Croydon withcolor 0.698 [white, RdYlBu 9 5]; draw Croydon;
-fill Ealing withcolor 0.700 [white, RdYlBu 9 5]; draw Ealing;
-fill Enfield withcolor 0.690 [white, RdYlBu 9 5]; draw Enfield;
-fill Greenwich withcolor 0.695 [white, RdYlBu 9 5]; draw Greenwich;
-fill Hackney withcolor 0.651 [white, RdYlBu 9 7]; draw Hackney;
-fill Hammersmith_and_Fulham withcolor 0.699 [white, RdYlBu 9 6]; draw Hammersmith_and_Fulham;
-fill Haringey withcolor 0.705 [white, RdYlBu 9 7]; draw Haringey;
-fill Harrow withcolor 0.722 [white, RdYlBu 9 5]; draw Harrow;
-fill Havering withcolor 0.760 [white, RdYlBu 9 3]; draw Havering;
-fill Hillingdon withcolor 0.689 [white, RdYlBu 9 4]; draw Hillingdon;
-fill Hounslow withcolor 0.697 [white, RdYlBu 9 5]; draw Hounslow;
-fill Islington withcolor 0.703 [white, RdYlBu 9 7]; draw Islington;
-fill Kensington_and_Chelsea withcolor 0.659 [white, RdYlBu 9 6]; draw Kensington_and_Chelsea;
-fill Kingston_upon_Thames withcolor 0.783 [white, RdYlBu 9 6]; draw Kingston_upon_Thames;
-fill Lambeth withcolor 0.673 [white, RdYlBu 9 7]; draw Lambeth;
-fill Lewisham withcolor 0.630 [white, RdYlBu 9 6]; draw Lewisham;
-fill Merton withcolor 0.734 [white, RdYlBu 9 6]; draw Merton;
-fill Newham withcolor 0.592 [white, RdYlBu 9 5]; draw Newham;
-fill Redbridge withcolor 0.675 [white, RdYlBu 9 5]; draw Redbridge;
-fill Richmond_upon_Thames withcolor 0.820 [white, RdYlBu 9 6]; draw Richmond_upon_Thames;
-fill Southwark withcolor 0.661 [white, RdYlBu 9 7]; draw Southwark;
-fill Sutton withcolor 0.760 [white, RdYlBu 9 4]; draw Sutton;
-fill Tower_Hamlets withcolor 0.645 [white, RdYlBu 9 6]; draw Tower_Hamlets;
-fill Waltham_Forest withcolor 0.666 [white, RdYlBu 9 5]; draw Waltham_Forest;
-fill Wandsworth withcolor 0.719 [white, RdYlBu 9 7]; draw Wandsworth;
-fill Westminster withcolor 0.649 [white, RdYlBu 9 6]; draw Westminster;
-
-label("\tiny Barking \& Dagenham", median(Barking_and_Dagenham));
-label("\tiny Barnet", median(Barnet));
-label("\tiny Bexley", median(Bexley));
-label("\tiny Brent", median(Brent));
-label("\tiny Bromley", median(Bromley));
-label("\tiny Camden", median(Camden));
-label("\tiny City of London", median(City_of_London));
-label("\tiny Croydon", median(Croydon));
-label("\tiny Ealing", median(Ealing));
-label("\tiny Enfield", median(Enfield));
-label("\tiny Greenwich", median(Greenwich));
-label("\tiny Hackney", median(Hackney));
-label(TEX("\tiny Hammersmith \& Fulham") rotated -62, median(Hammersmith_and_Fulham));
-label("\tiny Haringey", median(Haringey));
-label("\tiny Harrow", median(Harrow));
-label("\tiny Havering", median(Havering));
-label("\tiny Hillingdon", median(Hillingdon));
-label("\tiny Hounslow", median(Hounslow) shifted 12 left);
-label("\tiny Islington", median(Islington));
-label(TEX("\tiny Kensington \& Chelsea") rotated -54, median(Kensington_and_Chelsea));
-label(TEX("\tiny Kingston upon Thames") rotated 66, median(Kingston_upon_Thames));
-label("\tiny Lambeth", median(Lambeth));
-label("\tiny Lewisham", median(Lewisham));
-label("\tiny Merton", median(Merton));
-label("\tiny Newham", median(Newham));
-label("\tiny Redbridge", median(Redbridge));
-label("\tiny Richmond upon Thames", median(Richmond_upon_Thames));
-label("\tiny Southwark", median(Southwark));
-label("\tiny Sutton", median(Sutton));
-label("\tiny Tower Hamlets", median(Tower_Hamlets));
-label("\tiny Waltham Forest", median(Waltham_Forest));
-label("\tiny Wandsworth", median(Wandsworth));
-label("\tiny Westminster", median(Westminster));
-
-label("\tiny Barking \& Dagenham", median(Barking_and_Dagenham));
-picture legend; legend = image(
-numeric s; s = 10;
-for i = 1 upto 9:
- fill unitsquare scaled s shifted (i*s, 0) withcolor RdYlBu [9][i];
- if i > 1: draw (i*s, 0) -- (i*s, s); fi
-endfor
-draw unitsquare xscaled 9s yscaled s shifted (s,0);
-label.top("Remain" infont "phvr8r", (10s, s));
-label.top("Leave" infont "phvr8r", (s, s)););
-label.ulft(legend, point 1 of bbox currentpicture);
-label.lrt("Brexit vote in London 2016" infont "phvr8r", point 3 of bbox currentpicture);
-
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/brexit-map.pdf b/info/drawing-with-metapost/src/brexit-map.pdf
deleted file mode 100644
index 28b46ecadb..0000000000
--- a/info/drawing-with-metapost/src/brexit-map.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/brown3a.pdf b/info/drawing-with-metapost/src/brown3a.pdf
deleted file mode 100644
index 6759b504a0..0000000000
--- a/info/drawing-with-metapost/src/brown3a.pdf
+++ /dev/null
@@ -1,8196 +0,0 @@
-%PDF-1.3
-%âãÏÓ
-2 0 obj
-<<
-/Length 395073
->>
-stream
-0.333 0.333 1 RG
-1 J 1 j 0.48 w 10 M []0 d
-/GS1 gs
-1 i
-397 312 m
-397.509 311.707 398.102 311.594 398.683 311.68 c
-402.325 312.217 403.189 317.651 399.197 320.387 c
-397.182 321.769 394.498 321.883 392.769 320.244 c
-390.668 318.251 390.753 313.916 387.558 313.678 c
-383.95 313.409 383.851 318.247 383.328 322.265 c
-383.227 323.038 382.977 323.838 382.287 324.174 c
-380.51 325.038 379.532 322.494 377.957 321.676 c
-375.633 320.47 372.875 322.591 373.14 325.506 c
-373.275 326.996 374.356 328.262 375.744 328.109 c
-376.526 328.023 377.132 327.452 377.586 326.804 c
-378.808 325.061 379.756 322.653 381.806 323.014 c
-383.037 323.231 383.733 324.459 383.889 325.746 c
-384.71 332.523 376.677 333.129 376.049 329.004 c
-375.884 327.919 376.6 326.938 377.581 326.392 c
-379.581 325.281 382.276 324.39 381.309 322.565 c
-379.651 319.435 377.549 324.298 375.248 327.599 c
-374.515 328.65 373.152 329.056 372.364 328.24 c
-371.944 327.805 371.928 327.159 371.826 326.566 c
-371.626 325.412 370.91 324.348 369.808 324.346 c
-368.692 324.344 367.976 325.555 366.878 325.662 c
-361.27 326.208 367.183 319.425 367.119 315.433 c
-367.108 314.735 366.846 314.057 366.892 313.36 c
-367.058 310.862 370.045 309.869 371.457 311.655 c
-373.131 313.773 372.301 320.838 375.313 317.657 c
-377.124 315.744 373.122 314.567 373.015 312.833 c
-372.889 310.775 375.908 309.8 378.212 311.777 c
-378.968 312.427 379.907 313.013 380.498 312.377 c
-383.532 309.112 376.267 310.365 376.033 308.92 c
-375.981 308.599 376.106 308.269 376.391 308.125 c
-380.503 306.045 376.105 312.193 376.876 313.134 c
-378.426 315.025 380.272 311.885 378.38 311.426 c
-377.48 311.207 377.433 312.608 376.742 312.873 c
-372.691 314.428 376.879 309.245 381.322 308.443 c
-384.522 307.865 384.068 303.222 381.103 299.529 c
-380.007 298.163 379.008 296.554 379.517 294.906 c
-379.598 294.645 379.718 294.398 379.87 294.171 c
-380.985 292.505 383.224 292.229 385.216 292.806 c
-389.992 294.189 390.864 299.464 387.764 300.859 c
-386.105 301.604 384.759 300.075 385.474 299.055 c
-386.046 298.24 388.759 298.304 387.643 297.041 c
-387.142 296.474 386.484 297.279 385.816 297.676 c
-384.501 298.457 381.646 296.376 381.25 298.593 c
-381.197 298.887 381.298 299.179 381.365 299.469 c
-382.358 303.749 380.69 310.532 384.997 308.878 c
-387.401 307.955 386.388 304.524 384.017 301.918 c
-383.016 300.816 381.895 299.603 380.462 299.87 c
-378.909 300.158 378.389 301.919 377.455 303.163 c
-375.624 305.604 372.644 304.405 372.985 302.618 c
-373.185 301.566 374.998 301.092 374.556 299.902 c
-373.889 298.102 370.733 299.84 371.388 303.864 c
-372.017 307.736 370.321 313.036 374.309 313.584 c
-379.38 314.281 384.106 319.851 379.588 318.386 c
-379.038 318.207 378.777 317.436 378.163 317.482 c
-375.978 317.645 377.578 322.126 380.635 319.942 c
-382.397 318.682 382.094 316.31 380.523 316.042 c
-379.34 315.84 377.671 317.634 377.01 316.166 c
-376.348 314.696 378.841 314.273 381.352 315.795 c
-385.292 318.182 388.605 313.198 392.274 310.26 c
-393.132 309.573 393.975 308.681 393.454 307.847 c
-392.932 307.011 391.718 307.326 390.787 308.018 c
-388.483 309.727 385.786 311.551 383.797 309.82 c
-382.427 308.627 382.786 306.517 384.317 306.149 c
-387.903 305.286 386.207 310.764 387.772 312.846 c
-388.934 314.392 392.076 314.989 391.138 317.01 c
-390.233 318.962 386.51 318.006 386.431 314.277 c
-386.403 312.95 386.742 311.652 387.244 310.424 c
-388.216 308.048 389.805 305.81 389.635 303.231 c
-389.456 300.529 387.374 298.411 386.695 295.81 c
-386.25 294.106 386.436 292.328 386.668 290.585 c
-386.907 288.797 387.191 287.016 387.525 285.244 c
-387.674 284.453 387.833 283.664 388.028 282.883 c
-389.062 278.751 387.096 275.286 384.772 276.449 c
-382.951 277.36 383.444 280.231 385.81 281.618 c
-386.482 282.011 387.212 282.289 387.907 282.638 c
-389.926 283.655 391.439 285.611 390.549 287.436 c
-388.515 291.609 383.787 287.419 386.3 285.372 c
-387.498 284.396 388.648 286.167 389.969 286.78 c
-390.65 287.096 391.43 287.038 392.161 287.192 c
-395.982 287.994 396.566 292.641 397.506 296.563 c
-397.769 297.656 397.888 298.904 396.953 299.34 c
-396.192 299.694 395.413 299.075 394.604 298.985 c
-390.582 298.535 391.716 303.963 394.231 302.812 c
-394.511 302.684 394.689 302.396 394.976 302.283 c
-398.361 300.948 395.662 306.315 396.843 307.063 c
-398.223 307.936 399.343 305.591 400.708 305.956 c
-402.123 306.334 401.71 308.199 401.506 309.8 c
-401.174 312.405 402.92 314.777 405.444 315.649 c
-406.348 315.961 407.386 316.125 407.891 316.942 c
-408.697 318.245 407.412 320.606 409.129 321.263 c
-416.002 323.894 408.92 313.072 411.881 312.51 c
-413.706 312.164 414.204 314.852 415.806 315.197 c
-418.581 315.794 419.666 311.342 416.618 307.295 c
-415.629 305.981 414.479 304.539 412.927 304.865 c
-410.756 305.32 409.686 310.487 407.106 308.349 c
-405.53 307.044 407.026 304.035 409.918 304.615 c
-413.077 305.248 416.652 306.034 415.99 303.611 c
-415.776 302.828 414.807 302.027 415.516 301.494 c
-416.408 300.823 416.922 302.397 416.733 304.177 c
-416.49 306.467 419.683 307.813 419.28 310.126 c
-418.519 314.502 412.493 312.525 413.927 309.094 c
-414.812 306.976 417.61 308.569 419.542 308.016 c
-424.855 306.494 419.726 300.021 420.391 295.617 c
-420.623 294.076 421.347 292.318 420.07 291.487 c
-418.912 290.732 417.402 291.937 416.206 291.297 c
-414.194 290.22 415.584 287.13 418.742 285.537 c
-420.707 284.546 422.515 282.94 422.027 280.947 c
-421.349 278.174 417.303 278.444 416.037 276.082 c
-414.119 272.502 418.743 270.554 419.849 272.947 c
-420.581 274.531 418.256 275.39 417.86 276.837 c
-417.136 279.476 420.653 280.867 421.868 278.664 c
-424.763 273.414 410.69 276.394 413.654 271.105 c
-417.813 263.684 419.083 277.641 422.046 278.472 c
-426.693 279.777 428.55 272.376 423.433 271.39 c
-422.125 271.138 420.863 271.982 420.914 273.209 c
-420.991 275.061 423.598 275.768 425.493 274.152 c
-427.796 272.187 430.403 269.977 431.481 272.155 c
-432.769 274.76 428.182 275.439 428.022 277.61 c
-427.815 280.419 432.261 280.331 432.801 282.734 c
-433.275 284.843 430.878 286.083 428.586 286.868 c
-426.997 287.412 425.435 288.153 424.41 289.484 c
-422.354 292.153 424.553 294.968 426.36 294.054 c
-426.991 293.735 427.179 292.962 427.659 292.456 c
-429.289 290.735 435.69 292.06 433.654 288.548 c
-432.819 287.107 430.843 288.185 429.267 289.585 c
-428.009 290.702 426.418 291.393 424.737 291.414 c
-423.781 291.426 422.837 290.993 422.876 290.162 c
-423.021 287.057 433.387 296.066 430.077 289.23 c
-429.573 288.188 423.645 291.333 425.607 287.759 c
-426.443 286.236 428.152 288.956 429.057 288.03 c
-429.681 287.391 426.95 282.882 429.752 284.451 c
-430.053 284.619 430.049 285.035 430.267 285.29 c
-436.194 292.238 429.853 278.894 431.94 278.769 c
-433.284 278.688 433.725 280.813 432.118 281.319 c
-431.595 281.483 430.943 281.298 430.576 281.729 c
-427.484 285.35 434.752 282.357 435.902 283.391 c
-437.193 284.553 435.331 286.086 433.513 287.329 c
-432.608 287.948 431.811 288.922 430.714 288.772 c
-429.847 288.653 429.124 287.773 428.256 288.061 c
-425.012 289.14 428.458 295.191 432.02 291.39 c
-433.014 290.329 432.992 288.61 434.099 287.651 c
-437.294 284.884 446.228 282.99 440.721 281.386 c
-438.824 280.834 438.428 283.76 436.867 284.221 c
-436.018 284.472 435.089 283.958 434.266 284.306 c
-432.958 284.861 433.084 286.601 433.508 288.12 c
-433.98 289.81 434.366 291.524 434.86 293.208 c
-435.884 296.697 437.373 300.181 436.845 303.794 c
-435.505 312.963 422.416 306.459 429.157 303.18 c
-430.045 302.749 431.212 303.632 431.999 302.939 c
-433.957 301.214 430.219 299.954 425.984 300.946 c
-424.328 301.335 422.32 300.468 421.108 301.768 c
-419.154 303.864 421.544 307.575 425 306.481 c
-433.19 303.888 449.256 304.385 438.96 307.109 c
-438.201 307.31 437.354 306.832 436.655 307.228 c
-433.826 308.835 438.516 311.518 437.67 313.321 c
-437.502 313.679 437.187 313.935 436.844 314.132 c
-435.371 314.98 433.504 314.619 433.044 313.172 c
-430.884 306.368 441.07 312.079 443.652 310.022 c
-445.821 308.293 444.129 304.509 446.293 302.777 c
-451.408 298.68 454.505 310.51 459.283 308.058 c
-459.849 307.767 460.211 307.175 459.895 306.724 c
-458.303 304.447 457.511 310.932 455.949 308.909 c
-453.906 306.264 463.671 308.961 460.199 305.85 c
-459.863 305.549 459.375 305.745 458.943 305.927 c
-458.265 306.212 457.522 306.36 456.811 306.174 c
-454.07 305.458 453.984 301.806 455.282 298.66 c
-455.382 298.419 455.488 298.172 455.691 298.007 c
-457.483 296.55 457.535 299.99 457.972 302.674 c
-458.341 304.931 461.151 305.584 462.304 303.83 c
-464.293 300.802 459.703 298.742 458.728 301.416 c
-458.611 301.736 458.646 302.117 458.413 302.372 c
-458.197 302.608 457.846 302.644 457.551 302.507 c
-456.65 302.09 456.802 300.838 457.377 299.822 c
-458.181 298.401 459.554 297.264 460.83 297.947 c
-461.878 298.507 462.017 299.947 461.229 300.937 c
-460.689 301.617 459.806 301.949 458.994 301.669 c
-457.865 301.28 456.573 300.493 456.311 301.529 c
-455.196 305.947 462.589 298.035 461.879 301.985 c
-461.563 303.748 459.628 301.664 458.499 301.853 c
-457.207 302.071 457.008 303.916 458.32 304.455 c
-460.477 305.341 462.326 301.848 459.641 300.347 c
-457.494 299.147 452.442 300.381 453.909 297.42 c
-454.592 296.041 458.024 297.285 457.874 295.074 c
-457.66 291.929 452.668 296.08 452.125 293.565 c
-451.839 292.238 453.75 291.928 454.214 290.853 c
-454.682 289.765 453.655 288.731 453.563 287.599 c
-453.317 284.548 457.434 284.534 460.244 283.332 c
-461.329 282.867 462.537 282.208 463.326 283.015 c
-466.148 285.899 455.107 287.129 459.234 290.255 c
-460.225 291.006 461.649 290.078 461.953 288.54 c
-462.747 284.532 458.568 281.293 453.993 282.123 c
-452.57 282.382 451.316 283.33 451.636 284.544 c
-452.348 287.236 456.051 285.619 454.887 283.53 c
-454.5 282.835 453.525 282.795 452.844 283.332 c
-451.268 284.573 452.217 287.823 450.008 288.415 c
-448.027 288.946 443.59 283.289 443.222 287.67 c
-443.144 288.599 444.121 289.265 445.09 288.972 c
-449.722 287.575 443.43 283.903 439.448 280.283 c
-435.891 277.05 438.476 271.235 443.111 271.726 c
-446.718 272.109 447.872 276.332 448.275 280.252 c
-448.541 282.848 449.431 285.59 451.825 285.824 c
-453.403 285.978 453.73 287.341 452.992 287.424 c
-452.727 287.453 452.544 287.163 452.284 287.152 c
-450.915 287.095 451.649 289.98 453.724 288.83 c
-460.118 285.288 450.744 278.699 450.383 284.491 c
-450.279 286.155 454.36 290.618 451.057 288.995 c
-450.768 288.853 450.683 288.511 450.59 288.201 c
-449.325 283.978 444.223 284.081 443.537 287.172 c
-443.327 288.12 443.796 289.07 444.604 289.625 c
-446.284 290.778 448.411 289.901 450.417 289.665 c
-451.438 289.545 452.487 289.616 453.413 290.064 c
-456.253 291.438 456.814 295.211 454.459 297.149 c
-452.07 299.115 449.233 301.262 451.415 302.377 c
-455.302 304.363 453.615 297.373 455.57 296.595 c
-457.633 295.773 461.888 305.351 463.554 299.234 c
-463.888 298.005 462.479 297.242 461.127 296.748 c
-452.826 293.716 456.724 284.916 460.906 286.605 c
-462.654 287.311 462.495 289.578 462.869 291.432 c
-464.151 297.792 461.716 302.882 459.17 300.256 c
-458.059 299.109 459.159 297.396 458.965 295.904 c
-458.526 292.522 454.08 292.988 450.93 291.877 c
-449.966 291.537 448.915 291.033 448.129 291.657 c
-437.962 299.729 458.002 293.752 458.628 296.195 c
-459.615 300.043 453.836 299.904 454.543 296.805 c
-454.861 295.412 456.71 295.97 458.024 295.632 c
-458.53 295.502 458.982 295.173 459.101 294.672 c
-459.368 293.553 458.103 292.755 456.709 292.735 c
-456.263 292.729 455.797 292.773 455.467 293.071 c
-453.467 294.874 457.361 298.929 460.142 295.148 c
-461.864 292.807 460.434 289.742 460.494 286.901 c
-460.555 284.005 462.17 280.944 460.501 278.493 c
-458.082 274.941 452.605 276.365 452.262 280.544 c
-452.019 283.506 455.164 284.811 456.452 283.102 c
-457.984 281.071 459.54 277.161 459.974 279.86 c
-460.112 280.721 458.894 280.902 458.58 281.598 c
-456.969 285.159 462.877 282.694 464.054 283.984 c
-465.343 285.398 462.882 287.858 464.478 289.176 c
-465.87 290.325 467.719 288.515 468.214 285.945 c
-468.242 285.801 468.27 285.657 468.312 285.517 c
-468.677 284.29 469.969 283.643 470.853 284.32 c
-474.763 287.313 466.738 288.109 466.236 290.234 c
-464.461 297.753 473.739 289.185 478.08 289.528 c
-478.206 289.538 478.331 289.557 478.456 289.581 c
-480.441 289.958 481.912 291.498 483.619 292.555 c
-485.906 293.97 488.67 294.529 490.746 296.252 c
-491.689 297.035 492.463 298.04 493.569 298.576 c
-495.633 299.577 498.627 298.9 499.713 301.068 c
-499.966 301.574 500.063 302.208 500.572 302.47 c
-501.523 302.96 502.335 301.843 502.898 300.727 c
-505.532 295.513 499.085 291.774 499.34 295.71 c
-499.408 296.763 501.659 297.019 501.075 298.296 c
-500.481 299.592 498.485 298.242 498.44 295.408 c
-498.413 293.71 497.746 291.66 499.301 291.079 c
-502.423 289.911 502.087 295.76 504.594 295.681 c
-508.217 295.567 505.64 290.365 507.507 288.771 c
-509.066 287.44 511.167 289.013 513.086 288.863 c
-514.898 288.721 517.093 287.683 517.664 289.378 c
-518.21 291 515.372 292.111 516.136 293.757 c
-517.249 296.157 519.484 292.989 521.604 290.542 c
-523.771 288.04 528.323 289.761 530.299 287.01 c
-531.745 284.997 530.676 282.162 528.264 281.619 c
-523.446 280.534 523.061 287.3 521.294 292.204 c
-520.435 294.591 519.475 297.337 521.525 298.238 c
-523.85 299.26 526.359 296.154 524.581 293.079 c
-521.551 287.842 525.757 282.837 526.886 286.375 c
-527.269 287.576 524.641 290.848 527.12 290.22 c
-527.978 290.003 527.508 288.791 527.995 288.234 c
-530.088 285.837 531.156 295.745 533.414 291.497 c
-533.685 290.987 533.289 290.419 533.31 289.86 c
-533.366 288.392 536.45 287.815 535.507 286.089 c
-534.802 284.798 532.561 285.472 532.75 287.364 c
-533.008 289.96 537.168 290.517 538.502 287.204 c
-539.657 284.335 537.311 281.378 534.522 282.03 c
-530.653 282.934 530.779 288.528 534.745 289.264 c
-536.626 289.613 538.093 287.985 537.379 286.599 c
-537.025 285.911 536.201 285.717 535.486 285.426 c
-532.881 284.363 531.197 281.388 528.312 281.297 c
-527.051 281.257 525.829 281.86 525.325 282.999 c
-524.263 285.4 527.507 289.14 524.622 290.725 c
-522.585 291.843 520.09 289.564 520.83 286.7 c
-522.299 281.012 530.695 281.069 532.201 287.208 c
-532.764 289.506 531.592 291.96 532.414 294.195 c
-533.202 296.338 535.594 296.362 535.916 294.972 c
-536.482 292.527 532.576 293.636 531.823 292.251 c
-531.15 291.014 532.949 289.347 531.822 288.232 c
-531.754 288.165 531.677 288.108 531.602 288.05 c
-529.822 286.664 527.757 285.207 526.847 286.816 c
-526.23 287.905 527.523 289.29 526.785 290.344 c
-525.068 292.796 523.124 288.763 523.199 283.894 c
-523.222 282.426 522.416 281.099 522.192 279.654 c
-521.102 272.595 516.513 268.213 515.371 272.176 c
-514.817 274.098 521.561 278.79 516.576 279.177 c
-515.595 279.253 515.156 278.107 514.365 277.603 c
-511.911 276.044 509.786 280.054 507.326 279.409 c
-506.603 279.22 506.05 278.601 506.215 277.92 c
-506.726 275.81 511.304 276.979 510.071 281.413 c
-509.647 282.938 508.695 284.39 507.278 284.159 c
-507.054 284.123 506.842 284.035 506.655 283.907 c
-503.593 281.819 508.17 279.023 511.678 276.272 c
-512.989 275.245 513.733 273.603 513.259 272.031 c
-513.187 271.789 513.084 271.557 513.011 271.316 c
-511.785 267.26 519.524 257.615 511.998 258.746 c
-507.215 259.465 518.475 276.218 507.89 272.174 c
-505.628 271.31 506.9 268.349 507.581 265.777 c
-508.06 263.971 507.657 262.003 506.228 260.834 c
-504.495 259.417 501.518 259.571 500.711 257.352 c
-500.128 255.749 498.957 254.74 498.494 255.662 c
-498.266 256.118 498.734 257.044 498.054 257.067 c
-497.051 257.1 498.756 254.522 497.283 254.953 c
-496.332 255.231 497.649 256.153 497.492 256.652 c
-497.221 257.512 496.195 256.603 495.53 256.747 c
-494.753 256.915 494.843 257.945 494.435 258.566 c
-493.844 259.465 492.579 259.249 491.594 259.597 c
-489.007 260.511 488.995 265.111 485.915 265.106 c
-483.562 265.102 482.903 262.245 482.429 259.71 c
-481.934 257.055 480.71 254.559 478.654 252.808 c
-474.744 249.477 468.901 249.674 466.092 253.701 c
-465.552 254.474 465.101 255.413 464.179 255.624 c
-461.793 256.168 460.05 252.38 462.91 249.548 c
-464.19 248.28 466.089 247.775 467.07 248.999 c
-468.892 251.274 464.835 253.433 465.451 255.741 c
-466.219 258.623 470.07 257.081 472.58 257.975 c
-474.172 258.542 475.35 260.237 477.08 260.053 c
-478.674 259.884 480.565 258.393 481.305 259.938 c
-482.054 261.501 479.526 263.286 477.03 261.44 c
-475.219 260.101 474.018 257.97 474.699 255.893 c
-474.949 255.132 475.465 254.469 475.595 253.675 c
-475.776 252.569 476.677 252.206 476.86 252.738 c
-476.975 253.072 476.569 253.328 476.108 253.325 c
-472.018 253.291 470.647 248.827 473.139 247.311 c
-473.493 247.096 473.912 247.006 474.319 247.085 c
-475.893 247.39 476.937 250.384 478.602 249.105 c
-480.2 247.877 478.17 244.437 474.684 246.064 c
-473.438 246.646 471.992 246.92 471.7 245.858 c
-470.589 241.827 475.83 246.292 477.67 245.745 c
-478.771 245.417 479.117 244.06 478.639 242.896 c
-477.96 241.242 476.488 239.447 477.932 238.531 c
-482.14 235.858 480.499 243.993 482.633 244.495 c
-484.118 244.844 485.784 242.543 487.088 243.9 c
-488.556 245.427 485.712 246.757 485.274 248.405 c
-484.439 251.546 489.07 252.093 493.676 251.021 c
-494.287 250.879 494.935 250.804 495.497 251.08 c
-525.446 265.808 460.251 271.269 487.166 251.534 c
-488.042 250.892 489.213 251.199 490.273 251.051 c
-493.022 250.668 494.259 247.771 495.733 245.407 c
-497.047 243.298 497.446 240.771 495.635 240.325 c
-493.768 239.865 492.979 242.407 493.262 245.003 c
-493.515 247.326 492.202 249.353 490.571 248.778 c
-486.555 247.363 490.749 242.183 492.828 245.334 c
-493.775 246.77 481.28 253.49 490.031 252.446 c
-491.811 252.234 490.528 249.554 491.702 248.86 c
-494.457 247.233 496.742 253.676 491.385 253.989 c
-488.277 254.17 486.769 250.873 488.572 249.302 c
-489.853 248.187 491.902 249.021 492.35 250.853 c
-492.499 251.464 492.428 252.114 492.097 252.649 c
-490.423 255.359 486.993 252.781 483.879 251.761 c
-481.367 250.939 478.57 251.854 477.499 254.195 c
-477.415 254.38 477.345 254.571 477.267 254.758 c
-476.458 256.71 474.747 258.241 472.699 258.069 c
-469.582 257.808 468.384 253.939 465.524 252.972 c
-463.148 252.168 460.297 253.641 458.224 252.084 c
-455.799 250.262 456.842 245.439 453.539 244.622 c
-450.469 243.862 449.046 248.071 446.243 248.622 c
-444.201 249.024 442.391 247.563 441.191 245.784 c
-439.479 243.247 439.467 239.95 441.845 239.07 c
-442.625 238.781 443.478 238.952 444.303 238.892 c
-445.443 238.809 446.648 238.317 447.617 238.95 c
-450.808 241.033 447.294 246.363 443.635 243.56 c
-441.53 241.947 442.973 238.078 440.548 236.729 c
-438.629 235.662 436.26 237.232 436.153 239.645 c
-436.072 241.49 437.468 243.369 436.519 245.037 c
-435.257 247.254 432 246.603 431.741 244.227 c
-431.486 241.886 434.324 241.379 434.841 242.967 c
-435.711 245.639 427.329 243.413 429.73 247.062 c
-432.32 250.998 433.221 243.142 434.927 243.538 c
-436.46 243.893 436.376 246.388 434.223 247.673 c
-433.824 247.912 433.387 248.124 432.926 248.058 c
-425.888 247.059 435.775 238.705 441.944 245.179 c
-442.976 246.262 444.337 247.114 445.763 246.767 c
-456.451 244.164 439.796 229.948 442.12 241.882 c
-442.213 242.355 442.67 242.785 442.445 243.238 c
-441.776 244.588 440.908 242.495 439.945 241.12 c
-436.779 236.601 430.248 245.312 437.517 247.321 c
-439.232 247.795 440.598 246.39 439.968 245.244 c
-439.311 244.049 437.758 244.982 436.379 245.439 c
-434.094 246.195 431.759 244.475 431.919 242.135 c
-432.069 239.951 433.832 237.181 431.612 236.656 c
-430.306 236.347 429.227 237.824 429.857 239.223 c
-430.619 240.912 432.83 240.708 434.675 240.987 c
-436.636 241.284 438.43 242.459 440.422 242.322 c
-441.886 242.221 443.006 241.103 442.507 240.032 c
-441.606 238.101 437.506 239.553 438.721 243.529 c
-439.804 247.072 443.602 248.567 445.553 246.375 c
-447.212 244.512 445.603 239.971 448.801 239.756 c
-450.997 239.609 451.763 243.432 454.095 242.825 c
-456.992 242.071 455.168 237.757 450.354 235.425 c
-446.196 233.411 447.538 228.849 450.005 229.195 c
-452.088 229.486 451.519 232.337 450.364 234.858 c
-449.14 237.529 447.511 240.329 445.523 239.014 c
-444.892 238.596 444.397 237.725 443.681 238.034 c
-442.697 238.459 443.178 240.147 444.949 240.684 c
-445.595 240.88 446.284 241.048 446.91 240.795 c
-448.711 240.068 448.65 235.322 451.3 236.72 c
-452.493 237.35 452.245 239.2 450.804 239.588 c
-449.162 240.031 448.222 238.128 447.257 236.606 c
-445.55 233.912 442.112 232.869 439.909 234.807 c
-436.375 237.914 430.639 234.39 434.502 233.61 c
-435.231 233.463 436.493 234.683 436.674 233.584 c
-436.772 232.993 435.89 232.714 435.08 233.224 c
-433.842 234.003 432.672 234.982 431.218 235.188 c
-429.447 235.438 427.713 234.453 425.944 234.727 c
-424.052 235.019 421.939 236.41 420.77 234.851 c
-420.733 234.802 420.699 234.75 420.674 234.694 c
-420.133 233.482 422.197 233.329 422.461 232.398 c
-423.337 229.314 419.416 232.327 416.516 233.339 c
-413.774 234.297 411.531 236.135 413.456 236.516 c
-414.541 236.73 414.602 234.945 415.536 234.838 c
-417.478 234.617 416.26 237.258 413.917 239.299 c
-409.92 242.78 415.58 249.609 420.404 245.235 c
-422.485 243.35 424.895 241.597 425.458 243.588 c
-426.127 245.954 422.519 244.992 420.61 245.807 c
-419.073 246.463 418.951 248.397 418.387 249.959 c
-418.282 250.25 418.152 250.537 417.927 250.751 c
-416.508 252.103 409.168 250.878 412.759 253.601 c
-413.924 254.485 414.707 252.418 415.825 252.28 c
-417.914 252.024 418.903 255.77 415.715 256.804 c
-413.755 257.44 411.232 257.795 411.949 259.46 c
-412.251 260.162 413.378 260.521 413.115 261.34 c
-411.978 264.875 410.328 258.981 409.031 258.865 c
-404.14 258.424 413.791 268.225 407.844 266.983 c
-406.758 266.756 406.537 265.208 407.559 264.243 c
-408.776 263.096 410.981 263.329 411.788 261.783 c
-412.223 260.949 412.488 259.785 413.339 260.049 c
-414.093 260.283 413.869 261.493 414.585 261.773 c
-415.888 262.283 417.109 259.646 414.667 258.656 c
-411.674 257.442 412.506 253.707 413.969 255.17 c
-414.045 255.245 414.089 255.346 414.158 255.429 c
-418.102 260.187 413.881 246.233 417.625 250.061 c
-418.572 251.029 416.669 251.695 416.05 252.68 c
-415.13 254.147 416.908 255.871 419.34 255.973 c
-421.176 256.05 422.94 255.195 422.691 253.716 c
-422.361 251.752 419.465 252.409 418.493 250.991 c
-418.111 250.433 418.108 249.665 417.617 249.191 c
-417.074 248.667 416.235 248.715 415.533 249.042 c
-413.24 250.112 412.654 253.088 414.426 254.786 c
-415.73 256.037 417.826 255.847 418.595 254.333 c
-419.881 251.803 416.594 249.343 412.503 249.636 c
-410.702 249.764 409.04 248.965 409.437 247.691 c
-409.882 246.261 414.929 247.668 413.578 244.833 c
-412.365 242.289 411.027 246.614 409.362 247.491 c
-406.87 248.803 404.684 241.014 401.85 244.541 c
-396.51 251.19 413.836 245.65 411.024 250.979 c
-409.996 252.928 407.431 251.176 405.477 248.839 c
-403.608 246.603 400.636 244.497 402.143 242.123 c
-403.052 240.69 405.02 240.828 406.576 240.243 c
-409.404 239.179 409.64 235.892 407.652 235.194 c
-406.971 234.955 406.258 235.259 405.549 235.35 c
-401.879 235.824 399.345 231.786 401.367 228.707 c
-407.606 219.206 416.433 235.705 406.812 234.504 c
-406.161 234.423 405.676 233.91 405.395 233.31 c
-403.437 229.137 408.422 225.715 411.223 228.523 c
-413.592 230.899 408.698 237.826 413.856 238.527 c
-414.139 238.566 414.435 238.534 414.664 238.363 c
-415.514 237.728 414.684 236.559 414.831 235.608 c
-415.382 232.052 420.825 233.792 419.178 237.039 c
-418.653 238.073 417.257 238.054 416.359 238.725 c
-415.098 239.668 415.025 241.521 416.098 242.736 c
-417.111 243.885 418.781 244.107 420.226 243.539 c
-422.515 242.638 425.116 241.245 425.805 243.277 c
-426.384 244.983 424.085 245.719 423.053 247.052 c
-421.284 249.336 423.551 254.856 419.644 254.906 c
-418.09 254.926 417.356 253.239 416.279 252.151 c
-413.978 249.827 410.132 250.215 408.051 252.838 c
-406.989 254.176 406.081 256.023 404.459 255.639 c
-403.04 255.303 402.748 253.574 402.809 251.99 c
-402.896 249.71 403.028 247.404 402.473 245.188 c
-401.735 242.241 400.803 238.853 403.34 237.789 c
-404.493 237.306 405.875 237.869 406.978 237.258 c
-408.652 236.331 408.544 233.902 406.811 233.16 c
-404.201 232.043 401.427 235.624 403.506 239.202 c
-404.127 240.27 405.054 241.115 406.109 241.757 c
-408.916 243.466 412.605 244.918 411.84 247.946 c
-410.805 252.043 411.034 256.473 413.09 254.277 c
-413.47 253.871 413.368 253.219 413.69 252.772 c
-414.756 251.293 414.323 249.173 413.624 250.368 c
-413.533 250.524 413.61 250.715 413.573 250.888 c
-413.037 253.383 409.532 249.715 412.549 248.177 c
-414.068 247.404 415.854 247.595 417.427 248.268 c
-418.439 248.701 419.361 249.322 420.388 249.715 c
-421.764 250.241 423.347 250.298 424.412 249.321 c
-425.639 248.197 425.464 246.31 426.164 244.834 c
-427.537 241.941 431.326 241.213 433.875 243.275 c
-440.494 248.63 449.428 247.169 444.965 243.543 c
-443.5 242.353 440.178 245.4 439.317 242.78 c
-436.38 233.846 447.277 244.59 448.817 243.109 c
-449.67 242.29 449.245 240.983 449.121 239.804 c
-448.94 238.091 450.219 236.855 451.235 237.485 c
-452.581 238.321 451.008 239.948 449.125 241.141 c
-447.099 242.424 446.473 245.497 444.014 245.953 c
-441.22 246.471 439.64 243.202 437.125 242.279 c
-436.197 241.939 435.075 241.855 434.585 240.985 c
-433.136 238.415 437.849 236.024 442.707 239.653 c
-444.485 240.982 446.811 241.011 447.272 239.366 c
-448.288 235.742 442.648 237.456 440.628 235.856 c
-438.07 233.83 439.944 229.209 444.301 229.199 c
-447.142 229.192 450.564 230.863 451.936 228.295 c
-452.109 227.971 452.201 227.6 452.453 227.331 c
-454.124 225.545 455.372 228.894 456.946 231.075 c
-457.655 232.058 458.893 232.53 460.038 232.159 c
-463.681 230.978 463.284 224.862 458.073 223.58 c
-454.971 222.817 451.767 224.514 451.306 227.523 c
-450.648 231.814 455.529 233.588 457.213 230.886 c
-457.607 230.253 457.585 229.476 457.67 228.74 c
-457.788 227.718 458.131 226.719 458.058 225.691 c
-457.839 222.606 454.689 220.794 451.387 220.719 c
-448.053 220.644 444.299 221.814 441.99 219.355 c
-435.818 212.783 446.476 203.718 452.062 211.159 c
-452.277 211.445 452.476 211.772 452.818 211.877 c
-453.775 212.171 454.307 210.754 455.231 210.825 c
-456.599 210.929 456.884 213.157 455.103 213.734 c
-452.873 214.457 450.46 209.809 448.298 212.207 c
-447.492 213.101 448.091 214.398 448.096 215.576 c
-448.108 218.196 447.314 221.497 449.637 221.12 c
-451.662 220.79 451.683 217.288 448.786 216.931 c
-444.698 216.426 444.909 222.068 444.152 226.521 c
-443.434 230.74 439.025 231 438.474 228.652 c
-438.048 226.836 440.432 226.257 442.356 225.543 c
-443.662 225.059 444.532 223.824 443.893 222.841 c
-443.125 221.66 438.887 222.201 440.4 220.042 c
-440.977 219.218 442.3 219.823 442.882 221.151 c
-443.88 223.426 442.1 225.008 441.128 224.156 c
-440.392 223.511 441.279 222.435 440.955 221.629 c
-440.444 220.358 438.755 221.156 437.54 220.862 c
-435.9 220.465 435.176 217.846 433.328 218.316 c
-432.414 218.548 431.942 219.558 432.329 220.425 c
-433.285 222.565 436.432 220.851 437.875 222.27 c
-440.756 225.105 435.985 229.593 433.157 226.058 c
-431.819 224.387 433.275 222.235 433.728 220.174 c
-433.832 219.7 433.896 219.183 434.27 218.871 c
-436.803 216.767 436.475 222.04 438.019 223.437 c
-438.902 224.236 440.436 223.916 441.167 224.895 c
-445.89 231.219 430.261 233.693 433.057 223.589 c
-433.152 223.245 433.29 222.916 433.405 222.579 c
-433.915 221.075 434.026 219.323 435.294 218.344 c
-438.068 216.202 441.657 219.124 440.266 221.989 c
-439.705 223.142 438.35 223.59 437.044 223.431 c
-432.606 222.893 430.682 217.724 431.735 212.818 c
-433.615 204.058 422.436 201.839 424.422 207.344 c
-424.47 207.479 424.544 207.604 424.632 207.717 c
-425.974 209.454 428.547 208.3 428.197 206.437 c
-428.004 205.412 426.855 205.016 425.755 204.91 c
-419.822 204.337 418.728 210.277 421.58 211.082 c
-421.96 211.189 422.369 211.131 422.744 211.255 c
-425.464 212.157 423.948 217.976 418.453 216.506 c
-414.089 215.339 411.201 211.152 412.846 207.324 c
-413.62 205.523 415.437 204.335 416.04 202.461 c
-416.193 201.986 416.258 201.485 416.208 200.988 c
-415.882 197.726 412.067 197.018 411.024 199.265 c
-410.408 200.593 411.72 202.178 410.951 203.462 c
-408.909 206.867 401.841 201.799 406.991 195.107 c
-409.693 191.597 413.736 192.488 413.483 194.837 c
-413.306 196.481 411.748 198.807 413.54 198.536 c
-414.932 198.324 413.627 196.65 413.592 195.43 c
-413.551 193.99 415.361 193.191 416.659 194.208 c
-419.641 196.544 415.163 199.935 415.381 202.945 c
-415.473 204.22 416.449 205.26 417.568 204.988 c
-417.98 204.887 418.304 204.592 418.576 204.266 c
-420.514 201.934 419.801 198.542 417.253 197.961 c
-413.225 197.043 411.152 202.762 415.015 204.684 c
-418.054 206.195 420.716 202.745 418.862 200.571 c
-418.107 199.686 416.753 199.653 415.911 200.472 c
-413.183 203.125 417.068 208.227 421.252 205.38 c
-424.655 203.065 428.488 199.964 428.714 203.293 c
-428.784 204.318 427.606 205.144 427.926 206.168 c
-428.491 207.976 430.922 206.62 432.28 207.348 c
-434.733 208.664 432.388 211.772 429.757 214.319 c
-429.386 214.678 429.03 215.089 428.526 215.208 c
-420.464 217.12 425.934 201.915 432.777 209.291 c
-433.901 210.502 433.353 212.159 432.233 212.086 c
-431.49 212.038 431.27 211.161 430.819 210.589 c
-429.281 208.642 426.599 210.437 424.289 212.071 c
-422.438 213.38 420.609 215.095 421.783 216.608 c
-423.296 218.559 427.169 216.578 426.471 212.38 c
-426.229 210.927 425.377 209.558 424.043 209.676 c
-421.984 209.857 420.898 217.857 418.029 213.867 c
-416.943 212.357 419.28 210.97 422.137 210.84 c
-423.962 210.757 425.647 209.675 425.49 208.049 c
-425.351 206.615 423.765 205.923 422.835 206.798 c
-422.067 207.521 422.397 208.819 423.44 209.147 c
-425.991 209.948 426.199 205.726 428.248 205.332 c
-429.008 205.186 429.775 205.577 430.04 206.296 c
-430.588 207.784 429.004 209.238 427.103 208.962 c
-425.772 208.769 424.44 207.845 423.236 208.516 c
-417.956 211.457 427.213 214.5 428.08 217.908 c
-428.199 218.377 428.195 218.889 428.468 219.293 c
-429.548 220.898 431.887 219.408 433.212 216.906 c
-434.118 215.193 435.412 213.691 436.091 211.873 c
-436.416 211.002 436.839 210.041 437.701 210.118 c
-438.448 210.186 439.327 211.12 439.729 210.341 c
-440.085 209.653 439.018 209.392 438.565 208.854 c
-436.506 206.413 441.617 206.613 442.924 205.067 c
-446.74 200.554 437.164 200.558 436.005 197.643 c
-435.351 195.999 436.445 194.29 437.939 193.185 c
-439.043 192.368 440.319 191.8 441.367 190.911 c
-443.977 188.693 444.796 184.989 443.188 181.989 c
-442.135 180.024 440.2 178.784 438.303 177.622 c
-436.163 176.31 433.929 175.001 431.415 174.914 c
-429.404 174.845 427.437 175.589 426.07 177.063 c
-424.268 179.006 422.376 181.534 420.517 180.055 c
-418.813 178.7 420.366 176.313 422.035 174.361 c
-425.653 170.129 430.517 169.929 430.396 172.958 c
-430.341 174.348 429.596 176.157 430.926 176.056 c
-434.984 175.749 428.951 172.12 430.152 171.141 c
-430.94 170.498 431.828 171.64 432.709 171.547 c
-440.004 170.781 429.127 165.684 429.757 163.833 c
-430.345 162.104 433.996 162.753 433.832 160.47 c
-433.728 159.029 431.79 158.723 430.063 159.476 c
-429.279 159.818 428.481 160.288 428.335 161.117 c
-428.202 161.878 428.743 162.583 429.446 162.494 c
-430.852 162.316 430.082 160.475 429.941 158.976 c
-429.8 157.477 431.051 156.215 432.552 156.341 c
-433.759 156.442 434.766 157.531 435.982 157.3 c
-436.583 157.185 437.063 156.762 437.386 156.24 c
-438.064 155.146 438.016 153.761 438.6 152.617 c
-438.704 152.423 l
-439.296 151.363 440.018 150.267 439.752 149.082 c
-439.133 146.331 435.528 146.963 432.701 146.531 c
-429.021 145.968 429.421 142.082 431.346 142.084 c
-432.48 142.085 432.978 144.091 434.22 143.629 c
-436.013 142.963 434.447 139.112 430.657 140.678 c
-427.65 141.92 425.335 144.534 426.742 146.847 c
-427.693 148.411 429.893 148.354 431.254 149.504 c
-432.371 150.449 431.871 151.859 431.006 151.734 c
-429.811 151.563 431.507 148.273 429.55 148.74 c
-428.935 148.887 428.898 149.8 429.536 150.393 c
-430.624 151.401 432.301 151.277 433.55 152.047 c
-435.659 153.347 437.726 152.86 437.171 151.652 c
-436.798 150.84 435.716 151.415 434.935 151.22 c
-428.728 149.668 438.884 146.855 440.129 144.045 c
-440.357 143.531 440.409 142.875 440.932 142.647 c
-441.985 142.189 442.859 143.722 442.314 145.49 c
-442.015 146.461 441.806 147.554 442.5 148.258 c
-444.19 149.976 446.648 147.337 447.17 143.491 c
-447.526 140.867 448.815 138.486 449.516 135.936 c
-449.946 134.369 451.08 133.168 452.029 133.885 c
-452.784 134.457 452.466 135.707 451.424 135.986 c
-449.552 136.486 448.021 133.907 449.555 131.649 c
-450.695 129.97 452.764 129.38 454.731 128.875 c
-455.257 128.74 455.812 128.609 456.314 128.819 c
-458.041 129.541 456.924 131.857 457.434 133.453 c
-458.16 135.725 461.169 135.99 463.66 134.761 c
-464.606 134.294 465.481 133.701 466.344 133.095 c
-471.077 129.768 476.946 127.267 480.1 131.26 c
-480.879 132.246 481.208 133.509 481.053 134.757 c
-480.814 136.679 479.255 138.15 477.677 137.554 c
-475.486 136.726 476.412 133.762 477.654 131.22 c
-477.889 130.74 478.094 130.236 478.461 129.848 c
-480.992 127.175 495.359 128.509 487.805 124.114 c
-486.187 123.172 481.135 129.253 480.972 124.454 c
-480.936 123.394 482.222 123.092 483.147 122.557 c
-494.762 115.834 471.55 105.144 477.077 117.99 c
-477.236 118.359 477.561 118.616 477.907 118.82 c
-480.008 120.059 482.901 119.613 484.603 121.428 c
-487.277 124.278 490.344 127.332 491.001 124.456 c
-491.164 123.743 490.624 122.989 490.946 122.313 c
-491.306 121.558 492.7 121.332 492.436 120.383 c
-492.085 119.119 489.956 120.354 489.538 119.194 c
-487.341 113.103 494.624 120.652 495.492 119.592 c
-496.687 118.131 493.946 117.66 492.084 116.767 c
-490.6 116.055 490.449 114.103 489.366 112.922 c
-488.074 111.513 485.457 111.024 485.616 108.988 c
-485.866 105.81 490.388 107.012 494.192 110.192 c
-495.047 110.907 496.061 111.471 496.644 112.427 c
-497.326 113.545 497.292 114.943 496.683 116.109 c
-494.706 119.899 489.264 119.688 487.697 115.825 c
-487.245 114.713 487.408 113.403 488.4 112.856 c
-489.867 112.048 491.306 113.698 492.867 113.724 c
-495.83 113.774 500.366 106.022 501.783 111.369 c
-503.341 117.252 493.592 112.44 492.94 115.753 c
-492.672 117.114 494.061 118.116 494.291 119.433 c
-495.606 126.976 482.876 121.562 481.922 126.587 c
-481.475 128.945 484.155 130.625 484.171 132.951 c
-484.187 135.28 483.339 138.255 485.479 138.043 c
-486.333 137.958 486.703 137.015 487.36 136.501 c
-489.249 135.024 491.51 137.23 493.722 137.219 c
-496.168 137.206 497.786 134.907 498.388 132.404 c
-498.853 130.47 498.541 128.313 496.824 127.722 c
-495.995 127.436 495.049 127.724 494.253 127.343 c
-491.502 126.023 492.897 120.764 497.889 121.082 c
-501.849 121.335 503.855 125.235 501.748 127.352 c
-499.172 129.94 494.73 126.803 496.519 123.208 c
-496.989 122.263 497.939 121.68 498.978 121.47 c
-501.63 120.934 503.984 122.913 503.35 125.129 c
-502.993 126.374 501.488 127.289 501.898 128.604 c
-502.329 129.987 505.476 130.669 504.171 132.283 c
-503.711 132.852 502.782 132.621 502.267 133.121 c
-500.24 135.089 505.131 138.925 507.387 134.21 c
-508.118 132.682 508.079 130.931 507.645 129.294 c
-506.167 123.729 510.058 120.57 511.634 122.826 c
-511.729 122.962 511.792 123.13 511.713 123.272 c
-511.123 124.34 509.552 122.323 511.307 121.735 c
-512.137 121.457 513.042 122.053 513.86 121.728 c
-526.734 116.609 503.183 107.145 506.747 120.204 c
-507.544 123.126 511.359 122.527 514.521 122.676 c
-516.232 122.757 518.005 123.323 519.561 122.573 c
-521.894 121.449 524.517 120.139 524.714 122.172 c
-524.787 122.935 524.092 123.544 523.291 123.483 c
-519.951 123.23 522.755 116.851 519.354 116.648 c
-517.292 116.524 517.294 119.376 515.998 120.678 c
-513.995 122.692 510.961 120.853 511.668 118.639 c
-512.109 117.261 514.02 117.161 514.703 115.939 c
-516.185 113.287 515.666 106.226 518.086 109.909 c
-519.073 111.41 516.023 112.553 516.776 114.027 c
-517.518 115.479 519.632 114.252 520.738 111.857 c
-521.88 109.384 522.109 106.666 520.182 106.647 c
-518.383 106.63 518.235 110.718 516.016 109.75 c
-514.794 109.217 515.308 107.513 516.269 106.135 c
-518.005 103.646 519.124 100.346 522.114 99.684 c
-522.952 99.499 523.896 99.556 524.52 98.956 c
-525.665 97.856 524.662 95.775 525.832 94.692 c
-528.491 92.233 529.592 97.516 531.665 100.525 c
-537.4 108.851 545.559 96.479 538.207 94.61 c
-536.44 94.16 533.844 96.713 532.834 94.53 c
-531.899 92.507 535.492 90.209 537.801 93.322 c
-538.744 94.593 538.945 96.213 539.141 97.779 c
-539.308 99.108 540.193 100.138 541.02 99.63 c
-541.935 99.067 541.048 97.915 540.469 96.87 c
-538.708 93.687 542.674 90.988 544.693 93.244 c
-545.987 94.69 544.823 97.073 542.515 97.519 c
-537.436 98.501 535.642 92.377 539.072 90.778 c
-541.076 89.844 543.159 91.797 542.354 93.763 c
-540.79 97.582 535.197 92.932 533.192 95.731 c
-531.609 97.941 534.286 100.431 537.523 101.724 c
-540.458 102.897 542.823 101.22 541.929 99.731 c
-541.81 99.532 541.619 99.381 541.391 99.341 c
-539.608 99.03 540.683 101.601 540.183 102.931 c
-530.186 129.582 524.037 81.125 540.967 93.78 c
-543.314 95.534 542.594 98.958 543.579 101.62 c
-544.431 103.919 546.616 105.691 546.646 108.182 c
-546.691 111.803 542.685 112.652 541.739 110.467 c
-540.705 108.081 544.718 107.205 544.738 105.082 c
-544.746 104.225 544.124 103.542 543.774 102.768 c
-542.958 100.967 543.641 98.963 544.085 97.042 c
-546.081 88.398 528.22 89.458 536.705 94.905 c
-537.108 95.164 537.708 95.122 537.941 95.561 c
-539.373 98.264 534.719 96.345 534.103 97.292 c
-533.354 98.444 535.16 99.098 536.175 100.04 c
-537.614 101.374 536.724 104.283 538.683 105.139 c
-541.036 106.167 542.075 102.825 543.853 101.106 c
-544.483 100.497 545.319 100.106 545.809 99.375 c
-546.888 97.767 545.971 95.725 544.66 94.157 c
-543.759 93.078 542.702 92.042 542.461 90.651 c
-542.193 89.107 543.042 87.503 542.488 86.018 c
-541.778 84.114 538.949 83.23 539.268 81.044 c
-539.505 79.422 541.911 77.89 540.494 76.527 c
-539.499 75.568 538.161 76.791 536.873 76.968 c
-534.386 77.311 531.592 72.79 529.481 75.508 c
-527.42 78.161 531.897 82.063 534.795 78.452 c
-535.355 77.754 535.549 76.854 535.865 76.02 c
-536.445 74.487 537.454 73.146 537.963 71.587 c
-538.907 68.695 538.475 64.924 541.331 63.688 c
-542.251 63.29 543.344 63.469 543.668 64.322 c
-544.192 65.703 542.366 66.419 540.737 66.995 c
-538.643 67.735 537.045 69.815 534.779 69.685 c
-534 69.64 533.269 69.314 532.662 68.823 c
-525.222 62.806 512.421 63.034 519.45 67.573 c
-520.925 68.526 524.905 67.142 524.007 69.638 c
-523.3 71.603 521.354 69.123 519.567 68.42 c
-517.876 67.754 514.871 68.475 515.4 66.485 c
-515.595 65.751 516.472 65.529 517.289 65.652 c
-520.947 66.203 520.713 70.238 518.591 70.424 c
-518.039 70.472 517.535 70.121 517.343 69.596 c
-516.876 68.32 518.616 66.346 517.04 65.591 c
-515.963 65.075 512.733 67.674 513.149 65.175 c
-513.214 64.784 513.661 64.387 513.345 64.088 c
-512.865 63.632 511.897 64.643 512.857 65.702 c
-513.688 66.619 514.624 67.518 515.848 67.69 c
-518.838 68.111 520.822 64.796 519.068 62.514 c
-517.602 60.606 513.238 59.94 514.864 57.487 c
-516.317 55.293 520.101 52.209 517.048 52.968 c
-515.986 53.232 514.467 53.914 515.075 53.004 c
-515.188 52.836 515.419 52.859 515.625 52.866 c
-518.998 52.982 520.088 46.738 514.616 45.417 c
-513.247 45.087 511.61 44.875 511.456 43.541 c
-511.231 41.592 520.501 40.602 515.78 37.545 c
-515.257 37.206 514.597 37.439 513.984 37.4 c
-512.294 37.29 510.602 35.055 509.209 36.455 c
-508.778 36.889 508.669 37.656 508.052 37.813 c
-498.464 40.263 512.137 32.138 510.611 30.738 c
-510.019 30.194 509.16 30.604 508.387 30.909 c
-504.618 32.393 500.602 29.768 499.029 25.757 c
-497.349 21.47 498.591 16.655 497.489 12.204 c
-497.054 10.446 496.144 8.725 494.434 8.237 c
-492.578 7.707 490.031 8.791 489.108 6.919 c
-488.363 5.407 489.737 3.682 491.689 3.546 c
-493.763 3.402 495.453 4.87 497.048 6.209 c
-498.229 7.2 499.497 8.229 499.807 9.74 c
-500.226 11.784 498.677 13.649 496.829 13.266 c
-495.482 12.987 494.522 11.276 493.116 11.756 c
-491.496 12.309 491.505 14.806 493.445 15.735 c
-496.189 17.049 498.481 14.048 500.889 12.077 c
-502.865 10.458 505.43 9.694 507.931 10.196 c
-514.08 11.43 512.306 18.121 509.074 17.436 c
-507.6 17.124 507.144 15.198 508.337 14.12 c
-508.697 13.794 509.218 13.676 509.515 14.004 c
-510.966 15.613 507.474 15.077 506.597 15.908 c
-506.11 16.37 506.27 17.261 505.687 17.633 c
-502.071 19.947 504.64 13.366 503.441 12.41 c
-499.45 9.228 500.273 17.83 497.97 17.845 c
-494.574 17.867 494.629 10.478 501.218 11.316 c
-502.802 11.518 504.602 11.912 505.428 10.609 c
-507.117 7.944 495.569 3.833 502.079 1.01 c
-505.238 -0.359 505.366 8.705 509.106 5.95 c
-509.783 5.452 509.865 4.486 509.397 3.757 c
-508.013 1.599 504.389 2.526 503.868 5.652 c
-503.695 6.687 503.981 7.749 503.786 8.78 c
-503.103 12.403 496.404 15.832 500.361 18.762 c
-501.523 19.622 503.578 19.969 502.992 21.331 c
-502.517 22.436 496.383 21.892 499.362 24.153 c
-499.831 24.509 500.49 24.05 500.995 24.313 c
-505.949 26.899 497.367 24.382 494.575 25.144 c
-491.5 25.983 495.199 29.183 495.718 31.786 c
-495.796 32.174 495.775 32.576 495.853 32.964 c
-496.207 34.725 498.078 35.561 499.945 35.77 c
-509.312 36.819 513.119 43.869 508.623 45.352 c
-508.022 45.551 507.367 45.461 506.816 45.148 c
-501.704 42.239 507.465 36.281 510.152 39.867 c
-510.939 40.918 510.134 42.246 509.743 43.504 c
-509.208 45.225 509.561 47.299 508.22 48.558 c
-506.385 50.28 503.374 49.231 502.034 46.722 c
-500.016 42.945 496.173 44.013 497.097 45.825 c
-497.27 46.165 497.667 46.308 497.906 46.6 c
-499.025 47.961 493.836 51.489 497.427 52.352 c
-499.002 52.731 498.917 50.321 499.971 49.593 c
-503.47 47.176 503.905 55.74 507.072 54.171 c
-508.115 53.654 508.184 52.021 509.345 51.693 c
-511.206 51.168 512.761 54.018 510.689 56.191 c
-507.059 59.998 499.764 63.288 504.467 65.662 c
-505.449 66.158 506.561 65.595 506.488 64.688 c
-506.385 63.417 504.653 63.829 503.624 63.326 c
-502.293 62.676 502.248 60.82 503.252 59.48 c
-504.377 57.98 506.4 57.324 507.267 55.643 c
-507.836 54.54 507.778 53.209 507.047 52.21 c
-506.052 50.851 504.216 50.614 502.783 49.767 c
-495.1 45.224 484.353 53.433 492.484 53.57 c
-492.667 53.573 492.849 53.533 493.032 53.537 c
-495.441 53.59 494.586 57.051 492.119 59.992 c
-489.91 62.625 488.089 66.676 485.405 64.873 c
-483.639 63.687 484.605 61.097 483.706 59.32 c
-482.82 57.569 480.651 57.049 478.676 57.552 c
-474.282 58.672 473.718 63.586 476.579 64.663 c
-480.244 66.043 485.291 68.028 481.711 68.637 c
-480.974 68.762 480.509 67.934 479.816 67.765 c
-478.309 67.399 477.186 69.435 478.178 71.413 c
-478.879 72.812 480.313 73.767 481.632 73.172 c
-482.538 72.763 483.061 71.591 484.097 71.631 c
-486.612 71.728 485.217 75.8 487.153 76.463 c
-488.638 76.972 491.83 75.144 491.384 77.415 c
-491.173 78.49 489.707 78.157 488.426 77.531 c
-485.921 76.305 482.906 77.48 481.831 80.067 c
-481.296 81.354 481.385 82.828 480.784 84.087 c
-479.826 86.094 477.583 86.995 475.331 87.159 c
-474.686 87.206 474.03 87.201 473.415 87.407 c
-470.608 88.348 470.095 92.048 471.795 94.968 c
-472.183 95.634 472.841 96.151 473.406 95.795 c
-473.856 95.513 473.864 94.705 474.445 94.646 c
-475.437 94.544 475.775 96.594 473.753 97.073 c
-467.602 98.531 466.153 91.735 469.411 90.763 c
-471.683 90.085 477.177 92.68 475.288 89.446 c
-474.025 87.284 471.567 91.431 470.243 89.933 c
-467.825 87.197 473.729 87.912 475.025 86.415 c
-475.663 85.677 475.501 84.568 474.823 83.819 c
-473.572 82.436 471.377 82.704 470.763 84.307 c
-469.51 87.577 474.538 89.771 476.138 86.227 c
-476.954 84.418 475.368 82.672 473.779 81.279 c
-472.891 80.5 472.014 79.564 472.163 78.412 c
-472.458 76.128 475.354 72.854 472.564 72.957 c
-471.927 72.981 471.496 73.614 471.731 74.193 c
-473.271 77.984 475.118 71.512 476.671 71.47 c
-485.14 71.24 471.222 80.18 475.689 81.572 c
-476.588 81.853 477.39 81.13 478.051 80.414 c
-478.546 79.878 479.061 79.324 479.213 78.609 c
-480.126 74.319 473.26 72.846 472.413 77.698 c
-472.194 78.953 473.043 80.11 474.134 79.912 c
-474.977 79.76 475.416 78.818 475.056 78.006 c
-474.219 76.114 470.291 73.85 473.103 73.499 c
-474.568 73.316 474.194 76.208 475.664 76.018 c
-480.073 75.447 473.52 72.21 473.835 70.857 c
-475.272 64.689 483.082 73.03 476.648 74.174 c
-475.53 74.373 474.27 72.775 473.334 73.789 c
-473.004 74.146 473.071 74.692 472.867 75.125 c
-472.768 75.335 472.61 75.509 472.438 75.665 c
-470.562 77.356 467.76 76.854 465.425 75.67 c
-460.605 73.225 461.678 68.008 464.544 68.175 c
-466.472 68.286 467.278 70.885 465.72 72.696 c
-464.542 74.063 462.634 74.316 460.919 74.844 c
-458.531 75.578 456.345 77.204 456.362 79.593 c
-456.407 85.853 465.068 85.3 464.764 80.078 c
-464.632 77.808 461.964 77.098 460.28 75.655 c
-459.215 74.741 458.561 73.47 457.994 72.189 c
-456.82 69.532 454.239 68.596 453.484 70.211 c
-453.034 71.174 454.054 72.237 453.643 73.208 c
-452.209 76.593 447.075 72.82 450.36 70.263 c
-453.057 68.163 454.158 73.27 456.476 74.313 c
-457.344 74.703 458.48 74.612 459.018 75.425 c
-460.081 77.031 448.008 85.254 456.906 83.868 c
-457.593 83.761 457.97 83.049 457.961 82.317 c
-457.923 78.789 455.577 73.437 458.996 75.034 c
-459.962 75.485 460.107 77.431 461.376 77.076 c
-462.249 76.831 462.791 74.432 463.755 75.626 c
-464.214 76.193 463.408 76.818 462.451 77.123 c
-459 78.223 454.955 80.221 455.308 77.186 c
-455.478 75.731 457.035 73.685 455.377 73.796 c
-453.675 73.911 455.368 76.048 454.889 76.952 c
-453.14 80.253 451.255 74.375 449.668 74.702 c
-448.018 75.043 448.727 77.213 448.691 78.944 c
-448.639 81.464 445.824 84.492 448.344 85.905 c
-449.532 86.572 451.744 86.257 451.449 87.764 c
-451.193 89.078 449.185 88.711 447.81 86.99 c
-446.84 85.776 445.565 84.843 444.576 83.645 c
-443.319 82.123 442.579 80.261 442.164 78.333 c
-440.229 69.36 449.045 66.054 451.358 70.33 c
-452.811 73.016 449.999 75.93 447.369 74.605 c
-445.316 73.571 443.852 69.508 441.933 71.613 c
-441.576 72.005 441.516 72.601 441.117 72.954 c
-437.987 75.729 438.133 68.902 436.221 68.258 c
-431.28 66.594 434.97 74.036 433.91 77.577 c
-433.583 78.671 432.624 79.477 431.497 79.451 c
-428.665 79.384 424.638 71.176 422.955 76.526 c
-422.628 77.565 423.601 78.623 423.229 79.655 c
-422.95 80.431 421.968 80.842 421.934 81.694 c
-421.813 84.772 425.817 81.967 427.688 82.659 c
-430.002 83.514 430.246 97.308 433.941 89.791 c
-434.197 89.269 433.992 88.64 433.472 88.515 c
-430.226 87.739 433.838 92.87 431.997 93.116 c
-430.321 93.339 430.169 90.516 432.115 90.669 c
-433.53 90.781 436.584 98.251 436.533 93.35 c
-436.533 93.288 436.521 93.226 436.527 93.164 c
-436.799 90.035 437.311 95.021 438.288 96.361 c
-438.755 97.002 439.973 96.527 440.322 97.308 c
-441.152 99.16 437.954 98.455 437.347 99.418 c
-436.652 100.522 437.627 104.111 435.873 102.658 c
-435.221 102.118 436.163 101.308 436.037 100.624 c
-435.753 99.079 432.56 99.41 432.94 102.293 c
-433.348 105.404 437.867 107.141 436.985 110.467 c
-436.387 112.723 432.827 114.595 434.679 116.664 c
-436.956 119.21 442.839 108.741 444.563 115.218 c
-444.909 116.518 443.544 117.401 442.391 118.22 c
-437.128 121.963 431.975 120.071 433.632 117.289 c
-434.314 116.145 436.121 116.42 436.845 115.315 c
-437.527 114.273 436.703 112.902 437.197 111.789 c
-438.288 109.329 441.579 111.102 444.25 113.487 c
-446.135 115.169 448.807 116.246 449.389 118.74 c
-449.617 119.714 449.4 120.779 448.573 121.294 c
-447.209 122.144 444.686 120.691 444.01 122.539 c
-443.382 124.256 445.849 124.719 447.492 125.656 c
-448.852 126.431 450.107 128.066 451.383 127.141 c
-451.878 126.783 452.005 126.142 452.193 125.564 c
-452.564 124.428 453.261 123.442 453.963 122.477 c
-454.264 122.064 454.564 121.596 454.406 121.118 c
-453.427 118.158 449.239 121.538 452.099 123.17 c
-453.419 123.923 455.12 120.452 456.43 122.264 c
-457.221 123.359 455.435 124.147 455.131 125.233 c
-453.169 132.233 466.358 129.203 460.908 122.961 c
-459.757 121.642 457.709 122.076 456.174 123.213 c
-454.634 124.355 453.472 125.991 453.329 127.897 c
-453.201 129.614 453.675 131.663 452.157 132.472 c
-450.775 133.209 448.041 132.465 448.327 134.34 c
-448.557 135.849 450.597 135.17 452.392 134.171 c
-454.288 133.117 456.863 133.716 458.46 132.18 c
-461.026 129.712 459.056 125.469 455.652 125.856 c
-454.469 125.991 453.538 126.948 453.812 128.003 c
-454.234 129.626 459.534 129.855 457.34 132.267 c
-456.56 133.125 455.015 132.429 454.812 130.905 c
-454.593 129.248 455.541 127.055 453.871 126.499 c
-450.911 125.514 452.262 130.071 451.562 132.807 c
-450.392 137.38 443.608 134.431 441.229 137.556 c
-440.877 138.018 440.669 138.604 440.906 139.123 c
-442.427 142.449 444.089 136.951 446.342 134.845 c
-447.559 133.708 449.497 134.258 450.926 133.479 c
-451.651 133.084 452.206 132.363 453.03 132.235 c
-456.101 131.755 457.182 136.497 453.802 137.392 c
-452.215 137.812 450.274 136.223 449.021 137.548 c
-447.121 139.557 452.92 143.213 449.635 145.064 c
-447.553 146.237 445.608 143.193 447.662 141.759 c
-454.017 137.319 448.093 157.752 455.119 151.784 c
-456.157 150.903 455.502 148.902 456.81 148.259 c
-459.881 146.753 459.603 152.432 461.757 152.704 c
-464.566 153.058 470.663 150.742 467.725 153.593 c
-467.609 153.706 467.457 153.774 467.346 153.892 c
-465.908 155.404 469.248 157.603 470.11 154.853 c
-470.668 153.073 468.24 151.496 466.192 152.994 c
-464.547 154.197 463.633 157.018 461.572 156.259 c
-461.269 156.147 461.011 155.94 460.712 155.819 c
-458.205 154.804 456.214 159.757 453.64 158.011 c
-452.985 157.566 452.403 156.696 451.749 157.144 c
-450.608 157.924 452.363 158.958 454.446 159.405 c
-456.24 159.789 456.854 162.179 458.655 162.547 c
-467.099 164.274 465.066 148.409 455.863 153.475 c
-454.911 153.999 454.302 154.938 453.637 155.793 c
-451.848 158.093 449.41 160.147 449.259 163.077 c
-449.166 164.875 450.032 166.552 450.276 168.328 c
-450.728 171.615 450.781 175.597 453.772 175.457 c
-455.838 175.36 456.873 172.938 456.193 170.659 c
-455.45 168.172 453.271 166.422 450.707 165.946 c
-449.417 165.706 448.02 165.851 447.188 166.837 c
-444.973 169.464 448.848 172.665 448.044 175.573 c
-447.637 177.047 446.208 177.929 445.45 179.239 c
-444.696 180.546 444.273 182.348 442.772 182.349 c
-439.634 182.349 441.702 178.173 441.383 175.336 c
-441.252 174.174 440.476 172.997 441.083 171.963 c
-443.345 168.113 448.064 173.242 444.477 175.111 c
-443.963 175.379 443.36 175.245 442.821 175.024 c
-439.536 173.683 437.891 169.978 439.248 166.735 c
-439.876 165.234 441.161 164.028 441.413 162.409 c
-443.123 151.39 426.803 156.133 432.504 162.712 c
-433.818 164.227 437.568 162.669 437.889 165.263 c
-438.03 166.402 436.902 167.261 435.64 167.197 c
-433.573 167.092 431.545 164.758 429.754 166.183 c
-426.301 168.929 431.483 174.743 435.117 170.409 c
-435.384 170.09 435.572 169.715 435.802 169.369 c
-436.695 168.028 438.237 166.944 438.075 165.315 c
-437.932 163.88 436.373 162.875 436.502 161.405 c
-436.555 160.789 436.812 160.076 436.288 159.771 c
-434.84 158.927 434.869 161.521 436.753 163.672 c
-439.379 166.67 443.341 169.553 442.256 166.419 c
-442.092 165.946 441.521 165.769 441.293 165.331 c
-440.702 164.19 444.163 159.31 440.899 160.879 c
-440.294 161.17 440.495 162.018 440.937 162.701 c
-442.478 165.081 441.172 167.441 439.684 166.866 c
-438.316 166.337 439.227 164.371 438.396 163.426 c
-437.263 162.139 432.418 164.976 432.961 161.595 c
-433.215 160.007 435.513 160.802 436.374 159.818 c
-437.613 158.4 434.979 150.164 438.588 153.95 c
-439.041 154.425 438.736 155.288 439.255 155.715 c
-439.965 156.298 440.84 155.346 441.644 155.516 c
-442.269 155.649 442.601 156.375 443.233 156.484 c
-445.425 156.863 445.038 153.203 441.37 150.917 c
-434.994 146.944 424.882 153.274 432.176 153.632 c
-432.992 153.672 433.708 152.751 434.501 153.113 c
-436.515 154.031 433.613 155.573 431.419 157.085 c
-430.102 157.992 430.156 159.898 429.143 161.092 c
-427.86 162.605 425.525 162.596 424.201 161.098 c
-423.395 160.186 423.216 158.932 423.084 157.724 c
-422.831 155.414 422.676 153.026 423.621 150.899 c
-424.567 148.773 424.64 146.451 422.998 146.462 c
-419.711 146.486 422.896 150.683 422.005 152.39 c
-421.014 154.289 417.887 153.643 416.748 150.859 c
-413.64 143.259 425.937 142.685 422.898 148.009 c
-422.674 148.402 422.226 148.582 421.877 148.864 c
-420.07 150.321 420.82 153.289 423.236 154.514 c
-425.993 155.911 429.453 154.528 432.156 156.05 c
-434.852 157.567 437.759 160.202 439.068 157.724 c
-439.894 156.162 438.358 154.395 436.223 154.095 c
-433.849 153.761 430.897 154.136 430.33 151.866 c
-430.061 150.787 430.762 149.69 430.511 148.609 c
-430.162 147.106 428.018 146.045 428.772 144.482 c
-433.166 135.37 434.429 155.115 438.333 151.169 c
-439.313 150.178 438.422 148.672 438.55 147.352 c
-438.99 142.819 446.127 142.699 446.622 147.968 c
-446.836 150.257 444.742 151.873 443.104 150.899 c
-440.19 149.166 443.014 145.02 445.577 146.917 c
-447.779 148.546 444.593 151.066 444.778 153.239 c
-444.957 155.347 447.363 156.191 449.68 156.315 c
-450.14 156.339 450.623 156.346 451.003 156.084 c
-455.558 152.935 446.403 147.426 445.679 154.345 c
-445.506 156.005 447.14 157.028 448.157 156.19 c
-449.663 154.95 447.262 153.33 447.237 151.782 c
-447.212 150.282 449.334 149.093 448.522 147.599 c
-447.525 145.764 444.954 147.411 443.42 150.23 c
-442.89 151.204 442.149 152.074 441.134 152.52 c
-440.408 152.84 439.602 152.907 438.855 153.171 c
-437.95 153.492 437.063 154.092 436.136 153.807 c
-434.516 153.309 434.48 151.166 435.898 150.717 c
-441.957 148.795 435.675 157.162 436.983 158.968 c
-442.933 167.184 450.445 148.498 437.531 149.13 c
-430.358 149.481 422.325 149.569 425.531 145.162 c
-426.623 143.661 429.135 144.274 430.221 142.767 c
-432.89 139.063 426.223 138.316 421.345 136.615 c
-419.503 135.973 417.393 135.106 416.726 136.701 c
-415.711 139.129 419.542 139.013 422.131 139.893 c
-427.774 141.811 421.294 148.893 420.357 144.076 c
-420.182 143.175 422.832 141.619 421.024 141.087 c
-419.872 140.748 420.402 142.492 420.13 143.544 c
-419.719 145.132 417.083 144.958 415.856 142.587 c
-414.697 140.347 412.858 138.445 411.409 139.742 c
-410.847 140.245 410.783 141.087 411.151 141.761 c
-411.948 143.222 414.69 143.8 413.968 145.622 c
-413.254 147.424 405.025 143.379 407.35 148.362 c
-408.12 150.012 410.92 147.99 411.696 149.628 c
-412.889 152.148 408.631 151.791 405.098 148.632 c
-403.194 146.93 400.28 147.72 399.894 149.958 c
-399.478 152.373 402.319 154.08 405.228 153.265 c
-407.377 152.664 407.609 150.463 406.384 150.111 c
-405.275 149.793 404.451 151.405 405.319 153.006 c
-405.455 153.256 405.605 153.5 405.684 153.774 c
-405.953 154.7 405.397 155.592 405.024 156.478 c
-404.645 157.377 404.783 158.406 405.563 158.53 c
-409.925 159.223 404.575 154.323 405.278 153.195 c
-406.776 150.792 409.033 155.01 410.622 154.176 c
-411.193 153.876 411.378 153.202 411.602 152.597 c
-412.166 151.077 413.61 150.135 414.607 150.952 c
-415.452 151.643 414.959 153.349 416.116 153.729 c
-416.926 153.995 417.575 153.196 418.042 152.397 c
-419.006 150.747 420.181 149.073 419.942 147.172 c
-419.347 142.442 409.468 136.042 416.606 134.282 c
-417.127 134.154 417.685 134.235 418.106 134.565 c
-419.149 135.381 418.74 136.912 419.073 138.151 c
-419.723 140.565 419.603 142.972 418.085 142.34 c
-415.075 141.087 420.213 138.55 419.128 137.193 c
-416.787 134.263 416.138 140.358 414.44 140.772 c
-407.619 142.437 414.368 132.954 412.28 131.398 c
-410.393 129.993 401.96 134.773 404.38 129.407 c
-405.613 126.673 408.992 130.658 410.537 129.14 c
-412.534 127.178 408.618 125.839 406.776 123.885 c
-405.737 122.783 405.751 121.06 406.945 120.335 c
-409.831 118.581 412.564 123.065 409.448 124.876 c
-408.698 125.311 407.734 125.154 406.99 125.6 c
-406.235 126.051 406.199 126.996 406.802 127.201 c
-407.4 127.404 407.746 126.642 407.891 125.878 c
-408.141 124.555 408.608 123.026 407.459 122.535 c
-406.724 122.22 405.947 122.748 405.506 123.482 c
-404.514 125.135 404.946 127.165 404.82 129.071 c
-404.656 131.552 404.585 134.377 406.748 134.632 c
-409.205 134.922 411.45 124.904 414.58 130.274 c
-415.339 131.577 414.024 133.21 412.155 133.117 c
-407.778 132.898 402.488 132.268 404.508 135.226 c
-404.678 135.475 404.949 135.67 404.987 135.972 c
-405.098 136.87 403.837 136.77 403.077 137.156 c
-399.599 138.922 405.306 142.416 403.917 144.422 c
-403.138 145.546 401.532 145.096 400.262 145.45 c
-396.99 146.363 397.054 152.154 393.281 152.158 c
-391.346 152.16 389.612 149.881 387.773 150.93 c
-383.352 153.452 390.061 158.946 399.262 155.651 c
-400.491 155.211 401.904 154.993 402.628 153.898 c
-403.689 152.297 402.791 149.189 405.038 148.939 c
-407.3 148.687 411.868 150.892 410.097 148.264 c
-409.686 147.655 408.832 147.978 408.09 148.272 c
-402.31 150.561 396.365 153.775 400.622 155.478 c
-401.393 155.787 402.218 155.437 402.96 155.051 c
-405.057 153.958 407.094 152.397 407.143 150.089 c
-407.213 146.754 403.087 147.819 404.139 149.487 c
-404.293 149.731 404.601 149.788 404.891 149.816 c
-406.471 149.971 408.165 149.713 409.013 148.413 c
-409.448 147.746 409.528 146.92 409.873 146.205 c
-410.812 144.259 413.286 143.671 414.451 141.876 c
-417.94 136.497 409.947 134.195 409.641 138.125 c
-409.596 138.707 409.976 139.22 410.504 139.486 c
-411.685 140.078 413.104 139.424 413.303 138.166 c
-413.526 136.749 412.11 135.614 410.599 135.957 c
-407.264 136.714 408.244 140.903 410.66 140.552 c
-411.393 140.446 411.814 139.725 412.438 139.349 c
-412.967 139.03 413.601 138.982 414.2 138.841 c
-417.095 138.159 419.079 135.485 418.844 132.526 c
-418.633 129.866 419.042 127.137 420.921 127.696 c
-422.458 128.154 422.117 130.228 420.77 130.221 c
-419.535 130.215 419.067 128.253 420.615 127.328 c
-422.229 126.364 425.075 127.413 425.684 125.34 c
-426.665 122 420.308 120.085 419.412 125.29 c
-419.216 126.432 419.623 127.604 420.541 128.305 c
-423.544 130.598 426.826 127.142 425.048 124.834 c
-423.755 123.156 418.29 125.259 419.07 121.715 c
-419.285 120.74 420.426 120.384 421.5 120.562 c
-423.419 120.881 424.937 122.433 424.713 124.282 c
-424.515 125.915 422.855 127.038 422.778 128.692 c
-422.65 131.434 426.329 135.652 422.748 135.993 c
-419.017 136.348 422.286 131.595 422.609 128.212 c
-422.684 127.429 422.424 126.628 422.651 125.87 c
-422.925 124.956 423.905 124.641 424.309 125.218 c
-424.974 126.169 423.345 127.427 422.435 126.114 c
-421.867 125.294 422.609 124.345 423.062 123.436 c
-424.176 121.201 423.104 118.595 421.187 116.862 c
-420.047 115.832 418.469 115.247 417.41 116.18 c
-415.219 118.111 418.704 120.813 418.104 123.09 c
-416.467 129.309 411.336 143.943 415.534 134.717 c
-415.876 133.965 415.46 132.713 416.386 132.561 c
-417.743 132.338 418.28 135.225 415.646 135.467 c
-414.537 135.569 413.809 134.686 414.259 134.09 c
-414.896 133.246 416.231 134.848 416.861 133.977 c
-418.126 132.229 414.742 133.151 413.682 132.445 c
-413.197 132.122 413.118 131.445 413.545 131.097 c
-414.908 129.984 415.028 132.645 415.795 134.201 c
-418.446 139.578 422.863 130.409 425.653 131.934 c
-426.854 132.59 426.972 134.128 427.272 135.468 c
-427.468 136.346 427.789 137.253 427.448 138.089 c
-426.602 140.158 423.212 139.449 422.356 141.508 c
-420.926 144.95 419.129 150.334 418.522 146.619 c
-418.44 146.118 418.874 145.643 418.727 145.149 c
-418.362 143.915 416.65 144.885 415.866 144.24 c
-409.517 139.016 421.518 144.984 424.711 143.97 c
-425.307 143.78 425.86 143.236 426.443 143.51 c
-427.259 143.893 426.819 144.975 426.728 145.895 c
-426.268 150.545 434.443 151.878 435.267 145.429 c
-435.65 142.436 433.115 140.194 430.909 138.083 c
-426.832 134.182 421.787 130.394 418.079 133.714 c
-414.926 136.537 417.461 140.779 420.25 139.808 c
-421.766 139.281 422.068 137.293 420.791 136.406 c
-419.312 135.379 417.344 137.187 415.833 136.267 c
-412.578 134.286 416.11 129.27 419.254 131.984 c
-422.039 134.389 417.43 137.03 415.718 140.044 c
-414.842 141.587 414.755 143.794 413.012 144.338 c
-409.988 145.282 407.375 140.784 410.618 137.672 c
-411.984 136.361 414.07 136.051 415.321 137.326 c
-419.048 141.127 411.678 143.503 405.717 146.094 c
-403.718 146.962 402.646 149.057 403.847 150.363 c
-404.89 151.496 406.574 150.716 408.098 150.348 c
-410.609 149.74 413.022 148.542 411.986 146.915 c
-411.302 145.84 409.822 146.394 408.532 146.533 c
-406.798 146.721 405.145 145.673 405.081 144.039 c
-404.889 139.074 413.322 139.07 412.676 145.058 c
-412.447 147.18 410.163 148.364 409.551 150.372 c
-408.847 152.68 409.142 155.991 406.793 155.641 c
-405.002 155.375 404.408 150.228 402.003 152.334 c
-400.464 153.682 403.761 156.008 402.184 157.351 c
-400.979 158.376 399.601 156.619 398.963 154.486 c
-398.707 153.632 398.282 152.839 398.007 151.991 c
-396.238 146.526 401.977 144.196 403.549 146.963 c
-404.188 148.09 403.448 149.4 402.472 150.367 c
-399.062 153.747 393.785 154.287 391.605 150.731 c
-389.605 147.469 388.02 142.779 385.68 145.224 c
-384.502 146.455 385.808 148.016 386.827 147.416 c
-387.954 146.751 385.759 144.383 387.463 143.945 c
-389.074 143.53 388.054 145.872 388.245 147.344 c
-388.873 152.179 392.678 145.819 396.163 142.084 c
-398.065 140.046 401.076 141.3 400.836 143.43 c
-400.594 145.593 397.729 145.095 395.504 145.404 c
-390.634 146.081 388.999 152.408 391.98 157.544 c
-393.014 159.325 392.238 161.034 391.174 160.625 c
-390.367 160.316 390.555 157.524 389.183 158.558 c
-388.659 158.952 389.024 159.877 389.845 159.822 c
-391.709 159.697 389.24 153.839 392.513 155.149 c
-393.761 155.648 393.249 158.038 391.051 157.873 c
-388.485 157.681 386.238 158.464 387.319 159.645 c
-387.841 160.216 388.779 159.82 388.731 159.068 c
-388.607 157.135 377.271 154.673 384.45 155.938 c
-384.695 155.981 384.846 156.209 385.053 156.341 c
-386.12 157.02 387.112 155.351 388.197 155.65 c
-392.186 156.748 387.723 162.498 385.571 158.598 c
-384.972 157.514 386.013 156.351 387.312 155.731 c
-387.675 155.558 388.053 155.392 388.31 155.082 c
-394.172 148.03 377.62 147.532 383.265 154.607 c
-383.457 154.847 383.75 154.993 383.911 155.256 c
-387.758 161.522 374.137 158.801 379.013 152.57 c
-380.063 151.228 381.999 150.817 382.864 149.332 c
-383.969 147.433 383.012 144.187 385.389 143.538 c
-387.591 142.937 390.485 148.027 392.374 144.922 c
-392.644 144.479 392.696 143.836 393.211 143.7 c
-395.564 143.075 393.677 146.908 394.931 147.224 c
-396.213 147.548 395.984 145.661 396.243 144.271 c
-396.706 141.787 400.5 141.375 402.4 144.253 c
-403.908 146.536 403.576 149.866 405.846 151.523 c
-408.453 153.425 413.223 154.251 411.35 156.971 c
-410.369 158.395 408.018 157.512 406.943 158.817 c
-406.357 159.529 406.493 160.533 406.277 161.418 c
-403.763 171.725 389.789 162.938 396.833 156.705 c
-398.571 155.167 401.493 156.397 403.188 154.791 c
-404.408 153.636 404.952 151.231 406.658 151.808 c
-410.053 152.957 405.272 155.892 404.385 158.54 c
-403.521 161.119 406.334 163.557 409.502 162.773 c
-409.72 162.719 409.934 162.651 410.156 162.613 c
-414.886 161.813 418.867 158.067 415.243 158.268 c
-414.428 158.313 414.196 159.352 413.509 159.699 c
-410.306 161.316 409.105 155.431 412.851 155.732 c
-414.614 155.874 414.37 158.457 415.727 159.21 c
-421.223 162.258 423.602 150.246 415.314 151.713 c
-414.256 151.9 413.121 151.852 413.192 151.029 c
-413.248 150.382 414.161 150.328 414.4 149.777 c
-416.316 145.371 411.777 151.03 409.583 154.142 c
-408.181 156.131 404.819 154.586 405.559 151.871 c
-406.746 147.512 411.898 151.024 409.579 153.077 c
-408.46 154.068 406.677 151.504 405.609 152.868 c
-405.427 153.1 405.399 153.415 405.24 153.662 c
-403.635 156.151 399.065 152.053 403.069 149.508 c
-404.225 148.773 405.871 148.231 405.374 147.038 c
-404.772 145.597 401.974 146.234 402.009 148.994 c
-402.037 151.284 403.659 153.276 405.877 153.342 c
-411.606 153.512 420.384 151.492 416.381 155.79 c
-415.581 156.65 414.051 156.269 413.301 157.19 c
-411.408 159.515 415.727 161.796 421.089 159.758 c
-427.646 157.266 430.435 164.623 426.866 166.408 c
-425.108 167.287 423.511 165.494 421.855 164.401 c
-419.685 162.97 416.971 163.014 414.379 163.203 c
-408.88 163.604 407.649 168.636 410.269 169.554 c
-412.277 170.258 413.494 167.577 413.432 164.687 c
-413.359 161.316 412.356 157.831 409.645 158.265 c
-408.101 158.511 406.717 160.513 405.316 159.443 c
-403.477 158.04 406.169 156.164 408.147 154.327 c
-409.078 153.463 409.52 152.202 409.397 150.937 c
-409.144 148.332 410.9 146.939 411.599 148.045 c
-412.218 149.027 410.573 149.563 410.378 150.462 c
-409.942 152.47 413.23 153.151 413.57 150.801 c
-413.592 150.651 413.584 150.499 413.542 150.353 c
-411.771 144.203 406.78 154.024 412.421 159.05 c
-415.319 161.632 413.657 165.492 411.174 165.045 c
-406.321 164.172 413.567 155.825 408.716 154.95 c
-407.593 154.747 406.201 155.759 405.433 154.751 c
-405.021 154.21 405.252 153.43 405.881 153.261 c
-415.105 150.788 401.689 159.604 404.176 160.833 c
-405.543 161.508 406.93 159.513 405.517 158.284 c
-404.427 157.336 402.814 158.454 401.572 157.886 c
-400.18 157.249 400.264 155.427 400.408 153.815 c
-400.614 151.515 400.332 149.173 399.271 147.121 c
-398.703 146.023 397.92 145.041 396.903 144.336 c
-390.104 139.63 394.306 128.506 397.026 134.814 c
-397.115 135.02 397.137 135.253 397.048 135.459 c
-396.669 136.333 395.211 136.123 394.748 134.829 c
-394.034 132.833 394.971 129.541 392.621 129.695 c
-390.846 129.811 391.111 132.342 389.875 133.261 c
-388.916 133.975 387.652 133.526 386.479 133.274 c
-385.884 133.146 385.274 133.084 384.69 132.913 c
-382.736 132.342 380.834 130.681 379.041 131.741 c
-378.237 132.215 377.827 133.169 378.19 134.004 c
-380.409 139.11 387.793 132.609 382.296 129.584 c
-380.318 128.495 375.432 131.064 375.933 127.615 c
-376.191 125.844 378.769 126.062 380.85 127.706 c
-382.498 129.008 384.384 130.003 385.881 131.478 c
-387.482 133.056 387.982 135.412 386.402 136.348 c
-384.324 137.58 382.048 135 383.569 133.05 c
-385.517 130.553 387.847 134.126 385.898 134.766 c
-385.496 134.898 385.023 134.525 384.665 134.797 c
-382.986 136.074 386.439 135.837 387.197 136.634 c
-388.376 137.874 385.828 138.971 386.125 140.182 c
-386.52 141.792 389.326 141.306 390.375 138.361 c
-391.745 134.516 391.474 130.332 388.423 130.276 c
-386.158 130.235 385.307 132.903 384.914 135.386 c
-384.763 136.337 384.563 137.297 384.038 138.107 c
-379.887 144.508 372.573 137.51 376.545 133.9 c
-378.611 132.022 381.53 135.005 383.813 133.905 c
-387.655 132.055 385.409 124.424 377.815 125.203 c
-376.63 125.324 375.47 125.61 374.329 125.947 c
-372.528 126.48 370.737 127.16 369.364 128.445 c
-367.353 130.327 366.601 133.272 368.09 135.483 c
-371.276 140.212 376.129 135.182 373.564 133.058 c
-372.804 132.429 371.541 132.924 370.857 132.179 c
-364.757 125.536 381.235 124.88 375.883 132.27 c
-374.095 134.738 359.775 135.801 368.596 136.457 c
-369.229 136.504 369.623 135.875 370.157 135.563 c
-370.851 135.159 371.692 135.313 372.466 135.539 c
-373.665 135.889 375.044 136.06 375.492 135.031 c
-376.525 132.658 372.3 131.021 371.51 134.225 c
-371.415 134.613 371.465 135.017 371.589 135.396 c
-371.886 136.299 372.563 136.999 373.164 137.732 c
-374.379 139.213 375.399 140.963 377.171 141.716 c
-379.314 142.626 382.234 141.907 383.553 143.953 c
-384.773 145.845 383.965 149.691 386.631 149.396 c
-390.81 148.933 385.54 141.688 389.415 141.052 c
-395.491 140.053 392.636 150.186 387.985 146.174 c
-387.045 145.363 387.477 143.607 386.32 143.002 c
-383.923 141.75 383.414 145.979 381.505 146.332 c
-379.207 146.758 378.863 143.64 377.774 141.545 c
-376.315 138.737 371.865 137.732 372.063 134.307 c
-372.125 133.246 371.808 132.231 371.108 132.501 c
-370.381 132.782 370.876 133.787 371.75 134.529 c
-374.952 137.251 372.236 143.08 366.883 142.417 c
-364.238 142.09 362.505 143.639 363.537 144.633 c
-364.299 145.366 365.39 144.403 365.984 143.112 c
-366.926 141.06 368.565 139.44 369.803 137.557 c
-370.46 136.558 371.006 135.476 371.198 134.295 c
-371.333 133.467 371.287 132.61 371.543 131.809 c
-372.032 130.274 373.548 129.164 373.624 127.53 c
-373.748 124.892 370.698 121.052 373.886 120.565 c
-376.273 120.199 377.674 124.457 373.936 126.437 c
-372.669 127.108 371.232 127.324 369.808 127.481 c
-368.178 127.661 366.523 127.777 364.98 128.342 c
-362.04 129.418 359.96 131.905 357.604 133.945 c
-354.544 136.593 350.762 138.804 349.677 142.728 c
-349.235 144.326 349.161 146.225 347.684 146.991 c
-347.196 147.244 346.614 147.294 346.141 147.02 c
-344.13 145.857 345.519 142.295 348.45 143.1 c
-353.111 144.382 350.574 150.804 346.804 149.087 c
-345.489 148.488 344.778 146.165 343.27 146.945 c
-341.695 147.76 342.95 150.274 345.928 151.13 c
-347.636 151.62 349.361 152.481 351.057 151.916 c
-352.569 151.412 353.447 149.936 354.691 148.963 c
-356.591 147.476 359.209 147.756 359.724 149.654 c
-359.825 150.028 359.794 150.423 359.68 150.794 c
-358.931 153.24 355.025 153.946 355.234 156.742 c
-355.479 160.03 360.649 160.938 363.48 156.903 c
-364.25 155.807 364.788 154.509 365.887 153.733 c
-368.329 152.01 371.436 153.707 371.058 156.169 c
-370.672 158.685 367.399 158.428 364.684 158.63 c
-361.338 158.879 358.67 161.182 356.228 163.482 c
-354.392 165.211 352.197 166.926 349.916 166.063 c
-347.234 165.048 346.633 160.624 343.473 160.766 c
-333.692 161.204 340.56 176.404 347.458 169.177 c
-348.883 167.685 348.083 165.277 349.02 163.503 c
-349.494 162.605 350.362 161.975 351.368 161.835 c
-355.135 161.309 357.048 165.904 354.294 167.982 c
-353.569 168.53 352.484 168.748 352.292 169.659 c
-351.891 171.56 354.625 171.372 356.571 171.918 c
-363.189 173.775 357.307 181.573 354.562 177.579 c
-354.307 177.208 354.284 176.694 353.928 176.409 c
-351.734 174.661 351.51 181.27 349.296 179.457 c
-347.278 177.806 351.398 176.673 351.258 175.246 c
-351.115 173.785 349.026 173.691 347.279 174.835 c
-342.738 177.81 344.461 182.597 346.961 181.872 c
-348.593 181.397 350.416 177.437 351.282 179.999 c
-352.189 182.687 346.97 180.806 347.139 182.819 c
-347.253 184.174 349.103 183.574 350.173 184.069 c
-350.978 184.442 351.252 185.372 351.427 186.253 c
-352.405 191.197 356.81 192.404 357.644 189.949 c
-358.288 188.051 355.63 187.23 354.953 185.599 c
-354.75 185.109 354.722 184.536 354.359 184.144 c
-352.892 182.562 349.727 185.024 351.131 189.098 c
-351.322 189.653 351.515 190.22 351.473 190.806 c
-351.325 192.881 348.941 193.801 347.685 192.43 c
-347.2 191.899 347.125 191.116 347.452 190.471 c
-348.46 188.477 351.555 188.769 352.751 191.185 c
-355.152 196.035 356.706 203.604 359.47 199.328 c
-360.941 197.053 357.384 195.769 355.281 193.956 c
-353.921 192.785 352.539 191.077 351.263 192.143 c
-350.008 193.19 351.269 194.971 352.822 196.293 c
-355.761 198.795 353.359 201.904 351.795 200.856 c
-351.205 200.461 351.238 199.599 351.843 199.319 c
-352.777 198.886 353.315 200.269 354.189 200.403 c
-355.22 200.561 355.774 199.229 356.762 199.145 c
-361.119 198.777 359.015 208.019 352.178 204.645 c
-351.974 204.544 351.768 204.436 351.541 204.424 c
-350.644 204.373 350.123 205.444 350.474 206.464 c
-351.556 209.604 356.284 209.468 357.391 205.9 c
-357.667 205.011 357.559 204.04 357.882 203.165 c
-358.536 201.393 360.51 200.555 362.416 200.919 c
-366.57 201.713 370.622 201.236 369.329 198.772 c
-368.657 197.49 366.915 198 365.399 198.454 c
-361.493 199.623 356.93 200.807 358.326 203.923 c
-358.616 204.571 359.231 205.023 359.937 205.031 c
-362.581 205.061 362.732 201.493 360.53 201.219 c
-359.393 201.077 358.586 202.59 357.438 202.27 c
-355.485 201.725 356.537 198.504 360.233 197.309 c
-361.176 197.004 362.227 196.623 362.937 197.279 c
-363.148 197.474 363.274 197.739 363.444 197.97 c
-368.095 204.313 376.443 193.841 368.561 190.671 c
-368.211 190.53 367.816 190.471 367.494 190.662 c
-366.276 191.386 367.254 193.823 369.848 193.47 c
-371.389 193.261 372.843 192.388 373.029 190.91 c
-373.3 188.751 370.949 187.222 368.487 187.7 c
-363.493 188.67 364.117 194.362 367.2 194.481 c
-371.145 194.634 379.04 193.849 374.206 195.731 c
-373.906 195.848 373.554 195.753 373.267 195.903 c
-366.103 199.643 380.273 197.209 378.668 199.878 c
-378.419 200.292 377.825 200.349 377.576 200.764 c
-376.499 202.558 380.61 204.465 381.409 200.787 c
-381.777 199.095 380.637 197.498 379.144 197.743 c
-376.681 198.146 376.572 202.453 380.523 204.083 c
-386.798 206.672 392.772 202.075 391.048 197.252 c
-389.752 193.627 385.03 193.909 381.647 192.343 c
-379.997 191.579 378.618 190.249 378.237 188.481 c
-377.585 185.455 380.421 183.539 382.051 184.959 c
-383.591 186.3 382.194 189.013 379.277 189.555 c
-376.522 190.066 373.597 189.257 372.183 186.902 c
-370.858 184.696 371.761 181.954 373.913 181.758 c
-376.696 181.504 377.869 187.258 381.023 185.581 c
-381.794 185.171 382.086 184.262 382.659 183.616 c
-389.253 176.177 395.181 190.478 387.135 190.023 c
-385.69 189.941 385.205 188.267 384.31 187.164 c
-381.593 183.815 377.281 186.542 378.418 189.265 c
-379.414 191.65 382.609 189.851 384.672 190.665 c
-387.895 191.938 388.057 202.928 392.987 198.297 c
-395.018 196.388 392.422 193.936 390.99 195.323 c
-389.271 196.989 394.14 198.917 392.317 200.59 c
-391.629 201.221 390.638 200.571 389.764 200.682 c
-387.425 200.978 387.99 204.928 385.723 205.324 c
-382.321 205.918 383.131 200.245 380.536 199.653 c
-379.499 199.417 378.228 200.082 377.48 199.238 c
-374.715 196.117 380.821 196.849 385.914 199.124 c
-387.962 200.039 391.183 198.903 391.93 201.286 c
-392.098 201.821 391.995 202.425 392.268 202.919 c
-393.007 204.254 396.715 203.687 395.914 205.91 c
-395.322 207.555 393.347 205.918 391.857 205.971 c
-385.618 206.191 392.576 213.517 391.364 216.663 c
-390.308 219.407 384.305 221.551 387.606 223.954 c
-390.302 225.917 393.2 221.481 390.058 219.759 c
-389.135 219.253 387.846 219.691 387.098 218.898 c
-383.736 215.332 391.884 214.708 391.804 212.236 c
-391.747 210.485 389.624 209.914 387.614 209.954 c
-385.263 210.001 383.393 211.428 384.195 212.868 c
-386.28 216.612 388.332 209.989 390.656 209.431 c
-393.367 208.78 395.417 212.688 392.981 216.081 c
-391.095 218.708 390.777 221.748 392.857 221.804 c
-394.143 221.838 394.848 220.297 394.345 218.844 c
-393.001 214.96 390.915 210.452 394.236 210.989 c
-395.52 211.196 396.461 213.503 397.762 212.464 c
-400.945 209.922 394.54 210.956 391.701 209.903 c
-389.86 209.221 390.132 206.208 388.191 205.667 c
-386.756 205.268 385.501 206.57 385.083 208.165 c
-383.49 214.244 389.911 218.096 393.342 214.721 c
-395.064 213.026 393.809 210.663 392.253 211.075 c
-390.711 211.484 394.381 223.28 389.292 217.597 c
-388.684 216.918 389.434 216.037 389.708 215.179 c
-393.236 204.14 371.119 208.026 379.671 219.544 c
-381.45 221.939 384.878 221.849 387.406 223.316 c
-394.111 227.206 400.428 225.148 397.928 221.885 c
-396.709 220.294 393.989 221.785 392.718 220.278 c
-390.634 217.807 395.06 216.179 396.589 213.764 c
-397.283 212.669 397.318 211.18 398.349 210.361 c
-399.246 209.65 400.484 209.74 401.565 210.163 c
-404.287 211.226 404.209 214.211 402.503 214.504 c
-402.333 214.533 402.159 214.517 401.987 214.535 c
-399.733 214.771 399.3 218.468 402.309 219.553 c
-406.404 221.029 407.281 215.848 404.777 215.523 c
-402.363 215.209 403.511 219.337 401.681 219.675 c
-400.517 219.891 399.625 218.564 400.103 217.253 c
-400.989 214.825 406.796 213.131 403.778 210.762 c
-402.076 209.425 400.663 212.049 399.238 214.085 c
-397.68 216.31 394.497 218.23 396.178 220.383 c
-397.781 222.438 401.518 220.819 401.831 216.983 c
-401.955 215.466 401.658 213.818 402.587 212.595 c
-403.275 211.69 404.429 211.351 405.374 210.733 c
-410.291 207.514 415.092 209.015 413.296 211.509 c
-411.943 213.387 401.94 214.305 407.951 215.457 c
-409.184 215.693 409.4 213.096 410.753 213.626 c
-411.193 213.799 411.301 214.343 411.642 214.654 c
-417.228 219.737 410.687 210.275 407.828 205.499 c
-406.679 203.58 408.442 201.441 410.562 200.052 c
-413.983 197.812 413.744 194.057 411.539 194.007 c
-410.419 193.981 409.749 195.357 408.628 195.323 c
-407.6 195.292 406.872 193.998 405.822 194.297 c
-404.705 194.614 404.732 196.587 403.445 196.598 c
-401.772 196.612 401.674 193.619 404.655 192.077 c
-405.671 191.551 406.624 190.892 407.709 190.526 c
-410.844 189.467 414.823 190.851 417.097 188.262 c
-418.48 186.687 418.428 184.322 417.03 182.746 c
-415.738 181.29 413.543 180.905 412.421 179.299 c
-410.492 176.54 412.83 173.244 413.619 170.024 c
-415.108 163.948 407.987 163.481 408.157 166.686 c
-408.261 168.645 411.685 168.012 411.911 169.876 c
-412.139 171.754 409.063 172.566 406.756 170.15 c
-403.986 167.249 400.226 167.149 400 169.585 c
-399.906 170.6 400.876 171.536 400.499 172.523 c
-398.728 177.167 391.344 169.982 397.882 164.595 c
-399.532 163.236 401.148 161.789 403.118 160.948 c
-403.944 160.596 404.846 160.361 405.708 160.609 c
-406.83 160.932 407.605 162.02 408.763 162.214 c
-410.187 162.453 411.342 161.342 412.47 160.432 c
-414.567 158.741 417.339 157.797 419.525 159.192 c
-421.033 160.153 421.64 162.019 422.99 163.175 c
-424.304 164.302 426.214 164.516 427.247 163.281 c
-429.267 160.864 426.153 156.716 421.437 158.005 c
-419.666 158.488 417.711 158.516 417.601 157.064 c
-417.465 155.263 419.991 151.299 417.492 152.773 c
-417.047 153.035 417.164 153.641 417.224 154.174 c
-417.526 156.863 414.826 158.731 411.852 159.053 c
-409.998 159.253 408.464 160.311 409.142 161.444 c
-409.837 162.608 411.406 161.485 412.504 161.869 c
-415.493 162.917 408.061 171.503 414.303 170.762 c
-415.384 170.633 416.663 169.198 417.211 170.37 c
-419.233 174.687 412.26 169.984 412.056 171.825 c
-411.904 173.202 414.119 173.164 415.875 171.309 c
-416.989 170.132 418.732 169.712 419.948 170.667 c
-422.925 173.005 418.798 176.646 419.162 179.756 c
-419.644 183.88 424.452 182.909 424.082 180.461 c
-423.856 178.969 417.803 178.521 420.706 176.238 c
-421.481 175.628 422.365 176.545 423.125 177.358 c
-424.227 178.536 425.999 179.051 426.676 180.542 c
-427.709 182.818 425.579 184.87 423.891 183.896 c
-423.268 183.536 423.054 182.769 422.551 182.266 c
-420.93 180.644 418.032 181.832 417.695 184.443 c
-417.075 189.256 423.16 190.099 423.973 186.651 c
-424.618 183.916 417.991 182.386 420.457 179.242 c
-422.136 177.101 425.281 180.445 427.115 178.849 c
-429.728 176.575 425.986 171.632 422.165 174.729 c
-421.591 175.194 421.403 175.956 421.903 176.26 c
-424.032 177.552 422.671 173.691 423.455 173.097 c
-426.222 171.001 427.381 178 421.997 177.956 c
-419.416 177.935 417.611 176.145 418.613 174.758 c
-421.981 170.092 423.534 182.768 426.731 179.228 c
-428.192 177.611 425.408 176.291 423.648 174.737 c
-421.408 172.761 419.58 168.787 417.684 171.086 c
-417.146 171.738 417.315 172.753 416.727 173.368 c
-415.847 174.291 413.949 173.564 413.348 174.826 c
-412.2 177.237 416.016 177.915 415.979 175.78 c
-415.96 174.646 413.233 174.865 413.79 173.39 c
-414.121 172.515 415.489 172.908 416.243 174.206 c
-418.06 177.335 421.659 177.895 422.514 175.641 c
-422.877 174.684 422.291 173.665 422.409 172.663 c
-422.886 168.587 428.918 169 428.838 173.09 c
-428.833 173.364 428.784 173.659 428.951 173.877 c
-429.465 174.55 430.6 173.777 430.689 172.277 c
-430.906 168.634 432.843 164.53 430.024 162.131 c
-428.415 160.762 426.13 161.031 424.043 161.488 c
-423.388 161.631 422.728 161.788 422.156 162.139 c
-412.499 168.082 430.06 177.28 427.641 167.06 c
-427.362 165.88 425.143 165.196 425.986 163.895 c
-426.698 162.797 430.979 165.921 430.421 162.811 c
-430.248 161.849 428.581 162.146 428.422 161.174 c
-428.211 159.887 430.22 159.532 430.445 160.931 c
-430.792 163.088 427.821 161.406 426.158 161.739 c
-424.698 162.031 424.569 163.851 423.92 165.166 c
-422.939 167.153 420.343 168.062 419.901 170.288 c
-419.708 171.261 420.185 172.24 421.04 172.219 c
-423.132 172.168 421.707 168.852 423.184 168.275 c
-425.449 167.39 426.146 171.01 423.92 171.101 c
-422.403 171.162 422.943 169.048 422.424 167.787 c
-421.655 165.917 419.017 166.225 416.977 167.665 c
-415.78 168.509 414.666 169.462 413.543 170.402 c
-411.437 172.162 408.64 173.083 407.421 171.163 c
-406.685 170.005 407.317 168.247 406.193 167.349 c
-404.496 165.993 402.159 168.147 401.829 171.342 c
-401.675 172.837 401.596 174.422 402.471 175.642 c
-407.698 182.935 414.572 171.605 407.949 170.438 c
-407.815 170.414 407.678 170.41 407.546 170.443 c
-403.249 171.532 409.849 176.671 413.31 171.89 c
-414.235 170.612 415.445 169.528 416.957 169.079 c
-417.76 168.84 418.692 168.715 419.055 167.961 c
-420.647 164.653 412.18 165.433 413.966 162.022 c
-414.248 161.485 414.954 161.17 414.934 160.539 c
-414.849 157.757 412.277 160.956 410.812 164.298 c
-409.973 166.212 407.232 166.322 405.94 164.436 c
-405.184 163.332 405.31 161.831 406.396 161.188 c
-406.817 160.938 407.351 160.885 407.685 160.521 c
-408.348 159.801 407.754 158.765 407.704 157.815 c
-407.69 157.545 407.726 157.273 407.839 157.027 c
-408.917 154.683 411.668 157.064 414.189 158.622 c
-414.75 158.969 415.424 159.237 415.637 159.864 c
-416.414 162.155 411.762 162.35 412.374 164.566 c
-412.847 166.276 415.07 165.287 416.835 165.289 c
-419.478 165.291 421.054 168.163 420.601 171.075 c
-419.736 176.634 424.793 178.469 425.072 175.746 c
-425.187 174.624 423.563 174.143 423.59 173.042 c
-423.612 172.167 424.581 171.801 425.258 171.257 c
-426.763 170.047 428.148 167.856 429.414 169.203 c
-433.365 173.404 423.967 172.073 423.347 174.025 c
-422.998 175.122 423.921 176.07 424.62 176.999 c
-425.807 178.578 426.276 180.543 426.454 182.508 c
-426.599 184.11 426.178 185.816 424.763 186.004 c
-419.758 186.666 423.914 179.57 422.025 177.692 c
-420.387 176.062 417.946 177.675 415.962 179.388 c
-415.673 179.638 415.375 179.878 415.061 180.097 c
-413.37 181.278 411.122 181.531 410.079 179.993 c
-408.566 177.763 406.21 177.329 406.647 178.779 c
-406.856 179.475 407.835 179.166 408.327 179.569 c
-410.344 181.219 406.429 182.255 402.711 180.251 c
-400.307 178.956 397.414 181.016 397.127 184.116 c
-396.887 186.708 399.145 188.268 400.485 187.114 c
-402.402 185.461 397.701 182.109 400.353 180.577 c
-401.155 180.114 402.165 180.609 402.502 181.536 c
-403.038 183.012 401.767 184.421 400.456 183.956 c
-399.999 183.794 399.678 183.365 399.208 183.241 c
-389.385 180.638 398.062 197.29 402.678 187.985 c
-403.673 185.98 404.491 183.22 405.617 184.788 c
-405.96 185.265 405.651 185.876 405.312 186.39 c
-404.897 187.021 404.5 187.665 404.031 188.257 c
-403.387 189.068 402.618 189.767 401.935 190.544 c
-401.706 190.803 401.483 191.093 401.499 191.437 c
-401.635 194.375 404.74 190.727 406.243 191.004 c
-407.844 191.299 407.966 193.708 406.239 195.315 c
-405.014 196.455 403.493 197.21 401.887 197.678 c
-397.644 198.917 392.345 198.852 390.773 203 c
-390.068 204.858 391.068 206.766 392.604 206.539 c
-393.979 206.337 394.209 204.376 395.511 204.02 c
-397.645 203.435 399.042 208.596 401.444 206.571 c
-403.891 204.508 399.238 199.549 395.878 204.152 c
-391.477 210.183 403.579 213.074 400.683 207.289 c
-400.199 206.323 397.579 206.866 398.027 205.26 c
-398.261 204.421 399.571 204.438 400.266 205.479 c
-403.878 210.895 394.984 212.88 395.517 208.487 c
-395.619 207.645 396.654 207.261 396.814 206.437 c
-396.826 206.376 396.832 206.313 396.822 206.251 c
-396.182 202.375 396.885 208.553 396.067 210.285 c
-395.69 211.082 392.436 210.874 393.836 212.288 c
-394.276 212.733 394.862 212.1 395.419 212.086 c
-397.522 212.032 395.597 214.552 394.818 216.65 c
-393.877 219.186 399.565 222.091 396.563 224.553 c
-394.443 226.291 390.729 220.568 388.815 223.938 c
-387.789 225.745 390.49 227.015 390.701 228.779 c
-390.99 231.18 387.96 232.501 384.958 231.624 c
-379.594 230.056 375.905 233.222 377.854 235.301 c
-379.054 236.582 383.244 236.393 381.593 238.442 c
-381.095 239.06 379.597 239.232 380.155 240.055 c
-380.52 240.593 381.311 240.004 381.776 240.334 c
-386.585 243.751 377.474 241.131 377.121 242.168 c
-376.55 243.846 380.13 244.949 380.554 241.802 c
-380.774 240.165 379.449 238.822 378.125 239.315 c
-375.814 240.177 377.972 243.836 376.057 244.947 c
-374.55 245.822 373.237 244.02 371.945 242.676 c
-370.843 241.53 369.75 240.137 370.766 239.267 c
-371.882 238.31 373.674 240.311 374.737 239.144 c
-375.619 238.175 374.258 237.058 373.819 235.885 c
-372.437 232.186 377.589 231.202 377.968 233.997 c
-378.208 235.771 370.589 236.246 374.157 239.076 c
-374.687 239.497 375.415 239.223 376.03 238.877 c
-376.724 238.488 377.402 238.066 378.133 237.752 c
-379.291 237.253 380.526 236.562 380.189 235.493 c
-378.454 229.994 375.904 239.154 373.837 239.422 c
-353.847 242.01 380.166 214.116 378.406 234.473 c
-378.197 236.88 374.933 241.241 378.041 239.858 c
-378.294 239.746 378.447 239.5 378.587 239.262 c
-379.307 238.038 379.953 236.64 379.349 235.38 c
-375.882 228.15 365.022 237.73 373.311 242.475 c
-375.916 243.966 379.932 241.372 381.897 244.085 c
-383.585 246.416 380.793 249.491 382.048 251.951 c
-384.441 256.639 392.7 253.533 390.569 246.979 c
-390.32 246.214 389.867 245.501 389.855 244.692 c
-389.817 242.191 392.964 241.556 394.477 239.758 c
-395.146 238.963 395.463 237.954 395.842 236.991 c
-396.675 234.872 397.974 232.826 400.145 232.219 c
-400.658 232.076 401.244 231.969 401.44 231.479 c
-402.163 229.67 399.322 230.153 396.702 231.633 c
-393.708 233.325 392.548 236.23 394.552 235.893 c
-395.579 235.721 395.214 233.609 396.458 233.727 c
-399.858 234.05 395.133 237.189 395.827 238.164 c
-396.272 238.79 397.156 238.463 397.911 238.493 c
-401.056 238.621 400.556 242.95 399.222 246.868 c
-398.749 248.259 398.205 249.84 396.816 249.845 c
-396.69 249.845 396.565 249.828 396.439 249.814 c
-390.896 249.183 387.001 246.033 389.571 243.942 c
-391.362 242.484 393.239 244.899 395.081 246.606 c
-397.266 248.631 395.665 250.963 394.652 250.011 c
-394.433 249.804 394.42 249.459 394.626 249.24 c
-395.911 247.872 396.575 251.365 397.696 250.702 c
-398.646 250.14 397.834 248.26 396.191 248.902 c
-393.588 249.918 395.488 253.384 398.219 256.154 c
-401.481 259.463 405.599 261.124 406.238 258.147 c
-406.561 256.641 405.074 255.357 403.518 255.812 c
-401.606 256.371 401.125 258.874 402.699 260.159 c
-407.803 264.324 407.92 254.02 411.325 250.292 c
-412.641 248.851 414.787 248.473 416.068 246.999 c
-416.881 246.063 417.21 244.834 417.712 243.705 c
-418.361 242.245 419.56 240.969 420.993 241.338 c
-423.003 241.854 422.918 244.529 422.109 246.868 c
-421.581 248.393 421.175 250.085 422.07 251.405 c
-422.553 252.116 423.396 252.621 423.499 253.489 c
-424.277 260.089 415.839 253.044 413.956 254.954 c
-413.096 255.826 413.24 257.228 414.02 258.237 c
-417.423 262.64 422.091 257.48 419.419 255.244 c
-418.022 254.074 414.763 256.908 413.985 254.374 c
-413.926 254.184 413.924 253.976 413.822 253.805 c
-412.365 251.36 412.53 255.891 411.57 257.759 c
-410.445 259.949 407.818 257.855 409.081 256.543 c
-409.54 256.067 410.271 256.405 410.882 256.787 c
-416.888 260.549 419.047 266.395 415.063 267.051 c
-412.437 267.484 411.626 263.77 409.322 263.158 c
-406.954 262.528 405.047 264.906 406.168 266.82 c
-407.841 269.677 413.825 273.345 409.414 273.107 c
-407.436 273 408.597 269.969 407.263 269.258 c
-405.47 268.302 404.81 271.215 403.313 271.907 c
-401.955 272.536 400.447 271.546 399.825 270.043 c
-399.028 268.115 398.669 265.512 396.702 265.817 c
-393.089 266.377 394.354 273.753 400.223 271.759 c
-400.907 271.527 401.68 271.23 402.131 271.754 c
-402.333 271.988 402.364 272.325 402.214 272.597 c
-399.46 277.602 401.402 268.523 400.145 265.991 c
-397.449 260.566 393.282 271.166 390.607 268.559 c
-388.461 266.468 392.275 264.519 395.785 262.876 c
-399.041 261.351 399.417 257.285 396.831 256.088 c
-395.699 255.564 394.281 256.06 393.236 255.347 c
-392.452 254.811 392.219 253.807 391.678 253.037 c
-391.089 252.201 390.105 251.525 390.193 250.49 c
-390.257 249.728 390.931 249.193 391.172 248.476 c
-392.026 245.929 388.31 244.626 388.157 242.244 c
-387.991 239.663 391.414 238.578 391.8 236.145 c
-392.02 234.757 391.14 233.453 391.166 232.057 c
-391.258 227.266 397.038 228.522 396.273 231.296 c
-396.1 231.921 395.456 232.251 394.79 232.295 c
-391.906 232.483 388.872 227.459 386.4 230.412 c
-385.45 231.548 386.14 233.364 385.181 234.494 c
-383.711 236.225 380.694 235.102 380.46 232.418 c
-380.228 229.768 381.035 226.24 378.595 226.735 c
-376.812 227.096 377.603 229.44 377.575 231.309 c
-377.562 232.172 377.354 233.175 378.099 233.572 c
-379.446 234.291 381.174 232.049 379.361 230.1 c
-378.442 229.113 377.387 227.979 378.234 227.17 c
-380.552 224.96 379.821 229.935 380.711 232.515 c
-382.213 236.865 389.676 230.36 391.094 234.906 c
-392.735 240.167 384.59 237.094 381.281 238.949 c
-379.628 239.876 378.842 242.25 376.849 242.261 c
-374.902 242.272 372.508 239.568 371.373 241.712 c
-370.425 243.504 373.157 244.224 375.061 245.307 c
-378.026 246.994 377.651 251.211 375.504 254.441 c
-372.924 258.322 369.026 254.942 370.82 253.457 c
-371.161 253.174 371.65 253.249 372.064 253.11 c
-373.883 252.501 372.696 247.395 375.709 248.368 c
-380.063 249.776 373.367 253.185 373.867 255.12 c
-374.355 257.011 381.227 257.121 378.284 260.118 c
-377.855 260.556 377.162 260.502 376.631 260.792 c
-373.631 262.428 376.475 267.338 379.773 265.038 c
-380.53 264.509 380.843 263.536 380.493 262.687 c
-378.632 258.172 370.666 262.204 374.635 267.428 c
-377.4 271.068 381.33 275.29 377.471 275.211 c
-376.435 275.189 375.541 273.801 374.551 274.436 c
-370.677 276.916 378.023 276.009 380.73 277.332 c
-382.918 278.401 382.18 282.153 378.743 283.04 c
-377.344 283.402 375.877 283.238 374.446 283.414 c
-371.05 283.832 368.158 286.023 366.619 289.086 c
-366.065 290.188 365.776 291.501 366.57 292.383 c
-369.471 295.606 372.273 289.977 369.107 289.525 c
-368.523 289.441 368.088 290.003 367.523 290.103 c
-364.51 290.631 366.856 286.667 367.79 283.459 c
-368.111 282.358 367.752 280.997 368.66 280.239 c
-371.985 277.466 376.235 284.461 370.563 286.176 c
-370.232 286.276 369.879 286.308 369.553 286.194 c
-366.713 285.202 370.217 281.047 368.132 279.732 c
-367.173 279.127 365.961 278.527 366.686 277.937 c
-367.034 277.653 367.478 277.979 367.903 278.134 c
-369.799 278.824 370.581 276.195 372.072 275.081 c
-374.624 273.174 381.54 275.077 380.06 270.746 c
-379.404 268.828 374.815 269.074 375.773 266.343 c
-376.421 264.497 379.106 265.119 378.906 266.974 c
-378.638 269.466 375.406 267.485 373.511 268.032 c
-370.669 268.852 370.819 273.493 374.778 275.442 c
-381.408 278.707 387.224 272.732 384.51 268.324 c
-381.581 263.565 381.221 257.958 384.176 260.296 c
-384.687 260.701 384.721 261.423 384.575 262.076 c
-384.173 263.875 383.683 265.94 385.237 266.244 c
-386.734 266.536 387.798 264.488 386.484 263.024 c
-386.363 262.889 386.225 262.77 386.074 262.67 c
-383.382 260.894 381.197 264.737 378.452 265.714 c
-376.829 266.291 374.996 265.797 374.089 264.361 c
-372.697 262.16 374.096 259.271 376.659 259.049 c
-379.67 258.788 380.934 262.267 382.859 264.565 c
-384.149 266.105 385.955 267.636 385.206 269.451 c
-383.832 272.783 379.806 269.719 376.17 267.722 c
-371.59 265.205 369.201 270.47 371.647 271.689 c
-372.14 271.935 372.764 271.804 373.213 272.132 c
-375.934 274.125 370.293 276.06 371.299 277.882 c
-372.772 280.547 378.391 276.774 374.31 272.275 c
-371.01 268.637 366.66 271.108 367.601 273.63 c
-368.164 275.14 370.147 274.845 371.7 275.207 c
-374.357 275.827 375.875 279.003 378.67 279.08 c
-381.106 279.146 382.839 276.945 383.43 274.453 c
-383.758 273.068 383.465 271.549 382.244 271.31 c
-379.71 270.815 380.022 275.189 377.899 275.382 c
-377 275.464 376.235 274.733 376.259 273.826 c
-376.355 270.119 384.392 270.529 383.044 277.503 c
-382.822 278.648 382.349 279.735 381.6 280.63 c
-380.029 282.505 377.588 283.239 375.21 283.801 c
-372.703 284.395 370.141 284.879 367.861 286.087 c
-365.188 287.504 362.423 286.926 362.773 285.091 c
-362.834 284.769 363.038 284.495 363.121 284.179 c
-363.741 281.802 360.162 281.913 358.679 280.48 c
-356.385 278.264 359.151 275.144 361.389 272.36 c
-364.011 269.098 366.97 265.286 369.732 267.601 c
-370.394 268.156 371.201 268.587 371.483 267.985 c
-371.809 267.289 370.752 267.051 369.752 266.938 c
-368.16 266.756 367.559 264.733 366.047 264.327 c
-364.212 263.833 362.924 265.709 361.631 267.178 c
-360.683 268.254 359.452 269.199 359.24 270.626 c
-358.857 273.204 361.658 274.655 363.198 276.679 c
-364.534 278.437 365.217 281.009 367.442 281.329 c
-374.974 282.414 375.578 266.734 363.419 269.161 c
-361.402 269.564 359.631 270.766 358.542 272.51 c
-355.111 278.001 349.612 278.276 350.19 275.065 c
-350.502 273.332 353.16 273.485 353.69 271.893 c
-354.041 270.838 353.276 269.774 352.167 269.374 c
-350.005 268.593 347.903 270.284 345.667 270.436 c
-341.359 270.73 338.246 266.369 339.197 261.824 c
-339.707 259.39 340.512 256.58 338.394 255.778 c
-336.009 254.876 331.169 263.723 329.536 257.828 c
-329.054 256.087 331.906 254.992 331.282 253.233 c
-330.626 251.385 328.187 252.465 326.065 253.559 c
-324.278 254.48 323.207 256.081 324.342 256.76 c
-324.995 257.15 325.832 256.64 325.871 255.819 c
-325.964 253.84 322.679 254.142 322.398 252.403 c
-322.235 251.391 323.33 250.575 323.16 249.563 c
-322.794 247.383 318.945 247.755 317.388 251.704 c
-314.107 260.022 322.644 263.382 323.522 259.194 c
-323.894 257.421 320.908 254.001 323.75 253.988 c
-326.952 253.974 323.373 257.721 323.839 259.452 c
-324.325 261.261 326.863 261.015 328.922 259.661 c
-331.258 258.126 333.656 256.667 336.266 255.661 c
-337.494 255.187 338.759 254.819 340.008 254.404 c
-341.467 253.92 342.944 253.37 344.482 253.485 c
-345.033 253.527 345.597 253.672 345.936 254.105 c
-346.549 254.892 346.099 256.364 347.142 256.753 c
-350.513 258.01 347.19 253.402 346.766 250.505 c
-346.634 249.605 347.105 248.497 346.311 247.975 c
-344.277 246.636 342.36 250.566 345.36 251.303 c
-346.793 251.654 349.21 249.515 349.65 251.549 c
-349.693 251.748 349.657 251.956 349.701 252.155 c
-350.096 253.935 352.309 252.41 353.962 250.107 c
-355.94 247.35 359.675 249.032 359.141 251.512 c
-358.593 254.055 355.041 252.993 352.108 250.66 c
-351.497 250.175 350.797 249.685 350.736 248.91 c
-350.606 247.241 352.815 246.436 353.856 247.871 c
-355.859 250.635 351.197 253.516 349.591 250.198 c
-348.927 248.826 350.316 246.594 348.666 245.835 c
-347.527 245.311 346.38 246.743 345.23 246.301 c
-342.084 245.089 346.392 242.592 350.279 240.517 c
-352 239.599 352.945 237.171 354.996 237.379 c
-358.354 237.72 357.349 241.939 355.108 241.382 c
-354.101 241.132 354.134 239.742 353.353 239.169 c
-352.526 238.562 351.358 239 350.841 239.973 c
-349.847 241.847 350.802 245.506 348.288 245.132 c
-346.855 244.918 346.887 243.073 346.811 241.499 c
-346.69 238.985 344.874 236.698 345.395 234.198 c
-345.654 232.955 346.458 231.691 345.804 230.58 c
-344.845 228.949 342.617 229.902 340.802 229.723 c
-336.838 229.332 335.462 224.367 338.555 222.151 c
-339.147 221.727 339.902 221.53 340.539 221.86 c
-342.478 222.864 340.73 225.475 341.44 227.181 c
-342.274 229.185 346.65 229.65 345.402 232.259 c
-344.837 233.442 343.116 233.274 342.325 234.258 c
-341.865 234.832 341.852 235.657 341.372 236.215 c
-340.22 237.554 336.826 236.344 336.711 238.676 c
-336.498 243.018 341.325 237.968 344.265 237.796 c
-346.201 237.684 347.542 239.699 347.118 241.78 c
-346.961 242.553 346.571 243.263 346.449 244.042 c
-346.12 246.146 347.662 247.917 348.487 249.854 c
-349.234 251.61 350.125 253.605 351.797 253.178 c
-354.004 252.615 352.98 248.933 355.067 248.243 c
-356.166 247.879 357.16 248.79 358.254 249.074 c
-360.228 249.588 363.07 249.043 362.988 251.108 c
-362.967 251.629 362.6 252.104 362.699 252.622 c
-362.889 253.618 364.175 253.727 365.331 253.444 c
-366.896 253.062 368.562 252.52 369.128 251.039 c
-370.293 247.994 366.537 245.252 362.146 246.025 c
-361.09 246.212 359.902 246.383 359.298 245.541 c
-356.584 241.76 364.61 238.927 364.615 244.573 c
-364.618 247.509 360.732 247.737 360.333 245.353 c
-359.836 242.382 366.48 243.498 365.571 240.234 c
-365.481 239.911 365.263 239.642 364.982 239.459 c
-361.096 236.924 360.078 245.35 356.69 244.251 c
-354.615 243.579 354.013 238.097 351.281 240.242 c
-349.815 241.394 351.081 244.148 353.954 244.091 c
-354.997 244.071 356.17 244.141 356.261 245.057 c
-356.45 246.954 353.931 245.636 351.932 245.299 c
-349.586 244.904 347.473 249.347 345.14 247.258 c
-344.771 246.928 344.592 246.44 344.602 245.943 c
-344.659 243.066 349.251 242.858 349.524 240.087 c
-349.743 237.871 347.169 236.94 345.477 235.52 c
-340.452 231.302 345.352 225.511 348.621 227.744 c
-349.341 228.237 349.644 229.143 349.42 229.99 c
-349.027 231.479 347.344 232.049 346.372 233.2 c
-345.885 233.777 345.586 234.5 345.63 235.254 c
-345.788 237.968 349.136 239.105 350.855 237.074 c
-351.114 236.768 351.311 236.381 351.691 236.244 c
-359.767 233.329 347.652 240.305 347.272 243.084 c
-347.145 244.013 347.995 244.706 348.255 245.582 c
-348.471 246.315 348.22 247.124 347.538 247.365 c
-345.68 248.022 345.587 245.188 345.968 242.468 c
-346.116 241.41 345.72 240.305 344.749 240.039 c
-342.85 239.517 342.215 242.242 340.608 242.819 c
-338.029 243.746 335.066 237.977 332.573 241.047 c
-331.197 242.741 337.163 250.455 331.397 249.071 c
-325.931 247.759 334.503 242.794 332.549 240.943 c
-331.992 240.416 331.154 240.485 330.392 240.646 c
-330.188 240.689 329.976 240.735 329.778 240.667 c
-328.417 240.201 332.967 229.437 328.987 235.673 c
-328.868 235.86 328.906 236.095 328.877 236.312 c
-328.566 238.585 325.75 236.82 323.247 235.151 c
-321.967 234.297 320.343 234.734 320.236 235.95 c
-320.054 238.023 323.95 238.825 324.716 235.425 c
-325.455 232.146 321.888 230.548 320.515 232.44 c
-320.084 233.033 319.565 233.648 319.2 233.202 c
-318.916 232.857 319.296 232.346 319.905 232.248 c
-322.689 231.802 324.825 234.808 323.669 237.661 c
-320.803 244.732 312.901 238.403 316.654 235.149 c
-318.069 233.923 321.658 236.304 322.143 233.641 c
-322.3 232.782 321.533 232.052 320.733 232.295 c
-318.789 232.884 319.921 237.026 324.16 236.127 c
-327.706 235.375 330.401 237.382 329.243 239.171 c
-328.309 240.613 325.84 239.927 325.353 237.683 c
-324.088 231.843 331.798 231.125 332.169 235.305 c
-332.268 236.411 331.35 237.257 330.951 238.273 c
-330.193 240.204 331.238 242.363 333.202 243.113 c
-348.151 248.824 341.241 219.585 333.108 233.772 c
-331.681 236.26 332.789 244.604 330.292 240.064 c
-329.815 239.197 330.9 238.46 331.107 237.573 c
-331.482 235.969 329.597 234.672 327.732 235.42 c
-326.166 236.048 324.407 237.183 323.776 235.788 c
-323.394 234.944 324.13 234.032 325.166 233.827 c
-327.564 233.352 329.173 235.929 331.417 236.581 c
-331.695 236.662 332.003 236.764 332.042 237.04 c
-332.121 237.608 331.247 237.715 330.451 237.173 c
-329.464 236.501 328.217 236.465 327.066 236.172 c
-324.801 235.596 322.959 233.795 323.421 231.685 c
-323.678 230.509 324.729 229.657 325.859 229.902 c
-327.256 230.205 327.619 231.951 328.786 232.684 c
-334.074 236.008 335.472 226.838 330.885 227.918 c
-329.414 228.264 331.179 239.979 327.268 233.802 c
-326.887 233.2 326.926 232.004 326.208 232.356 c
-325.768 232.571 326.04 233.162 326.342 233.666 c
-326.999 234.764 326.501 236.292 327.362 237.271 c
-329.808 240.054 332.736 235.872 330.319 234.626 c
-329.25 234.075 328.072 235.75 327.023 235.027 c
-325.455 233.947 327.57 230.508 330.803 232.568 c
-331.931 233.287 332.937 234.35 334.286 234.361 c
-336.631 234.379 337.89 231.766 337.747 229.116 c
-337.682 227.931 337.432 226.767 337.178 225.609 c
-336.571 222.842 335.987 219.895 337.368 217.425 c
-340.831 211.232 336.853 205.793 334.983 209.156 c
-334.361 210.276 335.711 211.57 335.157 212.704 c
-332.903 217.317 327.183 209.292 333.593 203.759 c
-334.663 202.835 335.538 201.682 335.901 200.315 c
-336.572 197.794 336.371 194.442 338.92 194.291 c
-341.024 194.167 342.763 197.972 344.869 196.244 c
-345.213 195.962 345.399 195.525 345.321 195.089 c
-345.204 194.435 344.502 193.846 344.862 193.234 c
-345.561 192.043 346.68 193.756 347.835 194.338 c
-348.799 194.825 350.401 194.265 350.721 195.445 c
-350.818 195.799 350.672 196.174 350.366 196.378 c
-349.119 197.213 348.39 195.239 347.336 194.186 c
-344.8 191.652 341.85 195.759 338.764 196.333 c
-337.846 196.504 336.912 196.339 335.988 196.216 c
-332.511 195.754 329.699 197.843 330.753 199.984 c
-332.315 203.158 335.714 199.647 333.602 198.5 c
-332.998 198.172 332.445 198.825 331.911 199.314 c
-329.939 201.12 327.311 199.397 327.977 197.56 c
-328.599 195.847 330.84 196.814 332.793 197.415 c
-334.571 197.962 336.56 197.393 338.26 198.177 c
-339.814 198.893 340.73 200.529 340.529 202.228 c
-S
-0 1 0 rg
-398.5 312 m
-398.5 312.398 398.342 312.779 398.061 313.061 c
-397.779 313.342 397.398 313.5 397 313.5 c
-396.602 313.5 396.221 313.342 395.939 313.061 c
-395.658 312.779 395.5 312.398 395.5 312 c
-395.5 311.602 395.658 311.221 395.939 310.939 c
-396.221 310.658 396.602 310.5 397 310.5 c
-397.398 310.5 397.779 310.658 398.061 310.939 c
-398.342 311.221 398.5 311.602 398.5 312 c
-f
-1 0 0 rg
-342.029 202.228 m
-342.029 202.626 341.871 203.008 341.59 203.289 c
-341.308 203.57 340.927 203.728 340.529 203.728 c
-340.131 203.728 339.75 203.57 339.468 203.289 c
-339.187 203.008 339.029 202.626 339.029 202.228 c
-339.029 201.831 339.187 201.449 339.468 201.168 c
-339.75 200.887 340.131 200.728 340.529 200.728 c
-340.927 200.728 341.308 200.887 341.59 201.168 c
-341.871 201.449 342.029 201.831 342.029 202.228 c
-f
-0.444 0.444 1 RG
-397 312 m
-396.043 311.835 395.234 312.713 395.478 313.653 c
-396.286 316.769 399.562 313.009 402.038 312.774 c
-403.048 312.678 404.221 313.209 404.922 312.426 c
-412.51 303.949 396.03 312.04 394.972 310.086 c
-393.903 308.109 396.652 305.639 399.643 307.264 c
-401.028 308.016 402.31 309.4 403.793 308.827 c
-405.719 308.082 405.321 304.666 407.541 304.338 c
-421.511 302.275 405.821 324.179 404.379 309.515 c
-404.304 308.756 404.929 308.182 405.312 307.533 c
-407.281 304.192 403.85 300.212 398.985 299.563 c
-397.641 299.383 396.185 299.443 395.301 300.446 c
-391.91 304.292 398.969 306.764 406.45 307.529 c
-408.167 307.705 409.771 308.405 411.433 308.862 c
-412.217 309.078 413.067 309.29 413.471 309.994 c
-414.797 312.303 411.09 315.344 408.041 312.414 c
-406.55 310.981 405.563 308.474 403.524 309.011 c
-401.125 309.642 401.048 313.301 403.84 314.249 c
-405.581 314.84 407.66 313.605 409.197 314.737 c
-409.878 315.239 410.245 316.149 411.074 316.382 c
-414.621 317.376 415.688 309.586 407.95 308.304 c
-406.202 308.014 404.371 307.414 403.782 305.787 c
-403.05 303.766 404.942 301.594 404.072 299.603 c
-403.871 299.142 403.513 298.748 403.023 298.656 c
-400.116 298.11 401.511 302.603 399.96 303.731 c
-398.676 304.666 397.138 303.494 395.76 302.536 c
-394.745 301.83 393.562 301.067 393.771 299.894 c
-393.878 299.297 394.363 298.854 394.954 298.696 c
-396.787 298.205 398.785 300.587 400.446 299.235 c
-405.247 295.328 388.071 292.521 394.967 288.43 c
-395.804 287.934 396.879 288.334 397.074 289.24 c
-397.468 291.064 392.668 291.793 394.393 294.016 c
-398.617 299.463 396.799 283.85 400.707 287.855 c
-401.687 288.858 400.211 290.267 400.597 291.434 c
-401.224 293.329 403.729 292.086 405.427 292.577 c
-409.19 293.665 406.892 299.475 409.832 301.278 c
-412.945 303.185 416.487 299.408 416.799 294.332 c
-416.855 293.422 416.764 292.422 415.974 292.056 c
-407.667 288.214 417.985 299.206 417.066 301.712 c
-416.422 303.468 412.321 304.506 414.257 306.4 c
-415.632 307.744 418.398 305.629 416.75 303.132 c
-415.616 301.413 412.519 300.915 412.853 298.641 c
-413.13 296.759 416.306 296.28 415.987 294.185 c
-415.763 292.712 413.462 292.234 413.616 290.638 c
-414.648 279.914 417.481 297.303 421.038 299.822 c
-427.379 304.312 428.642 291.513 422.753 294.755 c
-422.018 295.159 422.118 296.189 421.64 296.838 c
-415.44 305.245 420.838 289.146 419.05 284.136 c
-418.455 282.468 416.362 281.798 415.829 280.101 c
-415.238 278.219 416.705 276.471 418.471 275.358 c
-419.786 274.529 421.413 274.538 421.691 275.708 c
-422.273 278.152 418.761 276.72 416.268 276.772 c
-415.794 276.782 415.34 276.943 414.913 277.148 c
-407.323 280.807 413.465 288.854 417.008 285.708 c
-417.932 284.889 417.796 283.465 417.094 282.367 c
-415.875 280.46 413.575 279.757 411.559 278.755 c
-410.945 278.45 410.337 278.106 409.656 278.015 c
-406.904 277.65 405.406 280.667 404.296 283.449 c
-404.186 283.724 404.072 283.999 403.934 284.262 c
-400.912 290.022 393.786 286.721 395.115 282.488 c
-395.881 280.048 399.18 279.955 399.974 282.188 c
-400.407 283.406 399.513 284.624 399.528 285.89 c
-399.555 288.242 402.723 290.139 401.492 292.466 c
-399.518 296.197 393.589 292.104 393.757 283.681 c
-393.79 282.031 393.51 280.396 393.375 278.753 c
-393.188 276.48 392.709 273.969 390.625 273.659 c
-389.006 273.418 387.743 275.011 386.137 275.053 c
-385.626 275.067 385.119 274.915 384.743 274.57 c
-382.913 272.894 385.022 270.161 388.092 268.682 c
-391.041 267.262 392.26 264.192 390.342 262.952 c
-389.483 262.396 388.097 262.152 388.456 261.2 c
-388.862 260.122 390.151 261.121 391.309 261.631 c
-436.781 281.657 379.715 218.085 381.35 254.208 c
-381.404 255.41 382.007 256.542 381.927 257.746 c
-381.746 260.468 378.735 261.286 377.742 259.573 c
-376.805 257.957 378.941 256.692 380.891 255.67 c
-381.661 255.266 382.264 254.535 381.906 253.856 c
-379.3 248.906 379.664 258.142 378.044 259.13 c
-368.494 264.956 378.07 249.231 375.377 248.355 c
-374.49 248.067 373.628 248.629 372.754 248.934 c
-371.308 249.438 369.651 249.129 368.969 247.835 c
-368.882 247.67 368.817 247.492 368.691 247.354 c
-367.569 246.127 364.86 248.35 367.017 250.767 c
-369.015 253.004 373.064 253.165 373.859 256.236 c
-374.633 259.226 371.183 259.847 370.797 258.188 c
-370.656 257.58 371.299 256.77 370.682 256.384 c
-369.788 255.824 368.716 257.68 370.482 259.159 c
-373.113 261.363 374.341 265.093 377.553 266.438 c
-378.284 266.744 379.079 266.894 379.775 267.276 c
-380.618 267.738 381.242 268.49 381.854 269.229 c
-387.254 275.745 376.208 282.267 377.185 275.625 c
-377.224 275.36 377.367 275.123 377.428 274.863 c
-377.818 273.193 373.75 270.962 376.261 269.559 c
-379.796 267.585 378.097 274 379.709 274.882 c
-380.732 275.442 381.835 274.634 382.795 273.887 c
-383.419 273.402 384.19 273.005 384.843 273.389 c
-385.345 273.684 385.47 274.33 385.867 274.745 c
-386.457 275.362 387.439 275.317 388.115 275.823 c
-389.731 277.032 388.509 279.294 388.536 281.236 c
-388.557 282.789 389.467 284.147 390.667 285.142 c
-392.399 286.582 394.83 286.766 395.638 285.071 c
-396.29 283.703 395.21 282.159 393.747 282.346 c
-390.483 282.762 390.806 288.72 395.582 288.304 c
-398.634 288.038 402.571 284.907 403.317 288.214 c
-403.752 290.145 401.307 291.632 398.979 290.501 c
-397.441 289.754 396.383 288.135 394.68 287.823 c
-392.963 287.508 391.313 288.588 390.76 290.266 c
-390.29 291.69 390.729 293.193 391.13 294.635 c
-391.305 295.265 391.473 295.897 391.645 296.528 c
-391.984 297.765 392.346 299 392.902 300.157 c
-393.549 301.506 394.921 302.211 395.632 301.36 c
-396.617 300.18 394.601 299.277 393.983 298.065 c
-393.094 296.323 395.024 294.8 396.758 293.519 c
-397.719 292.809 398.726 291.938 399.868 292.253 c
-401.165 292.61 402.13 294.582 403.435 293.735 c
-405.777 292.214 401.794 290.168 402.11 288.455 c
-402.419 286.776 405.255 286.771 405.339 284.969 c
-405.507 281.384 397.625 281.672 399.115 288.315 c
-399.428 289.711 400.178 291.02 401.468 291.621 c
-409.704 295.452 411.933 282.08 404.277 282.438 c
-403.554 282.472 402.879 282.896 402.836 283.577 c
-402.696 285.76 406.699 284.607 406.8 286.566 c
-406.929 289.051 403.467 287.589 400.972 284.22 c
-400.414 283.467 399.576 282.741 399.911 281.876 c
-400.41 280.588 404.835 281.453 403.54 279.031 c
-403.039 278.092 401.83 278.853 400.779 279.033 c
-399.221 279.299 398.128 277.82 396.816 276.983 c
-395.465 276.122 393.588 275.702 393.32 274.102 c
-393.103 272.807 394.182 271.796 395.169 270.892 c
-398.167 268.145 400.067 264.118 397.802 261.189 c
-396.827 259.929 395.242 259.355 393.642 259.378 c
-388.193 259.455 384.566 265.734 379.056 265.317 c
-376.829 265.148 374.931 263.834 373.078 262.597 c
-369.875 260.459 368.981 256.843 371.322 255.976 c
-374.681 254.732 375.216 263.628 379.122 261.012 c
-379.821 260.544 380.028 259.619 379.669 258.846 c
-379.1 257.621 377.593 257.412 376.262 257.116 c
-373.557 256.514 373.713 253.806 375.075 253.754 c
-375.534 253.736 375.863 254.129 376.108 254.53 c
-376.349 254.924 376.561 255.363 376.456 255.811 c
-374.553 263.962 365.509 250.898 374.565 249.383 c
-376.71 249.025 379.188 250.151 380.848 248.626 c
-381.638 247.901 381.875 246.801 381.988 245.733 c
-382.313 242.666 379.371 242.002 378.956 243.413 c
-378.841 243.803 379.084 244.215 378.973 244.606 c
-378.584 245.973 376.553 245.065 375.499 242.754 c
-374.78 241.177 373.154 240.176 372.535 238.553 c
-372.064 237.317 372.254 235.882 371.557 234.748 c
-369.819 231.919 365.367 232.672 363.345 236.181 c
-362.124 238.3 361.023 241.005 358.804 240.412 c
-356.364 239.759 356.801 234.27 353.497 235.127 c
-351.055 235.761 354.337 245.575 348.91 242.654 c
-346.062 241.122 340.292 235.832 343.403 239.817 c
-343.785 240.307 344.756 240.022 344.98 240.674 c
-345.25 241.461 344.022 242.198 343.091 241.276 c
-342.193 240.387 342.392 238.894 343.496 238.374 c
-347.449 236.511 350.375 245.079 343.245 245.713 c
-341.504 245.868 339.893 244.997 338.214 244.545 c
-337.059 244.233 335.821 244.105 334.847 243.401 c
-332.464 241.681 330.342 237.942 328.56 240.295 c
-326.669 242.79 330.633 245.255 332.01 242.666 c
-332.35 242.025 332.073 241.241 332.314 240.564 c
-333.195 238.088 337.86 238.873 338.37 243.496 c
-338.907 248.36 335.888 253.135 337.156 257.908 c
-338.336 262.35 343.111 262.492 343.715 259.839 c
-343.817 259.391 343.715 258.924 343.791 258.472 c
-345.172 250.288 356.444 258.647 349.329 262.215 c
-348.142 262.81 346.867 261.943 345.862 260.97 c
-344.105 259.269 342.89 256.894 344.366 255.342 c
-345.538 254.109 348.391 253.939 347.755 252.065 c
-347.41 251.051 346.054 250.91 345.546 251.811 c
-344.781 253.17 346.602 254.691 347.971 253.513 c
-349.028 252.603 348.518 250.849 347.075 250.076 c
-344.645 248.773 341.931 250.569 339.252 250.595 c
-337.82 250.61 336.153 250.52 335.814 251.814 c
-335.117 254.481 339.884 254.109 339.966 256.307 c
-340.029 257.987 336.976 258.744 337.729 260.583 c
-338.08 261.442 339.186 261.649 340.062 261.164 c
-341.372 260.436 341.59 258.698 342.655 257.681 c
-347.774 252.795 355.066 261.538 348.697 265.865 c
-346.581 267.302 344.713 269.148 346.332 269.982 c
-347.279 270.47 348.167 269.425 348.653 268.253 c
-349.036 267.331 349.458 266.425 349.973 265.571 c
-355.11 257.045 363.706 265.083 359.379 268.175 c
-358.374 268.893 356.994 268.267 355.882 268.738 c
-352.914 269.996 355.233 274.273 353.419 276.323 c
-351.761 278.196 348.589 276.873 346.758 278.486 c
-345.713 279.407 344.947 281.097 343.654 280.53 c
-339.429 278.676 346.583 276.279 346.848 274.1 c
-346.869 273.927 346.861 273.753 346.851 273.58 c
-346.719 271.412 345.743 269.246 343.783 269.225 c
-341.703 269.202 340.984 271.587 342.357 272.423 c
-343.202 272.937 344.297 272.324 344.479 271.265 c
-344.605 270.528 344.222 269.818 344.19 269.077 c
-343.894 262.032 353.747 265.784 350.109 269.817 c
-349.512 270.479 348.458 270.381 347.807 269.708 c
-345.542 267.371 352.314 248.536 344.767 258.122 c
-344.4 258.588 344.402 259.267 343.975 259.685 c
-341.212 262.386 339.966 254.407 337.38 256.384 c
-335.756 257.625 337.709 260.702 341.619 260.126 c
-345.024 259.624 348.731 259.005 350.372 256.024 c
-350.529 255.739 350.659 255.438 350.717 255.117 c
-351.074 253.175 349.185 251.844 347.566 250.606 c
-347.032 250.198 346.511 249.691 346.548 249.03 c
-346.631 247.552 348.576 247.628 350.227 247.57 c
-353.197 247.465 356.056 244.462 358.745 246.178 c
-360.043 247.005 360.435 248.716 361.654 249.644 c
-363.329 250.919 366.407 250.727 366.605 253.019 c
-366.813 255.418 357.675 260.174 363.867 261.057 c
-364.585 261.159 365.186 260.622 365.61 260.01 c
-366.57 258.628 366.928 256.924 367.803 255.488 c
-368.862 253.749 370.56 252.551 372.314 251.524 c
-372.982 251.133 373.668 250.76 374.419 250.568 c
-376.486 250.041 377.913 251.72 377.099 252.809 c
-376.74 253.29 376.054 253.266 375.526 253.526 c
-373.795 254.379 374.504 257.609 372.409 258.035 c
-371.644 258.191 370.898 257.695 370.893 256.959 c
-370.877 254.588 374.933 256.303 375.31 254.39 c
-375.795 251.933 371.954 252.946 371.039 251.547 c
-366.716 244.932 380.671 245.448 375.765 251.244 c
-374.988 252.162 372.86 251.085 372.497 252.551 c
-372.097 254.173 374.781 254.914 375.246 252.925 c
-375.608 251.378 372.674 250.312 373.677 248.688 c
-376.94 243.406 375.593 253.495 377.447 256.031 c
-380.638 260.394 383.898 252.289 387.096 252.695 c
-389.138 252.954 389.877 255.271 391.284 256.701 c
-392.28 257.715 393.629 258.253 394.878 258.923 c
-397.419 260.286 400.228 262.021 402.467 260.367 c
-404.379 258.954 404.012 256.16 402.035 255.652 c
-399.59 255.024 397.836 260.033 395.238 258.16 c
-393.091 256.613 391.051 249.633 390.345 254.053 c
-390.267 254.541 390.655 254.97 390.661 255.459 c
-390.762 263.981 389.02 250.976 387.337 245.866 c
-384.374 236.873 371.398 248.931 381.822 253.049 c
-383.938 253.884 386.548 252.237 388.426 253.685 c
-390.258 255.098 389.615 258.727 392.133 259.307 c
-393.643 259.656 394.796 258.267 396.125 257.516 c
-398.124 256.387 400.024 257.812 399.431 259.122 c
-398.767 260.587 394.839 258.298 394.983 260.916 c
-395.025 261.677 395.916 262.064 396.743 261.788 c
-398.457 261.215 398.677 259.1 398.772 257.207 c
-398.87 255.272 399.133 253.208 397.98 251.648 c
-384.56 233.478 373.671 275.223 393.419 262.124 c
-395.508 260.737 395.39 253.723 398.602 256.65 c
-400.202 258.108 396.892 260.914 398.831 262.293 c
-399.339 262.654 400.012 262.528 400.612 262.666 c
-404.973 263.671 400.089 273.078 405.724 273.133 c
-408.318 273.158 409.827 266.97 412.849 269.521 c
-414.888 271.243 412.481 275.423 408.336 273.894 c
-405.313 272.779 403.916 269.589 402.566 266.654 c
-398.948 258.793 390.842 260.238 391.176 264.528 c
-391.329 266.498 394.198 268.19 392.803 270.051 c
-391.146 272.264 387.07 269.97 388.688 266.606 c
-389.759 264.38 392.863 264.533 394.544 262.855 c
-398.268 259.138 393.573 254.559 390.798 256.961 c
-390.334 257.362 389.983 258.026 389.368 257.928 c
-385.838 257.365 391.108 255.971 394.026 254.686 c
-395.482 254.044 397.071 252.034 397.571 253.649 c
-397.717 254.121 397.365 254.583 396.872 254.761 c
-395.308 255.325 392.941 252.798 391.893 254.785 c
-391.052 256.379 393.532 257.109 394.196 258.488 c
-395.154 260.478 392.795 261.999 391.067 263.566 c
-387.547 266.758 387.789 272.348 391.674 274.815 c
-393.571 276.019 396.059 277.111 395.266 279.03 c
-394.972 279.74 394.159 280.167 394.051 280.941 c
-393.792 282.786 396.705 283.746 398.981 281.619 c
-401.264 279.485 402.681 276.472 401.995 273.455 c
-401.764 272.438 401.289 271.5 400.891 270.538 c
-400.599 269.834 400.347 269.086 400.513 268.341 c
-400.907 266.563 403.034 265.824 404.808 266.682 c
-407.184 267.832 407.555 270.87 409.187 272.866 c
-410.635 274.636 413.089 275.595 413.756 277.825 c
-414.861 281.522 409.925 285.159 412.054 288.734 c
-412.958 290.253 414.87 290.798 416.552 290.177 c
-419.372 289.135 420.023 285.676 417.877 284.286 c
-414.852 282.327 412.44 287.107 409.414 286.964 c
-406.24 286.814 405.974 283.083 408.065 282.572 c
-410.064 282.084 410.476 285.411 412.295 285.405 c
-413.597 285.401 415.418 284.081 415.589 285.564 c
-415.626 285.893 415.414 286.181 415.164 286.403 c
-412.18 289.049 407.922 285.793 409.524 282.499 c
-410.565 280.358 414.688 280.348 414.438 277.552 c
-414.304 276.046 412.225 274.504 413.582 273.33 c
-414.2 272.796 415.173 273.156 415.839 272.704 c
-417.986 271.243 408.069 264.528 414.974 264.545 c
-415.123 264.546 415.269 264.582 415.418 264.589 c
-443.083 265.854 399.7 238.446 409.177 261.592 c
-409.962 263.51 413.886 263.111 413.683 265.647 c
-413.555 267.253 411.543 267.463 409.82 267.721 c
-402.174 268.867 411.911 283.805 411.345 273.494 c
-411.316 272.953 410.814 272.298 411.343 272.044 c
-412.302 271.586 411.902 273.1 411.362 274.437 c
-411.022 275.277 411.746 276.121 412.538 275.875 c
-413.099 275.701 413.299 275.036 413.142 274.426 c
-412.523 272.009 406.456 271.798 408.28 268.462 c
-408.67 267.747 409.546 267.073 408.992 266.469 c
-408.187 265.59 407.479 267.212 406.569 267.679 c
-403.854 269.072 404.583 264.442 403.462 262.057 c
-402.133 259.228 397.935 255.95 401.345 255.521 c
-402.889 255.327 403.038 257.469 404.084 258.378 c
-417.316 269.878 416.641 237.46 402.287 248.283 c
-401.549 248.839 401.132 249.767 401.602 250.485 c
-402.545 251.923 404.779 250.26 405.869 251.388 c
-408.338 253.942 401.858 258.293 398.437 251.98 c
-396.948 249.233 395.834 245.983 397.739 243.671 c
-399.94 240.997 404.201 241.769 405.253 245.014 c
-406.503 248.872 402.366 252.38 397.482 251.863 c
-394.263 251.521 391.381 249.733 388.176 249.295 c
-387.002 249.135 385.723 249.111 384.898 248.256 c
-384.003 247.328 384.116 245.885 383.556 244.745 c
-383.204 244.026 382.575 243.451 381.785 243.393 c
-378.286 243.137 378.591 248.901 384.009 252.892 c
-384.698 253.4 385.478 253.959 386.219 253.585 c
-387.703 252.837 385.254 248.418 388.207 248.776 c
-389.42 248.923 389.598 250.793 388.194 252.009 c
-386.958 253.079 385.895 254.482 386.904 255.323 c
-387.958 256.202 393.905 249.965 392.74 255.101 c
-392.585 255.785 391.706 255.993 391.02 255.572 c
-389.592 254.693 389.798 252.538 391.393 251.894 c
-393.461 251.06 395.399 253.392 395.357 256.242 c
-395.32 258.754 394.35 261.189 394.533 263.699 c
-394.713 266.172 395.975 268.382 396.878 270.683 c
-398.045 273.655 399.112 277.097 402.188 277.713 c
-404.827 278.241 407.2 276.13 406.669 273.686 c
-406.442 272.639 405.595 271.637 406.083 270.648 c
-407.727 267.32 410.286 272.529 412.916 273.514 c
-415.184 274.364 417.04 272.111 418.676 270.143 c
-418.971 269.788 419.421 269.642 419.582 269.943 c
-420.645 271.926 411.342 269.311 416.867 270.892 c
-416.964 270.919 417.062 270.88 417.15 270.83 c
-419.329 269.589 414.598 263.744 418.884 263.566 c
-420.477 263.499 421.228 265.77 419.81 267.507 c
-417.553 270.272 413.986 268.64 414.477 266.393 c
-415.242 262.897 425.238 254.544 418.441 258.979 c
-418.298 259.072 418.191 259.209 418.088 259.345 c
-417.111 260.635 416.144 262.053 414.588 262.507 c
-412.184 263.207 409.952 261.442 408.41 259.337 c
-407.614 258.251 406.887 257.053 405.686 256.432 c
-402.059 254.554 399.682 258.674 401.734 260.247 c
-403.488 261.593 405.167 258.724 406.992 259.001 c
-409.454 259.376 413.188 267.545 414.059 262.163 c
-414.123 261.767 413.942 261.364 413.574 261.235 c
-412.949 261.017 412.499 261.694 411.977 262.099 c
-410.14 263.526 407.236 261.032 405.524 262.793 c
-404.579 263.765 405.231 265.149 406.19 264.98 c
-407.15 264.81 406.817 263.504 407.245 262.748 c
-411.591 255.074 409.069 269.337 411.327 272.432 c
-412.131 273.535 413.66 273.532 414.935 273.966 c
-416.976 274.662 418.394 276.523 418.534 278.676 c
-419.546 294.285 397.202 285.153 406.596 277.243 c
-407.442 276.531 408.649 276.587 409.655 276.156 c
-410.388 275.842 410.979 275.198 410.805 274.467 c
-410.28 272.263 406.668 273.241 407.569 275.714 c
-408.329 277.798 411.064 276.175 412.845 276.772 c
-415.102 277.528 415.427 280.675 413.296 282.146 c
-411.82 283.166 409.343 283.489 409.741 285.292 c
-410.419 288.368 414.395 285.314 416.11 286.559 c
-417.949 287.894 416.198 290.638 417.257 292.386 c
-417.81 293.299 419.055 293.814 419.061 294.922 c
-419.073 297.362 414.326 297.971 413.02 293.397 c
-411.895 289.457 409.341 286.304 407.217 288.207 c
-405.818 289.46 405.844 293.395 403.688 292.055 c
-402.122 291.081 404.154 289.42 405.402 287.794 c
-406.18 286.78 406.176 285.427 405.966 284.16 c
-405.458 281.096 403.311 278.487 400.733 279.24 c
-398.311 279.948 398.134 282.979 400.049 283.673 c
-402.738 284.646 402.713 280.529 403.872 277.918 c
-406.731 271.478 414.452 276.848 411.293 280.739 c
-410.846 281.289 410.145 281.515 409.476 281.744 c
-400.783 284.718 405.125 293.775 408.905 291.289 c
-409.739 290.741 409.847 289.643 409.847 288.627 c
-409.847 287.5 409.822 286.323 410.428 285.369 c
-413.113 281.142 420.329 284.299 418.584 290.074 c
-417.952 292.163 415.826 293.433 415.112 295.491 c
-414.608 296.944 414.837 298.702 413.707 299.786 c
-413.521 299.965 413.305 300.111 413.126 300.298 c
-411.638 301.855 412.907 306.693 409.845 305.789 c
-406.616 304.835 409.165 299.952 411.875 302.195 c
-414.132 304.062 406.965 308.431 411.176 310.028 c
-413.487 310.904 413.245 307.313 413.931 304.798 c
-414.834 301.485 419.628 301.665 421.162 298.784 c
-422.278 296.686 421.276 294.131 419.193 292.821 c
-416.777 291.301 414.362 293.03 415.062 294.672 c
-415.819 296.449 418.15 295.039 420.028 293.177 c
-420.497 292.712 421.066 292.305 421.258 291.67 c
-421.896 289.554 407.011 282.84 417.048 282.688 c
-418.094 282.673 418.751 283.831 418.365 284.92 c
-417.711 286.769 415.248 286.927 414.497 285.283 c
-413.372 282.82 417.443 280.343 421.615 283.211 c
-423.328 284.389 425.012 283.467 424.574 282.454 c
-424.165 281.507 422.932 282.313 422.084 282.08 c
-420.364 281.607 421.494 279.354 421.132 277.808 c
-420.518 275.188 416.644 274.789 414.812 277.618 c
-413.886 279.047 413.452 281.129 411.731 281.177 c
-407.639 281.29 410.859 276.079 411.635 271.951 c
-412.034 269.824 410.672 267.53 411.759 265.592 c
-412.789 263.756 415.221 263.638 416.955 262.531 c
-421.264 259.782 420.564 253.324 415.82 251.653 c
-412.457 250.469 409.603 253.315 410.851 255.697 c
-412.081 258.043 415.447 256.824 417.954 254.477 c
-418.711 253.768 419.587 253.078 420.605 253.221 c
-426.89 254.103 421.751 267.089 412.108 260.572 c
-409.951 259.114 407.806 257.154 405.266 257.716 c
-403.651 258.072 402.44 259.428 402.343 261.073 c
-402.258 262.506 402.954 264.18 401.793 265.087 c
-400.252 266.291 394.087 263.014 395.574 267.01 c
-396.565 269.676 399.069 265.931 400.915 265.943 c
-403.102 265.957 403.014 268.875 404.014 270.708 c
-404.653 271.877 405.867 272.551 406.883 273.404 c
-414.22 279.557 406.2 286.961 402.732 283.198 c
-401.708 282.088 402.141 280.439 402.474 278.943 c
-402.801 277.471 402.932 275.958 403.363 274.513 c
-405.202 268.344 411.989 267.522 413.479 271.477 c
-414.48 274.134 410.912 278.505 414.406 279.814 c
-416.991 280.783 418.056 277.016 420.279 276.177 c
-426.289 273.91 427.076 282.847 422.361 282.434 c
-421.74 282.379 421.071 281.963 420.596 282.394 c
-419.121 283.732 422.316 285.371 425.2 282.824 c
-431.744 277.044 437.753 288.178 431.021 290.548 c
-429.644 291.033 428.221 290.274 427.168 289.213 c
-426.494 288.534 425.899 287.723 424.988 287.416 c
-423.275 286.837 421.729 288.208 420.141 289.059 c
-419.544 289.379 418.874 289.665 418.612 290.29 c
-417.076 293.958 424.733 295.963 424.711 289.992 c
-424.701 287.437 421.904 286.062 421.003 283.761 c
-419.775 280.626 422.113 277.598 424.021 274.766 c
-425.218 272.99 426.22 271.092 427.061 269.123 c
-428.105 266.683 428.993 264.034 431.169 262.497 c
-432.453 261.591 434.012 261.226 435.557 260.949 c
-439.045 260.325 442.851 259.201 443.039 255.929 c
-443.11 254.688 442.509 253.316 443.33 252.341 c
-444.774 250.623 447.09 252.54 448.967 254.519 c
-450.096 255.709 451.79 256.248 452.673 255.159 c
-453.763 253.814 451.081 249.247 454.305 249.78 c
-455.187 249.926 455.774 251.481 456.704 250.861 c
-457.882 250.075 456.446 247.774 454.703 249.118 c
-452.929 250.486 454.948 252.806 454.902 254.819 c
-454.802 259.143 448.254 260.587 445.776 255.68 c
-445.029 254.202 444.993 252.321 443.675 251.276 c
-437.41 246.308 432.859 257.664 439.793 258.616 c
-441.283 258.82 442.397 257.548 443.466 256.467 c
-447.724 252.158 451.989 256.905 449.793 258.818 c
-448.804 259.68 447.325 258.626 446.216 259.191 c
-444.1 260.271 441.882 268.235 441.051 263.281 c
-441.01 263.032 441.09 262.785 441.171 262.547 c
-441.547 261.436 441.933 260.276 441.641 259.137 c
-441.03 256.75 438.188 256.006 436.896 257.716 c
-435.964 258.95 434.88 260.247 434.345 259.207 c
-433.625 257.807 436.093 258.092 436.729 257.284 c
-439.28 254.043 432.908 256.129 430.602 255.071 c
-428.72 254.208 429.573 251.307 428.008 250.144 c
-425.449 248.242 420.696 255.472 418.523 250.928 c
-418.376 250.621 418.336 250.278 418.313 249.939 c
-418.208 248.418 417.917 246.73 416.546 246.625 c
-415.379 246.535 414.783 247.87 413.763 248.322 c
-412.319 248.963 410.84 247.876 409.741 246.62 c
-407.115 243.62 405.225 240.075 403.727 236.383 c
-402.74 233.952 401.915 231.428 401.853 228.801 c
-401.822 227.448 402.015 226.054 402.873 225.008 c
-403.839 223.83 405.325 222.666 404.456 221.514 c
-403.344 220.041 400.552 221.594 400.792 224.931 c
-400.995 227.746 400.332 230.692 398.05 230.514 c
-395.516 230.315 392.045 229.119 393.195 231.241 c
-393.92 232.577 395.531 230.865 396.58 231.285 c
-398.026 231.865 397.016 234.073 398.117 234.919 c
-398.553 235.254 399.174 235.225 399.483 234.796 c
-406.62 224.886 391.864 238.421 391.146 235.216 c
-391.021 234.657 391.449 234.167 391.58 233.619 c
-392.014 231.808 389.936 230.489 388.526 231.631 c
-387.122 232.769 388.374 234.708 388.819 236.474 c
-391.109 245.558 378.355 244.744 380.096 238.609 c
-380.308 237.862 380.971 237.129 380.526 236.467 c
-380.297 236.126 379.847 236.036 379.559 235.749 c
-378.221 234.414 380.465 232.429 383.841 232.65 c
-384.335 232.682 384.862 232.646 385.192 232.285 c
-389.262 227.83 377.936 225.877 380.299 232.459 c
-381.251 235.112 387.971 238.608 383.336 239.03 c
-382.613 239.096 381.848 238.332 381.233 238.842 c
-380.867 239.146 380.915 239.796 380.457 239.99 c
-378.444 240.842 379.214 237.129 382.599 236.539 c
-385.803 235.981 385.369 231.807 385.661 228.38 c
-385.722 227.67 385.867 226.972 385.965 226.266 c
-386.187 224.664 385.373 223.223 384.25 223.585 c
-379.389 225.148 387.642 228.419 386.298 230.091 c
-385.816 230.691 384.944 230.557 384.197 230.693 c
-382.74 230.958 381.396 232.391 380.033 231.63 c
-377.231 230.065 379.838 226.012 382.357 227.815 c
-384.769 229.54 380.897 232.649 382.286 234.595 c
-385.644 239.298 390.247 231.389 385.306 230.758 c
-384.592 230.667 384.011 231.274 383.31 231.363 c
-381.179 231.636 379.729 225.148 377.099 228.178 c
-375.724 229.762 378.385 232.584 382.149 230.874 c
-384.542 229.786 386.94 228.165 386.784 225.658 c
-386.763 225.33 386.684 224.997 386.453 224.763 c
-383.3 221.554 380.589 230.329 387.411 231.079 c
-387.961 231.139 388.551 231.166 388.966 230.804 c
-390.461 229.499 388.55 226.609 386.088 228.038 c
-384.685 228.852 384.603 230.711 383.818 232.091 c
-383.109 233.34 381.861 234.131 380.642 234.885 c
-377.328 236.937 377.913 240.505 379.915 240.367 c
-381.289 240.272 381.601 238.442 380.935 236.798 c
-380.626 236.034 380.241 235.267 379.534 234.84 c
-369.227 228.607 369.16 249.72 379.445 243.577 c
-381.285 242.478 380.676 239.641 382.241 238.281 c
-385.157 235.749 388.222 240.043 390.762 244.018 c
-392.111 246.128 394.089 248.294 392.953 250.475 c
-391.842 252.606 392.429 254.573 393.513 253.872 c
-393.851 253.654 393.841 253.172 394.099 252.876 c
-395.133 251.687 396.944 254.409 397.962 253.087 c
-398.789 252.013 397.003 250.854 394.637 251.285 c
-390.623 252.015 387.383 248.374 388.853 245.028 c
-390.141 242.093 393.51 243.382 393.067 245.229 c
-392.82 246.262 391.487 246.2 390.536 246.609 c
-389.566 247.026 389.016 248.079 389.467 248.968 c
-391.14 252.271 393.468 247.329 395.368 242.852 c
-395.98 241.409 397.53 240.598 398.704 241.372 c
-401.232 243.04 397.717 245.606 396.043 248.232 c
-395.535 249.029 395.23 250.063 394.315 250.33 c
-392.674 250.808 389.476 249.662 390.397 251.611 c
-390.94 252.759 392.268 251.461 393.353 251.412 c
-395.892 251.297 396.674 256.061 392.53 256.835 c
-391.531 257.022 390.382 257.237 390.435 258.148 c
-390.507 259.405 392.639 259.716 393.278 257.929 c
-393.797 256.479 392.691 254.479 394.099 253.534 c
-396.694 251.792 400.017 256.512 396.079 258.759 c
-394.438 259.695 392.485 258.909 390.857 257.856 c
-389.51 256.985 388.216 255.888 387.928 254.318 c
-387.513 252.051 389.23 250.058 391.444 249.119 c
-393.338 248.316 395.691 247.96 396.374 246.01 c
-397.551 242.648 393.424 240.31 391.357 242.732 c
-390.15 244.147 391.265 246.391 390.179 247.871 c
-388.64 249.968 382.102 249.954 384.74 253.086 c
-385.826 254.374 387.675 253.103 389.031 251.499 c
-391.722 248.313 396.13 248.152 397.127 251.095 c
-397.724 252.858 396.158 255.047 397.529 256.508 c
-400.35 259.513 408.568 263.916 402.736 262.643 c
-402.579 262.609 402.435 262.53 402.329 262.409 c
-401.588 261.568 402.8 260.598 404.16 259.993 c
-406.658 258.881 407.696 255.623 410.405 254.973 c
-411.926 254.608 413.439 255.24 414.895 255.8 c
-418.109 257.037 421.328 255.841 420.888 253.519 c
-420.712 252.596 419.811 251.647 420.505 250.935 c
-420.964 250.463 421.705 250.741 422.325 250.602 c
-441.748 246.257 410.099 245.673 410.143 242.067 c
-410.169 239.942 412.815 239.261 415.334 239.557 c
-421.453 240.277 423.566 234.962 420.885 233.712 c
-420.387 233.48 419.818 233.553 419.276 233.483 c
-418.606 233.396 417.991 233.091 417.352 232.878 c
-415.921 232.4 414.959 231.286 415.713 230.593 c
-416.12 230.22 416.774 230.398 417.085 230.907 c
-421.255 237.712 409.913 230.98 407.503 232.431 c
-407.157 232.639 406.895 232.955 406.589 233.218 c
-405.483 234.169 403.917 234.359 402.766 235.25 c
-401.653 236.111 401.087 237.465 400.908 238.864 c
-400.504 242.038 402.313 245.104 405.189 245.034 c
-407.686 244.973 409.032 242.342 407.625 240.753 c
-405.79 238.68 401.979 240.717 402.862 244.148 c
-403.196 245.449 404.256 246.778 403.406 247.854 c
-402.776 248.652 401.566 248.57 400.732 247.873 c
-398.519 246.026 399.641 240.362 395.866 240.849 c
-393.563 241.146 393.757 244.197 392.573 246.011 c
-391.685 247.373 389.935 247.992 389.231 249.471 c
-388.343 251.337 389.433 254.06 387.541 255.241 c
-386.977 255.594 386.288 255.627 385.626 255.555 c
-382.561 255.224 379.467 252.924 376.779 254.637 c
-374.835 255.875 373.264 258.805 371.361 257.334 c
-370.085 256.348 370.731 254.402 372.053 253.041 c
-374.462 250.563 377.156 247.672 375.221 245.25 c
-374.475 244.316 373.164 244.025 372.224 244.709 c
-370.269 246.131 371.409 249.455 374.251 249.477 c
-374.693 249.481 375.162 249.385 375.535 249.626 c
-378.338 251.434 372.181 253.482 373.767 255.202 c
-375.495 257.076 377.019 252.962 378.637 253.646 c
-379.148 253.861 379.384 254.423 379.802 254.778 c
-380.227 255.138 380.79 255.253 381.34 255.34 c
-384.708 255.874 388.134 255.691 391.518 255.288 c
-395.872 254.771 400.108 256.334 399.419 259.563 c
-399.084 261.131 397.477 261.958 395.826 262.154 c
-395.297 262.217 394.728 262.248 394.361 262.635 c
-393.72 263.309 394.205 264.384 393.832 265.196 c
-390.299 272.883 387.54 259.592 394.231 252.958 c
-396.286 250.92 398.8 250.974 398.586 252.53 c
-398.462 253.425 397.328 253.513 396.314 253.479 c
-393.56 253.387 391.051 254.855 389.268 256.97 c
-386.529 260.219 385.568 264.797 382.175 267.41 c
-381.731 267.753 381.241 268.067 380.989 268.57 c
-379.96 270.619 382.621 272.818 385.935 272.094 c
-387.933 271.656 389.786 270.724 391.369 269.429 c
-393.488 267.696 395.037 265.385 397.004 263.485 c
-398.713 261.834 400.89 260.51 403.161 261.072 c
-404.461 261.393 405.528 262.347 406.845 262.6 c
-408.238 262.867 409.686 262.297 410.273 261.035 c
-410.86 259.775 410.293 258.28 409.018 257.993 c
-406.884 257.513 405.453 260.371 406.611 263.25 c
-407.294 264.945 408.625 266.439 410.312 266.138 c
-412.006 265.837 412.658 263.967 413.115 262.242 c
-414.647 256.467 409.478 254.206 408.349 256.723 c
-408.075 257.334 408.319 258.121 407.859 258.631 c
-406.677 259.94 404.183 258.19 405.498 256.116 c
-407.281 253.302 410.625 256.606 413.349 260.058 c
-414.087 260.993 415.021 261.982 414.582 263.059 c
-413.704 265.217 399.066 256.486 404.927 265.175 c
-405.586 266.152 406.942 265.609 408.139 265.32 c
-411.338 264.548 414.047 267.263 412.964 269.826 c
-412.374 271.223 410.674 271.695 409.736 270.698 c
-408.275 269.145 410.203 266.409 413.545 266.499 c
-417.869 266.616 422.89 266.94 423.256 263.124 c
-423.469 260.898 420.944 258.643 422.424 256.661 c
-423.849 254.752 430.131 255.964 428.427 252.346 c
-427.936 251.302 426.531 251.253 425.376 251.811 c
-424.33 252.317 423.272 253.134 422.215 252.655 c
-419.911 251.613 429.576 231.586 419.965 241.624 c
-419.278 242.342 419.71 243.431 420.176 244.37 c
-420.652 245.331 421.052 246.346 421.078 247.419 c
-421.142 250.037 419.297 253.125 421.557 254.706 c
-422.089 255.078 422.752 255.181 423.351 255.427 c
-428.257 257.44 424.181 262.685 422.174 260.366 c
-421.605 259.707 422.16 258.799 422.192 257.958 c
-422.263 256.066 420.148 254.977 417.991 255.227 c
-416.585 255.389 415.194 255.963 413.81 255.625 c
-413.603 255.575 413.401 255.504 413.197 255.442 c
-410.598 254.648 408.17 256.165 408.716 258.083 c
-409.397 260.475 413.27 259.092 414.219 261.192 c
-415.827 264.752 409.871 264.417 407.807 266.562 c
-406.291 268.138 406.853 270.573 407.809 272.645 c
-408.7 274.576 410.474 275.965 411.828 274.921 c
-413.601 273.554 411.372 271.332 411.385 269.375 c
-411.41 265.581 412.266 260.507 409.606 262.645 c
-408.677 263.391 409.407 266.384 407.587 265.727 c
-403.291 264.176 410.616 262.354 410.172 261.085 c
-409.175 258.234 406.579 262.433 405.122 261.933 c
-401.674 260.748 406.453 257.323 405.853 255.336 c
-405.157 253.032 401.41 253.286 399.669 256.524 c
-397.812 259.98 398.347 264.303 401.623 265.774 c
-405.105 267.337 407.722 263.847 406.019 261.883 c
-404.96 260.661 403.125 261.423 401.624 262.403 c
-397.268 265.247 398.289 269.877 400.822 269.466 c
-402.143 269.253 402.669 267.59 401.772 266.416 c
-399.899 263.966 396.022 266.837 393.895 264.929 c
-391.566 262.84 393.48 258.769 397.007 259.208 c
-400.83 259.684 402.073 264.857 399.152 268.691 c
-397.565 270.775 395.062 272.109 392.617 271.357 c
-390.707 270.769 389.433 268.941 387.522 268.355 c
-386.594 268.07 385.606 268.11 384.666 268.353 c
-382.527 268.907 381.07 270.818 382.011 272.403 c
-383.821 275.451 389.183 272.707 387.033 268.657 c
-386.577 267.798 385.676 267.203 385.44 266.25 c
-385.179 265.196 385.854 264.149 386.85 264.187 c
-389.301 264.283 389.29 269.447 384.091 269.766 c
-382.947 269.836 381.762 269.849 380.764 270.419 c
-379.432 271.18 378.772 272.754 377.437 273.511 c
-368.218 278.737 366.463 262.768 374.601 264.929 c
-376.228 265.361 376.468 267.371 377.427 268.691 c
-379.046 270.917 382.165 270.929 384.924 270.165 c
-387.24 269.523 389.104 267.758 388.214 266.001 c
-386.204 262.032 378.927 266.186 382.983 271.109 c
-385.183 273.779 387.063 276.849 384.606 277.03 c
-383.719 277.095 383.087 276.213 383.13 275.244 c
-383.242 272.729 385.426 269.215 382.705 269.349 c
-381.853 269.391 381.945 270.328 382.398 270.311 c
-382.567 270.305 382.646 270.121 382.78 270.027 c
-385.545 268.082 381.731 271.921 381.366 273.58 c
-381.178 274.437 382.237 275.102 383.129 274.54 c
-384.713 273.543 383.184 271.495 383.172 269.769 c
-383.121 262.516 395.441 264.166 392.703 272.16 c
-392.196 273.64 390.814 274.568 389.321 275.068 c
-386.898 275.879 384.679 277.382 385.761 279.017 c
-386.076 279.494 386.715 279.791 386.714 280.381 c
-386.691 287.351 383.696 276.325 381.75 275.761 c
-378.245 274.745 378.487 280.597 381.715 279.433 c
-383.201 278.897 385.328 275.644 385.214 278.046 c
-385.156 279.255 383.347 278.411 382.903 279.153 c
-382.209 280.314 384.626 281.732 386.423 279.399 c
-386.774 278.943 387.147 278.486 387.293 277.927 c
-390.772 264.548 365.94 272.895 377.807 283.333 c
-379.231 284.585 381.339 284.675 382.825 283.509 c
-385.275 281.586 388.081 279.949 388.383 282.169 c
-388.523 283.194 387.382 283.713 386.534 284.338 c
-383.764 286.379 384.149 290.645 387.092 292.918 c
-390.337 295.426 394.405 293.461 393.917 290.541 c
-393.614 288.73 392.388 286.495 394.129 286.409 c
-394.804 286.376 395.23 287.052 395.377 287.767 c
-395.886 290.257 394.301 292.841 395.209 295.248 c
-395.856 296.964 397.679 297.936 399.121 297.077 c
-401.156 295.865 400.455 292.731 398.054 292.486 c
-396.837 292.362 395.627 293.366 394.483 292.82 c
-374.379 283.225 419.75 281.377 399.881 291.451 c
-399.813 291.485 399.741 291.51 399.669 291.532 c
-398.51 291.879 397.234 291.478 396.701 290.424 c
-396.132 289.298 397.018 288.249 397.799 288.62 c
-398.893 289.141 397.589 290.303 396.579 291.38 c
-395.51 292.519 396.227 294.234 396.049 295.74 c
-395.743 298.31 392.879 299.898 392.733 302.501 c
-392.493 306.819 398.002 307.591 401.758 309.704 c
-403.698 310.796 405.779 312.378 407.514 311.104 c
-409.444 309.686 409.118 304.155 412.226 305.842 c
-413.547 306.56 414.517 309.582 415.628 307.894 c
-416.193 307.036 414.854 306.207 415.112 305.329 c
-415.896 302.663 418.004 306.576 419.821 307.113 c
-422.624 307.942 424.023 303.669 421.074 302.676 c
-418.5 301.809 409.928 307.251 413.147 302.006 c
-413.382 301.624 413.83 301.464 414.262 301.341 c
-416.728 300.637 419.563 300.257 420.746 297.985 c
-421.475 296.586 422.038 294.733 423.437 295.177 c
-425.127 295.713 424.826 298.721 422.165 299.029 c
-420.726 299.195 419.399 298.326 417.962 298.258 c
-416.1 298.17 413.827 299.054 412.989 297.355 c
-412.571 296.508 412.948 295.496 413.766 294.981 c
-415.053 294.169 417.343 294.526 417.484 292.845 c
-417.847 288.554 412.651 293.167 410.023 292.764 c
-406.621 292.243 407.088 286.812 411.867 283.372 c
-412.68 282.787 413.473 282.175 414.271 281.568 c
-415.056 280.971 415.861 280.358 416.312 279.478 c
-419.059 274.118 410.858 273.113 411.694 276.974 c
-411.892 277.889 413.367 278.135 413.277 279.155 c
-412.896 283.442 406.41 279.013 410.609 276.899 c
-410.979 276.713 411.435 276.767 411.785 276.541 c
-412.85 275.855 412.108 274.226 410.584 273.305 c
-408.489 272.039 405.976 271.004 404.319 272.58 c
-398.493 278.123 410.301 286.315 413.524 277.125 c
-414.656 273.895 411.252 272.001 409.81 273.72 c
-408.738 274.997 410.587 277.094 409.315 278.298 c
-407.926 279.612 405.434 277.789 405.707 274.666 c
-405.906 272.385 405.809 269.832 403.827 269.567 c
-403.017 269.458 402.256 269.968 401.443 269.922 c
-396.048 269.619 401.476 263.078 400.8 259.363 c
-400.745 259.059 400.646 258.751 400.734 258.454 c
-401.174 256.958 402.982 258.259 404.596 259.349 c
-406.516 260.644 408.982 259.381 410.558 257.404 c
-411.408 256.336 412.491 255.255 413.567 255.863 c
-415.16 256.764 414.297 259.437 412.124 259.164 c
-411.156 259.043 410.526 258.161 409.668 257.724 c
-408.299 257.028 406.725 257.522 405.248 257.952 c
-403.048 258.592 400.8 259.761 401.203 261.754 c
-401.502 263.236 403.168 263.847 404.788 263.783 c
-410.044 263.576 410.667 269.071 407.987 268.498 c
-407.35 268.361 407.147 267.596 406.62 267.249 c
-404.918 266.129 402.662 268.579 404.391 270.595 c
-405.631 272.04 409.118 271.96 408.451 274.224 c
-407.904 276.08 403.571 274.738 403.857 277.375 c
-403.991 278.617 405.584 278.711 407.006 278.645 c
-407.993 278.599 409.068 278.7 409.794 278.025 c
-410.985 276.918 410.189 274.519 411.787 273.769 c
-413.217 273.098 414.533 274.837 416.001 274.624 c
-417.666 274.383 418.261 271.94 420.018 271.986 c
-421.331 272.021 422.003 273.412 422.337 274.773 c
-423.749 280.529 428.155 284.052 430.651 281.186 c
-433.379 278.054 428.849 275.018 427.225 277.521 c
-426.439 278.733 427.678 281.996 425.573 281.355 c
-424.45 281.013 424.644 279.181 426.092 279.092 c
-429.142 278.905 426.743 282.732 424.965 286.08 c
-422.011 291.641 430.059 293.887 430.824 289.611 c
-431.413 286.32 424.177 287.062 425.231 283.477 c
-425.79 281.578 428.693 281.508 429.668 283.741 c
-430.894 286.551 427.973 289.222 425.508 287.815 c
-423.69 286.777 424.004 284.235 425.768 283.857 c
-427.499 283.486 428.434 285.962 430.126 285.832 c
-431.823 285.702 432.563 283.537 431.273 282.19 c
-429.757 280.608 427.36 281.804 425.323 283.031 c
-424.428 283.57 423.42 284.038 422.431 283.724 c
-421.67 283.482 420.897 282.836 420.259 283.334 c
-418.091 285.025 421.948 287.27 422.364 284.746 c
-422.624 283.164 421.216 278.728 422.549 281.346 c
-422.596 281.438 422.596 281.545 422.599 281.649 c
-422.647 283.452 422.863 285.567 421.282 285.624 c
-420.072 285.667 419.123 283.384 417.885 284.397 c
-415.366 286.457 422.568 287.643 420.448 289.637 c
-418.263 291.691 418.34 286.834 416.929 285.978 c
-407.857 280.473 410.538 300.217 419.275 292.793 c
-421.314 291.059 420.051 286.553 423.166 285.989 c
-434.982 283.849 424.797 303.432 420.991 292.041 c
-420.757 291.34 421.2 290.651 421.384 289.944 c
-422.267 286.541 418.165 284.805 415.797 282.289 c
-413.992 280.37 413.339 277.73 412.429 275.269 c
-411.969 274.026 411.433 272.813 410.951 271.579 c
-409.178 267.042 412.488 263.833 414.512 265.46 c
-415.203 266.016 415.447 267.226 416.396 267.174 c
-420.729 266.937 416.666 260.05 414.073 264.202 c
-413.225 265.561 415.353 267.294 414.279 268.608 c
-413.041 270.122 411.107 267.923 409.579 268.392 c
-404.37 269.992 411.95 273.236 416.874 276.511 c
-419.062 277.966 419.344 280.974 418.19 283.465 c
-418.138 283.577 418.084 283.687 418.03 283.798 c
-416.033 287.847 412.084 290.255 409.862 287.753 c
-408.411 286.117 409.164 282.41 406.546 282.349 c
-403.934 282.289 402.948 286.602 406.456 288.149 c
-407.955 288.811 409.741 288.419 410.388 287.005 c
-414.676 277.621 396.691 278.475 401.953 287.567 c
-402.587 288.663 403.969 289.059 405.124 288.518 c
-405.78 288.212 406.25 287.638 406.666 287.047 c
-407.618 285.696 408.95 284.463 410.113 285.282 c
-412.045 286.643 409.69 290.452 404.98 289.25 c
-404.556 289.142 404.127 289.038 403.689 289.05 c
-403.033 289.068 402.401 289.347 401.745 289.287 c
-401.141 289.232 400.614 288.901 400.073 288.631 c
-397.226 287.209 393.698 287.37 391.227 285.319 c
-390.186 284.454 389.47 283.284 388.626 282.229 c
-387.9 281.322 386.909 280.521 385.865 280.889 c
-384.083 281.517 383.709 288.062 381.113 285.004 c
-380.558 284.349 380.984 283.375 381.772 283.388 c
-385.476 283.449 380.258 286.6 380.037 288.406 c
-379.642 291.632 384.982 289.89 385.595 292.144 c
-386.404 295.118 380.625 297.132 379.156 292.046 c
-378.657 290.317 379.155 288.336 378.139 286.822 c
-378.041 286.676 377.929 286.537 377.871 286.371 c
-376.13 281.386 384.713 287.545 384.528 284.329 c
-384.471 283.327 382.832 283.004 383.009 281.929 c
-383.244 280.499 385.758 280.57 385.83 282.628 c
-385.888 284.316 383.746 285.019 383.326 286.567 c
-382.756 288.669 385.154 289.937 386.379 291.662 c
-387.684 293.498 387.112 295.915 385.305 296.168 c
-383.231 296.459 379.451 294.367 380.29 296.961 c
-380.506 297.627 381.339 297.758 382.089 297.582 c
-382.846 297.405 383.273 296.744 382.887 296.363 c
-382.657 296.136 382.29 296.236 382.012 296.445 c
-368.728 306.424 399.08 314.072 393.521 296.868 c
-393.318 296.237 392.97 295.668 392.608 295.113 c
-390.438 291.789 386.582 290.591 385.214 293.083 c
-384.288 294.771 384.56 297.949 382.576 297.146 c
-381.279 296.62 381.909 294.786 383.185 293.376 c
-392.753 282.793 366.336 274.02 374.605 286.972 c
-375.664 288.632 382.79 287.809 379.755 290.954 c
-378.221 292.544 376.475 288.97 374.948 289.972 c
-372.621 291.498 376.518 295.459 381.351 292.142 c
-383.099 290.943 385.256 290.388 387.272 291.018 c
-388.422 291.377 389.439 292.121 390.636 292.288 c
-390.907 292.325 391.184 292.332 391.445 292.251 c
-392.52 291.92 393.167 290.154 394.343 290.751 c
-395.875 291.529 394.251 293.696 391.182 294.28 c
-387.692 294.944 383.534 297.873 382.505 294.466 c
-381.426 290.898 386.523 289.931 386.991 292.939 c
-387.159 294.02 386.049 294.738 385.669 295.722 c
-385.196 296.945 385.837 298.315 387.078 298.74 c
-389.857 299.693 391.378 296.138 392.319 292.769 c
-393.025 290.242 395.31 288.822 396.643 290.159 c
-396.713 290.229 396.775 290.307 396.83 290.388 c
-399.157 293.843 393.508 297.992 390.554 293.688 c
-389.014 291.443 389.165 286.883 386.306 288.039 c
-381.006 290.184 389.591 294.961 387.825 297.44 c
-387.562 297.81 387.166 298.052 386.753 298.239 c
-384.5 299.26 381.799 298.706 380.697 296.603 c
-380.005 295.283 380.27 293.725 380.107 292.253 c
-380.068 291.9 380.002 291.548 379.855 291.225 c
-379.196 289.771 377.434 289.463 375.917 288.961 c
-373.926 288.303 371.683 287.374 370.406 288.916 c
-368.854 290.79 371.252 293.595 369.866 295.528 c
-368.363 297.622 365.403 296.096 362.969 294.325 c
-362.657 294.098 362.333 293.879 361.961 293.772 c
-360.161 293.25 358.762 295.039 357.892 296.904 c
-356.928 298.97 355.106 300.531 353.694 299.412 c
-352.993 298.857 352.934 297.85 353.31 297.007 c
-353.92 295.638 355.52 294.507 354.913 293.069 c
-352.38 287.067 349.104 297.217 346.043 297.737 c
-342.346 298.364 341.183 293.358 344.305 292.313 c
-347.603 291.208 348.675 299.23 352.398 296.863 c
-353.553 296.129 353.41 294.544 353.176 293.136 c
-351.909 285.519 339.782 289.123 345.796 292.431 c
-346.933 293.056 350.057 292.16 348.923 293.822 c
-348.158 294.942 347.262 293.015 346.354 292.922 c
-345.186 292.803 345.056 294.371 345.015 295.768 c
-344.944 298.194 342.758 300.816 344.591 302.666 c
-347.798 305.905 353.911 300.551 349.512 295.907 c
-348.349 294.679 346.413 293.776 346.834 292.12 c
-347.607 289.086 353.086 289.931 352.425 294.341 c
-352.08 296.645 349.552 296.976 349.036 295.559 c
-348.328 293.62 351.519 293.678 352.151 292.323 c
-353.294 289.878 349.105 289.141 348.938 287.058 c
-348.737 284.554 353.646 283.906 352.66 281.125 c
-351.699 278.41 348.057 280.552 345.491 284.218 c
-344.623 285.458 343.374 286.417 341.885 286.672 c
-337.876 287.358 337.479 282.825 339.629 282.555 c
-340.421 282.455 341.042 283.221 340.958 284.08 c
-340.845 285.245 339.693 285.971 338.463 285.962 c
-337.258 285.953 336.156 285.294 334.954 285.237 c
-328.437 284.925 328.291 293.795 333.621 294.066 c
-335.021 294.138 336.233 293.087 336.276 291.701 c
-336.337 289.771 334.007 288.516 334.194 286.571 c
-334.465 283.759 338.839 283.754 339.403 281.105 c
-339.847 279.019 337.729 277.582 335.651 276.591 c
-333.365 275.501 331.031 274.063 330.641 271.599 c
-330.425 270.238 330.934 268.846 332.067 268.075 c
-332.834 267.552 333.854 267.465 334.398 268.142 c
-334.975 268.859 334.5 269.885 334.797 270.724 c
-335.265 272.049 337.659 272.69 336.923 274.225 c
-336.415 275.285 334.966 274.896 333.727 274.362 c
-332.326 273.759 330.684 273.589 329.612 274.611 c
-327.952 276.192 329.241 278.853 328.362 280.843 c
-325.498 287.327 318.029 281.015 321.932 277.822 c
-323.348 276.663 325.813 278.535 327.036 276.951 c
-328.459 275.107 325.388 273.357 325.708 271.451 c
-325.858 270.556 326.626 269.959 327.406 269.483 c
-328.852 268.599 330.652 268.125 331.697 269.293 c
-334.681 272.63 328.911 275.759 327.704 272.225 c
-326.77 269.49 331.872 269.477 331.679 267.113 c
-331.522 265.203 328.811 264.699 327.872 266.607 c
-327.46 267.444 327.557 268.7 326.597 268.875 c
-324.682 269.225 325.675 266.451 325.18 264.856 c
-323.184 258.428 318.841 268.43 314.937 269.681 c
-312.076 270.598 309.546 267.278 306.67 267.972 c
-305.07 268.359 303.502 269.914 302.136 268.865 c
-300.685 267.749 301.631 265.54 303.276 265.8 c
-307.218 266.422 300.433 273.565 304.878 273.94 c
-306.849 274.107 307.743 270.92 305.224 269.758 c
-303.155 268.804 299.412 270.395 299.15 267.639 c
-299.102 267.127 299.38 266.629 299.854 266.605 c
-300.974 266.547 300.495 268.084 300.553 269.249 c
-300.698 272.149 305.812 272.607 306.468 268.368 c
-306.925 265.412 304.165 263.292 301.361 261.842 c
-298.429 260.326 295.16 258.988 292.126 260.226 c
-285.503 262.929 286.914 271.868 292.872 272.315 c
-294.689 272.451 296.364 271.262 296.394 269.534 c
-296.428 267.531 295.389 264.852 297.346 265.002 c
-299.821 265.192 296.199 271.196 299.712 270.594 c
-301.285 270.324 300.286 268.299 299.505 266.508 c
-299.014 265.38 299.279 264.118 299.638 262.94 c
-301.368 257.264 307.099 256.779 307.86 259.952 c
-308.129 261.078 307.315 262.28 307.829 263.345 c
-311.086 270.093 312.189 258.001 315.515 254.562 c
-316.279 253.772 317.529 253.315 317.613 252.193 c
-317.773 250.063 314.33 249.046 312.199 251.78 c
-311.516 252.657 310.875 253.744 309.775 253.714 c
-308.194 253.672 307.904 251.708 307.116 250.357 c
-306.61 249.49 305.788 248.88 304.944 248.341 c
-302.901 247.034 300.684 247.819 300.963 249.298 c
-301.171 250.4 302.944 251.81 301.53 252.123 c
-300.866 252.27 299.231 249.601 299.11 251.499 c
-299.08 251.961 299.703 252.057 300.296 251.927 c
-305.116 250.87 305.487 256.719 302.67 256.863 c
-301.837 256.906 301.312 256.113 300.691 255.566 c
-297.658 252.896 294.436 256.372 296.093 258.325 c
-296.883 259.256 298.563 258.727 299.266 259.761 c
-300.476 261.54 297.977 263.283 296.793 261.733 c
-295.341 259.831 299.656 258.521 298.634 256.694 c
-298.391 256.259 297.895 256.066 297.398 255.991 c
-292.679 255.28 291.113 260.908 294.281 262.397 c
-297.781 264.042 298.764 258.284 301.628 257.397 c
-304.084 256.636 308.132 257.897 307.766 255.055 c
-307.726 254.746 307.577 254.464 307.358 254.243 c
-304.855 251.709 303.801 246.773 306.019 249.274 c
-306.116 249.384 306.164 249.527 306.185 249.672 c
-306.338 250.734 305.202 251.562 305.317 252.623 c
-305.354 252.965 305.53 253.282 305.827 253.451 c
-307.143 254.198 308.801 252.215 307.63 249.891 c
-307.025 248.691 306.105 247.558 306.23 246.21 c
-306.407 244.284 308.696 243.012 308.425 241.028 c
-307.615 235.098 299.926 239.414 303.307 242.498 c
-304.481 243.568 310.795 238.383 309.531 243.188 c
-309.258 244.226 307.892 243.899 306.838 244.068 c
-300.028 245.16 304.678 255.424 309.999 251.01 c
-311.48 249.78 310.949 247.569 310.076 245.703 c
-308.955 243.31 310.509 241.434 311.646 242.217 c
-312.33 242.689 312.089 244.42 313.196 244.158 c
-314.873 243.761 312.706 242.028 312.954 241.083 c
-314.118 236.635 315.334 243.374 314.956 247.949 c
-314.8 249.843 317.499 251.715 316.013 253.415 c
-313.755 255.998 309.294 251.009 313.382 244.845 c
-313.754 244.285 314.2 243.682 314.841 243.775 c
-315.904 243.929 316.134 245.463 315.033 246.022 c
-312.171 247.477 312.103 228.171 308.057 238.985 c
-307.787 239.705 308.363 240.376 308.654 241.079 c
-310.164 244.724 305.442 247.952 299.873 247.016 c
-298.432 246.774 297.008 246.441 295.561 246.234 c
-294.033 246.016 292.377 246.004 291.307 247.091 c
-289.193 249.238 291.494 253.098 289.387 255.248 c
-287.264 257.414 282.772 255.067 281.17 258.008 c
-280.468 259.296 281.131 260.866 280.725 262.254 c
-280.415 263.313 279.523 264.12 278.433 264.153 c
-276.574 264.21 275.419 262.016 273.568 262.017 c
-272.156 262.018 271.203 263.261 270.097 264.12 c
-267.349 266.254 263.36 265.963 260.678 268.19 c
-257.914 270.485 256.763 275.169 252.968 275.042 c
-251.328 274.988 250.013 273.844 248.931 272.599 c
-246.229 269.486 242.588 270.184 242.899 272.318 c
-243.145 274.002 245.569 273.615 246.452 274.812 c
-247.972 276.873 241.169 281.566 245.84 283.008 c
-248.765 283.912 247.954 279.293 249.485 277.606 c
-251.012 275.923 253.741 276.908 253.777 279.048 c
-253.778 279.12 253.775 279.193 253.787 279.264 c
-254.196 281.632 255.634 278.075 257.066 277.026 c
-257.998 276.343 260.353 277.049 260.007 275.495 c
-259.974 275.344 259.887 275.188 259.965 275.052 c
-260.288 274.488 260.642 275.449 261.072 275.658 c
-263.921 277.041 260.13 274.072 258.344 272.604 c
-252.874 268.111 264.173 270.855 265.188 269.255 c
-265.985 267.999 264.786 266.424 263.35 266.857 c
-260.533 267.707 263.277 271.413 262.043 273.163 c
-261.076 274.535 258.963 274.266 258.355 272.689 c
-257.237 269.791 261.188 268.07 262.481 270.511 c
-263.429 272.301 260.692 274.011 261.474 275.81 c
-262.535 278.247 272.671 272.072 270.413 278.749 c
-270.339 278.969 270.201 279.178 270.238 279.408 c
-270.253 279.502 270.297 279.587 270.346 279.669 c
-273.642 285.147 281.15 278.67 276.46 274.692 c
-269.945 269.166 269.055 283.693 264.391 283.13 c
-261.322 282.759 260.146 278.774 262.589 276.43 c
-263.864 275.207 266.009 274.388 265.52 272.672 c
-265.173 271.455 263.664 271.051 262.43 271.678 c
-260.775 272.519 260.039 274.897 258.082 274.923 c
-256.494 274.944 255.415 273.386 255.43 271.683 c
-255.443 270.229 256.163 268.916 256.896 267.663 c
-257.929 265.897 257.699 263.878 256.285 263.852 c
-255.906 263.845 255.564 264.065 255.187 264.098 c
-251.39 264.427 254.382 258.84 252.514 257.657 c
-251.412 256.958 249.952 257.691 249.649 259.052 c
-249.206 261.044 251.217 262.45 253.231 263.369 c
-254.122 263.776 255.036 264.357 254.971 265.288 c
-254.784 267.961 248.999 267.653 249.66 262.32 c
-249.871 260.621 250.581 259.043 251.198 257.449 c
-252.207 254.843 252.976 252.153 253.862 249.504 c
-256.136 242.705 251.582 237.967 248.65 240.362 c
-247.257 241.5 247.559 243.713 249.211 244.47 c
-251.48 245.509 255.506 245.363 253.967 247.509 c
-253.452 248.226 252.42 248.007 251.541 247.641 c
-246.258 245.439 240.081 243.928 236.896 248.19 c
-235.133 250.547 232.93 252.798 231.625 250.969 c
-229.915 248.574 234.422 247.355 234.421 245.233 c
-234.418 241.117 229.198 244.121 224.564 246.926 c
-222.489 248.182 219.827 247.902 218.096 246.21 c
-215.511 243.683 216.153 239.44 219.306 238.283 c
-234.708 232.633 223.22 266.49 218.468 246.61 c
-218.113 245.127 217.906 243.228 217.007 244.142 c
-216.728 244.426 216.856 244.9 217.217 245.146 c
-219.568 246.742 219.323 242.309 220.712 240.667 c
-221.475 239.765 222.821 239.708 223.852 240.352 c
-231.658 245.228 220.087 253.003 218.683 245.937 c
-218.554 245.291 218.859 244.628 219.46 244.378 c
-220.948 243.757 221.809 245.753 223.143 246.367 c
-242.34 255.204 225.965 215.096 220.993 238.84 c
-220.678 240.344 222.854 243.008 220.666 243.171 c
-219.969 243.223 219.532 242.479 219.915 241.969 c
-221.449 239.928 222.275 244.482 223.522 243.797 c
-224.525 243.245 223.763 241.32 221.589 241.371 c
-219.304 241.426 216.758 241.806 215.301 240.063 c
-213.686 238.13 214.689 235.213 217.064 234.843 c
-219.913 234.399 224.873 238.072 224.78 234.141 c
-224.755 233.06 223.636 232.508 222.688 231.947 c
-221.089 231 219.463 229.57 217.81 230.374 c
-213.888 232.282 216.782 239.754 222.838 237.234 c
-226.075 235.886 227.539 231.115 231.296 231.483 c
-232.406 231.592 233.545 232.24 234.526 231.666 c
-237.024 230.204 233.787 226.543 235.604 224.814 c
-236.496 223.964 238.058 224.312 238.875 223.368 c
-240.11 221.94 238.431 220.194 237.672 218.46 c
-237.339 217.701 237.305 216.795 237.938 216.333 c
-238.845 215.673 240.72 216.794 241.138 215.421 c
-241.372 214.653 240.411 214.039 240.56 213.271 c
-241.29 209.491 248.076 220.147 247.672 214.006 c
-247.573 212.507 245.437 213.274 244.592 212.481 c
-242.97 210.959 245.897 209.2 245.628 207.519 c
-244.61 201.147 232.772 207.329 239.958 213.769 c
-241.207 214.889 243.002 215.881 242.431 217.402 c
-241.611 219.585 236.655 217.398 236.622 220.516 c
-236.607 221.904 238.353 222.651 239.746 221.761 c
-240.755 221.116 241.159 219.854 242.102 219.124 c
-243.508 218.037 245.715 217.243 244.84 215.791 c
-243.279 213.203 240.628 217.774 238.957 216.565 c
-238.329 216.112 238.277 215.241 238.512 214.474 c
-238.899 213.213 239.792 211.874 238.919 210.892 c
-236.713 208.413 231.995 212.933 236.164 215.998 c
-239.515 218.462 241.726 221.793 239.024 221.822 c
-238.328 221.83 237.88 221.139 237.234 220.926 c
-232.376 219.325 232.176 228.465 237.805 226.617 c
-238.807 226.288 239.298 225.254 239.945 224.432 c
-241.574 222.365 244.246 221.652 246.69 220.706 c
-250.092 219.39 252.799 221.335 251.749 223.033 c
-250.983 224.273 249.083 223.723 249.1 222.285 c
-249.119 220.536 252.75 220.611 252.212 218.566 c
-251.849 217.186 249.771 217.711 249.082 216.632 c
-247.473 214.113 251.925 214.242 255.09 213.45 c
-257.07 212.954 258.543 210.457 260.595 211.267 c
-264.811 212.93 259.58 217.052 255.999 220.99 c
-253.95 223.243 254.971 226.398 257.178 226.349 c
-258.199 226.326 258.893 225.439 259.472 224.579 c
-260.983 222.338 262.459 220.071 263.86 217.759 c
-265.482 215.082 267.026 212.217 266.823 209.09 c
-265.696 191.779 237.81 208.163 254.946 211.837 c
-255.44 211.943 256.011 211.847 256.368 212.216 c
-259.349 215.301 253.4 212.941 249.729 210.882 c
-248.181 210.013 246.584 211.456 244.922 211.933 c
-243.692 212.285 242.384 212.052 241.122 212.237 c
-240.446 212.336 239.787 212.557 239.25 212.98 c
-234.59 216.643 228.047 218.977 230.622 215.044 c
-231.028 214.424 231.854 214.393 232.6 214.334 c
-236.414 214.03 240.915 213.057 241.615 216.472 c
-242.461 220.601 235.998 221.131 235.263 224.614 c
-234.736 227.109 237.477 229.846 235.72 232.035 c
-234.163 233.976 230.879 232.489 229.203 234.255 c
-227.363 236.193 226.851 241.239 224.47 238.995 c
-221.585 236.275 234.374 233.854 228.471 230.913 c
-227.858 230.608 227.036 230.935 226.52 230.45 c
-225.912 229.877 226.396 228.944 226.233 228.169 c
-226.005 227.084 224.598 226.561 224.562 225.421 c
-224.451 221.965 228.76 225.079 231.805 225.29 c
-232.341 225.327 232.878 225.197 233.328 224.902 c
-235.523 223.462 234.816 220.115 232.442 218.034 c
-232.198 217.82 231.892 217.636 231.628 217.792 c
-229.585 219.001 233.506 218.86 233.976 219.613 c
-234.18 219.94 234.027 220.409 234.303 220.691 c
-239.148 225.636 237.829 213.206 233.702 218.028 c
-233.028 218.815 234.082 219.869 233.754 220.751 c
-233.463 221.533 232.492 221.635 231.613 221.628 c
-226.804 221.59 221.565 222.294 218.017 219.032 c
-217.474 218.532 217.007 217.954 216.455 217.463 c
-213.802 215.104 209.185 214.058 209.584 210.395 c
-209.623 210.034 209.73 209.683 209.771 209.321 c
-213.972 172.269 160.565 232.284 201.138 216.022 c
-202.422 215.508 202.922 213.439 204.439 213.709 c
-206.518 214.078 205.308 216.899 206.126 218.444 c
-206.693 219.517 208.274 220.142 207.965 221.409 c
-207.429 223.609 204.243 221.87 203.115 223.239 c
-202.755 223.675 202.704 224.274 202.85 224.824 c
-203.761 228.249 208.844 227.2 210.621 229.876 c
-211.66 231.44 211.087 233.532 211.861 235.222 c
-213.126 237.985 216.714 238.553 219.65 237.119 c
-226.603 233.724 222.558 226.108 218.67 227.804 c
-218.28 227.974 217.924 228.279 217.498 228.229 c
-207.368 227.04 223.844 224.031 222.346 221.95 c
-220.895 219.936 219.759 223.591 218.091 224.882 c
-214.868 227.377 210.465 221.122 215.387 214.001 c
-218.122 210.043 216.247 205.66 213.331 206.299 c
-212.326 206.519 211.709 207.481 210.8 207.94 c
-210.313 208.186 209.767 208.274 209.242 208.42 c
-200.699 210.797 204.501 220.514 209.378 218.797 c
-210.389 218.441 210.86 217.341 210.243 216.683 c
-209.338 215.718 208.091 217.052 207.201 218.536 c
-206.967 218.926 206.676 219.276 206.397 219.634 c
-205.545 220.724 205.086 222.155 206.05 222.864 c
-208.305 224.521 209.939 218.021 212.322 220.37 c
-213.903 221.928 211.355 225.021 208.868 222.923 c
-207.122 221.45 207.747 218.591 210.005 217.855 c
-211.56 217.348 213.1 218.248 214.613 218.857 c
-218.796 220.54 221.821 223.749 219.465 225.724 c
-217.878 227.056 215.88 225.414 213.974 224.47 c
-209.015 222.013 206.899 217.694 209.958 217.134 c
-212.583 216.653 212.164 220.564 213.702 222.08 c
-215.322 223.676 218.111 222.785 218.724 220.444 c
-219.214 218.576 218.798 215.94 220.729 215.986 c
-224.546 216.078 220.595 220.712 221.221 223.035 c
-221.915 225.608 228.095 225.173 226.844 228.798 c
-225.82 231.764 221.145 230.299 222.171 227.028 c
-222.803 225.012 225.665 225.335 226.895 223.803 c
-229.702 220.307 233.64 216.211 233.06 219.998 c
-232.973 220.562 232.432 220.922 231.844 220.917 c
-230.173 220.903 229.455 218.829 230.029 216.869 c
-231.496 211.86 237.043 211.72 237.815 214.885 c
-238.39 217.239 235.376 221.889 238.827 221.368 c
-239.689 221.238 240.098 220.29 240.044 219.352 c
-239.666 212.77 231.018 213.894 231.558 218.846 c
-231.64 219.595 232.113 220.316 231.868 221.042 c
-231.338 222.616 225.816 223.772 228.88 225.34 c
-229.632 225.725 231.351 224.793 231.25 226.035 c
-231.196 226.693 230.317 226.543 229.691 226.719 c
-228.26 227.121 228.552 230.143 226.689 229.84 c
-225.946 229.719 225.565 228.877 225.941 228.204 c
-226.516 227.173 228.244 227.611 228.792 226.552 c
-229.845 224.517 225.796 222.061 223.712 225.823 c
-222.834 227.408 221.573 228.856 220.56 227.893 c
-219.755 227.126 220.385 225.718 221.605 225.773 c
-222.921 225.833 223.212 227.567 224.307 228.12 c
-231.249 231.625 231.687 217.57 223.802 221.066 c
-223.062 221.393 222.566 222.125 222.674 222.914 c
-223.031 225.513 227.719 225.751 228.808 221.538 c
-229.304 219.619 228.995 217.282 230.677 216.168 c
-231.727 215.473 233.412 215.35 233.446 214.041 c
-233.463 213.361 232.856 212.849 232.76 212.184 c
-232.666 211.539 233.043 210.938 233.588 210.565 c
-250.592 198.96 239.217 245.5 233.161 218.123 c
-232.954 217.186 233.87 215.834 232.81 215.435 c
-232.338 215.257 231.895 215.63 231.502 215.967 c
-228.181 218.81 223.344 217.957 219.257 219.295 c
-216.505 220.197 213.492 221.784 211.456 219.818 c
-210.475 218.871 210.327 217.414 209.729 216.203 c
-209.131 214.991 208.076 214.027 207.691 212.726 c
-206.321 208.094 212.051 207.313 212.4 210.101 c
-212.518 211.041 211.556 211.623 211.076 212.41 c
-210.369 213.566 210.782 214.989 210.763 216.329 c
-210.753 217.002 210.626 217.675 210.295 218.262 c
-208.473 221.491 202.806 219.907 201.312 223.464 c
-200.286 225.908 202.313 228.361 204.891 229.7 c
-207.143 230.87 209.816 231.713 210.751 234.082 c
-211.031 234.792 211.261 235.643 212 235.719 c
-215.232 236.054 211.729 230.805 213.942 230.451 c
-216.44 230.053 214.455 233.265 213.242 235.985 c
-206.913 250.178 236.433 241.08 220.385 234.939 c
-220.047 234.809 219.673 234.841 219.332 234.967 c
-214.391 236.804 221.295 244.355 217.091 246.477 c
-204.208 252.98 208.871 227.511 218.075 238.289 c
-218.693 239.012 218.925 240.291 219.912 240.166 c
-223.514 239.71 217.313 234.872 220.152 234.133 c
-221.294 233.836 221.703 235.381 221.793 236.867 c
-221.861 237.971 222.17 239.22 221.298 239.881 c
-219.498 241.245 218.292 238.31 217.059 235.923 c
-214.72 231.394 215.641 227.025 217.946 228.75 c
-219.857 230.179 214.624 233.891 217.837 235.066 c
-219.293 235.599 219.89 233.535 220.003 231.49 c
-220.113 229.508 221.197 227.343 219.833 225.846 c
-217.118 222.865 213.379 227.777 210.269 226.764 c
-205.808 225.311 199.503 219.693 200.798 224.934 c
-201.006 225.776 201.938 226.183 202.562 225.692 c
-204.434 224.221 200.872 223.01 200.593 221.502 c
-200.312 219.978 202.253 219.328 202.872 218.04 c
-204.005 215.687 199.448 211.225 203.262 209.983 c
-204.842 209.469 206.026 211.194 206.612 213.02 c
-207.512 215.825 207.91 219.064 205.547 220.4 c
-202.63 222.05 199.887 218.819 197.674 215.787 c
-197.29 215.262 196.881 214.753 196.546 214.194 c
-195.771 212.901 194.831 211.465 193.591 212.005 c
-191.698 212.828 192.621 216.54 196.255 216.321 c
-213.49 215.28 198.865 191.074 193.082 204.466 c
-191.967 207.048 200.553 213.547 194.038 214.316 c
-191.793 214.581 191.846 211.502 191.135 209.276 c
-190.555 207.459 188.861 206.358 187.445 205.096 c
-186.681 204.413 185.888 203.637 184.866 203.687 c
-179.329 203.962 184.271 211.906 185.95 207.318 c
-186.126 206.837 185.693 206.37 185.739 205.874 c
-186.301 199.822 194.622 208.072 188.072 210.674 c
-184.126 212.241 180.561 208.277 179.018 203.612 c
-178.5 202.048 177.65 200.426 176.155 200.624 c
-172.397 201.123 175.953 205.707 175.605 208.666 c
-175.313 211.144 172.563 210.876 172.544 209.473 c
-172.537 208.943 173.049 208.609 173.581 208.439 c
-176.3 207.571 178.459 209.749 177.47 211.455 c
-176.403 213.295 174.105 211.5 172.076 211.129 c
-167.041 210.208 165.219 216.902 169.364 218.573 c
-173.078 220.071 175.825 212.792 179.639 215.155 c
-181.164 216.101 181.299 218.246 180.149 219.759 c
-178.684 221.687 176.015 221.909 173.582 221.42 c
-172.698 221.242 171.822 220.984 171.068 220.487 c
-169.514 219.461 168.631 217.524 166.823 216.981 c
-164.321 216.228 162.031 218.286 160.859 220.838 c
-160.209 222.25 159.305 223.738 157.959 223.344 c
-156.491 222.914 156.702 220.658 155.33 220.094 c
-147.146 216.725 150.01 233.115 157.679 226.669 c
-158.6 225.895 158.759 224.597 159.352 223.565 c
-161.276 220.215 166.139 220.173 168.521 223.465 c
-170.378 226.031 172.169 229.437 174.32 227.682 c
-175.324 226.863 175.234 224.894 176.661 224.721 c
-177.236 224.651 177.753 225.011 178.092 225.491 c
-179.041 226.831 178.603 228.601 178.899 230.192 c
-179.192 231.763 179.279 233.513 177.976 233.586 c
-176.875 233.648 176.603 232.269 176.358 231.073 c
-175.406 226.419 170.104 227.214 170.149 230.054 c
-170.186 232.433 174.56 237.308 170.758 236 c
-169.407 235.535 170.861 232.727 169.127 232.54 c
-168.115 232.431 167.847 233.811 168.174 235.147 c
-168.626 236.991 168.523 238.943 169.129 240.745 c
-169.271 241.168 169.436 241.628 169.198 242 c
-168.615 242.91 167.004 242.324 167.191 240.927 c
-167.438 239.083 170.14 239.447 170.986 238.04 c
-172.23 235.97 169.279 234.536 168.031 232.614 c
-167.412 231.661 167.031 230.343 165.894 230.31 c
-161.748 230.19 165.724 236.205 163.519 237.299 c
-162.197 237.955 161.04 236.552 159.876 235.568 c
-158.383 234.306 156.35 233.984 154.657 233.021 c
-151.886 231.445 148.857 229.059 147.007 231.345 c
-145.119 233.677 147.957 236.17 149.597 234.688 c
-151.567 232.906 147.804 231.531 146.7 229.604 c
-146.541 229.327 146.446 229.018 146.29 228.739 c
-145.733 227.739 144.443 227.098 144.525 225.912 c
-144.735 222.869 149.192 223.721 148.429 226.414 c
-147.137 230.975 142.554 224.179 140.725 225.855 c
-139.046 227.392 141.564 229.274 143.386 231.107 c
-144.082 231.808 144.543 232.74 145.374 233.282 c
-146.068 233.735 146.974 233.815 147.504 233.231 c
-148.44 232.2 149.087 229.982 149.848 231.272 c
-150.113 231.721 149.669 232.19 149.205 232.541 c
-147.644 233.722 145.829 235.027 144.659 233.743 c
-144.213 233.253 144.169 232.535 144.421 231.914 c
-145.113 230.207 147.242 230.011 148.884 229.234 c
-149.304 229.035 149.716 228.75 149.784 228.297 c
-149.908 227.473 148.976 227.046 148.125 226.73 c
-146.458 226.111 145.091 224.899 143.472 224.169 c
-141.374 223.224 138.84 223.049 137.336 221.274 c
-135.463 219.064 136.285 215.772 138.816 215.223 c
-139.701 215.031 140.592 215.336 141.484 215.466 c
-144.094 215.846 145.703 213.691 144.609 212.424 c
-142.805 210.335 141.445 214.354 139.525 215.221 c
-137.771 216.013 135.809 214.516 135.82 212.416 c
-135.827 211.306 136.429 210.32 136.785 209.274 c
-137.669 206.674 135.959 204.393 134.225 205.116 c
-132.515 205.829 133.269 208.239 134.803 210.129 c
-137.185 213.061 140.557 212.743 140.43 210.729 c
-140.348 209.415 138.621 208.955 137.128 209.704 c
-134.774 210.884 134.147 213.698 135.895 214.801 c
-136.364 215.097 136.934 215.138 137.487 215.092 c
-142.447 214.674 141.475 209.193 138.874 209.581 c
-137.582 209.773 137.409 211.451 137.828 212.965 c
-138.864 216.717 137.628 220.415 134.926 219.89 c
-133.239 219.562 132.819 217.58 132.333 215.876 c
-132.14 215.201 131.884 214.546 131.702 213.869 c
-130.822 210.606 131.677 207.067 134.273 204.945 c
-137.616 202.212 142.564 202.903 144.322 206.584 c
-145.867 209.818 147.773 213.217 149.594 211.195 c
-151.074 209.553 148.646 207.624 145.783 206.566 c
-144.034 205.92 142.413 204.677 140.546 204.925 c
-138.926 205.139 137.131 206.293 136.066 205.006 c
-135.552 204.385 135.669 203.518 135.717 202.713 c
-135.92 199.261 134.574 195.303 137.23 192.993 c
-140.146 190.456 144.585 192.465 144.47 196.101 c
-144.412 197.907 142.884 199.299 142.634 201.077 c
-142.497 202.051 143.002 202.983 143.803 202.87 c
-144.83 202.724 144.966 201.173 143.856 200.129 c
-143.299 199.605 142.604 199.112 142.602 198.349 c
-142.599 197.444 143.511 196.942 144.327 196.495 c
-145.374 195.921 146.618 195.747 146.87 196.649 c
-147.315 198.237 144.896 197.677 143.591 198.25 c
-142.188 198.866 142.499 200.827 141.598 201.95 c
-140.126 203.784 137.416 202.419 135.305 203.039 c
-134.499 203.275 133.819 203.794 133.221 204.382 c
-129.907 207.633 131.938 211.893 134.55 211.206 c
-136.598 210.667 136.18 206.953 138.499 206.812 c
-140.658 206.681 141.733 209.878 139.418 211.635 c
-138.335 212.457 136.846 212.291 136.521 211.201 c
-135.942 209.262 138.938 209.237 139.878 207.919 c
-141.98 204.972 136.839 203.929 133.23 202.177 c
-131.904 201.533 130.958 200.298 129.635 199.649 c
-128.658 199.17 127.466 199.127 126.863 199.956 c
-125.573 201.731 129.269 211.371 124.941 206.862 c
-123.776 205.647 126.105 204.387 125.808 203.125 c
-125.684 202.597 125.172 202.25 125.036 201.725 c
-123.899 197.338 133.881 202.473 132.524 197.872 c
-132.362 197.323 131.785 196.987 131.658 196.426 c
-131.374 195.164 133.007 194.727 133.953 193.894 c
-134.856 193.1 135.013 191.816 135.524 190.739 c
-138.241 185.018 135.951 179.991 133.645 182.498 c
-132.968 183.234 133.409 184.351 133.165 185.286 c
-132.306 188.572 130.921 192.826 133.391 191.146 c
-134.187 190.604 133.579 189.347 134.196 188.686 c
-137.502 185.144 138.198 193.526 132.215 195.854 c
-130.761 196.42 129.533 197.707 127.955 197.551 c
-125.637 197.322 124.457 194.621 125.516 192.284 c
-125.933 191.364 126.678 190.551 126.662 189.532 c
-126.624 187.175 121.78 185.585 123.806 183.034 c
-125.947 180.337 130.706 188.143 132.631 183.768 c
-133.926 180.825 129.148 180.816 124.406 182.861 c
-122.473 183.695 119.806 183.783 119.512 185.887 c
-119.308 187.338 120.643 188.504 121.948 188.027 c
-122.914 187.675 123.265 186.562 123.203 185.492 c
-123.118 184.003 122.057 182.803 120.937 183.254 c
-120.139 183.575 119.888 184.824 118.956 184.787 c
-117.602 184.734 118.064 182.911 118.241 181.366 c
-118.363 180.312 117.838 179.313 117.759 178.26 c
-117.65 176.821 118.712 175.7 119.705 176.175 c
-120.777 176.688 120.111 178.179 120.589 179.126 c
-120.967 179.877 121.927 180.105 122.383 180.804 c
-124.708 184.368 116.579 188.047 112.279 180.071 c
-111.612 178.835 110.837 177.659 110.224 176.396 c
-108.999 173.873 108.592 170.851 110.482 168.921 c
-111.376 168.009 112.743 167.659 113.64 168.449 c
-116.575 171.031 108.358 175.029 112.058 177.596 c
-112.805 178.114 113.778 177.838 114.669 177.937 c
-118.663 178.38 119.975 184.003 116.242 187.4 c
-115.359 188.204 114.164 188.721 113.185 188.136 c
-111.274 186.992 113.521 181.638 110.001 182.015 c
-107.03 182.334 109.367 186.881 107.339 187.899 c
-106.343 188.398 104.593 188.036 104.658 189.284 c
-104.695 189.982 105.598 190.224 105.789 190.866 c
-106.235 192.369 98.514 192.892 102.413 195.313 c
-103.13 195.759 104.062 195.02 104.029 193.944 c
-103.978 192.275 102.248 191.435 100.864 190.477 c
-98.93 189.136 97.571 187.098 97.226 184.771 c
-97.006 183.284 97.225 181.767 97.822 180.388 c
-98.847 178.019 100.917 176.211 101.704 173.746 c
-102.036 172.709 102.452 171.543 103.454 171.621 c
-105.248 171.761 104.289 174.214 104.939 175.557 c
-106.883 179.573 110.047 173.748 113.283 169.697 c
-115.337 167.126 118.525 168.706 117.995 170.641 c
-117.948 170.811 117.868 170.992 117.964 171.139 c
-118.824 172.458 118.33 169.939 118.731 169.195 c
-120.835 165.29 120.588 172.595 117.325 173.196 c
-116.322 173.38 115.449 174.185 114.427 174.004 c
-111.508 173.486 113.216 169.39 111.687 167.589 c
-110.409 166.083 107.992 166.735 106.448 165.596 c
-105.63 164.991 105.211 164.005 105.181 162.985 c
-105.152 161.973 105.498 160.996 106.045 160.145 c
-107.91 157.243 111.479 154.491 109.304 151.89 c
-106.607 148.665 101.795 153.803 98.878 151.362 c
-96.799 149.622 94.52 147.289 93.997 149.443 c
-93.7 150.667 95.368 151.497 97.061 150.802 c
-98.355 150.271 99.483 149.389 100.803 148.921 c
-103.743 147.878 107.293 146.917 106.321 144.385 c
-105.939 143.39 104.633 142.679 105.023 141.604 c
-105.118 141.344 105.317 141.141 105.54 140.978 c
-106.935 139.957 109.03 140.461 110.291 139.243 c
-111.844 137.744 112.189 133.997 114.429 135.192 c
-118.104 137.153 108.035 142.138 112.997 143.921 c
-113.673 144.164 114.35 143.761 115.006 143.471 c
-117.01 142.586 119.259 142.857 121.437 143.03 c
-123.181 143.167 125.094 143.077 126.008 141.64 c
-126.874 140.28 125.941 138.742 124.787 139.038 c
-123.911 139.262 123.899 140.457 123.208 140.955 c
-122.93 141.155 122.582 141.211 122.258 141.321 c
-119.683 142.194 116.95 145.612 115.594 142.97 c
-115.038 141.888 115.831 140.592 117.106 140.457 c
-117.428 140.422 117.78 140.465 118.028 140.252 c
-118.64 139.727 118.096 138.648 116.942 138.435 c
-115.874 138.239 114.651 138.487 113.855 137.723 c
-112.182 136.115 114.243 133.727 116.813 132.153 c
-119.208 130.685 118.972 127.973 117.369 127.858 c
-115.218 127.704 116.097 131.105 114.604 131.732 c
-112.751 132.512 111.47 129.958 113.089 128.97 c
-114.478 128.123 122.759 138.937 120.284 130.866 c
-120.071 130.169 119.198 130.069 118.408 130.186 c
-115.648 130.596 112.97 131.74 110.184 131.438 c
-108.702 131.277 107.267 130.692 106.332 129.534 c
-104.625 127.418 104.568 123.544 101.641 123.422 c
-99.066 123.314 98.297 126.375 100.077 127.257 c
-102.025 128.223 103.215 124.786 105.1 125.319 c
-105.936 125.556 106.309 126.498 107.06 126.91 c
-114.854 131.183 115.666 114.653 106.196 118.788 c
-104.562 119.502 103.983 121.633 102.29 122.233 c
-100.327 122.929 97.39 121.203 96.397 123.402 c
-94.309 128.023 101.883 125.4 105.446 126.774 c
-105.778 126.902 106.089 127.095 106.278 127.397 c
-109.024 131.789 99.7 130.143 100.174 133.094 c
-100.5 135.119 105.116 134.468 104.476 137.146 c
-104.182 138.373 102.541 138.559 101.197 137.819 c
-99.345 136.799 97.522 134.962 95.73 136.058 c
-94.251 136.962 94.261 139.131 95.724 140.223 c
-97.466 141.524 99.168 143.088 97.719 143.758 c
-97.469 143.874 97.179 143.836 96.917 143.918 c
-94.258 144.75 96.52 148.628 98.554 146.724 c
-99.707 145.644 97.917 144.211 98.057 142.9 c
-98.324 140.415 101.731 141.552 103.595 140.537 c
-104.987 139.779 105.4 137.976 104.382 136.838 c
-103.223 135.542 101.132 135.986 99.87 137.436 c
-99.149 138.266 98.732 139.314 98.036 140.164 c
-96.868 141.59 94.898 141.987 94.043 140.706 c
-92.892 138.981 95.634 137 94.628 135.255 c
-93.528 133.346 91.037 134.705 91.696 136.25 c
-92.287 137.635 94.079 136.37 95.256 136.762 c
-96.186 137.072 96.867 138.394 97.829 137.88 c
-98.601 137.467 98.693 135.463 99.779 136.148 c
-100.251 136.446 100.001 137.099 99.79 137.669 c
-99.281 139.042 99.496 140.986 98.013 141.243 c
-94.574 141.837 94.062 134.545 99.856 135.485 c
-104.076 136.169 104.836 141.426 101.55 142.898 c
-100.091 143.551 98.468 142.817 97.285 141.675 c
-95.21 139.67 93.303 136.702 90.745 137.841 c
-89.132 138.56 89.245 140.526 90.462 140.775 c
-93.518 141.4 90.962 137.028 91.939 135.741 c
-98.383 127.255 102.448 147.062 91.296 143.679 c
-88.955 142.969 87.278 140.201 84.771 140.791 c
-82.574 141.309 81.671 143.943 82.771 146.104 c
-84.811 150.109 92.541 149.637 92.527 154.873 c
-92.521 157.156 90.494 158.791 88.171 159.309 c
-82.791 160.509 80.064 164.439 82.8 165.747 c
-85.244 166.914 87.739 158.839 90.518 162.829 c
-93.115 166.556 84.372 166.455 85.524 169.526 c
-86.069 170.982 89.702 171.686 88.078 173.385 c
-86.675 174.853 76.69 161.553 81.166 171.053 c
-81.557 171.882 82.753 171.354 83.399 171.847 c
-85.137 173.172 82.057 174.363 80.898 175.943 c
-80.136 176.982 80.392 178.807 79.045 179.175 c
-77.96 179.471 76.953 178.178 75.884 178.625 c
-72.957 179.847 77.017 182.155 81.306 183.546 c
-81.81 183.71 82.262 183.995 82.697 184.296 c
-83.182 184.631 83.714 184.989 84.276 184.829 c
-85.894 184.369 84.692 182.335 84.382 180.627 c
-84.262 179.967 84.416 179.295 84.405 178.626 c
-84.373 176.562 82.579 175.186 81.224 176.063 c
-79.528 177.161 80.691 180.14 83.825 180.743 c
-90.545 182.036 95.718 176.463 93.214 171.846 c
-91.461 168.613 86.945 168.59 83.55 170.867 c
-81.266 172.4 78.506 173.43 77.619 171.42 c
-77.36 170.832 77.514 170.133 78.069 169.885 c
-78.936 169.497 79.734 170.605 80.614 170.378 c
-83.308 169.68 79.825 166.982 79.824 165.117 c
-79.823 163.887 81.149 163.649 81.414 164.351 c
-81.62 164.899 80.874 165.17 80.618 165.637 c
-79.177 168.268 85.392 169.19 85.742 163.795 c
-85.902 161.33 85.945 158.551 83.801 157.604 c
-81.523 156.597 79.463 158.768 77.66 160.684 c
-76.281 162.149 74.258 162.894 73.25 161.566 c
-72.904 161.109 72.866 160.477 73.25 160.072 c
-75.13 158.089 78.775 162.905 74.034 165.712 c
-73.136 166.244 72.083 166.682 71.223 166.144 c
-69.983 165.369 70.174 163.465 71.6 162.749 c
-74.973 161.054 76.998 166.326 75.719 172.32 c
-75.313 174.223 75.735 176.304 77.421 176.657 c
-79.795 177.155 80.889 174.168 79.1 173.141 c
-76.635 171.726 74.798 183.961 71.535 177.679 c
-71.155 176.946 71.291 175.674 70.409 175.829 c
-70.167 175.871 69.903 176.065 69.742 175.871 c
-69.458 175.529 70.145 175.025 70.914 175.592 c
-72.517 176.774 74.355 175.36 73.773 174.028 c
-73.62 173.678 73.3 173.317 73.554 173.038 c
-74.154 172.383 75.463 173.82 74.043 174.678 c
-71.724 176.078 69.118 171.68 66.826 173.559 c
-65.827 174.378 66.026 175.875 66.681 177.088 c
-70.758 184.642 65.577 190.725 63.407 186.873 c
-63.212 186.528 63.191 186.095 63.474 185.842 c
-64.223 185.171 64.859 186.432 65.552 187.328 c
-76.021 200.875 80.808 169.446 64.95 176.911 c
-61.573 178.501 62.291 182.794 65.009 183.003 c
-68.082 183.239 66.834 167.472 72.944 174.707 c
-73.289 175.115 73.661 175.623 74.043 175.34 c
-74.639 174.896 73.638 174.17 73.942 173.677 c
-74.74 172.383 76.836 174.889 74.485 176.26 c
-72.45 177.447 70.003 177.958 67.911 176.923 c
-66.944 176.445 66.174 175.665 65.505 174.82 c
-65.065 174.263 64.688 173.582 65.002 172.972 c
-66.997 169.106 74.523 188.208 73.283 176.607 c
-73.236 176.17 72.873 175.868 72.601 175.528 c
-71.984 174.755 71.593 173.607 70.597 173.648 c
-68.977 173.714 69.257 176.263 67.879 176.689 c
-58.766 179.506 69.638 167.947 67.272 166.673 c
-64.699 165.288 61.489 170.448 66.406 174.031 c
-69.079 175.979 72.541 177.041 74.834 174.964 c
-75.672 174.205 75.884 172.998 75.083 172.512 c
-74.228 171.992 73.215 173.075 72.34 172.641 c
-68.734 170.854 75.095 169.139 75.428 167.292 c
-75.789 165.29 72.328 164.479 72.875 162.428 c
-73.067 161.708 73.795 161.265 74.498 161.476 c
-76.821 162.173 75.808 167.054 71.216 166.157 c
-69.927 165.905 68.644 165.295 67.377 165.679 c
-65.458 166.259 64.659 168.517 65.482 170.452 c
-68.057 176.506 75.635 172.692 73.663 168.37 c
-72.46 165.735 68.938 167.169 65.875 168.457 c
-59.765 171.026 52.75 167.866 50.912 161.571 c
-50.495 160.143 50.472 158.546 51.494 157.501 c
-52.619 156.351 54.443 156.406 55.825 157.323 c
-56.922 158.05 57.638 159.215 57.905 160.504 c
-58.386 162.826 59.703 164.736 60.94 163.697 c
-62.075 162.743 56.886 156.933 61.493 157.928 c
-64.898 158.663 59.643 162.139 61.134 163.273 c
-69.922 169.956 59.153 154.931 62.299 154.653 c
-62.694 154.618 63.085 154.838 63.472 154.735 c
-64.59 154.439 64.067 152.839 64.766 152.133 c
-66.005 150.881 67.398 152.896 68.612 154.691 c
-71.235 158.569 76.066 155.8 74.912 152.869 c
-74.055 150.693 70.563 150.996 69.804 153.833 c
-69.36 155.493 70.258 157.124 71.413 158.428 c
-73.398 160.671 76.456 161.84 78.372 160.001 c
-80.247 158.202 80.002 153.403 83.091 154.354 c
-84.539 154.8 85.576 157.483 87.019 156.21 c
-87.646 155.657 87.295 154.698 87.513 153.925 c
-88.077 151.913 90.834 152.493 92.38 151.399 c
-94.535 149.874 94.034 146.475 91.431 145.215 c
-90.011 144.527 88.503 143.641 89.232 142.585 c
-89.9 141.617 91.604 142.201 91.883 143.85 c
-92.249 146.018 90.599 148.971 92.866 149.856 c
-93.253 150.007 93.715 150.005 94.002 150.312 c
-95.284 151.683 92.448 152.61 92.473 153.876 c
-92.745 167.614 94.111 145.535 97.744 143.732 c
-99.249 142.984 102.381 143.731 101.61 141.794 c
-101.468 141.436 101.099 141.254 100.762 141.068 c
-97.334 139.169 94.656 141.3 95.926 142.653 c
-96.685 143.461 97.802 142.478 98.814 142.494 c
-137.364 143.088 61.709 171.034 89.313 144.117 c
-90.313 143.142 90.97 141.927 90.05 141.658 c
-87.485 140.909 90.425 145.612 88.528 145.453 c
-87.743 145.387 87.707 143.096 86.57 143.886 c
-86.115 144.202 86.545 145.044 86.024 145.314 c
-83.81 146.462 85.896 142.923 85.369 142.291 c
-82.136 138.413 80.59 147.813 85.657 145.806 c
-86.374 145.522 86.748 144.789 87.018 144.063 c
-89.238 138.09 83.93 134.356 81.412 136.883 c
-80.65 137.648 80.635 138.88 79.927 139.689 c
-78.183 141.68 75.008 140.156 73.212 137.351 c
-68.798 130.452 77.542 126.726 78.237 131.002 c
-78.54 132.87 74.716 133.674 75.779 135.743 c
-76.356 136.865 78.907 136.566 78.625 138.205 c
-78.013 141.762 73.288 138.038 76.328 136.74 c
-77.036 136.437 78.815 137.494 78.512 136.247 c
-78.431 135.915 78.022 135.861 77.65 135.876 c
-76.602 135.916 75.515 135.822 74.672 135.197 c
-71.097 132.552 74.406 127.675 77.584 129.411 c
-80.35 130.921 77.533 134.382 77.722 137.134 c
-77.851 139.02 79.372 140.366 80.721 141.691 c
-85.028 145.922 89.717 142.933 88.23 140.551 c
-87.215 138.925 78.173 143.277 81.091 137.918 c
-81.954 136.334 89.834 143.092 87.912 137.148 c
-87.612 136.219 86.292 136.252 85.313 137.027 c
-84.068 138.012 83.254 139.465 83.239 141.049 c
-83.204 144.711 86.806 149.333 83.049 150.991 c
-81.876 151.509 80.431 150.97 79.34 151.674 c
-70.611 157.306 86.958 164.737 85.298 155.061 c
-85.117 154.007 84.009 153.531 83.009 153.101 c
-80.934 152.21 78.737 150.972 76.735 151.988 c
-75.997 152.363 75.455 153.01 74.895 153.617 c
-72.162 156.583 68.151 156.433 67.752 153.808 c
-67.433 151.706 70.06 150.96 71.452 149.478 c
-73.309 147.502 72.655 144.529 72.737 141.838 c
-72.776 140.527 73.378 139.239 74.503 139.344 c
-77.799 139.653 76.225 146.445 71.322 143.881 c
-69.333 142.841 68.52 140.061 66.215 139.735 c
-63.419 139.34 61.829 142.465 61.253 145.615 c
-61.082 146.544 60.931 147.519 61.338 148.373 c
-62.28 150.346 64.915 150.09 66.852 150.943 c
-71.201 152.857 75.885 153.876 75.13 150.685 c
-75.065 150.408 74.916 150.128 75.031 149.866 c
-76.669 146.104 75.31 152.612 76.159 154.219 c
-76.838 155.503 78.833 154.052 79.633 155.096 c
-81.344 157.333 76.937 156.851 75.035 157.991 c
-69.885 161.079 77.299 167.488 79.592 162.114 c
-80.199 160.693 78.819 159.394 78.547 157.939 c
-78.063 155.355 80.535 153.233 83.436 153.247 c
-85.203 153.256 86.957 152.72 86.569 151.447 c
-85.367 147.496 82.298 153.567 80.673 153.041 c
-73.545 150.736 85.011 141.156 87.732 150.449 c
-89.354 155.987 82.833 157.922 81.433 154.563 c
-80.914 153.316 81.82 152.073 82.665 150.976 c
-85.309 147.54 88.939 149.249 88.105 151.085 c
-87.761 151.843 86.737 151.82 86.123 152.333 c
-83.948 154.151 87.472 156.186 89.278 158.465 c
-90.016 159.396 90.245 160.596 90.572 161.734 c
-91.91 166.381 95.747 170.045 99.829 168.624 c
-100.11 168.526 100.385 168.396 100.572 168.165 c
-101.304 167.255 100.468 165.928 99.077 165.476 c
-97.357 164.918 95.44 165.326 94.322 166.723 c
-92.695 168.757 94.328 171.087 95.887 170.445 c
-96.167 170.33 96.376 170.096 96.635 169.942 c
-114.969 158.991 99.66 193.692 90.114 178.224 c
-89.827 177.76 89.599 177.231 89.126 176.954 c
-87.766 176.156 86.05 177.537 86.456 179.319 c
-86.928 181.39 90.802 182.677 89.242 184.911 c
-88.518 185.948 87.02 185.697 85.794 185.051 c
-84.909 184.585 84.776 183.636 85.353 183.471 c
-86.33 183.191 86.006 184.805 86.611 185.061 c
-87.911 185.612 88.653 182.636 85.777 182.026 c
-82.118 181.249 79.606 178.331 81.259 176.115 c
-82.671 174.221 88.11 174.91 86.774 171.672 c
-86.261 170.429 84.595 170.637 83.462 170.037 c
-82.826 169.7 82.341 169.078 81.627 168.942 c
-79.567 168.549 75.31 171.105 76.346 168.198 c
-76.555 167.613 77.26 167.467 77.915 167.518 c
-80.111 167.691 82.042 169.172 82.209 171.299 c
-82.294 172.394 81.83 173.545 82.332 174.54 c
-83.27 176.398 85.884 175.709 87.553 176.702 c
-88.682 177.373 89.876 178.48 90.688 177.556 c
-91.174 177.003 90.895 176.171 90.338 175.598 c
-89.518 174.753 88.313 174.369 87.558 173.461 c
-84.764 170.104 90.572 164.061 86.325 161.208 c
-83.572 159.357 80.445 162.313 78.62 165.88 c
-77.402 168.263 75.219 170.113 73.436 168.826 c
-71.688 167.564 72.978 163.345 70.138 163.315 c
-66.775 163.28 67.087 168.856 70.894 168.187 c
-71.832 168.022 72.566 167.106 73.534 167.249 c
-75.442 167.531 74.601 182.621 78.813 174.301 c
-79.114 173.706 78.737 173.034 78.767 172.382 c
-78.893 169.6 83.164 170.393 84.15 168.267 c
-87.704 160.608 68.117 167.071 71.854 159.286 c
-74.182 154.436 79.386 160.555 75.5 161.769 c
-75.432 161.79 75.361 161.803 75.301 161.84 c
-74.897 162.088 75.151 162.837 75.855 162.791 c
-77.702 162.671 77.672 158.816 73.805 158.553 c
-69.912 158.287 66.732 156.194 68.161 153.963 c
-69.045 152.582 71.646 152.977 72.023 151.2 c
-72.714 147.936 66.871 146.942 66.725 151.301 c
-66.629 154.163 70.328 154.961 73.852 154.424 c
-75.463 154.178 77.221 153.801 77.779 152.315 c
-78.608 150.106 76.166 148.493 74.127 147.004 c
-73.966 146.887 73.808 146.765 73.661 146.63 c
-72.532 145.596 71.658 143.861 70.197 144.342 c
-68.088 145.037 65.189 146.936 66.024 144.836 c
-66.301 144.139 67.476 144.456 67.746 143.753 c
-67.977 143.152 67.26 142.743 66.99 142.196 c
-64.219 136.582 76.988 137.256 73.695 145.472 c
-72.625 148.142 69.784 149.482 68.062 147.867 c
-66.537 146.435 67.37 143.945 69.241 142.439 c
-70.912 141.093 73.012 140.434 74.812 139.272 c
-76.647 138.087 78.146 136.367 78.517 134.221 c
-78.575 133.887 78.615 133.528 78.866 133.3 c
-78.982 133.195 79.13 133.134 79.285 133.107 c
-84.811 132.142 81.652 143.403 74.522 138.783 c
-70.615 136.252 68.251 130.439 63.445 131.47 c
-60.756 132.046 59.385 134.744 57.972 137.115 c
-56.649 139.334 55.041 141.422 54.321 143.909 c
-53.697 146.062 53.795 148.36 53.19 150.519 c
-52.835 151.788 52.24 153.043 52.462 154.35 c
-52.883 156.823 53.178 159.538 51.337 159.071 c
-50.088 158.754 50.549 157.112 50.495 155.791 c
-50.36 152.51 46.189 152.192 43.197 150.831 c
-40.029 149.391 36.612 149.184 36.755 151.568 c
-37.046 156.447 42.493 150.763 45.341 151.267 c
-49.945 152.083 49.11 159.833 43.272 159.204 c
-42.257 159.095 41.239 158.55 40.285 158.954 c
-38.002 159.921 39.497 163.457 37.676 164.795 c
-36.634 165.561 35.154 165.17 34.7 163.987 c
-33.543 160.975 38.464 158.395 40.681 162.247 c
-41.779 164.155 40.893 166.532 39.059 167.909 c
-30.139 174.605 25.925 156.127 34.663 160.82 c
-35.807 161.434 35.51 163.564 36.941 163.793 c
-39.81 164.252 37.995 160.029 39.175 158.597 c
-40.81 156.612 43.218 159.334 45.451 159.459 c
-48.168 159.611 50.627 160.527 49.372 161.797 c
-48.669 162.508 47.705 161.637 46.792 161.112 c
-44.833 159.986 42.674 161.489 40.605 162.443 c
-38.559 163.387 36.341 162.683 36.448 161.042 c
-36.536 159.701 39.112 158.621 37.868 157.289 c
-37.479 156.873 36.85 156.958 36.281 156.947 c
-35.422 156.93 34.589 156.616 33.729 156.656 c
-31.663 156.752 29.399 158.701 27.907 157.033 c
-26.489 155.446 27.958 152.831 30.342 153.161 c
-32.344 153.439 33.794 156.312 35.844 155.276 c
-36.745 154.822 36.984 153.734 37.457 152.854 c
-38.432 151.041 40.574 149.485 39.682 147.571 c
-39.036 146.185 36.68 145.575 37.195 143.908 c
-38.072 141.076 41.325 144.305 43.387 143.866 c
-65.091 139.242 29.338 118.003 35.888 139.333 c
-36.132 140.129 36.847 140.635 37.469 141.182 c
-39.224 142.721 40.047 145.129 38.555 146.515 c
-33.461 151.245 30.231 140.901 35.873 141.644 c
-37.221 141.821 37.268 143.729 38.401 144.281 c
-39.817 144.971 41.342 143.543 40.745 142.071 c
-40.187 140.696 38.129 140.883 37.413 139.633 c
-36.996 138.903 37.241 138.019 37.151 137.193 c
-36.849 134.417 33.418 133.388 32.467 130.864 c
-31.512 128.332 33.41 125.147 31.511 123.019 c
-29.044 120.256 24.936 123.375 21.812 122.198 c
-21.327 122.015 20.79 121.774 20.405 122.102 c
-18.013 124.142 23.179 123.888 23.622 125.007 c
-23.995 125.947 22.983 126.899 21.76 126.7 c
-20.532 126.5 19.2 125.425 18.364 126.418 c
-14.416 131.107 24.184 128.621 24.863 130.417 c
-25.452 131.978 22.209 135.547 25.196 135.624 c
-25.698 135.637 26.072 135.223 26.527 135.03 c
-29.035 133.966 30.352 137.716 29.666 141.827 c
-29.156 144.876 27.705 147.732 25.63 146.684 c
-24.509 146.117 23.922 144.116 22.613 144.77 c
-22.322 144.916 22.136 145.216 22.173 145.536 c
-23.11 153.623 24.769 140.548 26.503 140.186 c
-33.3 138.767 25.123 146.686 26.339 148.16 c
-27.495 149.56 29.502 148.163 30.921 146.328 c
-33.855 142.53 38.519 140.775 42.735 138.526 c
-46.005 136.782 48.389 133.609 46.541 131.163 c
-45.81 130.195 44.395 129.714 44.236 128.472 c
-44.124 127.6 44.789 126.839 45.566 127.009 c
-48.16 127.577 44.753 131.251 46.547 132.142 c
-48.938 133.328 50.714 128.471 46.857 128.006 c
-46.14 127.919 45.452 128.236 44.739 128.328 c
-42.623 128.602 40.772 127.103 39.827 125.126 c
-39.042 123.483 38.424 121.439 36.652 121.403 c
-35.933 121.388 35.267 121.83 35.187 122.519 c
-34.685 126.864 40.497 122.602 41.894 124.017 c
-42.988 125.124 42.046 126.883 40.579 128.015 c
-35.296 132.091 28.359 131.158 27.654 126.253 c
-27.482 125.059 27.902 123.838 28.879 123.144 c
-31 121.636 33.206 123.666 32.295 125.204 c
-31.414 126.692 28.876 128.504 30.869 128.469 c
-31.07 128.466 31.241 128.337 31.43 128.271 c
-33.236 127.644 33.801 135.659 36.52 131.877 c
-37.357 130.713 35.472 129.998 34.352 129.027 c
-32.998 127.852 31.57 126.178 30.902 127.547 c
-30.426 128.523 31.76 129.221 33.229 129.376 c
-35.686 129.634 38.573 130.416 39.265 128.223 c
-39.719 126.783 38.172 124.912 39.503 123.821 c
-40.521 122.987 41.878 124.043 43.087 123.82 c
-50.266 122.493 43.544 109.815 37.007 117.326 c
-36.107 118.36 35.854 119.757 35.449 121.061 c
-35.087 122.228 34.984 123.565 35.991 123.882 c
-41.569 125.642 34.495 119.084 34.625 116.482 c
-34.676 115.464 35.591 114.797 36.523 114.328 c
-38.567 113.3 40.992 112.809 42.753 114.175 c
-43.286 114.588 43.826 115.148 44.447 114.916 c
-45.834 114.4 44.518 112.749 43.302 111.293 c
-40.589 108.045 45.184 104.249 50.895 102.58 c
-51.9 102.287 52.911 101.916 53.957 102.016 c
-60.451 102.633 59.062 111.363 53.919 110.619 c
-52.544 110.42 51.696 109.16 51.056 107.906 c
-50.926 107.651 50.798 107.381 50.842 107.098 c
-51.135 105.169 53.343 107.228 54.869 107.238 c
-55.719 107.245 56.382 106.492 57.227 106.446 c
-58.18 106.393 59.232 107.238 59.975 106.525 c
-60.547 105.978 60.233 104.722 61.114 104.513 c
-61.985 104.306 62.565 105.504 62.047 106.711 c
-60.645 109.973 57.432 113.448 60.316 115.327 c
-61.048 115.804 61.993 115.768 62.764 116.172 c
-64.147 116.896 64.478 118.618 65.401 119.845 c
-68.597 124.093 74.007 120.8 72.626 117.428 c
-71.581 114.877 67.197 116.267 66.214 113.651 c
-65.741 112.393 66.474 110.521 65.087 109.997 c
-64.746 109.868 64.363 109.929 64.016 109.816 c
-59.876 108.471 65.879 104.695 65.261 102.561 c
-64.694 100.601 62.07 100.871 59.785 101.662 c
-57.247 102.541 55.086 101.074 55.788 99.567 c
-56.336 98.391 59.765 98.099 58.297 96.526 c
-57.257 95.413 54.866 100.183 53.997 97.356 c
-53.724 96.469 55.055 95.81 56.385 96.565 c
-58.097 97.538 59.487 98.981 61.158 100.02 c
-63.567 101.519 66.178 103.379 64.984 105.559 c
-63.712 107.881 59.525 110.384 62.569 111.038 c
-63.67 111.274 65.286 108.808 66.049 110.488 c
-66.568 111.632 64.097 112.167 64.716 113.337 c
-65.612 115.028 69 112.47 66.276 110.062 c
-65.855 109.69 65.363 109.382 65.081 108.895 c
-64.273 107.501 65.539 105.763 64.86 104.328 c
-63.729 101.939 59.749 103.471 58.534 101.181 c
-57.153 98.576 60.462 95.84 62.934 97.853 c
-64.313 98.975 63.973 101.105 64.974 102.521 c
-65.909 103.843 66.402 105.374 65.29 105.521 c
-61.646 106.001 66.4 101.082 64.564 100.579 c
-63.51 100.29 62.656 101.915 63.822 103.227 c
-64.563 104.061 65.765 104.223 66.206 103.42 c
-68.152 99.88 61.826 101.992 61.159 100.535 c
-60.308 98.679 63.194 98.323 64.968 97.283 c
-67.282 95.926 69.223 91.848 70.999 94.282 c
-72.353 96.14 69.444 97.797 65.948 98.025 c
-64.44 98.123 62.991 98.67 61.481 98.712 c
-58.142 98.806 55.195 96.452 55.328 93.286 c
-55.383 91.962 56.471 91.111 57.231 91.68 c
-57.924 92.2 57.321 93.404 58.013 93.925 c
-60.343 95.678 62.347 89.798 57.667 89.76 c
-56.07 89.747 54.754 90.823 53.684 92.021 c
-52.341 93.527 51.582 95.591 52.902 96.786 c
-53.803 97.6 55.322 97.318 56.126 98.252 c
-56.82 99.058 56.616 100.295 55.692 100.795 c
-53.288 102.095 50.848 98.496 53.417 96.536 c
-55.123 95.235 59.369 95.89 58.313 93.304 c
-57.742 91.904 55.852 92.569 54.232 93.39 c
-53.436 93.793 52.535 94.057 51.965 94.749 c
-51.485 95.33 51.339 96.112 50.909 96.729 c
-50.055 97.955 48.451 98.266 46.942 98.074 c
-42.929 97.562 38.971 98.304 39.918 100.955 c
-41.016 104.029 41.887 108.346 39.914 106.129 c
-39.573 105.746 39.314 105.076 38.968 105.428 c
-38.445 105.962 39.642 106.194 39.64 106.622 c
-39.633 107.796 38.372 106.389 37.607 106.362 c
-34.121 106.238 37.678 112.266 40.683 108.696 c
-42.059 107.061 41.846 104.731 42.488 102.719 c
-42.885 101.476 43.623 100.296 43.488 98.989 c
-43.19 96.109 39.627 95.348 38.029 93.11 c
-37.14 91.864 37.514 90.304 38.626 90.262 c
-41.63 90.148 38.243 93.533 38.041 95.722 c
-37.605 100.463 43.536 96.724 48.609 92.646 c
-50.15 91.406 52.316 91.576 52.824 93.138 c
-54.054 96.925 48.062 95.43 45.702 97.132 c
-26.517 110.961 68.771 120.354 57.546 99.53 c
-57.23 98.945 56.706 98.485 56.056 98.352 c
-52.394 97.597 52.859 103.172 50.505 104.904 c
-47.245 107.303 43.061 103.657 44.934 100.197 c
-46.425 97.444 49.951 98.767 49.547 100.97 c
-49.276 102.452 47.222 102.859 46.012 101.524 c
-44.345 99.683 45.396 94.991 42.217 95.388 c
-40.119 95.65 40.497 98.416 39.988 100.472 c
-39.589 102.086 38.256 103.295 37.78 104.885 c
-37.147 106.996 38.054 109.194 39.589 110.809 c
-41.761 113.093 45.173 113.677 46.722 111.434 c
-48.786 108.445 44.994 105.607 42.102 102.883 c
-37.349 98.408 29.631 107.326 36.201 106.101 c
-36.569 106.032 36.852 105.708 37.23 105.695 c
-38.033 105.668 38.86 107.496 39.593 106.466 c
-40.068 105.798 38.992 105.011 37.557 105.4 c
-34.705 106.174 31.679 104.595 28.848 105.465 c
-23.5 107.11 19.951 103.754 22.411 102.371 c
-22.829 102.136 23.336 102.226 23.801 102.128 c
-24.749 101.928 25.39 101.043 25.3 100.077 c
-25.205 99.057 24.314 98.341 23.967 97.389 c
-22.9 94.462 26.116 91.998 28.449 93.684 c
-29.372 94.351 30.323 95.415 31.011 94.622 c
-32.037 93.437 29.807 92.518 27.118 93.172 c
-25.488 93.569 23.862 92.62 23.11 91.086 c
-21.785 88.384 19.798 86.18 18.72 87.92 c
-18.038 89.019 19.194 90.432 20.591 89.985 c
-24.668 88.679 19.415 84.372 20.027 81.753 c
-20.585 79.364 23.388 79.903 23.292 81.443 c
-23.235 82.354 22.047 82.706 21.04 82.165 c
-20.221 81.724 19.65 80.918 19.584 79.992 c
-19.149 73.853 28.925 74.275 27.837 80.569 c
-27.553 82.213 27.121 84.102 28.497 84.056 c
-30.126 84.002 29.229 81.632 30.137 80.844 c
-41.581 70.923 26.597 89.852 28.62 92.005 c
-30.78 94.304 33.165 90.134 32.835 84.702 c
-32.668 81.951 34.695 79.684 36.858 80.434 c
-38.111 80.869 39.168 82.474 40.368 81.688 c
-41.747 80.784 40.767 78.299 38.133 77.97 c
-37.108 77.842 36.068 77.92 35.04 77.812 c
-32.144 77.508 28.764 76.804 27.998 79.372 c
-27.528 80.948 28.848 82.412 30.27 81.977 c
-33.103 81.112 38.573 68.675 36.934 76.83 c
-36.903 76.982 36.83 77.122 36.796 77.274 c
-35.907 81.299 41.374 77.336 42.982 78.293 c
-47.979 81.267 38.534 86.86 32.399 79.352 c
-29.965 76.375 27.548 72.857 30.227 71.191 c
-32.263 69.925 35.372 72.691 37.091 70.576 c
-38.706 68.588 36.144 66.654 34.976 67.998 c
-33.521 69.674 36.977 70.536 36.994 71.981 c
-37.004 72.876 36.122 73.441 35.181 73.615 c
-31.144 74.362 27.395 76.017 29.357 78.039 c
-30.385 79.099 32.555 77.983 33.346 79.392 c
-35.17 82.645 29.193 81.974 28.286 83.883 c
-28.09 84.296 28.063 84.803 27.714 85.106 c
-26.926 85.789 25.629 85.075 25.612 83.79 c
-25.591 82.283 27.521 80.853 26.482 79.487 c
-25.595 78.32 23.04 79.391 22.634 77.665 c
-22.479 77.008 22.972 76.439 23.431 75.929 c
-27.703 71.177 23.962 66.011 20.993 67.582 c
-19.501 68.373 19.797 70.394 19.261 71.944 c
-18.563 73.967 16.431 75.019 15.277 76.794 c
-14.965 77.274 14.728 77.803 14.356 78.237 c
-12.189 80.764 8.544 78.886 5.254 77.957 c
-2.561 77.197 0.287 75.474 1.494 73.814 c
-3.41 71.18 5.36 75.667 7.792 77.434 c
-8.949 78.275 10.792 78.592 10.742 80.06 c
-10.641 83.01 6.092 81.153 5.114 83.125 c
-4.555 84.252 5.364 85.581 6.649 85.66 c
-9.277 85.822 9.886 78.832 13.31 81.214 c
-14.611 82.118 13.786 83.922 13.318 85.519 c
-12.488 88.355 14.323 91.08 16.679 90.569 c
-20.479 89.743 26.64 85.59 24.391 89.768 c
-24.123 90.266 23.504 90.41 23.103 90.798 c
-21.296 92.547 24.254 94.492 25.188 96.636 c
-25.537 97.436 25.485 98.391 24.796 98.853 c
-23.066 100.01 20.428 97.251 22.533 94.354 c
-25.719 89.969 29.966 95.315 27.08 96.549 c
-26.11 96.964 25.249 95.575 24.277 95.939 c
-18.838 97.977 28.251 99.65 28.506 101.418 c
-28.748 103.093 26.546 103.424 25.102 104.294 c
-23.575 105.214 22.025 106.916 20.891 105.644 c
-20.096 104.754 20.852 103.476 21.804 102.518 c
-24.602 99.702 27.799 101.556 26.944 103.263 c
-26.391 104.366 24.828 103.887 23.606 102.947 c
-22.925 102.424 22.382 101.666 22.859 101.117 c
-25.174 98.453 23.867 104.1 24.865 105.612 c
-28.524 111.164 29.57 99.918 31.968 100.665 c
-40.94 103.459 26.106 112.941 28.36 103.583 c
-28.423 103.323 28.606 103.106 28.86 103.021 c
-30.919 102.337 29.557 105.399 29.688 107.373 c
-29.8 109.068 32.912 110.332 31.541 112.069 c
-30.778 113.034 29.26 112.527 28.342 111.357 c
-21.63 102.796 34.211 97.146 36.227 103.494 c
-37.087 106.2 32.806 108.395 34.15 111.111 c
-35.212 113.257 38.415 112.917 39.049 110.529 c
-39.63 108.345 39.323 105.113 41.27 106.089 c
-42.944 106.927 40.83 108.678 40.208 110.332 c
-40.149 110.49 40.098 110.667 39.947 110.742 c
-37.028 112.195 41.113 107.764 39.664 107.774 c
-39.015 107.778 39.374 108.651 39.324 109.281 c
-38.913 114.439 36.694 107.01 36.839 102.3 c
-37.298 87.427 13.902 103.843 29.284 111.341 c
-32.415 112.867 35.871 111.128 39.25 110.415 c
-41.692 109.899 44.237 109.964 46.582 110.822 c
-48.465 111.512 50.139 112.693 51.325 114.311 c
-52.743 116.245 51.35 118.124 50.228 117.516 c
-48.106 116.367 51.887 114.347 50.933 113.132 c
-50.724 112.866 50.371 112.765 50.135 112.524 c
-45.346 107.633 56.197 110.602 57.217 108.897 c
-58.283 107.111 55.904 105.262 52.848 105.256 c
-50.514 105.252 47.973 104.899 47.029 102.853 c
-43.751 95.74 55.429 92.931 55.923 100.187 c
-55.996 101.268 55.392 102.234 55.011 103.242 c
-53.478 107.292 55.77 111.667 59.597 111.621 c
-60.797 111.606 61.888 111.032 62.895 110.381 c
-64.84 109.124 66.602 107.546 68.771 106.722 c
-70.688 105.994 72.775 105.916 74.75 105.378 c
-75.728 105.112 76.699 104.714 77.318 103.912 c
-79.542 101.031 75.989 97.821 75.409 94.485 c
-74.958 91.889 76.478 89.328 78.959 89.119 c
-80.708 88.971 82.276 90.187 82.599 91.917 c
-82.914 93.609 81.758 95.173 80.284 94.901 c
-79.112 94.685 78.672 93.383 78.37 92.182 c
-77.906 90.334 77.312 88.508 77.148 86.608 c
-76.775 82.289 78.537 77.609 76.076 73.944 c
-75.116 72.515 73.814 70.959 74.842 69.703 c
-77.768 66.129 84.298 73.514 77.272 76.983 c
-74.008 78.595 70.367 76.829 67.23 74.834 c
-66.105 74.118 64.991 73.384 63.823 72.74 c
-62.669 72.104 61.46 71.265 61.706 70.051 c
-61.955 68.821 63.436 68.594 64.574 68.066 c
-65.738 67.525 67.03 66.71 67.814 67.628 c
-69.373 69.454 65.922 70.124 63.125 70.981 c
-54.836 73.523 61.355 88.677 71.254 81.465 c
-72.838 80.311 74.616 80.473 74.481 81.625 c
-74.364 82.619 73.024 82.386 71.834 82.05 c
-67.989 80.963 65.605 85.425 68.113 87.589 c
-70.195 89.385 72.919 87.145 71.836 85.145 c
-71.611 84.731 71.181 84.457 70.718 84.511 c
-64.27 85.261 74.508 88.378 75.638 90.965 c
-76.091 92.001 75.458 93.095 74.791 94.038 c
-73.169 96.333 71.285 98.662 68.517 99.074 c
-65.307 99.552 62.431 97.136 62.911 94.171 c
-63.465 90.749 67.818 89.429 70.735 91.889 c
-74.209 94.818 73.222 100.437 68.916 102.19 c
-67.664 102.7 66.12 102.866 65.545 104.102 c
-64.326 106.725 68.107 109.639 72.121 107.407 c
-74.912 105.855 77.884 103.377 80.113 105.456 c
-81.251 106.518 80.999 108.269 79.752 108.572 c
-78.18 108.953 77.817 106.777 76.739 105.752 c
-74.899 104.002 71.799 105.457 70.779 108.412 c
-70.233 109.994 70.306 111.801 71.529 112.884 c
-73.504 114.635 77.112 113.003 78.731 115.278 c
-79.047 115.723 79.197 116.264 79.156 116.808 c
-78.791 121.773 70.743 121.549 70.939 115.707 c
-71.066 111.887 75.588 111.789 75.981 114.272 c
-76.197 115.639 74.635 117.885 76.409 117.952 c
-78.115 118.017 76.419 113.578 78.77 114.317 c
-79.772 114.632 79.111 116.032 79.639 116.725 c
-81.578 119.272 83.268 113.763 85.01 114.777 c
-86.724 115.775 85.053 119.351 81.14 118.274 c
-79.492 117.82 78.173 116.579 78.828 115.37 c
-79.815 113.552 83.431 114.781 82.908 118.361 c
-82.784 119.208 82.462 120.023 81.888 120.659 c
-79.016 123.843 76.969 127.605 79.877 127.459 c
-81.551 127.375 81.327 118.257 84.623 122.711 c
-86.799 125.651 77.781 124.633 80.159 127.657 c
-80.908 128.609 82.64 127.901 82.645 126.244 c
-82.654 123.395 78.978 123.049 75.756 122.813 c
-73.836 122.673 71.943 122.039 70.62 120.645 c
-67.992 117.877 65.368 113.974 63.181 116.507 c
-61.988 117.89 62.92 120.039 64.745 120.113 c
-S
-0 1 0 rg
-398.5 312 m
-398.5 312.398 398.342 312.779 398.061 313.061 c
-397.779 313.342 397.398 313.5 397 313.5 c
-396.602 313.5 396.221 313.342 395.939 313.061 c
-395.658 312.779 395.5 312.398 395.5 312 c
-395.5 311.602 395.658 311.221 395.939 310.939 c
-396.221 310.658 396.602 310.5 397 310.5 c
-397.398 310.5 397.779 310.658 398.061 310.939 c
-398.342 311.221 398.5 311.602 398.5 312 c
-f
-1 0 0 rg
-66.245 120.113 m
-66.245 120.51 66.087 120.892 65.806 121.173 c
-65.525 121.455 65.143 121.613 64.745 121.613 c
-64.347 121.613 63.966 121.455 63.685 121.173 c
-63.403 120.892 63.245 120.51 63.245 120.113 c
-63.245 119.715 63.403 119.333 63.685 119.052 c
-63.966 118.771 64.347 118.613 64.745 118.613 c
-65.143 118.613 65.525 118.771 65.806 119.052 c
-66.087 119.333 66.245 119.715 66.245 120.113 c
-f
-0.556 0.556 1 RG
-397 312 m
-399.53 312.434 401.574 314.305 402.229 316.788 c
-403.587 321.939 398.647 325.604 395.418 323.171 c
-394.765 322.68 394.369 321.88 394.666 321.148 c
-395.357 319.442 397.835 320.507 399.018 319.416 c
-399.24 319.212 399.395 318.949 399.557 318.695 c
-402.495 314.091 408.258 314.03 409.303 317.705 c
-409.918 319.868 407.934 321.638 407.228 323.707 c
-406.613 325.508 405.661 327.334 404.354 326.577 c
-403.188 325.901 403.672 323.961 405.435 323.306 c
-406.461 322.925 407.597 322.973 408.63 322.61 c
-411.34 321.654 413.517 318.075 416.21 319.662 c
-416.988 320.121 417.602 321.048 418.505 320.842 c
-419.126 320.701 419.629 319.968 420.251 320.251 c
-420.577 320.399 420.689 320.781 420.924 321.044 c
-422.176 322.445 423.827 320.321 425.421 320.226 c
-426.402 320.168 427.299 320.884 428.275 320.722 c
-439.722 318.821 422.987 303.908 416.727 316.656 c
-415.003 320.167 409.571 316.468 413.098 315.847 c
-413.563 315.766 414.01 316.424 414.45 316.107 c
-415.129 315.619 414.08 314.306 412.456 315.139 c
-411.279 315.742 409.803 315.983 409.193 317.174 c
-408.814 317.913 408.926 318.841 408.427 319.513 c
-407.985 320.11 407.181 320.322 406.734 320.915 c
-405.592 322.428 407.734 325.803 405.231 326.399 c
-403.598 326.788 400.433 319.807 399.274 324.319 c
-398.962 325.536 407.093 329.639 401.514 329.345 c
-400.575 329.296 400.619 326.915 399.348 327.542 c
-398.917 327.755 398.996 328.344 398.766 328.741 c
-397.764 330.47 396.169 327.938 394.543 327.267 c
-393.279 326.746 391.936 327.712 390.614 327.491 c
-388.619 327.158 387.637 324.35 385.5 324.626 c
-385.181 324.668 384.868 324.794 384.548 324.744 c
-383.031 324.507 382.976 322.108 384.811 321.784 c
-388.844 321.075 388.563 327.693 384.564 326.615 c
-384.036 326.473 383.582 326.021 383.032 326.121 c
-381.729 326.359 382.292 329.142 380.654 328.952 c
-377.795 328.62 381.322 325.515 380.73 324.246 c
-376.939 316.116 380.074 330.284 378.288 334.087 c
-378.053 334.585 377.588 334.994 377.589 335.552 c
-377.593 338.554 380.887 335.595 383.545 332.576 c
-385.465 330.396 387.874 332.698 386.812 334 c
-385.958 335.046 384.447 333.456 383.492 334.154 c
-383.354 334.255 383.251 334.395 383.15 334.533 c
-381.07 337.357 378.714 340.015 375.715 341.841 c
-370.338 345.114 365.642 340.972 367.485 338.036 c
-368.544 336.348 370.954 336.822 372.91 337.926 c
-374.241 338.678 375.52 339.517 376.786 340.375 c
-378.4 341.468 380.045 342.813 379.994 344.726 c
-379.967 345.759 379.391 346.662 378.888 347.561 c
-377.742 349.61 375.601 349.604 375.515 348.363 c
-375.444 347.346 382.31 345.08 377.899 344.681 c
-376.951 344.595 377.564 348.64 375.787 347.047 c
-375.553 346.837 375.631 346.485 375.604 346.175 c
-375.518 345.185 374.415 344.771 373.795 344.029 c
-372.282 342.219 373.943 339.479 372.774 337.512 c
-371.45 335.285 368.15 335.534 367.176 337.933 c
-365.548 341.945 371.644 346.047 377.461 341.937 c
-382.821 338.149 387.357 341.964 385.25 344.137 c
-384.946 344.451 384.512 344.587 384.075 344.596 c
-382.53 344.626 381.481 343.191 382.148 342.061 c
-383.331 340.058 387.144 342.129 386.434 346.874 c
-385.897 350.462 389.936 350.581 389.608 348.769 c
-389.576 348.593 389.464 348.447 389.358 348.303 c
-387.335 345.543 386.761 341.401 383.385 340.409 c
-379.879 339.378 377.011 342.878 373.532 343.334 c
-371.118 343.651 368.752 342.507 367.444 340.449 c
-366.365 338.752 366.336 336.531 367.9 335.544 c
-370.348 333.998 378.254 338.375 376.646 333.059 c
-376.56 332.776 376.373 332.523 376.09 332.447 c
-375.8 332.369 375.51 332.503 375.27 332.685 c
-373.003 334.408 374.983 339.166 371.801 340.114 c
-369.261 340.871 366.49 341.896 368.217 342.908 c
-369.036 343.388 369.653 342.297 370.309 341.512 c
-371.87 339.644 374.061 341.351 373.309 342.611 c
-372.806 343.455 371.622 342.809 370.814 343.152 c
-369.817 343.577 368.757 344.939 368.318 343.872 c
-368.122 343.395 368.601 342.957 369.171 342.771 c
-371.895 341.885 374.8 343.302 376.135 345.887 c
-376.506 346.604 376.733 347.383 376.927 348.166 c
-377.472 350.363 377.764 352.613 378.142 354.844 c
-378.935 359.518 381.472 364.005 385.504 363.224 c
-388.499 362.643 389.038 359.221 387.026 358.323 c
-385.184 357.501 381.165 362.746 380.291 358.799 c
-378.558 350.966 388.335 360.822 389.446 358.13 c
-389.836 357.187 388.961 355.951 389.747 355.175 c
-390.987 353.95 393.039 356.013 392.474 359.245 c
-391.664 363.87 392.957 369.729 388.529 371.451 c
-387.589 371.816 386.554 371.807 385.581 372.066 c
-382.9 372.781 381.069 375.289 381.463 377.998 c
-381.89 380.937 385.021 381.317 385.591 379.605 c
-385.95 378.526 384.846 377.502 383.691 377.902 c
-381.931 378.513 382.683 380.827 382.842 382.777 c
-383.402 389.666 388.826 393.374 388.963 389.289 c
-389.031 387.24 385.184 387.516 385.365 385.399 c
-386.355 373.823 391.879 391.809 394.197 391.427 c
-395.503 391.211 396.346 389.312 397.727 389.861 c
-398.07 389.997 398.323 390.304 398.676 390.413 c
-401.493 391.285 399.978 386.846 401.183 385.453 c
-404.633 381.466 410.215 389.236 404.093 391.289 c
-403.407 391.519 402.64 391.41 402.128 390.906 c
-400.085 388.891 397.798 384.571 397.627 387.726 c
-397.591 388.378 398.285 388.744 398.984 388.888 c
-400.158 389.129 401.45 388.911 401.716 387.871 c
-402.384 385.248 398.221 385.991 397.189 384.424 c
-396.467 383.328 397.069 381.288 395.585 380.994 c
-393.669 380.615 394.132 383.38 393.848 385.452 c
-392.49 395.386 378.5 387.219 385.698 381.519 c
-387.078 380.427 388.907 381.351 388.7 382.733 c
-388.395 384.777 385.192 384.456 385.378 382.188 c
-385.559 379.975 388.759 380.804 389.943 379.435 c
-391.567 377.556 388.511 374.364 390.562 372.628 c
-395.508 368.44 399.834 379.279 392.322 379.413 c
-389.989 379.454 389.108 376.767 388.15 374.527 c
-386.891 371.578 384.19 369.32 381.298 370.15 c
-380.488 370.382 379.616 370.828 378.963 370.306 c
-377.477 369.119 380.048 366.977 378.88 365.719 c
-376.338 362.982 375.064 369.338 372.997 368.652 c
-370.939 367.969 372.631 365.414 372.889 363.308 c
-373.585 357.619 365.059 356.314 364.042 362.096 c
-363.882 363.003 364.163 363.958 364.936 364.43 c
-368.093 366.358 368.713 361.036 369.564 356.538 c
-370.738 350.328 379.102 349.096 382.028 354.715 c
-382.145 354.941 382.246 355.175 382.351 355.407 c
-382.521 355.783 382.713 356.163 383.052 356.399 c
-384.018 357.071 385.314 356.397 385.912 355.217 c
-386.221 354.609 386.477 353.87 387.145 353.794 c
-389.448 353.531 385.001 363.731 389.916 359.713 c
-390.014 359.633 390.087 359.526 390.169 359.429 c
-392.084 357.159 396.307 359.115 396.005 363.216 c
-395.851 365.299 394.422 367.115 392.398 367.277 c
-388.375 367.598 387.167 362.687 390.053 361.364 c
-392.187 360.387 394.032 363.239 396.19 362.815 c
-396.872 362.681 397.443 362.231 397.798 361.631 c
-399.264 359.158 396.727 356.132 397.879 353.568 c
-398.845 351.42 401.627 350.88 403.163 352.557 c
-403.41 352.827 403.598 353.157 403.595 353.522 c
-403.586 354.488 402.405 354.934 402.183 355.839 c
-401.038 360.505 406.643 355.929 411.078 353.092 c
-413.534 351.521 417.294 353.858 419.346 351.496 c
-421.43 349.097 417.717 341.749 422.858 342.239 c
-424.048 342.352 424.817 343.491 424.874 344.735 c
-425.041 348.417 423.56 353.431 426.92 352.433 c
-428.31 352.021 428.369 350.24 428.122 348.652 c
-427.87 347.036 427.718 345.402 427.31 343.818 c
-426.835 341.973 426.357 339.867 427.871 338.906 c
-428.301 338.633 428.818 338.562 429.311 338.438 c
-432.78 337.566 436.72 335.11 438.321 338.178 c
-441.071 343.445 432.656 345.208 432.609 340.505 c
-432.588 338.285 449.017 334.125 438.659 332.946 c
-437.669 332.834 437.14 333.977 436.256 334.316 c
-434.481 334.995 433.239 332.896 432.428 330.846 c
-429.738 324.044 434.34 319.599 436.566 322.256 c
-437.611 323.504 436.734 325.437 434.946 326.002 c
-432.649 326.727 429.996 327.479 431.058 329.105 c
-434.511 334.393 435.21 320.743 438.387 324.2 c
-439.678 325.603 430.243 331.349 436.899 331.371 c
-437.883 331.375 438.09 330.122 438.778 329.51 c
-444.451 324.465 443.49 337.084 446.613 337.318 c
-448.616 337.468 451.62 335.526 451.701 337.882 c
-451.765 339.724 448.495 339.225 448.387 340.942 c
-448.331 341.842 449.285 342.449 450.066 342.014 c
-453.801 339.932 446.823 337.611 447.771 335.747 c
-448.812 333.702 451.161 336.14 453.048 336.117 c
-454.261 336.103 455.133 335.101 456.137 334.44 c
-457.241 333.714 458.677 333.507 459.472 334.446 c
-459.93 334.987 460.155 335.884 460.879 335.809 c
-461.799 335.713 462.035 334.289 460.935 333.677 c
-458.597 332.377 456.576 336.025 457.783 340.447 c
-458.693 343.78 458.09 347.518 455.116 348.687 c
-453.984 349.133 452.684 348.997 451.807 348.17 c
-451.523 347.903 451.299 347.568 450.961 347.37 c
-446.555 344.793 445.846 354.344 454.475 356.806 c
-456.696 357.44 459.248 358.081 459.939 356.167 c
-460.361 354.996 459.411 353.925 458.874 352.812 c
-457.476 349.914 454.734 349.673 454.794 351.256 c
-454.861 353.014 457.516 351.824 458.142 352.925 c
-458.491 353.539 458.014 354.348 458.407 354.943 c
-459.176 356.109 461.409 355.154 461.315 352.723 c
-460.743 338.094 441.899 346.259 448.692 353.596 c
-449.882 354.881 451.829 354.466 453.588 354.21 c
-455.453 353.939 457.497 354.204 458.29 355.817 c
-459.507 358.289 456.323 360.87 457.397 363.363 c
-458.324 365.514 461.257 365.72 463.437 364.212 c
-464.494 363.481 465.677 362.588 466.64 363.324 c
-467.502 363.984 467.296 365.353 466.256 365.846 c
-465.499 366.205 464.596 365.915 464.16 365.194 c
-463.112 363.463 465.426 361.497 464.606 359.724 c
-464.073 358.573 462.631 358.397 461.561 357.76 c
-458.976 356.223 458.706 352.648 460.462 349.971 c
-460.812 349.438 461.239 348.932 461.349 348.301 c
-461.608 346.807 460.077 345.643 460.086 344.158 c
-460.103 341.185 470.701 339.092 465.329 335.295 c
-464.173 334.478 462.566 335.258 462.48 336.682 c
-462.251 340.454 469.944 341.146 469.831 334.531 c
-469.78 331.557 471.64 329.75 472.649 331.01 c
-473.185 331.679 472.586 332.541 472.022 333.276 c
-470.141 335.729 470.054 339.1 471.703 341.725 c
-473.012 343.808 475.56 344.262 476.359 342.635 c
-477.356 340.604 474.36 339.741 472.565 338.325 c
-471.517 337.498 471.005 336.146 469.919 335.366 c
-465.313 332.059 460.712 327.563 465.069 327.692 c
-466.615 327.738 466.774 329.92 468.067 330.481 c
-469.518 331.111 470.762 329.638 471.87 328.375 c
-474.035 325.907 477.546 325.034 479.458 327.228 c
-480.136 328.005 481.04 328.544 481.395 327.88 c
-481.529 327.63 481.426 327.33 481.237 327.108 c
-480.42 326.144 478.969 326.611 477.778 327.311 c
-476.351 328.15 475.063 329.436 475.679 330.789 c
-476.401 332.375 480.634 332.422 479.269 334.731 c
-478.007 336.864 476.291 333.661 474.958 330.55 c
-473.974 328.252 470.542 327.743 470.077 325.186 c
-469.453 321.765 474.589 314.818 469.318 315.826 c
-468.27 316.026 467.838 317.213 466.963 317.775 c
-466.076 318.346 464.901 318.207 464.244 317.397 c
-462.658 315.441 465.162 313.245 467.56 311.476 c
-468.54 310.753 469.632 309.908 470.67 310.46 c
-473.212 311.814 471.061 316.601 467.29 314.716 c
-465.72 313.93 464.492 311.771 462.862 312.683 c
-460.027 314.267 463.237 320.43 468.679 317.095 c
-471.34 315.465 473.01 312.532 475.834 311.181 c
-480.786 308.814 482.888 304.506 479.888 303.755 c
-478.13 303.314 476.393 306.497 474.692 304.94 c
-472.793 303.202 476.247 300.074 481.205 302.156 c
-485.259 303.858 488.807 306.603 486.538 308.822 c
-485.864 309.482 484.85 309.501 483.942 309.728 c
-482.648 310.052 481.794 311.18 482.402 312.03 c
-485.996 317.051 485.497 306.927 487.207 306.821 c
-501.183 305.959 480.424 314.528 481.843 316.829 c
-483.472 319.471 488.332 316.801 486.049 313.114 c
-485.918 312.903 485.746 312.705 485.502 312.662 c
-473.866 310.602 492.433 314.791 490.057 317.383 c
-489.414 318.085 485.253 317.192 487.233 318.838 c
-487.523 319.08 487.915 318.849 488.257 318.64 c
-488.971 318.204 489.846 318.065 490.486 317.523 c
-491.045 317.049 491.345 316.339 491.301 315.608 c
-491.195 313.894 490.452 311.766 492.036 311.746 c
-492.836 311.736 493.249 312.763 494.041 312.787 c
-495.09 312.819 495.303 311.413 496.143 310.955 c
-497.881 310.008 500.007 312.518 498.636 315.457 c
-498.113 316.577 497.45 317.824 498.215 318.738 c
-501.644 322.834 505.887 314.726 500.432 314.261 c
-497.662 314.025 498.388 318.437 496.308 319.172 c
-493.682 320.1 491.91 316.085 493.916 311.82 c
-494.684 310.188 495.721 308.465 497.418 308.646 c
-500.427 308.967 500.646 313.31 497.624 313.933 c
-495.775 314.315 494.327 312.165 492.479 312.474 c
-476.265 315.18 500.366 334.509 498.062 317.782 c
-497.936 316.867 497.013 316.29 496.8 315.398 c
-496.105 312.494 501.139 310.647 504.928 314.882 c
-506.015 316.097 507.057 317.36 507.841 318.79 c
-508.779 320.501 510.009 322.317 511.64 321.682 c
-514.684 320.497 512.036 316.928 510.435 318.563 c
-509.497 319.521 511.204 320.561 511.159 321.629 c
-511.113 322.735 509.495 323.233 509.634 324.384 c
-509.7 324.932 510.212 325.308 510.69 325.119 c
-515.237 323.318 507.293 322.145 507.626 320.927 c
-507.912 319.883 509.473 320.033 510.55 321.173 c
-512.72 323.473 515.36 325.874 517.715 324.257 c
-518.293 323.86 518.7 323.218 519.367 322.987 c
-520.505 322.594 521.566 323.467 522.445 324.347 c
-524.167 326.072 526.38 327.615 528.372 326.497 c
-530.603 325.244 530.112 322.181 529.264 319.527 c
-528.478 317.069 527.117 314.554 524.828 314.966 c
-517.995 316.193 522.501 327.128 528.678 322.518 c
-529.102 322.201 529.427 321.757 529.51 321.234 c
-532.582 301.847 505.004 324.644 523.035 329.44 c
-524.008 329.698 525.1 329.601 525.911 330.213 c
-527.335 331.288 526.958 333.358 526.227 335.12 c
-525.802 336.143 525.903 337.285 526.743 337.35 c
-527.56 337.413 527.693 336.328 528.25 335.823 c
-532.785 331.711 529.252 340.91 530.134 344.866 c
-530.327 345.733 531.079 346.376 531.85 346.121 c
-533.091 345.71 532.676 344.01 531.884 342.573 c
-530.417 339.908 530.904 336.586 533.441 335.759 c
-535.402 335.12 538.3 336.547 539.135 334.375 c
-540.048 332.003 536.558 331.371 534.81 329.756 c
-533.431 328.483 532.936 325.997 530.95 326.019 c
-529.233 326.039 528.437 328.226 526.771 328.442 c
-525.045 328.665 523.705 326.946 524.041 325.089 c
-524.517 322.465 528.067 319.756 525.598 317.896 c
-524.299 316.917 522.689 318.057 521.13 318.404 c
-515.968 319.552 513.123 323.223 516.049 323.852 c
-518.254 324.326 517.508 314.867 521.289 318.83 c
-521.45 318.998 521.537 319.221 521.684 319.401 c
-522.165 319.993 523.078 319.965 523.611 320.501 c
-524.309 321.205 524.106 322.369 523.32 323.071 c
-519.419 326.553 516.898 319.131 513.073 317.461 c
-511.06 316.582 508.233 317.09 507.27 315.003 c
-506.783 313.945 506.97 312.39 505.788 312.085 c
-501.982 311.104 505.569 316.276 505.291 319.038 c
-505.097 320.961 502.841 321.486 502.094 320.145 c
-501.437 318.967 502.705 317.518 504.388 317.801 c
-506.607 318.174 509.302 320.303 509.944 318.036 c
-510.244 316.98 509.005 315.319 510.33 314.899 c
-511.456 314.541 512.148 316.329 511.057 318.114 c
-509.157 321.224 506.185 323.424 504.573 321.318 c
-504.042 320.625 504.24 319.671 504.95 319.534 c
-506.368 319.262 506.861 321.666 505.07 321.914 c
-503.027 322.197 502.707 319.126 504.715 318.968 c
-504.824 318.959 504.934 318.971 505.043 318.958 c
-506.63 318.776 505.599 316.66 506.036 315.407 c
-506.671 313.585 510.527 314.14 510.279 311.718 c
-510.128 310.246 506.463 309.061 508.346 307.547 c
-510.453 305.851 510.328 310.177 511.679 311.179 c
-512.805 312.014 514.209 310.921 515.529 311.019 c
-519.418 311.306 526.517 316.21 524.08 311.389 c
-523.398 310.04 521.473 310.966 520.353 310.237 c
-518.574 309.08 516.75 305.629 516.188 308.053 c
-516.082 308.508 516.442 308.921 516.452 309.38 c
-516.494 311.235 513.332 311.596 513.024 309.126 c
-512.95 308.527 513.197 307.863 512.828 307.368 c
-509.621 303.071 511.746 310.816 513.52 315.403 c
-514.985 319.192 509.433 321.31 508.011 317.709 c
-507.732 317.005 508.138 316.311 508.676 316.443 c
-509.237 316.581 509.049 317.346 509.322 317.786 c
-510.419 319.552 511.473 316.506 512.887 315.476 c
-513.745 314.852 514.866 315.268 515.914 315.363 c
-522.075 315.92 524.973 308.011 519.978 304.51 c
-518.03 303.145 514.893 302.581 515.315 300.199 c
-516.395 294.096 524.922 299.152 520.583 302.802 c
-519.701 303.545 518.12 303.087 517.506 304.149 c
-516.657 305.615 518.501 307.439 520.358 306.391 c
-520.465 306.331 520.566 306.261 520.68 306.216 c
-523.24 305.215 522.078 309.177 518.919 312.094 c
-517.927 313.009 517.74 314.544 516.685 315.395 c
-512.518 318.754 509.633 312.08 513.247 311.167 c
-513.758 311.038 514.295 311.26 514.555 311.718 c
-516.758 315.6 509.892 313.308 507.711 314.751 c
-504.772 316.696 505.997 336.971 501.811 325.316 c
-501.547 324.58 501.999 323.837 502.124 323.077 c
-502.453 321.065 500.708 319.551 499.211 318.12 c
-498.738 317.668 498.274 317.143 498.297 316.492 c
-498.353 314.928 500.851 312.459 498.645 312.429 c
-497.453 312.412 497.788 314.232 496.93 314.67 c
-494.626 315.846 495.853 304.228 492.28 309.707 c
-492.157 309.895 492.133 310.125 492.067 310.339 c
-491.55 312.011 489.311 312.341 487.674 311.151 c
-486.247 310.113 486.346 308.274 487.529 308.036 c
-488.211 307.898 488.707 308.531 489.225 309.002 c
-491.018 310.628 494.396 310.422 495.07 312.931 c
-495.51 314.567 494.094 316.391 495.066 317.876 c
-495.329 318.277 495.743 318.551 496.036 318.931 c
-500.092 324.189 490.519 327.939 489.77 322.021 c
-489.544 320.23 491.491 319.165 493.489 318.81 c
-495.458 318.46 497.62 318.792 498.002 320.524 c
-499.395 326.834 489.992 322.094 487.773 324.568 c
-487.336 325.056 486.939 325.725 486.318 325.566 c
-484.797 325.176 485.654 321.889 488.495 322.989 c
-491.54 324.167 491.603 327.973 489.191 328.752 c
-487.767 329.212 486.484 327.906 485.036 327.852 c
-482.196 327.746 479.578 333.097 476.886 330.324 c
-474.833 328.208 478.285 325.876 478.869 323.356 c
-479.196 321.944 478.593 320.511 477.54 319.499 c
-474.37 316.453 473.515 312.659 476.066 312.776 c
-476.968 312.817 477.519 313.753 477.072 314.465 c
-476.362 315.598 474.849 314.548 473.672 313.254 c
-468.883 307.986 463.415 314.737 466.796 317.413 c
-468.295 318.599 471.618 316.69 472.226 319.111 c
-473.719 325.062 464.61 319.479 463.718 322.222 c
-463.139 324.005 465.289 325.619 467.222 324.509 c
-468.33 323.873 469.074 322.353 470.378 322.667 c
-474.686 323.702 470.435 332.335 464.739 327.212 c
-464.307 326.823 463.896 326.359 463.317 326.279 c
-456.589 325.352 461.199 338.152 467.642 331.855 c
-469.765 329.781 469.137 326.238 466.59 324.389 c
-463.239 321.956 461.279 326.545 463.514 326.927 c
-463.87 326.988 464.199 326.763 464.389 326.448 c
-465.273 324.975 463.629 323.28 461.39 322.972 c
-456.014 322.232 454.451 327.507 457.031 328.653 c
-458.964 329.511 463.49 322.323 464.51 327.375 c
-465.031 329.957 461.269 328.665 459.038 329.291 c
-456.754 329.932 456.583 333.267 454.37 334.031 c
-452.642 334.627 450.963 333.21 449.181 333.281 c
-447.017 333.368 445.461 335.536 443.288 335.557 c
-442.229 335.567 441.565 334.695 442.02 334.123 c
-442.502 333.518 443.342 334.163 443.933 334.988 c
-444.072 335.182 444.233 335.381 444.221 335.62 c
-444.076 338.536 442.198 334.119 440.855 333.619 c
-439.457 333.098 438.208 335.226 439.791 336.467 c
-440.52 337.038 441.555 336.946 442.264 336.33 c
-443.097 335.606 443.433 334.215 444.585 334.143 c
-447.407 333.966 447.779 339.293 443.565 339.086 c
-437.417 338.784 439.505 330.176 444.275 331.954 c
-444.785 332.145 445.196 332.565 445.737 332.656 c
-448.565 333.136 449.97 327.304 444.475 326.038 c
-441.839 325.431 439.086 326.031 436.84 327.541 c
-436.07 328.058 435.438 328.855 435.823 329.605 c
-436.968 331.835 442.393 323.868 442.563 329.129 c
-442.587 329.875 441.785 330.263 441.006 330.467 c
-436.836 331.561 433.66 328.948 435.016 326.763 c
-436.465 324.427 439.376 326.593 438.173 328.254 c
-437.335 329.41 435.948 328.035 434.62 327.362 c
-432.499 326.286 430.28 328.134 430.992 330.035 c
-431.744 332.04 435.435 334.439 432.696 334.9 c
-429.59 335.422 433.192 329.287 430.317 329.615 c
-427.998 329.879 430.429 332.652 430.011 334.119 c
-429.389 336.297 426.618 334.749 424.397 334.63 c
-421.102 334.454 419.078 338.196 420.028 341.902 c
-420.57 344.016 421.918 345.986 421.58 348.164 c
-421.463 348.919 421.128 349.641 420.5 350.072 c
-418.322 351.565 416.196 348.892 413.89 347.687 c
-410.932 346.141 407.475 347.429 404.711 349.439 c
-403.706 350.17 402.781 351.176 403.123 352.308 c
-403.558 353.749 406.412 354.473 405.371 356.128 c
-404.642 357.286 402.964 356.437 401.815 355.007 c
-400.359 353.197 398.012 352.475 397.009 354.009 c
-395.991 355.565 397.963 357.301 397.514 358.961 c
-396.701 361.97 389.529 366.855 394.823 366.273 c
-395.093 366.243 395.379 366.108 395.605 366.266 c
-398.856 368.534 393.008 365.808 391.865 366.403 c
-390.839 366.936 392.071 368.11 392.078 369.068 c
-392.089 370.542 388.469 371.172 389.813 372.981 c
-390.631 374.082 392.756 373.078 392.571 370.784 c
-391.903 362.487 397.383 356.471 398.403 361.538 c
-398.64 362.715 397.66 364.493 399.031 364.718 c
-400.004 364.878 400.331 363.384 401.256 363.384 c
-408.596 363.378 397.797 368.652 398.892 370.027 c
-399.741 371.092 401.628 370.285 401.45 368.613 c
-401.209 366.349 398.262 366.334 397.975 368.162 c
-397.696 369.942 402.541 375.31 398.574 373.446 c
-397.987 373.17 398.097 372.193 397.458 371.985 c
-396.34 371.62 396.053 373.451 397.234 375.228 c
-398.345 376.898 398.524 379.712 400.609 379.472 c
-401.9 379.323 402.559 377.85 402.088 376.506 c
-401.168 373.877 397.647 373.43 396.118 375.74 c
-394.658 377.945 396.549 380.481 397.421 382.965 c
-398.292 385.447 397.946 388.128 397.979 390.748 c
-397.998 392.3 397.995 394.022 396.705 394.822 c
-392.813 397.236 387.476 389.634 394.421 385.451 c
-395.183 384.993 396.049 384.479 395.939 383.633 c
-395.466 380.013 391.633 384.549 389.891 383.945 c
-389.726 383.887 389.568 383.788 389.527 383.621 c
-389.36 382.943 390.371 383.165 390.976 382.951 c
-392.384 382.455 391.582 380.274 390.117 380.87 c
-389.192 381.245 389.584 382.581 388.97 383.246 c
-388.259 384.014 387.019 383.585 386.229 382.677 c
-382.214 378.063 388.855 374.671 389.912 377.921 c
-390.403 379.432 388.253 379.984 387.648 381.235 c
-387.033 382.508 388.031 383.863 389.201 383.551 c
-391.374 382.97 389.383 379.925 390.623 378.776 c
-391.187 378.254 392.025 378.365 392.785 378.298 c
-393.444 378.239 394.187 378.104 394.56 378.633 c
-395.976 380.641 391.412 382.832 390.764 379.01 c
-390.548 377.735 391.437 376.198 390.388 375.302 c
-389.727 374.739 388.789 374.999 387.928 375.143 c
-386.704 375.348 385.309 375.6 385.237 376.743 c
-385.045 379.81 388.727 377.153 391.896 374.718 c
-393.175 373.736 395.065 373.921 396.24 372.799 c
-396.49 372.56 396.691 372.27 396.788 371.938 c
-399.358 363.115 387.971 371.711 386.587 382.546 c
-386.456 383.572 386.151 384.726 386.95 385.353 c
-391.036 388.557 388.39 381.281 386.283 375.989 c
-385.975 375.214 386.001 374.291 385.419 373.68 c
-382.305 370.411 380.29 377.38 377.501 377.382 c
-375.268 377.385 374.276 374.368 372.067 374.275 c
-367.03 374.064 367.308 383.708 377.728 386.695 c
-378.812 387.005 379.928 387.481 380.308 388.528 c
-380.601 389.335 380.333 390.229 379.697 390.813 c
-378.763 391.67 377.101 392.114 377.414 393.384 c
-377.579 394.053 378.297 394.338 378.974 394.534 c
-384.835 396.234 388.08 391.484 385.717 389.48 c
-384.137 388.141 381.715 389.684 381.08 392.315 c
-380.206 395.937 378.351 399.271 376.13 397.712 c
-375.211 397.067 375.112 395.746 375.877 394.894 c
-376.312 394.41 376.956 394.195 377.48 393.815 c
-383.637 389.36 375.533 381.981 371.984 387.119 c
-370.848 388.764 372.038 390.93 373.87 390.749 c
-375.001 390.637 375.715 389.43 376.843 389.305 c
-379.649 388.994 379.535 392.927 378.887 396.55 c
-378.806 397.005 378.766 397.466 378.78 397.927 c
-378.846 400.144 380.21 402.181 382.314 402.318 c
-385.001 402.493 388.785 399.695 389.48 402.783 c
-390.165 405.824 385.423 406.816 384.861 403.574 c
-384.628 402.235 385.885 401.279 387.068 400.499 c
-389.967 398.586 392.565 395.895 392.358 392.496 c
-392.073 387.791 394.41 384.436 396.105 386.454 c
-396.805 387.287 396.465 389.242 397.796 389.054 c
-400.455 388.678 396.871 385.264 398.356 384.457 c
-399.544 383.812 400.153 385.733 401.231 385.91 c
-411.302 387.566 400.975 371.763 397.216 381.509 c
-396.756 382.703 397.533 383.949 397.499 385.205 c
-397.41 388.574 393.026 389.305 391.394 391.972 c
-386.741 399.581 373.717 402.205 379.948 396.386 c
-380.592 395.784 381.635 395.967 382.331 395.438 c
-389.721 389.821 372.415 383.316 373.114 395.242 c
-373.149 395.853 373.285 396.452 373.466 397.036 c
-373.94 398.562 374.727 400.045 374.572 401.645 c
-374.27 404.779 371.257 408.56 374.377 409.902 c
-376.467 410.802 378.533 408.521 377.42 406.474 c
-375.342 402.65 369.108 405.983 371.665 410.31 c
-372.523 411.762 374.289 411.368 374.29 410.296 c
-374.291 409.449 372.779 409.163 373.054 408.235 c
-374.188 404.399 374.616 410.922 376.02 412.316 c
-376.75 413.04 377.899 412.537 378.782 411.811 c
-385.996 405.884 394.082 407.638 392.946 412.559 c
-392.472 414.614 390.175 415.388 387.986 415.676 c
-386.178 415.914 384.36 416.706 384.632 418.232 c
-385.578 423.539 390.297 416.144 393.214 416.129 c
-393.683 416.127 394.134 416.278 394.548 416.497 c
-398.072 418.369 401.832 418.971 401.26 416.447 c
-401.016 415.374 399.659 415.029 398.931 415.856 c
-398.011 416.9 398.967 418.55 400.676 419.047 c
-402.33 419.527 404.066 419.172 405.769 418.961 c
-408.581 418.613 411.602 418.589 413.751 416.725 c
-416.11 414.679 418.913 414.396 418.852 416.251 c
-418.808 417.582 413.79 419.322 416.828 420.427 c
-417.743 420.76 418.283 419.501 418.189 418.137 c
-418.039 415.955 418.8 413.856 419.445 411.772 c
-420.291 409.038 420.947 406.245 421.89 403.543 c
-422.783 400.986 423.515 398.041 421.46 396.548 c
-418.894 394.684 416.069 397.636 413.133 398.256 c
-411.149 398.675 409.162 397.935 407.155 397.734 c
-405.374 397.555 403.412 397.724 402.126 396.466 c
-401.967 396.31 401.816 396.131 401.599 396.081 c
-399.14 395.515 400.482 400.471 404.039 398.864 c
-405.657 398.134 407.298 397.257 408.08 395.665 c
-409.62 392.529 411.609 389.42 413.076 391.506 c
-414.086 392.942 412.07 394.156 410.658 395.432 c
-410.252 395.8 409.929 396.247 409.555 396.646 c
-400.518 406.28 392.518 389.552 401.464 388.773 c
-403.302 388.613 404.274 390.668 405.852 391.461 c
-407.974 392.525 410.529 391.352 411.331 389.056 c
-411.521 388.513 411.592 387.928 411.873 387.424 c
-413.994 383.618 422.306 378.332 416.178 379.149 c
-414.034 379.435 417.094 387.898 412.503 385.342 c
-411.199 384.615 412.366 382.949 413.38 381.487 c
-414.331 380.114 414.339 378.298 413.404 376.913 c
-412.26 375.219 409.986 374.861 408.991 376.319 c
-407.38 378.677 410.514 381.196 412.376 379.286 c
-413.62 378.011 411.899 374.885 414.115 374.314 c
-419.095 373.029 409.637 389.932 417.821 384.056 c
-418.54 383.54 418.445 382.263 419.344 381.983 c
-420.986 381.47 422.376 384.626 419.455 386.181 c
-417.757 387.084 415.698 386.695 415.379 385.121 c
-414.675 381.648 419.731 383.323 422.827 382.532 c
-424.116 382.203 425.082 381.129 425.247 379.81 c
-425.803 375.376 419.654 372.767 416.079 376.903 c
-414.223 379.05 414.592 382.246 416.931 383.088 c
-420.055 384.215 423.016 380.368 420.949 376.904 c
-420.372 375.936 419.416 375.219 419.007 374.164 c
-418.243 372.19 419.653 369.807 418.421 368.008 c
-416.847 365.711 411.757 364.202 414.473 362.1 c
-414.735 361.897 415.063 361.814 415.362 361.674 c
-415.962 361.392 416.425 360.896 416.754 360.321 c
-417.632 358.788 417.533 356.896 416.597 355.392 c
-415.103 352.989 412.068 352.144 409.314 352.971 c
-407.861 353.408 406.189 353.831 405.635 352.589 c
-404.742 350.589 408.13 349.148 411.67 351.385 c
-412.838 352.124 414.166 352.648 415.538 352.492 c
-416.313 352.404 417.149 352.131 417.763 352.615 c
-418.297 353.036 418.313 353.79 418.561 354.413 c
-418.695 354.751 418.902 355.052 419.149 355.317 c
-420.539 356.802 422.74 356.864 424.676 357.425 c
-424.902 357.491 425.053 357.676 424.94 357.803 c
-424.788 357.975 424.501 357.718 424.555 357.286 c
-425.97 345.928 415.972 361.825 413.102 361.103 c
-412.676 360.995 412.289 360.734 412.152 360.32 c
-411.093 357.121 417.426 357.661 418.258 363.811 c
-418.274 363.928 418.293 364.046 418.284 364.164 c
-417.381 376.569 408.587 357.1 417.544 358.055 c
-418.732 358.182 419.927 358.74 421.05 358.295 c
-423.231 357.431 424.52 352.515 426.855 354.818 c
-427.996 355.943 426.72 357.563 425.596 358.966 c
-424.109 360.821 423.314 363.57 420.913 363.887 c
-419.281 364.102 417.784 362.853 416.154 363.087 c
-415.455 363.188 414.798 363.565 414.092 363.484 c
-411.252 363.16 412.345 357.045 408.843 357.608 c
-406.563 357.975 407.153 362.606 404.409 362.288 c
-403.331 362.162 402.868 361.005 402.402 360 c
-400.93 356.824 397.758 354.574 397.008 351.123 c
-396.149 347.169 394.328 343.502 392.088 345.285 c
-390.555 346.506 392.229 349.831 389.985 350.525 c
-386.846 351.494 387.94 346.542 386.42 344.682 c
-384.636 342.497 381.148 344.083 379.305 347.24 c
-378.503 348.615 378.118 350.316 379.287 351.138 c
-385.098 355.224 387.439 342.41 379.625 344.539 c
-376.943 345.269 373.843 346.1 374.748 344.128 c
-375.097 343.369 376.809 343.457 376.531 342.38 c
-376.003 340.332 372.484 345.359 372.269 342.478 c
-372.237 342.054 372.652 341.78 373.079 341.632 c
-375.662 340.733 378.865 340.027 378.101 337.729 c
-377.827 336.905 376.98 336.5 376.256 336.026 c
-375.276 335.384 374.25 334.535 373.188 334.989 c
-369.267 336.665 373.515 343.914 378.032 339.47 c
-381.29 336.264 377.581 331.715 374.483 333.582 c
-372.575 334.732 372.983 339.554 370.016 338.563 c
-368.611 338.093 366.975 336.141 366.585 337.758 c
-366.501 338.106 366.739 338.461 366.646 338.808 c
-365.764 342.123 364.014 336.741 362.692 336.536 c
-360.989 336.273 360.949 339.727 359.133 339.237 c
-357.901 338.905 358.05 337.059 359.4 335.799 c
-361.332 333.995 362.565 331.526 360.838 330.445 c
-359.955 329.892 358.442 330.263 358.124 329.156 c
-355.037 318.379 365.446 333.682 366.893 331.172 c
-367.596 329.951 364.437 325.51 367.614 326.458 c
-368.699 326.782 367.926 328.182 368.063 329.201 c
-368.779 334.546 378.515 329.113 373.368 320.995 c
-372.721 319.973 372.083 318.876 370.977 318.379 c
-368.985 317.485 366.764 318.766 365.703 320.824 c
-364.37 323.412 363.787 327.085 360.945 326.752 c
-359.837 326.622 358.878 325.636 357.769 325.937 c
-355.595 326.527 356.681 329.501 355.704 331.197 c
-353.795 334.509 349.066 331.304 346.362 333.154 c
-343.804 334.904 344.691 340.125 341.11 340.525 c
-340.877 340.551 340.641 340.54 340.409 340.506 c
-337.327 340.065 335.826 336.701 336.019 333.354 c
-336.101 331.942 336.418 330.505 335.99 329.15 c
-335.305 326.983 334.443 324.513 336.306 324.247 c
-337.532 324.072 338.021 325.581 338.969 326.264 c
-339.642 326.748 340.53 326.793 341.278 326.428 c
-343.743 325.225 342.872 321.51 344.861 319.84 c
-352.809 313.169 355.928 330.033 347.746 326.397 c
-346.874 326.01 346.736 324.936 346.486 324.01 c
-345.72 321.183 343.037 319.192 342.571 316.282 c
-341.84 311.719 346.415 308.816 349.233 311.166 c
-350.359 312.105 350.225 313.719 349.123 314.003 c
-346.604 314.653 348.293 311.074 348.435 308.489 c
-348.6 305.501 343.613 299.946 348.195 300.579 c
-348.808 300.664 349.494 301.144 349.871 300.63 c
-350.334 299.998 349.444 299.018 348.219 299.457 c
-344.462 300.804 344.563 306.376 348.704 307.828 c
-350.928 308.608 353.373 307.445 353.968 305.212 c
-354.655 302.635 352.541 300.426 350.348 298.723 c
-348.01 296.908 344.989 296.604 344.381 298.719 c
-344.218 299.288 344.379 299.88 344.581 300.436 c
-345.637 303.341 347.788 305.931 347.659 309.049 c
-347.636 309.597 347.538 310.143 347.583 310.691 c
-347.678 311.848 348.366 312.852 349.305 313.538 c
-355.51 318.076 361.387 310.303 357.231 306.473 c
-356.474 305.775 355.406 305.549 354.399 305.778 c
-348.321 307.162 349.121 316.725 356.265 316.931 c
-359.513 317.025 361.974 314.081 361.012 311.148 c
-359.894 307.739 354.999 307.69 353.434 304.577 c
-352.228 302.177 353.569 298.702 351.22 297.058 c
-347.386 294.377 344.086 299.681 347.123 301.693 c
-348.796 302.8 350.498 300.78 352.335 300.545 c
-354.811 300.229 356.305 302.772 358.226 304.307 c
-359.205 305.089 360.401 305.89 360.155 307.081 c
-359.751 309.036 355.418 312.047 358.664 312.037 c
-360.19 312.033 359.316 309.924 359.838 308.82 c
-359.942 308.599 360.108 308.417 360.258 308.224 c
-362.225 305.679 361.156 301.702 363.5 299.419 c
-364.91 298.046 366.826 296.634 365.643 295.332 c
-364.581 294.162 362.628 295.311 361.946 297.435 c
-361.755 298.031 361.595 298.645 361.253 299.169 c
-359.033 302.575 354.753 299.923 355.989 297.337 c
-356.494 296.281 358.162 296.089 358.321 294.857 c
-358.394 294.296 358.065 293.777 357.591 293.456 c
-354.738 291.52 352.08 296.008 349.157 295.385 c
-347.883 295.113 346.971 293.99 346.965 292.686 c
-346.963 292.221 346.942 291.691 346.524 291.613 c
-345.996 291.513 345.884 292.217 345.672 292.747 c
-343.387 298.447 335.788 288.905 343.631 283.537 c
-345.568 282.212 344.72 280.146 343.638 280.494 c
-343.09 280.669 343.049 281.376 343.215 282.001 c
-343.924 284.665 345.688 287.324 344.47 289.835 c
-343.088 292.683 339.185 293.116 336.962 290.7 c
-335.548 289.163 335.375 286.798 333.837 285.37 c
-333.448 285.009 332.989 284.731 332.496 284.534 c
-331.596 284.174 330.593 284.086 329.76 283.584 c
-326.981 281.907 327.886 277.594 325.462 275.576 c
-325.033 275.219 324.498 274.967 323.959 275.096 c
-323 275.325 322.649 276.444 322.818 277.498 c
-322.957 278.366 323.457 279.187 324.283 279.217 c
-326.014 279.28 326.036 275.923 327.927 276.303 c
-337.367 278.198 321.247 282.268 323.461 284.63 c
-324.61 285.856 326.134 284.181 327.662 283.57 c
-329.281 282.924 331.664 283.587 332.269 281.814 c
-332.74 280.432 331.387 279.158 330.101 279.722 c
-327.423 280.897 329.426 285.404 332.577 283.71 c
-334.268 282.801 333.739 280.488 334.266 278.711 c
-334.409 278.228 334.689 277.758 335.174 277.683 c
-337.223 277.367 335.761 280.076 334.846 282.393 c
-333.705 285.283 336.342 292.531 332.393 289.859 c
-331.111 288.993 332.162 287.193 333.582 285.83 c
-336.947 282.599 340.424 285.443 338.784 286.891 c
-338.185 287.42 337.352 286.933 336.609 286.542 c
-334.111 285.227 332.331 287.565 333.409 288.687 c
-334.546 289.87 335.767 287.744 337.053 287.694 c
-339.348 287.605 338.867 290.798 338.018 293.702 c
-337.88 294.173 337.8 294.675 337.494 295.061 c
-334.887 298.36 332.519 292.103 329.885 292.057 c
-327.703 292.019 325.845 295.544 323.728 293.9 c
-323.176 293.472 322.98 292.74 323.137 292.053 c
-323.282 291.416 323.706 290.894 324.173 290.437 c
-324.848 289.778 325.653 289.114 325.601 288.177 c
-325.39 284.403 320.154 287.49 318.435 285.752 c
-317.484 284.79 317.818 283.3 317.819 281.953 c
-317.824 276.044 311.318 274.444 309.538 278.034 c
-308.969 279.183 309.357 280.513 310.001 281.64 c
-310.303 282.169 310.663 282.697 310.656 283.308 c
-310.644 284.507 309.419 285.143 308.494 285.906 c
-298.465 294.181 312.811 305.805 318.352 297 c
-321.028 292.749 325.496 292.033 324.584 294.707 c
-324.367 295.342 323.626 295.56 322.923 295.485 c
-321.676 295.352 320.592 294.502 320.44 293.285 c
-319.836 288.457 328.067 287.486 328.276 293.527 c
-328.313 294.585 327.825 295.563 327.232 296.439 c
-324.361 300.678 318.939 303.298 318.227 308.481 c
-318.04 309.844 319.001 310.81 319.731 310.314 c
-321.071 309.404 318.715 308.63 317.719 307.538 c
-316.319 306.004 320.634 301.997 317.249 301.128 c
-315.004 300.552 313.737 304.511 316.901 305.371 c
-319.787 306.157 322.201 300.435 325.177 302.809 c
-328.034 305.087 324.608 309.645 321.42 307.249 c
-317.377 304.21 324.419 299.709 322.723 296.385 c
-322.304 295.562 321.432 294.972 321.331 294.039 c
-321.212 292.938 322.15 291.53 321.066 290.956 c
-319.541 290.148 319.316 292.632 319.219 294.91 c
-319.112 297.403 315.687 299.014 316.464 301.599 c
-316.603 302.061 316.899 302.474 316.945 302.956 c
-317.064 304.196 315.57 305.141 315.902 306.386 c
-316.037 306.892 316.485 307.265 316.581 307.782 c
-317.014 310.09 313.567 309.734 310.327 307.949 c
-307.974 306.653 304.72 305.723 305.752 303.473 c
-306.229 302.432 307.789 302.109 307.886 300.904 c
-308.095 298.307 304.535 299.573 301.329 300.973 c
-300.259 301.44 298.896 301.522 298.387 302.592 c
-297.484 304.488 300.353 306.144 299.652 308.044 c
-299.035 309.718 295.64 309.75 296.103 311.927 c
-296.538 313.969 299.308 313.349 299.013 311.644 c
-298.817 310.512 297.127 310.351 296.031 311.544 c
-294.854 312.825 294.58 314.62 294.391 316.349 c
-293.604 323.532 285.958 322.196 287.261 318.866 c
-287.422 318.456 287.797 318.177 288.227 318.07 c
-291.334 317.293 292.474 321.752 289.618 322.574 c
-288.705 322.836 287.83 322.249 287.165 321.537 c
-284.507 318.687 283.318 313.864 279.288 313.71 c
-276.694 313.611 275.256 316.115 276.57 317.526 c
-278.135 319.207 280.094 316.739 281.926 314.809 c
-283.459 313.194 286.114 312.189 285.808 309.925 c
-285.53 307.866 282.686 307.16 282.452 305.086 c
-282.36 304.269 282.481 303.26 281.706 303.112 c
-280.353 302.855 279.668 305.503 281.979 305.952 c
-284.07 306.359 285.724 304.158 285.373 301.73 c
-285.245 300.848 284.808 299.985 283.967 299.808 c
-280.51 299.079 281.716 304.489 286.915 308.135 c
-289.202 309.738 289.554 312.872 287.505 314.118 c
-285.461 315.36 283.666 313.203 284.715 311.942 c
-285.313 311.224 286.487 311.503 287.022 312.429 c
-287.89 313.931 287.314 316.77 289.31 316.603 c
-291.525 316.417 290.281 313.147 291.654 312.147 c
-293.859 310.541 304.475 312.33 298.572 309.444 c
-297.744 309.04 296.753 310.177 295.969 309.571 c
-294.637 308.542 296.658 305.737 298.896 307.718 c
-300.161 308.838 300.231 310.777 299.153 312.114 c
-295.648 316.461 293.792 321.947 297.343 320.286 c
-298.251 319.861 298.356 318.277 299.476 318.29 c
-300.79 318.304 300.566 320.16 301.371 320.946 c
-306.26 325.722 305.489 312.001 309.432 314.308 c
-311.014 315.234 309.874 317.383 310.161 319.06 c
-310.397 320.44 311.666 321.403 312.905 320.974 c
-317.816 319.275 312.768 312.875 310.139 316.706 c
-309.904 317.049 309.854 317.483 309.978 317.88 c
-310.318 318.971 311.626 319.398 312.484 318.69 c
-313.593 317.777 313.079 315.929 311.551 315.591 c
-309.536 315.145 308.262 317.454 309.561 318.729 c
-311.813 320.94 312.935 316.335 314.952 314.196 c
-318.157 310.797 321.972 306.649 318.19 306.955 c
-316.775 307.069 316.813 308.906 316.596 310.407 c
-316.022 314.375 312.955 319.428 316.932 319.521 c
-319.872 319.589 319.451 314.401 322.301 314.327 c
-324.476 314.271 324.758 317.057 325.574 319.14 c
-326.8 322.27 330.049 325.539 327.338 327.53 c
-326.56 328.102 325.477 328.06 324.927 327.316 c
-322.954 324.646 332.313 322.47 328.281 319.467 c
-327.396 318.808 326.253 319.448 325.323 320.176 c
-323.428 321.66 322.784 323.962 324.318 324.613 c
-325.793 325.238 327.413 322.367 328.846 323.775 c
-330.877 325.771 325.616 327.424 326.964 329.324 c
-328.04 330.842 330.091 328.774 331.412 329.553 c
-332.777 330.358 332.212 332.391 330.718 332.371 c
-328.339 332.341 331.75 322.861 326.864 325.947 c
-325.64 326.72 326.892 328.312 326.705 329.564 c
-326.58 330.396 325.829 331.223 326.349 331.938 c
-329.097 335.723 333.053 327.437 327.142 327.513 c
-325.874 327.53 325.015 328.631 324.178 329.592 c
-321.756 332.372 318.45 334.237 316.04 337.027 c
-314.902 338.344 313.991 339.838 313.299 341.436 c
-312.133 344.131 312.828 347.111 315.059 347.151 c
-317.643 347.198 318.436 343.607 315.999 342.536 c
-314.364 341.817 312.889 343.363 311.519 344.616 c
-310.397 345.643 308.992 346.423 307.498 346.194 c
-306.359 346.02 305.104 345.361 304.319 346.212 c
-303.012 347.63 305.368 349.13 305.463 350.731 c
-306.109 361.567 287.191 352.058 298.011 344.132 c
-299.065 343.36 300.389 343.137 301.628 342.737 c
-306.963 341.012 308.833 347.612 305.466 346.933 c
-305.06 346.851 304.723 346.439 304.312 346.57 c
-303.448 346.846 304.154 347.924 304.897 348.86 c
-305.713 349.888 305.374 351.748 306.718 352.22 c
-309.156 353.076 309.045 349.198 310.607 347.929 c
-312.887 346.078 315.521 349.031 317.249 352.319 c
-320.662 358.813 327.379 355.108 325.764 351.911 c
-324.92 350.238 322.115 350.978 321.303 349.272 c
-320.488 347.558 322.416 346.148 323.549 347.174 c
-324.695 348.211 323.227 350.056 320.746 350.409 c
-319.08 350.646 317.38 351.369 317.199 352.941 c
-316.976 354.874 319.258 355.816 320.037 357.482 c
-320.779 359.07 320.04 361.036 320.953 362.55 c
-322.103 364.457 325.194 364.458 325.943 366.645 c
-326.358 367.854 325.713 369.179 326.081 370.4 c
-326.602 372.13 328.669 372.676 329.73 374.084 c
-331.214 376.054 330.398 378.683 329.641 381.068 c
-329.064 382.884 328.589 384.732 328.261 386.61 c
-328.035 387.905 327.879 389.226 328.125 390.519 c
-328.521 392.599 329.955 394.394 332.011 394.712 c
-333.996 395.019 334.91 393.146 333.96 392.424 c
-332.982 391.681 332.254 393.272 331.27 393.716 c
-329.743 394.404 326.684 393.906 327.759 395.579 c
-328.193 396.253 329.129 395.761 329.85 395.929 c
-331.667 396.352 330.714 398.797 331.36 400.296 c
-332.432 402.781 335.822 401.79 338.705 400.361 c
-342.315 398.571 343.274 395.037 341.069 394.38 c
-340.064 394.081 338.493 394.736 338.339 393.56 c
-338.176 392.315 340.255 391.777 340.769 393.417 c
-341.548 395.906 337.195 396.139 337.178 398.279 c
-337.172 399.069 337.814 399.877 337.357 400.568 c
-336.82 401.378 335.534 400.886 334.885 401.549 c
-333.324 403.143 336.435 404.091 339.155 404.977 c
-343.451 406.375 341.861 412.472 337.858 417.248 c
-335.79 419.716 336.103 422.878 338.229 423.019 c
-340.373 423.16 341.283 419.947 339.157 417.402 c
-338.112 416.151 336.589 416.49 336.659 417.407 c
-336.775 418.922 338.973 417.591 339.515 418.461 c
-340.094 419.388 338.669 419.913 337.863 420.664 c
-336.8 421.654 337.341 423.273 337.305 424.706 c
-337.252 426.777 335.883 428.475 334.494 430.013 c
-333.16 431.491 331.618 432.964 329.641 432.93 c
-319.535 432.756 326.835 418.67 331.078 425.526 c
-331.69 426.517 332.293 427.776 332.884 427.02 c
-333.252 426.549 332.66 426.005 331.974 425.676 c
-329.116 424.304 328.088 419.779 324.644 420.047 c
-321.619 420.282 320.221 425.027 316.964 424.223 c
-314.635 423.647 314.036 420.641 315.947 419.275 c
-318.169 417.687 320.67 420.389 323.159 420.202 c
-324.952 420.068 326.64 418.462 328.323 419.304 c
-329.045 419.664 329.455 420.4 329.826 421.116 c
-331.822 424.967 332.092 429.599 328.7 430.724 c
-327.374 431.165 325.905 430.65 325.277 429.422 c
-324.074 427.067 326.551 424.949 328.409 422.902 c
-331.415 419.589 330.193 415.088 327.145 415.133 c
-324.394 415.174 323.491 420.388 320.381 419.243 c
-318.317 418.483 318.957 415.748 319.368 413.38 c
-319.617 411.948 319.225 410.408 317.946 410.156 c
-316.25 409.823 314.977 411.93 316.022 413.799 c
-318.02 417.374 323.071 414.788 326.32 416.447 c
-329.968 418.309 328.304 422.602 325.851 422.073 c
-323.438 421.552 325.178 416.821 322.431 416.609 c
-320.944 416.495 320.545 418.347 319.678 419.528 c
-317.582 422.382 313.349 420.977 310.123 418.439 c
-308.075 416.827 306.438 414.492 307.781 412.623 c
-308.492 411.633 309.83 411.442 310.802 410.731 c
-312.624 409.398 313.804 406.346 315.954 407.415 c
-317.758 408.313 317.319 411.022 315.292 411.315 c
-312.039 411.784 311.023 406.728 314.618 405.931 c
-317.599 405.27 318.238 409.297 319.48 412.298 c
-319.53 412.42 319.585 412.542 319.666 412.647 c
-325.523 420.267 324.684 403.37 316.92 405.96 c
-315.755 406.348 314.57 406.862 313.971 407.932 c
-311.828 411.758 316.806 415.023 319.218 412.08 c
-320.889 410.043 317.257 404.79 321.213 404.214 c
-324.092 403.794 323.54 408.051 325.225 409.678 c
-326.475 410.885 328.519 410.636 329.462 409.169 c
-330.487 407.575 329.55 405.155 331.072 403.881 c
-331.576 403.46 332.295 403.367 332.672 403.837 c
-332.984 404.225 332.822 404.837 333.174 405.197 c
-334.334 406.388 335.418 404.029 334.602 401.138 c
-334.319 400.134 334.613 399.063 335.325 398.298 c
-336.542 396.989 338.905 396.314 338.479 394.487 c
-337.003 388.147 326.91 395.067 333.651 399.315 c
-336.51 401.116 338.935 397.394 341.237 394.415 c
-343.318 391.722 346.647 390.225 349.965 390.886 c
-351.265 391.145 352.663 391.006 352.653 389.96 c
-352.64 388.475 350.641 389.166 348.885 389.675 c
-348.199 389.874 347.421 389.781 346.834 390.201 c
-344.509 391.864 341.416 397.055 341.893 393.253 c
-342.027 392.177 348.503 390.298 344.414 389.932 c
-343.752 389.872 343.726 390.773 343.355 391.264 c
-341.896 393.197 339.369 388.924 337.9 390.736 c
-337.161 391.647 338.282 392.882 337.857 393.888 c
-336.842 396.29 332.244 392.352 331.504 395.38 c
-330.95 397.647 334.946 398.922 335.853 395.708 c
-336.238 394.344 335.397 392.966 334.07 392.366 c
-332.855 391.817 331.425 391.981 330.449 392.878 c
-329.384 393.858 328.397 395.402 327.283 394.598 c
-325.727 393.474 328.048 391.987 329.64 390.473 c
-330.462 389.691 330.899 388.37 332.061 388.269 c
-334.905 388.023 334.017 392.837 336.353 393.257 c
-338.946 393.723 339.249 389.068 341.772 389.376 c
-344.294 389.684 344.022 393.563 340.965 396.379 c
-339.147 398.053 337.581 399.993 335.658 401.548 c
-334.039 402.857 331.925 403.717 330.378 402.525 c
-327.549 400.344 328.381 386.974 323.751 393.642 c
-322.328 395.691 327.661 398.761 324.718 400.701 c
-322.782 401.976 321.818 398.851 320.66 396.433 c
-319.161 393.305 313.482 391.456 315.723 388.001 c
-316.472 386.845 318.077 386.642 318.937 385.58 c
-322.508 381.167 315.315 377.905 314.192 381.956 c
-313.454 384.619 318.148 384.783 318.112 387.12 c
-318.097 388.093 317.144 388.889 317.351 389.865 c
-317.781 391.896 320.563 390.992 322.938 389.384 c
-323.825 388.783 324.91 388.314 325.217 387.282 c
-325.93 384.883 321.854 383.324 322.863 380.889 c
-323.464 379.439 326.245 378.835 325.405 377.09 c
-324.7 375.622 322.173 376.139 321.999 378.333 c
-321.753 381.434 325.77 382.081 329.396 382.333 c
-333.212 382.597 336.745 384.368 339.408 387.115 c
-339.98 387.705 340.509 388.339 340.927 389.047 c
-341.935 390.756 342.282 392.86 343.727 394.239 c
-346.108 396.512 349.715 395.701 353.003 395.491 c
-355.675 395.32 358.588 395.565 360.549 393.728 c
-361.928 392.436 363.458 390.845 364.584 392.046 c
-365.351 392.864 364.615 394.295 365.401 395.102 c
-366.632 396.368 374.525 394.773 370.574 397.624 c
-370.462 397.705 370.328 397.747 370.207 397.813 c
-368.069 398.969 369.918 403.168 373.37 401.505 c
-375.398 400.528 375.641 397.943 376.808 396.075 c
-377.419 395.096 378.322 394.281 378.624 393.161 c
-378.823 392.426 378.759 391.582 379.293 391.026 c
-380.401 389.871 382.435 390.741 382.46 392.529 c
-382.481 394.015 380.954 394.851 380.164 396.066 c
-377.963 399.453 381.815 404.05 379.452 407.382 c
-378.676 408.476 377.285 409.008 376.233 408.31 c
-373.809 406.702 376.825 403.848 377.041 401.312 c
-377.161 399.904 376.315 398.55 376.575 397.154 c
-376.9 395.41 378.613 394.386 380.437 394.198 c
-385.791 393.643 389.532 390.662 386.998 388.787 c
-386.192 388.191 385.124 388.552 384.133 388.566 c
-381.519 388.601 379.481 386.308 379.878 383.741 c
-380.159 381.92 381.638 380.612 383.298 379.771 c
-385.145 378.833 387.408 378.662 388.417 380.265 c
-391.269 384.796 383.035 385.317 380.873 388.575 c
-378.866 391.6 381.456 395.243 384.432 394.318 c
-387.937 393.23 385.983 388.357 387.78 385.781 c
-388.872 384.216 390.916 383.867 392.591 382.993 c
-395.774 381.33 395.128 377.747 393.08 377.745 c
-390.933 377.744 391.479 382.307 388.98 381.777 c
-387.02 381.361 388.203 378.506 386.96 377.457 c
-384.496 375.378 383.272 379.921 382.893 384.524 c
-382.635 387.665 379.78 389.685 376.792 390.918 c
-371.055 393.286 367.968 388.054 370.426 386.31 c
-371.688 385.415 373.285 386.705 374.69 386.297 c
-377.541 385.469 376.233 381.933 374.266 382.573 c
-373.74 382.745 373.487 383.299 373.394 383.857 c
-373.048 385.931 374.315 387.796 375.398 389.596 c
-376.054 390.687 376.65 391.895 376.356 393.13 c
-375.679 395.978 373.974 399.444 376.539 399.046 c
-377.494 398.898 377.682 397.749 378.094 396.872 c
-378.856 395.251 380.679 394.563 382.49 394.386 c
-388.224 393.824 393.151 391.185 390.886 388.049 c
-388.758 385.103 380.752 391.53 380.138 385.558 c
-379.855 382.806 384.044 381.399 387.225 384.324 c
-388.356 385.363 389.226 386.79 388.674 388.161 c
-388.132 389.506 386.505 390.024 385.2 389.327 c
-383.826 388.592 383.5 386.897 382.758 385.547 c
-379.76 380.089 374.034 384.321 376.034 386.987 c
-377.149 388.473 379.195 386.916 380.794 387.298 c
-404.109 392.859 365.973 414.364 369.467 391.466 c
-369.577 390.748 369.9 390.061 370.51 389.672 c
-370.867 389.444 371.295 389.347 371.64 389.1 c
-378.653 384.095 364.553 385.142 361.273 381.997 c
-360.377 381.138 359.94 379.662 358.665 379.537 c
-356.63 379.336 355.988 382.911 353.854 382.399 c
-352.195 382 352.486 379.599 351.182 378.736 c
-349.367 377.535 347.564 379.716 346.167 381.832 c
-345.99 382.1 345.799 382.363 345.547 382.562 c
-343.746 383.98 340.463 381.25 339.042 383.549 c
-338.131 385.02 339.747 386.468 340.532 387.996 c
-341.209 389.316 341.148 390.939 342.023 392.147 c
-346.796 398.732 352.957 388.73 347.222 387.626 c
-345.545 387.303 342.607 392.227 341.66 388.841 c
-341.112 386.883 344.81 387.091 344.656 385.36 c
-344.583 384.549 343.683 384.234 342.92 383.895 c
-340.583 382.858 339.355 380.437 337.747 378.471 c
-336.348 376.76 336.409 374.664 337.803 374.617 c
-338.33 374.599 338.717 375.029 339.115 375.375 c
-340.131 376.259 341.339 377.248 340.655 378.244 c
-339.663 379.687 335.512 375.65 335.296 378.975 c
-335.191 380.592 348.862 379.32 340.86 382.487 c
-339.558 383.002 339.289 379.962 337.907 380.685 c
-336.522 381.41 338.235 384.405 340.835 382.553 c
-341.444 382.119 341.974 381.572 342.285 380.892 c
-342.756 379.863 342.656 378.638 341.85 377.869 c
-340.325 376.415 337.972 377.5 336.254 379.13 c
-333.06 382.161 336.003 385.437 337.532 384.068 c
-338.138 383.524 337.776 382.565 338.116 381.864 c
-338.926 380.192 341.488 378.13 339.383 378.149 c
-338.637 378.155 338.632 379.136 338.323 379.802 c
-337.522 381.528 335.086 380.54 333.643 381.441 c
-332.745 382.001 332.439 383.115 331.761 383.914 c
-328.397 387.876 326.773 392.726 330.021 391.55 c
-331.067 391.171 331.047 389.527 332.143 389.227 c
-336.099 388.141 333.262 394.383 335.088 395.268 c
-337.477 396.426 339.264 392.767 336.763 391.58 c
-334.795 390.646 333.857 393.45 332.569 395.361 c
-330.705 398.127 326.683 398.07 325.241 395.286 c
-324.319 393.506 325.212 391.341 324.529 389.475 c
-322.668 384.396 316.885 387.662 318.567 390.495 c
-318.951 391.142 319.776 391.295 320.368 391.741 c
-323.267 393.929 319.913 397.072 318.374 395.306 c
-317.716 394.552 318.302 393.332 319.467 393.115 c
-320.895 392.847 322.381 394.251 323.693 393.438 c
-327.396 391.142 322.314 386.836 320.726 390.237 c
-320.278 391.196 321.369 392.357 320.726 393.262 c
-319.971 394.325 317.785 393.156 317.293 394.597 c
-316.376 397.286 320.705 395.779 321.744 396.968 c
-322.614 397.962 321.755 399.357 320.736 400.433 c
-318.787 402.49 316.589 404.777 313.937 404.042 c
-309.408 402.786 310.715 397.012 314.177 397.372 c
-316.566 397.619 316.583 400.659 314.742 400.957 c
-312.482 401.322 313.456 398.104 313.193 395.812 c
-312.845 392.779 308.5 392.429 307.593 389.676 c
-305.546 383.469 315.361 380.646 316.884 387.344 c
-317.15 388.515 316.74 389.793 317.27 390.883 c
-318.389 393.189 322.364 392.56 323.139 395.143 c
-324.864 400.895 316.553 397.881 309.184 394.238 c
-306.771 393.045 303.36 392.981 302.746 390.291 c
-302.625 389.761 302.684 389.189 303.048 388.791 c
-303.899 387.858 305.368 388.436 306.397 389.462 c
-307.399 390.461 307.876 391.904 306.922 392.598 c
-305.716 393.475 299.491 387.563 300.807 392.627 c
-301.349 394.71 303.967 392.287 304.994 393.213 c
-306.481 394.553 302.843 396.935 304.693 398.232 c
-305.658 398.908 308.951 397.288 308.196 399.414 c
-308.079 399.743 307.717 399.896 307.357 399.873 c
-305.037 399.728 304.598 395.418 308.547 394.34 c
-309.608 394.051 310.791 394.093 311.505 394.897 c
-312.705 396.248 311.646 399.414 313.884 399.652 c
-315.549 399.83 316.212 396.955 317.96 397.445 c
-320.776 398.234 315.998 404.092 319.813 404.366 c
-321.451 404.483 321.643 402.202 320.985 400.044 c
-320.49 398.42 320.478 396.654 321.277 395.158 c
-325.894 386.515 335.328 395.461 330.201 399.45 c
-329.419 400.059 328.359 400 327.398 400.207 c
-326.84 400.327 326.294 400.543 325.723 400.502 c
-324.574 400.418 323.812 399.42 323 398.607 c
-322.38 397.985 321.658 397.432 321.299 396.627 c
-320.685 395.248 321.31 393.63 322.702 393.282 c
-325.21 392.656 326.944 397.436 329.573 395.81 c
-330.23 395.403 330.257 394.573 329.724 394.392 c
-329.245 394.23 328.792 394.776 329.013 395.341 c
-329.293 396.058 330.297 396.029 330.746 396.614 c
-331.484 397.576 330.488 398.814 329.154 399.487 c
-326.469 400.84 323.404 401.874 320.795 400.465 c
-317.536 398.707 319.712 395.286 321.35 396.254 c
-321.863 396.557 321.918 397.236 321.769 397.843 c
-320.545 402.795 314.771 400.752 315.701 397.784 c
-316.779 394.342 320.703 398.476 322.902 397.662 c
-324 397.256 324.739 395.861 325.947 396.147 c
-331.463 397.453 308.648 420.52 324.271 408.155 c
-325.205 407.416 324.42 405.018 326.041 405.049 c
-327.139 405.069 327.206 407.125 328.414 406.916 c
-331.027 406.463 327.323 404.459 326.339 402.642 c
-325.36 400.833 335.781 393.678 328.075 394.126 c
-326.74 394.204 324.745 397.034 324.361 394.916 c
-324.274 394.44 324.746 394.076 324.799 393.609 c
-325.952 383.323 319.127 398.672 317.449 397.03 c
-314.237 393.888 324.342 393.919 321.823 390.981 c
-321.018 390.042 319.54 391.056 318.586 390.432 c
-317.557 389.759 318.104 388.331 318.056 387.124 c
-317.893 383.087 312.102 381.777 307.667 385.341 c
-307.108 385.791 306.568 386.297 306.341 386.979 c
-305.77 388.692 307.138 390.433 309.04 390.561 c
-313.682 390.874 315.296 384.561 311.124 382.624 c
-307.635 381.004 305.208 385.358 302.104 387.431 c
-300.43 388.549 299.304 390.23 300.507 391.022 c
-304.24 393.479 302.121 384.107 305.301 385.599 c
-306.125 385.985 306.013 387.155 306.64 387.758 c
-307.91 388.979 309.991 387.043 311.301 388.144 c
-312.874 389.466 310.435 392.194 312.079 393.49 c
-312.311 393.673 312.602 393.765 312.83 393.954 c
-313.527 394.532 313.362 395.666 314.018 396.281 c
-314.751 396.969 315.946 396.572 316.772 397.108 c
-318.801 398.426 317.394 402.084 314.191 401.528 c
-311.97 401.142 310.203 398.184 308.008 399.419 c
-306.698 400.157 306.554 401.992 307.721 402.978 c
-308.785 403.877 310.401 403.544 310.881 402.298 c
-311.416 400.91 310.107 399.718 309.001 398.632 c
-306.472 396.149 304.17 392.497 300.964 393.785 c
-300.529 393.96 300.145 394.235 299.77 394.516 c
-296.214 397.18 296.932 401.355 299.417 401.275 c
-301.443 401.211 301.444 398.53 301.291 396.152 c
-300.829 388.958 308.811 387.897 309.955 392.006 c
-310.596 394.308 307.578 396.164 308.256 398.465 c
-308.833 400.422 311.275 400.556 313.134 401.341 c
-315.584 402.376 316.613 405.112 315.005 406.568 c
-313.642 407.802 311.704 406.753 309.954 405.997 c
-309.107 405.631 308.15 405.3 307.843 404.433 c
-306.398 400.358 314.28 400.211 317.431 408.158 c
-317.934 409.428 318.619 410.837 317.731 411.817 c
-313.253 416.754 308.863 406.003 315.713 406.431 c
-315.822 406.438 315.931 406.457 316.036 406.488 c
-325.644 409.348 309.927 421.211 306.215 409.229 c
-304.821 404.73 301.12 402.852 300.105 405.253 c
-299.341 407.061 301.732 408.425 304.464 408.366 c
-306.255 408.327 308.241 408.158 308.933 406.577 c
-310.094 403.923 306.03 401.706 307.028 399.052 c
-307.954 396.592 311.673 397.319 313.023 395.238 c
-314.258 393.336 312.607 391.009 313.03 388.879 c
-313.46 386.713 315.803 385.472 316.308 383.33 c
-316.479 382.601 316.27 381.811 315.62 381.702 c
-314.231 381.468 314.168 383.763 316.134 385.576 c
-319.385 388.575 323.11 387.845 322.007 385.85 c
-321.494 384.922 319.951 385.432 319.418 384.527 c
-316.731 379.964 323.253 385.143 326.955 386.229 c
-328.123 386.572 329.321 385.805 329.581 384.598 c
-330.102 382.178 326.485 380.371 327.508 377.93 c
-329.312 373.627 335.315 379.317 337.612 376.373 c
-338.835 374.806 337.492 372.416 338.689 370.836 c
-339.341 369.975 340.499 369.714 341.541 370.041 c
-344.364 370.926 344.478 374.473 342.23 375.207 c
-339.952 375.952 339.124 372.855 337.642 370.989 c
-336.641 369.729 334.927 369.025 334.48 367.449 c
-333.609 364.374 337.677 362.648 338.125 359.763 c
-338.222 359.133 338.136 358.482 337.812 357.933 c
-336.927 356.429 334.547 356.135 334.21 354.329 c
-333.77 351.971 336.789 350.28 339.085 352.033 c
-341.226 353.669 342.565 357.77 344.907 355.945 c
-346.198 354.939 345.668 352.823 343.928 351.983 c
-341.562 350.842 338.764 352.287 338.107 354.9 c
-337.78 356.202 337.573 357.787 336.326 357.753 c
-333.89 357.686 335.218 354.098 339.137 351.989 c
-345.609 348.507 338.821 341.787 336.358 345.589 c
-335.761 346.51 336.339 347.7 337.357 348.33 c
-339.352 349.563 341.882 348.665 344.107 349.276 c
-347.895 350.318 352.031 354.453 354.06 350.866 c
-355.06 349.1 353.541 346.026 355.785 345.202 c
-359.614 343.795 361.92 351.439 355.739 352.071 c
-353.223 352.328 350.001 350.264 348.743 352.743 c
-345.67 358.797 357.16 360.445 355.738 353.428 c
-355.253 351.034 351.96 350.58 349.462 352.393 c
-348.622 353.002 347.904 353.757 347.224 354.54 c
-346.414 355.473 345.311 356.265 344.452 355.599 c
-343.647 354.974 343.995 353.11 342.725 353.14 c
-339.879 353.205 341.703 358.094 344.221 355.827 c
-345.145 354.995 344.259 353.693 343.865 352.49 c
-343.384 351.019 343.979 349.481 344.095 347.95 c
-344.332 344.835 342.663 342.018 340.773 339.525 c
-339.896 338.368 339.417 336.883 340.454 336.272 c
-342.6 335.007 344.367 338.715 341.708 339.578 c
-339.692 340.232 339.057 336.984 337.253 336.897 c
-336.506 336.861 335.867 337.391 335.131 337.48 c
-332.078 337.85 331.852 333.026 329.178 332.58 c
-327.154 332.243 325.752 334.582 323.755 334.575 c
-321.93 334.569 320.654 332.845 320.608 330.919 c
-320.561 328.943 320.147 326.877 318.686 327.31 c
-316.711 327.895 318.498 330.341 321.141 332.122 c
-322.464 333.013 323.076 334.585 323.212 336.183 c
-323.352 337.812 323.028 339.475 323.43 341.065 c
-323.794 342.508 324.718 343.728 325.266 345.108 c
-326.199 347.458 325.986 350.085 326.688 352.508 c
-327.318 354.685 324.437 355.22 324.906 353.833 c
-324.928 353.767 324.974 353.711 325.012 353.653 c
-334.082 339.929 308.6 352.641 319.286 358.969 c
-319.857 359.307 320.489 359.522 321.096 359.789 c
-321.882 360.134 322.669 360.571 323.525 360.476 c
-326.842 360.111 325.645 349.209 331.152 352.721 c
-332.15 353.358 332.177 354.688 332.414 355.846 c
-332.674 357.122 333.335 358.328 334.505 358.88 c
-337.632 360.354 339.872 356.833 338.042 355.168 c
-336.594 353.85 330.551 358.359 331.253 353.828 c
-331.411 352.806 333.169 351.711 332.001 351.021 c
-331.107 350.492 330.472 351.909 330.71 353.576 c
-330.812 354.297 330.69 355.058 330.989 355.726 c
-332.828 359.825 338.776 354.202 340.964 357.331 c
-342.23 359.141 340.721 361.66 338.342 361.526 c
-338.276 361.522 338.21 361.516 338.145 361.502 c
-329.565 359.692 342.872 360.841 348.441 362.304 c
-349.009 362.453 349.646 362.352 350.138 362.682 c
-352.051 363.964 349.404 366.326 350.07 367.986 c
-350.882 370.007 353.625 368.871 355.437 369.61 c
-356.441 370.02 357.078 370.96 357.516 371.954 c
-358.899 375.093 358.525 378.642 359.048 382.017 c
-359.445 384.571 358.15 386.659 356.705 385.888 c
-354.391 384.653 357.871 382.606 358.354 380.648 c
-358.722 379.154 357.423 377.803 356 378.184 c
-354.873 378.485 354.418 379.883 353.302 380.21 c
-350.946 380.902 349.379 377.765 351.396 376.27 c
-351.928 375.876 352.662 375.85 353.075 376.329 c
-356.182 379.939 347.206 378.825 348.193 381.397 c
-348.387 381.904 348.942 382.14 349.273 382.562 c
-351.151 384.95 347.565 387.135 346.383 385.014 c
-345.452 383.345 348.325 382.483 348.267 380.956 c
-348.222 379.782 346.893 379.137 345.62 379.488 c
-345.193 379.606 344.799 379.82 344.452 380.096 c
-342.401 381.729 340.018 383.066 339.574 381.209 c
-339.339 380.226 340.625 379.372 340.201 378.398 c
-338.213 373.824 332.012 381.832 338.598 383.669 c
-341.397 384.451 344.535 381.905 347.071 383.622 c
-351.907 386.898 368.826 380.833 357.629 382.688 c
-357.19 382.761 356.692 382.834 356.683 382.467 c
-356.676 382.224 356.978 382.144 357.1 381.951 c
-359.811 377.646 353.733 383.034 353.232 382.199 c
-351.647 379.557 356.195 381.776 356.751 381.042 c
-357.39 380.199 356.194 378.876 354.488 379.413 c
-354.154 379.518 353.829 379.656 353.482 379.709 c
-350.16 380.219 348.638 375.331 351.322 370.811 c
-351.87 369.89 352.629 368.982 353.621 369.193 c
-358.298 370.19 351.402 398.085 355.956 380.412 c
-356.012 380.197 355.985 379.972 355.917 379.76 c
-354.878 376.531 349.728 379.29 348.314 376.605 c
-345.365 371.006 355.924 368.453 355.614 375.442 c
-355.572 376.405 355.061 377.513 355.857 378.077 c
-357.759 379.427 360.049 375.097 355.806 372.426 c
-351.496 369.712 346.944 370.494 347.539 373.419 c
-348.061 375.978 352.441 375.011 353.003 377.535 c
-353.474 379.648 349.086 381.8 351.352 383.853 c
-353.325 385.641 355.144 382.133 355.253 377.855 c
-355.616 363.724 378.054 376.216 364.783 379.906 c
-362.608 380.511 357.646 378.536 359.55 381.248 c
-360.156 382.11 361.263 381.247 362.282 380.802 c
-363.275 380.369 364.396 380.655 365.325 381.229 c
-369.572 383.852 368.046 389.333 364.547 389.216 c
-360.933 389.094 360.18 383.697 364.084 382.519 c
-365.814 381.997 368.03 383.125 369.264 381.642 c
-370.104 380.632 369.837 378.664 371.278 378.423 c
-372.401 378.235 373.098 379.48 372.417 380.209 c
-370.866 381.869 370.39 378.345 369.075 377.191 c
-367.956 376.208 365.141 376.942 365.313 375.016 c
-365.442 373.559 367.746 373.41 369.284 375.232 c
-370.518 376.695 371.455 378.572 370.504 380.126 c
-369.568 381.657 367.158 381.736 366.499 383.459 c
-365.656 385.662 369.523 389.478 366.253 390.631 c
-364.574 391.223 362.233 387.721 360.854 389.962 c
-360.138 391.126 362.853 394.304 360.278 394.387 c
-359.134 394.424 359.237 392.769 358.43 392.23 c
-352.538 388.3 359.547 397.277 359.972 401.39 c
-360.507 406.559 353.223 404.745 355.155 401.366 c
-355.625 400.544 356.763 400.64 357.715 401.066 c
-360.21 402.184 363.075 402.836 363.578 400.721 c
-364.594 396.446 358.099 398.942 355.904 397.188 c
-354.688 396.217 354.712 394.497 354.686 392.93 c
-354.662 391.486 354.57 389.925 355.572 388.889 c
-357.06 387.35 359.524 388.238 361.449 387.499 c
-362.367 387.146 363.261 386.436 364.183 386.81 c
-364.885 387.094 365.182 387.866 365.34 388.619 c
-365.476 389.271 365.709 389.979 366.327 390.005 c
-367.201 390.042 367.314 388.889 367.263 387.835 c
-367.1 384.474 369.189 379.921 365.728 379.654 c
-364.882 379.589 364.329 380.312 364.691 380.805 c
-365.062 381.312 365.775 380.793 366.296 380.982 c
-367.099 381.274 366.972 382.462 366.138 383.261 c
-363.891 385.414 360.435 385.728 357.954 383.883 c
-352.085 379.519 358.985 373.801 361.202 377.318 c
-361.838 378.327 361.01 380.087 362.267 380.633 c
-363.831 381.312 365.454 378.616 363.284 376.192 c
-362.115 374.885 360.678 373.713 360.253 372.003 c
-358.18 363.641 370.778 365.71 367.035 370.775 c
-366.93 370.918 366.791 371.034 366.629 371.106 c
-364.572 372.021 362.765 367.746 366.981 365.222 c
-369.2 363.893 371.574 362.29 373.963 363.214 c
-375.331 363.743 376.245 365.091 375.863 366.45 c
-375.613 367.336 374.817 368.205 375.352 368.986 c
-381.049 377.296 377.218 361.557 379.086 361.158 c
-380.092 360.943 380.929 361.884 381.067 363.013 c
-381.245 364.475 380.953 366.318 382.356 366.554 c
-386.886 367.317 382.075 361.554 382.824 359.344 c
-383.491 357.379 386.711 357.771 387.301 355.75 c
-387.612 354.684 386.827 353.624 386.978 352.536 c
-387.599 348.069 395.02 349.233 393.776 354.445 c
-393.209 356.823 391.704 359.667 393.906 359.706 c
-396.067 359.743 394.74 356.886 394.318 354.532 c
-393.743 351.325 397.601 349.368 401.652 349.807 c
-402.842 349.936 404.18 349.945 404.637 348.914 c
-405.229 347.579 403.712 346.503 402.198 345.775 c
-401.462 345.421 400.741 344.976 400.363 344.252 c
-399.598 342.786 400.579 341.067 400.203 339.492 c
-399.517 336.615 395.936 336.212 392.694 336.435 c
-391.753 336.499 390.753 336.586 390.102 337.267 c
-389.579 337.815 389.434 338.604 389.561 339.354 c
-390.946 347.524 401.1 341.403 396.589 337.55 c
-394.843 336.059 390.937 340.853 389.677 337.446 c
-389.382 336.65 389.954 335.883 390.396 335.151 c
-390.679 334.68 390.914 334.164 391.349 333.825 c
-395.877 330.302 396.007 339.51 399.048 340.857 c
-399.574 341.09 400.225 341.225 400.378 341.779 c
-400.84 343.465 398.321 342.707 396.702 343.035 c
-391.56 344.076 398.296 348.557 400.954 352.75 c
-402.543 355.256 400.814 358.33 401.127 361.193 c
-401.336 363.109 402.667 364.77 404.399 364.502 c
-407.583 364.009 405.697 352.751 411.461 356.364 c
-412.377 356.939 412.534 358.206 411.753 358.909 c
-410.773 359.791 409.305 359.07 409.447 357.919 c
-409.611 356.603 411.609 356.397 412.949 357.844 c
-415.589 360.695 417.08 365.794 420.86 364.537 c
-423.39 363.696 423.451 360.399 425.066 358.429 c
-425.783 357.553 426.826 356.736 426.54 355.646 c
-426.125 354.062 422.377 354.074 423.276 351.904 c
-424.387 349.224 427.141 353.008 428.776 352.386 c
-432.086 351.129 429.338 344.728 424.752 347.755 c
-421.602 349.834 423.428 354.003 426.131 353.405 c
-427.974 352.997 428.73 348.863 430.969 350.361 c
-433.733 352.21 428.793 353.786 427.374 355.997 c
-426.213 357.805 427.739 361.423 425.106 361.834 c
-423.196 362.132 419.306 358.975 419.821 362.031 c
-420.219 364.393 423.821 361.509 424.499 363.297 c
-424.95 364.487 423.264 364.941 422.536 365.858 c
-421.226 367.509 420.51 370.919 419.159 369.102 c
-417.421 366.765 422.271 366.946 422.396 365.477 c
-422.457 364.763 421.791 364.286 421.399 363.7 c
-419.572 360.971 422.786 358.324 424.677 360.027 c
-425.746 360.991 425.213 363.778 427.076 363.522 c
-428.565 363.317 428.708 360.751 426.403 359.679 c
-425.167 359.105 423.922 359.682 424.126 360.575 c
-424.251 361.12 425.073 361.366 424.964 361.97 c
-423.873 367.994 422.363 358.095 421.103 358.841 c
-418.87 360.164 423.151 361.45 422.6 362.593 c
-421.794 364.261 418.46 362.46 420.398 360.07 c
-422.102 357.968 426.371 360.239 427.598 357.44 c
-428.913 354.442 424.11 351.889 418.899 354.718 c
-416.102 356.237 412.736 356.332 412.061 353.875 c
-410.806 349.302 407.422 343.071 407.732 347.822 c
-407.738 347.926 407.765 348.026 407.808 348.12 c
-408.369 349.374 410.024 348.672 411.408 348.602 c
-413.421 348.5 415.626 350.466 417.211 348.927 c
-419.203 346.995 414.844 342.556 418.176 341.093 c
-418.644 340.887 419.201 340.951 419.487 341.354 c
-421.052 343.563 415.638 345.373 414.212 340.397 c
-413.442 337.712 412.171 334.865 413.613 332.478 c
-415.587 329.209 420.259 325.967 416.819 324.279 c
-413.971 322.882 411.693 327.107 414.553 328.748 c
-415.454 329.265 416.904 329.16 417.031 330.256 c
-417.148 331.267 415.226 332.122 416.104 333.142 c
-416.766 333.913 417.695 332.86 418.608 332.637 c
-421.144 332.02 422.742 336.176 419.488 337.652 c
-413.394 340.415 410.863 330.572 417.009 329.907 c
-419.263 329.663 420.36 332.239 422.161 333.458 c
-424.058 334.743 426.75 334.427 428.394 336.066 c
-429.515 337.183 429.872 339.025 431.358 339.662 c
-431.4 339.68 431.443 339.697 431.488 339.701 c
-433.035 339.858 430.992 338.303 431.089 337.711 c
-431.208 336.983 432.186 337.347 433.044 337.855 c
-435.951 339.578 439.758 335.045 436.271 331.403 c
-434.213 329.253 430.779 329.588 428.32 327.992 c
-426.89 327.064 425.941 325.592 425.345 323.996 c
-424.206 320.951 423.595 317.143 420.436 316.693 c
-419.646 316.58 418.706 316.565 418.542 315.821 c
-418.247 314.492 421.997 314.362 420.781 312.644 c
-420.275 311.929 419.053 312.679 418.535 311.985 c
-417.854 311.072 419.462 310.239 419.197 309.321 c
-417.891 304.819 411.767 311.901 417.54 313.919 c
-418.136 314.127 418.773 314.183 419.376 314.366 c
-421.269 314.941 422.53 316.602 424.07 317.824 c
-426.605 319.836 430.106 319.912 431.119 317.434 c
-433.27 312.171 425.297 310.979 425.314 315.4 c
-425.32 316.908 427.118 317.375 428.261 318.307 c
-429.54 319.349 430.09 321.27 431.735 321.681 c
-435.075 322.515 441.048 321.437 438.412 324.293 c
-437.872 324.879 437.014 324.562 437.054 323.962 c
-437.233 321.216 439.995 325.593 440.615 324.311 c
-441.025 323.462 439.65 323.14 438.161 323.585 c
-436.531 324.073 434.093 323.624 434.264 325.363 c
-434.481 327.574 438.445 325.812 438.776 327.885 c
-438.897 328.643 438.129 329.291 438.287 330.048 c
-438.619 331.639 441.193 331.252 442.645 328.817 c
-444.158 326.28 443.713 323.517 441.858 323.716 c
-439.934 323.922 440.733 326.475 440.911 328.589 c
-441.257 332.69 433.345 337.097 437.962 340.653 c
-438.511 341.075 439.262 341.289 439.541 341.933 c
-440.014 343.024 438.958 344.108 437.606 344.441 c
-431.06 346.057 425.912 349.738 429.725 351.655 c
-431.204 352.399 432.608 350.905 434.151 350.536 c
-435.37 350.245 436.668 350.701 437.867 350.327 c
-438.857 350.017 439.592 349.135 439.355 348.184 c
-439.129 347.28 438.07 346.895 437.705 346.053 c
-437.368 345.274 437.683 344.377 438.389 343.888 c
-439.291 343.262 440.495 342.674 439.918 341.892 c
-437.34 338.4 437.811 345.703 436.448 345.409 c
-434.309 344.948 437.104 343.078 438.26 341.313 c
-439.259 339.787 437.511 338.006 437.954 336.354 c
-438.2 335.439 439.027 334.859 439.627 334.135 c
-440.182 333.464 440.53 332.59 440.15 331.833 c
-437.99 327.527 432.336 333.204 436.676 335.351 c
-437.877 335.945 439.385 334.639 440.509 335.475 c
-442.363 336.854 440.041 339.908 435.701 339.837 c
-429.57 339.738 428.689 334.079 431.517 333.981 c
-431.886 333.968 432.243 334.165 432.291 334.512 c
-432.395 335.262 426.093 336.578 430.047 337.165 c
-430.549 337.239 430.652 336.532 431.056 336.342 c
-431.717 336.033 433.394 338.337 433.633 336.62 c
-433.712 336.053 432.854 335.724 432.188 336.314 c
-427.867 340.15 435.44 347.015 439.195 340.845 c
-439.53 340.295 439.728 339.614 440.311 339.328 c
-441.884 338.558 443.706 340.754 442.456 343.126 c
-441.18 345.549 438.041 346.421 436.875 348.91 c
-436.525 349.658 436.396 350.489 436.479 351.311 c
-436.583 352.339 437.009 353.374 436.656 354.354 c
-435.968 356.267 433.757 355.619 433.938 354.4 c
-434.031 353.773 434.861 353.639 435.115 353.089 c
-435.8 351.607 433.251 350.822 430.621 352.478 c
-429.717 353.047 428.595 353.35 428.027 354.266 c
-427.127 355.718 428.112 357.519 429.627 357.381 c
-432.706 357.101 430.642 352.497 432.599 351.266 c
-435.839 349.229 437.441 354.339 434.608 354.746 c
-434.139 354.814 433.705 354.51 433.234 354.509 c
-431.556 354.504 431.102 356.997 432.684 359.011 c
-436.015 363.252 432.606 366.96 430.87 365.208 c
-430.448 364.783 430.474 364.111 430.178 363.599 c
-429.147 361.812 426.248 362.516 426.084 364.869 c
-425.886 367.724 431.918 373.064 426.957 373.07 c
-424.747 373.073 425.367 369.804 423.9 368.789 c
-423.206 368.309 422.295 368.434 421.495 368.193 c
-419.563 367.612 417.415 365.697 416.524 367.525 c
-415.698 369.219 417.981 370.165 418.563 368.881 c
-418.699 368.582 418.581 368.229 418.695 367.923 c
-421.098 361.459 420.006 372.71 421.639 374.031 c
-424.151 376.063 425.142 370.691 427.219 371.053 c
-429.646 371.476 428.207 374.645 426.787 377.45 c
-426.72 377.582 426.66 377.717 426.597 377.851 c
-425.844 379.48 424.882 381.151 425.309 382.898 c
-426.081 386.053 430.186 386.495 432.017 388.995 c
-432.227 389.281 432.405 389.594 432.67 389.832 c
-433.314 390.408 434.287 390.432 434.912 389.847 c
-435.905 388.919 435.376 386.792 436.861 386.394 c
-437.469 386.232 438.074 386.578 438.446 387.103 c
-440.286 389.703 436.739 392.495 437.194 395.306 c
-437.602 397.823 441.16 399.735 439.749 402.266 c
-439.52 402.676 439.157 402.986 438.779 403.265 c
-438.177 403.708 437.502 404.123 437.247 404.828 c
-436.283 407.492 440 409.224 441.412 406.802 c
-442.575 404.807 439.888 403.335 437.845 401.825 c
-436.092 400.53 435.14 398.336 433.203 397.311 c
-429.428 395.313 426.803 399.287 428.705 401.012 c
-430.493 402.635 434.285 397.415 435.736 400.813 c
-437.327 404.539 428.212 402.677 429.79 406.395 c
-430.656 408.436 434.723 407.242 434.514 402.869 c
-434.417 400.837 434.018 398.826 434.023 396.792 c
-434.026 395.594 434.116 394.298 433.294 393.428 c
-431.732 391.777 428.855 392.796 428.088 395.342 c
-427.191 398.315 429.592 401.035 429.99 404.037 c
-430.222 405.786 429.756 407.524 429.496 409.264 c
-429.334 410.355 428.897 411.488 427.931 411.399 c
-427.071 411.32 426.158 409.931 425.527 410.84 c
-424.749 411.962 426.786 411.918 428.282 412.235 c
-429.274 412.445 429.682 413.518 429.977 414.517 c
-430.067 414.824 430.153 415.157 429.991 415.431 c
-429.854 415.665 429.582 415.772 429.308 415.767 c
-422.59 415.642 429.328 405.556 432.204 411.938 c
-432.571 412.752 432.036 413.642 432.115 414.512 c
-432.615 420.034 441.28 414.479 442.697 418.505 c
-442.921 419.143 442.809 419.844 442.967 420.499 c
-443.705 423.547 448.039 424.085 449.944 421.048 c
-450.383 420.348 450.587 419.509 450.358 418.717 c
-449.997 417.462 448.709 416.789 448.005 415.708 c
-446.844 413.928 447.404 411.303 445.72 409.906 c
-442.664 407.37 438.351 410.894 440.223 414.387 c
-443.006 419.582 449.449 414.392 446.184 411.081 c
-443.149 408.005 440.567 414.561 437.665 413.912 c
-436.674 413.69 436.002 412.842 435.544 411.928 c
-434.551 409.949 435.457 407.883 436.946 408.163 c
-439.116 408.572 437.344 411.28 437.346 413.297 c
-437.352 418.213 444.365 417.481 443.712 413.272 c
-443.611 412.617 443.163 412.088 442.62 411.705 c
-439.808 409.72 437.538 407.148 439.745 406.322 c
-442.894 405.143 441.918 410.856 444.086 411.085 c
-444.397 411.118 444.708 411.033 444.975 410.87 c
-453.664 405.575 437.342 398.251 439.352 407.858 c
-439.74 409.715 442.668 409.324 443.259 411.031 c
-446.903 421.56 427.641 415.131 436.923 408.485 c
-438.661 407.241 442.973 409.904 443.215 406.696 c
-443.327 405.227 441.503 404.409 440.415 405.5 c
-438.975 406.946 446.707 416.43 439.644 414.008 c
-438.211 413.516 438.987 411.574 438.433 410.348 c
-437.878 409.121 437.069 407.735 438.174 407.545 c
-438.494 407.489 438.779 407.702 439 407.947 c
-441.319 410.516 443.221 415.044 445.111 412.342 c
-445.838 411.303 444.986 410.051 444.262 408.939 c
-443.062 407.098 442.6 404.762 443.87 403.045 c
-445.591 400.718 448.338 398.27 446.018 397.234 c
-443.439 396.083 443.037 401.155 440.733 400.677 c
-439.665 400.456 439.215 399.189 439.912 398.381 c
-441.13 396.971 444.495 399.838 445.233 397.34 c
-445.397 396.788 445.063 396.241 445.031 395.674 c
-445.019 395.452 445.053 395.228 445.016 395.008 c
-444.547 392.237 438.499 393.504 440.338 398.747 c
-441.177 401.14 441.652 403.845 439.649 404.17 c
-438.994 404.276 438.337 403.885 437.691 404.058 c
-435.816 404.561 436.688 407.127 438.19 409.29 c
-438.27 409.405 438.347 409.523 438.423 409.641 c
-439.762 411.72 441.17 414.006 443.595 414.419 c
-446.054 414.838 448.163 413.036 450.508 412.297 c
-452.018 411.821 453.723 412.097 454.086 413.446 c
-454.679 415.649 451.309 417.36 448.39 415.06 c
-446.212 413.345 443.75 413.741 444.005 415.288 c
-444.509 418.34 447.794 414.569 449.383 415.103 c
-450.499 415.479 450.699 417.122 451.875 417.383 c
-453.855 417.821 453.921 414.982 455.004 413.446 c
-457.11 410.458 461.04 413.353 464.497 413.644 c
-465.819 413.755 467.372 413.683 467.796 414.892 c
-468.199 416.045 467.049 416.952 466.194 417.867 c
-465.786 418.304 465.454 418.806 465.081 419.273 c
-463.427 421.34 461.062 422.636 458.751 423.916 c
-455.762 425.57 453.805 428.543 455.694 430.383 c
-458.527 433.143 460.988 427.936 464.107 426.425 c
-466.011 425.503 467.221 427.318 466.379 428.062 c
-466.175 428.242 465.884 428.261 465.623 428.174 c
-464.355 427.75 464.569 425.471 463.1 425.349 c
-450.768 424.324 469.087 431.798 468.203 433.856 c
-467.333 435.882 463.912 434.002 462.984 435.941 c
-462.12 437.745 471.4 447.25 463.997 443.94 c
-462.257 443.162 464.321 440.762 463.264 439.695 c
-454.174 430.509 466.32 447.553 464.78 450.581 c
-462.751 454.57 458.873 448.524 456.215 449.283 c
-453.142 450.161 453.641 454.552 456.683 454.731 c
-458.172 454.819 459.761 453.165 460.983 454.305 c
-463.336 456.499 458.56 457.501 456.213 459.427 c
-454.146 461.123 454.902 465.696 451.721 465.85 c
-451.194 465.875 450.684 465.684 450.264 465.363 c
-447.568 463.301 448.956 458.734 453.011 457.531 c
-455.084 456.915 457.297 457.322 459.199 458.357 c
-459.658 458.606 460.114 458.922 460.238 459.427 c
-460.433 460.22 459.64 461.14 460.23 461.81 c
-461.881 463.688 462.573 459.728 463.949 459.318 c
-466.664 458.508 466.263 463.6 468.568 463.472 c
-472.676 463.243 468.42 458.186 469.464 456.055 c
-469.854 455.26 470.709 454.874 471.444 454.389 c
-471.717 454.209 471.981 454.006 472.153 453.727 c
-474.37 450.135 467.266 447.152 466.428 452.515 c
-466.302 453.321 466.611 454.205 466.166 454.906 c
-465.643 455.731 464.532 455.707 463.605 455.979 c
-462.147 456.407 461.114 457.638 460.535 459.051 c
-459.437 461.735 458.824 465.243 456.061 464.999 c
-454.559 464.867 453.717 463.403 452.671 462.333 c
-451.415 461.048 449.604 460.325 448.029 461.078 c
-445.177 462.442 446.178 466.461 444.545 468.907 c
-443.32 470.742 443.334 472.745 444.648 472.563 c
-446.419 472.319 443.708 458.293 446.773 466.805 c
-446.783 466.833 446.791 466.862 446.8 466.89 c
-449.129 474.188 457.102 461.947 448.567 461.376 c
-446.511 461.239 443.738 462.531 443.425 460.407 c
-443.19 458.807 446.191 457.998 445.383 456.277 c
-443.926 453.175 441.164 458.039 439.363 457.457 c
-437.596 456.885 438.222 454.065 436.59 453.342 c
-430.939 450.835 435.899 459.471 435.212 463.64 c
-434.519 467.847 427.984 468.04 423.796 462.981 c
-422.073 460.9 420.292 458.513 417.611 458.525 c
-414.343 458.538 412.648 462.007 410.028 463.805 c
-408.124 465.112 405.744 465.472 403.743 466.617 c
-398.538 469.596 393.91 467.396 395.54 464.846 c
-396.116 463.944 397.369 463.884 398.373 464.418 c
-401.087 465.862 401.901 471.02 405.378 469.94 c
-407.11 469.402 407.553 467.341 407.584 465.427 c
-407.648 461.569 407.418 457.325 410.341 454.836 c
-415.929 450.08 419.992 458.076 416.077 459.497 c
-414.075 460.224 413.214 457.227 411.421 456.909 c
-409.198 456.516 408.412 459.293 407.148 461.2 c
-406.829 461.682 406.433 462.109 406.121 462.596 c
-404.327 465.393 405.447 469.128 408.496 470.172 c
-411.733 471.28 414.79 468.519 413.806 465.638 c
-413.211 463.894 412.354 461.905 413.874 461.741 c
-414.527 461.67 415.011 462.283 415.123 462.984 c
-415.311 464.171 414.64 465.509 415.414 466.483 c
-418.103 469.866 421.862 461.153 424.551 464.515 c
-424.933 464.992 424.978 465.636 424.863 466.239 c
-423.387 473.98 413.987 468.988 417.333 464.885 c
-418.802 463.083 421.067 465.309 423.195 465.68 c
-425.497 466.081 427.76 463.958 429.97 464.933 c
-431.252 465.498 431.832 466.883 432.454 468.137 c
-434.987 473.242 440.178 470.042 438.521 467.847 c
-437.696 466.755 433.198 468.572 434.294 465.819 c
-434.814 464.514 436.321 465.838 437.687 466.869 c
-439.679 468.373 442.06 466.356 444.423 465.892 c
-445.515 465.677 446.688 466.009 446.882 466.991 c
-447.586 470.562 440.888 470.445 442.281 466.044 c
-442.629 464.942 443.963 464.405 444.195 463.259 c
-444.45 461.997 443.255 461.023 442.975 459.806 c
-442.378 457.207 445.867 455.099 444.894 452.503 c
-443.736 449.415 425.2 452.811 433.65 445.035 c
-435.222 443.589 437.583 445.152 436.919 447.008 c
-436.257 448.858 432.896 447.932 432.452 449.987 c
-432.237 450.979 433.078 451.804 434.041 452.283 c
-434.638 452.58 435.273 452.796 435.926 452.93 c
-436.536 453.056 437.167 453.113 437.733 453.375 c
-441.764 455.24 446.748 457.979 445.453 454.404 c
-445.207 453.725 444.397 453.514 444.009 454.001 c
-442.767 455.56 446.554 455.829 445.98 457.143 c
-445.439 458.383 443.862 457.062 443.173 454.843 c
-442.651 453.162 440.748 452.437 439.598 453.495 c
-436.262 456.565 443.243 458.545 443.399 461.312 c
-443.525 463.532 441.006 464.493 438.828 465.382 c
-433.314 467.633 429.225 464.432 431.135 462.15 c
-432.185 460.896 433.982 461.886 435.573 461.964 c
-437.106 462.039 438.528 461.136 439.025 459.693 c
-440.024 456.791 437.215 454.375 434.32 452.702 c
-432.476 451.636 430.215 451.101 429.314 452.704 c
-428.089 454.884 426.633 457.53 426.097 455.57 c
-425.972 455.115 426.226 454.416 425.708 454.378 c
-425.154 454.338 425.367 455.103 425.384 455.717 c
-425.656 465.462 414.061 452.124 422.933 450.616 c
-428.809 449.617 435.606 446.84 430.755 445.761 c
-430.434 445.689 430.091 445.768 429.78 445.654 c
-428.814 445.3 428.937 443.962 429.584 442.88 c
-430.68 441.047 432.406 439.461 434.295 440.095 c
-436.26 440.755 436.854 443.835 439.104 443.726 c
-442.075 443.583 442.836 438.974 439.32 437.638 c
-437.568 436.972 435.666 437.99 435.657 439.682 c
-435.646 441.712 438.174 442.713 439.638 441.193 c
-440.769 440.018 440.113 438.182 440.531 436.658 c
-441.037 434.812 442.904 433.7 444.804 434.033 c
-447.06 434.429 448.526 436.603 448.259 438.913 c
-447.994 441.213 446.047 442.926 445.553 445.176 c
-445.072 447.366 446.015 449.841 444.709 451.723 c
-444.409 452.155 443.995 452.512 443.479 452.609 c
-440.733 453.122 439.051 448.314 443.114 446.482 c
-447.182 444.647 448.503 449.648 446.163 450.162 c
-445.1 450.396 444.456 448.882 443.401 449.046 c
-441.634 449.321 442.772 452.672 440.889 452.837 c
-438.246 453.068 440.045 449.099 438.645 448.217 c
-435.76 446.4 436.293 451.704 434.737 453.784 c
-433.663 455.22 431.523 454.898 430.057 455.834 c
-428.182 457.032 427.854 459.626 429.229 461.445 c
-431.717 464.738 436.545 463.175 436.478 459.712 c
-436.472 459.43 436.417 459.152 436.381 458.873 c
-436.009 456.003 434.279 453.964 433.029 455.245 c
-431.652 456.655 438.246 460.511 433.946 461.458 c
-430.641 462.186 433.288 457.252 431.941 456.342 c
-431.261 455.883 430.392 456.232 429.708 456.75 c
-428.063 457.995 426.912 459.963 424.895 460.498 c
-423.339 460.91 421.309 460.788 421.05 462.359 c
-420.441 466.056 425.499 463.771 429.56 459.649 c
-431.889 457.285 435.155 458.982 434.612 461.145 c
-433.777 464.473 427.825 460.323 427.045 463.75 c
-426.933 464.239 427.102 464.76 426.943 465.238 c
-424.663 472.093 417.255 461.345 424.289 462.226 c
-425.145 462.334 425.223 463.462 425.848 463.965 c
-427.195 465.049 432.003 460.296 431.964 464.39 c
-431.944 466.453 427.697 464.976 427.858 467.221 c
-428.053 469.941 433.154 468.737 431.33 465.383 c
-429.205 461.477 426.066 467.395 422.593 469.943 c
-421.929 470.43 421.122 470.702 420.303 470.624 c
-413.933 470.019 415.092 460.031 421.866 461.134 c
-424.338 461.536 426.247 464.732 428.737 463.549 c
-430.42 462.75 430.447 460.583 430.535 458.668 c
-430.631 456.554 431.156 454.441 432.498 452.804 c
-434.887 449.889 439.673 448.233 438.893 444.362 c
-438.311 441.477 434.944 441.197 434.279 443.181 c
-433.465 445.61 437.418 447.507 439.1 444.424 c
-440.217 442.376 438.367 440.03 438.922 437.845 c
-439.564 435.324 442.505 434.664 444.753 433.398 c
-446.621 432.345 448.069 430.703 449.056 428.799 c
-450.139 426.71 448.214 425.435 447.54 426.331 c
-447.12 426.889 447.853 427.505 447.837 428.132 c
-447.78 430.297 443.565 429.966 444.423 426.783 c
-445.165 424.031 449.805 425.111 450.587 422.396 c
-450.974 421.052 449.953 419.857 449.17 418.689 c
-447.554 416.279 447.095 413.152 448.901 411.002 c
-450.847 408.687 454.33 408.725 456.986 410.426 c
-460.718 412.818 464.748 412.718 464.351 410.076 c
-464.198 409.061 463.114 408.489 462.265 408.988 c
-457.046 412.05 466.299 417.621 466.581 411.258 c
-466.661 409.442 463.841 409.037 463.774 407.277 c
-463.656 404.187 468.056 405.78 469.986 404.435 c
-478.123 398.765 463.212 388.543 460.84 399.841 c
-460.718 400.42 460.763 401.039 461.122 401.507 c
-462.104 402.787 463.934 401.903 465.472 402.057 c
-465.849 402.095 466.231 402.217 466.44 402.53 c
-466.756 403.002 466.508 403.596 466.497 404.154 c
-466.486 404.676 466.696 405.175 466.724 405.696 c
-466.873 408.477 463.335 409.932 460.091 408.512 c
-459.272 408.154 458.419 407.679 457.578 407.981 c
-453.896 409.302 456.701 415.857 461.148 413.011 c
-462.362 412.235 462.806 410.562 464.171 410.036 c
-465.476 409.534 466.832 410.294 467.891 411.262 c
-471.759 414.796 474.523 420.805 479.727 419.676 c
-480.366 419.537 481.034 419.278 481.619 419.577 c
-487.937 422.804 475.676 429.883 474.411 420.755 c
-474.31 420.026 474.35 419.252 473.963 418.621 c
-471.228 414.15 467.676 421.581 464.194 422.048 c
-461.778 422.372 460.203 420.001 461.398 418.436 c
-462.081 417.542 463.368 417.747 463.538 418.643 c
-464.105 421.631 460.063 418.748 458.772 419.48 c
-451.26 423.741 476.446 424.347 465.918 428.369 c
-462.736 429.584 463.738 423.857 461.611 423.56 c
-459.536 423.269 458.331 426.439 460.711 428.045 c
-462.993 429.585 465.63 427.603 468.139 426.355 c
-469.649 425.603 471.483 425.373 472.439 426.623 c
-473.448 427.943 472.534 429.658 471.841 431.217 c
-469.131 437.312 474.148 442.255 477.703 439.978 c
-480.771 438.013 477.955 432.474 481.325 430.72 c
-482.884 429.909 484.787 430.724 485.474 432.392 c
-485.638 432.791 485.717 433.226 485.616 433.646 c
-482.985 444.5 470.463 428.722 481.529 428.844 c
-482.747 428.857 483.355 430.262 484.473 430.626 c
-485.85 431.076 488.004 430.109 488.344 431.731 c
-488.759 433.706 485.272 434.736 484.505 431.913 c
-484.027 430.154 485.336 427.329 483.224 427.19 c
-480.443 427.007 480.998 431.33 483.558 430.518 c
-484.709 430.152 484.468 428.147 485.738 427.95 c
-487.562 427.666 487.256 431.508 489.205 431.018 c
-490.354 430.729 491.446 426.763 492.439 429.066 c
-492.801 429.905 491.506 430.219 491.255 430.932 c
-490.843 432.105 492.484 433.204 493.826 432.135 c
-495.321 430.943 494.671 427.867 496.801 427.421 c
-499.349 426.887 500.194 430.405 497.995 431.089 c
-496.504 431.553 495.78 429.564 494.476 429.03 c
-491.554 427.836 488.882 434.927 485.783 431.78 c
-484.276 430.249 486.012 428.03 488.03 426.396 c
-490.073 424.742 491.032 422.103 489.333 420.793 c
-488.22 419.936 486.652 420.419 485.614 421.489 c
-485.182 421.935 484.834 422.47 484.754 423.085 c
-484.471 425.256 486.895 426.824 489.052 425.779 c
-491.608 424.54 491.61 420.99 489.166 419.936 c
-488.701 419.736 488.179 419.691 487.7 419.857 c
-486.272 420.35 486.059 422.098 485.401 423.437 c
-484.772 424.718 483.586 425.724 483.344 427.143 c
-483.111 428.503 483.786 429.811 484.773 430.791 c
-485.682 431.696 486.85 432.337 488.131 432.352 c
-490.524 432.38 492.301 430.427 493.482 428.283 c
-494.504 426.426 496.133 424.842 497.517 425.878 c
-498.938 426.943 497.584 429.005 498.204 430.471 c
-498.719 431.688 500.366 432.102 500.699 433.405 c
-502.966 442.268 486.083 438.352 493.098 430.049 c
-495.314 427.425 499.027 429.624 502.371 431.019 c
-505.561 432.349 509.086 431.25 509.139 428.513 c
-509.173 426.741 507.373 425.682 506.183 426.605 c
-505.921 426.809 505.756 427.104 505.587 427.387 c
-504.33 429.487 502.447 431.279 500.029 431.433 c
-497.475 431.596 495.268 432.691 496.254 434.071 c
-497.296 435.528 499.115 433.437 500.412 433.984 c
-504.393 435.662 499.012 443.172 494.643 437.474 c
-492.792 435.06 493.55 431.806 493.842 428.782 c
-494.387 423.136 499.615 422.624 499.828 425.224 c
-499.941 426.594 497.388 427.701 498.519 429.094 c
-499.621 430.45 501.243 428.272 502.53 428.717 c
-505.649 429.797 502.633 436.425 497.472 432.808 c
-494.214 430.525 493.207 426.243 494.391 422.382 c
-495.345 419.268 498.017 416.883 500.776 417.878 c
-501.855 418.268 502.652 419.24 502.534 420.354 c
-502.423 421.409 501.73 422.661 502.699 423.096 c
-505.993 424.572 503.582 419.128 504.786 418.41 c
-513.457 413.239 508.618 431.436 503.734 422.537 c
-503.377 421.887 503.874 421.14 503.781 420.427 c
-503.451 417.89 498.604 417.8 498.077 422.224 c
-497.952 423.271 498.028 424.47 497.15 425.05 c
-495.769 425.964 494.129 424.216 492.676 424.804 c
-491.688 425.204 491.339 426.416 492.012 427.184 c
-492.411 427.639 493.172 427.867 493.126 428.497 c
-493.056 429.443 491.672 429.557 491.445 428.581 c
-491.156 427.336 493.401 426.461 494.349 428.417 c
-495.213 430.201 494.036 432.303 492.02 432.715 c
-491.873 432.745 491.724 432.765 491.574 432.759 c
-489.765 432.687 489.699 430.224 488.412 429.219 c
-486.789 427.951 484.372 429.009 483.787 431.197 c
-483.527 432.169 483.274 433.312 482.369 433.209 c
-480.875 433.04 478.699 422.205 478.826 429.076 c
-478.832 429.418 479.142 429.643 479.448 429.815 c
-481.508 430.974 483.291 432.756 482.089 434.213 c
-480.579 436.043 477.278 434.175 478.372 431.383 c
-479.224 429.209 482.461 429.343 483.484 427.294 c
-483.925 426.409 483.793 425.333 483.064 424.684 c
-481.894 423.642 479.938 424.374 478.781 423.311 c
-473.271 418.241 487.111 410.279 489.553 422.106 c
-490.08 424.657 489.61 427.709 491.788 429.208 c
-492.119 429.436 492.513 429.661 492.513 430.058 c
-492.513 432.365 489.796 429.692 489.028 430.322 c
-484.744 433.835 492.782 429.928 495.517 430.375 c
-497.72 430.735 496.659 433.735 494.861 436.324 c
-491.27 441.493 497.797 444.756 499.303 441.661 c
-500.728 438.734 478.389 425.803 493.549 431.764 c
-493.872 431.891 494.098 432.174 494.383 432.37 c
-495.004 432.796 495.829 432.769 496.473 433.157 c
-506.304 439.084 487.814 448.994 488.218 436.564 c
-488.227 436.277 488.286 435.994 488.306 435.707 c
-488.504 432.882 485.25 429.352 488.143 427.692 c
-491.044 426.028 493.157 430.504 492.596 435.763 c
-492.361 437.968 492.688 440.289 491.688 442.283 c
-491.415 442.826 490.948 443.301 490.411 443.137 c
-489.36 442.814 490.079 441.367 489.575 440.616 c
-489.28 440.177 488.64 440.04 488.467 439.527 c
-483.296 424.169 492.078 448.394 495.428 445.218 c
-496.537 444.167 494.703 442.869 494.779 441.626 c
-494.872 440.072 496.807 439.777 497.267 440.96 c
-498.068 443.024 494.026 442.735 494.229 444.45 c
-494.328 445.287 495.485 445.616 495.519 446.473 c
-495.603 448.628 485.922 444.376 489.581 449.256 c
-490.214 450.099 491.406 449.179 492.259 449.527 c
-493.292 449.949 493.379 452.244 494.777 451.711 c
-495.611 451.393 495.304 450.289 495.134 449.334 c
-494.97 448.41 495.605 447.676 496.191 447.971 c
-496.618 448.185 496.547 448.908 497.03 449.045 c
-498.003 449.323 497.953 447.724 496.645 446.393 c
-495.627 445.357 495.964 443.728 496.661 442.373 c
-499.591 436.675 505.398 440.508 503.536 443.041 c
-502.491 444.462 500.539 442.91 499.075 443.363 c
-495.302 444.53 497.276 450.631 501.473 448.992 c
-503.438 448.224 504.888 444.674 506.774 446.439 c
-507.908 447.5 506.822 449.21 505.375 450.42 c
-503.521 451.971 501.122 452.434 500.61 450.76 c
-500.267 449.638 501.42 448.821 502.148 447.899 c
-509.99 437.965 489.721 434.429 493.974 444.181 c
-494.316 444.966 495.293 445.424 495.304 446.31 c
-495.338 448.893 491.24 447.824 489.122 443.314 c
-486.236 437.168 478.675 440.441 479.998 444.867 c
-480.32 445.947 481.389 446.645 481.691 447.732 c
-482.417 450.343 479.342 451.987 476.19 452.634 c
-474.736 452.932 473.333 453.734 473.604 454.992 c
-473.805 455.921 474.907 456.224 475.445 456.971 c
-476.599 458.572 475.106 460.56 473.224 461.856 c
-472.237 462.535 471.373 463.526 471.925 464.427 c
-474.121 468.008 475.326 461.257 477.339 460.501 c
-478.621 460.019 479.975 461.042 480.026 462.483 c
-480.141 465.702 475.645 466.862 474.096 463.78 c
-472.686 460.976 476.389 458.344 475.683 455.479 c
-474.955 452.53 473.486 449.033 476.023 449.454 c
-480.298 450.165 473.763 455.651 476.549 456.855 c
-478.051 457.505 479.086 455.477 479.16 453.23 c
-479.458 444.143 469.445 443.163 470.972 448.001 c
-471.174 448.641 471.804 449.038 472.481 449.005 c
-473.512 448.954 474.258 448.031 474.291 446.969 c
-474.541 438.934 462.562 445.252 468.99 448.223 c
-469.832 448.612 470.905 447.607 471.662 448.276 c
-478.607 454.416 464.791 448.889 464.355 450.618 c
-464.107 451.598 465.257 452.255 465.397 453.198 c
-465.574 454.388 464.262 456.102 465.655 456.539 c
-466.922 456.937 467.003 455.066 467.091 453.42 c
-467.261 450.24 471.376 450.033 473.854 448.292 c
-475.565 447.09 476.458 444.977 475.725 443.061 c
-475.103 441.435 473.363 440.44 472.938 438.739 c
-472.023 435.082 476.838 433.066 477.301 429.622 c
-478.221 422.785 469.217 424.506 471.101 428.433 c
-471.468 429.199 472.428 429.349 473.308 429.214 c
-476.626 428.704 480.553 427.272 481.126 430.266 c
-481.439 431.901 479.452 433.739 480.773 435.115 c
-482.257 436.66 484.374 434.473 485.452 431.598 c
-486.195 429.615 487.61 427.878 487.848 425.762 c
-488.278 421.945 489.242 418.001 491.691 419.437 c
-494.246 420.935 490.91 423.888 491.301 426.137 c
-491.779 428.895 492.688 432.199 490.568 431.29 c
-487.854 430.126 492.816 427.126 491.017 425.838 c
-489.708 424.901 488.202 427.814 486.894 426.595 c
-486.714 426.427 486.622 426.189 486.601 425.944 c
-485.862 417.349 491.331 429.071 493.806 436.355 c
-494.911 439.606 499.413 440.006 501.217 436.932 c
-502.671 434.455 504.923 433.209 505.312 434.871 c
-505.486 435.612 504.739 436.157 503.947 436.442 c
-499.353 438.096 497.142 433.745 499.187 432.429 c
-501.055 431.228 509.103 448.099 507.85 436.512 c
-507.677 434.912 505.452 435.537 504.358 434.738 c
-503.733 434.282 503.422 433.347 502.617 433.316 c
-501.538 433.273 501.342 434.638 500.937 435.684 c
-500.436 436.976 499.01 437.501 498.283 436.662 c
-497.696 435.985 498.238 435.049 498.353 434.176 c
-498.57 432.522 497.133 431.215 496.806 429.614 c
-496.42 427.72 497.571 425.984 498.414 424.253 c
-499.75 421.508 500.6 418.199 503.452 417.073 c
-503.835 416.922 504.256 416.812 504.513 416.488 c
-505.407 415.362 503.868 414.132 502.142 413.392 c
-499.736 412.361 498.187 410.102 497.22 407.663 c
-494.86 401.708 489.103 402.39 489.543 405.321 c
-489.74 406.632 491.313 406.946 492.734 407.092 c
-494.998 407.324 496.337 409.137 495.305 410.226 c
-492.095 413.616 491.673 405.537 489.472 406.086 c
-487.901 406.478 487.757 408.888 489.607 410.002 c
-492.23 411.581 496.772 412.101 495.002 414.629 c
-493.548 416.705 491.279 413.816 489.123 413.418 c
-487.373 413.095 485.948 414.479 484.465 415.452 c
-483.623 416.004 482.573 416.345 481.865 415.715 c
-479.978 414.036 483.232 411.106 488.123 412.592 c
-490.234 413.234 492.491 412.985 494.661 413.359 c
-496.187 413.621 497.905 413.997 498.804 412.794 c
-499.572 411.764 499.127 410.319 498.062 409.474 c
-495.539 407.471 491.784 408.977 491.293 412.195 c
-491.104 413.437 491.311 414.961 490.147 415.409 c
-481.243 418.837 491.427 406.103 488.384 405.198 c
-486.44 404.621 485.892 407.305 484.681 408.88 c
-482.402 411.846 477.829 410.368 477.799 406.911 c
-477.782 404.936 479.636 403.709 481.142 402.417 c
-487.517 396.944 493.939 400.653 491.611 403.821 c
-490.374 405.506 487.946 404.081 486.152 404.713 c
-484.542 405.281 484.739 407.094 485.764 407.182 c
-486.626 407.256 486.761 406.09 486.602 404.991 c
-486.37 403.387 486.948 401.533 485.757 400.379 c
-484.691 399.346 482.824 399.717 481.83 398.595 c
-480.644 397.256 481.694 395.331 481.498 393.626 c
-481.371 392.521 480.724 391.577 480.074 390.676 c
-479.539 389.935 478.91 389.174 478.006 389.143 c
-477.871 389.138 477.735 389.153 477.603 389.187 c
-474.064 390.106 476.13 397.751 482.684 395.091 c
-483.129 394.91 483.611 394.702 484.034 394.922 c
-490.473 398.262 478.651 397.939 478.883 399.587 c
-479.272 402.348 482.018 399.144 484.503 397.538 c
-485.501 396.893 486.781 397.112 487.907 396.771 c
-489.653 396.243 490.674 394.555 492.107 393.454 c
-493.537 392.354 495.315 391.884 497.005 391.265 c
-499.752 390.259 502.243 388.242 501.593 385.669 c
-501.212 384.162 499.603 383.083 499.754 381.489 c
-499.772 381.299 499.818 381.11 499.789 380.922 c
-499.241 377.378 496.449 382.558 494.696 382.709 c
-488.843 383.211 496.164 378.171 500.579 374.301 c
-501.864 373.174 501.915 371.307 502.468 369.709 c
-504.332 364.32 510.029 367.478 508.376 369.913 c
-507.556 371.121 505.605 369.946 504.671 370.959 c
-503.678 372.038 505.039 373.385 505.554 374.734 c
-506.344 376.802 504.616 379.09 505.493 381.136 c
-507.323 385.408 516.153 381.136 516.994 386.701 c
-517.681 391.243 511.068 392.633 509.868 388.2 c
-508.893 384.601 514.467 383.034 514.293 379.615 c
-514.245 378.664 513.715 377.83 513.392 376.938 c
-512.59 374.728 514.26 373.044 515.453 373.828 c
-516.685 374.637 515.285 376.107 514.461 377.488 c
-513.357 379.34 514.635 381.787 513.549 383.646 c
-513.089 384.434 512.29 384.927 511.504 385.386 c
-509.504 386.554 508.383 388.623 509.738 389.635 c
-510.052 389.87 510.464 389.932 510.781 390.163 c
-511.742 390.866 511.287 392.292 511.768 393.316 c
-513.435 396.873 520.78 394.382 518.678 387.654 c
-518.09 385.769 516.766 384.121 514.851 383.772 c
-510.572 382.994 510.445 388.106 512.873 388.122 c
-514.488 388.132 514.266 384.801 516.113 385.2 c
-516.919 385.375 517.208 386.386 516.62 387.002 c
-515.754 387.909 512.284 387.025 513.31 388.992 c
-513.488 389.335 513.91 389.446 514.299 389.355 c
-518.856 388.292 514.822 380.247 510.345 384.72 c
-509.281 385.783 509.379 387.421 509.211 388.908 c
-509.129 389.63 509.039 390.433 509.605 390.862 c
-510.359 391.433 511.276 390.717 512.174 390.483 c
-514.913 389.77 516.145 392.98 514.392 394.007 c
-512.732 394.98 509.443 387.887 507.978 392.287 c
-507.541 393.598 509.386 394.014 510.261 394.956 c
-519.467 404.876 494.835 408.328 500.918 395.29 c
-502.117 392.719 506.314 393.181 507.313 390.455 c
-508.126 388.236 506.062 386.226 504.214 387.116 c
-503.525 387.447 503.17 388.205 502.541 388.631 c
-501.126 389.59 498.511 388.744 498.003 390.637 c
-497.953 390.824 497.946 391.019 497.956 391.212 c
-498.138 394.5 501.942 396.035 505.646 395.444 c
-509.021 394.907 511.763 392.429 510.731 389.754 c
-510.129 388.196 509.416 386.433 510.755 386.268 c
-512.466 386.056 511.657 388.583 512.474 389.52 c
-512.952 390.067 513.823 390.048 514.31 390.585 c
-515.598 392.003 511.445 395.659 514.601 396.506 c
-515.847 396.84 518.697 393.618 518.76 396.251 c
-518.782 397.164 517.537 397.1 516.838 397.567 c
-513.32 399.918 520.938 403.199 518.618 405.53 c
-518.296 405.854 517.812 405.982 517.436 405.746 c
-514.572 403.943 519.618 404.084 523.258 404.322 c
-523.986 404.37 524.682 403.964 524.871 403.274 c
-525.084 402.494 524.517 401.757 524.482 400.964 c
-524.367 398.395 532.085 393.221 526.441 393.06 c
-526.048 393.049 525.686 393.252 525.296 393.292 c
-523.447 393.487 522.93 391.226 524.237 390.689 c
-524.974 390.387 525.999 391.302 526.564 390.556 c
-527.13 389.809 526.102 388.739 524.587 388.952 c
-521.369 389.404 520.88 392.537 522.529 393.041 c
-524.008 393.492 524.856 390.458 526.429 391.375 c
-527.858 392.208 525.943 394.47 527.209 395.37 c
-529.891 397.279 528.569 392.453 528.393 388.99 c
-528.148 384.164 534.57 385.801 533.113 388.825 c
-532.581 389.928 530.282 389.419 530.236 390.914 c
-530.176 392.866 532.719 391.429 534.632 391.279 c
-536.418 391.14 537.266 393.087 536.187 393.972 c
-535.756 394.326 535.142 394.265 534.647 393.983 c
-530.386 391.553 537.375 384.948 533.345 382.45 c
-529.292 379.937 525.014 386.524 529.9 389.439 c
-531.069 390.136 532.806 390.362 532.83 391.745 c
-532.926 397.378 526.659 390.582 524.51 391.586 c
-522.971 392.305 521.222 393.362 521.185 391.967 c
-521.16 391.003 523.243 391.02 522.869 389.877 c
-521.746 386.442 519.807 393.448 518.578 391.614 c
-518.424 391.385 518.455 391.087 518.596 390.846 c
-520.362 387.802 522.436 393.08 524.408 393.158 c
-526.478 393.241 527.094 389.773 529.254 390.13 c
-530.211 390.289 531.137 391.367 531.946 390.686 c
-532.191 390.479 532.28 390.142 532.508 389.917 c
-533.922 388.526 535.115 391.329 536.559 391.435 c
-539.022 391.616 538.267 388.15 539.169 386.114 c
-539.739 384.827 541.107 384.191 542.485 383.847 c
-544.29 383.396 546.271 383.384 547.656 384.596 c
-550.455 387.046 548.517 391.11 545.649 390.55 c
-542.729 389.979 542.507 385.376 546.115 384.256 c
-549.139 383.318 551.598 386.129 553.67 388.727 c
-555.869 391.483 559.218 391.16 559.305 389.096 c
-559.397 386.922 556.367 387.28 553.596 388.09 c
-552.414 388.435 551.142 388.384 550.034 387.847 c
-547.836 386.782 546.419 383.904 543.886 384.326 c
-541.812 384.671 540.575 387.497 538.367 386.98 c
-535.275 386.257 537.175 378.59 532.654 379.608 c
-530.412 380.112 531.103 383.059 531.057 385.469 c
-531.044 386.116 531.041 386.851 531.615 387.068 c
-539.673 390.102 527.651 381.041 530.664 380.312 c
-531.325 380.152 531.837 380.807 532.044 381.538 c
-532.249 382.261 532.299 383.029 532.075 383.746 c
-531.903 384.298 531.475 384.762 530.98 384.613 c
-529.878 384.279 530.951 383.005 531.464 381.86 c
-536.714 370.167 513.275 376.767 523.35 386.68 c
-523.753 387.077 524.23 387.387 524.718 387.67 c
-529.838 390.642 532.231 384.025 529.001 383.822 c
-528.383 383.784 527.926 384.32 527.691 384.922 c
-526.754 387.32 528.457 390.255 526.877 392.398 c
-525.881 393.75 523.966 394.005 522.867 395.261 c
-521.684 396.612 520.151 397.469 519.756 396.317 c
-519.425 395.348 520.786 394.837 522.243 395.016 c
-527.675 395.682 530.594 399.346 527.954 400.636 c
-526.918 401.143 525.429 400.177 524.636 401.171 c
-523.336 402.799 526.31 403.882 526.533 405.44 c
-526.892 407.941 523.397 407.719 520.738 408.26 c
-518.82 408.65 517.38 410.303 517.719 412.147 c
-518.105 414.239 520.785 415.221 520.949 417.38 c
-521.062 418.873 519.892 420.153 518.394 420.174 c
-S
-0 1 0 rg
-398.5 312 m
-398.5 312.398 398.342 312.779 398.061 313.061 c
-397.779 313.342 397.398 313.5 397 313.5 c
-396.602 313.5 396.221 313.342 395.939 313.061 c
-395.658 312.779 395.5 312.398 395.5 312 c
-395.5 311.602 395.658 311.221 395.939 310.939 c
-396.221 310.658 396.602 310.5 397 310.5 c
-397.398 310.5 397.779 310.658 398.061 310.939 c
-398.342 311.221 398.5 311.602 398.5 312 c
-f
-1 0 0 rg
-519.894 420.174 m
-519.894 420.572 519.736 420.953 519.454 421.235 c
-519.173 421.516 518.791 421.674 518.394 421.674 c
-517.996 421.674 517.614 421.516 517.333 421.235 c
-517.052 420.953 516.894 420.572 516.894 420.174 c
-516.894 419.776 517.052 419.395 517.333 419.113 c
-517.614 418.832 517.996 418.674 518.394 418.674 c
-518.791 418.674 519.173 418.832 519.454 419.113 c
-519.736 419.395 519.894 419.776 519.894 420.174 c
-f
-0.667 0.667 1 RG
-397 312 m
-397.509 312.085 397.974 312.342 398.318 312.727 c
-399.796 314.382 398.816 317.034 396.576 317.392 c
-396.363 317.426 396.147 317.431 395.932 317.421 c
-392.282 317.245 387.934 313.192 385.937 316.833 c
-385.384 317.84 385.624 319.097 386.504 319.837 c
-387.122 320.357 388.003 320.493 388.57 319.969 c
-389.879 318.757 384.236 313.145 388.999 313.483 c
-389.427 313.514 389.923 313.793 390.163 313.425 c
-390.443 312.994 389.853 312.63 389.289 312.356 c
-386.145 310.826 389.54 306.599 388.001 304.297 c
-387.254 303.181 385.521 302.534 385.854 301.146 c
-386.654 297.818 393.831 300.38 390.607 306.396 c
-388.439 310.441 390.289 314.026 392.401 312.892 c
-393.256 312.432 393.371 311.262 392.614 310.714 c
-392.07 310.32 391.313 310.541 390.713 310.257 c
-389.184 309.534 387.805 305.758 386.83 308.067 c
-386.773 308.202 386.763 308.35 386.745 308.495 c
-386.641 309.347 386.247 310.132 385.663 310.76 c
-383.72 312.854 380.406 312.867 378.605 310.709 c
-377.792 309.734 377.484 308.428 377.817 307.204 c
-378.344 305.267 380.4 304.364 381.584 305.514 c
-382.652 306.553 382.015 309.495 383.974 309.187 c
-385.321 308.975 385.028 305.18 387.06 306.239 c
-388.539 307.011 387.207 309.568 385.405 308.427 c
-383.824 307.427 384.825 304.591 387.339 304.867 c
-389.774 305.135 390.659 308.076 388.882 309.427 c
-387.762 310.279 386.17 309.798 385.268 308.612 c
-384.458 307.546 384.344 306.067 385.292 305.218 c
-386.511 304.126 388.237 305.022 389.833 305.427 c
-391.824 305.931 394.262 305.641 395.329 307.432 c
-396.206 308.903 395.35 310.665 395.367 312.344 c
-395.389 314.509 396.878 316.374 397.045 318.527 c
-397.35 322.453 395.292 327.749 399.275 328.046 c
-402.501 328.286 402.484 323.799 404.506 321.77 c
-405.918 320.354 408.173 320.302 409.726 319.061 c
-411.788 317.412 412.073 314.378 410.298 312.453 c
-408.926 310.966 406.617 310.701 405.342 309.12 c
-404.205 307.711 404.229 305.778 404.633 303.999 c
-405.146 301.74 407.343 301.465 407.651 302.649 c
-407.803 303.236 407.214 303.675 407.02 304.227 c
-403.705 313.691 421.075 307.562 412.551 301.665 c
-410.526 300.264 406.894 304.459 405.3 301.491 c
-404.566 300.122 406.204 298.57 405.554 297.184 c
-404.773 295.52 402.322 295.975 400.644 297.662 c
-398.555 299.764 397.161 302.677 398.48 305.191 c
-401.74 311.407 397.681 319.083 396.281 313.866 c
-396.167 313.442 396.339 313.002 396.303 312.567 c
-396.157 310.794 393.83 310.495 391.704 311.109 c
-390.703 311.398 389.602 311.264 389.518 310.423 c
-389.373 308.977 391.41 309.509 393.276 310.378 c
-395.533 311.429 399.153 308.894 400.481 311.6 c
-401.214 313.094 399.835 314.534 398.643 313.926 c
-397.714 313.452 397.782 312.06 398.81 311.523 c
-399.572 311.126 400.557 311.471 401.272 310.98 c
-401.458 310.852 401.604 310.677 401.772 310.529 c
-406.593 306.278 412.976 315.682 405.626 318.725 c
-401.403 320.474 392.899 319.023 396.182 323.43 c
-397.286 324.911 400.94 323.886 400.87 326.341 c
-400.809 328.488 397.003 327.843 396.834 329.909 c
-396.757 330.855 397.79 331.619 397.557 332.565 c
-397.108 334.392 393.692 334.15 393.075 330.845 c
-392.658 328.611 393.332 326.267 392.652 324.091 c
-391.782 321.309 389.051 318.571 390.942 316.231 c
-392.112 314.783 395.003 314.44 394.576 312.386 c
-394.298 311.053 391.913 309.946 393.163 308.719 c
-395.796 306.135 395.174 312.137 396.644 313.307 c
-398.567 314.838 401.489 311.763 400.04 307.388 c
-397.615 300.067 388.847 304.209 392.532 307.18 c
-393.096 307.634 393.912 307.394 394.565 307.673 c
-395.429 308.041 395.672 309.056 396.081 309.895 c
-396.859 311.487 398.553 312.483 400.032 311.756 c
-400.625 311.464 401.091 310.874 401.762 310.863 c
-404.13 310.826 404.01 315.322 399.176 316.81 c
-393.661 318.509 395.003 324.283 397.889 323.902 c
-399.675 323.666 399.672 321.33 399.37 319.243 c
-399.238 318.333 399.152 317.327 398.384 316.832 c
-396.771 315.793 395.305 317.992 393.605 318.153 c
-391.344 318.367 389.801 315.804 390.944 313.592 c
-391.619 312.286 393.131 311.107 392.351 309.825 c
-390.906 307.451 385.763 310.154 388.415 314.813 c
-390.091 317.756 393.396 319.142 396.704 319.933 c
-399.646 320.637 402.942 320.329 403.742 317.743 c
-404.873 314.088 400.11 312.145 395.259 311.731 c
-393.182 311.554 391.016 311.165 389.151 312.112 c
-387.524 312.938 387.328 314.817 388.485 315.235 c
-390.656 316.02 390.269 312.029 391.928 311.977 c
-397.392 311.804 390.507 317.595 391.482 319.239 c
-393.424 322.513 395.62 317.033 398.297 315.472 c
-399.591 314.718 401.19 315.163 402.631 314.827 c
-404.302 314.438 405.537 313.071 407.133 312.461 c
-408.609 311.897 410.326 312.083 411.201 313.333 c
-412.478 315.158 411.234 317.707 408.864 318.24 c
-408.053 318.423 407.213 318.321 406.383 318.361 c
-401.831 318.582 401.323 323.337 403.767 323.991 c
-405.495 324.454 408.323 319.901 409.498 322.99 c
-410.251 324.969 405.686 325.318 406.723 327.412 c
-408.033 330.058 412.862 326.647 409.416 323.836 c
-407.35 322.15 405.437 324.628 406.637 325.736 c
-407.124 326.185 408.262 326.161 408.044 326.911 c
-407.834 327.632 406.44 327.42 406.286 325.984 c
-406.118 324.423 406.985 322.962 408.266 323.182 c
-417.079 324.692 403.461 330.119 404.388 332.297 c
-405.956 335.982 410.072 331.111 412.501 332.127 c
-414.587 332.999 414.823 337.5 417.611 336.497 c
-418.777 336.077 418.983 334.453 420.13 333.999 c
-422.286 333.146 423.338 336.381 425.31 336.634 c
-426.035 336.727 426.751 336.403 427.478 336.481 c
-429.784 336.727 431.392 335.531 430.305 334.869 c
-429.692 334.495 429.081 335.465 428.46 335.196 c
-427.328 334.705 428.424 332.288 430.875 333.323 c
-432.729 334.107 434.897 334.687 435.945 333.166 c
-437.636 330.712 434.451 327.493 431.618 329.471 c
-429.371 331.04 430.338 336.2 426.87 336.049 c
-426.372 336.027 425.912 335.802 425.525 335.487 c
-423.323 333.692 422.737 328.96 419.66 330.175 c
-417.794 330.912 417.938 334.376 415.636 334.361 c
-408.397 334.314 414.046 322.327 419.232 328.706 c
-420.726 330.544 422.693 331.445 422.656 329.999 c
-422.639 329.338 421.812 329.15 421.031 329.233 c
-416.619 329.702 412.767 327.394 413.893 324.424 c
-414.543 322.71 416.632 322.404 418.521 322.226 c
-420.446 322.045 422.493 321.523 423.167 319.772 c
-428.005 307.203 402.41 314.858 416.163 320.419 c
-416.615 320.602 417.225 320.523 417.447 320.976 c
-417.768 321.631 416.862 322.099 416.784 322.74 c
-415.979 329.35 420.287 319.302 422.658 318.571 c
-423.562 318.292 424.467 318.974 424.388 319.884 c
-423.924 325.216 417.748 317.583 416.364 320.131 c
-415.717 321.323 416.878 322.761 418.504 322.691 c
-422.692 322.512 423.112 316.794 419.399 316.002 c
-418.749 315.863 418.033 316.024 417.457 315.678 c
-412.181 312.513 416.126 289.311 415.727 304.087 c
-415.706 304.858 416.608 305.822 415.798 306.236 c
-414.966 306.663 414.322 304.583 413.43 305.381 c
-412.502 306.211 414.441 306.953 414.199 307.737 c
-411.912 315.138 412.241 302.659 410.631 303.178 c
-410.36 303.265 410.187 303.511 410.002 303.727 c
-407.011 307.231 401.559 304.763 402.198 300.627 c
-402.556 298.314 405.019 297.204 407.474 296.929 c
-408.516 296.812 409.286 297.482 408.924 298.047 c
-408.395 298.873 407.668 297.643 406.931 296.755 c
-403.754 292.925 401.763 301.842 399.033 300.288 c
-396.419 298.801 398.769 294.801 401.427 296.466 c
-403.134 297.536 402.017 299.927 400.567 301.867 c
-398.736 304.315 400.187 306.901 401.795 306.306 c
-403.51 305.671 402.015 302.907 403.491 302.111 c
-405.255 301.159 406.465 304.615 408.215 303.762 c
-410.534 302.633 408.429 299.217 406.367 300.797 c
-405.155 301.726 406.435 303.586 405.634 304.719 c
-402.004 309.852 402.145 300.539 404.954 293.493 c
-405.459 292.227 405.217 290.835 404.994 289.493 c
-404.399 285.908 402.899 282.191 399.687 282.469 c
-396 282.788 395.917 287.513 394.988 291.243 c
-394.685 292.462 394.151 293.645 394.2 294.905 c
-394.261 296.478 394.731 298.352 393.307 298.819 c
-392.771 298.995 392.214 298.761 391.659 298.689 c
-388.882 298.329 387.355 301.306 385.64 303.589 c
-384.361 305.292 382.23 306.042 381.231 304.67 c
-378.668 301.152 385.69 297.667 386.845 302.979 c
-387.018 303.774 386.728 304.611 386.95 305.397 c
-387.2 306.282 388.052 306.917 388.138 307.843 c
-388.806 315.056 380.152 306.935 377.145 308.244 c
-374.134 309.555 371.304 317.329 369.437 312.554 c
-368.755 310.807 371.081 309.929 373.025 309.069 c
-374.641 308.354 376.505 307.659 377.055 309.053 c
-377.438 310.023 376.379 310.958 376.617 311.944 c
-376.93 313.243 379.08 314.786 377.455 315.289 c
-376.683 315.528 376.224 314.382 375.469 314.484 c
-374.023 314.678 375.225 316.497 375.114 317.744 c
-374.912 320.017 370.967 320.464 369.772 317.049 c
-367.671 311.038 375.023 305.81 380.503 310.059 c
-382.469 311.584 383.237 314.249 381.918 316.258 c
-378.881 320.885 374.147 315.771 376.843 313.804 c
-377.701 313.178 379.471 313.922 379.737 312.645 c
-379.792 312.378 379.696 312.112 379.582 311.864 c
-377.579 307.498 373.043 310.52 374.536 312.498 c
-374.946 313.04 375.777 312.968 376.256 313.435 c
-377.128 314.287 376.5 315.837 375.072 316.144 c
-372.339 316.732 370.883 312.921 368.242 312.958 c
-367.376 312.97 366.522 313.434 365.688 313.164 c
-364.193 312.68 364.245 310.727 363.414 309.477 c
-362.973 308.812 362.287 308.373 361.6 307.97 c
-360.971 307.601 360.29 307.247 359.573 307.376 c
-358.158 307.63 357.457 309.671 355.927 309.407 c
-354.909 309.231 354.497 308.023 353.57 307.626 c
-351.565 306.767 349.464 309.196 350.687 311.606 c
-350.994 312.21 351.511 312.714 351.628 313.386 c
-352.012 315.591 348.595 316.507 348.809 318.669 c
-349.114 321.75 357.544 328.633 351.222 326.644 c
-350.678 326.473 350.393 325.905 350.375 325.32 c
-350.307 323.089 352.898 321.857 354.52 323.305 c
-356.957 325.481 354.325 330.188 349.855 328.893 c
-347.77 328.289 345.971 326.289 343.841 326.995 c
-341.6 327.738 341.008 330.658 342.759 332.368 c
-345.044 334.601 350.7 335.397 348.253 338.231 c
-346.887 339.811 340.367 339.412 343.433 341.96 c
-344.256 342.644 345.211 341.648 346.172 341.15 c
-360.05 333.946 356.162 361.409 345.366 350.641 c
-345.034 350.31 344.832 349.879 344.655 349.445 c
-344.285 348.54 344.008 347.598 343.626 346.697 c
-336.48 329.814 311.069 357.19 331.616 353.345 c
-332.145 353.246 332.589 352.916 333.057 352.654 c
-334.03 352.108 335.247 352.011 335.758 352.874 c
-337.35 355.565 332.751 355.199 328.407 353.484 c
-324.207 351.826 320.887 357.838 316.693 356.731 c
-312.638 355.66 310.093 358.43 312.098 359.248 c
-312.909 359.58 314.553 358.11 314.777 359.482 c
-315.218 362.185 311.328 358.812 311.015 360.268 c
-310.789 361.321 312.33 361.136 313.766 360.742 c
-315.947 360.145 318.784 363.867 320.502 361.369 c
-322.454 358.532 317.419 358.153 313.259 357.433 c
-310.623 356.977 308.993 354.308 310.012 351.936 c
-310.927 349.803 313.848 349.1 314.417 346.8 c
-314.928 344.734 314.522 341.795 316.568 342.171 c
-317.345 342.314 317.863 343.286 318.681 343.095 c
-319.409 342.925 319.551 341.952 320.21 341.651 c
-324.662 339.617 322.175 347.66 315.541 347.899 c
-312.927 347.993 310.899 350.034 309.971 352.533 c
-309.04 355.044 308.685 358.208 306.093 358.814 c
-303.709 359.371 301.982 357.027 299.863 355.928 c
-298.244 355.089 296.236 355.159 295.358 356.612 c
-294.516 358.004 295.276 359.781 296.782 360.62 c
-303.283 364.242 305.576 354.727 300.768 354.33 c
-299.09 354.191 298.512 356.277 297.214 357.175 c
-293.922 359.455 290.983 354.61 287.529 354.349 c
-284.108 354.09 281.873 357.596 283.609 360.129 c
-284.189 360.974 285.271 361.565 285.234 362.614 c
-285.21 363.274 284.678 363.829 284.718 364.493 c
-285.112 370.964 291.257 362.23 293.246 363.297 c
-296.325 364.948 292.832 371.073 285.626 368.613 c
-283.944 368.039 282.524 366.814 283.255 365.61 c
-286.427 360.385 296.872 389.414 292.909 371.46 c
-292.756 370.764 291.99 370.504 291.351 370.18 c
-280.216 364.528 292.856 350.928 298.767 359.487 c
-299.603 360.698 299.466 362.265 299.779 363.691 c
-300.003 364.709 300.435 365.782 299.902 366.68 c
-296.362 372.641 287.456 362.075 296.561 359.074 c
-298.917 358.297 301.251 359.771 303.036 361.59 c
-304.296 362.874 305.944 363.972 307.097 362.911 c
-307.928 362.146 307.593 360.61 308.595 360.003 c
-311.543 358.219 311.103 363.277 309.418 368.026 c
-308.032 371.932 310.662 379.372 305.76 377.941 c
-304.979 377.713 304.472 377.025 303.942 376.412 c
-301.975 374.139 299.159 372.026 299.901 369.134 c
-300.621 366.33 303.939 366.202 304.513 368.185 c
-304.618 368.547 304.545 368.953 304.234 369.145 c
-303.416 369.65 302.306 368.439 303 366.96 c
-304.427 363.921 307.961 360.752 305.065 359.132 c
-303.482 358.247 301.187 360.158 299.855 358.638 c
-299.357 358.069 299.406 357.239 299.11 356.552 c
-298.785 355.794 298.086 355.275 297.282 355.083 c
-295.754 354.718 294.011 355.553 292.689 354.621 c
-291.182 353.559 291.443 350.717 289.441 350.344 c
-287.727 350.025 286.787 352.181 285.175 352.452 c
-282.212 352.95 281.408 348.376 278.667 348.204 c
-276.588 348.074 275.331 350.534 273.29 350.638 c
-269.5 350.83 268.312 345.222 271.689 340.447 c
-272.073 339.904 272.491 339.35 273.122 339.138 c
-275.551 338.319 277.818 344.37 280.409 341.531 c
-283.083 338.602 276.852 337.288 276.654 334.853 c
-276.609 334.309 276.805 333.787 276.997 333.277 c
-277.332 332.388 277.664 331.476 277.617 330.525 c
-277.585 329.874 277.373 329.244 276.992 328.715 c
-276.774 328.413 276.505 328.152 276.269 327.864 c
-273.614 324.627 274.376 317.763 269.535 318.114 c
-268.118 318.216 266.675 319.349 265.456 318.504 c
-264.618 317.924 264.574 316.728 265.378 316.264 c
-266.855 315.411 269.572 322.402 271.017 318.203 c
-271.12 317.905 271.033 317.571 270.781 317.384 c
-268.094 315.391 270.305 320.366 269.73 322.291 c
-269.387 323.436 267.49 323.699 267.596 325.021 c
-268.032 330.457 275.695 324.782 270.712 322.843 c
-270.002 322.567 269.348 323.165 268.765 323.694 c
-265.746 326.434 261.164 326.204 259.732 322.935 c
-258.33 319.738 261.166 316.39 265.038 315.445 c
-266.708 315.037 268.569 314.934 269.73 313.653 c
-271.051 312.193 271.029 309.522 273.051 308.99 c
-276 308.214 286.408 319.995 283.809 310.835 c
-283.443 309.546 280.808 308.803 281.904 307.378 c
-282.603 306.469 283.873 307.337 284.837 308.403 c
-285.982 309.668 287.575 310.392 288.932 311.419 c
-289.764 312.049 290.514 312.895 290.353 313.9 c
-290.05 315.791 287.425 316.332 286.049 314.569 c
-285.268 313.568 285.286 312.158 286.11 311.198 c
-287.676 309.375 289.447 307.328 287.639 306.906 c
-285.918 306.505 286.2 309.297 284.977 309.74 c
-283.583 310.245 282.95 308.377 282.349 306.789 c
-281.408 304.303 278.437 303.08 277.75 300.488 c
-276.5 295.77 282.113 294.347 283.159 297.253 c
-284.47 300.898 278.467 299.984 276.967 302.102 c
-275.551 304.101 277.211 306.929 279.959 306.964 c
-281.024 306.978 282.196 306.548 283.011 307.259 c
-284.429 308.495 282.787 310.418 282.782 312.14 c
-282.776 313.897 284.477 315.152 284.669 316.881 c
-284.731 317.435 284.627 318.005 284.789 318.54 c
-285.545 321.023 288.845 319.979 291.723 319.001 c
-293.193 318.502 294.548 317.561 293.935 316.493 c
-293.07 314.987 291.248 316.723 290.026 318.99 c
-288.598 321.641 285.059 322.174 282.408 320.464 c
-279.496 318.585 276.268 316.026 274.87 318.659 c
-273.991 320.315 275.805 323.824 273.234 323.866 c
-272.635 323.875 272.173 323.398 271.615 323.199 c
-265.431 320.991 263.76 334.597 273.955 332.667 c
-274.646 332.536 275.321 332.275 276.025 332.318 c
-278.102 332.446 279.244 334.627 279.352 336.87 c
-279.423 338.356 279.065 339.923 277.79 340.615 c
-277.084 340.998 276.129 341.068 275.812 341.825 c
-274.951 343.881 279.203 345.844 281.493 341.688 c
-285.319 334.749 272.732 331.112 275.908 337.329 c
-276.088 337.682 276.478 337.878 276.666 338.227 c
-278.123 340.93 273.079 342.275 273.095 338.915 c
-273.104 337.05 275.626 337.455 277.691 337.407 c
-279.867 337.356 281.444 335.569 283.314 334.503 c
-286.537 332.667 287.819 329.555 285.722 328.867 c
-281.306 327.42 284.363 336.022 280.997 335.728 c
-278.688 335.526 278.382 331.26 282.415 329.924 c
-285.815 328.797 289.535 330.095 289.845 333.176 c
-290.263 337.329 285.207 337.12 285.313 334.608 c
-285.326 334.303 285.542 334.053 285.779 334.138 c
-286.132 334.265 285.884 334.718 285.684 335.118 c
-281.976 342.553 291.832 333.151 293.778 333.984 c
-295.878 334.883 292.37 341.36 296.607 340.597 c
-298.788 340.204 297.285 336.761 298.979 335.967 c
-302.343 334.39 300.885 339.677 299.217 344.307 c
-298.13 347.324 296.421 350.048 295.175 348.23 c
-294.834 347.731 294.983 347.05 295.491 346.711 c
-296.823 345.821 300.284 349.969 300.867 346.754 c
-301.031 345.848 299.762 345.222 300.019 344.309 c
-300.187 343.708 301.05 343.415 300.952 342.748 c
-300.857 342.11 299.955 342.023 299.756 341.437 c
-297.655 335.259 305.181 343.063 305.949 341.496 c
-307.392 338.548 302.071 339.982 301.682 338.457 c
-300.628 334.324 306.128 338.575 308.524 338.069 c
-310.241 337.706 310.453 335.59 310.698 333.754 c
-310.925 332.06 311.558 330.423 311.534 328.71 c
-311.517 327.531 311.13 326.324 310.101 325.797 c
-309.265 325.369 308.291 325.565 307.397 325.862 c
-304.866 326.704 302.556 328.36 301.942 330.922 c
-299.515 341.057 313.81 339.31 310.872 332.991 c
-310.409 331.998 309.185 331.748 308.384 331.03 c
-306.48 329.323 307.337 325.234 304.466 324.67 c
-299.284 323.653 297.639 333.88 305.831 333.795 c
-315.77 333.692 312.99 320.693 306.248 322.742 c
-304.411 323.3 303.522 325.86 301.487 325.688 c
-297.878 325.382 299.705 320.585 301.418 316.325 c
-301.878 315.18 302.041 313.883 302.88 312.968 c
-304.342 311.372 307.376 311.539 308.043 309.324 c
-308.48 307.874 309.026 306.295 309.959 307.001 c
-310.716 307.574 309.827 308.522 308.985 309.327 c
-306.737 311.478 309.089 314.865 308.422 317.654 c
-307.801 320.252 304.63 322.457 306.12 324.953 c
-306.436 325.482 306.956 325.858 307.557 325.996 c
-309.52 326.448 311.164 324.405 313.131 324.632 c
-317.489 325.133 317.083 331.266 313.096 331.305 c
-310.931 331.326 310.168 328.808 309.213 326.787 c
-308.388 325.042 307.108 323.205 308.112 321.586 c
-308.414 321.1 308.931 320.757 309.474 320.88 c
-309.958 320.99 310.246 321.442 310.59 321.795 c
-311.506 322.735 312.862 322.993 314.178 323.004 c
-317.163 323.031 319.231 324.867 318.045 326.239 c
-316.716 327.776 315.19 325.332 313.764 323.295 c
-312.516 321.512 310.09 321.262 308.327 320.041 c
-296.9 312.124 312.871 300.896 316.039 310.105 c
-316.464 311.34 316.217 313.09 317.544 313.307 c
-323.101 314.218 316.578 306.378 319.249 305.576 c
-322.2 304.689 333.76 311.708 326.939 306.81 c
-326.655 306.606 326.278 306.648 325.95 306.538 c
-323.924 305.86 325.294 302.997 328.136 301.088 c
-329.451 300.205 330.421 298.898 330.912 297.392 c
-331.062 296.931 331.19 296.427 331.598 296.162 c
-332.432 295.621 333.402 296.49 334.325 296.332 c
-336.774 295.913 334.158 288.753 338.29 290.073 c
-339.483 290.454 339.533 292.072 338.433 292.477 c
-337.734 292.735 336.814 292.104 336.273 292.717 c
-335.063 294.088 337.788 296.107 338.862 293.844 c
-339.017 293.518 339.017 293.149 339.012 292.79 c
-339.003 291.989 338.898 291.114 338.203 290.764 c
-336.637 289.974 335.755 292.417 334.297 292.56 c
-334.049 292.585 333.798 292.542 333.578 292.424 c
-332.283 291.728 333.044 289.937 332.601 288.658 c
-332.185 287.458 330.854 286.96 330.003 286.045 c
-329.469 285.472 328.97 284.712 328.211 284.852 c
-325.755 285.305 328.629 287.691 330.476 289.885 c
-337.748 298.527 317.099 304.513 319.228 290.8 c
-319.414 289.6 320.562 289.225 320.913 289.863 c
-321.356 290.667 320.03 290.833 319.346 291.359 c
-317.739 292.594 320.206 294.173 321.09 295.877 c
-321.28 296.244 321.368 296.654 321.35 297.067 c
-321.231 299.759 317.822 300.373 316.299 302.391 c
-313.732 305.791 311.027 310.072 309.511 306.978 c
-308.026 303.947 313.227 303.964 314.547 301.93 c
-314.945 301.318 315.009 300.528 314.569 299.963 c
-312.637 297.485 301.367 315.84 303.9 302.931 c
-304.134 301.736 305.642 301.696 306.912 301.521 c
-312.358 300.771 314.559 305.919 311.528 305.836 c
-311.144 305.826 310.817 305.565 310.687 305.201 c
-310.184 303.792 312.677 302.749 311.931 301.319 c
-311.895 301.255 l
-310.56 298.928 310.052 296.067 312.099 295.045 c
-313.976 294.107 317.844 295.817 317.694 293.052 c
-317.617 291.64 314.685 290.928 315.713 289.307 c
-316.782 287.621 318.231 290.179 319.814 291.556 c
-322.611 293.988 326.241 296.944 323.104 297.009 c
-322.614 297.02 322.239 296.629 321.787 296.457 c
-316.079 294.284 318.038 304.686 327.971 306.929 c
-329.709 307.321 331.288 308.394 331.722 310.093 c
-332.194 311.939 330.326 312.614 329.87 311.718 c
-329.456 310.906 330.891 310.407 330.677 309.624 c
-330.299 308.247 328.618 309.622 327.874 311.962 c
-325.078 320.759 310.853 310.326 320.914 304.023 c
-321.393 303.723 321.992 303.714 322.126 304.147 c
-322.277 304.635 321.659 304.934 321.002 304.959 c
-319.658 305.01 318.264 305.327 317.037 304.756 c
-313.986 303.335 314.969 299.086 313.324 296.408 c
-312.042 294.32 309.519 293.592 307.404 292.393 c
-306.084 291.644 304.891 290.676 303.503 290.058 c
-301.857 289.325 299.974 289.127 298.374 289.939 c
-295.329 291.485 295.057 295.361 294.028 298.601 c
-293.323 300.821 292.105 302.89 291.865 305.213 c
-291.336 310.358 285.965 310.245 286.825 307.729 c
-287.155 306.764 290.195 306.598 288.923 305.209 c
-287.366 303.509 287.156 307.286 286.141 307.458 c
-284.292 307.77 283.918 303.768 287.947 303.24 c
-289.804 302.996 291.734 302.609 293.445 303.385 c
-295.96 304.525 298.538 307.27 300.196 305.091 c
-302.298 302.326 296.02 299.494 298.261 296.723 c
-299.942 294.645 302.62 297.373 304.865 297.024 c
-307.188 296.664 308.148 293.957 307.611 291.402 c
-307.448 290.626 307.179 289.874 307.066 289.089 c
-306.177 282.943 312.868 279.075 317.028 282.668 c
-317.754 283.295 318.234 284.14 318.777 284.928 c
-319.699 286.265 320.893 287.49 322.492 287.736 c
-331.761 289.163 329.02 275.955 322.939 279.226 c
-322.046 279.707 321.71 280.803 322.047 281.779 c
-322.967 284.445 326.7 284.398 327.51 281.785 c
-328.091 279.907 326.735 276.789 329.037 276.721 c
-329.474 276.708 329.875 276.96 330.311 276.968 c
-333.696 277.025 330.932 272.459 332.021 270.54 c
-335.273 264.809 343.943 273.046 336.908 276.932 c
-334.724 278.138 332.463 276.273 333.215 274.468 c
-334.038 272.492 337.218 273.029 337.362 275.55 c
-337.623 280.122 328.74 281.25 328.199 273.643 c
-328.053 271.594 328.919 269.561 328.527 267.537 c
-328.015 264.887 326.06 261.888 328.36 260.477 c
-329.857 259.559 331.729 260.894 333.317 260.261 c
-336.082 259.158 335.665 254.81 332.128 252.711 c
-330.499 251.744 328.618 251.295 326.969 250.364 c
-322.704 247.958 321.551 242.679 324.86 240.461 c
-331.716 235.864 334.58 247.136 328.701 247.053 c
-327.824 247.04 327.009 246.27 326.167 246.619 c
-324.78 247.193 325.625 249.071 325.145 250.325 c
-324.962 250.804 324.586 251.177 324.135 251.423 c
-322.543 252.29 320.382 251.463 318.979 252.681 c
-306.95 263.121 336.382 267.896 326.612 254.849 c
-325.868 253.855 324.384 254.16 323.34 253.571 c
-322.03 252.83 321.449 250.718 319.829 251.003 c
-318.532 251.232 318.14 252.829 318.538 254.285 c
-318.92 255.682 319.757 256.943 321.049 257.589 c
-323.779 258.955 324.975 255.799 323.516 255.238 c
-323.193 255.113 322.84 255.255 322.594 255.508 c
-317.037 261.243 330.925 263.966 327.944 256.559 c
-327.249 254.83 324.779 255.775 323.499 254.741 c
-323.062 254.388 322.829 253.817 323.094 253.35 c
-325.779 248.629 325.327 257.59 326.899 258.506 c
-327.834 259.051 329.077 258.195 329.98 258.823 c
-333.178 261.044 326.825 265.924 322.107 260.106 c
-318.964 256.229 322.322 252.837 323.789 254.6 c
-324.75 255.755 319.444 264.99 324.262 260.578 c
-324.799 260.087 325.207 258.951 325.609 259.628 c
-325.77 259.9 325.487 260.194 325.137 260.345 c
-323.594 261.007 321.731 261.503 321.421 263.132 c
-320.866 266.047 324.965 267.931 327.245 265.116 c
-330.748 260.793 334.694 253.636 335.248 258.99 c
-335.542 261.823 328.184 260.548 329.737 264.253 c
-330.236 265.445 332.384 265.333 332.478 266.774 c
-332.677 269.83 329.041 266.876 326.153 265.966 c
-324.493 265.443 321.987 266.444 321.545 264.561 c
-320.991 262.197 325.381 260.582 326.962 264.451 c
-327.141 264.891 327.265 265.379 327.641 265.672 c
-329.793 267.346 331.665 260.194 334.012 263.187 c
-335.247 264.762 332.458 265.697 331.66 267.184 c
-331.614 267.269 331.575 267.358 331.533 267.446 c
-330.118 270.468 326.458 271.361 324.775 269.123 c
-324.532 268.8 324.367 268.414 324.048 268.164 c
-322.097 266.632 319.092 269.746 321.539 272.188 c
-322.601 273.248 324.307 273.209 325.541 272.291 c
-327.849 270.573 327.745 267.132 325.745 264.813 c
-324.674 263.572 323.232 262.292 323.935 260.879 c
-325.333 258.073 329.716 260.231 328.171 263.219 c
-327.398 264.714 325.361 264.359 323.852 264.95 c
-321.864 265.729 321.113 267.947 320.097 269.814 c
-318.812 272.175 317.732 274.963 319.753 276.097 c
-321.63 277.149 323.378 275.08 324.86 273.227 c
-330.619 266.03 337.501 274.827 332.889 276.951 c
-332.365 277.193 331.758 277.102 331.267 276.794 c
-328.629 275.139 331.078 271.61 330.529 268.9 c
-330.495 268.729 330.447 268.561 330.393 268.395 c
-328.906 263.901 323.683 264.261 323.235 267.307 c
-323.194 267.585 323.197 267.899 322.968 268.061 c
-321.148 269.346 320.516 264.964 323.305 265.81 c
-323.587 265.896 323.814 266.093 324.048 266.271 c
-325.826 267.626 328.126 268.02 330.331 267.636 c
-333.277 267.125 336.664 265.992 337.992 268.504 c
-338.322 269.128 338.353 269.849 338.421 270.549 c
-338.469 271.042 338.539 271.537 338.729 271.996 c
-340.318 275.838 346.191 274.926 349.68 270.325 c
-350.589 269.126 351.399 267.845 352.463 266.779 c
-354.172 265.067 356.56 263.784 356.988 261.377 c
-357.121 260.63 357.02 259.849 356.592 259.224 c
-354.911 256.769 351.737 258.548 352.49 260.546 c
-353.056 262.049 355.417 261.323 356.185 262.618 c
-356.614 263.341 356.251 264.203 356.102 265.026 c
-355.618 267.706 357.477 270.25 360.156 270.451 c
-362.09 270.596 363.893 269.302 365.818 269.59 c
-366.518 269.695 367.195 270.012 367.9 269.915 c
-371.947 269.36 369.002 263.853 370.7 261.345 c
-373.42 257.327 379.116 260.932 377.068 264.705 c
-375.717 267.196 372.157 265.644 369.948 266.937 c
-368.882 267.561 368.06 268.826 366.811 268.61 c
-363.829 268.092 366.023 264.319 368.491 261.013 c
-369.803 259.257 369.862 256.881 371.023 255.03 c
-373.286 251.424 378.322 250.936 380.884 254.144 c
-382.375 256.01 381.466 258.379 379.816 258.213 c
-378.019 258.032 377.775 255.179 380.046 253.379 c
-381.82 251.974 383.914 251.066 385.946 250.074 c
-389.573 248.301 393.666 248.573 393.855 251.518 c
-394.061 254.724 389.117 256.305 386.062 252.604 c
-383.84 249.911 383.794 245.984 386.406 243.907 c
-387.294 243.201 388.459 242.544 388.205 241.473 c
-387.875 240.081 386.021 240.359 384.393 240.805 c
-381.682 241.547 378.755 240.626 377.235 238.292 c
-375.105 235.022 373.334 230.423 370.605 232.584 c
-368.203 234.487 370.758 238.819 376.033 238.964 c
-377.654 239.008 378.649 240.184 377.964 240.903 c
-377.335 241.564 376.075 240.875 376.16 239.548 c
-376.362 236.39 380.643 236.324 384.533 237.567 c
-385.603 237.909 386.772 238.254 387.254 239.264 c
-387.725 240.25 387.276 241.521 387.971 242.393 c
-390.014 244.958 395.403 241.337 392.072 236.753 c
-391.198 235.55 389.859 234.767 388.38 234.616 c
-385.741 234.348 382.465 234.659 382.517 232.232 c
-382.524 231.886 382.651 231.546 382.6 231.202 c
-382.28 229.087 379.29 230.478 378.119 229.35 c
-376.553 227.842 378.622 225.67 381.186 224.3 c
-383.269 223.187 384.892 221.178 384.276 219.027 c
-382.397 212.467 373.285 216.554 376.239 221.768 c
-376.879 222.897 378.229 223.264 379.49 223.59 c
-387.446 225.647 383.393 234.939 380.031 231.491 c
-378.333 229.75 378.017 220.575 376.835 226.083 c
-376.632 227.027 378.352 227.492 377.957 228.478 c
-377.863 228.71 377.644 228.857 377.406 228.938 c
-374.958 229.771 374.453 226.224 373.038 224.108 c
-372.234 222.905 370.729 221.98 370.979 220.521 c
-371.089 219.885 371.575 219.291 371.35 218.67 c
-370.045 215.055 367.183 220.714 365.56 220.144 c
-358.479 217.656 370.619 215.189 371.218 212.619 c
-372.051 209.044 366.38 208.665 361.093 212.372 c
-358.551 214.154 357.221 216.848 359.105 217.724 c
-359.403 217.863 359.741 217.873 360.056 217.964 c
-360.163 217.995 360.267 218.035 360.377 218.053 c
-365.028 218.831 358.207 210.744 362.112 210.977 c
-363.445 211.057 363.398 212.903 362.707 214.567 c
-361.933 216.428 360.833 218.372 359.297 217.646 c
-357.469 216.781 358.723 214.184 361.029 212.383 c
-362.748 211.04 364.845 209.855 365.927 211.352 c
-367.132 213.02 365.145 215.518 362.329 214.826 c
-358.521 213.889 360.545 209.729 362.284 210.897 c
-363.122 211.459 361.304 214.821 363.529 214.2 c
-364.056 214.052 364.03 213.363 364.318 212.93 c
-365.321 211.422 367.128 213.282 368.403 215.51 c
-369.511 217.444 371.832 218.187 373.412 219.729 c
-374.307 220.602 374.947 221.73 374.999 222.979 c
-375.147 226.471 371.412 228.531 368.992 226.563 c
-367.784 225.581 367.351 223.508 365.696 223.512 c
-359.471 223.528 363.867 232.852 367.632 228.399 c
-368.451 227.431 367.56 225.97 368.155 224.901 c
-368.939 223.492 372.291 223.744 371.711 221.636 c
-371.427 220.606 370.03 220.368 369.154 221.22 c
-368.048 222.297 368.422 224.115 369.639 225.259 c
-371.086 226.621 373.411 226.96 374.33 228.767 c
-374.813 229.718 374.736 230.855 375.186 231.82 c
-376.881 235.451 381.309 233.495 380.508 230.932 c
-380.066 229.518 377.444 229.428 377.656 227.707 c
-377.881 225.884 380.913 225.973 382.639 228.751 c
-383.38 229.944 384.253 231.162 385.623 231.444 c
-385.873 231.495 386.13 231.509 386.381 231.555 c
-387.193 231.704 387.916 232.178 388.313 232.9 c
-391.544 238.776 381.67 241.745 380.988 235.578 c
-380.721 233.168 383.845 232.134 384.402 229.939 c
-385.568 225.338 379.484 224.939 379.439 228.072 c
-379.437 228.203 379.458 228.337 379.42 228.463 c
-379.087 229.554 377.184 228.574 377.52 226.191 c
-378.019 222.642 373.431 220.801 373.073 217.418 c
-372.217 209.348 384.358 208.591 384.583 216.487 c
-384.662 219.222 381.617 221.866 383.294 224.35 c
-384.155 225.624 385.852 225.762 387.266 226.323 c
-389.559 227.232 391.619 229.417 393.982 228.528 c
-395.657 227.898 397.039 225.733 398.684 226.739 c
-401.179 228.266 398.914 232.312 396.033 230.697 c
-394.323 229.739 394.924 227.399 395.487 225.358 c
-396.005 223.483 395.798 221.363 394.147 220.687 c
-393.123 220.268 391.976 220.755 390.906 220.521 c
-388.788 220.057 388.03 217.259 385.898 216.834 c
-384.319 216.52 382.132 217.079 382.005 215.449 c
-381.959 214.857 382.402 214.343 382.995 214.276 c
-389.427 213.549 381.323 220.48 382.107 222.651 c
-382.781 224.516 386.483 224.188 386.323 226.567 c
-386.13 229.454 380.71 228.868 379.271 222.886 c
-378.951 221.557 378.439 220.245 378.551 218.878 c
-379.121 211.909 387.745 213.387 387.11 218.019 c
-386.92 219.41 385.486 220.258 384.244 219.686 c
-383.075 219.148 382.901 217.7 382.601 216.438 c
-381.301 210.964 375.508 212.383 375.996 215.189 c
-376.555 218.396 385.011 212.889 384.085 218.185 c
-383.126 223.672 378.076 216.03 375.942 216.908 c
-372.282 218.413 376.494 222.604 382.798 224.511 c
-383.209 224.635 383.608 224.802 384.033 224.867 c
-387.89 225.451 393.418 224.948 390.989 227.683 c
-390.451 228.289 389.504 228.207 388.84 227.666 c
-384.905 224.456 390.314 219.209 393.263 222.802 c
-394.942 224.846 392.699 227.699 390.383 226.586 c
-388.41 225.638 389.305 222.441 387.44 221.387 c
-383.252 219.021 379.086 227.129 385.762 229.273 c
-388.104 230.026 390.589 228.483 392.951 229.138 c
-395.126 229.741 397.509 230.066 397.407 228.36 c
-397.245 225.677 393.459 227.958 392.384 226.595 c
-390.943 224.766 395.19 222.468 393.328 220.65 c
-392.277 219.624 390.866 220.892 389.497 221.445 c
-388.095 222.011 386.466 221.532 385.893 220.193 c
-385.214 218.603 386.632 216.598 385.477 215.189 c
-383.555 212.846 380.102 215.426 381.642 217.796 c
-382.512 219.137 384.695 218.491 385.649 219.736 c
-387.432 222.06 384.041 223.979 383.046 222.083 c
-382.37 220.795 391.926 217.29 385.731 216.549 c
-385.158 216.48 384.791 217.042 384.464 217.54 c
-379.588 224.949 372.288 216.332 376.922 213.856 c
-378.512 213.007 380.707 215.418 382.105 213.856 c
-382.878 212.992 382.398 211.626 381.276 210.981 c
-380.067 210.285 378.85 211.084 379.157 211.942 c
-379.25 212.204 379.512 212.363 379.632 212.612 c
-381.469 216.418 376.629 211.874 373.745 210.733 c
-372.287 210.156 370.819 211.595 370.78 213.447 c
-370.757 214.544 371.086 215.786 370.249 216.506 c
-369.749 216.937 368.982 216.94 368.534 217.431 c
-365.611 220.633 372.75 221.106 372.877 223.301 c
-372.928 224.185 372.087 224.632 371.679 224.19 c
-371.6 224.104 371.564 223.991 371.541 223.876 c
-371.288 222.601 372.336 221.477 373.688 221.2 c
-378.892 220.131 380.242 226.808 376.451 227.901 c
-374.723 228.399 371.875 227.484 372.199 229.463 c
-372.461 231.07 379.543 234.635 374.789 233.836 c
-374.589 233.802 374.432 233.661 374.26 233.558 c
-373.422 233.057 372.344 233.387 371.807 234.23 c
-370.388 236.459 373.347 238.596 373.328 240.964 c
-373.32 241.981 372.768 242.899 372.619 243.901 c
-372.44 245.099 372.835 246.281 373.352 247.374 c
-373.817 248.356 374.481 249.326 375.541 249.437 c
-376.698 249.557 377.553 248.556 378.574 248.04 c
-384.988 244.798 385.81 255.277 381.045 253.327 c
-380.364 253.048 380.24 252.162 379.667 251.729 c
-374.963 248.173 371.929 259.688 380.041 258.527 c
-382.071 258.236 383.312 256.286 385.12 255.385 c
-385.384 255.254 385.66 255.146 385.951 255.106 c
-390.029 254.541 390.993 261.053 386.39 261.589 c
-384.583 261.799 382.799 259.925 381.125 260.919 c
-380.325 261.394 380.058 262.356 379.67 263.196 c
-378.948 264.754 378.27 266.565 379.605 267.226 c
-381.079 267.957 382.048 265.992 382.852 264.24 c
-382.984 263.951 383.158 263.664 383.457 263.56 c
-385.901 262.717 383.676 265.95 382.584 268.422 c
-381.151 271.666 387.284 274.937 389.832 269.546 c
-390.639 267.839 390.435 265.834 391.139 264.086 c
-391.311 263.657 391.54 263.246 391.888 262.942 c
-393.84 261.236 396.882 263.776 398.898 262.245 c
-398.951 262.205 399.003 262.162 399.045 262.11 c
-405.258 254.529 396.609 267.488 393.222 266.409 c
-392.932 266.317 392.725 266.072 392.613 265.788 c
-391.494 262.966 396.193 260.673 397.948 264.332 c
-398.44 265.36 398.112 266.591 397.12 266.839 c
-393.787 267.673 392.957 260.433 398.738 261.218 c
-400.537 261.463 402.628 261.897 402.812 260.328 c
-402.968 259.006 400.431 258.171 401.316 256.749 c
-402.019 255.618 412.151 260.68 407.29 255.6 c
-406.902 255.193 406.275 255.449 405.734 255.383 c
-404.856 255.275 404.386 254.409 403.838 253.717 c
-403.185 252.892 402.311 252.287 401.41 251.745 c
-398.935 250.258 395.879 249.44 393.91 251.326 c
-393.442 251.775 393.098 252.368 392.514 252.66 c
-392.201 252.816 391.833 252.876 391.588 253.127 c
-391.248 253.476 391.288 254.009 391.178 254.478 c
-390.356 257.987 385.782 255.83 382.435 256.247 c
-378.799 256.7 376.148 261.396 372.42 259.97 c
-370.095 259.081 369.063 255.671 366.396 255.914 c
-361.765 256.336 363.862 262.789 368.358 268.265 c
-369.051 269.108 369.713 270.097 370.795 270.24 c
-372.564 270.473 373.24 268.516 372.179 267.88 c
-371.235 267.315 366.519 270.498 368.191 267.483 c
-368.41 267.087 368.945 267.178 369.391 267.113 c
-371.335 266.827 371.061 264.003 372.582 263.108 c
-375.323 261.492 377.314 265.691 377.111 270.57 c
-377.082 271.261 377.066 272.019 376.515 272.426 c
-370.792 276.645 375.015 265.763 373.262 264.659 c
-370.994 263.231 369.495 266.814 369.439 270.832 c
-369.419 272.239 368.996 273.637 369.229 275.029 c
-369.352 275.763 369.655 276.454 369.8 277.183 c
-369.907 277.721 369.927 278.274 370.071 278.803 c
-370.334 279.769 370.975 280.568 371.712 281.246 c
-372.478 281.951 373.487 282.482 374.336 281.98 c
-379.562 278.89 370.641 273.469 370.31 279.418 c
-370.218 281.072 374.766 282.084 372.747 284.089 c
-370.898 285.923 368.605 277.456 366.643 281.634 c
-366.038 282.921 367.956 283.424 369.707 283.787 c
-375.968 285.082 375.306 297.25 363.763 298.212 c
-363.163 298.262 362.506 298.227 362.201 297.729 c
-361.569 296.697 362.93 295.427 364.76 295.756 c
-366.234 296.021 367.405 297.11 366.891 298.213 c
-366.27 299.544 361.8 298.402 362.917 300.987 c
-363.204 301.654 364.077 301.668 364.845 301.47 c
-366.779 300.973 368.666 301.542 368.353 302.885 c
-368.024 304.301 366.071 303.736 364.418 302.629 c
-361.039 300.367 359.69 297.02 362.027 296.636 c
-362.526 296.554 363.011 296.801 363.323 297.204 c
-364.104 298.215 363.597 299.756 364.412 300.746 c
-364.928 301.373 365.918 301.731 365.827 302.57 c
-365.771 303.086 365.289 303.426 364.753 303.474 c
-361.515 303.762 362.293 297.926 359.3 297.862 c
-356.644 297.805 355.816 301.676 358.568 302.798 c
-363.208 304.69 364.385 297.659 360.417 297.55 c
-359.443 297.523 358.764 298.487 357.815 298.624 c
-353.866 299.194 352.991 291.989 358.475 292.046 c
-361.261 292.075 364.342 296.087 366.391 293.327 c
-366.808 292.764 366.896 291.949 367.521 291.603 c
-369.634 290.433 372.026 287.737 369.806 288.691 c
-369.545 288.804 369.294 289.141 369.103 288.911 c
-368.955 288.734 369.17 288.516 369.411 288.365 c
-372.008 286.735 368.669 283.874 365.143 281.615 c
-357.331 276.609 364.418 267.239 369.661 270.91 c
-371.043 271.878 372.583 273.106 373.182 271.832 c
-374.166 269.737 370.417 270.059 370.02 268.694 c
-368.713 264.199 376.034 267.126 376.589 274.146 c
-376.616 274.49 376.682 274.836 376.621 275.177 c
-376.167 277.712 371.801 277.723 371.279 274.093 c
-371.01 272.225 371.377 269.798 369.582 269.801 c
-367.243 269.806 369.261 277.188 365.417 275.275 c
-364.91 275.023 364.69 274.361 364.13 274.221 c
-362.851 273.901 361.859 275.955 363.451 277.423 c
-365.993 279.769 369.956 278.27 372.49 275.345 c
-373.115 274.623 373.675 273.845 374.302 273.123 c
-374.774 272.579 375.226 271.914 374.857 271.349 c
-374.405 270.655 373.055 271.068 372.795 270.18 c
-371.338 265.208 376.64 271.897 378.125 271.591 c
-380.15 271.174 378.529 268.222 379.802 267.271 c
-381.286 266.163 392.635 275.757 387.798 267.953 c
-387.667 267.741 387.444 267.601 387.195 267.592 c
-386.31 267.562 385.968 268.727 386.372 269.818 c
-386.991 271.488 388.216 272.88 388.73 274.587 c
-389.858 278.331 393.14 279.039 393.333 277.141 c
-393.415 276.344 392.857 275.179 393.726 275.198 c
-394.127 275.207 394.255 275.679 394.377 276.087 c
-395.216 278.884 398.87 278.336 401.973 278.275 c
-402.983 278.255 404.001 278.391 404.905 278.844 c
-408.906 280.844 413.346 284.95 414.299 280.958 c
-414.988 278.073 409.058 277.031 410.481 273.921 c
-412.449 269.618 418.729 274.188 415.018 277.473 c
-414.727 277.731 414.362 277.879 414.001 278.02 c
-411.534 278.979 408.951 279.716 406.304 279.597 c
-402.535 279.428 400.888 276.038 402.73 274.644 c
-403.509 274.055 404.552 274.373 405.521 274.425 c
-406.711 274.49 407.893 274.095 408.716 273.235 c
-414.642 267.042 404.183 260.415 401.188 266.849 c
-399.721 270.002 405.042 273.263 402.798 276.363 c
-401.246 278.506 397.87 277.53 395.993 274.859 c
-393.297 271.022 394.903 266.33 398.259 266.507 c
-401 266.651 401.903 270.716 404.695 270.701 c
-406.467 270.691 407.504 268.894 406.579 267.715 c
-405.186 265.94 402.9 268.252 401.627 271.336 c
-400.103 275.03 395.755 278.353 398.141 281.78 c
-401.209 286.188 406.419 281.631 403.963 278.79 c
-402.668 277.293 398.066 279.227 398.414 276.121 c
-398.535 275.041 399.833 274.525 400.87 275.125 c
-401.446 275.458 402.014 276.051 402.561 275.687 c
-402.637 275.636 402.7 275.567 402.741 275.485 c
-403.295 274.376 400.894 273.15 399.902 275.466 c
-399.166 277.184 399.555 279.142 399.114 280.949 c
-398.938 281.671 398.632 282.354 398.442 283.072 c
-397.041 288.376 391.232 287.535 392.758 284.957 c
-393.17 284.261 394.654 284.298 394.476 283.313 c
-394.258 282.104 392.703 283.119 391.814 282.805 c
-386.291 280.851 395.745 278.828 396.184 276.789 c
-396.443 275.589 395.507 273.77 396.897 273.562 c
-397.616 273.455 398.081 274.24 397.662 274.747 c
-397.058 275.477 396.078 274.377 395.373 274.729 c
-393.351 275.74 396.433 277.186 399.93 276.741 c
-400.924 276.615 402.003 277.169 402.865 276.606 c
-408.134 273.161 397.923 266.019 396.223 274.282 c
-395.632 277.154 396.331 281.303 393.644 280.363 c
-392.245 279.873 392.579 277.701 391.288 277.078 c
-388.848 275.902 387.823 279.925 389.556 284.288 c
-390.689 287.142 389.78 290.34 390.416 293.325 c
-391.668 299.202 397.956 296.908 396.751 294.133 c
-396.361 293.236 394.994 293.14 394.732 292.169 c
-393.553 287.786 403.028 289.149 400.34 296.027 c
-398.001 302.01 391.78 299.677 392.71 296.666 c
-392.889 296.087 393.395 295.696 393.953 295.451 c
-394.376 295.265 394.83 295.156 395.245 294.952 c
-399.947 292.638 396.595 286.792 393.257 288.532 c
-391.815 289.284 391.797 291.372 393.243 292.309 c
-393.551 292.508 393.932 292.681 393.961 293.044 c
-394.048 294.131 391.696 294.355 391.576 292.111 c
-391.379 288.431 394.77 285.608 398.224 286.625 c
-399.573 287.022 401.03 287.028 401.001 285.976 c
-401 285.921 400.991 285.866 400.985 285.811 c
-400.024 276.828 416.376 282.575 408.476 290.43 c
-406.472 292.423 406.57 294.825 407.999 294.416 c
-408.506 294.271 408.697 293.556 409.247 293.529 c
-412.787 293.352 408.19 296.941 408.807 297.822 c
-409.636 299.008 410.823 297.31 411.921 295.896 c
-413.316 294.101 416.146 294.63 416.771 296.791 c
-416.991 297.552 416.815 298.437 417.322 299.062 c
-420.509 302.992 422.218 294.809 424.737 295.038 c
-427.287 295.269 426.72 298.746 427.965 300.679 c
-430.179 304.115 436.708 301.393 438.33 305.551 c
-439.145 307.643 437.362 310.117 438.62 312.065 c
-439.362 313.215 440.809 313.513 442.151 313.799 c
-443.693 314.128 445.44 314.311 446.203 313.031 c
-446.655 312.272 446.428 311.324 446.656 310.481 c
-447.476 307.449 451.706 307.319 452.693 310.262 c
-453.821 313.623 448.964 315.205 448.449 318.266 c
-445.651 334.896 472.636 322.327 458.161 315.454 c
-456.14 314.494 453.115 317.773 451.545 315.373 c
-449.838 312.764 454.638 311.374 454.442 309.012 c
-454.112 305.035 447.527 305.544 448.153 310.258 c
-448.566 313.372 452.7 313.729 456.39 312.411 c
-457.439 312.036 458.649 311.985 458.951 312.894 c
-459.242 313.774 458.33 314.607 457.384 314.268 c
-456.809 314.061 456.485 313.459 456.568 312.846 c
-456.865 310.652 463.766 311.409 461.654 307.841 c
-460.398 305.719 455.108 302.37 458.907 303.397 c
-459.371 303.523 459.468 304.079 459.71 304.487 c
-461.142 306.907 470.453 298.599 469.315 305.863 c
-469.004 307.844 467.452 310.741 469.372 309.828 c
-470.43 309.325 469.163 308.036 469.495 307.237 c
-469.669 306.818 470.158 306.651 470.412 306.282 c
-471.3 304.995 467.327 302.099 470.136 301.244 c
-471.178 300.927 472.222 303.063 473.255 302.024 c
-473.973 301.302 473.008 300.078 471.39 299.939 c
-468.277 299.672 465.045 299.341 462.576 297.419 c
-461.021 296.208 459.946 294.457 458.286 293.389 c
-457.711 293.019 457.061 292.74 456.381 292.805 c
-454.115 293.022 452.211 297.677 450.022 295.285 c
-447.008 291.99 454.852 290.642 453.853 287.898 c
-453.045 285.681 449.233 286.151 448.097 289.669 c
-446.68 294.056 451.17 295.843 452.304 293.719 c
-453.265 291.919 450.454 291.015 449.92 289.403 c
-449.355 287.699 451.15 286.28 451.245 284.569 c
-451.338 282.899 449.981 281.623 448.461 280.816 c
-446.661 279.86 444.505 279.211 443.709 277.323 c
-443.121 275.931 443.545 274.395 443.931 272.936 c
-444.182 271.987 444.935 271.354 445.449 271.818 c
-445.952 272.27 445.317 272.974 445.452 273.554 c
-445.748 274.825 448.201 274.637 448.494 272.24 c
-448.973 268.324 452.025 266.914 452.527 268.798 c
-452.936 270.336 450.585 270.346 449.867 271.402 c
-448.782 272.995 454.742 278.619 449.769 278.463 c
-448.275 278.416 448.481 276.304 447.497 275.473 c
-440.917 269.918 437.675 286.984 448.961 284.502 c
-450.486 284.167 451.814 283.219 452.555 281.846 c
-453.492 280.112 453.568 277.706 455.452 276.972 c
-457.102 276.329 459.057 277.706 460.593 276.716 c
-461.977 275.823 461.851 273.901 461.306 272.233 c
-461.089 271.567 460.837 270.908 460.721 270.216 c
-460.48 268.786 460.832 267.331 460.708 265.889 c
-460.338 261.564 456.408 258.52 451.954 258.462 c
-449.949 258.436 447.7 258.873 446.391 257.353 c
-444.303 254.927 447.185 251.929 447.732 248.95 c
-448.159 246.624 446.844 244.322 444.698 244.303 c
-439.458 244.256 438.515 254.676 447.724 255.192 c
-450.788 255.363 454.267 254.181 456.404 256.458 c
-456.889 256.974 457.206 257.625 457.691 258.141 c
-458.566 259.072 459.835 259.446 460.993 259.971 c
-462.711 260.751 464.243 261.914 465.306 263.473 c
-466.808 265.674 467.214 268.435 468.635 270.685 c
-470.255 273.248 473.125 275.438 472.445 278.437 c
-471.437 282.889 465.134 288.817 470.652 289.117 c
-472.229 289.203 473.135 287.324 474.668 287.175 c
-476.564 286.991 477.907 289.058 477.17 291.024 c
-474.9 297.079 475.393 305.251 478.111 300.464 c
-478.897 299.079 472.847 291.953 478.066 294.202 c
-478.35 294.324 478.52 294.603 478.616 294.899 c
-479.363 297.217 476.011 299.537 477.51 301.773 c
-479.655 304.971 478.378 311.131 477.267 307.236 c
-477.182 306.939 477.352 306.619 477.249 306.326 c
-476.828 305.124 475.527 306.459 474.532 308.02 c
-473.376 309.832 469.541 308.819 469.246 311.387 c
-469.009 313.446 471.898 314.635 474.275 312.922 c
-474.976 312.417 475.555 311.764 476.226 311.221 c
-479.681 308.427 484.825 306.069 482.584 302.577 c
-481.992 301.656 480.884 301.218 480.233 300.341 c
-478.367 297.827 480.747 294.791 482.969 292.216 c
-484.901 289.975 487.453 287.951 489.373 289.616 c
-489.968 290.131 490.232 290.963 490.905 291.38 c
-493.368 292.906 494.67 288.997 496.838 287.584 c
-499.599 285.784 503.684 284.337 501.426 282.459 c
-499.61 280.949 498.416 284.095 496.935 286.25 c
-496.319 287.147 495.297 287.715 494.233 287.544 c
-492.641 287.287 491.603 285.381 489.937 285.611 c
-487.364 285.968 487.565 298.39 482.797 292.545 c
-481.683 291.179 484.405 287.744 481.746 287.208 c
-479.659 286.787 480.286 289.795 480.644 292.399 c
-481.937 301.793 468.096 297.375 473.24 292.057 c
-474.157 291.109 476.615 291.102 475.939 289.611 c
-475.393 288.409 473.115 288.978 473.294 291.07 c
-473.45 292.884 475.308 293.792 476.792 294.855 c
-476.897 294.93 477.002 295.008 477.115 295.071 c
-509.357 312.972 472.34 254.539 471.101 288.083 c
-471.036 289.835 472.683 290.958 473.702 292.354 c
-475.196 294.399 475.593 297.465 478.08 298.238 c
-479.152 298.572 480.333 298.172 480.526 297.175 c
-481.078 294.325 476.559 295.436 475.645 293.704 c
-475.415 293.269 475.307 292.68 474.817 292.63 c
-473.797 292.526 473.391 294.585 475.325 295.023 c
-477.611 295.541 480.226 293.489 482.163 295.095 c
-484.51 297.041 483.61 306.151 487.737 302.335 c
-488.928 301.233 490.053 299.15 490.638 300.601 c
-490.873 301.185 490.257 301.787 489.519 301.639 c
-487.001 301.131 489.069 297.327 487.313 296.287 c
-486.463 295.784 485.44 296.258 484.654 296.927 c
-482.139 299.063 479.344 301.73 477.376 299.589 c
-476.319 298.44 476.858 296.74 477.016 295.187 c
-477.193 293.456 477.103 291.423 478.685 290.815 c
-479.525 290.493 480.46 290.909 480.543 291.722 c
-480.673 293.01 478.894 293.41 477.18 292.807 c
-474.199 291.758 470.84 292.186 470.401 294.764 c
-469.977 297.251 474.294 300.796 471.004 302.263 c
-469.081 303.122 467.227 300.572 467.958 297.531 c
-468.552 295.063 469.874 292.724 472.199 291.758 c
-474.809 290.674 477.639 291.746 480.354 292.506 c
-483.008 293.25 485.881 292.668 486.026 290.437 c
-486.245 287.075 481.174 287.102 476.695 290.319 c
-474.842 291.651 472.535 292.765 472.207 295.025 c
-471.618 299.07 476.634 301.447 479.416 298.411 c
-484.753 292.585 474.197 288.581 474.045 294.185 c
-473.995 296.02 477.249 296.373 476.91 298.322 c
-476.807 298.915 476.267 299.477 476.579 300.023 c
-481.446 308.541 476.901 293.608 478.875 293.517 c
-480.199 293.456 480.766 295.689 478.895 296.67 c
-478.151 297.06 477.291 297.09 476.453 297.117 c
-475.133 297.158 473.859 297.75 474.086 298.796 c
-474.621 301.257 480.512 296.043 480.159 300.087 c
-480.078 301.01 478.07 301.836 479.152 302.701 c
-482.484 305.369 479.892 298.61 481.255 298.589 c
-483.519 298.556 478.059 305.778 482.458 303.715 c
-483.829 303.072 481.901 301.552 482.353 300.671 c
-483.018 299.375 484.784 300.897 485.694 300.175 c
-487.583 298.676 484.065 297.769 481.977 296.378 c
-480.068 295.106 477.966 293.122 477.587 295.043 c
-477.428 295.851 478.46 296.421 478.329 297.228 c
-477.979 299.376 475.179 297.872 476.333 296.641 c
-476.598 296.358 477.054 296.455 477.36 296.747 c
-481.3 300.504 472.504 305.14 471.745 298.718 c
-471.461 296.312 474.353 295.212 475.539 296.923 c
-477.787 300.167 471.302 300.989 471.387 303.558 c
-471.487 306.58 476.697 307.111 479.536 302.397 c
-480.385 300.986 481.446 299.492 483.016 299.69 c
-489.284 300.478 482.466 308.349 484.873 311.021 c
-485.565 311.788 486.746 312.122 487.052 313.135 c
-487.633 315.058 485.143 316.432 482.408 315.901 c
-481.626 315.749 480.832 315.551 480.049 315.715 c
-476.546 316.445 476.555 324.234 471.967 322.648 c
-468.968 321.611 469.353 316.898 473.039 316.23 c
-475.157 315.847 477.283 317.629 479.313 316.754 c
-484.191 314.651 490.73 313.395 487.522 316.556 c
-486.968 317.103 486.038 316.83 485.407 317.257 c
-484.333 317.982 484.389 320.919 482.748 319.995 c
-482.156 319.661 482.209 318.819 482.651 318.187 c
-483.326 317.223 484.507 316.328 483.914 315.327 c
-483.012 313.803 481.84 311.787 483.257 312.448 c
-483.858 312.728 481.929 315.546 483.847 314.841 c
-484.626 314.555 483.586 313.793 483.523 313.184 c
-483.454 312.514 484.299 312.087 484.993 312.526 c
-486.838 313.692 484.489 315.712 483.482 317.69 c
-479.963 324.604 491.273 328.057 492.347 320.925 c
-492.578 319.392 491.536 317.961 490.006 317.678 c
-487.487 317.211 485.441 319.672 485.545 322.517 c
-485.586 323.631 486.01 324.761 487.025 325.138 c
-488.809 325.801 490.589 323.946 489.976 321.893 c
-488.235 316.06 481.371 305.255 487.686 310.561 c
-488.312 311.088 488.265 311.994 488.399 312.796 c
-489.7 320.598 500.232 318.416 499.11 312.076 c
-498.82 310.438 497.343 309.373 495.722 308.88 c
-494.655 308.555 493.463 308.401 492.744 307.54 c
-491.083 305.549 493.043 302.837 495.646 301.13 c
-497.759 299.743 498.603 297.374 497.05 296.566 c
-495.085 295.545 494.502 298.634 493.242 300.458 c
-491.637 302.781 486.685 303.829 488.621 306.627 c
-489.385 307.731 490.98 307.464 492.131 308.06 c
-495.063 309.579 494.307 314.053 490.899 314.578 c
-488.195 314.995 486.245 312.268 485.892 309.228 c
-485.709 307.655 485.607 305.867 484.189 305.251 c
-483.375 304.897 482.414 305.182 482.103 305.973 c
-481.674 307.068 482.996 308.933 481.537 309.368 c
-480.398 309.708 480.171 308.068 479.4 307.313 c
-478.886 306.809 478.086 306.753 477.533 306.296 c
-475.574 304.68 477.406 301.197 481.294 300.686 c
-482.877 300.478 484.493 300.526 486.047 300.151 c
-487.518 299.796 489.006 299.083 490.435 299.611 c
-492.226 300.273 492.903 302.344 492.661 304.323 c
-492.546 305.257 492.132 306.202 491.252 306.325 c
-489.453 306.577 488.676 299.5 486.021 302.82 c
-485.415 303.579 486.176 304.511 486.527 305.418 c
-487.482 307.891 484.66 310.493 485.847 312.924 c
-487.667 316.65 498.339 311.238 497.515 318.257 c
-497.375 319.444 496.297 320.297 495.166 320.033 c
-491.588 319.2 492.808 312.109 498.71 313.555 c
-500.086 313.892 501.641 314.556 502.414 313.437 c
-502.772 312.918 502.694 312.228 502.321 311.708 c
-500.144 308.685 495.86 312.664 495.291 319.305 c
-494.952 323.271 498.222 324.677 498.935 322.946 c
-499.42 321.768 497.538 320.889 497.946 319.716 c
-498.576 317.905 501.23 319.726 502.174 318.484 c
-503 317.397 501.035 313.439 503.594 314.337 c
-504.224 314.558 504.309 315.406 503.89 316.057 c
-502.299 318.531 495.16 315.784 495.829 320.45 c
-495.991 321.577 497.122 322.254 498.309 322.196 c
-503.087 321.961 499.554 314.586 497.917 318.56 c
-497.836 318.756 497.885 318.979 497.821 319.181 c
-491.006 340.794 509.211 308.292 498.502 310.341 c
-497.053 310.619 498.213 312.484 497.888 313.63 c
-497.647 314.478 496.517 315.068 496.851 315.968 c
-497.26 317.067 504.563 314.918 501.345 318.285 c
-501.019 318.626 500.461 318.477 500.067 318.712 c
-499.58 319.003 499.566 319.644 499.48 320.208 c
-499.335 321.154 498.662 321.952 497.869 321.715 c
-497.15 321.501 496.946 320.576 497.507 320.061 c
-498.358 319.28 500.789 319.097 499.593 318.135 c
-499.23 317.843 498.729 318.218 498.317 318.068 c
-489.093 314.718 504.159 318.196 504.446 316.162 c
-504.705 314.319 501.763 315.21 501.273 314.037 c
-499.752 310.398 505.609 313.122 506.89 311.898 c
-507.06 311.736 507.181 311.529 507.342 311.359 c
-508.852 309.766 510.955 311.555 510.061 312.915 c
-509.557 313.68 508.482 313.268 507.622 313.437 c
-506.346 313.687 505.83 315.1 504.875 315.937 c
-503.228 317.382 500.842 316.879 498.674 317.001 c
-496.341 317.132 494.18 318.495 494.427 320.547 c
-494.576 321.786 495.26 323.274 494.108 323.594 c
-488.887 325.047 494.846 318.242 493.402 317.42 c
-492.55 316.935 491.498 317.707 491.439 318.857 c
-491.381 319.979 492.292 320.876 493.225 320.556 c
-495.908 319.635 493.537 314.349 489.886 317.105 c
-489.064 317.725 488.645 318.737 488.74 319.764 c
-489.047 323.098 492.908 322.896 493.063 320.826 c
-493.197 319.048 490.685 319.364 489.41 318.463 c
-486.85 316.652 488.794 312.415 492.159 313.303 c
-494.321 313.873 494.963 316.577 493.306 317.915 c
-489.191 321.24 485.797 314.198 490.112 312.966 c
-491.892 312.458 493.418 314.55 492.364 316.384 c
-491.249 318.326 489.509 320.496 491.381 320.781 c
-493.14 321.048 491.529 313.185 494.912 316.346 c
-495.31 316.718 495.212 317.366 494.773 317.745 c
-487.633 323.918 492.265 308.99 489.6 308.633 c
-486.932 308.276 487.213 312.188 485.512 313.61 c
-477.201 320.561 474.48 302.472 483.258 306.723 c
-484.636 307.39 484.175 309.364 485.071 310.477 c
-487.116 313.013 490.401 310.2 488.839 308.189 c
-488.277 307.465 487.122 307.596 486.526 306.906 c
-481.62 301.222 492.295 305.044 497.191 311.371 c
-497.565 311.854 498.06 312.234 498.633 312.447 c
-500.34 313.082 502.103 312.187 503.769 311.44 c
-505.539 310.647 507.491 310.048 509.304 310.72 c
-514.697 312.72 519.685 311.349 517.292 308.952 c
-515.953 307.611 503.946 318.844 508.691 309.772 c
-509.613 308.009 512.255 310.667 513.26 309.163 c
-513.704 308.499 513.16 307.573 513.596 306.906 c
-518.618 299.223 517.362 330.713 520.409 314.732 c
-520.612 313.669 519.102 313.151 519.11 312.127 c
-519.116 311.445 519.812 310.977 519.872 310.303 c
-520.53 302.85 509.497 311.449 515.883 317.26 c
-517.121 318.387 517.881 320.001 516.807 320.843 c
-516.126 321.376 514.747 321.349 514.943 322.301 c
-515.114 323.134 516.479 323.189 517.057 322.041 c
-520.102 315.985 509.274 312.802 508.72 320.139 c
-508.622 321.429 509.459 322.678 509.114 323.941 c
-508.804 325.075 508.108 326.38 509.127 326.75 c
-510.545 327.265 510.69 322.002 512.699 324.15 c
-513.096 324.574 512.847 325.267 512.266 325.58 c
-507.297 328.256 504.369 316.745 513.331 317.355 c
-514.726 317.449 516.125 318.11 517.451 317.614 c
-519.61 316.806 520.036 314.023 518.987 311.697 c
-518.61 310.861 518.086 310.097 517.406 309.481 c
-516.554 308.709 515.369 308.286 514.542 308.963 c
-512.865 310.335 515.324 312.904 514.038 314.407 c
-513.364 315.195 512.125 315.127 511.491 314.286 c
-507.941 309.578 518.989 304.882 519.631 313.653 c
-519.66 314.045 519.632 314.438 519.651 314.83 c
-519.777 317.382 522.162 318.777 523.541 317.508 c
-524.643 316.492 523.842 314.809 522.599 315.022 c
-521.682 315.179 521.557 316.309 521.435 317.294 c
-521.152 319.588 519.526 321.486 519.146 323.762 c
-518.596 327.06 519.938 331.368 516.682 332.47 c
-514.726 333.132 512.445 331.328 510.677 332.595 c
-507.659 334.76 511.134 338.113 512.781 336.209 c
-513.27 335.644 512.965 334.841 512.854 334.101 c
-512.322 330.568 516.406 328.671 517.795 325.584 c
-518.781 323.392 518.288 320.87 518.84 318.544 c
-519.603 315.328 518.597 312.416 516.693 313.238 c
-515.538 313.736 514.962 316.381 513.641 315.231 c
-511.578 313.435 516.383 312.538 515.727 311.072 c
-514.808 309.016 512.993 312.042 511.421 312.282 c
-509.494 312.575 508.672 310.115 510.186 309.271 c
-511.705 308.425 512.848 310.841 514.344 310.587 c
-514.842 310.503 515.289 310.121 515.791 310.233 c
-518.741 310.888 515.24 315.582 510.555 312.919 c
-509.578 312.364 508.361 312.187 507.707 313.001 c
-506.242 314.824 509.74 316.819 508.679 318.659 c
-508.16 319.558 506.566 320.008 507.033 321.094 c
-507.815 322.912 509.751 320.464 511.008 320.799 c
-511.985 321.059 512.126 322.249 512.343 323.267 c
-512.934 326.037 515.285 328.024 518.08 328.616 c
-528.8 330.882 534.552 338.629 528.47 339.739 c
-527.255 339.961 525.694 339.271 525.061 340.418 c
-524.557 341.332 525.308 342.453 526.471 342.571 c
-530.949 343.024 528.813 336.441 531 334.032 c
-543.086 320.719 549.646 352.029 534.208 344.034 c
-532.442 343.12 532.038 339.52 529.721 340.348 c
-528.983 340.611 528.624 341.398 528.567 342.197 c
-528.461 343.674 529.226 345.082 530.545 345.746 c
-534.099 347.535 537.022 343.669 535.041 341.42 c
-533.9 340.126 530.98 340.767 530.76 338.729 c
-530.373 335.14 536.347 337.402 536.966 334.877 c
-537.027 334.63 537.017 334.373 537.04 334.12 c
-537.065 333.835 537.138 333.543 537.359 333.362 c
-543.056 328.675 534.905 337.419 535.181 339.991 c
-535.293 341.029 536.516 341.303 537.539 341.65 c
-538.806 342.08 539.865 342.983 541.145 343.375 c
-543.061 343.962 545.569 343.708 546.234 345.633 c
-546.455 346.274 546.318 347.007 546.651 347.601 c
-548.352 350.631 553.537 347.548 550.883 344.027 c
-548.347 340.661 542.505 344.044 544.733 348.655 c
-547.106 353.566 548.188 359.222 544.898 357.114 c
-543.512 356.226 544.642 348.584 541.661 352.193 c
-540.971 353.029 545.028 358.859 541.26 356.713 c
-540.585 356.328 541.63 354.106 540.183 354.415 c
-539.917 354.472 539.796 354.752 539.628 354.963 c
-538.526 356.351 535.385 354.397 534.768 356.565 c
-531.829 366.885 543.247 353.543 544.706 355.62 c
-545.47 356.706 544.397 358.004 544.443 359.257 c
-544.5 360.759 545.917 361.678 547.299 362.363 c
-553.023 365.204 556.102 359.686 553.515 358.237 c
-551.386 357.045 550.072 360.913 548.036 360.347 c
-547.751 360.268 547.503 360.101 547.263 359.93 c
-544.215 357.75 540.494 356.555 539.516 359.244 c
-538.799 361.217 540.831 362.972 543.275 363.413 c
-547.649 364.202 549.292 367.749 547.159 368.691 c
-545.789 369.296 544.705 367.694 544.062 366.044 c
-543.454 364.485 542.376 363.008 540.778 363.07 c
-539.182 363.133 538.103 364.697 538.325 366.353 c
-538.507 367.709 539.516 368.818 540.859 369.031 c
-543.043 369.378 544.899 367.171 547.079 367.597 c
-549.763 368.121 550.727 371.524 549.025 374.104 c
-546.607 377.768 542.055 376.019 542.515 373.235 c
-542.794 371.548 544.865 371.288 546.668 371.035 c
-548.986 370.711 551.427 369.697 553.414 370.969 c
-554.478 371.65 555.363 372.929 556.597 372.567 c
-559.929 371.588 556.165 367.609 557.134 365.516 c
-557.663 364.372 559.022 364.024 560.315 363.993 c
-563.447 363.919 566.577 365.276 567.509 368.16 c
-567.919 369.427 567.583 370.851 566.426 371.154 c
-565.619 371.366 564.836 370.78 564.015 370.855 c
-559.411 371.278 561.213 380.038 567.298 377.218 c
-571.007 375.5 569.788 367.722 574.842 367.93 c
-575.643 367.963 576.367 368.351 577.079 368.718 c
-579.108 369.764 581.29 370.757 582.431 372.742 c
-585.309 377.75 579.949 381.869 577.062 379.235 c
-570.238 373.009 585.971 371.162 584.873 366.636 c
-579.32 343.742 555.14 382.49 578.944 374.501 c
-579.626 374.272 580.089 373.666 580.696 373.286 c
-582.142 372.38 584.505 372.467 584.71 370.669 c
-585.034 367.827 580.768 367.307 580.405 370.165 c
-580.258 371.316 581.505 372.381 580.986 373.491 c
-580.054 375.484 577.191 374.134 578.018 372.274 c
-578.293 371.655 579.027 371.483 579.712 371.391 c
-582.182 371.057 584.673 370.91 587.137 370.536 c
-588.531 370.324 589.971 369.742 590.011 368.448 c
-590.056 366.942 588.269 366.407 586.647 366.069 c
-582.565 365.219 579.088 362.359 578.31 358.313 c
-578.04 356.906 577.983 355.276 576.713 354.632 c
-575.007 353.767 573.327 355.445 572.234 357.31 c
-570.601 360.096 569.084 363.313 570.738 365.978 c
-573.703 370.754 578.682 366.069 576.305 363.842 c
-574.754 362.389 573.054 365.098 571.36 364.856 c
-568.743 364.483 567.934 342.367 564.325 355.612 c
-563.865 357.3 569.901 362.922 565.077 361.64 c
-564.261 361.424 564.214 360.333 564.637 359.408 c
-565.851 356.755 568.718 355.465 570.346 357.151 c
-574.383 361.333 565.351 363.419 564.881 367.001 c
-564.651 368.751 565.998 370.235 566.262 371.953 c
-566.987 376.679 561.426 377.06 561.103 374.307 c
-561.023 373.624 561.478 372.792 560.879 372.373 c
-560.113 371.838 559.513 372.971 558.75 373.404 c
-557.286 374.234 556.077 372.438 554.754 371.333 c
-551.114 368.293 545.451 371.247 544.14 376.82 c
-543.893 377.866 543.663 379.047 542.668 379.4 c
-541.331 379.873 540.04 378.552 540.53 377.18 c
-541.252 375.16 545.722 376.236 545.517 373.45 c
-545.335 370.963 541.921 372.149 538.945 374.303 c
-538.262 374.798 537.421 375.205 537.237 376.032 c
-536.966 377.26 538.357 378.192 538.286 379.413 c
-538.222 380.515 537.133 381.254 536.017 381.021 c
-535.511 380.916 535.067 380.608 534.822 380.153 c
-533.767 378.19 536.087 376.407 537.512 377.693 c
-539.471 379.461 535.83 381.134 535.458 383.089 c
-534.478 388.235 545.803 385.441 544.526 390.825 c
-544.343 391.599 544.054 392.493 544.732 392.677 c
-545.246 392.817 545.565 392.235 545.812 391.703 c
-546.901 389.35 549.779 389.289 550.356 391.092 c
-551.06 393.293 547.52 395.266 544.991 392.501 c
-543.332 390.687 543.19 388.003 541.853 385.958 c
-540.025 383.161 536.173 380.994 537.5 377.81 c
-538.349 375.772 540.679 376.36 540.576 377.665 c
-540.502 378.606 539.203 378.891 538.687 378.001 c
-537.428 375.829 541.193 376.401 543.665 375.846 c
-545.597 375.412 545.97 372.981 547.446 371.792 c
-549.848 369.855 552.927 371.835 552.219 374.118 c
-551.143 377.588 545.92 375.611 547.434 372.277 c
-548.391 370.167 555.893 368.948 551.815 366.744 c
-551.214 366.419 550.478 366.718 550.12 367.331 c
-548.696 369.776 552.664 373.064 556.88 370.145 c
-568.544 362.07 556.101 350.529 551.462 356.793 c
-551.096 357.287 550.884 357.935 550.316 358.19 c
-548.846 358.851 547.83 356.993 548.901 356.221 c
-550.01 355.421 551.174 357.778 552.284 356.921 c
-555.333 354.568 548.993 354.736 548.38 353.363 c
-546.041 348.124 557.725 349.165 554.835 357.042 c
-554.13 358.963 553.247 361.135 554.716 362.415 c
-556.103 363.624 557.505 362.11 556.813 361.296 c
-556.485 360.911 555.921 361.128 555.416 361.221 c
-551.066 362.027 550.664 355.82 554.319 355.762 c
-556.641 355.725 557.041 364.282 560.638 360.608 c
-562.473 358.734 559.41 356.202 557.935 358.273 c
-556.99 359.602 564.756 368.407 558.233 365.363 c
-557.654 365.092 557.602 364.355 557.646 363.687 c
-557.833 360.816 556.247 358.46 554.495 359.346 c
-553.654 359.771 553.398 361.04 552.409 361.143 c
-547.179 361.688 551.26 353.576 553.678 357.909 c
-554.17 358.788 552.087 360.581 553.695 361.095 c
-555.078 361.538 554.425 359.47 554.374 357.887 c
-554.343 356.964 555.128 356.309 555.672 355.572 c
-559.307 350.647 553.901 344.897 549.533 347.62 c
-548.086 348.522 547.566 350.332 547.947 352.023 c
-548.544 354.68 551.045 356.487 553.658 355.937 c
-556.474 355.345 558.705 351.822 561.526 353.196 c
-564.074 354.436 563.732 359.987 567.31 359.303 c
-569.2 358.942 569.383 356.601 569.986 354.743 c
-570.585 352.896 571.959 351.456 573.139 349.921 c
-575.667 346.632 574.252 342.869 571.83 343.359 c
-571.2 343.487 570.611 344.012 570.005 343.744 c
-557.617 338.272 583.997 334.664 573.301 342.971 c
-573.086 343.138 572.799 343.136 572.53 343.167 c
-570.501 343.394 568.02 344.716 567.556 342.77 c
-567.142 341.038 569.571 340.818 571.09 339.933 c
-571.676 339.591 572.362 339.257 572.673 339.757 c
-572.846 340.037 572.68 340.377 572.678 340.7 c
-572.669 342.273 575.01 342.647 575.513 340.972 c
-576.126 338.927 572.555 337.31 569.838 340.322 c
-567.577 342.829 569.22 345.621 570.829 344.927 c
-571.214 344.761 571.432 344.37 571.758 344.112 c
-572.466 343.555 573.432 343.721 574.327 343.696 c
-576.538 343.635 578.81 342.286 580.78 343.41 c
-581.76 343.969 582.396 345.093 583.521 345.31 c
-586.047 345.798 587.147 342.654 585.284 341.613 c
-584.554 341.205 583.334 341.267 583.404 340.382 c
-583.478 339.458 584.743 339.764 585.464 339.374 c
-591.069 336.34 580.573 335.625 579.648 333.386 c
-578.885 331.54 581.179 327.409 578.239 327.901 c
-576.398 328.21 577.51 330.661 579.201 332.753 c
-580.104 333.87 580.336 335.388 581.216 336.523 c
-583.655 339.672 588.573 338.75 589.557 335.031 c
-590.09 333.017 588.906 330.632 590.303 328.975 c
-590.363 328.904 590.427 328.836 590.489 328.766 c
-591.58 327.535 591.84 325.766 592.933 324.537 c
-594.834 322.4 597.706 323.6 597.403 325.462 c
-597.105 327.289 594.689 326.572 592.832 326.751 c
-590.018 327.022 588.064 325.584 589.278 324.636 c
-589.501 324.462 589.806 324.454 590.056 324.325 c
-593.434 322.598 587.496 321.63 585.208 319.689 c
-582.943 317.769 585.536 304.61 580.365 310.864 c
-580.064 311.228 579.97 311.772 579.534 311.979 c
-571.156 315.956 582.255 305.482 580.073 304.62 c
-577.677 303.674 578.334 308.068 576.662 308.207 c
-574.579 308.381 574.038 304.134 578.341 302.976 c
-579.499 302.664 580.663 302.375 581.812 302.034 c
-582.61 301.797 583.437 301.536 584.242 301.754 c
-585.913 302.207 586.433 304.284 587.937 305.06 c
-588.708 305.457 589.604 305.439 590.456 305.584 c
-593.054 306.026 595.019 304.717 594.121 303.504 c
-593.066 302.078 591.36 304.394 590.154 303.771 c
-587.484 302.391 590.983 297.171 594.354 300.867 c
-596.46 303.177 593.913 305.603 592.515 304.44 c
-591.074 303.24 594.483 300.753 592.558 299.638 c
-591.806 299.202 590.899 299.855 590.631 300.835 c
-589.739 304.102 593.467 306.878 596.786 305.087 c
-599.838 303.44 599.546 299.352 600.755 296.185 c
-603.481 289.042 599.399 283.936 596.983 286.823 c
-596.424 287.491 596.527 288.47 596.09 289.213 c
-595.039 290.998 590.825 291.782 592.656 293.87 c
-594.727 296.231 596.43 291.384 598.352 291.735 c
-599.163 291.883 599.706 292.723 600.538 292.772 c
-602.254 292.871 602.887 290.594 601.407 289.813 c
-598.432 288.241 598.923 293.545 597.135 294.729 c
-594.598 296.408 586.515 295.573 590.63 298.414 c
-592 299.359 593.964 295.911 595.277 297.756 c
-597.235 300.509 591.875 299.335 590.441 300.609 c
-586.473 304.134 595.773 310.579 598.362 302.263 c
-599.819 297.586 595.244 294.295 592.481 296.568 c
-589.539 298.988 593.348 302.542 596.401 305.776 c
-597.191 306.613 597.812 307.603 598.675 308.366 c
-599.375 308.983 600.271 309.427 601.144 309.142 c
-619.569 303.123 586.634 288.273 594.149 306.043 c
-594.841 307.68 597.331 307.424 598.158 308.953 c
-598.708 309.968 598.178 311.185 598.415 312.296 c
-598.962 314.864 600.989 318.061 598.454 318.047 c
-595.104 318.03 598.632 312.471 596.033 311.963 c
-593.033 311.376 595.215 315.479 595.519 318.507 c
-595.792 321.227 592.47 322.436 591.458 324.794 c
-590.627 326.73 591.211 329.503 589.155 330.352 c
-587.192 331.162 584.132 328.375 582.871 330.799 c
-582.21 332.071 583.337 333.557 584.797 333.296 c
-587.277 332.853 586.431 329.477 584.993 326.515 c
-583.796 324.046 584.117 321.036 586.399 320.001 c
-587.838 319.348 589.437 320.128 589.376 321.453 c
-589.274 323.669 586.297 322.715 583.685 321.994 c
-580.271 321.051 574.983 322.47 575.397 318.728 c
-575.422 318.497 575.492 318.275 575.539 318.048 c
-576.026 315.688 574.12 313.628 573.889 311.276 c
-573.68 309.137 574.347 306.479 572.332 305.758 c
-568.57 304.412 568.334 312.06 564.759 311.115 c
-563.593 310.806 563.101 309.513 562.165 308.79 c
-560.39 307.416 557.876 308.415 555.836 307.618 c
-551.331 305.857 554.721 301.018 556.733 302.866 c
-557.341 303.425 557.041 304.381 556.47 305.097 c
-553.804 308.442 554.611 312.02 556.699 311.267 c
-558.506 310.615 557.022 308.141 557.891 306.863 c
-559.685 304.225 564.343 307.82 562.585 314.306 c
-561.978 316.547 561.415 319.155 559.21 319.434 c
-555.614 319.888 555.464 314.932 555.621 310.476 c
-555.657 309.451 555.335 308.374 554.414 308.245 c
-551.813 307.88 551.501 312.59 554.92 312.237 c
-557.194 312.002 556.873 309.001 557.602 306.877 c
-558.363 304.663 560.774 303.482 562.687 304.583 c
-565.362 306.122 567.843 311.018 569.368 307.799 c
-570.839 304.694 565.611 305.589 563.205 304.203 c
-554.263 299.053 568.368 289.903 569.345 298.992 c
-569.516 300.579 567.755 301.494 567.231 302.929 c
-566.761 304.213 567.413 305.624 568.649 305.733 c
-571.296 305.967 572.39 300.85 567.538 299.102 c
-566.225 298.629 564.837 298.398 563.442 298.44 c
-561.72 298.491 560.047 298.955 558.357 299.281 c
-549.535 300.98 548.193 291.73 552.427 291.246 c
-553.72 291.098 554.759 292.276 554.395 293.487 c
-553.455 296.607 548.338 294.272 547.506 287.737 c
-547.219 285.482 546.085 283.349 544.038 282.407 c
-543.656 282.231 543.244 282.103 542.922 281.83 c
-541.669 280.771 542.501 278.739 541.571 277.47 c
-538.622 273.443 533.896 280.069 536.247 289.295 c
-536.598 290.675 536.608 292.113 536.806 293.522 c
-537.27 296.833 540.091 298.671 541.684 297.074 c
-543.751 295.002 540.685 290.837 536.945 293.119 c
-528.688 298.158 539.161 307.059 542.406 300.688 c
-542.96 299.6 542.502 298.286 541.461 297.6 c
-535.604 293.733 533.117 303.47 538.332 303.446 c
-540.324 303.437 540.551 300.092 542.577 300.157 c
-546.654 300.287 540.681 310.09 546.297 309.015 c
-547.489 308.787 547.79 307.224 548.877 306.774 c
-549.531 306.504 550.296 306.726 550.942 306.433 c
-556.063 304.114 547.614 299.706 549.105 297.137 c
-549.647 296.202 550.812 295.945 551.915 296.026 c
-553.324 296.129 554.766 296.67 556.077 296.11 c
-558.175 295.214 558.451 292.202 560.568 291.335 c
-563.215 290.251 565.412 292.987 564.04 294.866 c
-563.524 295.572 562.587 295.705 561.768 295.996 c
-559.455 296.821 558.043 299.034 556.078 300.476 c
-554.027 301.98 551.266 302.41 549.687 300.641 c
-548.899 299.758 548.741 298.521 548.261 297.447 c
-547.971 296.796 547.555 296.15 547.688 295.447 c
-549.182 287.533 554.964 299.45 557.619 298.801 c
-559.817 298.263 560.185 295.205 558.373 293.046 c
-557.854 292.429 557.24 291.752 557.54 291.03 c
-558.041 289.821 559.631 290.591 560.855 290.446 c
-562.757 290.22 565.029 287.529 565.974 289.67 c
-567.377 292.848 561.265 291.848 561.312 294.103 c
-561.342 295.551 563.443 295.826 563.733 297.164 c
-564.235 299.483 560.909 299.322 558.243 299.67 c
-557.534 299.762 556.857 300.044 556.338 300.535 c
-554.646 302.133 555.314 304.815 554.435 306.898 c
-552.316 311.916 546.415 309.432 547.4 306.167 c
-547.483 305.893 547.638 305.647 547.834 305.438 c
-548.704 304.512 550.076 304.48 551.311 304.214 c
-553.288 303.789 555.078 302.623 555.855 300.769 c
-556.749 298.638 557.354 295.858 559.381 296.472 c
-561.201 297.023 560.748 301.618 563.43 300.648 c
-564.641 300.211 565.846 297.73 566.575 299.323 c
-567.203 300.698 564.834 300.533 564.342 301.408 c
-561.069 307.221 573.361 305.516 568.636 300.15 c
-567.962 299.384 566.819 299.557 565.826 299.389 c
-562.972 298.907 560.543 299.841 561.545 301.248 c
-562.055 301.963 563.063 301.541 563.916 301.593 c
-566.613 301.758 566.43 305.478 568.218 307.083 c
-573.565 311.886 576.918 301.883 571.728 302.41 c
-571.163 302.468 570.742 302.961 570.835 303.506 c
-571.099 305.046 573.898 304.67 574.777 301.65 c
-575.26 299.99 576.033 298.412 576.301 296.701 c
-576.569 294.995 576.323 293.246 575.589 291.682 c
-574.494 289.346 571.916 288.774 571.15 290.355 c
-570.356 291.993 572.574 293.101 574.87 293.593 c
-575.964 293.828 577.215 293.982 577.591 293.039 c
-578.483 290.802 572.534 291 574.059 288.456 c
-578.742 280.641 575.642 302.552 580.296 295.538 c
-580.955 294.544 579.865 291.378 581.667 292.383 c
-582.006 292.573 582.018 293.041 582.281 293.314 c
-585.443 296.58 582.292 290.186 581.973 287.017 c
-581.813 285.419 583.711 284.544 585.642 284.789 c
-587.29 284.999 589.035 284.716 588.956 283.395 c
-588.849 281.62 580.168 276.952 586.039 278.223 c
-586.935 278.418 586.649 280.19 587.719 280.147 c
-588.464 280.117 588.456 279.09 588.975 278.674 c
-591.608 276.56 593.374 282.097 589.85 281.85 c
-588.826 281.778 588.532 280.52 588.626 279.338 c
-588.89 276.01 591.349 273.854 593.02 275.277 c
-594.162 276.251 593.36 278.366 594.671 279.206 c
-597.863 281.253 601.732 274.014 595.099 272.021 c
-593.606 271.572 592.017 271.705 590.524 272.155 c
-587.567 273.046 586.177 275.921 587.864 277.34 c
-590.257 279.352 593.422 275.847 591.076 273.621 c
-589.663 272.281 587.513 273.778 585.812 273.151 c
-582.78 272.034 584.11 267.956 585.724 264.435 c
-588.774 257.783 595.286 258.933 594.349 262.183 c
-593.565 264.906 583.44 270.291 590.278 268.768 c
-590.945 268.62 591.146 267.795 591.726 267.475 c
-593.324 266.593 595.368 268.999 593.631 271.222 c
-593.063 271.949 592.166 272.481 592.043 273.409 c
-591.79 275.31 594.213 275.894 596.415 276.211 c
-600.584 276.812 603.838 280.235 603.006 284.085 c
-602.338 287.179 598.897 288.965 598.393 292.107 c
-598.066 294.145 599.129 296.184 601.067 296.753 c
-602.637 297.215 604.246 296.319 604.179 294.891 c
-603.856 288.014 596.685 296.76 594.152 295.55 c
-592.769 294.889 592.981 293.194 594.026 293.068 c
-595.69 292.868 594.774 296.411 596.53 296.102 c
-599.243 295.625 588.818 282.335 596.381 289.535 c
-596.551 289.697 596.601 289.951 596.775 290.109 c
-598.463 291.634 599.16 287.651 595.902 285.926 c
-592.53 284.14 594.49 279.622 595.762 275.664 c
-596.632 272.957 596.547 270.046 595.682 267.337 c
-595.068 265.411 594.116 263.383 595.065 261.599 c
-597.241 257.505 602.748 260.082 601.541 263.602 c
-601.004 265.166 598.928 266.788 600.484 267.7 c
-603.716 269.595 602.542 263.293 604.415 263.156 c
-606.336 263.015 606.54 265.711 604.843 265.909 c
-603.397 266.078 603.257 262.78 601.541 263.556 c
-599.377 264.535 602.74 266.24 603.04 267.784 c
-603.135 268.274 602.942 268.781 602.517 269.036 c
-601.136 269.864 599.959 267.945 599.604 265.749 c
-599.159 263.003 598.574 259.836 600.972 259.252 c
-603.686 258.59 605.793 262.514 603.223 265.712 c
-600.46 269.151 596.693 266.32 597.895 264.321 c
-599.592 261.499 602.914 266.963 604.688 264.899 c
-605.502 263.952 604.556 262.434 605.322 261.464 c
-607.643 258.526 611.9 270.211 614.063 264.131 c
-614.573 262.699 612.735 261.937 611.126 261.285 c
-604.996 258.804 607.857 251.584 611.858 252.684 c
-613.561 253.153 614.162 255.274 612.984 256.653 c
-611.35 258.566 608.486 257.272 606.208 255.551 c
-602.878 253.036 599.851 249.568 601.889 246.514 c
-603.676 243.837 607.472 244.682 610.716 246.001 c
-613.129 246.981 615.633 248.435 615.382 250.863 c
-615.244 252.201 614.077 253.181 612.935 252.76 c
-610.553 251.881 611.722 247.168 616.768 247.167 c
-616.951 247.167 617.134 247.168 617.318 247.163 c
-618.148 247.141 618.978 246.983 619.802 247.099 c
-629.887 248.523 621.753 261.38 617.654 254.964 c
-616.327 252.888 619.9 251.023 619.087 248.947 c
-618.346 247.057 615.846 247.832 613.807 247.74 c
-611.433 247.633 609.336 245.675 606.974 246.226 c
-602.936 247.168 602.311 252.77 606.185 254.718 c
-608.498 255.88 611.969 254.716 613.286 257.179 c
-613.759 258.065 613.684 259.26 614.525 259.852 c
-616.412 261.18 620.361 255.149 621.804 259.153 c
-622.5 261.085 619.496 262.767 617.847 260.487 c
-617.269 259.687 617.266 258.645 617.46 257.673 c
-617.894 255.506 619.84 254.304 620.982 255.403 c
-621.616 256.013 621.431 257.198 622.236 257.637 c
-629.647 261.68 619.957 251.736 620.43 248.91 c
-620.589 247.961 621.493 247.404 622.421 247.08 c
-628.154 245.078 630.435 251.138 627.58 252.54 c
-625.17 253.722 622.823 247.461 620.264 250.293 c
-619.549 251.083 619.855 252.348 620.85 252.81 c
-622.801 253.715 625.083 250.242 626.934 252.021 c
-627.813 252.865 627.27 254.236 627.512 255.385 c
-627.758 256.552 628.841 257.541 628.522 258.728 c
-628.371 259.288 627.914 259.835 628.206 260.351 c
-629.833 263.219 629.696 257.923 630.876 256.008 c
-637.972 244.487 632.747 265.409 624.561 267.572 c
-618.865 269.077 621.596 275.543 624.747 274.211 c
-625.989 273.685 625.83 272.061 626.099 270.74 c
-626.793 267.334 630.652 265.879 634.367 266.388 c
-638.54 266.961 640.453 270.796 638.303 272.554 c
-637.462 273.243 636.28 273.105 635.247 272.707 c
-629.731 270.579 626.748 277.118 630.474 276.729 c
-630.54 276.722 630.604 276.707 630.67 276.699 c
-632.05 276.525 632.545 278.949 633.987 278.563 c
-634.47 278.434 634.815 277.91 635.328 277.965 c
-637.29 278.176 635.061 280.35 635.069 281.761 c
-635.08 283.708 640.456 283.543 638.878 286.283 c
-638.157 287.534 636.521 286.446 635.195 286.523 c
-617.19 287.58 640.562 311.308 643.553 293 c
-643.785 291.579 643.033 290.196 643.106 288.764 c
-643.356 283.879 649.363 283.698 649.974 287.168 c
-650.181 288.338 649.268 289.403 649.354 290.578 c
-649.441 291.757 650.111 293.184 649.011 293.564 c
-647.937 293.934 646.947 292.444 647.79 290.992 c
-648.296 290.121 649.253 289.563 650.162 289.895 c
-652.694 290.819 651.269 294.314 649.107 293.466 c
-647.181 292.71 652.921 284.366 647.275 286.383 c
-646.342 286.716 646.456 287.942 646.649 289.017 c
-647.348 292.924 644.634 296.408 641.456 295.543 c
-638.96 294.863 638.102 291.799 639.272 289.216 c
-640.326 286.89 642.117 284.332 640.195 282.906 c
-638.628 281.745 636.793 283.308 635.099 284.469 c
-633.942 285.261 632.518 285.858 632.08 287.199 c
-631.52 288.914 633.03 291.077 631.622 292.441 c
-629.822 294.185 626.445 292.156 627.188 288.823 c
-627.553 287.186 627.757 285.365 626.424 285.349 c
-625.552 285.34 625.069 286.372 625.413 287.337 c
-625.69 288.113 626.37 288.681 627.187 288.771 c
-636.321 289.769 630.844 275.161 624.796 281.692 c
-623.014 283.616 625.753 286.142 625.281 288.394 c
-624.907 290.178 622.992 291.135 621.137 290.72 c
-620.697 290.621 620.263 290.435 620.02 290.056 c
-618.786 288.126 622.521 285.372 625.906 288.778 c
-627.389 290.269 629.182 291.789 630.982 290.937 c
-632.659 290.144 633.226 287.22 635.297 287.688 c
-637.896 288.276 637.534 292.611 634.138 292.628 c
-630.359 292.647 627.444 294.736 629.692 295.464 c
-629.954 295.548 630.231 295.469 630.502 295.423 c
-634.791 294.709 637.154 300.159 633.766 302.751 c
-632.223 303.93 630.141 303.42 628.215 303.422 c
-623.792 303.428 621.492 307.444 623.631 309.512 c
-624.799 310.64 626.598 310.035 628.17 310.247 c
-628.67 310.315 629.152 310.472 629.619 310.663 c
-633.617 312.294 636.633 310.029 635.275 308.323 c
-634.808 307.736 633.714 307.483 633.955 306.698 c
-636.278 299.122 635.833 312.787 638.012 311.182 c
-638.717 310.663 638.214 309.482 637.027 309.073 c
-635.232 308.455 633.5 309.475 633.838 310.836 c
-634.179 312.205 637.202 313.907 635.107 314.422 c
-633.294 314.867 634.532 312.16 633.908 311.174 c
-632.987 309.718 628.281 313.611 628.459 310.046 c
-628.522 308.774 630.342 308.842 631.942 309.779 c
-634.795 311.451 638.467 311.046 640.053 308.343 c
-641.575 305.749 640.193 302.64 638.323 300.143 c
-635.106 295.847 631.865 290.732 635.305 287.358 c
-637.033 285.664 639.729 285.68 641.912 286.85 c
-642.398 287.11 642.868 287.428 643.415 287.514 c
-669.692 291.664 628.621 255.467 639.055 281.904 c
-639.477 282.975 641.581 283.823 640.429 284.759 c
-639.771 285.295 638.75 284.24 638.118 284.868 c
-637.325 285.656 638.689 286.972 640.8 286.503 c
-643.193 285.971 644.091 284.026 642.894 283.537 c
-641.045 282.781 641.477 286.103 640.233 286.314 c
-637.312 286.809 638.417 280.909 643.872 281.716 c
-644.964 281.877 646.163 281.708 646.562 280.749 c
-647.247 279.102 641.06 274.294 645.825 274.236 c
-647.663 274.214 646.719 276.759 647.307 278.189 c
-647.945 279.739 649.957 279.592 651.63 279.858 c
-652.819 280.047 654.11 280.522 655.029 279.744 c
-657.812 277.39 652.736 275.129 652.065 272.461 c
-651.41 269.861 654.028 267.624 657.09 267.831 c
-659.734 268.009 661.481 270.275 660.346 271.983 c
-659.035 273.955 655.357 271.906 654.255 274.197 c
-652.91 276.995 657.877 278.102 657.608 280.63 c
-657.322 283.325 645.771 282.961 650.8 287.813 c
-652.175 289.14 655.359 286.621 656.255 288.941 c
-658.581 294.959 650.086 288.541 647.48 289.508 c
-646.907 289.721 646.477 290.2 646.298 290.785 c
-645.302 294.054 651.009 295.515 650.167 298.747 c
-649.564 301.061 646.081 301.056 645.342 303.287 c
-645.203 303.706 645.196 304.158 645.048 304.574 c
-643.749 308.224 638.227 305.829 635.389 299.738 c
-634.156 297.092 633.357 293.997 635.635 293.11 c
-637.135 292.525 638.661 293.724 639.283 295.37 c
-640.02 297.318 639.282 299.48 637.523 299.624 c
-637.001 299.666 636.404 299.491 636.044 299.883 c
-635.728 300.227 635.849 300.738 635.98 301.197 c
-636.513 303.067 637.781 304.627 639.013 303.82 c
-641.423 302.243 637.288 300.768 635.442 298.791 c
-635.2 298.531 635.017 298.215 634.731 298.003 c
-633.287 296.93 627.987 300.014 629.007 296.4 c
-629.433 294.889 631.342 295.999 632.9 296.162 c
-635.341 296.417 639.113 292.888 639.75 296.159 c
-639.906 296.962 639.306 297.64 638.842 298.314 c
-638.505 298.804 638.16 299.365 637.573 299.394 c
-636.413 299.451 634.194 297.103 634.35 299.083 c
-634.411 299.85 635.581 299.649 635.862 300.249 c
-637.514 303.768 633.202 299.218 631.055 298.724 c
-628.802 298.205 628.063 301.757 630.505 302.151 c
-630.828 302.203 631.201 302.143 631.408 302.4 c
-631.856 302.958 631.117 303.861 630.257 303.402 c
-629.996 303.263 629.755 302.998 629.479 303.112 c
-628.547 303.493 629.787 305.167 631.48 304.046 c
-632.355 303.466 633.407 303.251 634.367 302.831 c
-634.435 302.802 634.502 302.771 634.562 302.728 c
-635.698 301.928 633.888 300.887 633.587 299.801 c
-632.177 294.711 642.112 295.741 638.911 301.433 c
-637.902 303.227 635.225 303.102 633.904 301.21 c
-632.239 298.825 634.364 296.378 636.045 297.295 c
-637.697 298.195 631.322 307.815 637.682 304.84 c
-638.462 304.475 638.473 303.148 639.4 303.037 c
-640.871 302.862 640.853 305.196 639.021 307.136 c
-637.895 308.327 637.198 310.179 635.529 310.252 c
-632.393 310.391 631.251 305.639 634.767 304.125 c
-637.779 302.828 640.273 306.316 643.311 306.661 c
-648.964 307.303 655.066 308.508 651.918 311.323 c
-651.012 312.132 649.703 311.625 648.501 311.42 c
-645.762 310.952 643.353 309.619 644.509 308.082 c
-644.897 307.566 645.605 307.485 646.251 307.621 c
-652.493 308.932 660.795 299.173 653.52 302.469 c
-653.005 302.703 652.674 303.419 652.09 303.255 c
-651.507 303.09 651.565 302.331 651.633 301.668 c
-651.793 300.113 650.922 298.364 651.989 297.147 c
-653.935 294.928 656.932 297.476 655.527 299.411 c
-654.448 300.897 647.166 300.621 650.937 302.91 c
-651.46 303.228 652.055 302.832 652.633 302.635 c
-654.406 302.031 656.01 303.452 657.659 304.325 c
-658.653 304.851 659.819 305.363 659.878 306.462 c
-659.921 307.268 659.215 308.07 659.633 308.808 c
-660.946 311.13 662.258 307.39 663.505 304.341 c
-663.762 303.715 664.263 303.232 664.85 302.896 c
-665.239 302.674 665.673 302.506 665.957 302.157 c
-667.14 300.698 664.314 297.88 666.454 296.747 c
-672.489 293.552 666.565 303.153 667.853 305.402 c
-670.262 309.606 676.875 304.587 672.659 300.786 c
-671.853 300.059 670.633 300.05 670.14 300.897 c
-668.854 303.107 673.422 305.961 675.589 301.676 c
-676.115 300.637 676.257 299.393 675.567 298.48 c
-674.732 297.374 673.19 297.395 671.835 297.133 c
-670.081 296.794 668.725 295.429 669.356 294.096 c
-670.596 291.476 673.654 294.678 675.727 294.129 c
-685.071 291.654 673.314 280.252 671.499 288.957 c
-671.375 289.551 671.642 290.158 672.166 290.463 c
-673.677 291.342 675.186 289.586 675.884 287.512 c
-676.201 286.566 676.557 285.615 677.219 284.867 c
-679.669 282.101 685.269 280.37 682.628 277.392 c
-680.553 275.053 677.958 278.532 675.245 280.147 c
-672.375 281.856 671.894 284.669 673.637 284.686 c
-675.434 284.703 674.524 282.039 675.572 281.248 c
-677.049 280.133 678.404 278.583 677.015 278.731 c
-676.809 278.753 676.669 278.927 676.529 279.08 c
-674.724 281.053 671.503 280.348 670.836 277.871 c
-670.643 277.157 670.195 276.562 669.776 276.887 c
-669.342 277.222 669.866 277.769 670.419 278.203 c
-671.338 278.924 671.263 280.38 672.18 281.104 c
-674.406 282.86 678.113 279.73 676.051 275.99 c
-675.119 274.298 673.127 272.934 673.681 271.026 c
-673.848 270.45 674.266 269.978 674.429 269.401 c
-674.91 267.688 673.309 266.355 672.028 265.062 c
-671.823 264.855 671.624 264.635 671.532 264.359 c
-670.868 262.367 674.346 261.97 674.266 260.195 c
-673.874 251.531 662.055 262.002 670.615 263.001 c
-670.832 263.026 671.053 262.972 671.218 262.83 c
-672.277 261.916 670.377 260.572 670.969 259.587 c
-671.712 258.353 673.29 259.826 674.366 259.414 c
-675.737 258.888 675.392 256.912 674.123 255.445 c
-671.72 252.668 671.892 249.168 674.205 249.066 c
-674.775 249.04 675.323 249.362 675.887 249.258 c
-678.086 248.856 677.981 244.665 674.133 244.296 c
-670.412 243.94 665.38 246.553 664.401 242.657 c
-663.628 239.577 664.015 234.775 661.654 236.86 c
-660.346 238.015 662.431 239.474 662.521 240.911 c
-662.592 242.062 661.401 243.116 661.908 244.224 c
-667.79 257.099 675.844 232.513 663.336 238.069 c
-662.381 238.493 662.017 239.689 661.063 240.115 c
-658.272 241.359 656.325 237.427 658.84 235.997 c
-659.904 235.392 661.375 236.2 662.334 235.377 c
-663.038 234.772 662.946 233.735 662.753 232.802 c
-662.463 231.403 662.1 229.998 662.219 228.571 c
-662.231 228.43 662.247 228.29 662.269 228.151 c
-663.141 222.743 670.191 222.239 673.562 218.37 c
-674.077 217.778 674.505 217.074 674.437 216.296 c
-674.325 215.028 673.04 213.581 674.207 212.822 c
-678.63 209.947 675.783 218.452 677.761 218.66 c
-678.421 218.729 678.932 218.205 679.477 217.832 c
-680.52 217.117 681.84 216.952 683.041 217.35 c
-684.58 217.86 685.623 219.332 685.027 220.689 c
-683.729 223.646 679.15 221.327 677.428 215.794 c
-677.08 214.676 676.555 213.573 675.559 212.959 c
-673.861 211.911 671.35 212.706 670.02 211.111 c
-669.028 209.923 669.32 207.786 667.772 207.198 c
-667.173 206.97 666.498 207.134 666.057 207.599 c
-665.007 208.708 665.501 211.494 663.603 211.274 c
-663.066 211.212 662.724 210.705 662.963 210.305 c
-663.599 209.244 665.356 210.585 664.177 211.621 c
-663.929 211.839 663.533 211.872 663.378 212.173 c
-662.459 213.956 665.602 212.985 666.065 213.756 c
-666.941 215.216 664.173 215.507 664.126 216.658 c
-663.981 220.216 667.251 215.635 669.811 214.344 c
-674.215 212.122 674.029 225.752 679.307 221.402 c
-681.061 219.957 679.033 217.107 680.448 215.499 c
-681.455 214.355 683.253 214.776 683.487 216.12 c
-683.647 217.036 682.824 217.714 682.311 218.48 c
-680.862 220.642 681.452 224.568 678.57 224.839 c
-677.651 224.926 676.788 224.355 675.869 224.442 c
-674.708 224.553 673.957 225.587 673.062 226.319 c
-671.724 227.413 669.836 227.65 668.938 226.384 c
-664.182 219.673 678.438 219.153 673.99 225.368 c
-673.301 226.331 670.435 225.592 670.927 227.389 c
-671.147 228.191 672.233 228.001 672.869 228.423 c
-677.842 231.723 667.921 237.696 667.195 230.209 c
-667.034 228.554 668.487 227.358 669.293 225.933 c
-670.129 224.457 670.239 222.722 670.345 221.033 c
-670.499 218.575 669.204 216.472 667.605 217.162 c
-666.388 217.688 666.64 219.628 665.423 220.153 c
-661.075 222.03 663.548 215.36 669.036 211.157 c
-670.985 209.664 671.154 206.686 673.189 205.291 c
-675.072 204 677.143 205.333 676.656 206.787 c
-675.961 208.86 673.557 206.664 671.717 206.625 c
-670.293 206.596 669.338 207.993 667.987 208.339 c
-664.554 209.217 663.204 204.593 660.341 203.189 c
-658.762 202.414 656.835 202.697 655.844 204.097 c
-652.97 208.156 658.852 214.138 664.461 209.958 c
-666.277 208.605 667.932 206.334 669.951 207.316 c
-670.432 207.55 670.786 207.966 671.117 208.384 c
-673.543 211.445 673.31 215.411 670.566 215.826 c
-668.58 216.127 667.367 213.732 665.445 213.574 c
-662.146 213.303 660.525 217.929 663.072 221.9 c
-667.664 229.058 658.463 235.026 658.444 229.32 c
-658.44 228.035 660.315 226.13 658.62 225.884 c
-658.289 225.836 658 226.055 657.749 226.282 c
-654.731 229.022 655.729 233.03 658.282 232.944 c
-658.46 232.938 658.637 232.901 658.798 232.824 c
-660.54 231.986 658.015 227.53 660.983 227.558 c
-662.527 227.573 662.971 229.889 661.271 230.553 c
-660.231 230.96 659.248 230.109 658.2 229.796 c
-656.533 229.298 654.765 230.213 654.509 231.855 c
-654.253 233.5 656.977 233.093 655.869 232.164 c
-655.811 232.116 655.733 232.108 655.658 232.101 c
-651.193 231.689 647.035 229.449 648.143 226.081 c
-649.102 223.162 655.832 221.271 652.551 218.231 c
-650.809 216.616 648.771 218.805 649.91 220.078 c
-650.74 221.005 652.63 219.482 653.301 220.764 c
-654.335 222.739 650.854 222.234 649.81 223.302 c
-642.351 230.936 661.629 229.525 659.141 218.905 c
-658.827 217.564 658.502 216.152 657.447 215.263 c
-656.227 214.235 654.5 214.311 653.001 213.808 c
-651.519 213.31 650.38 212.029 650.886 210.725 c
-651.319 209.611 653.014 208.683 652.102 207.682 c
-648.872 204.135 650.182 211.927 648.78 212.69 c
-646.25 214.064 646.362 209.839 647.338 205.763 c
-648.044 202.813 645.207 198.807 648.244 197.085 c
-651.371 195.312 658.911 195.575 655.061 192.817 c
-654.509 192.422 653.771 192.588 653.181 192.963 c
-651.11 194.279 650.66 197.618 648.093 198.015 c
-647.469 198.111 646.809 197.968 646.225 198.22 c
-644.974 198.759 644.77 200.423 645.558 201.7 c
-647.088 204.18 650.598 204.343 653.035 202.414 c
-653.695 201.892 654.259 201.23 655.036 200.898 c
-657.637 199.789 660.425 202.168 660.496 205.389 c
-660.611 210.632 659.343 217.228 663.776 215.979 c
-664.516 215.77 665.077 215.173 665.281 214.43 c
-665.882 212.239 663.312 210.275 664.042 208.093 c
-664.422 206.957 665.661 206.404 666.467 207.073 c
-669.741 209.793 662.818 210.17 661.768 212.152 c
-660.444 214.648 664.126 215.97 667.553 216.909 c
-668.625 217.202 669.663 217.748 670.772 217.61 c
-673.397 217.285 673.913 214.204 672.089 213.391 c
-671.136 212.967 670.138 213.651 669.436 214.504 c
-667.169 217.26 663.991 218.325 663.398 216.137 c
-662.674 213.462 667.22 213.538 667.508 211.382 c
-667.825 209.007 664.457 207.826 663.083 210.162 c
-662.512 211.131 662.788 212.348 663.546 213.209 c
-664.073 213.806 664.822 214.243 665.059 215.011 c
-666.211 218.751 659.725 220.392 659.131 215.663 c
-659.077 215.237 659.148 214.805 659.089 214.38 c
-658.792 212.258 655.2 210.354 657.172 208.473 c
-659.619 206.141 660.651 210.991 661.53 215.32 c
-662.052 217.893 662.275 220.68 660.344 220.324 c
-659.107 220.096 658.833 218.396 659.994 217.725 c
-660.834 217.239 661.882 217.843 662.772 217.502 c
-663.993 217.034 664.184 215.451 663.626 214.111 c
-663.193 213.073 662.783 211.87 663.663 211.402 c
-667.953 209.121 662.97 219.96 667.164 217.821 c
-668.536 217.122 666.5 214.254 668.406 213.841 c
-669.156 213.679 669.647 214.566 670.372 214.645 c
-680.622 215.763 665.366 208.819 665.661 206.613 c
-665.713 206.231 665.921 205.898 666.133 205.577 c
-666.802 204.563 667.543 203.53 667.562 202.313 c
-667.585 200.879 666.811 199.159 668.086 198.437 c
-669.711 197.516 673.626 204.368 674.681 199.743 c
-674.869 198.922 674.094 198.234 673.164 198.116 c
-670.415 197.77 668.647 200.752 670.22 202.735 c
-671.006 203.725 672.434 203.791 673.451 204.512 c
-680.406 209.444 670.385 217.183 667.498 210.797 c
-667.404 210.589 667.347 210.365 667.242 210.161 c
-666.546 208.805 663.783 208.494 664.421 206.717 c
-664.828 205.582 666.684 205.805 667.044 204.634 c
-667.625 202.744 659.526 202.281 663.253 199.402 c
-666.735 196.713 665.393 203.875 667.026 204.262 c
-667.806 204.446 668.477 203.837 668.991 203.188 c
-669.943 201.988 669.915 200.438 668.844 200.254 c
-667.393 200.004 666.924 202.487 669.044 204.383 c
-670.242 205.455 671.163 206.786 671.975 208.172 c
-675.764 214.643 682.436 213.876 682.12 210.183 c
-681.763 206.005 675.28 208.657 673.847 205.698 c
-673.638 205.267 673.582 204.785 673.54 204.308 c
-672.974 197.91 679.562 197.501 679.675 200.522 c
-679.69 200.926 679.507 201.301 679.269 201.627 c
-675.684 206.534 669.335 201.632 672.01 197.759 c
-672.591 196.919 673.673 196.571 674.589 196.997 c
-677.389 198.3 673.279 206.078 678.404 205.595 c
-681.072 205.343 686.884 197.87 685.46 203.447 c
-685.123 204.767 679.933 203.542 681.614 206.267 c
-682.452 207.626 684.257 205.417 685.188 206.359 c
-685.694 206.871 685.284 207.801 685.803 208.305 c
-688.652 211.065 690.689 203.229 684.964 203.366 c
-683.325 203.406 681.768 203.988 680.186 204.403 c
-674.842 205.806 673.969 199.844 676.688 199.843 c
-677.515 199.843 678.154 200.971 678.983 200.573 c
-682.645 198.811 676.095 197.464 676.18 196.104 c
-676.304 194.142 679.64 194.634 681.25 198.206 c
-683.389 202.95 688.831 201.62 688.644 198.536 c
-688.52 196.476 685.795 195.672 683.57 197.034 c
-682.773 197.521 682.078 198.204 681.169 198.441 c
-680.312 198.665 679.423 198.449 678.543 198.379 c
-674.63 198.066 671.239 200.507 667.665 202.063 c
-664.001 203.658 659.658 204.748 658.276 208.498 c
-657.903 209.512 657.746 210.712 656.794 211.236 c
-654.75 212.361 653.368 209.542 651.494 208.38 c
-650.286 207.631 648.801 207.689 647.4 207.5 c
-645.289 207.217 643.269 206.334 641.134 206.388 c
-640.612 206.402 640.093 206.472 639.571 206.481 c
-636.784 206.53 634.306 204.657 634.63 202.161 c
-634.857 200.411 636.496 199.372 638.051 198.493 c
-639.105 197.898 640.177 197.288 641.377 197.11 c
-642.874 196.888 644.357 197.369 645.853 197.555 c
-647.056 197.705 648.388 197.996 648.487 199.105 c
-648.771 202.275 634.335 195.481 640.17 202.569 c
-640.744 203.266 642.234 202.967 642.387 204.004 c
-642.558 205.157 640.832 205.417 639.199 204.52 c
-637.503 203.589 635.377 203.607 634.523 205.147 c
-634.289 205.568 634.218 206.065 634.384 206.515 c
-635.4 209.268 640.847 207.937 639.757 203.157 c
-639.209 200.757 636.897 199.172 634.701 199.969 c
-634.177 200.159 633.71 200.506 633.497 201.019 c
-632.867 202.543 634.396 204.082 636.37 204.175 c
-638.965 204.297 641.598 202.405 643.967 203.673 c
-645.521 204.506 646.106 206.319 646.355 208.084 c
-646.67 210.311 646.499 212.717 644.81 214.148 c
-643.997 214.836 642.942 215.138 642.025 215.673 c
-641.158 216.179 640.596 217.102 641.13 217.755 c
-641.922 218.722 643.258 217.552 644.014 215.925 c
-645.481 212.767 649.068 213.511 649.027 215.548 c
-649.009 216.431 647.962 217.244 648.493 218.063 c
-651.77 223.114 649.349 213.515 650.718 211.485 c
-652.458 208.905 657.211 212.762 654.346 218.875 c
-652.841 222.085 649.688 222.222 649.568 220.433 c
-649.493 219.311 650.901 218.69 651.756 219.536 c
-653.044 220.812 644.672 228.332 651.412 227.063 c
-652.635 226.832 652.353 225.21 652.104 223.796 c
-651.43 219.964 653.126 214.294 649.185 215.008 c
-647.648 215.286 646.97 217.08 647.525 218.698 c
-648.372 221.168 651.652 222.65 651.161 225.389 c
-650.803 227.386 648.646 228.246 646.58 228.692 c
-639.937 230.125 641.176 236.77 644.208 235.928 c
-646.157 235.387 641.885 224.44 647.654 228.616 c
-648.77 229.425 647.625 230.868 647.358 232.182 c
-646.763 235.106 650.64 236.299 651.594 238.831 c
-652.779 241.977 649.158 243.122 648.479 241.383 c
-648.348 241.047 648.452 240.664 648.331 240.324 c
-647.389 237.671 642.013 240.601 645.406 244.265 c
-645.479 244.344 645.555 244.42 645.626 244.5 c
-646.781 245.813 646.405 248.107 647.966 249.045 c
-650.661 250.663 653.045 247.161 651 245.447 c
-650.845 245.317 650.65 245.222 650.456 245.277 c
-650.054 245.39 649.965 245.937 650.302 246.274 c
-651.515 247.487 654.145 244.994 651.714 242.875 c
-648.625 240.183 644.111 237.493 647.355 236.089 c
-649.631 235.103 650.051 238.581 650.801 241.36 c
-651.588 244.275 654.765 245.483 657.83 246.044 c
-659.771 246.399 661.678 245.673 661.43 244.2 c
-660.968 241.449 644.813 251.213 652.035 242.248 c
-652.832 241.259 655.764 240.851 654.242 239.803 c
-653.072 238.997 652.643 242.41 651.395 241.338 c
-649.822 239.985 653.123 240.329 654.459 239.605 c
-655.304 239.148 655.078 237.983 655.438 237.137 c
-655.791 236.31 656.652 235.889 657.358 235.343 c
-663.114 230.898 669.723 226.304 669.656 231.771 c
-669.627 234.131 666.644 234.954 663.816 234.278 c
-661.71 233.775 659.61 232.945 658.363 231.179 c
-657.345 229.738 657.086 227.888 657.729 226.247 c
-659.464 221.815 665.23 221.46 670.262 223.057 c
-671.426 223.427 672.637 223.987 672.868 225.155 c
-673.717 229.451 667.666 227.293 662.219 224.255 c
-659.95 222.99 656.699 223.226 655.505 220.811 c
-654.32 218.412 656.48 216.13 658.324 217.075 c
-660.512 218.198 656.441 224.997 661.057 224.391 c
-661.739 224.302 662.216 223.647 662.899 223.567 c
-664.234 223.41 664.916 225 664.889 226.609 c
-664.851 228.964 664.432 231.289 663.957 233.595 c
-663.822 234.25 663.684 234.925 663.881 235.566 c
-665.277 240.118 673.874 237.713 671.302 231.097 c
-669.857 227.378 666.788 223.127 670.331 222.478 c
-675.147 221.596 672.007 228.682 673.838 231.229 c
-674.767 232.521 676.743 232.806 677.335 234.327 c
-677.617 235.052 677.465 235.888 677.805 236.591 c
-678.825 238.693 682.159 238.323 683.257 235.624 c
-684.12 233.502 683.074 230.8 684.672 229.054 c
-689.947 223.291 695.422 233.351 689.482 234.786 c
-688.427 235.04 686.926 234.659 686.838 235.776 c
-686.775 236.582 687.874 236.882 688.006 237.631 c
-689.848 248.069 685.984 231.467 682.687 230.071 c
-677.526 227.885 676.893 239.179 684.382 236.644 c
-685.84 236.15 686.73 234.781 687.351 233.364 c
-688.747 230.18 685.491 228.784 684.863 230.292 c
-684.693 230.699 684.949 231.153 684.841 231.577 c
-681.919 243.106 675.913 223.305 684.831 225.514 c
-685.286 225.627 685.757 225.812 686.193 225.634 c
-688.03 224.88 686.02 222.786 683.471 221.274 c
-682.279 220.567 681.543 219.133 680.154 218.882 c
-676.481 218.22 676.171 223.06 678.812 223.226 c
-679.808 223.289 680.42 222.253 680.558 221.162 c
-680.898 218.49 679.144 216.084 676.922 216.571 c
-673.815 217.252 674.816 222.948 671.394 223.219 c
-668.716 223.431 667.537 219.817 669.022 216.441 c
-670.801 212.397 675.106 212.13 675.695 214.639 c
-676.187 216.737 670.542 221.829 675.166 221.549 c
-676.446 221.472 676.626 219.762 676.132 218.199 c
-675.647 216.666 675.315 214.984 676.16 213.629 c
-676.613 212.901 677.395 212.285 677.279 211.423 c
-677.01 209.434 664.228 213.189 670.011 207.474 c
-670.42 207.069 671.077 207.093 671.531 207.467 c
-673.148 208.799 671.188 210.983 668.658 212.383 c
-666.825 213.397 665.862 215.428 667.077 216.626 c
-668.442 217.971 670.874 216.755 670.694 214.557 c
-670.597 213.37 669.639 212.524 668.819 211.663 c
-663.374 205.944 656.381 203.826 655.68 208.693 c
-655.462 210.203 656.61 211.698 656.069 213.158 c
-655.336 215.136 651.328 216.115 652.843 218.401 c
-654.124 220.335 656.433 218.034 658.335 215.69 c
-659.834 213.842 662.288 213.162 664.665 213.468 c
-665.839 213.619 666.969 214.003 668.129 214.237 c
-670.996 214.817 672.284 217.148 670.856 218.003 c
-669.233 218.976 667.74 214.693 666.022 216.468 c
-664.687 217.847 668.187 219.688 666.745 221.066 c
-665.505 222.251 663.039 219.984 664.776 216.863 c
-666.203 214.3 667.384 211.277 665.587 209.131 c
-660.587 203.158 655.424 213.235 660.991 213.609 c
-662.396 213.704 664.357 210.373 665.25 212.611 c
-665.943 214.345 662.963 214.17 662.566 215.36 c
-661.96 217.174 665.214 218.792 666.886 215.962 c
-667.332 215.206 667.498 214.306 667.238 213.469 c
-666.644 211.557 664.452 210.874 662.35 210.913 c
-660.304 210.952 658.385 210.128 658.872 208.697 c
-659.135 207.927 660.049 207.755 660.834 207.51 c
-664.449 206.377 665.773 202.202 668.683 199.9 c
-670.313 198.611 672.511 198.05 674.1 199.253 c
-675.621 200.404 675.691 202.529 675.325 204.454 c
-674.314 209.777 669.169 211.357 667.64 208.467 c
-667.417 208.044 667.354 207.545 667.546 207.108 c
-668.741 204.397 674.385 206.947 672.351 213.066 c
-668.825 223.674 678.112 229.061 681.276 224.594 c
-682.735 222.535 680.983 219.389 682.781 217.507 c
-684.003 216.229 685.98 216.493 687.698 217.126 c
-689.155 217.664 690.586 218.388 692.145 218.371 c
-692.604 218.366 693.066 218.296 693.517 218.386 c
-701.317 219.959 694.208 233.051 687.648 225.521 c
-686.297 223.97 686.26 221.141 684.096 220.767 c
-681.721 220.356 677.797 225.583 676.694 221.655 c
-676.355 220.443 677.749 219.519 677.737 218.317 c
-677.713 216.061 674.669 216.338 672.736 215.408 c
-668.615 213.427 663.821 210.975 664.644 214.514 c
-664.961 215.879 666.733 215.761 667.97 216.315 c
-668.925 216.743 669.549 217.64 669.922 218.62 c
-670.696 220.653 670.423 222.988 668.848 224.445 c
-665.548 227.499 660.161 224.226 656.586 226.719 c
-654.68 228.047 652.604 227.93 652.834 226.596 c
-653.029 225.464 654.582 225.96 655.42 225.443 c
-657.091 224.413 653.134 218.557 657.287 219.159 c
-658.108 219.278 658.69 220.489 659.536 220.054 c
-660.947 219.327 658.363 216.975 659.949 216.301 c
-660.594 216.026 661.101 216.73 661.597 217.275 c
-663.12 218.951 665.958 218.427 667.509 220.069 c
-670.174 222.889 666.484 225.71 665.004 223.897 c
-663.375 221.902 667.78 220.644 667.017 218.807 c
-666.159 216.744 663.818 218.926 661.7 220.706 c
-661.127 221.187 660.412 221.477 659.873 221.996 c
-658.417 223.396 658.198 226.338 655.992 226.275 c
-651.229 226.14 655.645 220.142 654.883 216.809 c
-654.669 215.871 654.026 215.118 653.444 214.356 c
-652.386 212.971 651.181 211.439 649.516 211.73 c
-649.057 211.811 648.639 212.048 648.335 212.402 c
-S
-0 1 0 rg
-398.5 312 m
-398.5 312.398 398.342 312.779 398.061 313.061 c
-397.779 313.342 397.398 313.5 397 313.5 c
-396.602 313.5 396.221 313.342 395.939 313.061 c
-395.658 312.779 395.5 312.398 395.5 312 c
-395.5 311.602 395.658 311.221 395.939 310.939 c
-396.221 310.658 396.602 310.5 397 310.5 c
-397.398 310.5 397.779 310.658 398.061 310.939 c
-398.342 311.221 398.5 311.602 398.5 312 c
-f
-1 0 0 rg
-649.835 212.402 m
-649.835 212.8 649.677 213.182 649.396 213.463 c
-649.114 213.744 648.733 213.902 648.335 213.902 c
-647.937 213.902 647.556 213.744 647.274 213.463 c
-646.993 213.182 646.835 212.8 646.835 212.402 c
-646.835 212.005 646.993 211.623 647.274 211.342 c
-647.556 211.06 647.937 210.902 648.335 210.902 c
-648.733 210.902 649.114 211.06 649.396 211.342 c
-649.677 211.623 649.835 212.005 649.835 212.402 c
-f
-endstream
-endobj
-3 0 obj
-<<
-/ProcSet [/PDF ]
-/ExtGState <<
-/GS1 4 0 R
->>
->>
-endobj
-4 0 obj
-<<
-/Type /ExtGState
-/SA false
-/SM 0.02
-/OP false
-/op false
-/OPM 1
-/BG2 /Default
-/UCR2 /Default
-/HT /Default
-/TR2 /Default
->>
-endobj
-1 0 obj
-<<
-/Type /Page
-/Parent 5 0 R
-/Resources 3 0 R
-/Contents 2 0 R
->>
-endobj
-6 0 obj
-<<
-/S /D
->>
-endobj
-7 0 obj
-<<
-/Nums [0 6 0 R ]
->>
-endobj
-5 0 obj
-<<
-/Type /Pages
-/Kids [1 0 R]
-/Count 1
-/MediaBox [0 0 698 473]
->>
-endobj
-8 0 obj
-<<
-/CreationDate (D:20150820211513+01'00')
-/ModDate (D:20150820211513+01'00')
-/Producer (PSNormalizer.framework)
->>
-endobj
-9 0 obj
-<<
-/Type /Catalog
-/Pages 5 0 R
-/PageLabels 7 0 R
->>
-endobj
-xref
-0 10
-0000000000 65535 f
-0000395349 00000 n
-0000000016 00000 n
-0000395143 00000 n
-0000395209 00000 n
-0000395494 00000 n
-0000395429 00000 n
-0000395456 00000 n
-0000395575 00000 n
-0000395706 00000 n
-trailer
-<<
-/Size 10
-/Root 9 0 R
-/Info 8 0 R
-/ID [<be51200857157bea7d813e308f1ca948><be51200857157bea7d813e308f1ca948>]
->>
-startxref
-395773
-%%EOF
diff --git a/info/drawing-with-metapost/src/cd-tikzcd-example.mp b/info/drawing-with-metapost/src/cd-tikzcd-example.mp
new file mode 100644
index 0000000000..6f3e41ae33
--- /dev/null
+++ b/info/drawing-with-metapost/src/cd-tikzcd-example.mp
@@ -0,0 +1,49 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+r = 0.9;
+z0 = (0, 0);
+z1 = r*(89, -55);
+z2 = r*(42, 30);
+z3 = z1 + z2;
+
+picture FE, FEV, E, EV, M, N, U, V;
+FE = thelabel("$f^*E$", (x0, y0));
+M = thelabel("$M$", (x0, y1));
+E = thelabel("$E$", (x1, y0));
+N = thelabel("$N$", (x1, y1));
+FEV = thelabel("$f^*E_V$", (x2, y2));
+U = thelabel("$U$", (x2, y3));
+EV = thelabel("$E_V$", (x3, y2));
+V = thelabel("$V$", (x3, y3));
+
+forsuffixes @=E, M, N, U, V, EV, FE, FEV: draw @; endfor
+
+ahangle := 20;
+vardef connect(expr a, b) =
+ save line; path line; interim bboxmargin := 3;
+ line = center a .. center b cutbefore bbox a cutafter bbox b;
+ cutdraw line withpen pencircle scaled 4 withcolor background;
+ drawarrow line
+enddef;
+
+connect(FEV, EV);
+connect(FEV, U);
+connect(EV, V);
+connect(U, V);
+
+connect(FEV, FE);
+connect(EV, E);
+connect(U, M);
+connect(V, N);
+
+connect(FE, E);
+connect(FE, M);
+connect(E, N);
+connect(M, N);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/tikzcd-example.pdf b/info/drawing-with-metapost/src/cd-tikzcd-example.pdf
index c2b95990db..eb212b3cdf 100644
--- a/info/drawing-with-metapost/src/tikzcd-example.pdf
+++ b/info/drawing-with-metapost/src/cd-tikzcd-example.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/cd-xypic-example.mp b/info/drawing-with-metapost/src/cd-xypic-example.mp
new file mode 100644
index 0000000000..672fa7c278
--- /dev/null
+++ b/info/drawing-with-metapost/src/cd-xypic-example.mp
@@ -0,0 +1,44 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ picture U, XY, X, Y, Z;
+ z1 = -z2 = (-61, 42);
+ U = thelabel("$U$", z1);
+ XY = thelabel("$X\times_ZY$", origin);
+ X = thelabel("$X$", (x2, 0));
+ Y = thelabel("$Y$", (0, y2));
+ Z = thelabel("$Z$", z2);
+
+ forsuffixes @=U, XY, X, Y, Z: draw @; endfor
+
+ ahangle := 20;
+ vardef connect@#(expr s, a, b) =
+ curved_connect@#(s, a, b, center b - center a)
+ enddef;
+ vardef curved_connect@#(expr s, a, b, d) =
+ save line, mark; path line; picture mark;
+ line = center a {d} .. center b;
+ interim bboxmargin := 4;
+ drawarrow line cutbefore bbox a cutafter bbox b;
+ mark = thelabel@#("$\scriptstyle " & s & "$",
+ point 1/2 of line);
+ interim bboxmargin := 1;
+ unfill bbox mark; draw mark;
+ enddef;
+
+ connect.bot("p", XY, X);
+ connect.rt ("q", XY, Y);
+ connect.top("g", Y, Z);
+ connect.lft("f", X, Z);
+ curved_connect.urt("x", U, X, right);
+ curved_connect.llft("y", U, Y, dir -80);
+
+ drawoptions(dashed withdots scaled 1/2);
+ connect("(x,y)", U, XY);
+ drawoptions();
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/xypic-example.pdf b/info/drawing-with-metapost/src/cd-xypic-example.pdf
index fb5cb9d295..6348da43c1 100644
--- a/info/drawing-with-metapost/src/xypic-example.pdf
+++ b/info/drawing-with-metapost/src/cd-xypic-example.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/circumcircle.mp b/info/drawing-with-metapost/src/circumcircle.mp
deleted file mode 100644
index b4cca18faa..0000000000
--- a/info/drawing-with-metapost/src/circumcircle.mp
+++ /dev/null
@@ -1,49 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-vardef through(expr a, b, o) =
- save t; numeric t; t = 1+o/abs(a-b);
- t[b,a] -- t[a,b]
-enddef;
-
-beginfig(1);
- path T; T = origin -- 377 dir 10 -- 233 dir 70 -- cycle;
- pair m;
- m = whatever * (point 0 of T - point 1 of T) rotated 90 shifted point 1/2 of T
- = whatever * (point 1 of T - point 2 of T) rotated 90 shifted point 3/2 of T
- = whatever * (point 2 of T - point 3 of T) rotated 90 shifted point 5/2 of T;
-
- drawoptions(withcolor 3/4);
- draw unitsquare scaled 5 rotated angle (point 1 of T-point 0 of T) shifted point 1/2 of T;
- draw unitsquare scaled 5 rotated angle (point 2 of T-point 1 of T) shifted point 3/2 of T;
- draw unitsquare scaled 5 rotated angle (point 0 of T-point 2 of T) shifted point 5/2 of T;
- drawoptions(dashed evenly scaled 1/4 withcolor 1/2);
- draw through(point 1/2 of T, m, 10);
- draw through(point 3/2 of T, m, 10);
- draw through(point 5/2 of T, m, 10);
- drawoptions();
- draw fullcircle scaled 2 abs (point 0 of T - m) shifted m withcolor 2/3 red;
- draw T;
-
- draw m withpen pencircle scaled dotlabeldiam; label("$m$", m + 10 dir 12);
-
-vardef mark_equal(expr a, b, n) =
- save m, s; picture m; m = image(
- numeric s; 2s = n - 1; for t=-s upto s:
- draw (down--up) scaled 2 rotated -13 shifted (t,0) withpen pencircle scaled 1/4;
- endfor
- );
- draw m rotated angle (b-a) shifted 1/4[a,b];
- draw m rotated angle (b-a) shifted 3/4[a,b];
-enddef;
-
- mark_equal(point 0 of T, point 1 of T, 1);
- mark_equal(point 1 of T, point 2 of T, 2);
- mark_equal(point 2 of T, point 0 of T, 3);
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/clocks.mp b/info/drawing-with-metapost/src/clocks.mp
index 045c0f1682..16a412e93d 100644
--- a/info/drawing-with-metapost/src/clocks.mp
+++ b/info/drawing-with-metapost/src/clocks.mp
@@ -7,11 +7,14 @@ vardef clock_roman primary h =
enddef;
path hand[];
-hand1 = origin .. (.257,1/50) .. (.377,1/60) & (.377,1/60) {up} .. (.40,3/50) .. (.60, 1/40) .. {right} (.75,0);
-hand1 := (hand1 .. reverse hand1 reflectedabout(left,right) .. cycle) scaled 50;
-
+hand1 = origin .. (.257,1/50) .. (.377,1/60)
+ & (.377,1/60) {up} .. (.40,3/50)
+ .. (.60, 1/40) .. {right} (.75,0);
+hand1 := (hand1 .. reverse hand1 reflectedabout(left,right)
+ .. cycle) scaled 50;
hand2 = origin .. (.60, 1/64) .. {right} (.925,0);
-hand2 := (hand2 .. reverse hand2 reflectedabout(left,right) .. cycle) scaled 50;
+hand2 := (hand2 .. reverse hand2 reflectedabout(left,right)
+ .. cycle) scaled 50;
% hour of the day to degrees
vardef htod(expr hours) = 30*((15-hours) mod 12) enddef;
@@ -31,17 +34,13 @@ vardef clock(expr hours, minutes) = image(
endfor
% numerals
for h=1 upto 12:
- label(
- if known roman_numerals_please:
- clock_roman h infont "bchr8r" rotated ((12-h)*30)
- else:
- decimal h infont "bchr8r"
- fi, (40,0) rotated htod(h));
+ label(decimal h infont "bchr8r", (40,0) rotated htod(h));
endfor
% hands rotated to the given time
- filldraw hand1 rotated htod(hours+minutes/60) withpen pencircle scaled 7/8;
- filldraw hand2 rotated mtod(minutes) withpen pencircle scaled 7/8;
+ pickup pencircle scaled 7/8;
+ filldraw hand1 rotated htod(hours+minutes/60);
+ filldraw hand2 rotated mtod(minutes);
% draw the center on top
- fill fullcircle scaled 5;
- fill fullcircle scaled 3 withcolor .4 white;
+ draw origin withpen pencircle scaled 5;
+ undraw origin withpen pencircle scaled 3;
) enddef;
diff --git a/info/drawing-with-metapost/src/closed-antireuleaux-set.mp b/info/drawing-with-metapost/src/closed-antireuleaux-set.mp
deleted file mode 100644
index 8d8da6b507..0000000000
--- a/info/drawing-with-metapost/src/closed-antireuleaux-set.mp
+++ /dev/null
@@ -1,27 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\begin{mplibcode}
-\mplibtextextlabel{enable}
-vardef reuleaux(expr n, r) =
- save a; numeric a; a = 90/n;
- for t = 0 step 4a until 359:
- (0, r) rotated t {left rotated (3a + t)} .. {left rotated (a + t)}
- endfor cycle
-enddef;
-vardef median(expr p) = origin for i=1 upto length p: + point i of p / length p endfor enddef;
-input colorbrewer-rgb
-beginfig(1);
- for n = 3 upto 7:
- path p; p = reuleaux(n, 42) shifted (90n, 0);
- pair m; m = point (n+1)/2 of p;
- fill p withcolor if odd n: Oranges else: Blues fi 8 2;
- % draw tensepath(p) withcolor Blues 8 6;
- %draw p rotatedabout(median(p), 180/n) withcolor Blues 8 6;
- draw p;
- endfor
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/closed-antireuleaux-set.pdf b/info/drawing-with-metapost/src/closed-antireuleaux-set.pdf
deleted file mode 100644
index 9c0606cfd3..0000000000
--- a/info/drawing-with-metapost/src/closed-antireuleaux-set.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-polygon-chain.mp b/info/drawing-with-metapost/src/closed-polygon-chain.mp
deleted file mode 100644
index 14f9b28738..0000000000
--- a/info/drawing-with-metapost/src/closed-polygon-chain.mp
+++ /dev/null
@@ -1,18 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input archimedean-tools
-beginfig(1);
- path P[]; P3 = for i=0 upto 2: 6 up rotated 120i -- endfor cycle;
- fill P3 withcolor 3/4 red; draw P3;
- for n = 4 upto 23:
- numeric m; m = floor(n / 2);
- P[n] = poly n of subpath (m, m-1) of P[n-1];
- fill P[n] withcolor (n/32)[3/4 if odd n: red else: blue fi, white];
- draw P[n]; label(decimal n, median(P[n]));
- endfor
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/closed-polygon-chain.pdf b/info/drawing-with-metapost/src/closed-polygon-chain.pdf
deleted file mode 100644
index 4034d6a359..0000000000
--- a/info/drawing-with-metapost/src/closed-polygon-chain.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/color-blend-toy.mp b/info/drawing-with-metapost/src/color-blend-toy.mp
index d712791230..336f7db64f 100644
--- a/info/drawing-with-metapost/src/color-blend-toy.mp
+++ b/info/drawing-with-metapost/src/color-blend-toy.mp
@@ -3,19 +3,19 @@
\begin{document}
\begin{mplibcode}
beginfig(1);
- color brg, pbr;
- brg = 1/256 (1, 66, 37);
- pbr = 1/256 (223, 52, 57);
- N = 5; n = 0;
- for y=1 upto N:
- for x=1 upto N:
- fill fullcircle scaled 16 shifted 20(x,y)
- withpen pencircle scaled 2
- withcolor (n/N/N)[pbr, brg];
- label(decimal incr n infont "phvr8r", 20(x,y))
- withcolor white;
- endfor
+color brg, pbr;
+brg = 1/256 (1, 66, 37); % British Racing Green
+pbr = 1/256 (223, 52, 57); % Pillar Box Red
+N = 5; n = 0;
+for y=1 upto N:
+ for x=1 upto N:
+ fill fullcircle scaled 16 shifted 20(x,y)
+ withpen pencircle scaled 2
+ withcolor (n/N/N)[pbr, brg];
+ label(decimal incr n infont "phvr8r", 20(x,y))
+ withcolor white;
endfor
+endfor
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/color-blended-circles.mp b/info/drawing-with-metapost/src/color-blended-circles.mp
new file mode 100644
index 0000000000..b3e89974fd
--- /dev/null
+++ b/info/drawing-with-metapost/src/color-blended-circles.mp
@@ -0,0 +1,44 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\usepackage{fontspec}
+\setmainfont{Helvetica}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+path C[], B[];
+
+% arrange each circle so that point 0 is outside the others
+C1 = fullcircle scaled 100 rotated 90 shifted 40 up;
+C2 = C1 rotated 120;
+C3 = C2 rotated 120;
+
+% the illusion of blended colours is helped by buildcycle
+B0 = buildcycle(C1, C2, C3);
+B1 = buildcycle(C1, C2);
+B2 = buildcycle(C2, C3);
+B3 = buildcycle(C3, C1);
+
+picture P;
+for x=0 upto 1:
+ for y=0 upto 1:
+ P := image(
+ s := 1/2 + x/4;
+ k := 0 + y/4;
+ fill C1 withcolor s*(1,0,0,k);
+ fill C2 withcolor s*(0,1,0,k);
+ fill C3 withcolor s*(0,0,1,k);
+ fill B3 withcolor s*(1,0,1,k);
+ fill B2 withcolor s*(0,1,1,k);
+ fill B1 withcolor s*(1,1,0,k);
+ fill B0 withcolor s*(1,1,1,k);
+ undraw C1; undraw C2; undraw C3;
+ ) shifted (200x, 180y);
+ draw P;
+ label.bot(("shade: " & decimal s & ", k: " & decimal k)
+ infont "phvr8r", point 1/2 of bbox P);
+ endfor
+endfor
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/color-blended-circles.pdf b/info/drawing-with-metapost/src/color-blended-circles.pdf
new file mode 100644
index 0000000000..b2893e08b2
--- /dev/null
+++ b/info/drawing-with-metapost/src/color-blended-circles.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/color-brexit-map.mp b/info/drawing-with-metapost/src/color-brexit-map.mp
new file mode 100644
index 0000000000..54ca1c23ff
--- /dev/null
+++ b/info/drawing-with-metapost/src/color-brexit-map.mp
@@ -0,0 +1,104 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\mplibtextextlabel{enable}
+\usepackage{fontspec}
+\setmainfont{TeX Gyre Heros}
+\begin{document}
+\begin{mplibcode}
+input london-boroughs
+input colorbrewer-rgb
+picture legend; legend = image(
+for i = 1 upto 9:
+ path s; s = unitsquare scaled 12 shifted (12i, 0);
+ fill s withcolor RdYlBu[9][i]; draw s;
+ if i = 1:
+ label.top("Leave", point 5/2 of s);
+ elseif i = 9:
+ label.top("Remain", point 5/2 of s);
+ fi
+endfor
+);
+vardef median(expr p) =
+ save n; numeric n; n = length p;
+ 1/n * point 0 of p for i=1 upto n: + 1/n * point i of p endfor
+enddef;
+
+beginfig(1);
+
+fill Barking_and_Dagenham withcolor 0.756 [RdYlBu 9 3, RdYlBu 9 4]; draw Barking_and_Dagenham;
+fill Barnet withcolor 0.223 [RdYlBu 9 6, RdYlBu 9 7]; draw Barnet;
+fill Bexley withcolor 0.705 [RdYlBu 9 3, RdYlBu 9 4]; draw Bexley;
+fill Brent withcolor 0.974 [RdYlBu 9 5, RdYlBu 9 6]; draw Brent;
+fill Bromley withcolor 0.065 [RdYlBu 9 5, RdYlBu 9 6]; draw Bromley;
+fill Camden withcolor 0.494 [RdYlBu 9 7, RdYlBu 9 8]; draw Camden;
+fill City_of_London withcolor 0.529 [RdYlBu 9 7, RdYlBu 9 8]; draw City_of_London;
+fill Croydon withcolor 0.429 [RdYlBu 9 5, RdYlBu 9 6]; draw Croydon;
+fill Ealing withcolor 0.040 [RdYlBu 9 6, RdYlBu 9 7]; draw Ealing;
+fill Enfield withcolor 0.582 [RdYlBu 9 5, RdYlBu 9 6]; draw Enfield;
+fill Greenwich withcolor 0.559 [RdYlBu 9 5, RdYlBu 9 6]; draw Greenwich;
+fill Hackney withcolor 0.848 [RdYlBu 9 7, RdYlBu 9 8]; draw Hackney;
+fill Hammersmith_and_Fulham withcolor 0.002 [RdYlBu 9 7, RdYlBu 9 8]; draw Hammersmith_and_Fulham;
+fill Haringey withcolor 0.557 [RdYlBu 9 7, RdYlBu 9 8]; draw Haringey;
+fill Harrow withcolor 0.463 [RdYlBu 9 5, RdYlBu 9 6]; draw Harrow;
+fill Havering withcolor 0.034 [RdYlBu 9 3, RdYlBu 9 4]; draw Havering;
+fill Hillingdon withcolor 0.363 [RdYlBu 9 4, RdYlBu 9 5]; draw Hillingdon;
+fill Hounslow withcolor 0.106 [RdYlBu 9 5, RdYlBu 9 6]; draw Hounslow;
+fill Islington withcolor 0.522 [RdYlBu 9 7, RdYlBu 9 8]; draw Islington;
+fill Kensington_and_Chelsea withcolor 0.869 [RdYlBu 9 6, RdYlBu 9 7]; draw Kensington_and_Chelsea;
+fill Kingston_upon_Thames withcolor 0.161 [RdYlBu 9 6, RdYlBu 9 7]; draw Kingston_upon_Thames;
+fill Lambeth withcolor 0.862 [RdYlBu 9 7, RdYlBu 9 8]; draw Lambeth;
+fill Lewisham withcolor 0.986 [RdYlBu 9 6, RdYlBu 9 7]; draw Lewisham;
+fill Merton withcolor 0.294 [RdYlBu 9 6, RdYlBu 9 7]; draw Merton;
+fill Newham withcolor 0.284 [RdYlBu 9 5, RdYlBu 9 6]; draw Newham;
+fill Redbridge withcolor 0.397 [RdYlBu 9 5, RdYlBu 9 6]; draw Redbridge;
+fill Richmond_upon_Thames withcolor 0.929 [RdYlBu 9 6, RdYlBu 9 7]; draw Richmond_upon_Thames;
+fill Southwark withcolor 0.281 [RdYlBu 9 7, RdYlBu 9 8]; draw Southwark;
+fill Sutton withcolor 0.628 [RdYlBu 9 4, RdYlBu 9 5]; draw Sutton;
+fill Tower_Hamlets withcolor 0.746 [RdYlBu 9 6, RdYlBu 9 7]; draw Tower_Hamlets;
+fill Waltham_Forest withcolor 0.910 [RdYlBu 9 5, RdYlBu 9 6]; draw Waltham_Forest;
+fill Wandsworth withcolor 0.503 [RdYlBu 9 7, RdYlBu 9 8]; draw Wandsworth;
+fill Westminster withcolor 0.897 [RdYlBu 9 6, RdYlBu 9 7]; draw Westminster;
+
+% scaling represents turnout
+label(TEX("Barking \& Dagenham") scaled 0.637 rotated 15, median(Barking_and_Dagenham));
+label(TEX("Barnet") scaled 0.720, median(Barnet) shifted 12 up);
+label(TEX("Bexley") scaled 0.752, median(Bexley) shifted 12 left);
+label(TEX("Brent") scaled 0.649, median(Brent) shifted 12 left);
+label(TEX("Bromley") scaled 0.788, median(Bromley));
+label(TEX("Camden") scaled 0.654, median(Camden) shifted 6 left);
+label(TEX("City") scaled 0.734, median(City_of_London));
+label(TEX("Croydon") scaled 0.697, median(Croydon));
+label(TEX("Ealing") scaled 0.699, median(Ealing));
+label(TEX("Enfield") scaled 0.690, median(Enfield));
+label(TEX("Greenwich") scaled 0.694, median(Greenwich) shifted 6 right);
+label(TEX("Hackney") scaled 0.650, median(Hackney) shifted 8 right);
+label(TEX("Hammersmith \& Fulham") scaled 0.698 rotated -62, median(Hammersmith_and_Fulham));
+label(TEX("Haringey") scaled 0.705, median(Haringey));
+label(TEX("Harrow") scaled 0.721, median(Harrow));
+label(TEX("Havering") scaled 0.759, median(Havering));
+label(TEX("Hillingdon") scaled 0.689, median(Hillingdon) shifted 6 right);
+label(TEX("Hounslow") scaled 0.697, median(Hounslow) shifted 12 left);
+label(TEX("Islington") scaled 0.703, median(Islington) shifted 4 right);
+label(TEX("Kensington \& Chelsea") scaled 0.659 rotated -54, median(Kensington_and_Chelsea));
+label(TEX("Kingston upon Thames") scaled 0.783 rotated 66, median(Kingston_upon_Thames));
+label(TEX("Lambeth") scaled 0.673, median(Lambeth) shifted 4 left);
+label(TEX("Lewisham") scaled 0.630, median(Lewisham) shifted 8 right);
+label(TEX("Merton") scaled 0.734, median(Merton));
+label(TEX("Newham") scaled 0.591, median(Newham));
+label(TEX("Redbridge") scaled 0.675, median(Redbridge));
+label.lft(TEX("Richmond") scaled 0.820, median(Richmond_upon_Thames) shifted (-1,4));
+label.rt(TEX("upon Thames") scaled 0.820, median(Richmond_upon_Thames) shifted (-9,-6));
+label(TEX("Southwark") scaled 0.661, median(Southwark) shifted 4 left);
+label(TEX("Sutton") scaled 0.759, median(Sutton));
+label(TEX("Tower Hamlets") scaled 0.644, median(Tower_Hamlets) shifted 8 left);
+label(TEX("Waltham Forest") scaled 0.666 rotated 50, median(Waltham_Forest));
+label(TEX("Wandsworth") scaled 0.719, median(Wandsworth) shifted 8 left);
+label(TEX("Westminster") scaled 0.648, median(Westminster));
+
+label.ulft(legend, point 1 of bbox currentpicture);
+label.lrt("\large Brexit vote in London 2016", point 3 of bbox currentpicture shifted (4,-4));
+
+
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/color-brexit-map.pdf b/info/drawing-with-metapost/src/color-brexit-map.pdf
new file mode 100644
index 0000000000..df81e61574
--- /dev/null
+++ b/info/drawing-with-metapost/src/color-brexit-map.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/color-grey-escher.mp b/info/drawing-with-metapost/src/color-grey-escher.mp
new file mode 100644
index 0000000000..b8f57e44d2
--- /dev/null
+++ b/info/drawing-with-metapost/src/color-grey-escher.mp
@@ -0,0 +1,38 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+ numeric s; s = 8;
+ path atom;
+ atom = origin
+ -- (2s,0) rotated -30 -- (2s,0) rotated -30 + (0,s)
+ -- ( s,0) rotated 30 -- ( s,0) rotated 30 + (0,s)
+ -- (0,2s) -- cycle;
+
+ picture p[];
+ for i=0 upto 2:
+ p[i] = image(
+ fill atom rotated -120i withcolor (7/8 - 1/8i) ;
+ draw atom rotated -120i;
+ );
+ endfor
+
+ pair u, v;
+ u = point 3 of atom - point 1 of atom rotated -120;
+ v = u rotated 60;
+
+ n = 13;
+ for i=-n upto n:
+ for j=-n upto n:
+ forsuffixes $=0,1,2:
+ draw p$ shifted (i*u + j*v);
+ endfor
+ endfor
+ endfor
+
+ clip currentpicture to
+ unitsquare shifted -(1/2,1/2) scaled 5in yscaled 0.618;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/color-grey-escher.pdf b/info/drawing-with-metapost/src/color-grey-escher.pdf
new file mode 100644
index 0000000000..3fd8a6e0e2
--- /dev/null
+++ b/info/drawing-with-metapost/src/color-grey-escher.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/color-grey-shadows.mp b/info/drawing-with-metapost/src/color-grey-shadows.mp
new file mode 100644
index 0000000000..36396c63b8
--- /dev/null
+++ b/info/drawing-with-metapost/src/color-grey-shadows.mp
@@ -0,0 +1,34 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+path b, w;
+b = ((-3,-4)--(3,-2)--(3,+2)--(-3,4)--cycle) scaled 5;
+w = b reflectedabout(up, down);
+
+picture B, W;
+B = image(
+ for i=0 step 1/64 until 1:
+ draw point 4-i of b -- point 1+i**2 of b withcolor 1-i**8;
+ endfor
+);
+
+W = image(
+ for i=0 step 1/64 until 1:
+ draw point 4-i of w -- point 1+i**2 of w withcolor 3/4-i**8;
+ endfor
+);
+
+for i=-7 upto 7:
+ for j=-4 upto 4:
+ draw if odd (i+j): W else: B fi shifted ((i,j) scaled 30);
+ endfor
+endfor
+
+clip currentpicture to
+ unitsquare shifted -(.5,.5) scaled 5in yscaled 0.618;
+
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/color-grey-shadows.pdf b/info/drawing-with-metapost/src/color-grey-shadows.pdf
new file mode 100644
index 0000000000..b4e8142470
--- /dev/null
+++ b/info/drawing-with-metapost/src/color-grey-shadows.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/color-hsv-bathymetric.mp b/info/drawing-with-metapost/src/color-hsv-bathymetric.mp
index 057e923edd..6dad717199 100644
--- a/info/drawing-with-metapost/src/color-hsv-bathymetric.mp
+++ b/info/drawing-with-metapost/src/color-hsv-bathymetric.mp
@@ -3,40 +3,40 @@
\begin{document}
\begin{mplibcode}
input color-hsv-macro
-beginfig(2);
- defaultfont := "phvr8r";
- defaultscale := 3/4;
- path h,d,b; numeric n;
- h = ((-2,0)--(0,0)--(-1,3)--(-2,3)--cycle) scaled 60;
- d = h rotated 180;
- n = 10;
- b = subpath (0,1) of h -- point 1+1/n of d -- (xpart point 0 of h, ypart point 1+1/n of d) -- cycle;
- fill b withcolor hsv_color(123, 1/8, 7/8);
- draw subpath (2.13,4) of b;
-
- for i=1 upto n:
- fill point 4-(i-1)/n of h -- point 1+(i-1)/n of h
- -- point 1+i/n of h -- point 4-i/n of h -- cycle
- withcolor hsv_color(42, 1/4 + 3/4 * i/n, 1 - i/3n);
- fill point 4-(i-1)/n of d -- point 1+(i-1)/n of d
- -- point 1+i/n of d -- point 4-i/n of d -- cycle
- withcolor hsv_color(200, i/n - 1/n, 1 - i/3n);
- endfor
- string s;
- for i=1 upto n-1:
- draw point 4-i/n of h -- point 1+i/n of h;
- draw point 4-i/n of d -- point 1+i/n of d;
- s := decimal if i < 4: (i**2+1) else: (10 + (i-3)*10) fi & "00";
- label.rt(s, point 1+i/n of h);
- label.lft(s, point 1+i/n of d);
- endfor
- label.rt("Metres", point 2 of h);
- label.lft("Metres", point 2 of d);
- label.lft("Hypsometric tints" infont defaultfont scaled defaultscale rotated 90, point 7/2 of h);
- label.rt("Bathymetric tints" infont defaultfont scaled defaultscale rotated -90, point 7/2 of d);
- label.lft("sea level", point 0 of h);
- label("areas below sea level", center b);
- draw h; draw d;
+beginfig(1);
+defaultfont := "phvr8r"; defaultscale := 3/4;
+path h,d,b; numeric n; n = 10;
+h = ((-2,0)--(0,0)--(-1,3)--(-2,3)--cycle) scaled 64;
+d = h rotated 180;
+b = subpath (0,1) of h -- point 1+1/n of d --
+ (xpart point 0 of h, ypart point 1+1/n of d) -- cycle;
+fill b withcolor hsv_color(123, 1/8, 7/8);
+draw subpath (2.13,4) of b;
+for i=1 upto n:
+ fill point 4-(i-1)/n of h -- point 1+(i-1)/n of h --
+ point 1+i/n of h -- point 4-i/n of h -- cycle
+ withcolor hsv_color(42, 1/4 + 3/4 * i/n, 1 - i/3n);
+ fill point 4-(i-1)/n of d -- point 1+(i-1)/n of d --
+ point 1+i/n of d -- point 4-i/n of d -- cycle
+ withcolor hsv_color(200, i/n - 1/n, 1 - i/3n);
+endfor
+string s;
+for i=1 upto n-1:
+ draw point 4-i/n of h -- point 1+i/n of h;
+ draw point 4-i/n of d -- point 1+i/n of d;
+ s := decimal if i < 4: (i**2+1) else: (10 + (i-3)*10) fi & "00";
+ label.rt(s, point 1+i/n of h);
+ label.lft(s, point 1+i/n of d);
+endfor
+label.rt("Metres", point 2 of h);
+label.lft("Metres", point 2 of d);
+label.lft("Hypsometric tints" infont defaultfont
+ scaled defaultscale rotated 90, point 7/2 of h);
+label.rt("Bathymetric tints" infont defaultfont
+ scaled defaultscale rotated -90, point 7/2 of d);
+label.lft("sea level", point 0 of h);
+label("areas below sea level", center b);
+draw h; draw d;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/color-hsv-bathymetric.pdf b/info/drawing-with-metapost/src/color-hsv-bathymetric.pdf
index 8f03ce2b73..4898820243 100644
--- a/info/drawing-with-metapost/src/color-hsv-bathymetric.pdf
+++ b/info/drawing-with-metapost/src/color-hsv-bathymetric.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/color-hsv-gamut.mp b/info/drawing-with-metapost/src/color-hsv-gamut.mp
index 392853e7bc..71a62ef031 100644
--- a/info/drawing-with-metapost/src/color-hsv-gamut.mp
+++ b/info/drawing-with-metapost/src/color-hsv-gamut.mp
@@ -4,24 +4,30 @@
\begin{mplibcode}
input color-hsv-macro
beginfig(1);
- defaultfont := "phvr8r";
- numeric s[], v[];
- s0 = 1/2; v0 = 7/8;
- s1 = 7/8; v1 = 7/8;
- s2 = 7/8; v2 = 1/2;
- for y=0 upto 2:
- for h=0 step 15 until 360:
- fill fullcircle scaled 24 shifted (h, -32y) withcolor hsv_color(h, s[y], v[y]);
- draw fullcircle scaled 24 shifted (h, -32y) withcolor white;
- if y=1: label(decimal h infont defaultfont scaled 1/2, (h,-16)); fi
- endfor
+ defaultfont := "phvr8r";
+
+ numeric s[], v[];
+ s0 = 1/2; v0 = 7/8;
+ s1 = 7/8; v1 = 7/8;
+ s2 = 7/8; v2 = 1/2;
+
+ path r;
+ for y=0, 1, 2:
+ for h=0 step 15 until 360:
+ r := fullcircle scaled 24 shifted (h, -36y if y=2: +8 fi);
+ fill r withcolor hsv_color(h, s[y], v[y]);
+ draw r withcolor white;
+ if y=1:
+ label(decimal h infont defaultfont scaled 0.7, (h,-18));
+ fi
endfor
+ endfor
- label.urt("Less saturation", (-20,12));
- label.lrt("Lower value", (-20,-76));
+ label.urt("Less saturation", (-20,14));
+ label.lrt("Lower value", (-20,-78));
- drawarrow (-15, -12) -- (-15,12);
- drawarrow (-15, -52) -- (-15,-76);
+ drawarrow (-15, -21) -- (-15,12);
+ drawarrow (-15, -43) -- (-15,-76);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/color-hsv-gamut.pdf b/info/drawing-with-metapost/src/color-hsv-gamut.pdf
index a2a2d68a08..5ca16508e3 100644
--- a/info/drawing-with-metapost/src/color-hsv-gamut.pdf
+++ b/info/drawing-with-metapost/src/color-hsv-gamut.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/color-hsv-macro.mp b/info/drawing-with-metapost/src/color-hsv-macro.mp
index 1ec265a055..243725fbe4 100644
--- a/info/drawing-with-metapost/src/color-hsv-macro.mp
+++ b/info/drawing-with-metapost/src/color-hsv-macro.mp
@@ -1,15 +1,14 @@
-vardef hsv_color(expr h,s,v) =
- % following wikipedia article on "HSL and HSV"
- save chroma, hh, x, m;
- chroma = v*s;
- hh = h/60;
- x = chroma * (1-abs(hh mod 2 - 1));
- m = v - chroma;
- if hh < 1: (chroma,x,0)+(m,m,m)
- elseif hh < 2: (x,chroma,0)+(m,m,m)
- elseif hh < 3: (0,chroma,x)+(m,m,m)
- elseif hh < 4: (0,x,chroma)+(m,m,m)
- elseif hh < 5: (x,0,chroma)+(m,m,m)
- else: (chroma,0,x)+(m,m,m)
- fi
+vardef hsv_color(expr h, s, v) =
+ save chroma, hh, x, m;
+ chroma = v * s;
+ hh = h / 60;
+ x = chroma * (1 - abs(hh mod 2 - 1));
+ m = v - chroma;
+ if hh < 1: (chroma,x,0)+(m,m,m)
+ elseif hh < 2: (x,chroma,0)+(m,m,m)
+ elseif hh < 3: (0,chroma,x)+(m,m,m)
+ elseif hh < 4: (0,x,chroma)+(m,m,m)
+ elseif hh < 5: (x,0,chroma)+(m,m,m)
+ else: (chroma,0,x)+(m,m,m)
+ fi
enddef;
diff --git a/info/drawing-with-metapost/src/compass-rose.mp b/info/drawing-with-metapost/src/compass-rose.mp
deleted file mode 100644
index 26952e26e2..0000000000
--- a/info/drawing-with-metapost/src/compass-rose.mp
+++ /dev/null
@@ -1,35 +0,0 @@
-vardef compass_rose(expr shade, highlight) =
- save currentpicture, s;
- picture currentpicture; currentpicture := nullpicture;
- drawoptions(withcolor shade);
- draw fullcircle scaled 144 withpen pencircle scaled 2;
- draw fullcircle scaled 138;
- draw thelabel("NW" infont defaultfont scaled 3/4, 64 up) rotated +45;
- draw thelabel("NE" infont defaultfont scaled 3/4, 64 up) rotated -45;
- draw thelabel("SE" infont defaultfont scaled 3/4, 64 down) rotated +45;
- draw thelabel("SW" infont defaultfont scaled 3/4, 64 down) rotated -45;
- draw fullcircle scaled 120;
- draw fullcircle scaled 118;
- draw fullcircle scaled 108;
- draw fullcircle scaled 106;
- for t=0 step 15 until 350: draw ((53,0) -- (60,0)) rotated t; endfor
- for t=0 step 45 until 350: draw ((69,0) -- (80,0)) rotated t; endfor
- path s; s = 8 right -- 60 up -- 8 left -- cycle;
- for t=0 upto 3: filldraw s rotated (45 + 90t); endfor
- s := s scaled 1.414;
- for t=0 upto 3:
- s := s rotated 90t;
- fill s withcolor background;
- fill subpath (-1/2, 1) of s -- cycle if t=0: withcolor highlight fi;
- draw s;
- endfor
- fill fullcircle scaled 28 withcolor background;
- draw fullcircle scaled 28;
- fill fullcircle scaled dotlabeldiam;
- label.top("N" infont "cmbx12", 84 up);
- label.bot("S" infont "cmbx12", 84 down);
- label.rt("E" infont "cmbx12", 84 right);
- label.lft("W" infont "cmbx12", 84 left);
- drawoptions();
- currentpicture
-enddef;
diff --git a/info/drawing-with-metapost/src/complex-inverse-and-sqrt.mp b/info/drawing-with-metapost/src/complex-inverse-and-sqrt.mp
deleted file mode 100644
index 3b187fad26..0000000000
--- a/info/drawing-with-metapost/src/complex-inverse-and-sqrt.mp
+++ /dev/null
@@ -1,48 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-picture axes, dot, opendot, P[];
-numeric u; u = 42;
-interim ahangle := 30;
-axes = image(
- path xx, yy; xx = (left--right) scaled 1.2 u; yy = xx rotated 90;
- draw fullcircle scaled 2u;
- drawarrow xx; label.rt("$\Re$", point 1 of xx);
- drawarrow yy; label.top("$\Im$", point 1 of yy);
-);
-dot = image(fill fullcircle scaled dotlabeldiam);
-opendot = image(draw dot; unfill fullcircle scaled 3/4 dotlabeldiam);
-z1 = 0.7 dir 76;
-z2 = 1.5 dir 60;
-z3 = 1 dir 42;
-
-vardef connect(expr a, b, shade) =
- path c; c = (a -- origin -- b) scaled u;
- drawarrow c cutafter fullcircle scaled 5 shifted point 2 of c withcolor shade;
- draw dot shifted point 0 of c; draw opendot shifted point 2 of c;
-enddef;
-
-vardef zinverse(expr z) = 1/abs z * dir - angle z enddef;
-vardef zsqrt(expr z) = if abs z > 0: sqrt(abs z) * dir 1/2 angle fi z enddef;
-
-input colorbrewer-rgb
-P1 = image(
-draw axes withcolor 3/4;
-label.lrt("\small\texttt{zinverse()}", ulcorner axes shifted 10 left);
-for i=1 upto 3: connect(z[i], zinverse(z[i]), SetTwo[7][2+i]); endfor
-);
-P2 = image(
-draw axes withcolor 3/4;
-label.lrt("\small\texttt{zsqrt()}", ulcorner axes);
-for i=1 upto 3: connect(z[i], zsqrt(z[i]), SetTwo[7][2+i]); endfor
-);
-beginfig(1);
- interim labeloffset := 12;
- label.lft(P1, origin);
- label.rt(P2, origin);
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/complex-operators.mp b/info/drawing-with-metapost/src/complex-operators.mp
deleted file mode 100644
index a1510bc64b..0000000000
--- a/info/drawing-with-metapost/src/complex-operators.mp
+++ /dev/null
@@ -1,32 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- numeric u; u = 1cm;
- z1 = 2 dir 15; z2 = 1.2 dir 60;
- z3 = z1+z2; z4 = z1 zscaled z2; z5 = (x1,-y1);
- drawoptions(withcolor 2/3 white);
- draw (1/2 left -- 3 right) scaled u ;
- draw (1/2 down -- 3 up ) scaled u ;
- draw subpath (0,3) of fullcircle scaled 2u rotated -22.5;
- drawoptions();
- dotlabel.lrt (btex $\scriptstyle 1$ etex, (u,0));
- dotlabel.ulft(btex $\scriptstyle i$ etex, (0,u));
- interim ahangle := 30;
- forsuffixes @=1,2,3,4,5:
- x@ := x@ * u; y@ := y@ * u;
- drawarrow origin -- z@
- cutafter fullcircle scaled 5 shifted z@
- withcolor 2/3 if @ < 3: blue else: red fi;
- endfor
- fill fullcircle scaled dotlabeldiam;
- dotlabel.rt (btex $A$ etex, z1);
- dotlabel.urt(btex $B$ etex, z2);
- dotlabel.top(btex $A+B$ etex, z3);
- dotlabel.top(btex $A \times B$ etex, z4);
- dotlabel.rt (btex $\bar{A}$ etex, z5);
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/curves-astroid-family.mp b/info/drawing-with-metapost/src/curves-astroid-family.mp
index 340144f721..083784f960 100644
--- a/info/drawing-with-metapost/src/curves-astroid-family.mp
+++ b/info/drawing-with-metapost/src/curves-astroid-family.mp
@@ -3,17 +3,15 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-input colorbrewer-rgb
beginfig(1);
- numeric a; a = 144;
- for n=1 upto 7:
- path p; p = a * right for t=6 step 6 until 90:
- .. a * (cosd(t) ** n, sind(t) ** n)
- endfor;
- p := for i=0 upto 3: p rotated 90i & endfor cycle;
- fill p withcolor Oranges[9][n]; draw p;
- endfor
+input colorbrewer-rgb
+for n=1 upto 7:
+ path p; p = (right for t=6 step 6 until 90:
+ .. (cosd(t) ** n, sind(t) ** n)
+ endfor) scaled 144;
+ p := for i=0 upto 3: p rotated 90i & endfor cycle;
+ fill p withcolor Blues[9][n]; draw p;
+endfor
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/curves-astroid-family.pdf b/info/drawing-with-metapost/src/curves-astroid-family.pdf
index 18eb3b64d9..50a407f380 100644
--- a/info/drawing-with-metapost/src/curves-astroid-family.pdf
+++ b/info/drawing-with-metapost/src/curves-astroid-family.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-astroid.mp b/info/drawing-with-metapost/src/curves-astroid.mp
index b572205217..6fe4896108 100644
--- a/info/drawing-with-metapost/src/curves-astroid.mp
+++ b/info/drawing-with-metapost/src/curves-astroid.mp
@@ -4,17 +4,16 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
- path base; base = fullcircle scaled 300;
- path astroid; astroid =
- for t=0 step 1/16 until 8:
- hide(pair a, b, p;
- a = (xpart point t of base, 0);
- b = (0, ypart point t of base);
- draw a -- b withpen pencircle scaled 1/4 withcolor 3/4;
- p = whatever[a, b]; p - point t of base = whatever * (a - b) rotated 90;
- ) p --
- endfor cycle;
- draw astroid withcolor 2/3 red;
+ path base; base = fullcircle scaled 300;
+ path astroid; astroid = for t=0 step 1/16 until 8:
+ hide(pair a, b, p;
+ a = (xpart point t of base, 0); b = (0, ypart point t of base);
+ p = whatever[a,b]; p - point t of base = whatever * (a-b) rotated 90;
+ ) p -- endfor cycle;
+ for t=0 step 1/16 until 8:
+ draw (xpart point t of base, 0) -- (0, ypart point t of base) withcolor 7/8;
+ endfor
+ draw astroid withcolor 2/3 red;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-astroid.pdf b/info/drawing-with-metapost/src/curves-astroid.pdf
index 550b18858a..d9ec00252d 100644
--- a/info/drawing-with-metapost/src/curves-astroid.pdf
+++ b/info/drawing-with-metapost/src/curves-astroid.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-brachisto.mp b/info/drawing-with-metapost/src/curves-brachisto.mp
new file mode 100644
index 0000000000..eb41d1965d
--- /dev/null
+++ b/info/drawing-with-metapost/src/curves-brachisto.mp
@@ -0,0 +1,44 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ path Y, L, C, P, S;
+
+ % solve parameters for cycloid
+ vardef u(expr x) = x - sind(57.295779513 x) enddef;
+ vardef v(expr x) = 1 - cosd(57.295779513 x) enddef;
+ vardef f(expr t) = u(t) < v(t) enddef;
+ tolerance := epsilon; a = solve f(2,3);
+ s = 1/64 a;
+ Y = (origin for t = s step s until a+eps:
+ -- (u(t), -v(t)) % negative v(t) so curve is inverted
+ endfor) scaled 160;
+ z0 = point 0 of Y;
+ z1 = point infinity of Y;
+
+ % define the four other paths
+ L = z0 -- z1;
+ C = quartercircle rotated 180 scaled 2x1 shifted (x1, y0);
+ P = z0{1,-2} ... (1/2[x1, x0], 1/4[y1, y0]){1,-1} ... z1 {1, 0};
+ S = z0{1,-6} ... (1/2[x1, x0], 1/64[y1, y0]){1, -6/32} ... z1 {1, 0};
+
+ draw z0 -- (x0,y1) -- z1 withcolor 3/4;
+ drawoptions(withcolor 2/3 red);
+ draw L; dotlabel.urt("Line", point 1/4 of L);
+ drawoptions(withcolor 1/2 green);
+ draw C; dotlabel.urt("Circle", point 1 of C);
+ drawoptions(withcolor 1/4[red, green]);
+ draw P; dotlabel.urt("Parabola", point 1/2 of P);
+ drawoptions(withcolor 3/4[red, green]);
+ draw S; dotlabel.llft("Sixth degree", point 3/4 of S);
+ drawoptions(withcolor 1/2 blue);
+ draw Y; dotlabel.urt("Cycloid", point 50 of Y);
+ drawoptions();
+
+ dotlabel.urt("$A$", z0);
+ dotlabel.urt("$B$", z1);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/brachisto.pdf b/info/drawing-with-metapost/src/curves-brachisto.pdf
index 9535832c97..cae7e3db5b 100644
--- a/info/drawing-with-metapost/src/brachisto.pdf
+++ b/info/drawing-with-metapost/src/curves-brachisto.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-cardioid-construction.mp b/info/drawing-with-metapost/src/curves-cardioid-construction.mp
index 4336fa7ab7..0dd5a9011a 100644
--- a/info/drawing-with-metapost/src/curves-cardioid-construction.mp
+++ b/info/drawing-with-metapost/src/curves-cardioid-construction.mp
@@ -5,48 +5,49 @@
\begin{mplibcode}
beginfig(1);
- numeric u; u = 144;
-
- path base; base = fullcircle rotated 180 scaled u;
-
- path cardioid;
- cardioid = for t = 0 step 1/4 until length base:
- point 0 of base reflectedabout(precontrol t of base, postcontrol t of base) ..
- endfor cycle;
-
- numeric t; t = 5.4;
- pair A, M, P, P', Q, Q', R;
- A = point 0 of base;
- Q = point t of base;
- Q' = point t-4 of base;
- P = A reflectedabout(precontrol t of base, postcontrol t of base);
- P' = A reflectedabout(precontrol t-4 of base, postcontrol t-4 of base);
- M = 1/2[P, P'];
- R = whatever[P, Q] = whatever[P', Q'];
-
- %draw Q' -- R -- Q withcolor 3/4;
- draw 3[postcontrol t of base, precontrol t of base]
- -- 5[precontrol t of base, postcontrol t of base] withcolor 3/4;
- %draw 5[postcontrol t-4 of base, precontrol t-4 of base]
- % -- 3[precontrol t-4 of base, postcontrol t-4 of base] withcolor 3/4;
-
- draw fullcircle scaled 2 abs (Q-A) shifted Q withcolor 7/8;
-
- %
- %draw P' -- Q' -- Q -- P -- cycle;
- draw A -- Q -- P -- cycle;
-
- draw base withcolor 2/3 blue;
- draw origin withpen pencircle scaled dotlabeldiam withcolor 2/3 blue;
- draw cardioid withcolor 1/4[white, 1/2 red];
-
- dotlabel.ulft("$A$", A);
- %dotlabel.ulft("$M$", M);
- dotlabel.top ("$P$", P);
- %dotlabel.llft("$P'$", P');
- dotlabel.urt ("$Q$", Q);
- %dotlabel.bot ("$Q'$", Q');
- %dotlabel.lrt ("$R$", R);
+numeric u; u = 144;
+
+path base; base = fullcircle rotated 180 scaled u;
+numeric s; s = 1/8;
+
+pair A; A = point 0 of base;
+path cardioid; cardioid = for t = 0 step s until length base:
+ A reflectedabout(precontrol t of base, postcontrol t of base) ..
+endfor cycle;
+
+numeric t; t = 5.4;
+pair A, M, P, P', Q, Q', R;
+A = point 0 of base;
+Q = point t of base;
+Q' = point t-4 of base;
+P = A reflectedabout(precontrol t of base, postcontrol t of base);
+P' = A reflectedabout(precontrol t-4 of base, postcontrol t-4 of base);
+M = 1/2[P, P'];
+R = whatever[P, Q] = whatever[P', Q'];
+
+%draw Q' -- R -- Q withcolor 3/4;
+draw 3[postcontrol t of base, precontrol t of base]
+ -- 5[precontrol t of base, postcontrol t of base] withcolor 3/4;
+%draw 5[postcontrol t-4 of base, precontrol t-4 of base]
+% -- 3[precontrol t-4 of base, postcontrol t-4 of base] withcolor 3/4;
+
+draw fullcircle scaled 2 abs (Q-A) shifted Q withcolor 7/8;
+
+%
+%draw P' -- Q' -- Q -- P -- cycle;
+draw A -- Q -- P -- cycle;
+
+draw base withcolor 2/3 blue;
+draw origin withpen pencircle scaled dotlabeldiam withcolor 2/3 blue;
+draw cardioid withcolor 1/4[white, 1/2 red];
+
+dotlabel.ulft("$A$", A);
+%dotlabel.ulft("$M$", M);
+dotlabel.top ("$P$", P);
+%dotlabel.llft("$P'$", P');
+dotlabel.urt ("$Q$", Q);
+%dotlabel.bot ("$Q'$", Q');
+%dotlabel.lrt ("$R$", R);
endfig;
\end{mplibcode}
diff --git a/info/drawing-with-metapost/src/curves-cardioid-construction.pdf b/info/drawing-with-metapost/src/curves-cardioid-construction.pdf
index cab8862bc7..88b94918bd 100644
--- a/info/drawing-with-metapost/src/curves-cardioid-construction.pdf
+++ b/info/drawing-with-metapost/src/curves-cardioid-construction.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/cycloids-extra-code.mp b/info/drawing-with-metapost/src/curves-cycloids-extra.mp
index 15ea28144f..bef1884e3d 100644
--- a/info/drawing-with-metapost/src/cycloids-extra-code.mp
+++ b/info/drawing-with-metapost/src/curves-cycloids-extra.mp
@@ -1,3 +1,9 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
numeric R, r, pi;
R = 1.8cm; % radius of the outer part
r = 1.3cm; % radius of the inner part
@@ -59,3 +65,6 @@ dotlabel.top(btex $(\pi r,R+r)$ etex, (pi*r,R+r));
label(btex $\vcenter{\halign{&$#$\hfil\cr
x=r\theta-R\sin\theta\cr
y=r-R\cos\theta\cr}}$ etex,(4.75r,r));
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/cycloids-extra.pdf b/info/drawing-with-metapost/src/curves-cycloids-extra.pdf
index 80daf06271..76250155cb 100644
--- a/info/drawing-with-metapost/src/cycloids-extra.pdf
+++ b/info/drawing-with-metapost/src/curves-cycloids-extra.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-cycloids.mp b/info/drawing-with-metapost/src/curves-cycloids.mp
new file mode 100644
index 0000000000..21c2f6c535
--- /dev/null
+++ b/info/drawing-with-metapost/src/curves-cycloids.mp
@@ -0,0 +1,48 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+ numeric pi, r, theta; pi = 3.141592653589793; r = 42; theta = 81;
+ path cycloid;
+ for t=-80 step 5 until 440:
+ cycloid := if known cycloid: cycloid -- fi
+ (0, -r) rotated -t shifted (t/180*pi*r, r);
+ endfor;
+ path wheel;
+ z1 = (theta/180*pi*r, r);
+ wheel = reverse fullcircle scaled 2r rotated -(90 + theta) shifted z1;
+ z2 = point 0 of wheel;
+ path a[]; u = 1/16; % u = a little shortening
+ a1 = subpath -(theta/45-u,u) of wheel shifted -z1 scaled 5/8 shifted z1;
+ a2 = subpath (.3, 1.4) of wheel shifted -z1 scaled 1.08 shifted z1;
+ a3 = a2 rotatedabout(z1, 170);
+ path xx, yy;
+ xx = (xpart point 0 of cycloid, 0) -- (xpart point infinity of cycloid,0);
+ yy = (down -- 5 up) scaled 1/2 r;
+
+ ahangle := 30;
+ drawarrow xx withcolor 1/2; label.rt (btex $x$ etex, point 1 of xx);
+ drawarrow yy withcolor 1/2; label.top(btex $y$ etex, point 1 of yy);
+
+ draw cycloid withcolor .67 red;
+ draw wheel withcolor .67 blue;
+ drawarrow a1; drawarrow a2; drawarrow a3;
+ draw (0,y2) -- z2 -- (x2,0) dashed withdots scaled 1/4;
+ draw z2 -- z1 -- (x1,0);
+ draw z1 withpen pencircle scaled dotlabeldiam;
+ draw z2 withpen pencircle scaled dotlabeldiam;
+
+ label(btex $\theta$ etex, z1 + 3/4r * dir (270 - 1/2 theta));
+ label.bot(btex $\mathstrut 2\pi r$ etex, (2pi*r,0));
+ label.bot(btex $\mathstrut r\theta$ etex, (x1,0));
+ label.bot(btex $\mathstrut x$ etex, (x2,0));
+ label.lft(btex $y$ etex, (0,y2));
+ label.top(btex $r$ etex, 1/2[z1, z2]);
+ dotlabel.top(btex $(\pi r,2r)$ etex, (pi*r,2r));
+ label.rt(btex $\vcenter{\halign{&$#$\hfil\cr
+ x=r(\theta-\sin\theta)\cr
+ y=r(1-\cos\theta)\cr}}$ etex, (pi*r,r));
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/cycloids.pdf b/info/drawing-with-metapost/src/curves-cycloids.pdf
index 6334dd9ed2..16fa0f7628 100644
--- a/info/drawing-with-metapost/src/cycloids.pdf
+++ b/info/drawing-with-metapost/src/curves-cycloids.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-ellipse-family.mp b/info/drawing-with-metapost/src/curves-ellipse-family.mp
new file mode 100644
index 0000000000..d2f7487ed4
--- /dev/null
+++ b/info/drawing-with-metapost/src/curves-ellipse-family.mp
@@ -0,0 +1,34 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef dp(expr x) = substring(0, 5) of decimal x enddef;
+beginfig(1);
+
+ pair F[], o;
+
+ -F1 = F2 = 55 dir 34;
+
+ o = 1/2[F1, F2];
+
+ dotlabel.lrt("$F_1$", F1);
+ dotlabel.lrt("$F_2$", F2);
+
+ 2d = abs(F1 - F2);
+ r = angle(F1 - F2);
+
+ for i = 0 upto 8:
+ a := d * (1 + 1/4 i);
+ b := a +-+ d;
+ e := 1 +-+ b/a;
+ path ee; ee = fullcircle xscaled 2a yscaled 2b rotated r shifted o;
+ draw ee;
+ picture tl; tl = thelabel.top(TEX("$e=" & dp(e) & "$"), origin);
+ draw tl rotated angle direction 2 of ee shifted point 2 of ee;
+ endfor
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/curves-ellipse-family.pdf b/info/drawing-with-metapost/src/curves-ellipse-family.pdf
new file mode 100644
index 0000000000..00b6d563bb
--- /dev/null
+++ b/info/drawing-with-metapost/src/curves-ellipse-family.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-ellipse-tangents.mp b/info/drawing-with-metapost/src/curves-ellipse-tangents.mp
index a94e38463f..696c06b0a8 100644
--- a/info/drawing-with-metapost/src/curves-ellipse-tangents.mp
+++ b/info/drawing-with-metapost/src/curves-ellipse-tangents.mp
@@ -3,53 +3,47 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-secondarydef a through b =
- begingroup; save d; numeric d; d = abs(a-b); (1+12/d)[b,a]--(1+12/d)[a,b] endgroup
-enddef;
beginfig(1);
-path ellipse; ellipse = fullcircle scaled 300 yscaled 5/8 rotated 13;
-z0 = 1/2[point 4 of ellipse, point 0 of ellipse];
-numeric a, b, e;
-2a = abs (point 4 of ellipse - point 0 of ellipse);
-2b = abs (point 6 of ellipse - point 2 of ellipse);
+path ellipse; ellipse = fullcircle scaled 300 yscaled 5/8 rotated 8;
+2a = abs (point 0 of ellipse - point 4 of ellipse);
+2b = abs (point 2 of ellipse - point 6 of ellipse);
e = 1 +-+ b/a;
-z1 = e[z0, point 0 of ellipse];
-z2 = e[z0, point 4 of ellipse];
-z3 = 240 dir 25;
-path pp, qq;
-pp = fullcircle scaled 2 abs (z1 - z3) shifted z3;
-qq = fullcircle scaled 4a shifted z2;
-z4 = pp intersectionpoint qq;
-z5 = reverse pp intersectionpoint qq;
-numeric t, u;
-(t, whatever) = ellipse intersectiontimes (z2 -- z4);
-(u, whatever) = ellipse intersectiontimes (z2 -- z5);
+
+pair F[], A;
+F1 = (1/2-e/2)[point 0 of ellipse, point 4 of ellipse];
+F2 = (1/2+e/2)[point 0 of ellipse, point 4 of ellipse];
+A = 240 dir 25;
+
+path pp; pp = fullcircle scaled 2 abs (F1-A) shifted A;
+path qq; qq = fullcircle scaled 4a shifted F2;
+pair P, Q, T, T';
+z1 = pp intersectiontimes qq; P = point x1 of pp;
+z2 = reverse pp intersectiontimes qq; Q = point -x2 of pp;
+z3 = ellipse intersectiontimes (F2 -- P); T = point x3 of ellipse;
+z4 = ellipse intersectiontimes (F2 -- Q); T' = point x4 of ellipse;
vardef f(expr x) =
- angle (z3 - point x of ellipse) + 90 > angle direction x of ellipse
+ angle (A-point x of ellipse) + 90 > angle direction x of ellipse
enddef;
-drawarrow z3 -- point solve f(0, t) of ellipse withcolor 2/3 blue;
+drawarrow A -- point solve f(0, x3) of ellipse withcolor 2/3 blue;
-drawoptions(dashed evenly withcolor 7/8);
-draw point 0 of ellipse through point 4 of ellipse;
-draw point 2 of ellipse through point 6 of ellipse;
-drawoptions(withcolor 3/4);
-draw z4 -- z1 -- z5;
-draw z2 -- z4 -- z3 -- z5 -- cycle;
-draw point t of ellipse -- z1 -- point u of ellipse;
-drawoptions();
-draw point t of ellipse -- z3 -- point u of ellipse withcolor 2/3 red;
-dotlabel.llft("$F_1$", z1); dotlabel.llft("$F_2$", z2);
-dotlabel.urt("$A$", z3);
-dotlabel.ulft("$P$", z4); dotlabel.lrt ("$Q$", z5);
-dotlabel.ulft("$T$", point t of ellipse);
-dotlabel.lrt("$T'$", point u of ellipse);
+draw subpath (x1 - 1/2, 17/2 - x2) of pp dashed withdots scaled 1/2;
+draw subpath (y2 - 33/4, y1 + 1/4) of qq dashed withdots scaled 1/2;
+draw T -- F1 -- P -- F2 -- Q -- F1 -- T' withcolor 1/2;
+draw P -- A -- Q withcolor 1/2;
+draw T -- A -- T' withcolor 2/3 red;
draw ellipse;
-picture P; P = currentpicture; currentpicture := nullpicture;
-draw pp dashed withdots scaled 1/2;
-draw qq dashed withdots scaled 1/2;
-bboxmargin := 24; clip currentpicture to bbox P;
-draw P;
+
+def dotlabelx(expr t, z, o) =
+ draw z withpen pencircle scaled dotlabeldiam; label(t, z + o);
+enddef;
+dotlabelx("$F_1$", F1, 10 dir 241);
+dotlabelx("$F_2$", F2, 8 dir 260);
+dotlabelx("$A$", A, 8 dir 30);
+dotlabelx("$P$", P, 10 dir 94); dotlabelx("$Q$", Q, 10 dir 300);
+dotlabelx("$T$", T, 10 dir 120); dotlabelx("$T'$", T', 10 dir -45);
+
+input show_name
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-ellipse-tangents.pdf b/info/drawing-with-metapost/src/curves-ellipse-tangents.pdf
index 7cb7034ead..431da32bc3 100644
--- a/info/drawing-with-metapost/src/curves-ellipse-tangents.pdf
+++ b/info/drawing-with-metapost/src/curves-ellipse-tangents.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-ellipse.mp b/info/drawing-with-metapost/src/curves-ellipse.mp
index f08f6ee204..4c6c7a84c4 100644
--- a/info/drawing-with-metapost/src/curves-ellipse.mp
+++ b/info/drawing-with-metapost/src/curves-ellipse.mp
@@ -4,45 +4,57 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
secondarydef a through b =
- begingroup; save d; numeric d; d = abs(a-b); (1+12/d)[b,a] -- (1+12/d)[a,b] endgroup
+ begingroup; save d; d = abs(a-b); (1+12/d)[b,a] -- (1+12/d)[a,b] endgroup
enddef;
beginfig(1);
- path ellipse; ellipse = fullcircle scaled 300 yscaled 5/8 rotated 13;
- numeric a, b, e;
- 2a = abs (point 4 of ellipse - point 0 of ellipse);
- 2b = abs (point 6 of ellipse - point 2 of ellipse);
- e = 1 +-+ b/a;
-
- z0 = 1/2[point 0 of ellipse, point 4 of ellipse];
- z1 = e[z0, point 0 of ellipse];
- z2 = e[z0, point 4 of ellipse];
-
- drawoptions(withcolor 3/4);
- draw point 0 of ellipse through point 4 of ellipse;
- draw point 2 of ellipse through point 6 of ellipse;
- drawoptions(withcolor 1/2);
- label.top("$a$", 1/2[z0, point 0 of ellipse]);
- label.bot("$ae$", 1/2[z0, z1]);
- label.rt("$b$", 1/2[z0, point 2 of ellipse]);
- drawoptions();
-
- numeric t; t = 1.732;
- draw z1 -- point t of ellipse -- z2;
- drawoptions(withcolor 1/2);
- draw (left--right) scaled 21
- rotated angle direction t of ellipse
- shifted point t of ellipse;
- draw (1/2 down--up) scaled 21
- rotated angle direction t of ellipse
- shifted point t of ellipse;
- drawoptions();
-
- draw ellipse withcolor 3/4 red;
-
- dotlabel.urt("$T$", point t of ellipse);
- dotlabel.lrt("$F_1$", z1);
- dotlabel.lrt("$F_2$", z2);
+ path ellipse;
+ ellipse = fullcircle scaled 300 yscaled 5/8 rotated 13;
+ numeric a, b;
+ 2a = abs (point 4 of ellipse - point 0 of ellipse);
+ 2b = abs (point 6 of ellipse - point 2 of ellipse);
+
+ numeric e; e = 1 +-+ b/a; % Pythagorean difference
+
+ z0 = 1/2[point 0 of ellipse, point 4 of ellipse];
+ z1 = e[z0, point 0 of ellipse];
+ z2 = e[z0, point 4 of ellipse];
+
+ drawoptions(withcolor 3/4[blue, white]);
+ draw point 0 of ellipse through point 4 of ellipse;
+ draw point 2 of ellipse through point 6 of ellipse;
+
+ vardef arrowlabel(expr s, a, b, offset) =
+ save p, t; interim ahangle := 28;
+ path p; p = (a--b) shifted (offset * unitvector(b-a) rotated 90);
+ picture t; t = thelabel(s, point 1/2 of p);
+ drawdblarrow p; unfill bbox t; draw t;
+ enddef;
+
+ label.lrt("$a$", 1/2[z0, point 4 of ellipse]);
+ label.rt("$b$", 1/2[z0, point 6 of ellipse]);
+ arrowlabel("$ae$", z0, z1, -6);
+ drawoptions();
+
+ numeric t; t = 1.732;
+ drawoptions(withcolor 1/2);
+ draw (left--right) scaled 34
+ rotated angle direction t of ellipse
+ shifted point t of ellipse;
+ draw (1/2 down--up) scaled 34
+ rotated angle direction t of ellipse
+ shifted point t of ellipse;
+ drawoptions();
+
+ draw z1 -- point t of ellipse -- z2;
+ draw ellipse withcolor 3/4 red;
+
+ labeloffset := 6;
+ dotlabel.urt("$T$", point t of ellipse);
+ dotlabel.top("$F_1$", z1);
+ dotlabel.ulft("$F_2$", z2);
+
+ input show_name
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-ellipse.pdf b/info/drawing-with-metapost/src/curves-ellipse.pdf
index 0da741f270..64fb3be1fe 100644
--- a/info/drawing-with-metapost/src/curves-ellipse.pdf
+++ b/info/drawing-with-metapost/src/curves-ellipse.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-limacon-simple.mp b/info/drawing-with-metapost/src/curves-limacon-simple.mp
index 9647c805a4..5707b65535 100644
--- a/info/drawing-with-metapost/src/curves-limacon-simple.mp
+++ b/info/drawing-with-metapost/src/curves-limacon-simple.mp
@@ -5,34 +5,28 @@
\begin{mplibcode}
beginfig(1);
- numeric a; 2a = 144;
+ numeric a; 2a = 144;
- path base; base = fullcircle rotated 180 scaled 2a shifted (2a, 0);
- path c[]; numeric n; n = -1;
- numeric s; s = 1/4;
- pair A; A = 2[center base, point 0 of base];
- for t = 0 step s until length base:
- c[incr n] = fullcircle
- scaled 2 abs (point t of base - A)
- shifted point t of base;
- draw c[n] withpen pencircle scaled 1/4 withcolor 3/4;
- endfor
+ path base; base = fullcircle rotated 180 scaled 2a shifted (2a, 0);
+ numeric s; s = 1/4;
+ pair A; A = 2[center base, point 0 of base];
+ path limacon; limacon = for t = 0 step s until length base:
+ A reflectedabout(precontrol t of base, postcontrol t of base) ..
+ endfor cycle;
- path limacon;
- limacon = for t = 0 step s until length base:
- A reflectedabout(precontrol t of base, postcontrol t of base) ..
- endfor cycle;
+ path c[]; numeric n; n = -1;
+ for t = 0 step s until length base:
+ c[incr n] = fullcircle scaled 2 abs (point t of base - A) shifted point t of base;
+ draw c[n] withpen pencircle scaled 1/4 withcolor 3/4;
+ endfor
- % path polar;
- % polar = for t=0 upto 359: 2a * (1 + 2 cosd(t)) * dir t .. endfor cycle;
- % draw polar withpen pencircle scaled 5/4 withcolor 3/4[green, white];
+ draw base withcolor 2/3 blue;
+ draw center base withpen pencircle scaled 2 withcolor 2/3 blue;
+ draw limacon withcolor 2/3 red;
- draw base withcolor 2/3 blue; draw center base withpen pencircle scaled 2 withcolor 2/3 blue;
- draw limacon withcolor 2/3 red;
-
- dotlabel.lft("$A$", A);
- dotlabel.urt("$Q$", point 5.4 of base);
- dotlabel.ulft("$P$", A reflectedabout(precontrol 5.4 of base, postcontrol 5.4 of base));
+ dotlabel.lft("$A$", A);
+ dotlabel.urt("$Q$", point 5.4 of base);
+ dotlabel.ulft("$P$", A reflectedabout(precontrol 5.4 of base, postcontrol 5.4 of base));
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-limacon-simple.pdf b/info/drawing-with-metapost/src/curves-limacon-simple.pdf
index 8ceb70b520..62bb6589f5 100644
--- a/info/drawing-with-metapost/src/curves-limacon-simple.pdf
+++ b/info/drawing-with-metapost/src/curves-limacon-simple.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-parabola-directrix.mp b/info/drawing-with-metapost/src/curves-parabola-directrix.mp
index 52f3f8c3cc..8fe141c4a4 100644
--- a/info/drawing-with-metapost/src/curves-parabola-directrix.mp
+++ b/info/drawing-with-metapost/src/curves-parabola-directrix.mp
@@ -12,64 +12,63 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-
+
% A--B = directrix, S = focus
vardef parabola(expr A, B, S) =
- save m, q, n, parabola;
- pair n;
- n = whatever[A, B];
- n - S = whatever * (A-B) rotated 90;
- path parabola;
- for t=0 step 1/64 until 1:
- pair m, q;
- m = 1/2[S, t[A, B]];
- q = whatever[S, n]; q - m = whatever * (S - m) rotated 90;
- parabola := if known parabola: parabola -- fi q reflectedabout(S, m);
- endfor
- parabola
+ save m, q, n, parabola;
+ pair n; % the point on A--B nearest to S
+ n = whatever[A, B];
+ n - S = whatever * (A-B) rotated 90;
+ path parabola;
+ for t=0 step 1/64 until 1:
+ pair m, q;
+ m = 1/2[S, t[A, B]];
+ q = whatever[S, n]; q - m = whatever * (S - m) rotated 90;
+ parabola := if known parabola: parabola -- fi
+ q reflectedabout(S, m);
+ endfor
+ parabola
enddef;
input colorbrewer-rgb
beginfig(1);
- numeric i; i = 16;
- pair a, b, s; a = 160 up rotated 5; b = 160 down rotated 5; s = 60 * right;
- draw a--b;
+ numeric i; i = 16;
+ pair a, b, s; a = 160 up rotated 5; b = 160 down rotated 5; s = 60 * right;
+ draw a--b;
+
+ path ff; ff = (-1, 1){1, -2} .. (-1/2, 1/4){1, -1} ..
+ (0, 0){right} .. (1/2, 1/4){1, 1} .. (1, 1){1, 2};
+
+ path p; p = parabola(a, b, s);
+ pair tab; tab = whatever[a, b]; point i of p - tab = whatever * (a-b) rotated 90;
+ pair q; q = point i of p reflectedabout(s, tab);
+ pair n; n = whatever[a,b] = whatever[q, s];
+ pair o; o = 1/2[n, s];
- path ff; ff = (-1, 1){1, -2} .. (-1/2, 1/4){1, -1} .. (0, 0){right} .. (1/2, 1/4){1, 1} .. (1, 1){1, 2};
+ % draw ff scaled 4 abs(s-o) rotated angle (b-a) shifted o;
- path p; p = parabola(a, b, s);
- pair tab; tab = whatever[a, b]; point i of p - tab = whatever * (a-b) rotated 90;
- pair q; q = point i of p reflectedabout(s, tab);
- pair n; n = whatever[a,b] = whatever[q, s];
- pair o; o = 1/2[n, s];
+ interim ahangle := 24;
+ drawarrow (b--a) shifted (o-n) withcolor 3/4;
+ drawarrow (1/2[a, n] --b) rotatedabout(n, 90) withcolor 3/4;
- % draw ff scaled 4 abs(s-o)
- % rotated angle (b-a)
- % shifted o
- % withpen pencircle scaled 2 withcolor 7/8[red, white];
-
- interim ahangle := 24;
- drawarrow (b--a) shifted (o-n) withcolor 3/4;
- drawarrow (1/2[a, n] --b) rotatedabout(n, 90) withcolor 3/4;
+ draw tab -- point i of p -- q -- tab -- s withcolor 3/4;
- draw tab -- point i of p -- q -- tab -- s withcolor 3/4;
-
- drawarrow s -- point i of p
- -- s reflectedabout(precontrol i of p rotatedabout(point i of p, 90),
- postcontrol i of p rotatedabout(point i of p, 90))
- withcolor Blues 8 4;
+ drawarrow s -- point i of p
+ -- s reflectedabout(precontrol i of p rotatedabout(point i of p, 90),
+ postcontrol i of p rotatedabout(point i of p, 90))
+ withcolor Blues 8 4;
- draw p withcolor Blues 8 6;
- dotlabel.lrt("$S$", s);
- dotlabel.urt("$A$", a);
- dotlabel.lrt("$B$", b);
- dotlabel.ulft("\kw{point} $i$ \kw{of} $p$", point i of p);
- interim dotlabeldiam := 2;
- dotlabel.bot("$\scriptstyle q$", q);
- dotlabel.llft("$\scriptstyle n$", n);
- dotlabel.llft("$\scriptstyle o$", o);
- dotlabel.lft("$\scriptstyle m\:$", 1/2[tab, s]);
- dotlabel.lft("$\scriptstyle t[A, B]$", tab);
+ draw p withcolor Blues 8 6;
+ dotlabel.lrt("$S$", s);
+ dotlabel.urt("$A$", a);
+ dotlabel.lrt("$B$", b);
+ dotlabel.ulft("\kw{point} $i$ \kw{of} $p$", point i of p);
+ interim dotlabeldiam := 2;
+ dotlabel.bot("$\scriptstyle q$", q);
+ dotlabel.llft("$\scriptstyle n$", n);
+ dotlabel.llft("$\scriptstyle o$", o);
+ dotlabel.lft("$\scriptstyle m\:$", 1/2[tab, s]);
+ dotlabel.lft("$\scriptstyle t[A, B]$", tab);
endfig;
\end{mplibcode}\llap{\tiny\texttt{\jobname}}
diff --git a/info/drawing-with-metapost/src/curves-parabola-directrix.pdf b/info/drawing-with-metapost/src/curves-parabola-directrix.pdf
index ab70182803..6c0c010dff 100644
--- a/info/drawing-with-metapost/src/curves-parabola-directrix.pdf
+++ b/info/drawing-with-metapost/src/curves-parabola-directrix.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-parabola.mp b/info/drawing-with-metapost/src/curves-parabola.mp
index 98c166560b..8c836dfab3 100644
--- a/info/drawing-with-metapost/src/curves-parabola.mp
+++ b/info/drawing-with-metapost/src/curves-parabola.mp
@@ -4,38 +4,25 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
- pair O, S; O = origin; S = 66 right;
- path parabola, last;
- for q = -144 step 8 until 144:
- pair Q; Q = (0, q);
- path ray;
- ray = (origin -- unitvector(S - Q)) scaled 300
- rotated if q < 0: - fi 90 shifted Q;
- draw S -- ray withcolor 7/8;
- if known last:
- pair t;
- t = whatever[point 0 of ray, point 1 of ray]
- = whatever[point 0 of last, point 1 of last];
- parabola := if known parabola: parabola .. fi t;
- fi
- last := ray;
- endfor
-
- draw parabola withcolor 3/4[red, white];
- for t=0 upto length parabola:
- draw point t of parabola withpen pencircle scaled 3/2 withcolor red;
- endfor
- draw (up--down) scaled 300;
-
- dotlabel.lft("$A$", O);
- dotlabel.rt("$S$", S);
-
- % vardef signum(expr x) = if x=0: 1 else: abs(x) / x fi enddef;
- % path cart;
- % cart = subpath (1, infinity) of (origin for x=-304 step 8 until 304:
- % .. (x, 16 sqrt abs(x)) scaled signum(x) endfor);
-
- % drawarrow cart withcolor 1/3 green;
+ pair A, S; A = origin; S = 66 right;
+ path parabola, last;
+ for q = -144 step 8 until 144:
+ pair Q; Q = q * up; path ray;
+ ray = Q -- Q + 300 unitvector(S - Q) rotated if q < 0: - fi 90;
+ draw S -- ray withcolor 7/8;
+ if known last:
+ pair t; t = whatever[point 0 of ray, point 1 of ray]
+ = whatever[point 0 of last, point 1 of last];
+ parabola := if known parabola: parabola .. fi t;
+ fi
+ last := ray;
+ endfor
+ draw parabola withcolor 3/4[red, white];
+ for t=0 upto length parabola:
+ draw point t of parabola withpen pencircle scaled 3/2 withcolor red;
+ endfor
+ draw (up--down) scaled 300;
+ dotlabel.lft("$A$", A); dotlabel.rt("$S$", S);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-parabola.pdf b/info/drawing-with-metapost/src/curves-parabola.pdf
index 2889b2a82b..445f686496 100644
--- a/info/drawing-with-metapost/src/curves-parabola.pdf
+++ b/info/drawing-with-metapost/src/curves-parabola.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-spiral-archimedes.mp b/info/drawing-with-metapost/src/curves-spiral-archimedes.mp
index ba9b37122c..505ea129d4 100644
--- a/info/drawing-with-metapost/src/curves-spiral-archimedes.mp
+++ b/info/drawing-with-metapost/src/curves-spiral-archimedes.mp
@@ -5,12 +5,12 @@
\mplibnumbersystem{decimal}
\begin{mplibcode}
beginfig(1);
- path S; S = origin for t=1 upto 360: .. 1/12 t * dir 8t endfor;
- drawarrow S;
- input rope
- draw rope S shifted 64 right;
- z0 = urcorner currentpicture - llcorner currentpicture;
- currentpicture := currentpicture scaled (300 / x0);
+ path S; S = origin for t=1 upto 360: .. 1/12 t * dir 8t endfor;
+ drawarrow S;
+ input rope
+ draw rope S shifted 64 right;
+ z0 = urcorner currentpicture - llcorner currentpicture;
+ currentpicture := currentpicture scaled (300 / x0);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-spiral-archimedes.pdf b/info/drawing-with-metapost/src/curves-spiral-archimedes.pdf
index a74df7785a..fd8534c7e2 100644
--- a/info/drawing-with-metapost/src/curves-spiral-archimedes.pdf
+++ b/info/drawing-with-metapost/src/curves-spiral-archimedes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-spiral-equiangular.mp b/info/drawing-with-metapost/src/curves-spiral-equiangular.mp
index 81e45147c7..b343717d51 100644
--- a/info/drawing-with-metapost/src/curves-spiral-equiangular.mp
+++ b/info/drawing-with-metapost/src/curves-spiral-equiangular.mp
@@ -4,10 +4,10 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
- numeric a; a = 2.6; path S;
- S = right for t=1 upto 360: .. a ** (t/64) * dir 4t endfor;
- drawarrow S;
-% input ruler-cm
+ numeric a; a = 2.6; path S;
+ S = right for t=1 upto 360: .. a ** (t/64) * dir 4t endfor;
+ drawarrow S;
+ % input ruler-cm
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-spiral-gnomon-sq.mp b/info/drawing-with-metapost/src/curves-spiral-gnomon-sq.mp
index 5347da9484..4be5a0a55c 100644
--- a/info/drawing-with-metapost/src/curves-spiral-gnomon-sq.mp
+++ b/info/drawing-with-metapost/src/curves-spiral-gnomon-sq.mp
@@ -4,28 +4,32 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
- drawoptions(withpen pencircle scaled 1/4 withcolor 1/4);
+ drawoptions(withpen pencircle scaled 1/4 withcolor 1/4);
path s[]; s0 = unitsquare;
fill s0 withcolor 1/2[2/3 blue, white]; draw s0;
numeric a, b, t, n; a = 1; b = 1; n = 11;
for i = 1 upto n:
- t := b; b := b + a; a := t;
- s[i] = unitsquare scaled a;
- s[i] := s[i] shifted (point i of s[i-1] - point i-1 of s[i]);
- fill s[i] withcolor (1/2 + i/32)[2/3 blue, white];
- draw s[i];
+ t := b; b := b + a; a := t; % Fibonacci sequence
+ s[i] = unitsquare scaled a;
+ s[i] := s[i] shifted (point i of s[i-1] - point i-1 of s[i]);
+ fill s[i] withcolor (1/2 + i/32)[2/3 blue, white];
+ draw s[i];
endfor
+ % cross hairs
for i = n-1 upto n:
- draw point i-2 of s[i-2] -- point i of s[i];
+ draw point i-2 of s[i-2] -- point i of s[i];
endfor
- drawoptions();
- drawarrow origin for i=0 upto n: .. point i of s[i] endfor withcolor 2/3 red;
- for i = 5 upto n:
- label(TEX(decimal arclength subpath (0, 1) of s[i])
- scaled 0.8 rotated angle point n of s[n], center s[i]);
- endfor
- currentpicture := currentpicture rotated - angle point n of s[n];
-
+ drawoptions();
+ % Draw the spiral as a red arrow
+ drawarrow origin for i=0 upto n: .. point i of s[i] endfor
+ withcolor 2/3 red;
+ % show the Fibonacci sizes for the larger boxes
+ for i = 5 upto n:
+ label(TEX(decimal arclength subpath (0, 1) of s[i])
+ scaled 0.8 rotated angle point n of s[n], center s[i]);
+ endfor
+ % Rotate the whole picture to show off the spiral
+ currentpicture := currentpicture rotated - angle point n of s[n];
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-spiral-gnomon-sq.pdf b/info/drawing-with-metapost/src/curves-spiral-gnomon-sq.pdf
index 0863722fc3..a2d05f2a9f 100644
--- a/info/drawing-with-metapost/src/curves-spiral-gnomon-sq.pdf
+++ b/info/drawing-with-metapost/src/curves-spiral-gnomon-sq.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/curves-spiral-gnomon-trig.mp b/info/drawing-with-metapost/src/curves-spiral-gnomon-trig.mp
index 5bf37d00b7..014d5c82fc 100644
--- a/info/drawing-with-metapost/src/curves-spiral-gnomon-trig.mp
+++ b/info/drawing-with-metapost/src/curves-spiral-gnomon-trig.mp
@@ -4,36 +4,35 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
- path t[], base; pair apex;
- base = (left--right) scaled 100;
- apex = whatever * dir +72 shifted point 0 of base
- = whatever * dir -72 shifted point 1 of base;
- t0 = (base -- apex -- cycle);
- transform S;
- r = arclength subpath (0, 1) of t0 / arclength subpath (2, 3) of t0;
- point 0 of t0 transformed S = (r*r)[point 0 of t0, point 2 of t0];
- point 1 of t0 transformed S = point 0 of t0;
- point 2 of t0 transformed S = point 1 of t0;
-
- n = 16;
- for i=1 upto n:
- t[i] = t[i-1] transformed S;
- draw subpath (2,3) of t[i] withpen pencircle scaled 1/4;
- endfor
- draw point 0 of t0 -- point 3/2 of t0 withpen pencircle scaled 1/8 withcolor blue;
- draw point 0 of t1 -- point 3/2 of t1 withpen pencircle scaled 1/8 withcolor blue;
- draw t0;
- drawarrow point 2 of t[n] for i=n-1 downto 0: .. point 2 of t[i] endfor withcolor 2/3 red;
-
- z0 = whatever[point 0 of t0, point 3/2 of t0]
- = whatever[point 0 of t1, point 3/2 of t1];
- numeric a; a = angle (point 2 of t0 - z0);
- drawoptions(withcolor 1/2 green);
- label.lft(TEX("$a$") rotated a, point 5/2 of t0);
- label.bot(TEX("$b$") rotated a, point 1/2 of t0);
- label.rt(TEX("$x$") rotated a, point 1/2 of t1);
- drawoptions();
- currentpicture := currentpicture rotated -a;
+ path t[], base; pair apex;
+ base = (left--right) scaled 100;
+ apex = whatever * dir +72 shifted point 0 of base
+ = whatever * dir -72 shifted point 1 of base;
+ t0 = (base -- apex -- cycle);
+ transform S;
+ r = arclength subpath (0, 1) of t0 / arclength subpath (2, 3) of t0;
+ point 0 of t0 transformed S = (r*r)[point 0 of t0, point 2 of t0];
+ point 1 of t0 transformed S = point 0 of t0;
+ point 2 of t0 transformed S = point 1 of t0;
+ n = 16;
+ for i=1 upto n:
+ t[i] = t[i-1] transformed S;
+ draw subpath (2,3) of t[i] withpen pencircle scaled 1/4;
+ endfor
+ drawoptions(withpen pencircle scaled 1/8 withcolor blue);
+ draw point 0 of t0 -- point 3/2 of t0;
+ draw point 0 of t1 -- point 3/2 of t1;
+ drawoptions();
+ draw t0;
+ drawarrow point 2 of t[n] for i=n-1 downto 0:
+ .. point 2 of t[i] endfor withcolor 2/3 red;
+ z0 = whatever[point 0 of t0, point 3/2 of t0]
+ = whatever[point 0 of t1, point 3/2 of t1];
+ numeric a; a = angle (point 2 of t0 - z0);
+ label.lft(TEX("$a$") rotated a, point 5/2 of t0);
+ label.bot(TEX("$b$") rotated a, point 1/2 of t0);
+ label.rt(TEX("$x$") rotated a, point 1/2 of t1);
+ currentpicture := currentpicture rotated -a;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/curves-spiral-gnomon-trig.pdf b/info/drawing-with-metapost/src/curves-spiral-gnomon-trig.pdf
index 24cf426568..afa7e4705e 100644
--- a/info/drawing-with-metapost/src/curves-spiral-gnomon-trig.pdf
+++ b/info/drawing-with-metapost/src/curves-spiral-gnomon-trig.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/cycloids-code.mp b/info/drawing-with-metapost/src/cycloids-code.mp
deleted file mode 100644
index f81c74ae6e..0000000000
--- a/info/drawing-with-metapost/src/cycloids-code.mp
+++ /dev/null
@@ -1,63 +0,0 @@
-numeric r, pi;
-r = 1.25cm; % radius of the wheel
-pi = 3.14159265; % constant
-%
-% define the cycloid
-path c;
-c = (0,-r) rotated 100 shifted (r*-100/180*pi,r)
- for t=-99 upto 460:
- -- (0,-r) rotated -t shifted (r*t/180*pi,r)
- endfor;
-% and the axes
-drawoptions(withcolor .5 white);
-path xx, yy;
-yy = (down -- 5 up) scaled 1/2 r;
-xx = (xpart point 0 of c, 0) -- (xpart point infinity of c,0);
-draw fullcircle scaled 1/4r; drawarrow xx; drawarrow yy;
-drawoptions();
-label.rt (btex $x$ etex, point 1 of xx);
-label.top(btex $y$ etex, point 1 of yy);
-% draw the cycloid on top of the axes
-draw c withcolor .67 red;
-
-% define a couple of related points:
-% z1 center of the blue wheel
-% z2 intersection of rim and cycloid
-t = 84; % if you change t then the wheel will "roll" along...
-z1 = (r*t/180*pi,r);
-z2 = (0,-r) rotated -t shifted z1;
-
-% draw the auxiliary lines
-draw (0,y2) -- z2 -- (x2,0) dashed withdots scaled .6;
-draw z2 -- z1 -- (x1,0);
-
-% draw the rolling circle
-draw fullcircle scaled 2r shifted z1 withcolor .67 blue;
-% mark the centre and intersection with cycloid
-fill fullcircle scaled dotlabeldiam shifted z1;
-fill fullcircle scaled dotlabeldiam shifted z2;
-
-% some arc arrows and labels
-path a[];
-z3 = (x1,5/12y1);
-a1 = z3 {left} .. {left rotatedabout(z1,-t)} z3 rotatedabout(z1,-t);
-drawarrow subpath (.05,.95) of a1;
-label.llft(btex $\theta$ etex, point .5 of a1);
-
-a2 = subpath (0,1) of reverse quartercircle scaled 2.2r shifted z1;
-drawarrow a2 rotatedabout(z1,-100);
-drawarrow a2 rotatedabout(z1,80);
-
-% finally all the other labels
-label.top(btex $r$ etex, .5[z1,z2]);
-label.lft(btex $y$ etex, (0,y2));
-% give all the x-axis labels a common baseline with mathstrut
-label.bot(btex $\mathstrut x$ etex, (x2,0));
-label.bot(btex $\mathstrut r\theta$ etex, (x1,0));
-label.bot(btex $\mathstrut 2\pi r$ etex, (r*2pi,0));
-% notice how nicely the coordinates work...
-dotlabel.top(btex $(\pi r,2r)$ etex, (pi*r,2r));
-% and a little alignment to finish
-label(btex $\vcenter{\halign{&$#$\hfil\cr
-x=r(\theta-\sin\theta)\cr
-y=r(1-\cos\theta)\cr}}$ etex,(4.2r,r));
diff --git a/info/drawing-with-metapost/src/cycloids-extra.mp b/info/drawing-with-metapost/src/cycloids-extra.mp
deleted file mode 100644
index af41bcdf46..0000000000
--- a/info/drawing-with-metapost/src/cycloids-extra.mp
+++ /dev/null
@@ -1,10 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-input cycloids-extra-code
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/cycloids.mp b/info/drawing-with-metapost/src/cycloids.mp
deleted file mode 100644
index 86788b5c46..0000000000
--- a/info/drawing-with-metapost/src/cycloids.mp
+++ /dev/null
@@ -1,10 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- input cycloids-code
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/deco-borders.mp b/info/drawing-with-metapost/src/deco-borders.mp
new file mode 100644
index 0000000000..3f00de1a9d
--- /dev/null
+++ b/info/drawing-with-metapost/src/deco-borders.mp
@@ -0,0 +1,58 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef plain_dots(expr boxpath, gap, radius, shade) =
+ save wd, ht, u, v; numeric wd, ht, u, v;
+ wd = arclength subpath (0,1) of boxpath;
+ ht = arclength subpath (1,2) of boxpath;
+ u = wd / round(wd/gap);
+ v = ht / round(ht/gap);
+ save B, R; picture B, R;
+ B = image(
+ draw (down -- right) xscaled 1/2u yscaled 1/2v
+ withpen pencircle scaled 1/4 radius
+ withcolor blue;
+ for x=1 upto round(wd/u):
+ pair p; p = point arctime x * u of boxpath of boxpath;
+ draw p
+ withpen pencircle scaled radius
+ withcolor shade;
+ draw p shifted -1/2(u, v)
+ withpen pencircle scaled radius
+ withcolor shade;
+ draw (left--down--right) xscaled 1/2u yscaled 1/2v shifted p
+ withpen pencircle scaled 1/4 radius
+ withcolor blue;
+ endfor);
+ R = image(for y=0 upto round(ht/v) - 1:
+ pair p; p = point arctime y * v of reverse boxpath of reverse boxpath;
+ draw p
+ withpen pencircle scaled radius
+ withcolor shade;
+ draw p
+ shifted 1/2(-u, v)
+ withpen pencircle scaled radius
+ withcolor shade;
+ draw (up -- left -- down) xscaled 1/2u yscaled 1/2v shifted p
+ withpen pencircle scaled 1/4 radius
+ withcolor blue;
+ endfor
+ draw p shifted 1/2(0, v) -- p shifted (-1/2u, v)
+ withpen pencircle scaled 1/4 radius
+ withcolor blue;
+ );
+ image(
+ draw B; draw B rotatedabout(center boxpath, 180);
+ draw R; draw R rotatedabout(center boxpath, 180);
+ )
+enddef;
+
+beginfig(1);
+ path bb; bb = unitsquare xscaled 233 yscaled 144;
+ draw plain_dots(bb, 8, 3, red);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/deco-borders.pdf b/info/drawing-with-metapost/src/deco-borders.pdf
new file mode 100644
index 0000000000..b75e2d8daf
--- /dev/null
+++ b/info/drawing-with-metapost/src/deco-borders.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/desargues.mp b/info/drawing-with-metapost/src/desargues.mp
deleted file mode 100644
index 27203d4961..0000000000
--- a/info/drawing-with-metapost/src/desargues.mp
+++ /dev/null
@@ -1,56 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-beginfig(1);
- z.P = 200 up rotated 21; z.A = 100 left rotated -21;
- z.B = origin; z.C = 90 right rotated 42;
-
- z.A' = 3/8[z.P, z.A];
- z.B' = 1/2[z.P, z.B];
- z.C' = 5/8[z.P, z.C];
-
- z.R = whatever [z.A, z.B] = whatever [z.A', z.B'];
- z.S = whatever [z.B, z.C] = whatever [z.B', z.C'];
- z.T = whatever [z.C, z.A] = whatever [z.C', z.A'];
-
- path t[];
- t1 = z.A--z.B--z.C--cycle;
- t2 = z.A'--z.B'--z.C'--cycle;
-
- fill t1 withcolor 7/8[red, white];
- fill t2 withcolor 7/8[blue, white];
- draw t1 withcolor 1/2 white;
- draw t2 withcolor 1/2 white;
-
- drawoptions(dashed withdots scaled 1/2);
- draw z.P--z.A;
- draw z.P--z.B;
- draw z.P--z.C;
-
- drawoptions(dashed evenly scaled 1/2);
- draw z.B--z.R--z.B';
- draw z.C--z.S--z.C';
- undraw subpath (1/4, 3/4) of (z.C'--z.T) withpen
- pencircle scaled 5;
- draw z.C--z.T--z.C';
- drawoptions(withcolor 2/3 red);
- draw 9/8[z.S,z.R] -- 9/8[z.R,z.S];
- picture pp; pp = thelabel("perspectrix", origin);
- draw pp shifted 7 down rotated angle (z.S-z.R)
- shifted 1/2[z.R, z.T];
- dotlabel.urt("perspector", z.P);
-
- drawoptions();
- dotlabel.lft (btex $A$ etex, z.A);
- dotlabel.llft(btex $B$ etex, z.B);
- dotlabel.lrt (btex $C$ etex, z.C);
- dotlabel.lft (btex $A'$ etex, z.A');
- dotlabel.llft(btex $B'$ etex, z.B');
- dotlabel.bot (btex $C'$ etex, z.C');
- label.rt(btex Desargues' Theorem etex, (x.C', 1/2(y.P+y.C')));
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/dice.mp b/info/drawing-with-metapost/src/dice.mp
deleted file mode 100644
index a68153004e..0000000000
--- a/info/drawing-with-metapost/src/dice.mp
+++ /dev/null
@@ -1,41 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\begin{mplibcode}
-beginfig(1);
-vardef dice(expr pip_count, pip_color) =
- save d,r,p, ul, ur, lr, ll;
- r=1/8; path d; picture p;
- %d = (for i=0 upto 3: subpath (r+i,1+i-r) of unitsquare .. endfor cycle) scaled 30;
- d = for i=0 upto 3: quartercircle scaled 3 shifted (15,15) rotated 90i -- endfor cycle;
- p = image(draw fullcircle scaled 6; fill fullcircle scaled 6 withcolor pip_color);
- pair ul, ur, ll, lr;
- ul = 1/5[ulcorner d, lrcorner d];
- lr = 4/5[ulcorner d, lrcorner d];
- ur = 1/5[urcorner d, llcorner d];
- ll = 4/5[urcorner d, llcorner d];
- image(fill d withcolor background; draw d;
- if odd(pip_count):
- draw p shifted center d;
- fi;
- if pip_count > 1:
- draw p shifted ul;
- draw p shifted lr;
- fi;
- if pip_count > 3:
- draw p shifted ur;
- draw p shifted ll;
- fi;
- if pip_count = 6:
- draw p shifted 1/2[ul,ur];
- draw p shifted 1/2[ll,lr];
- fi)
-enddef;
-
-beginfig(1);
-for i=0 upto 4:
- draw dice(1+floor uniformdeviate 6, red) rotated (2 normaldeviate) shifted (36i,0);
-endfor
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/dice.pdf b/info/drawing-with-metapost/src/dice.pdf
deleted file mode 100644
index e5fc396365..0000000000
--- a/info/drawing-with-metapost/src/dice.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/double-dragon.mp b/info/drawing-with-metapost/src/double-dragon.mp
deleted file mode 100644
index a701cbe8a0..0000000000
--- a/info/drawing-with-metapost/src/double-dragon.mp
+++ /dev/null
@@ -1,57 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\mplibnumbersystem{double}
-\begin{mplibcode}
-beginfig(1);
-
-vardef zinverse(expr z) = 1/abs z * dir - angle z enddef;
-
-vardef fizz(expr X) =
- pair m, n;
- m = right;
- n = origin;
- numeric a, x;
- x = X;
- forever:
- exitif x = 0;
- m := m zscaled zinverse((-1, 1));
- a := x mod 2;
- n := n + a * m;
- x := x div 2;
- endfor
- n
-enddef;
-input colorbrewer-rgb
-color shade[];
-shade0 = Reds 5 4; shade1 = Oranges 5 4;
-shade2 = Greens 5 4; shade3 = Blues 5 4;
-
-beginfig(1);
- numeric s, t; s = 256; t = 4;
- for n=0 upto (s/t*s/t-1):
- numeric h, v;
- h = floor 1/8 (n mod 32);
- v = n mod 4;
- fill fullcircle scaled t shifted (fizz(n) scaled s)
- withcolor (1/2 + 1/8 v)[white, shade[h]];
- endfor;
- path xx, yy;
- xx = (left--right) scaled (s+8);
- yy = xx rotated 90;
- for i=-1 upto 1:
- draw xx shifted (0, s*i) withpen pencircle scaled 1/8;
- draw yy shifted (s*i, 0) withpen pencircle scaled 1/8;
- endfor
- dotlabel.lrt(btex $-1-i$ etex, (-1, -1) scaled s);
- dotlabel.lrt(btex $-1$ etex, (-1, 0) scaled s);
- dotlabel.lrt(btex $-1+i$ etex, (-1, 1) scaled s);
- dotlabel.lrt(btex $-i$ etex, (0, -1) scaled s);
- dotlabel.lrt(btex $+i$ etex, (0, 1) scaled s);
- dotlabel.lrt(btex $+1-i$ etex, (1, -1) scaled s);
- dotlabel.lrt(btex $+1$ etex, (1, 0) scaled s);
- dotlabel.lrt(btex $+1+i$ etex, (1, 1) scaled s);
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/double-dragon.pdf b/info/drawing-with-metapost/src/double-dragon.pdf
deleted file mode 100644
index ccede3d7c5..0000000000
--- a/info/drawing-with-metapost/src/double-dragon.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/draw-picture.mp b/info/drawing-with-metapost/src/draw-picture.mp
deleted file mode 100644
index 16c40d8a49..0000000000
--- a/info/drawing-with-metapost/src/draw-picture.mp
+++ /dev/null
@@ -1,73 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- numeric s; s = 21;
- path alpha;
- alpha = ((-2s, s) {right}
- .. halfcircle rotated -90 scaled 2s shifted (2s, 0)
- .. {left} (-2s, -s)) shifted (s*left);
-
- vardef overdraw(expr a, b, r, P, shade) =
- linecap := butt;
- undraw subpath (a+r, b-r) of P withpen pencircle scaled 2;
- draw subpath (a, b) of P withcolor shade;
- enddef;
-
- picture cb; cb = image(
- draw alpha withcolor 2/3 red;
- undraw alpha rotated 180 withpen pencircle scaled 2;
- draw alpha rotated 180 withcolor 2/3 blue;
- overdraw(0.21, 0.36, 0.02, alpha, 2/3 red);
- overdraw(0.67, 0.86, 0.02, alpha, 2/3 red);
- overdraw(3.4, 4.3, 0.1, alpha, 2/3 red);
- overdraw(5.4, 5.6, 0.02, alpha, 2/3 red);
- overdraw(5.4, 5.6, 0.02, alpha rotated 180, 2/3 blue);
- );
-
- picture P[];
-
- P1 = image(draw cb; label.rt("\texttt{draw cb;}", point 3/2 of bbox currentpicture));
- P2 = image(draw cb withpen pencircle scaled 4; label.rt("\texttt{draw cb withpen pencircle scaled 4;}", point 3/2 of bbox currentpicture));
- P3 = image(draw cb withcolor 1/2; label.rt("\texttt{draw cb withcolor 1/2;}", point 3/2 of bbox currentpicture));
- P4 = image(draw cb withpen pencircle scaled 4 withcolor 1/2; label.rt("\texttt{draw cb withpen pencircle scaled 4 withcolor 1/2;}", point 3/2 of bbox currentpicture));
- P5 = image(
- color bagel; bagel = 1/256(187, 146, 79);
- for i=4 step -1/4 until 1/2:
- draw cb withpen pencircle scaled i
- withcolor (i/4)[white, bagel];
- endfor
- label.rt(btex \vbox{\halign{\texttt{#}\cr
- for i=4 step -1/4 until 1/2:\cr
- \quad draw cb withpen pencircle scaled i \cr
- \qquad withcolor sqrt(i/4)[white, bagel];\cr
- endfor\cr}} etex, point 3/2 of bbox currentpicture);
- );
-
- P6 = image(
- for e within cb:
- draw pathpart e withpen penpart e scaled 4
- withcolor 7/8[colorpart e, background];
- endfor
- label.rt(btex \vbox{\halign{\texttt{#}\cr
- for e within cb:\cr
- \quad draw pathpart e withpen penpart e scaled 4\cr
- \qquad withcolor 7/8[colorpart e, background];\cr
- endfor\cr}} etex, point 3/2 of bbox currentpicture);
- );
-
- for i=1 upto 6:
- if known P[i]:
- pair p; p = 60i * down;
- label.rt(P[i], p);
- fill superellipse(right, up, left, down, 0.8) scaled 6 shifted p
- withcolor 2/3;
- label("\textsf{" & decimal i & "}", p) withcolor white;
- fi;
- endfor
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/draw-picture.pdf b/info/drawing-with-metapost/src/draw-picture.pdf
deleted file mode 100644
index 6eb8f7dbff..0000000000
--- a/info/drawing-with-metapost/src/draw-picture.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/dwmpcode.sty b/info/drawing-with-metapost/src/dwmpcode.sty
index ccc13d95a8..35efab9489 100644
--- a/info/drawing-with-metapost/src/dwmpcode.sty
+++ b/info/drawing-with-metapost/src/dwmpcode.sty
@@ -2,11 +2,13 @@
\ProvidesPackage{dwmpcode}[2021/12/30 v0.01 Code setting in DwMP]
\RequirePackage{listings}
\RequirePackage{xcolor}
+\RequirePackage{luamplib}
\definecolor{textblue}{rgb}{.2,.2,.7}
\definecolor{textred}{rgb}{0.54,0,0}
\definecolor{textgreen}{rgb}{0,0.43,0}
\definecolor{squash}{rgb}{0.793, 0.359, 0.05}
\definecolor{carrot}{rgb}{0.934, 0.445, 0.082}
+\definecolor{purple}{rgb}{0.398, 0.008, 0.234}
\def\red#1{\textcolor{textred}{#1}}
\def\blue#1{\textcolor{textblue}{#1}}
\def\green#1{\textcolor{textgreen}{#1}}
@@ -16,6 +18,7 @@ basicstyle=\ttfamily,
keywordstyle=\color{textblue},
keywordstyle=[5]\color{squash},
keywordstyle=[6]\color{carrot},
+keywordstyle=[7]\color{purple},
commentstyle=\color{textred},
stringstyle=\color{textgreen},
frame=none,
@@ -23,13 +26,85 @@ columns=fullflexible,
keepspaces=true,
xleftmargin=\parindent,
showstringspaces=false,
-morekeywords={cmykcolor, step, eps, exitif, rotatedabout},
-morestring=[s]{btex}{etex}
+% keywords[1] = Syntax primitive + plain sugar
+keywords=[1]{beginfig, begingroup, bye, controls, curl, verbatimtex,%
+ cycle, def, delimiters, downto, else, elseif, end, enddef, endfig,%
+ endfor, endgroup, etex, exitif, exitunless, expr, fi, for, forever,%
+ forsuffixes, if, input, numtok, outer, primary, primarydef, range,%
+ relax, scantokens, secondary, secondarydef, step, suffix, tension,%
+ tertiary, tertiarydef, text, thru, until, upto, vardef, within},%
+% keywords[2] = Operators - nullary, unary, binary, thing x of y
+keywords=[2]{abs, and, angle, arclength, arctime, ASCII, bbox,%
+ blackpart, bluepart, bounded, byte, ceiling, center, char,%
+ clipped, colormodel, colorpart, cosd, counterclockwise, cutafter,%
+ cutbefore, cyanpart, dashpart, decimal, dir, direction,%
+ directionpoint, directiontime, div, dotprod, false, filled, floor,%
+ fontpart, fontsize, glyph, gobbled, greenpart, greypart, hex,%
+ infont, intersectionpoint, intersectiontimes, inverse, known,%
+ length, llcorner, lrcorner, magentapart, makepath, makepen,%
+ mexp, mlog, mod, normaldeviate, not, nullpen, nullpicture, oct,%
+ odd, of, or, pathpart, pencircle, penoffset, penpart, point,%
+ postcontrol, precontrol, readfrom, redpart, reflectedabout,%
+ reverse, rotated, rotatedabout, rotatedaround, round, scaled,%
+ shifted, sind, slanted, softjoin, sqrt, str, stroked, subpath,%
+ substring, textpart, textual, transformed, true,%
+ turningnumber, ulcorner, uniformdeviate, unitvector, unknown,%
+ urcorner, whatever, xpart, xscaled, xxpart, xypart, yellowpart,%
+ ypart, yscaled, yxpart, yypart, zscaled,
+ top, bot, lft, rt, ulft, urt, llft, lrt},%
+% keywords[3] = Commands
+keywords=[3]{addto, also, batchmode, clearit, clearpen, clearxy,%
+ clear_pen_memory, clip, closefrom, contour, cutdraw, dotlabel,%
+ doublepath, draw, drawarrow, drawdblarrow, drawdot, drawoptions,%
+ errhelp, errmessage, errorstopmode, filenametemplate, fill,%
+ filldraw, fontmapfile, fontmapline, interim, label, let,%
+ loggingall, makelabel, message, newinternal, nonstopmode,%
+ penstroke, pickup, randomseed, readstring, save, savepen,%
+ scrollmode, setbounds, shipit, shipout, show, showdependencies,%
+ showtoken, showvariable, special, to, tracingall, tracingnone,%
+ undraw, undrawdot, unfill, unfilldraw, write},%
+% keywords[4] = Specials, fancy macros, etc
+keywords=[4]{boxit, boxjoin, bpath, buildcycle, circleit, dashed,%
+ dashpattern, decr, dotlabels, drawboxed, drawboxes, drawunboxed,%
+ erase, fixpos, fixsize, flex, gobble, hide, image, incr, interact,%
+ interpath, labels, magstep, max, min, off, on, penlabels, penpos,%
+ solve, stop, superellipse, takepower, tensepath, thelabel,%
+ withcmykcolor, withcolor, withgreyscale, withoutcolor, withpen,%
+ withpostscript, withprescript, withrgbcolor, withalpha, z},%
+% keywords[5] = Predefined variables
+keywords=[5]{ahangle, ahlength, arrowhead, background, bboxmargin,%
+ charcode, circmargin, currentpen, currentpicture, cuttings, day,%
+ defaultcolormodel, defaultdx, defaultdy, defaultfont, defaultpen,%
+ defaultscale, dotlabeldiam, eps, extra_beginfig, extra_endfig,%
+ hour, hppp, jobname, join_radius, labeloffset, laboff, labxf,%
+ labyf, linecap, linejoin, minute, miterlimit, month, mpprocset,%
+ numberprecision, numbersystem, outputfilename, outputformat,%
+ outputformatoptions, outputtemplate, pausing, pen_bot, pen_lft,%
+ pen_rt, pen_top, prologues, restoreclipcolor, showstopping, time,%
+ tolerance, tracingcapsules, tracingchoices, tracingcommands,%
+ tracingequations, tracinglostchars, tracingmacros, tracingonline,%
+ tracingoutput, tracingrestores, tracingspecs, tracingstats,%
+ tracingtitles, troffmode, truecorners, vppp, warningcheck, year},%
+% keywords[6] = Constants
+keywords=[6]{base_name, base_version, beveled, black,%
+ blankpicture, blue, bp, butt, cc, cm, dd, ditto, down, EOF,%
+ epsilon, evenly, fullcircle, green, halfcircle, identity, in, left,%
+ mitered, mm, mpversion, origin, pc, penrazor, penspeck,%
+ pensquare, pt, quartercircle, red, right, rounded, squared,%
+ unitsquare, up, white, withdots, infinity},%
+% keywords[7] = Types
+keywords=[7]{boolean, cmykcolor, color, numeric, pair, path, pen,%
+ picture, rgbcolor, string, transform},%
+sensitive=true,%
+alsoother={0123456789$@},%
+morestring=[s]{verbatimtex}{etex},%
+morestring=[s]{btex}{etex}%
}}
\lstnewenvironment{smallcode}[1][]{\mpstyle\lstset{basicstyle=\small\ttfamily,#1}}{}
\lstnewenvironment{code}[1][]{\mpstyle\lstset{#1}}{}
\newcommand\mpexternal[2][]{{\mpstyle\lstinputlisting[#1]{#2}}}
-\newcommand\mpl[1]{{\mpstyle\lstinline!#1!}}
+\newcommand\smallmpexternal[2][]{{\mpstyle\lstinputlisting[basicstyle=\small\ttfamily,#1]{#2}}}
+\newcommand\mpl[1]{{\normalfont\mpstyle\lstinline!#1!}}
%
\newcommand\texstyle{\lstset{
language=[LaTeX]Tex,
@@ -42,8 +117,21 @@ columns=fullflexible,
keepspaces=true,
xleftmargin=\parindent,
showstringspaces=false,
+morekeywords={everymplib, everyendmplib, setmainfont,
+mplibtextextlabel, mplibnumbersystem, mplibsetformat, mplibshowlog},
}}
\lstnewenvironment{texcode}[1][]{\texstyle\lstset{basicstyle=\small\ttfamily,#1}}{}
\newcommand\txl[1]{{\texstyle\lstinline!#1!}}
+\newcommand\texternal[2][]{{\texstyle\lstinputlisting[#1]{#2}}}
+\newcommand\smalltexternal[2][]{{\texstyle\lstinputlisting[basicstyle=\small\ttfamily,#1]{#2}}}
+%
+% Labels..
+%
+\newcommand\sep[1]{$\vcenter{\begin{mplibcode}
+picture T; T = thelabel(TEX("\ttfamily " & #1), origin); interim bboxmargin := 3; path p; p = bbox T;
+path S; S = superellipse(point 3/2 of p, point 5/2 of p, point 7/2 of p, point 1/2 of p, 0.78);
+string x; x = substring (0, 1) of #1;
+fill S withcolor if x = "m": 7/8[red, white] elseif x = "c": 7/8[blue, white] else: white fi;
+draw S; draw T;\end{mplibcode}}$}
%
\endinput
diff --git a/info/drawing-with-metapost/src/eggs-357.mp b/info/drawing-with-metapost/src/eggs-357.mp
index 746638a83c..0b3117dde4 100644
--- a/info/drawing-with-metapost/src/eggs-357.mp
+++ b/info/drawing-with-metapost/src/eggs-357.mp
@@ -7,26 +7,18 @@ input eggs-common
beginfig(1);
path base, cup, cap, egg;
-
base = fullcircle scaled 180;
-z0 = origin;
z1 = point -2/3 of base;
z2 = point 2/3 of base;
z3 = point 10/3 of base;
z4 = point 14/3 of base;
-z5 = 1/2[z2, z3];
-z6 = 1/2[z4, z1];
-
-numeric a, b, c;
-a = abs(z3 - z1);
-b = a - abs(z4 - z6);
-c = a - abs(z4 - z5);
-
-cup = subpath (4, 8) of fullcircle scaled 2b shifted z6;
-cap = fullcircle scaled 2c shifted z5
- cutbefore (z5 -- 2[z4, z5])
- cutafter (z5 -- 2[z1, z5]);
-
+z5 = 1/2[z2, z3]; z6 = 1/2[z4, z1];
+numeric a, b;
+a = abs(z3-z1) - abs(z4-z6);
+b = abs(z3-z1) - abs(z4-z5);
+cup = subpath (4, 8) of fullcircle scaled 2a shifted z6;
+cap = fullcircle scaled 2b shifted z5
+ cutbefore (z5 -- 2[z4, z5]) cutafter (z5 -- 2[z1, z5]);
egg = point 4 of cup {up} .. cap .. {down} cup & cycle;
fill egg withpen pencircle scaled 2 withcolor eggshell;
@@ -39,7 +31,7 @@ label.lft("$\scriptstyle \sqrt 4 $", 10 down);
label.ulft("$\scriptstyle \sqrt 7$", 7/16[z4, z5]);
draw base;
draw z1 -- z2 -- z3 -- z4 -- z6 -- z5;
-draw z0 withpen pencircle scaled 2;
+draw origin withpen pencircle scaled 2;
drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
draw point 0 of egg -- point 4 of egg;
draw z4 -- point 1 of egg;
diff --git a/info/drawing-with-metapost/src/eggs-357.pdf b/info/drawing-with-metapost/src/eggs-357.pdf
index 1f445d9698..0d6c73c8d5 100644
--- a/info/drawing-with-metapost/src/eggs-357.pdf
+++ b/info/drawing-with-metapost/src/eggs-357.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/eggs-five-better.mp b/info/drawing-with-metapost/src/eggs-five-better.mp
index 472f3ab0a3..1a4d232335 100644
--- a/info/drawing-with-metapost/src/eggs-five-better.mp
+++ b/info/drawing-with-metapost/src/eggs-five-better.mp
@@ -3,7 +3,7 @@
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
-numeric a; a = 56;
+numeric a; a = 56;
path r[]; % the rings
r1 = fullcircle scaled 2a shifted (0, -3/2 a);
r2 = fullcircle scaled 2a shifted (0, -1/2 a);
@@ -11,7 +11,6 @@ r3 = fullcircle scaled 2a shifted (0, +1/2 a);
r4 = fullcircle scaled 2a shifted (0, +3/2 a);
r5 = r2 rotatedabout(point 2 of r2, -60);
r6 = r2 rotatedabout(point 2 of r2, +60);
-
pair o[]; % the centres of rotation for each arc
o1 = point 6 of r5;
o2 = point 2 of r3;
@@ -21,13 +20,11 @@ o8 = whatever[o1, point 2-4/3 of r2] = whatever[o2, point 2+4/3 of r1];
o6 = 1/2[point 2-4/3 of r1, point 2+4/3 of r1];
o5 = whatever[o6, point 2-4/3 of r3] = whatever[o4, point 2+4/3 of r1];
o7 = whatever[o6, point 2+4/3 of r3] = whatever[o8, point 2-4/3 of r1];
-
pair u[], t[]; % directions and points for the egg
u0 = (o8 - o1) rotated 90; t0 = directionpoint u0 of r6;
u1 = (o2 - o1) rotated 90; t1 = directionpoint u1 of r4;
u2 = (o2 - o3) rotated 90; t2 = directionpoint u2 of r4;
u3 = (o4 - o3) rotated 90; t3 = directionpoint u3 of r5;
-
u4 = (o5 - o4) rotated 90;
u5 = (o6 - o5) rotated 90;
u6 = (o6 - o7) rotated 90;
@@ -37,8 +34,7 @@ t5 = directionpoint u5 of fullcircle scaled 2 abs (t4 - o5) shifted o5;
t6 = directionpoint u6 of fullcircle scaled 2 abs (t5 - o6) shifted o6;
t7 = directionpoint u7 of fullcircle scaled 2 abs (t6 - o7) shifted o7;
-path egg;
-egg = for i=0 upto 7: t[i] {u[i]} .. endfor cycle;
+path egg; egg = for i=0 upto 7: t[i] {u[i]} .. endfor cycle;
input eggs-common
diff --git a/info/drawing-with-metapost/src/eggs-five-better.pdf b/info/drawing-with-metapost/src/eggs-five-better.pdf
index bf092abbca..3a94369729 100644
--- a/info/drawing-with-metapost/src/eggs-five-better.pdf
+++ b/info/drawing-with-metapost/src/eggs-five-better.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/eggs-four-point.mp b/info/drawing-with-metapost/src/eggs-four-point.mp
index e168217aad..13b67c08fe 100644
--- a/info/drawing-with-metapost/src/eggs-four-point.mp
+++ b/info/drawing-with-metapost/src/eggs-four-point.mp
@@ -9,13 +9,16 @@ beginfig(1);
path egg, a, b, c, d;
a = fullcircle scaled 80;
b = a scaled 2 shifted point 6 of a;
-c = halfcircle scaled 2 (abs(point 0 of a - point 5 of b) - abs(point 0 of a));
-d = fullcircle scaled 2 abs(point 2 of a - point 2 of c) shifted point 2 of c;
-egg = point 0 of c {up} .. subpath (1,3) of d .. {down} point 4 of c .. subpath (5, 7) of b .. cycle;
+c = halfcircle
+ scaled 2 (abs(point 0 of a - point 5 of b) - abs(point 0 of a));
+d = fullcircle
+ scaled 2 abs(point 2 of a - point 2 of c) shifted point 2 of c;
+egg = point 0 of c {up} .. subpath (1,3) of d .. {down} point 4 of c
+ .. subpath (5, 7) of b .. cycle;
fill egg withpen pencircle scaled 2 withcolor 3/4[1/4[red, green], white];
picture P; P = currentpicture;
-drawoptions(withpen pencircle scaled 1/4 withcolor darker_eggshell);
+drawoptions(withpen pencircle scaled 1/4 withcolor dark_eggshell);
draw a; draw b; draw c; draw d;
drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
draw point 0 of c -- point 3 of egg;
diff --git a/info/drawing-with-metapost/src/eggs-four-point.pdf b/info/drawing-with-metapost/src/eggs-four-point.pdf
index ffbf1a3438..d86353034b 100644
--- a/info/drawing-with-metapost/src/eggs-four-point.pdf
+++ b/info/drawing-with-metapost/src/eggs-four-point.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/eggs-fried.mp b/info/drawing-with-metapost/src/eggs-fried.mp
index 2c8c6d7226..6acf838c55 100644
--- a/info/drawing-with-metapost/src/eggs-fried.mp
+++ b/info/drawing-with-metapost/src/eggs-fried.mp
@@ -4,29 +4,20 @@
\begin{mplibcode}
beginfig(1);
path yolk, base;
-color cooked_egg_yolk, cooked_egg_white;
-cooked_egg_yolk = 1/256(216, 136, 49);
-cooked_egg_white = 1/256(235, 237, 233);
-
-vardef fried_egg(expr r) =
+color cooked_egg_yolk; cooked_egg_yolk = 1/256(216, 136, 49);
+color cooked_egg_white; cooked_egg_white = 1/256(235, 237, 233);
+vardef fried_egg(expr r) = image(
save base, yolk; path base, yolk;
yolk = for i=0 upto 17: (r + 1/8 normaldeviate) * dir 20i .. endfor cycle;
base = (for i=0 upto 17: (2r + 1/8r * normaldeviate) * dir 20i .. endfor cycle)
- shifted (uniformdeviate r/2, uniformdeviate r/2);
- image(
- fill base withcolor cooked_egg_white;
- fill yolk withcolor cooked_egg_yolk;
- fill subpath (6.7, 9.6) of yolk scaled 0.8 --
- subpath (9.6, 6.7) of yolk scaled 0.66 -- cycle
- withcolor 1/2[cooked_egg_yolk, white];
- )
-enddef;
-
-for i=0 upto 1:
- draw fried_egg(40) shifted 120 dir 120i;
-endfor
-
-
+ shifted (uniformdeviate r/2, uniformdeviate r/2);
+ fill base withcolor cooked_egg_white;
+ fill yolk withcolor cooked_egg_yolk;
+ fill subpath (6.7, 9.6) of yolk scaled 0.8 --
+ subpath (9.6, 6.7) of yolk scaled 0.66 -- cycle
+ withcolor 1/2[cooked_egg_yolk, white]
+) enddef;
+for i=0 upto 1: draw fried_egg(40) shifted 120 dir 120i; endfor
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/eggs-fried.pdf b/info/drawing-with-metapost/src/eggs-fried.pdf
index b75e01b5bb..62e9a8c6dd 100644
--- a/info/drawing-with-metapost/src/eggs-fried.pdf
+++ b/info/drawing-with-metapost/src/eggs-fried.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/eggs-gold.mp b/info/drawing-with-metapost/src/eggs-gold.mp
index 6c13a6afb3..f41b8dc3be 100644
--- a/info/drawing-with-metapost/src/eggs-gold.mp
+++ b/info/drawing-with-metapost/src/eggs-gold.mp
@@ -6,29 +6,21 @@
input eggs-common
beginfig(1);
-path base;
-base = fullcircle scaled 200;
-
-pair m, n, n', p;
-path aa, bb;
-
-m = 1/2 point 0 of base;
-aa = halfcircle scaled 2 abs (point 2 of base - m) shifted m cutbefore (origin -- 1000 up);
-n = point infinity of aa;
-n' = n reflectedabout(up, down);
+path base, aa, bb; pair m, n, n';
+base = fullcircle scaled 200; m = 1/2 point 0 of base;
+aa = halfcircle scaled 2 abs (point 2 of base - m)
+ shifted m cutbefore (origin -- 1000 up);
+n = point infinity of aa; n' = n reflectedabout(up, down);
bb = subpath (0, 2) of base shifted n cutafter (origin -- 1000 up);
-p = point infinity of bb;
-
-path dome;
-path cap, cup, egg;
+path dome, cap, cup, egg;
dome = fullcircle
scaled 2 (abs(n - point 0 of base) - abs(n - point 0 of bb))
- shifted p;
+ shifted point length bb of bb;
cap = dome
cutbefore (point 4 of bb -- 2[n, point 4 of bb])
cutafter (point 4 of bb -- 2[n', point 4 of bb]);
cup = subpath (4, 8) of base;
-path egg; egg = point 4 of cup {up} .. cap .. {down} cup & cycle;
+egg = point 4 of cup {up} .. cap .. {down} cup & cycle;
fill egg withpen pencircle scaled 2 withcolor eggshell;
picture P; P = currentpicture;
@@ -40,7 +32,6 @@ draw base; draw dome;
label.bot("$m$", m);
label.ulft("$n$", n);
label.urt("$n'$", n');
-% label.lft("$p$", p);
drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
draw n -- point 1 of egg;
@@ -48,7 +39,7 @@ draw n' -- point 3 of egg;
draw point 0 of egg -- point 4 of egg;
draw egg;
-forsuffixes $=n, n', p, origin: draw $ withpen pencircle scaled 2; endfor
+forsuffixes $=n, n', origin: draw $ withpen pencircle scaled 2; endfor
draw m withpen pencircle scaled 2 withcolor dark_eggshell;
draw numbered_points(egg);
diff --git a/info/drawing-with-metapost/src/eggs-gold.pdf b/info/drawing-with-metapost/src/eggs-gold.pdf
index 171112387e..b13c73d735 100644
--- a/info/drawing-with-metapost/src/eggs-gold.pdf
+++ b/info/drawing-with-metapost/src/eggs-gold.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/eggs-moss.mp b/info/drawing-with-metapost/src/eggs-moss.mp
index 6bd228dd4f..314d6959cf 100644
--- a/info/drawing-with-metapost/src/eggs-moss.mp
+++ b/info/drawing-with-metapost/src/eggs-moss.mp
@@ -11,21 +11,21 @@ d = fullcircle scaled 2 abs (point 2 of a - point 1 of b)
shifted point 2 of a;
egg = subpath (0, 1) of b .. point 2 of d ..
subpath (3, 4) of c .. subpath (5, 7) of a .. cycle;
+
beginfig(1);
-fill egg withpen pencircle scaled 2 withcolor eggshell;
-picture P; P = currentpicture;
-drawoptions(withpen pencircle scaled 1/4 withcolor dark_eggshell);
-draw a; draw d;
-drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
-draw point 1 of egg -- point 4 of egg --
- point 0 of egg -- point 3 of egg;
-draw egg;
-drawoptions(withpen pencircle scaled 2 withcolor 7/16);
-draw center a;
-draw center d;
-draw numbered_points(egg);
-drawoptions();
-draw P shifted 240 right;
+ fill egg withpen pencircle scaled 2 withcolor eggshell;
+ picture plain_egg; plain_egg = currentpicture;
+ drawoptions(withpen pencircle scaled 1/4 withcolor dark_eggshell);
+ draw a; draw d;
+ drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
+ draw point 1 of egg -- point 4 of egg --
+ point 0 of egg -- point 3 of egg;
+ draw egg;
+ drawoptions(withpen pencircle scaled 2 withcolor 7/16);
+ draw center a; draw center d;
+ draw numbered_points(egg);
+ drawoptions();
+ draw plain_egg shifted 240 right;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/eggs-perfect.mp b/info/drawing-with-metapost/src/eggs-perfect.mp
index 8f63cd6e8b..5388bf13b9 100644
--- a/info/drawing-with-metapost/src/eggs-perfect.mp
+++ b/info/drawing-with-metapost/src/eggs-perfect.mp
@@ -5,9 +5,8 @@
\begin{mplibcode}
input eggs-common
beginfig(1);
+
path egg;
-%egg = for t=90,105,120,135,150,165,-180,-165,-150,-135,-120,-105,-90,-75,-60,-45,-30,-15,0,15,30,45,60,75:
-%egg = for t=90, 135, 180, -135, -90, -45, 0, 45:
egg = for t=-180 step 15 until 180 - eps:
(0.78 cosd(1/4 t) * sind(t), -cosd(t)) ..
endfor cycle;
diff --git a/info/drawing-with-metapost/src/eggs-perfect.pdf b/info/drawing-with-metapost/src/eggs-perfect.pdf
index 9a291f9059..82364951ee 100644
--- a/info/drawing-with-metapost/src/eggs-perfect.pdf
+++ b/info/drawing-with-metapost/src/eggs-perfect.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/eggs-shaded.mp b/info/drawing-with-metapost/src/eggs-shaded.mp
index 3eeca4babe..dd4a6fd782 100644
--- a/info/drawing-with-metapost/src/eggs-shaded.mp
+++ b/info/drawing-with-metapost/src/eggs-shaded.mp
@@ -5,22 +5,18 @@
\begin{mplibcode}
path egg, spot;
egg = (for t=-180 step 15 until 180 - eps:
- (0.78 cosd(1/4 t) * sind(t), -cosd(t)) ..
+ (0.78 cosd(1/4 t) * sind(t), -cosd(t)) ..
endfor cycle) scaled 100;
-
spot = fullcircle scaled 4 shifted 3/4 point 3 of egg;
-
vardef fade_filled(expr egg, spot, dark, light, n) = image(
- for i = 0 upto n:
- fill interpath(i/n, egg, spot) withcolor ((i/n)**1/3)[dark,light];
- endfor)
+ for i = 0 upto n:
+ fill interpath(i/n, egg, spot) withcolor ((i/n)**1/3)[dark,light];
+ endfor)
enddef;
-
beginfig(1);
- color a, b;
- a = 1/256(150, 100, 60);
- b = 1/256(256, 220, 180);
- draw fade_filled(egg, spot, a, b, 256) rotated -30;
+ color a; a = 1/256(150, 100, 60);
+ color b; b = 1/256(256, 220, 180);
+ draw fade_filled(egg, spot, a, b, 256) rotated -30;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/eggs-shaded.pdf b/info/drawing-with-metapost/src/eggs-shaded.pdf
index ec2143cdc2..3f1a19b8cc 100644
--- a/info/drawing-with-metapost/src/eggs-shaded.pdf
+++ b/info/drawing-with-metapost/src/eggs-shaded.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/eggs-super.mp b/info/drawing-with-metapost/src/eggs-super.mp
index 89f8dda5b4..ae6e25bfa8 100644
--- a/info/drawing-with-metapost/src/eggs-super.mp
+++ b/info/drawing-with-metapost/src/eggs-super.mp
@@ -4,7 +4,8 @@
\begin{document}
\begin{mplibcode}
path egg;
-egg = (superellipse(right, 1.6 up, left, 1.2 down, 0.69)) scaled 100;
+egg = (superellipse(right, 1.6 up, left, 1.2 down, 0.69));
+egg := egg scaled 100;
input eggs-common
beginfig(1);
fill egg withpen pencircle scaled 2 withcolor eggshell;
diff --git a/info/drawing-with-metapost/src/eggs-super.pdf b/info/drawing-with-metapost/src/eggs-super.pdf
index 2022f1ed2d..f7530d2ff8 100644
--- a/info/drawing-with-metapost/src/eggs-super.pdf
+++ b/info/drawing-with-metapost/src/eggs-super.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/eggs-thom.mp b/info/drawing-with-metapost/src/eggs-thom.mp
index f38d86fcad..bbe2de4476 100644
--- a/info/drawing-with-metapost/src/eggs-thom.mp
+++ b/info/drawing-with-metapost/src/eggs-thom.mp
@@ -13,8 +13,7 @@ cap = subpath (0, 4) of fullcircle scaled 2r shifted (0, a)
cutbefore ((b, 0) -- (b, 2r))
cutafter ((-b, 0) -- (-b, 2r));
egg = point 4 of base {up} .. cap .. {down} base & cycle;
-% more naturally
-% base {up} .. cap .. {down} & cycle
+% more naturally "base {up} .. cap .. {down} & cycle"
% but then point 0 would not be at 3 o'clock
beginfig(1);
diff --git a/info/drawing-with-metapost/src/escher.mp b/info/drawing-with-metapost/src/escher.mp
deleted file mode 100644
index eac172d4f3..0000000000
--- a/info/drawing-with-metapost/src/escher.mp
+++ /dev/null
@@ -1,38 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\begin{mplibcode}
-beginfig(1);
-
-numeric s; s = 13;
-path atom;
-atom = origin
- -- (2s,0) rotated -30 -- (2s,0) rotated -30 + (0,s)
- -- ( s,0) rotated 30 -- ( s,0) rotated 30 + (0,s)
- -- (0,2s) -- cycle;
-
-picture p[];
-for i=0 upto 2:
- p[i] = image(
- fill atom rotated -120i withcolor (7/8 - 1/8i) ;
- draw atom rotated -120i;
- );
-endfor
-
-n = 13;
-for i=-n upto n:
- for j=-n upto n:
- forsuffixes $=0,1,2:
- draw p$ shifted ((3i*s,0) rotated -30
- + (0,floor(1/2i)*3s + 3j*s));
- endfor
- endfor
-endfor
-
-clip currentpicture to (unitsquare shifted -(1/2,1/2)
- xscaled 55.425s yscaled 30s);
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/escher.pdf b/info/drawing-with-metapost/src/escher.pdf
deleted file mode 100644
index 391fc26d5d..0000000000
--- a/info/drawing-with-metapost/src/escher.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/excircle.mp b/info/drawing-with-metapost/src/excircle.mp
deleted file mode 100644
index 01307ce3d0..0000000000
--- a/info/drawing-with-metapost/src/excircle.mp
+++ /dev/null
@@ -1,39 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-vardef through(expr a, b, o) =
- save t; numeric t; t = 1+o/abs(a-b);
- t[b,a] -- t[a,b]
-enddef;
-
-beginfig(1);
- pair A, B, C;
- A = origin; B = 233 dir 10; C = 144 dir 70;
- pair a, b, m, t;
- a = A + 22 unitvector (C-A) - 22 unitvector (B-A);
- b = B + 22 unitvector (A-B) + 22 unitvector (C-B);
- m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
- t-m = whatever * (B-A) rotated 90;
-
- drawoptions(dashed evenly scaled 1/4 withcolor 1/2 white);
- draw t -- m;
- draw unitsquare scaled 5 rotated angle (B-A) shifted t;
- draw through(A, m, 10);
- draw through(A, t, 10);
- draw through(B, m, 10);
- drawoptions();
- draw fullcircle scaled 2 abs (t-m) shifted m withcolor 2/3 blue;
- draw A--B--C--cycle;
- dotlabel.urt(btex $m$ etex, m);
- dotlabel.bot(btex $t$ etex, t);
- dotlabel.bot(btex $A$ etex, A);
- dotlabel.urt(btex $B$ etex, B);
- dotlabel.top(btex $C$ etex, C);
- dotlabel.urt(btex $a$ etex, a);
- dotlabel.top(btex $b$ etex, b);
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/explode.mp b/info/drawing-with-metapost/src/explode.mp
deleted file mode 100644
index 8d03d94846..0000000000
--- a/info/drawing-with-metapost/src/explode.mp
+++ /dev/null
@@ -1,31 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\usepackage{fontspec}
-\setmainfont{PlayfairDisplay-Black}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-randomseed:=2128.5073;
-beginfig(1);
-n = 40; r = 7 ; s = 44;
-path explosion, splash;
-explosion = for i=1 upto n:
- (s if odd(i): - else: + fi r + uniformdeviate r,0) rotated (i*360/n) --
-endfor cycle;
-
-splash = for i=1 upto n:
- (s if odd(i): - else: + fi r + uniformdeviate r,0) rotated (i*360/n) ..
-endfor cycle;
-splash := splash shifted (3s,0);
-
-fill explosion withcolor Oranges 7 4;
-draw explosion withpen pencircle scaled 2 withcolor Reds 7 7;
-label(TEX("\textbf{BOOM!}") scaled 1.6, center explosion) withcolor Reds 7 7;
-
-fill splash withcolor Blues 7 2;
-draw splash withpen pencircle scaled 2 withcolor Blues 7 7;
-label(TEX("\bfseries SPLAT!") scaled 1.6, center splash) withcolor Blues 7 7;
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/explode.pdf b/info/drawing-with-metapost/src/explode.pdf
deleted file mode 100644
index d5c1c094d9..0000000000
--- a/info/drawing-with-metapost/src/explode.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-addition-of-sines.mp b/info/drawing-with-metapost/src/func-addition-of-sines.mp
index d7f9a41db5..7b651e831d 100644
--- a/info/drawing-with-metapost/src/func-addition-of-sines.mp
+++ b/info/drawing-with-metapost/src/func-addition-of-sines.mp
@@ -19,40 +19,41 @@ vardef pi_sixths(expr n) =
enddef;
beginfig(1);
- numeric u, pi; u = 50; pi = 3.141592653589793;
+ numeric u, pi; u = 50; pi = 3.141592653589793;
- path xx, yy;
- xx = (3.5 left -- 4 right) scaled u;
- yy = (1.2 down -- 1.3 up) scaled u;
-
- path ss, tt, uu;
- ss = origin for x=1 upto 360: -- (x, sind(x)) endfor;
- tt = origin for x=1 upto 360: -- (x, 1/2 sind(3x)) endfor;
- uu = origin for x=1 upto 360: -- (x, ypart point x of ss + ypart point x of tt) endfor;
+ path xx, yy;
+ xx = (3.5 left -- 4 right) scaled u;
+ yy = (1.2 down -- 1.3 up) scaled u;
+
+ path ss, tt, uu;
+ ss = origin for x=1 upto 360: -- (x, sind(x)) endfor;
+ tt = origin for x=1 upto 360: -- (x, 1/2 sind(3x)) endfor;
+ uu = origin for x=1 upto 360:
+ -- (x, ypart point x of ss + ypart point x of tt)
+ endfor;
- forsuffixes $=ss, tt, uu:
- $ := $ shifted 360 left & $;
- $ := $ xscaled (pi/180) scaled u;
- $ := $ cutbefore yy shifted point 0 of xx
- cutafter yy shifted point 1 of xx;
- endfor
+ forsuffixes $=ss, tt, uu:
+ $ := $ shifted 360 left & $;
+ $ := $ xscaled (pi/180) scaled u;
+ $ := $ cutbefore yy shifted point 0 of xx
+ cutafter yy shifted point 1 of xx;
+ endfor
- draw ss withcolor 1/2[blue, white];
- draw tt withcolor 1/2[red, white];
- draw uu withcolor 1/4 green;
-
- label.top("$f(x)=sin(x)$", point 290 of ss) withcolor 1/2[blue, white];
- label.bot("$g(x)=\frac12 sin(3x)$", point 295 of tt) withcolor 1/2[red, white];
- label.urt("$f(x) + g(x)$", point 350 of uu) withcolor 1/4 green;
-
- drawarrow xx; label.rt("$x$", point 1 of xx);
- drawarrow yy; label.top("$y$", point 1 of yy);
-
- for i=-6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7:
- draw (down--up) scaled 2 shifted (pi * i/6 * u, 0);
- label.bot(pi_sixths(i), (pi * i/6 * u, -2));
- endfor
+ drawoptions(withcolor 3/4 blue);
+ draw ss; label.top("$f(x)=\sin(x)$", point 290 of ss);
+ drawoptions(withcolor 2/3 red);
+ draw tt; label.bot("$g(x)=\frac12 \sin(3x)$", point 295 of tt);
+ drawoptions(withcolor 1/4 green);
+ draw uu; label.urt("$f(x) + g(x)$", point 350 of uu);
+ drawoptions();
+
+ drawarrow xx; label.rt("$x$", point 1 of xx);
+ drawarrow yy; label.top("$y$", point 1 of yy);
+ for i=-6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7:
+ draw (down--up) scaled 2 shifted (pi * i/6 * u, 0);
+ label.bot(pi_sixths(i), (pi * i/6 * u, -2));
+ endfor
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/func-addition-of-sines.pdf b/info/drawing-with-metapost/src/func-addition-of-sines.pdf
index 29973d3b2a..2b992fb3ff 100644
--- a/info/drawing-with-metapost/src/func-addition-of-sines.pdf
+++ b/info/drawing-with-metapost/src/func-addition-of-sines.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-angles-lines.mp b/info/drawing-with-metapost/src/func-angles-lines.mp
new file mode 100644
index 0000000000..7c7c0a7dad
--- /dev/null
+++ b/info/drawing-with-metapost/src/func-angles-lines.mp
@@ -0,0 +1,53 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ numeric u; u = 1cm;
+ path xx; xx = (2 left -- 10 right) scaled u;
+ path yy; yy = (down -- 7 up) scaled u;
+
+ numeric theta, psi; psi = 28; theta = 50;
+ pair P, Q, H, N, M, T, L; P = (4, 3) scaled u;
+
+ path ell, tee, arc;
+ ell = (left--right) scaled 10u rotated theta shifted P cutbefore xx;
+ tee = (left--right) scaled 10u rotated psi shifted P cutbefore xx;
+ arc = subpath (1.6, 3.2) of halfcircle rotated -180 shifted 1/2 up
+ scaled 10u shifted P rotatedabout(P, psi);
+
+ Q = ell intersectionpoint subpath (1.5, 3) of arc;
+ H = P + whatever * dir psi;
+ xpart H = xpart Q = xpart M; ypart M = ypart N = 0;
+ xpart N = xpart P;
+ L = point 0 of ell;
+ T = point 0 of tee;
+
+ % now we can get with the drawing
+ draw arc withcolor 1/2 red;
+ draw P--N dashed withdots scaled 1/2;
+ draw Q--M dashed withdots scaled 1/2;
+ drawarrow xx; label.rt("$x$", point 1 of xx);
+ drawarrow yy; label.top("$y$", point 1 of yy);
+ drawoptions(withcolor 2/3 blue);
+ draw fullcircle scaled 32 shifted T cutafter tee;
+ draw fullcircle scaled 28 shifted L cutafter ell;
+ label("$\psi$", 24 right rotated 1/2 psi shifted T);
+ label("$\theta$", 20 right rotated 1/2 theta shifted L);
+ drawoptions();
+
+ % draw the lines trimmed neatly
+ path invisible_boundary;
+ z1 = point .95 of xx;
+ z2 = point .95 of yy;
+ invisible_boundary = z1--(x1,y2)--z2;
+ draw ell cutafter invisible_boundary;
+ draw tee cutafter invisible_boundary;
+
+ % and finally label the points.
+ forsuffixes @ = T, L, N, M: label.bot("$" & str @ & "$", @); endfor
+ forsuffixes @ = H, P, Q: dotlabel.lrt("$" & str @ & "$", @); endfor
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/angles-lines.pdf b/info/drawing-with-metapost/src/func-angles-lines.pdf
index e894f32f21..03b6f20b0e 100644
--- a/info/drawing-with-metapost/src/angles-lines.pdf
+++ b/info/drawing-with-metapost/src/func-angles-lines.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-epi-v-pie.mp b/info/drawing-with-metapost/src/func-epi-v-pie.mp
index cb36f02f6d..ba5cfcdc5b 100644
--- a/info/drawing-with-metapost/src/func-epi-v-pie.mp
+++ b/info/drawing-with-metapost/src/func-epi-v-pie.mp
@@ -6,8 +6,7 @@
beginfig(1);
numeric minx, maxx, s, u, v;
-minx = 13/8; s = 1/16; maxx = 19/4;
-u = 89; v = 3072;
+minx = 13/8; s = 1/16; maxx = 19/4; u = 89; v = 3072;
def f(expr x) = 1/256 mlog(x) / x enddef;
@@ -22,11 +21,9 @@ yy := yy shifted point 0 of ff shifted 20 left;
numeric pi, e, fpi, fe;
pi = 3.141592653589793 u; fpi = f(3.141592653589793) * v;
e = 2.718281828459045 u; fe = f(2.718281828459045) * v;
-
path ee, pp;
ee = (e, ypart point 0 of xx) -- (e, fe) -- (xpart point 0 of yy, fe);
pp = (pi, ypart point 0 of xx) -- (pi, fpi) -- (xpart point 0 of yy, fpi);
-
draw ee dashed withdots scaled 1/4 withcolor 2/3 red;
draw pp dashed withdots scaled 1/2 withcolor 2/3 red;
draw ff withcolor 3/4 blue;
@@ -37,11 +34,11 @@ for x=2 upto 4:
draw (down--up) scaled 2 shifted (x * u, ypart point 0 of xx);
label.bot("$" & decimal x & "$", (x * u, ypart point 0 of xx - 2));
endfor
-for y=31 upto 38:
- draw (left--right) scaled 2 shifted (xpart point 0 of yy, y/100*v);
+for y=.31, .32, .33, .34, .35, .36, .37, .38:
+ draw (left--right) scaled 2 shifted (xpart point 0 of yy, y*v);
endfor
-for y=32, 35, 38:
- label.lft("$" & decimal (y/100) & "$", (xpart point 0 of yy-2, y/100*v));
+for y=.32, .35, .38:
+ label.lft("$" & decimal y & "$", (xpart point 0 of yy-2, y*v));
endfor
drawoptions(withcolor 1/2 red);
diff --git a/info/drawing-with-metapost/src/func-epi-v-pie.pdf b/info/drawing-with-metapost/src/func-epi-v-pie.pdf
index 175bde4577..1f2319e7ab 100644
--- a/info/drawing-with-metapost/src/func-epi-v-pie.pdf
+++ b/info/drawing-with-metapost/src/func-epi-v-pie.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-exponential.mp b/info/drawing-with-metapost/src/func-exponential.mp
index bfea46f174..be627f057f 100644
--- a/info/drawing-with-metapost/src/func-exponential.mp
+++ b/info/drawing-with-metapost/src/func-exponential.mp
@@ -4,46 +4,39 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
-numeric u; u = 42;
-
-path xx, yy;
-xx = (-3u, 0) -- (5u, 0);
-yy = xx rotated 90;
-
-path ee, ll, nn;
-numeric minx, maxx, s;
-minx = -3; maxx = 1/256 mlog(4.5); s = 1/4;
-ee = (for x = minx step s until maxx - s:
+ numeric u, minx, s, maxx;
+ u = 42; minx = -3; s = 1/4; maxx = 1/256 mlog(4.5);
+ path xx; xx = (-3u, 0) -- (5u, 0);
+ path yy; yy = xx rotated 90;
+ path ee, ll, nn;
+ ee = (for x = minx step s until maxx - s:
(x, mexp(256x)){1, mexp(256x)} ...
-endfor (maxx, mexp(256 maxx)){1, mexp(256 maxx)}) scaled u;
-ll = ee reflectedabout(origin, dir 45);
-nn = (for x=1 step s until 4-s: (x, 1/x) ... endfor (4, 1/4)) scaled u;
-nn := reverse nn reflectedabout(origin, dir 45) & nn;
-
-draw unitsquare xscaled mexp(256) scaled u withcolor 7/8;
-draw unitsquare yscaled mexp(256) scaled u withcolor 7/8;
-
-path T[];
-numeric p; p = directiontime dir 45 of ee;
-T1 = (precontrol p of ee -- postcontrol p of ee) shifted - point p of ee scaled 1/2 u shifted point p of ee;
-T2 = (precontrol p of ll -- postcontrol p of ll) shifted - point p of ll scaled 1/2 u shifted point p of ll;
-drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
-draw T1; draw T2; draw interpath(1/2, T1, T2) dashed evenly;
-drawoptions();
-
-draw nn; label.urt("$1/x$", point 0 of nn);
-draw ee withcolor 2/3 blue; label.top("$e^x$", point infinity of ee) withcolor 2/3 blue;
-draw ll withcolor 3/4 red; label.top("$\ln(x)$", point infinity of ll) withcolor 3/4 red;
-drawarrow xx; label.rt("$x$", point 1 of xx);
-drawarrow yy; label.top("$y$", point 1 of yy);
-
-dotlabel.lft("$e$", (0, mexp(256) * u));
-dotlabel.bot("$e$", (mexp(256) * u, 0));
-dotlabel.ulft("$1$", (0, u));
-dotlabel.lrt("$1$", (u, 0));
-
-
+ endfor (maxx, mexp(256 maxx)){1, mexp(256 maxx)}) scaled u;
+ ll = ee reflectedabout(origin, dir 45);
+ nn = (for x=1 step s until 4-s: (x, 1/x) ... endfor (4, 1/4)) scaled u;
+ nn := reverse nn reflectedabout(origin, dir 45) & nn;
+ drawoptions(withcolor 7/8);
+ draw unitsquare xscaled mexp(256) scaled u;
+ draw unitsquare yscaled mexp(256) scaled u;
+ drawoptions(withcolor 3/4);
+ forsuffixes $ = ee, ll:
+ path T$; T$ = (left--right) scaled 2u rotated 45
+ shifted directionpoint dir 45 of $;
+ draw T$;
+ endfor
+ draw interpath(1/2, T.ee, T.ll) dashed evenly;
+ drawoptions(withcolor 2/3 blue);
+ draw ee; label.top("$e^x$", point infinity of ee);
+ drawoptions(withcolor 2/3 red);
+ draw ll; label.top("$\ln(x)$", point infinity of ll);
+ drawoptions();
+ draw nn; label.urt("$1/x$", point 0 of nn);
+ drawarrow xx; label.rt("$x$", point 1 of xx);
+ drawarrow yy; label.top("$y$", point 1 of yy);
+ dotlabel.lft("$e$", (0, mexp(256) * u));
+ dotlabel.bot("$e$", (mexp(256) * u, 0));
+ dotlabel.ulft("$1$", (0, u));
+ dotlabel.lrt("$1$", (u, 0));
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/func-exponential.pdf b/info/drawing-with-metapost/src/func-exponential.pdf
index eab1af76ed..0a40cec1fe 100644
--- a/info/drawing-with-metapost/src/func-exponential.pdf
+++ b/info/drawing-with-metapost/src/func-exponential.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-lemniscate.mp b/info/drawing-with-metapost/src/func-lemniscate.mp
index cf56cede6b..d22fff62d2 100644
--- a/info/drawing-with-metapost/src/func-lemniscate.mp
+++ b/info/drawing-with-metapost/src/func-lemniscate.mp
@@ -4,22 +4,20 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
-numeric a, c; c = 100; a = sqrt(2) * c;
-vardef f(expr x) = a * cosd(x) / (1 + sind(x) ** 2) enddef;
-vardef g(expr x) = f(x) * sind(x) enddef;
-numeric mint, maxt, s; mint = 0; s = 30; maxt = 360;
-path p;
-p = for t = mint step s until maxt - s:
+ numeric a, c; c = 100; a = sqrt(2) * c;
+ vardef f(expr x) = a * cosd(x) / (1 + sind(x) ** 2) enddef;
+ vardef g(expr x) = f(x) * sind(x) enddef;
+ numeric mint, maxt, s; mint = 0; s = 30; maxt = 360;
+ path p; p = for t = mint step s until maxt - s:
(f(t), g(t)) ...
-endfor cycle;
-draw p withcolor 3/4 blue;
-path xx, yy;
-xx = (left -- right) scaled 150;
-yy = (down -- up) scaled 55;
-drawarrow xx; label.rt("$x$", point 1 of xx);
-drawarrow yy; label.top("$y$", point 1 of yy);
-dotlabel.bot("$F_1$", c * left);
-dotlabel.bot("$F_2$", c * right);
+ endfor cycle;
+ draw p withcolor 3/4 blue;
+ path xx; xx = (left -- right) scaled 150;
+ path yy; yy = (down -- up) scaled 55;
+ drawarrow xx; label.rt("$x$", point 1 of xx);
+ drawarrow yy; label.top("$y$", point 1 of yy);
+ dotlabel.bot("$F_1$", c * left);
+ dotlabel.bot("$F_2$", c * right);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/func-linear-graph.mp b/info/drawing-with-metapost/src/func-linear-graph.mp
new file mode 100644
index 0000000000..fc71ccf60e
--- /dev/null
+++ b/info/drawing-with-metapost/src/func-linear-graph.mp
@@ -0,0 +1,51 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1); % Using \mplibtextextlabel{enable} ...
+ numeric u, m, m', b, b';
+ u = 1.44cm;
+ b = 3.6u; b' = b + 1/2 u;
+ m = -1; m' = 3/4 m;
+
+ path xx, yy;
+ xx = (left -- 5 right) scaled u;
+ yy = xx rotated 90;
+
+ numeric minx, maxx; path ff, gg;
+ minx = xpart point 1/16 of xx;
+ maxx = xpart point 15/16 of xx;
+ ff = (minx, minx * m + b) -- (maxx, maxx * m + b);
+ gg = (minx, minx * m' + b') -- (maxx, maxx * m' + b');
+
+ z0 = point 0.4 of ff;
+ z1 = point 0.54 of ff;
+ z1 0 = whatever [point 0 of gg, point 1 of gg]; x1 0 = x0;
+ z1 1 = whatever [point 0 of gg, point 1 of gg]; x1 1 = x1;
+
+ forsuffixes @=0, 1:
+ draw (x@, 0) -- z@ -- (0, y@) dashed evenly scaled 3/4;
+ draw z@ -- z1 @ -- (0, y1 @) dashed withdots scaled 1/2;
+ label.bot("$x_{" & decimal @ & "}$", (x@, 0));
+ label.lft("$y_{" & decimal @ & "}$", (0, y@));
+ label.lft("$y'_{" & decimal @ & "}$", (0, y1 @));
+ endfor
+
+ draw ff withcolor 2/3 red;
+ draw gg withcolor 3/4 blue;
+ drawarrow xx; drawarrow yy;
+
+ label.rt("$x$", point 1 of xx);
+ label.top("$y$", point 1 of yy);
+
+ dotlabel.urt("$b$", (0, b));
+ dotlabel.urt("$b'$", (0, b'));
+
+ draw thelabel("slope: $m=" & decimal m & "$", 7 up)
+ rotated angle (1, m) shifted point 2/3 of ff;
+ draw thelabel("slope: $m'=" & decimal m' & "$", 7 up)
+ rotated angle (1, m') shifted point 2/3 of gg;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/linear-graph.pdf b/info/drawing-with-metapost/src/func-linear-graph.pdf
index 5e511e976c..6397849ee3 100644
--- a/info/drawing-with-metapost/src/linear-graph.pdf
+++ b/info/drawing-with-metapost/src/func-linear-graph.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-maurer-rose.mp b/info/drawing-with-metapost/src/func-maurer-rose.mp
index afa0d85467..3ceb59ad41 100644
--- a/info/drawing-with-metapost/src/func-maurer-rose.mp
+++ b/info/drawing-with-metapost/src/func-maurer-rose.mp
@@ -4,28 +4,22 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
+ path r, k;
+ r = for t = 1 upto 360: cosd 2t * dir t .. endfor cycle;
+ r := r scaled 150;
+ k = for t = 1 upto 360: point 29t of r -- endfor cycle;
- numeric n; n = 2;
- path r; r = (for t=0 upto 360:
- cosd(n * t) * dir t ...
- endfor cycle) scaled 150;
+ draw k dashed withdots scaled 1/8
+ withpen pencircle scaled 1/4
+ withcolor 1/2[blue, white];
- numeric d; d = 29;
- path k; k = for t = 0 upto 360:
- point d * t mod 360 of r --
- endfor cycle;
-
- draw k dashed withdots scaled 1/8
- withpen pencircle scaled 1/4
- withcolor 1/2[blue, white];
- draw r withcolor 2/3 red;
-
- path xx, yy;
- xx = (left -- right) scaled 160;
- yy = (down -- up) scaled 160;
- drawarrow xx; label.rt("$x$", point 1 of xx);
- drawarrow yy; label.top("$y$", point 1 of yy);
+ draw r withcolor 2/3 red;
+ path xx, yy; % you might nor need the axes...
+ xx = (left -- right) scaled 160;
+ yy = (down -- up) scaled 160;
+ drawarrow xx; label.rt("$x$", point 1 of xx);
+ drawarrow yy; label.top("$y$", point 1 of yy);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/func-maurer-rose.pdf b/info/drawing-with-metapost/src/func-maurer-rose.pdf
index a4a94febe5..9fe81b5440 100644
--- a/info/drawing-with-metapost/src/func-maurer-rose.pdf
+++ b/info/drawing-with-metapost/src/func-maurer-rose.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-numbered-axes.mp b/info/drawing-with-metapost/src/func-numbered-axes.mp
new file mode 100644
index 0000000000..6e1ac43466
--- /dev/null
+++ b/info/drawing-with-metapost/src/func-numbered-axes.mp
@@ -0,0 +1,25 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+numeric u, v; u = 40; v = 29; path xx, yy;
+xx = (3/2 left -- 5 right) scaled u;
+yy = (3/2 down -- 4 up) scaled v;
+for x=-1, 1, 2, 3, 4:
+ draw yy shifted (x * u, 0) withcolor 7/8; % grid
+ draw (down--up) shifted (x * u, 0); % ticks
+ label(TEX("$" & decimal x & "$"), (x * u, -8));
+endfor
+for y=-1, 1, 2, 3:
+ draw xx shifted (0, y * v) withcolor 7/8; % grid
+ draw (left--right) shifted (0, y * v); % ticks
+ label(TEX("$" & decimal y & "$"), (-10, y * v));
+endfor
+drawarrow xx; label.rt(TEX("$x$"), point 1 of xx);
+drawarrow yy; label.top(TEX("$y$"), point 1 of yy);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/numbered-axes.pdf b/info/drawing-with-metapost/src/func-numbered-axes.pdf
index d8e68dab34..cbe7473d9c 100644
--- a/info/drawing-with-metapost/src/numbered-axes.pdf
+++ b/info/drawing-with-metapost/src/func-numbered-axes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-parametric.mp b/info/drawing-with-metapost/src/func-parametric.mp
index 7d86c3b2ab..6702b94d14 100644
--- a/info/drawing-with-metapost/src/func-parametric.mp
+++ b/info/drawing-with-metapost/src/func-parametric.mp
@@ -4,20 +4,14 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
-path p;
-numeric a, b, j, k; a = 144; b = 89; j = 3; k = 2;
-p = for t = 0 upto 360:
- (a * cosd(j * t), b * sind(k * t)) ...
-endfor cycle;
-
-draw p withcolor 2/3 red;
-
path xx, yy;
xx = (left -- right) scaled 150;
yy = (down -- up) scaled 100;
drawarrow xx; label.rt("$x$", point 1 of xx);
drawarrow yy; label.top("$y$", point 1 of yy);
-
+path p;
+p = for t = 0 upto 360: (144 cosd(3t), 89 sind(2t)) ... endfor cycle;
+draw p withcolor 2/3 red;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/func-parametric.pdf b/info/drawing-with-metapost/src/func-parametric.pdf
index 8f7bed75f4..d99f060b73 100644
--- a/info/drawing-with-metapost/src/func-parametric.pdf
+++ b/info/drawing-with-metapost/src/func-parametric.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-plain-axes.mp b/info/drawing-with-metapost/src/func-plain-axes.mp
new file mode 100644
index 0000000000..9e3bc3d5c5
--- /dev/null
+++ b/info/drawing-with-metapost/src/func-plain-axes.mp
@@ -0,0 +1,14 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+path xx, yy;
+xx = (left -- right) scaled 130;
+yy = (down -- up) scaled 80;
+drawarrow xx; label.rt(TEX("$x$"), point 1 of xx);
+drawarrow yy; label.top(TEX("$y$"), point 1 of yy);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/plain-axes.pdf b/info/drawing-with-metapost/src/func-plain-axes.pdf
index fc1a766613..b26770c505 100644
--- a/info/drawing-with-metapost/src/plain-axes.pdf
+++ b/info/drawing-with-metapost/src/func-plain-axes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-pulse.mp b/info/drawing-with-metapost/src/func-pulse.mp
index ae07cfd570..e5f5fd6073 100644
--- a/info/drawing-with-metapost/src/func-pulse.mp
+++ b/info/drawing-with-metapost/src/func-pulse.mp
@@ -3,33 +3,29 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-
+beginfig(1);
vardef pulse(expr w, h, d) =
-for i=0 upto 4: x[i] = w/4 * i; endfor
- y0 = y1 = 0;
- y3 = y4 = d;
- y2 = h;
- z0 .. 1/2[z0, z1] .. controls z1
- .. 1/2[z1, z2] .. controls z2
- .. 1/2[z2, z3] .. controls z3
- .. 1/2[z3, z4] .. z4
+ clearxy; % protect (x,y) values
+ x0 = 0; x1 = 1/4w; x2 = 1/2w; x3 = 3/4w; x4 = w;
+ y0 = 0; y1 = 0; y2 = h; y3 = d; y4 = d;
+ z0 .. 1/2[z0, z1] .. controls z1
+ .. 1/2[z1, z2] .. controls z2
+ .. 1/2[z2, z3] .. controls z3
+ .. 1/2[z3, z4] .. z4
enddef;
+path p; p = pulse(300, 100, -40); draw p withcolor 1/2 blue;
-beginfig(1);
- path p; p = pulse(300, 100, -40);
-
- draw point 0 of p -- postcontrol 1 of p -- postcontrol 2 of p -- postcontrol 3 of p -- point 5 of p
- dashed withdots scaled 1/2 withcolor 2/3 red;
- for i=1 upto 3: draw postcontrol i of p withpen pencircle scaled 2 withcolor 2/3 red; endfor
- label.lrt("$z_1$", postcontrol 1 of p) withcolor 2/3 red;
- label.top("$z_2$", postcontrol 2 of p) withcolor 2/3 red;
- label.llft("$z_3$", postcontrol 3 of p) withcolor 2/3 red;
-
- draw p withcolor 1/2 blue;
- draw p shifted 120 up withcolor 1/2 blue;
- for i=0 upto length p: draw point i of p withpen pencircle scaled 2; endfor
+picture pcon; pcon = image(
+ draw point 0 of p -- postcontrol 1 of p -- postcontrol 2 of p -- postcontrol 3 of p -- point 5 of p
+ dashed withdots scaled 1/2 withcolor 2/3 red;
+ for i=1 upto 3: draw postcontrol i of p withpen pencircle scaled 2 withcolor 2/3 red; endfor
+ label.lrt("$z_1$", postcontrol 1 of p) withcolor 2/3 red;
+ label.top("$z_2$", postcontrol 2 of p) withcolor 2/3 red;
+ label.llft("$z_3$", postcontrol 3 of p) withcolor 2/3 red;
+ draw p withcolor 1/2 blue;
+ for i=0 upto length p: draw point i of p withpen pencircle scaled 2; endfor
+); draw pcon shifted 120 down;
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/func-pulse.pdf b/info/drawing-with-metapost/src/func-pulse.pdf
index 6b60a628bd..a458c56e47 100644
--- a/info/drawing-with-metapost/src/func-pulse.pdf
+++ b/info/drawing-with-metapost/src/func-pulse.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-reflection.mp b/info/drawing-with-metapost/src/func-reflection.mp
index a9bbf7f85e..20bd808f6a 100644
--- a/info/drawing-with-metapost/src/func-reflection.mp
+++ b/info/drawing-with-metapost/src/func-reflection.mp
@@ -7,20 +7,22 @@ beginfig(1);
path xx, yy;
xx = (left -- right) scaled 150;
yy = (down -- up) scaled 150;
+for i=-6 upto 6:
+ draw xx shifted (0, 24i) withpen pencircle scaled 1/4 withcolor 7/8;
+ draw yy shifted (24i, 0) withpen pencircle scaled 1/4 withcolor 7/8;
+endfor
path ff, negative_ff;
+
ff = (1,1) for x = 3/2 step 1/2 until 6: ... (x, 1/x) endfor;
ff := reverse ff reflectedabout(origin, dir 45) & ff;
ff := ff scaled 24;
negative_ff = ff reflectedabout(origin, dir -45);
-for i=-6 upto 6:
- draw xx shifted (0, 24i) withpen pencircle scaled 1/4 withcolor 7/8;
- draw yy shifted (24i, 0) withpen pencircle scaled 1/4 withcolor 7/8;
-endfor
+draw ff withcolor 2/3 red;
+draw negative_ff withcolor 2/3 red;
forsuffixes @ = ff, negative_ff:
- draw @ withcolor 2/3 red;
for i=0 upto length @:
draw point i of @ withpen pencircle scaled 1;
endfor
diff --git a/info/drawing-with-metapost/src/func-sines.mp b/info/drawing-with-metapost/src/func-sines.mp
index 2a854ede62..a1b2896fb4 100644
--- a/info/drawing-with-metapost/src/func-sines.mp
+++ b/info/drawing-with-metapost/src/func-sines.mp
@@ -4,54 +4,49 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
vardef pi_quarters(expr n) =
- save s, f, q; string s, f; numeric q;
- s = if n < 0: "-" else: "" fi; q = abs(n);
- if q mod 4 = 0:
- f = if q > 4: decimal 1/4 q else: "" fi;
- elseif q mod 2 = 0:
- f = "\frac{" & decimal 1/2 q & "}{2}";
- else:
- f = "\frac{" & decimal q & "}{4}";
- fi
- "$\scriptstyle" & s & f & "\pi$"
+ save s, f, q; string s, f; numeric q;
+ s = if n < 0: "-" else: "" fi; q = abs(n);
+ if q mod 4 = 0: f = if q > 4: decimal 1/4 q else: "" fi;
+ elseif q mod 2 = 0: f = "\frac{" & decimal 1/2 q & "}{2}";
+ else: f = "\frac{" & decimal q & "}{4}";
+ fi TEX("$\scriptstyle" & s & f & "\pi$")
enddef;
beginfig(1);
- numeric u, pi; u = 50; pi = 3.141592653589793;
-
- path xx, yy;
- xx = (3.5 left -- 3.6 right) scaled u;
- yy = (1.1 down -- 1.2 up) scaled u;
-
- path ss;
- ss = origin for t=1 upto 360: -- (t, sind(t)) endfor;
- ss := ss shifted 360 left & ss;
- ss := ss xscaled (pi/180) scaled u;
-
- drawoptions(dashed withdots scaled 1/4);
- draw ((1/4 pi, 0) .. (1/4 pi, sind(45))) scaled u;
- draw ((1/2 pi, 0) .. (1/2 pi, sind(90))) scaled u;
- draw ((3/4 pi, 0) .. (3/4 pi, sind(135))) scaled u;
- drawoptions();
-
- draw ss cutbefore yy shifted point 0 of xx
- cutafter yy shifted point 1 of xx
- withcolor 3/4 blue;
- draw ss shifted (-1/2 pi * u ,0)
- cutbefore yy shifted point 0 of xx
- cutafter yy shifted point 1 of xx
- withcolor 2/3 red;
-
- drawarrow xx; label.rt("$t$", point 1 of xx);
- drawarrow yy; label.top("$u(t)$", point 1 of yy);
-
- for i=-4, -3, -2, -1, 1, 2, 3, 4:
- draw (down--up) scaled 2 shifted (pi * i/4 * u, 0);
- label.bot(pi_quarters(i), (pi * i/4 * u, -2));
- endfor
-
-
+ numeric u, pi; u = 50; pi = 3.141592653589793;
+
+ path xx, yy;
+ xx = (3.5 left -- 3.6 right) scaled u;
+ yy = (1.1 down -- 1.2 up) scaled u;
+
+ path ss;
+ ss = origin for t=1 upto 360: -- (t, sind(t)) endfor;
+ ss := ss shifted 360 left & ss;
+ ss := ss xscaled (pi/180) scaled u;
+
+ drawoptions(dashed withdots scaled 1/4);
+ draw ((1/4 pi, 0) .. (1/4 pi, sind(45))) scaled u;
+ draw ((1/2 pi, 0) .. (1/2 pi, sind(90))) scaled u;
+ draw ((3/4 pi, 0) .. (3/4 pi, sind(135))) scaled u;
+ drawoptions();
+
+ draw ss
+ cutbefore yy shifted point 0 of xx
+ cutafter yy shifted point 1 of xx
+ withcolor 3/4 blue;
+
+ draw ss shifted (-1/2 pi * u ,0)
+ cutbefore yy shifted point 0 of xx
+ cutafter yy shifted point 1 of xx
+ withcolor 2/3 red;
+
+ drawarrow xx; label.rt(TEX("$t$"), point 1 of xx);
+ drawarrow yy; label.top(TEX("$u(t)$"), point 1 of yy);
+
+ for i=-4, -3, -2, -1, 1, 2, 3, 4:
+ draw (down--up) scaled 2 shifted (pi * i/4 * u, 0);
+ label.bot(pi_quarters(i), (pi * i/4 * u, -2));
+ endfor
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/func-sines.pdf b/info/drawing-with-metapost/src/func-sines.pdf
index cce783b5bd..c9d33e9be9 100644
--- a/info/drawing-with-metapost/src/func-sines.pdf
+++ b/info/drawing-with-metapost/src/func-sines.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/func-stress.mp b/info/drawing-with-metapost/src/func-stress.mp
index a22b39a783..aeeee43a56 100644
--- a/info/drawing-with-metapost/src/func-stress.mp
+++ b/info/drawing-with-metapost/src/func-stress.mp
@@ -4,40 +4,39 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
- z1 = 377 right; z2 = 233 up;
-
- path ff;
- ff = origin .. (72, 144){1,2} .. (84, 144) .. (96, 144){1,1} .. (220, 220){right} .. (370, 160){2,-1.3};
-
- for t=2, 4, 4.9:
- draw point t of ff -- (xpart point t of ff, y2 + 6) dashed evenly scaled 1/2;
- endfor
- label.top("Strain hardening", (1/2 (xpart point 2 of ff + xpart point 4 of ff), y2));
- label.top("Necking", (1/2 (xpart point 4 of ff + xpart point 4.9 of ff), y2));
-
- path rr;
- rr = point 0.4 of ff -- (xpart point 0.8 of ff, ypart point 0.4 of ff) -- point 0.8 of ff;
- draw rr; label.bot("Run", point 1/2 of rr); label.rt("Rise", point 3/2 of rr);
-
- vardef pin_label@#(expr p, a, b)=
- draw a -- b cutbefore fullcircle scaled 8 shifted a withpen pencircle scaled 1/4 withcolor 1/2 white;
- label@#(p, b);
- enddef;
-
- pin_label.lrt("Yield strength", point 1.2 of ff, point 2 of ff + (8, -18));
- pin_label.bot("Ultimate strength", point 4 of ff, point 4 of ff + (4, -24));
- pin_label.bot("Fracture", point 5 of ff, point 5 of ff + (-8, -18));
-
- draw ff withpen pencircle scaled 1 withcolor 2/3 blue;
- clip currentpicture to unitsquare scaled 400; % clip thick pen at origin
-
- drawdblarrow z1 -- origin -- z2;
- label.ulft("Strain, $\epsilon$", z1);
- label.urt("Stress, $\sigma$", z2);
-
- label("$\displaystyle\hbox{Young's modulus} = \hbox{Slope} = {\hbox{Rise}\over\hbox{Run}}$",
- 1/2 z1 shifted 36 up) withcolor 2/3 blue;
-
+ z1 = 377 right; z2 = 233 up;
+ path ff; ff = origin .. (72, 144){1,2} .. (84, 144) ..
+ (96, 144){1,1} .. (220, 220){right} .. (370, 160){2,-1.3};
+
+ for t=2, 4, 4.9:
+ draw point t of ff -- (xpart point t of ff, y2 + 6) d
+ ashed evenly scaled 1/2;
+ endfor
+ label.top("Strain hardening",
+ (1/2 (xpart point 2 of ff + xpart point 4 of ff), y2));
+ label.top("Necking",
+ (1/2 (xpart point 4 of ff + xpart point 4.9 of ff), y2));
+
+ path rr;
+ rr = point 0.4 of ff -- (xpart point 0.8 of ff, ypart point 0.4 of ff) -- point 0.8 of ff;
+ draw rr; label.bot("Run", point 1/2 of rr); label.rt("Rise", point 3/2 of rr);
+
+ vardef pin_label@#(expr p, a, b)=
+ draw a -- b cutbefore fullcircle scaled 8 shifted a withpen pencircle scaled 1/4 withcolor 1/2 white;
+ label@#(p, b);
+ enddef;
+ pin_label.lrt("Yield strength", point 1.2 of ff, point 2 of ff + (8, -18));
+ pin_label.bot("Ultimate strength", point 4 of ff, point 4 of ff + (4, -24));
+ pin_label.bot("Fracture", point 5 of ff, point 5 of ff + (-8, -18));
+
+ draw ff withpen pencircle scaled 1 withcolor 2/3 blue;
+ clip currentpicture to unitsquare scaled 400; % clip thick pen at origin
+
+ drawdblarrow z1 -- origin -- z2;
+ label.ulft("Strain, $\epsilon$", z1);
+ label.urt("Stress, $\sigma$", z2);
+
+ label("$\displaystyle\hbox{Young's modulus} = \hbox{Slope} = {\hbox{Rise}\over\hbox{Run}}$", 1/2 z1 shifted 36 up) withcolor 2/3 blue;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/apollonius.mp b/info/drawing-with-metapost/src/geometry-apollonius.mp
index 91ed22b600..94fb28dcb7 100644
--- a/info/drawing-with-metapost/src/apollonius.mp
+++ b/info/drawing-with-metapost/src/geometry-apollonius.mp
@@ -15,8 +15,6 @@ vardef radical_axis(expr ca, cb) =
shifted t[center ca, center cb]
enddef;
-input tangent-times
-
vardef invert_point(expr P, o, r) =
save p, d; pair p; numeric d;
p = P - o; d = abs p;
diff --git a/info/drawing-with-metapost/src/apollonius.pdf b/info/drawing-with-metapost/src/geometry-apollonius.pdf
index 7de0b11b20..bfcfa7621a 100644
--- a/info/drawing-with-metapost/src/apollonius.pdf
+++ b/info/drawing-with-metapost/src/geometry-apollonius.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-arbelos.mp b/info/drawing-with-metapost/src/geometry-arbelos.mp
new file mode 100644
index 0000000000..8c2b67b4a8
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-arbelos.mp
@@ -0,0 +1,54 @@
+\RequirePackage{luatex85}
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef invert(expr P, C) = % invert path P or pair P in circle C
+ save I, r, s, T; pair I; I = center C; r = abs(point 0 of C-I);
+ if pair P: s = abs(P-I); I if s > eps: + (P-I) / s * r / s * r fi
+ elseif path P: T = length P; for t=0 upto T-1:
+ invert(point t of P, C) .. endfor
+ if cycle P: cycle else: invert(point T of P, C) fi
+ fi
+enddef;
+beginfig(1);
+ pair A,B,C; A = origin; C = 254 right; B = 7/8[A, C];
+ path c[];
+ c1 = fullcircle scaled 2 abs(A-C); % large circle for the inversions
+ c2 = fullcircle scaled abs(A-C) shifted 1/2[A,C];
+ c3 = fullcircle scaled abs(A-B) shifted 1/2[A,B];
+ c4 = fullcircle scaled abs(B-C) shifted 1/2[B,C];
+ c5 = invert(c4,c1);
+
+ drawoptions(withcolor 3/4 white);
+ draw c4; draw c5;
+ draw invert(subpath(-3/8, 3/2) of c2, c1); % vertical lines
+ draw invert(subpath(-3/8, 3/2) of c3, c1);
+
+ drawoptions(withcolor 1/2 red);
+ draw subpath(-1/4,7/8) of c1 withpen pencircle scaled 1/4;
+ label.lft("\textit{circle of inversion}", point 7/8 of c1);
+
+ numeric d; d = abs(point 0 of c5 - point 4 of c5); % diameter of c5
+ for i=1 upto 48:
+ path c, c'; c = c5 shifted (0, i*d); c' = invert(c, c1);
+ draw c' withpen pencircle scaled 1/4 withcolor 2/3 blue;
+ if i<5:
+ drawoptions(withcolor 3/4 white);
+ draw c; draw origin -- center c;
+ draw center c withpen pencircle scaled dotlabeldiam;
+ draw center c' withpen pencircle scaled dotlabeldiam;
+ drawoptions();
+ fi
+ endfor
+
+ drawoptions(withcolor 2/3 blue);
+ draw A--C;
+ draw subpath (0,4) of c2 withpen pencircle scaled 1/4;
+ draw subpath (0,4) of c3 withpen pencircle scaled 1/4;
+ draw subpath (0,4) of c4 withpen pencircle scaled 1/4;
+ dotlabel.lft("$A$", A); dotlabel.llft("$B$", B); dotlabel.rt("$C$", C);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/geometry-arbelos.pdf b/info/drawing-with-metapost/src/geometry-arbelos.pdf
new file mode 100644
index 0000000000..2852f1a1ef
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-arbelos.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/axis-of-similitude.mp b/info/drawing-with-metapost/src/geometry-axis-of-similitude.mp
index 94ad49f695..94ad49f695 100644
--- a/info/drawing-with-metapost/src/axis-of-similitude.mp
+++ b/info/drawing-with-metapost/src/geometry-axis-of-similitude.mp
diff --git a/info/drawing-with-metapost/src/axis-of-similitude.pdf b/info/drawing-with-metapost/src/geometry-axis-of-similitude.pdf
index 422e03717c..422e03717c 100644
--- a/info/drawing-with-metapost/src/axis-of-similitude.pdf
+++ b/info/drawing-with-metapost/src/geometry-axis-of-similitude.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/bisection-euclidean.mp b/info/drawing-with-metapost/src/geometry-bisection-euclidean.mp
index 742d762011..7e63bde25b 100644
--- a/info/drawing-with-metapost/src/bisection-euclidean.mp
+++ b/info/drawing-with-metapost/src/geometry-bisection-euclidean.mp
@@ -17,7 +17,7 @@ enddef;
\end{code}
\cr\kern 64pt
\begin{mplibcode}
-input bisection
+input geometry-bisection
beginfig(1);
z0 = euclidean_bisector(A,B,C,100);
draw B -- 1.2[B,z0] withcolor .67 red;
diff --git a/info/drawing-with-metapost/src/bisection-euclidean.pdf b/info/drawing-with-metapost/src/geometry-bisection-euclidean.pdf
index c5d2971ec7..c5d2971ec7 100644
--- a/info/drawing-with-metapost/src/bisection-euclidean.pdf
+++ b/info/drawing-with-metapost/src/geometry-bisection-euclidean.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/bisection-interior.mp b/info/drawing-with-metapost/src/geometry-bisection-interior.mp
index c39c6fd5a9..c39c6fd5a9 100644
--- a/info/drawing-with-metapost/src/bisection-interior.mp
+++ b/info/drawing-with-metapost/src/geometry-bisection-interior.mp
diff --git a/info/drawing-with-metapost/src/bisection-interior.pdf b/info/drawing-with-metapost/src/geometry-bisection-interior.pdf
index f58a457e9f..f58a457e9f 100644
--- a/info/drawing-with-metapost/src/bisection-interior.pdf
+++ b/info/drawing-with-metapost/src/geometry-bisection-interior.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/bisection-vector.mp b/info/drawing-with-metapost/src/geometry-bisection-vector.mp
index 55a8166df9..2ec8f8017c 100644
--- a/info/drawing-with-metapost/src/bisection-vector.mp
+++ b/info/drawing-with-metapost/src/geometry-bisection-vector.mp
@@ -4,15 +4,10 @@
\mplibtextextlabel{enable}
\begin{document}
\vbox{\openup 1pt \halign to 4in{#\cr
-\begin{code}
-vardef vector_bisector(expr a,b,c,r) =
- b + unitvector (a-b) scaled r
- + unitvector (c-b) scaled r
-enddef;
-\end{code}
+\mpexternal[firstline=21,lastline=24]{geometry-bisection.mp}
\cr\kern 64pt
\begin{mplibcode}
-input bisection
+input geometry-bisection
beginfig(1);
z0 = vector_bisector(A,B,C,50);
drawarrow B--A cutafter fullcircle scaled 5 shifted A;
diff --git a/info/drawing-with-metapost/src/bisection-vector.pdf b/info/drawing-with-metapost/src/geometry-bisection-vector.pdf
index a3afc5aee0..72e3d95268 100644
--- a/info/drawing-with-metapost/src/bisection-vector.pdf
+++ b/info/drawing-with-metapost/src/geometry-bisection-vector.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/bisection.mp b/info/drawing-with-metapost/src/geometry-bisection.mp
index 895fdefb20..895fdefb20 100644
--- a/info/drawing-with-metapost/src/bisection.mp
+++ b/info/drawing-with-metapost/src/geometry-bisection.mp
diff --git a/info/drawing-with-metapost/src/geometry-circumcircle.mp b/info/drawing-with-metapost/src/geometry-circumcircle.mp
new file mode 100644
index 0000000000..ae266aa656
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-circumcircle.mp
@@ -0,0 +1,59 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef through(expr a, b, o) =
+ save t; numeric t; t = 1+o/abs(a-b);
+ t[b,a] -- t[a,b]
+enddef;
+
+vardef circumcircle(expr T) =
+ save m; pair m;
+ m = whatever * (point 0 of T - point 1 of T) rotated 90 shifted point 1/2 of T
+ = whatever * (point 1 of T - point 2 of T) rotated 90 shifted point 3/2 of T;
+ fullcircle scaled 2 abs (point 0 of T - m) shifted m
+enddef;
+
+beginfig(1);
+ path T; T = origin -- 377 dir 10 -- 233 dir 70 -- cycle;
+ pair m;
+ m = whatever * (point 0 of T - point 1 of T) rotated 90 shifted point 1/2 of T
+ = whatever * (point 2 of T - point 3 of T) rotated 90 shifted point 5/2 of T;
+
+ drawoptions(withcolor 3/4);
+ draw unitsquare scaled 5 rotated angle (point 1 of T-point 0 of T) shifted point 1/2 of T;
+ draw unitsquare scaled 5 rotated angle (point 2 of T-point 1 of T) shifted point 3/2 of T;
+ draw unitsquare scaled 5 rotated angle (point 0 of T-point 2 of T) shifted point 5/2 of T;
+ drawoptions(dashed evenly scaled 1/4 withcolor 1/2);
+ draw through(point 1/2 of T, m, 10);
+ draw through(point 3/2 of T, m, 10);
+ draw through(point 5/2 of T, m, 10);
+ drawoptions();
+ draw circumcircle(T) withcolor 2/3 red;
+ draw T;
+
+ draw m withpen pencircle scaled dotlabeldiam; label("$m$", m + 10 dir 12);
+
+ vardef mark_equal(expr a, b, n) =
+ save m, s; picture m; m = image(
+ numeric s; 2s = n - 1; for t=-s upto s:
+ draw (down--up) scaled 2 rotated -13 shifted (t,0)
+ withpen pencircle scaled 1/4;
+ endfor
+ );
+ draw m rotated angle (b-a) shifted 1/4[a,b];
+ draw m rotated angle (b-a) shifted 3/4[a,b];
+ enddef;
+
+ mark_equal(point 0 of T, point 1 of T, 1);
+ mark_equal(point 1 of T, point 2 of T, 2);
+ mark_equal(point 2 of T, point 0 of T, 3);
+
+ numeric wd; wd = xpart (urcorner currentpicture - llcorner currentpicture);
+ currentpicture := currentpicture scaled (303/wd);
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/circumcircle.pdf b/info/drawing-with-metapost/src/geometry-circumcircle.pdf
index a1ce79e196..1969467d9f 100644
--- a/info/drawing-with-metapost/src/circumcircle.pdf
+++ b/info/drawing-with-metapost/src/geometry-circumcircle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/drawing-circles.mp b/info/drawing-with-metapost/src/geometry-drawing-circles.mp
index 014541eb18..014541eb18 100644
--- a/info/drawing-with-metapost/src/drawing-circles.mp
+++ b/info/drawing-with-metapost/src/geometry-drawing-circles.mp
diff --git a/info/drawing-with-metapost/src/drawing-circles.pdf b/info/drawing-with-metapost/src/geometry-drawing-circles.pdf
index e7e8f22f0a..e7e8f22f0a 100644
--- a/info/drawing-with-metapost/src/drawing-circles.pdf
+++ b/info/drawing-with-metapost/src/geometry-drawing-circles.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-examples-desargues.mp b/info/drawing-with-metapost/src/geometry-examples-desargues.mp
new file mode 100644
index 0000000000..34a6249529
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-examples-desargues.mp
@@ -0,0 +1,55 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ pair P, A, B, C, A', B', C', R, S, T;
+ P = 200 dir 102;
+ A = 100 dir 159; B = origin; C = 90 dir 42;
+
+ A' = 3/8[P, A]; % the factors should not
+ B' = 1/2[P, B]; % be the same!
+ C' = 5/8[P, C];
+
+ R = whatever [A, B] = whatever [A', B'];
+ S = whatever [B, C] = whatever [B', C'];
+ T = whatever [C, A] = whatever [C', A'];
+
+ path t[];
+ t1 = A -- B -- C -- cycle;
+ t2 = A' -- B' -- C' -- cycle;
+ fill t1 withcolor 7/8[red, white];
+ fill t2 withcolor 7/8[blue, white];
+ draw t1 withcolor 1/2 white;
+ draw t2 withcolor 1/2 white;
+
+ drawoptions(dashed withdots scaled 1/2);
+ draw P--A;
+ draw P--B;
+ draw P--C;
+
+ drawoptions(dashed evenly scaled 1/2);
+ draw B--R--B';
+ draw C--S--C';
+ undraw subpath (1/4, 3/4) of (C'--T) withpen
+ pencircle scaled 5;
+ draw C--T--C';
+
+ drawoptions(withcolor 2/3 red);
+ draw 9/8[S,R] -- 9/8[R,S];
+ draw thelabel.bot("perspectrix", origin)
+ rotated angle (T-R) shifted 1/2[T, R];
+ dotlabel.urt("perspector", P);
+ drawoptions();
+
+ dotlabel.lft ("$A$ ", A);
+ dotlabel.llft("$B$ ", B);
+ dotlabel.lrt ("$C$ ", C);
+ dotlabel.lft ("$A'$ ", A');
+ dotlabel.llft("$B'$ ", B');
+ dotlabel.bot ("$C'$ ", C');
+ label.rt("\textsc{Desargues' Theorem}", 1/2[P, C'] shifted 10 right);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/desargues.pdf b/info/drawing-with-metapost/src/geometry-examples-desargues.pdf
index bbb38bb28b..b5aba7a97c 100644
--- a/info/drawing-with-metapost/src/desargues.pdf
+++ b/info/drawing-with-metapost/src/geometry-examples-desargues.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-examples-napoleon.mp b/info/drawing-with-metapost/src/geometry-examples-napoleon.mp
new file mode 100644
index 0000000000..c9697f1db0
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-examples-napoleon.mp
@@ -0,0 +1,40 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+def equilateral_triangle_point(expr a, b) =
+ a rotatedabout(b, 60)
+enddef;
+primarydef o beyond z = z scaled (1+o/abs(z)) enddef;
+beginfig(1);
+ randomseed := 543.01811;
+
+ pair A, B, C, D, E, F, G, H, I;
+ A = 91 dir ( 0 + 18 normaldeviate);
+ B = 92 dir (120 + 18 normaldeviate);
+ C = 93 dir (240 + 18 normaldeviate);
+
+ D = equilateral_triangle_point(A, B);
+ E = equilateral_triangle_point(B, C);
+ F = equilateral_triangle_point(C, A);
+
+ G = 1/3(A + B + D);
+ H = 1/3(B + C + E);
+ I = 1/3(C + A + F);
+
+ draw A -- B -- C -- cycle withcolor blue;
+ draw A -- D -- B -- E -- C -- F -- cycle withcolor 3/4;
+ draw G -- H -- I -- cycle withcolor 2/3 red;
+
+ forsuffixes @ = A, B, C, D, E, F, G, H, I:
+ draw @ withpen pencircle scaled dotlabeldiam;
+ label("$" & str @ & "$", 10 beyond @);
+ endfor
+
+ label.bot("\textsc{Napoleon's Theorem}",
+ point 1/2 of bbox currentpicture);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/geometry-examples-napoleon.pdf b/info/drawing-with-metapost/src/geometry-examples-napoleon.pdf
new file mode 100644
index 0000000000..35665758b3
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-examples-napoleon.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/projections-code.mp b/info/drawing-with-metapost/src/geometry-examples-projections.mp
index e10619e2b6..781f953e1a 100644
--- a/info/drawing-with-metapost/src/projections-code.mp
+++ b/info/drawing-with-metapost/src/geometry-examples-projections.mp
@@ -1,3 +1,9 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
% define the end points of the three rays
z1 = right scaled 200 rotated 10;
z2 = right scaled 100 rotated 135;
@@ -29,6 +35,9 @@ drawoptions();
dotlabel.urt(btex $Q$ etex, Q);
dotlabel.top(btex $A$ etex, A);
dotlabel.lrt(btex $R$ etex, R) withcolor .67 blue;
-label.top (btex $B$ etex, B);
-label.llft(btex $P$ etex, P);
-label.llft(btex $O$ etex, origin);
+dotlabel.top (btex $B$ etex, B);
+dotlabel.llft(btex $P$ etex, P);
+dotlabel.llft(btex $O$ etex, origin);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/projections.pdf b/info/drawing-with-metapost/src/geometry-examples-projections.pdf
index 327f5caf95..3dc0599d04 100644
--- a/info/drawing-with-metapost/src/projections.pdf
+++ b/info/drawing-with-metapost/src/geometry-examples-projections.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/trisection-triangles.mp b/info/drawing-with-metapost/src/geometry-examples-trisections.mp
index 400934e647..400934e647 100644
--- a/info/drawing-with-metapost/src/trisection-triangles.mp
+++ b/info/drawing-with-metapost/src/geometry-examples-trisections.mp
diff --git a/info/drawing-with-metapost/src/trisection-triangles.pdf b/info/drawing-with-metapost/src/geometry-examples-trisections.pdf
index 2bf044ad78..c344f5bcc3 100644
--- a/info/drawing-with-metapost/src/trisection-triangles.pdf
+++ b/info/drawing-with-metapost/src/geometry-examples-trisections.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-excircle.mp b/info/drawing-with-metapost/src/geometry-excircle.mp
new file mode 100644
index 0000000000..1f6a324e73
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-excircle.mp
@@ -0,0 +1,50 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef through(expr a, b, o) =
+ save t; numeric t; t = 1+o/abs(a-b);
+ t[b,a] -- t[a,b]
+enddef;
+
+vardef excircle(expr A, B, C) =
+ save a, b, m, t; pair a, b, m, t;
+ a = A + unitvector (C-A) - unitvector (B-A);
+ b = B + unitvector (A-B) + unitvector (C-B);
+ m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
+ t-m = whatever * (B-A) rotated 90;
+ fullcircle scaled 2 abs (t-m) shifted m
+enddef;
+
+beginfig(1);
+ pair A, B, C;
+ A = origin; B = 233 dir 10; C = 144 dir 70;
+ pair a, b, m, t;
+ a = A + 22 unitvector (C-A) - 22 unitvector (B-A);
+ b = B + 22 unitvector (A-B) + 22 unitvector (C-B);
+ m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
+ t-m = whatever * (B-A) rotated 90;
+
+ drawoptions(dashed evenly scaled 1/4 withcolor 1/2 white);
+ draw t -- m;
+ draw unitsquare scaled 5 rotated angle (B-A) shifted t;
+ draw through(A, m, 10);
+ draw through(A, t, 10);
+ draw through(B, m, 10);
+ drawoptions();
+ draw excircle(A, B, C) withcolor 2/3 blue;
+ draw A--B--C--cycle;
+ dotlabel.urt(btex $m$ etex, m);
+ dotlabel.bot(btex $t$ etex, t);
+ dotlabel.bot(btex $A$ etex, A);
+ dotlabel.urt(btex $B$ etex, B);
+ dotlabel.top(btex $C$ etex, C);
+ dotlabel.urt(btex $a$ etex, a);
+ dotlabel.top(btex $b$ etex, b);
+ numeric wd; wd = xpart (urcorner currentpicture - llcorner currentpicture);
+ currentpicture := currentpicture scaled (333/wd);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/excircle.pdf b/info/drawing-with-metapost/src/geometry-excircle.pdf
index 817cd59350..533d3c6b38 100644
--- a/info/drawing-with-metapost/src/excircle.pdf
+++ b/info/drawing-with-metapost/src/geometry-excircle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-incircle.mp b/info/drawing-with-metapost/src/geometry-incircle.mp
new file mode 100644
index 0000000000..119c729fdb
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-incircle.mp
@@ -0,0 +1,50 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef through(expr a, b, o) =
+ save t; numeric t; t = 1+o/abs(a-b);
+ t[b,a] -- t[a,b]
+enddef;
+
+vardef incircle(expr A, B, C) =
+ save a, b, m, t; pair a, b, m, t;
+ a = A + unitvector (C-A) + unitvector (B-A);
+ b = B + unitvector (A-B) + unitvector (C-B);
+ m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
+ t-m = whatever * (B-A) rotated 90;
+ fullcircle scaled 2 abs (t-m) shifted m
+enddef;
+
+beginfig(1);
+ pair A, B, C;
+ A = origin; B = 377 dir 10; C = 233 dir 70;
+ pair a, b, m, t;
+ a = A + 22 unitvector (C-A) + 22 unitvector (B-A);
+ b = B + 22 unitvector (A-B) + 22 unitvector (C-B);
+ m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
+ t-m = whatever * (B-A) rotated 90;
+
+ drawoptions(dashed evenly scaled 1/4 withcolor 1/2 white);
+ draw t -- m;
+ draw unitsquare scaled 5 rotated angle (B-A) shifted t;
+ draw through(A, m, 10);
+ draw through(B, m, 10);
+ drawoptions();
+ draw incircle(A, B, C) withcolor 2/3 red;
+ draw A--B--C--cycle;
+ dotlabel.top(btex $m$\thinspace\strut etex, m);
+ dotlabel.bot(btex $t$ etex, t);
+ dotlabel.bot(btex $A$ etex, A);
+ dotlabel.urt(btex $B$ etex, B);
+ dotlabel.top(btex $C$ etex, C);
+ dotlabel.top(btex $a$ etex, a);
+ dotlabel.top(btex $b$ etex, b);
+
+ numeric wd; wd = xpart (urcorner currentpicture - llcorner currentpicture);
+ currentpicture := currentpicture scaled (333/wd);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/incircle.pdf b/info/drawing-with-metapost/src/geometry-incircle.pdf
index fe062e227e..6a914e7e5b 100644
--- a/info/drawing-with-metapost/src/incircle.pdf
+++ b/info/drawing-with-metapost/src/geometry-incircle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/intersection-AB-or-BA.mp b/info/drawing-with-metapost/src/geometry-intersection-AB-or-BA.mp
index e7f5e902cc..e7f5e902cc 100644
--- a/info/drawing-with-metapost/src/intersection-AB-or-BA.mp
+++ b/info/drawing-with-metapost/src/geometry-intersection-AB-or-BA.mp
diff --git a/info/drawing-with-metapost/src/intersection-AB-or-BA.pdf b/info/drawing-with-metapost/src/geometry-intersection-AB-or-BA.pdf
index 8cf9d43814..8cf9d43814 100644
--- a/info/drawing-with-metapost/src/intersection-AB-or-BA.pdf
+++ b/info/drawing-with-metapost/src/geometry-intersection-AB-or-BA.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/intersection-algorithm.mp b/info/drawing-with-metapost/src/geometry-intersection-algorithm.mp
index 2915dc737c..2915dc737c 100644
--- a/info/drawing-with-metapost/src/intersection-algorithm.mp
+++ b/info/drawing-with-metapost/src/geometry-intersection-algorithm.mp
diff --git a/info/drawing-with-metapost/src/intersection-algorithm.pdf b/info/drawing-with-metapost/src/geometry-intersection-algorithm.pdf
index 4d70f7d5e6..4d70f7d5e6 100644
--- a/info/drawing-with-metapost/src/intersection-algorithm.pdf
+++ b/info/drawing-with-metapost/src/geometry-intersection-algorithm.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/intersection-all-three.mp b/info/drawing-with-metapost/src/geometry-intersection-all-three.mp
index 5350b3b20c..5350b3b20c 100644
--- a/info/drawing-with-metapost/src/intersection-all-three.mp
+++ b/info/drawing-with-metapost/src/geometry-intersection-all-three.mp
diff --git a/info/drawing-with-metapost/src/intersection-all-three.pdf b/info/drawing-with-metapost/src/geometry-intersection-all-three.pdf
index 2448555380..2448555380 100644
--- a/info/drawing-with-metapost/src/intersection-all-three.pdf
+++ b/info/drawing-with-metapost/src/geometry-intersection-all-three.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/intersection-only-two.mp b/info/drawing-with-metapost/src/geometry-intersection-only-two.mp
index 9ed3a02c93..9ed3a02c93 100644
--- a/info/drawing-with-metapost/src/intersection-only-two.mp
+++ b/info/drawing-with-metapost/src/geometry-intersection-only-two.mp
diff --git a/info/drawing-with-metapost/src/intersection-only-two.pdf b/info/drawing-with-metapost/src/geometry-intersection-only-two.pdf
index cb3c6d5570..cb3c6d5570 100644
--- a/info/drawing-with-metapost/src/intersection-only-two.pdf
+++ b/info/drawing-with-metapost/src/geometry-intersection-only-two.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/magic-square-14.mp b/info/drawing-with-metapost/src/geometry-magic-square-14.mp
index 09be4d36cd..09be4d36cd 100644
--- a/info/drawing-with-metapost/src/magic-square-14.mp
+++ b/info/drawing-with-metapost/src/geometry-magic-square-14.mp
diff --git a/info/drawing-with-metapost/src/magic-square-14.pdf b/info/drawing-with-metapost/src/geometry-magic-square-14.pdf
index a3c04cebae..e98b8b74f0 100644
--- a/info/drawing-with-metapost/src/magic-square-14.pdf
+++ b/info/drawing-with-metapost/src/geometry-magic-square-14.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/mediation-pitfall.mp b/info/drawing-with-metapost/src/geometry-mediation-pitfall.mp
index 84c3839f64..84c3839f64 100644
--- a/info/drawing-with-metapost/src/mediation-pitfall.mp
+++ b/info/drawing-with-metapost/src/geometry-mediation-pitfall.mp
diff --git a/info/drawing-with-metapost/src/mediation-pitfall.pdf b/info/drawing-with-metapost/src/geometry-mediation-pitfall.pdf
index d56116c5b3..d56116c5b3 100644
--- a/info/drawing-with-metapost/src/mediation-pitfall.pdf
+++ b/info/drawing-with-metapost/src/geometry-mediation-pitfall.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/mediation-sallows.mp b/info/drawing-with-metapost/src/geometry-mediation-sallows.mp
index 6814522e77..6814522e77 100644
--- a/info/drawing-with-metapost/src/mediation-sallows.mp
+++ b/info/drawing-with-metapost/src/geometry-mediation-sallows.mp
diff --git a/info/drawing-with-metapost/src/mediation-sallows.pdf b/info/drawing-with-metapost/src/geometry-mediation-sallows.pdf
index de8d8d3a74..de8d8d3a74 100644
--- a/info/drawing-with-metapost/src/mediation-sallows.pdf
+++ b/info/drawing-with-metapost/src/geometry-mediation-sallows.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/mediation-shapes.mp b/info/drawing-with-metapost/src/geometry-mediation-shapes.mp
index 77e2825dfa..77e2825dfa 100644
--- a/info/drawing-with-metapost/src/mediation-shapes.mp
+++ b/info/drawing-with-metapost/src/geometry-mediation-shapes.mp
diff --git a/info/drawing-with-metapost/src/mediation-shapes.pdf b/info/drawing-with-metapost/src/geometry-mediation-shapes.pdf
index 4b40c2506a..4b40c2506a 100644
--- a/info/drawing-with-metapost/src/mediation-shapes.pdf
+++ b/info/drawing-with-metapost/src/geometry-mediation-shapes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-nine-point-circle.mp b/info/drawing-with-metapost/src/geometry-nine-point-circle.mp
new file mode 100644
index 0000000000..12a25f0b98
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-nine-point-circle.mp
@@ -0,0 +1,54 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ pair A, B, C, D, N, M, p, q, r;
+ A = origin; B = 343 dir 10; C = 212 dir 70;
+ % pedal points (not labelled)
+ p = whatever[B, C]; A - p = whatever * (B-C) rotated 90;
+ q = whatever[C, A]; B - q = whatever * (C-A) rotated 90;
+ r = whatever[A, B]; C - r = whatever * (A-B) rotated 90;
+
+ D = whatever[A, p] = whatever[B, q];
+ N = 1/4(A + B + C + D); % remarkably...
+ M = D rotatedabout(N, 180); % M is also the circumcentre
+
+ path circumcircle, nine_point_circle;
+ nine_point_circle = fullcircle scaled 2 abs(N - 1/2[A, B]) shifted N;
+ circumcircle = fullcircle scaled 2 abs(M - A) shifted M;
+
+ draw nine_point_circle withcolor 3/4 red;
+ draw circumcircle withcolor 1/2[3/4 blue, white];
+
+ drawoptions(dashed evenly scaled 1/4 withcolor 1/2);
+ draw 1/2[A,B] -- M -- 1/2[B, C];
+ draw 1/2[C,A] -- M -- D;
+ draw A -- p;
+ draw B -- q;
+ draw C -- r;
+
+ % mark the nine points with small circles
+ drawoptions(withpen pencircle scaled 1/4);
+ draw fullcircle scaled 2 shifted 1/2[A, B];
+ draw fullcircle scaled 2 shifted 1/2[A, C];
+ draw fullcircle scaled 2 shifted 1/2[A, D];
+ draw fullcircle scaled 2 shifted 1/2[B, C];
+ draw fullcircle scaled 2 shifted 1/2[B, D];
+ draw fullcircle scaled 2 shifted 1/2[C, D];
+ draw fullcircle scaled 2 shifted p;
+ draw fullcircle scaled 2 shifted q;
+ draw fullcircle scaled 2 shifted r;
+
+ drawoptions();
+ draw A--B--C--cycle;
+ dotlabel.llft("$A$", A);
+ dotlabel.rt("$B$", B);
+ dotlabel.ulft("$C$", C);
+ dotlabel.urt("\ $D$", D);
+ dotlabel.llft("$M$", M);
+ dotlabel.llft("$N$", N);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/nine-point-circle.pdf b/info/drawing-with-metapost/src/geometry-nine-point-circle.pdf
index 8436ae129b..9eb9c67f12 100644
--- a/info/drawing-with-metapost/src/nine-point-circle.pdf
+++ b/info/drawing-with-metapost/src/geometry-nine-point-circle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/parallel.mp b/info/drawing-with-metapost/src/geometry-parallel.mp
index 802b1b1801..802b1b1801 100644
--- a/info/drawing-with-metapost/src/parallel.mp
+++ b/info/drawing-with-metapost/src/geometry-parallel.mp
diff --git a/info/drawing-with-metapost/src/parallel.pdf b/info/drawing-with-metapost/src/geometry-parallel.pdf
index 0fd68348c0..0fd68348c0 100644
--- a/info/drawing-with-metapost/src/parallel.pdf
+++ b/info/drawing-with-metapost/src/geometry-parallel.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-pole-and-polar.mp b/info/drawing-with-metapost/src/geometry-pole-and-polar.mp
new file mode 100644
index 0000000000..f1c43ac19d
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-pole-and-polar.mp
@@ -0,0 +1,68 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef invert(expr P, C) =
+ save o; pair o; o = 1/2[point 0 of C, point 4 of C];
+ save r; numeric r; r = abs (point 0 of C - o);
+ save s; numeric s; s = abs (P - o);
+ o + (P - o) * r / s * r / s
+enddef;
+beginfig(1);
+ path C, L;
+ numeric r;
+ r = 89;
+ C = fullcircle scaled 2r;
+ L = (up--down) scaled 120 shifted 184 right rotated 38;
+ pair a, b, o;
+ a = point 0 of L; b = point 1 of L; o = center C;
+
+ pair P, Q, R, P', m;
+ P = whatever[a, b]; o - P = whatever * (a - b) rotated 90;
+ Q = C intersectionpoint halfcircle zscaled (P-o) shifted 1/2[P, o];
+ R = C intersectionpoint halfcircle zscaled (o-P) shifted 1/2[P, o];
+ P' = whatever[o, P] = whatever [Q, R];
+
+ draw subpath (-3.5,3.5) of fullcircle zscaled (P'-o) shifted 1/2[o, P']
+ dashed withdots scaled 1/4
+ withcolor 1/3 blue;
+
+ draw unitsquare scaled 5 rotated (270 + angle (P-Q)) shifted Q withcolor 3/4 white;
+ draw unitsquare scaled 5 rotated (90 + angle (P-o)) shifted P withcolor 3/4 white;
+ draw unitsquare scaled 5 rotated (90 + angle (P-o)) shifted P' withcolor 3/4 white;
+
+ draw P -- Q -- o -- R -- cycle withcolor 1/2 white;
+ draw Q--R; draw o -- P;
+ draw L withcolor 2/3 blue;
+
+ draw C dashed evenly scaled 1/2 withcolor 1/2[2/3 blue, white];
+
+ dotlabel.top("$Q$", Q);
+ dotlabel.lrt("$R$", R);
+ dotlabel.urt("$P$", P);
+ dotlabel.llft("$O$", o); fill fullcircle scaled 3/4 dotlabeldiam shifted o withcolor white;
+ label.lft("$r$", 1/2[o, Q]);
+
+ drawdot P' withpen pencircle scaled dotlabeldiam;
+ label("$P'$", P' shifted 10 dir 68) withcolor 2/3 blue;
+
+ drawoptions(withcolor 2/3 blue);
+ label.bot("\textit{circle of inversion}", point 6 of C);
+ label.top(TEX("\textit{polar}") rotated angle direction 0 of L, point 1/4 of L);
+ z0 = P' + 20 dir -20; draw z0 -- P' cutafter fullcircle scaled 8 shifted P'
+ withpen pencircle scaled 1/4;
+ label.rt("\textit{pole}", z0);
+ drawoptions(withpen pencircle scaled 2 withcolor 2/3 blue);
+ for i = 1/8, 1/4, 3/8, 5/8, 3/4, 7/8:
+ draw point i of L;
+ draw invert(point i of L, C);
+ endfor
+ drawoptions();
+
+ label("$\displaystyle {r\over OP} = {OP' \over r}$", 1/2[point 0 of C, point 1 of L] + 12 down);
+ label("$\displaystyle r^2 = OP \times OP'$", 1/2[point 0 of C, point 1 of L] + 36 down);
+
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pole-and-polar.pdf b/info/drawing-with-metapost/src/geometry-pole-and-polar.pdf
index 5bb43987cc..70c6fd5e02 100644
--- a/info/drawing-with-metapost/src/pole-and-polar.pdf
+++ b/info/drawing-with-metapost/src/geometry-pole-and-polar.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-radical-axis.mp b/info/drawing-with-metapost/src/geometry-radical-axis.mp
new file mode 100644
index 0000000000..82ae651e3e
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-radical-axis.mp
@@ -0,0 +1,53 @@
+\documentclass[border=1mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef radical_axis(expr ca, cb) =
+ numeric t, d, ra, rb;
+ ra = abs(center ca - point 0 of ca);
+ rb = abs(center cb - point 0 of cb);
+ d = abs(center cb - center ca);
+ 2t = 1 + (ra+rb) / d * (ra-rb) / d;
+ (up -- down) scaled 89
+ rotated angle (center cb - center ca)
+ shifted t[center ca, center cb]
+enddef;
+beginfig(1);
+ z1 = origin; z2 = 233 dir 4; z3 = 209 dir -42;
+ path c[], a[];
+ c1 = fullcircle scaled 202 shifted z1;
+ c2 = fullcircle scaled 106 shifted z2;
+ c3 = fullcircle scaled 62 shifted z3;
+ a1 = radical_axis(c1, c2);
+ a2 = radical_axis(c2, c3);
+ a3 = radical_axis(c3, c1);
+
+ pair radix, t; path orthogonal_circle;
+ radix = whatever[point 0 of a1, point 1 of a1]
+ = whatever[point 0 of a2, point 1 of a2];
+ t = c1 intersectionpoint
+ halfcircle zscaled (radix-z1) shifted 1/2[radix, z1];
+ orthogonal_circle = fullcircle
+ scaled 2 abs (t - radix) shifted radix;
+
+ draw z1 -- z2 -- z3 -- cycle withpen pencircle scaled 1/4;
+ draw a1; draw a2; draw a3;
+ drawoptions(withcolor 3/4[blue, white]);
+ draw c1; draw c2; draw c3;
+ draw z1 -- t dashed evenly;
+ drawoptions(withcolor 2/3 red);
+ draw orthogonal_circle;
+ draw radix -- t dashed evenly;
+ draw radix withpen pencircle scaled dotlabeldiam;
+ drawoptions(withcolor 1/4[blue, white]);
+ draw z1 withpen pencircle scaled dotlabeldiam;
+ draw z2 withpen pencircle scaled dotlabeldiam;
+ draw z3 withpen pencircle scaled dotlabeldiam;
+
+ label.urt(btex $C_1$ etex, point 1 of c1);
+ label.urt(btex $C_2$ etex, point 1 of c2);
+ label.rt (btex $C_3$ etex, point 0 of c3);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/radical-axis.pdf b/info/drawing-with-metapost/src/geometry-radical-axis.pdf
index fc643c1d71..849f5c8375 100644
--- a/info/drawing-with-metapost/src/radical-axis.pdf
+++ b/info/drawing-with-metapost/src/geometry-radical-axis.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tangent-times-on-circle.mp b/info/drawing-with-metapost/src/geometry-tangent-times-on-circle.mp
index b59986110c..65eefc8a4e 100644
--- a/info/drawing-with-metapost/src/tangent-times-on-circle.mp
+++ b/info/drawing-with-metapost/src/geometry-tangent-times-on-circle.mp
@@ -3,7 +3,7 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-input tangent-times
+input geometry-tangent-times
beginfig(1);
path C; pair p; numeric a, b;
diff --git a/info/drawing-with-metapost/src/tangent-times-on-circle.pdf b/info/drawing-with-metapost/src/geometry-tangent-times-on-circle.pdf
index 074d756042..33ec3df639 100644
--- a/info/drawing-with-metapost/src/tangent-times-on-circle.pdf
+++ b/info/drawing-with-metapost/src/geometry-tangent-times-on-circle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-tangent-times.mp b/info/drawing-with-metapost/src/geometry-tangent-times.mp
new file mode 100644
index 0000000000..bcf12d3e5d
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-tangent-times.mp
@@ -0,0 +1,12 @@
+% return a <pair> with the two times on C that
+% correspond to the external tangents from p to C
+vardef tangent_times(expr C, p) =
+ save m, o, G, H, a, b;
+ pair m, o; path G, H; numeric a, b;
+ o = center C; m = 1/2[o, p];
+ H = halfcircle zscaled (p-o) shifted m;
+ G = halfcircle zscaled (o-p) shifted m;
+ (a, whatever) = C intersectiontimes H;
+ (b, whatever) = C intersectiontimes G;
+ (a, b if b < a: + 8 fi)
+enddef;
diff --git a/info/drawing-with-metapost/src/tangents-on-path.mp b/info/drawing-with-metapost/src/geometry-tangents-on-path.mp
index c93dc1d1d6..01c55cffe3 100644
--- a/info/drawing-with-metapost/src/tangents-on-path.mp
+++ b/info/drawing-with-metapost/src/geometry-tangents-on-path.mp
@@ -37,8 +37,9 @@ P2 = image(
P3 = image(
draw p withcolor 0.54 red;
drawoptions(withcolor 1/2);
+ pair s;
for t=0 step 1/4 until length p:
- pair s; s = 16 unitvector(direction t of p);
+ s := 16 unitvector(direction t of p);
drawarrow (-s -- s) shifted point t of p;
draw point t of p withpen pencircle scaled 2;
endfor
diff --git a/info/drawing-with-metapost/src/tangents-on-path.pdf b/info/drawing-with-metapost/src/geometry-tangents-on-path.pdf
index 6fdd9064a2..af18bcd238 100644
--- a/info/drawing-with-metapost/src/tangents-on-path.pdf
+++ b/info/drawing-with-metapost/src/geometry-tangents-on-path.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tangents-point-to-circle.mp b/info/drawing-with-metapost/src/geometry-tangents-point-to-circle.mp
index 500e009160..718ba17c2f 100644
--- a/info/drawing-with-metapost/src/tangents-point-to-circle.mp
+++ b/info/drawing-with-metapost/src/geometry-tangents-point-to-circle.mp
@@ -4,30 +4,28 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
-path C, C'; pair p, t, t';
+path C; pair p;
C = fullcircle scaled 100;
p = 189 right rotated 30;
-C' = fullcircle zscaled p shifted 1/2 p;
-% t = C intersectionpoint C';
-% t' = reverse C intersectionpoint C';
-t = C intersectionpoint halfcircle zscaled p shifted 1/2 p;
-t' = C intersectionpoint halfcircle zscaled -p shifted 1/2 p;
+pair o, m, t, t'; o = center C; m = 1/2[o, p];
+t = C intersectionpoint halfcircle zscaled (p-o) shifted m;
+t' = C intersectionpoint halfcircle zscaled (o-p) shifted m;
drawoptions(dashed withdots scaled 1/4 withcolor (.2, .2, .7));
-draw C'; draw t -- center C -- p;
+ draw fullcircle zscaled p shifted 1/2 p;
+ draw t -- center C -- p;
drawoptions(withcolor (.2, .2, .7));
-dotlabel.lrt("$m$", 1/2 p);
-dotlabel.llft("$o$", center C);
+ dotlabel.lrt("$m$", 1/2 p);
+ dotlabel.llft("$o$", center C);
drawoptions(dashed evenly);
-draw t -- p -- t';
+ draw t -- p -- t';
drawoptions();
-draw C;
-label.llft("$C$", point 5 of C);
+draw C; label.llft("$C$", point 5 of C);
dotlabel.urt("$p$", p);
dotlabel.ulft("$t$", t);
dotlabel.bot("\strut $t'$", t');
diff --git a/info/drawing-with-metapost/src/tangents-point-to-circle.pdf b/info/drawing-with-metapost/src/geometry-tangents-point-to-circle.pdf
index 6991303955..f80a7b7b7d 100644
--- a/info/drawing-with-metapost/src/tangents-point-to-circle.pdf
+++ b/info/drawing-with-metapost/src/geometry-tangents-point-to-circle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tangents-two-circles-exterior.mp b/info/drawing-with-metapost/src/geometry-tangents-two-circles-exterior.mp
index 504fdf19e0..6e718beba4 100644
--- a/info/drawing-with-metapost/src/tangents-two-circles-exterior.mp
+++ b/info/drawing-with-metapost/src/geometry-tangents-two-circles-exterior.mp
@@ -3,7 +3,7 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-input tangent-times
+input geometry-tangent-times
color tb; tb = (0.2, 0.2, 0.7);
beginfig(1);
path A, B;
@@ -20,11 +20,12 @@ C = fullcircle scaled (2R-2r) shifted center A;
draw A withpen pencircle scaled 2 withcolor 3/4[blue, white];
draw B withpen pencircle scaled 2 withcolor 3/4[blue, white];
-draw C withpen pencircle scaled 1 withcolor 7/8[blue, white];
-draw subpath (t, u) of C -- center B -- cycle dashed evenly withcolor 1/2;
draw subpath (t, u) of A -- subpath (u-8, t) of B -- cycle;
+draw C withpen pencircle scaled 1 withcolor 7/8[blue, white];
+draw subpath (t, u) of C -- center B -- cycle dashed evenly withcolor 1/2;
+
drawoptions(dashed withdots scaled 1/2 withcolor 1/4);
forsuffixes $=t, u:
draw point $ of C -- point $ of A;
@@ -39,11 +40,11 @@ drawdot center B withpen pencircle scaled dotlabeldiam;
drawoptions();
dotlabel.lrt("$t$", point t of C);
-dotlabel.ulft("$t'$", point t of A);
-dotlabel.ulft("$t''$", point t of B);
+dotlabel.ulft("$t$", point t of A);
+dotlabel.ulft("$t$", point t of B);
dotlabel.ulft("$u$", point u of C);
-dotlabel.lrt("$u'$", point u of A);
-dotlabel.lrt("$u''$", point u of B);
+dotlabel.lrt("$u$", point u of A);
+dotlabel.lrt("$u$", point u of B);
label.rt("$r$", 1/2[center B, point t of B]);
label.rt("$r$", 1/2[point t of C, point t of A]);
diff --git a/info/drawing-with-metapost/src/geometry-tangents-two-circles-exterior.pdf b/info/drawing-with-metapost/src/geometry-tangents-two-circles-exterior.pdf
new file mode 100644
index 0000000000..5d0be6748d
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-tangents-two-circles-exterior.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tangents-two-circles-interior.mp b/info/drawing-with-metapost/src/geometry-tangents-two-circles-interior.mp
index afa46790e6..68383929c7 100644
--- a/info/drawing-with-metapost/src/tangents-two-circles-interior.mp
+++ b/info/drawing-with-metapost/src/geometry-tangents-two-circles-interior.mp
@@ -3,13 +3,13 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-input tangent-times
+input geometry-tangent-times
vardef adjust_time(expr tt, AA, BB) =
- tt + 1/45 angle (point 0 of AA - center AA)
- - 1/45 angle (point 0 of BB - center BB)
+ tt + 1/45 angle (point 0 of AA - center AA)
+ - 1/45 angle (point 0 of BB - center BB)
enddef;
beginfig(1);
-path A, B;
+path A, B; % randomly rotated to show off "adjust_time"
A = fullcircle scaled 144 rotated uniformdeviate 360;
B = fullcircle scaled 60 shifted 240 right rotated 36;
@@ -48,11 +48,10 @@ dotlabel.ulft(btex $u''$ etex, point u'' of B);
drawdot center B withpen pencircle scaled dotlabeldiam;
drawoptions(withcolor 1/2[blue, white]);
- label.urt(btex $A$ etex, point 1/2(t'+u'- 7.6) of A);
- label.rt (btex $B$ etex, point 1/2(t''+u''- 2) of B);
- label.urt(btex $C$ etex, point 1/2(t+u-8) of C);
+ label.urt(btex $A$ etex, point 1/2(t'+u'- 7.6) of A);
+ label.rt (btex $B$ etex, point 1/2(t''+u''- 2) of B);
+ label.urt(btex $C$ etex, point 1/2(t+u-8) of C);
drawoptions();
-
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/tangents-two-circles-interior.pdf b/info/drawing-with-metapost/src/geometry-tangents-two-circles-interior.pdf
index f9faedbd97..5228c93172 100644
--- a/info/drawing-with-metapost/src/tangents-two-circles-interior.pdf
+++ b/info/drawing-with-metapost/src/geometry-tangents-two-circles-interior.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-triangles-on-circle.mp b/info/drawing-with-metapost/src/geometry-triangles-on-circle.mp
index 16852ad54e..07720f553a 100644
--- a/info/drawing-with-metapost/src/geometry-triangles-on-circle.mp
+++ b/info/drawing-with-metapost/src/geometry-triangles-on-circle.mp
@@ -6,18 +6,18 @@ vardef equilateral_triangle_point(expr a, b) =
b shifted -a rotated 60 shifted a
enddef;
beginfig(1);
-path c; c = fullcircle scaled 144;
-numeric n; n = 8;
-for i=0 upto n-1:
- pair a,b,p,q;
- a = point 8/n * i of c;
- b = point 8/n * (i + 1) of c;
- p = equilateral_triangle_point(a,b);
- q = equilateral_triangle_point(b,a);
- draw a -- p -- b withcolor .67 green;
- draw a -- q -- b withcolor .67 red;
-endfor
-draw c withcolor .53 blue;
+ path c; c = fullcircle scaled 144;
+ numeric n; n = 11;
+ for i=0 upto n-1:
+ pair a,b,p,q;
+ a = point 8/n * i of c;
+ b = point 8/n * (i + 1) of c;
+ p = equilateral_triangle_point(a,b);
+ q = equilateral_triangle_point(b,a);
+ draw a -- p -- b withcolor .67 green;
+ draw a -- q -- b withcolor .67 red;
+ endfor
+ draw c withcolor .53 blue;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/geometry-triangles-on-circle.pdf b/info/drawing-with-metapost/src/geometry-triangles-on-circle.pdf
index fce9394170..86cc5cdd0e 100644
--- a/info/drawing-with-metapost/src/geometry-triangles-on-circle.pdf
+++ b/info/drawing-with-metapost/src/geometry-triangles-on-circle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/trisection-classical.mp b/info/drawing-with-metapost/src/geometry-trisection-classical.mp
index 980ceae25e..980ceae25e 100644
--- a/info/drawing-with-metapost/src/trisection-classical.mp
+++ b/info/drawing-with-metapost/src/geometry-trisection-classical.mp
diff --git a/info/drawing-with-metapost/src/trisection-classical.pdf b/info/drawing-with-metapost/src/geometry-trisection-classical.pdf
index 7dc1d031e2..7dc1d031e2 100644
--- a/info/drawing-with-metapost/src/trisection-classical.pdf
+++ b/info/drawing-with-metapost/src/geometry-trisection-classical.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-trisection-simple.mp b/info/drawing-with-metapost/src/geometry-trisection-simple.mp
new file mode 100644
index 0000000000..e8c17334a4
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-trisection-simple.mp
@@ -0,0 +1,20 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ path ray; ray = origin -- 200 right;
+ numeric theta; theta = 42;
+ draw ray;
+ draw ray rotated 1/3 theta withcolor 2/3 red;
+ draw ray rotated 2/3 theta withcolor 2/3 red;
+ draw ray rotated theta;
+ dotlabel.llft("$0$", origin);
+ label("$\theta/3$", 72 right rotated 1/6 theta) withcolor 2/3 blue;
+ label("$\theta/3$", 72 right rotated 3/6 theta) withcolor 2/3 blue;
+ label("$\theta/3$", 72 right rotated 5/6 theta) withcolor 2/3 blue;
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/trisection-simple.pdf b/info/drawing-with-metapost/src/geometry-trisection-simple.pdf
index 7a63ce3cf3..7a63ce3cf3 100644
--- a/info/drawing-with-metapost/src/trisection-simple.pdf
+++ b/info/drawing-with-metapost/src/geometry-trisection-simple.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/geometry-whatever.mp b/info/drawing-with-metapost/src/geometry-whatever.mp
new file mode 100644
index 0000000000..21d0de8950
--- /dev/null
+++ b/info/drawing-with-metapost/src/geometry-whatever.mp
@@ -0,0 +1,26 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\hbox to 5in{$\vcenter{%
+\begin{mplibcode}
+beginfig(1);
+ z1 = (10, 50);
+ z2 = (80, 190);
+ z3 = (0, 170);
+ z4 = (60, 10);
+
+ z0 = whatever [z1, z2] = whatever [z3, z4];
+
+ draw z1--z2; draw z3--z4;
+
+ forsuffixes @=0,1,2,3,4:
+ dotlabel.rt(TEX("$z_" & decimal @ & "$"), z@)
+ withcolor 2/3 if @=0: red else: blue fi;
+ endfor
+endfig;
+\end{mplibcode}
+}\quad\vcenter{
+\smallmpexternal[firstline=7,lastline=21]{geometry-whatever.mp}
+}$\hss}
+\end{document}
diff --git a/info/drawing-with-metapost/src/whatever.pdf b/info/drawing-with-metapost/src/geometry-whatever.pdf
index e02bd9c354..8b641cef45 100644
--- a/info/drawing-with-metapost/src/whatever.pdf
+++ b/info/drawing-with-metapost/src/geometry-whatever.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/gons.mp b/info/drawing-with-metapost/src/gons.mp
deleted file mode 100644
index 417c598690..0000000000
--- a/info/drawing-with-metapost/src/gons.mp
+++ /dev/null
@@ -1,28 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-vardef gcd(expr a, b) =
- if b = 0: a else: gcd(b, a mod b) fi
-enddef;
-beginfig(1);
-for n=2 upto 24:
- for s=1 upto floor n/2:
- pair p; p = (12n - 24s, -24n);
- path gon; gon = (
- for t=0 upto n/gcd(s,n) - 1:
- 10 up rotated (360/n * s * t) --
- endfor cycle);
- if (n mod s = 0):
- fill gon shifted p withcolor PuBuGn[9][1+floor (n/s/6)];
- label("$" & decimal (n/s) & "$", p);
- fi
- draw gon shifted p withpen pencircle scaled 1/8;
- endfor
-endfor
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/graph-paper.mp b/info/drawing-with-metapost/src/graph-paper.mp
deleted file mode 100644
index b4fc2b8f1b..0000000000
--- a/info/drawing-with-metapost/src/graph-paper.mp
+++ /dev/null
@@ -1,34 +0,0 @@
-\documentclass[border=1mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-vardef grid(expr ll, ur, grid_unit) =
- save llx, lly, urx, ury, G; numeric llx, lly, urx, ury;
- (llx, lly) = ll; (urx, ury) = ur;
- picture G; G = image(
- for x = floor(llx / grid_unit) + 1 upto floor(urx / grid_unit):
- draw (x * grid_unit, lly) -- (x * grid_unit, ury);
- endfor
- for y = floor(lly / grid_unit) + 1 upto floor(ury / grid_unit):
- draw (llx, y * grid_unit) -- (urx, y * grid_unit);
- endfor
- fill fullcircle; % <-- you might not want this
- ); G enddef;
-
-input colorbrewer-rgb
-beginfig(1);
- path C;
- C = fullcircle scaled 120 shifted 12 up rotated 6;
- for t=0, 1.23, 4: draw center C -- point t of C withcolor Blues 8 8; endfor
- draw C withcolor Reds 8 8;
- dotlabel.urt("Start", point 0 of C);
-
- picture P; P = currentpicture; currentpicture := nullpicture;
- draw grid(llcorner P, urcorner P, 1mm) withpen pencircle scaled 1/4 withcolor Blues 8 1;
- draw grid(llcorner P, urcorner P, 1cm) withpen pencircle scaled 1/4 withcolor Blues 8 2;
- draw P;
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/graph-paper.pdf b/info/drawing-with-metapost/src/graph-paper.pdf
deleted file mode 100644
index d6cd20458e..0000000000
--- a/info/drawing-with-metapost/src/graph-paper.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/greek-default-encoding.mp b/info/drawing-with-metapost/src/greek-default-encoding.mp
deleted file mode 100644
index 76bbe6b86c..0000000000
--- a/info/drawing-with-metapost/src/greek-default-encoding.mp
+++ /dev/null
@@ -1,29 +0,0 @@
-%\documentclass[border=5mm]{standalone}
-%\usepackage{luamplib}
-%\begin{document}
-%\begin{mplibcode}
-prologues := 3;
-outputtemplate := "%j.%{outputformat}";
-beginfig(1);
-string ab, AB;
-
-ab = ("" for i=11 upto 23: & char i endfor
- & "o" for i=24 upto 33: & char i endfor);
-
-AB = ("AB" & char 0 & char 1 & "EZH" & char 2 & "IK"
- & char 3 & "MNO" & char 4 & char 5 & "P"
- & char 6 & "T" & char 7 & char 8 & "X"
- & char 9 & char 10);
-
-draw ab infont "cmmi10";
-draw AB infont "cmmi10" shifted 12 down;
-draw ab infont "eurm10" shifted 32 down;
-draw AB infont "eurm10" shifted 44 down;
-
-undraw (6 left -- 180 right) shifted 12 up;
-undraw (6 left -- 180 right) shifted 50 down;
-
-endfig;
-%\end{mplibcode}
-%\end{document}
-end
diff --git a/info/drawing-with-metapost/src/greek-default-encoding.pdf b/info/drawing-with-metapost/src/greek-default-encoding.pdf
deleted file mode 100644
index a98ad701dc..0000000000
--- a/info/drawing-with-metapost/src/greek-default-encoding.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/icosahedron.pdf b/info/drawing-with-metapost/src/icosahedron.pdf
deleted file mode 100644
index 48a513c8ff..0000000000
--- a/info/drawing-with-metapost/src/icosahedron.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/ifs-heigh-open.mp b/info/drawing-with-metapost/src/ifs-heigh-open.mp
index 337bef2e61..39104b44e7 100644
--- a/info/drawing-with-metapost/src/ifs-heigh-open.mp
+++ b/info/drawing-with-metapost/src/ifs-heigh-open.mp
@@ -6,9 +6,9 @@ beginfig(1);
path p; p = origin -- dir 30;
numeric n, r; r = 3;
for i=1 upto 12:
- n := length p;
- p := p rotated (45 - r);
- p := p & reverse p rotatedabout(point n of p, 90 + 2r);
+ n := length p;
+ p := p rotated (45 - r);
+ p := p & reverse p rotatedabout(point n of p, 90 + 2r);
endfor
draw p scaled (384 / xpart (urcorner p - llcorner p)) withcolor .54 red;
endfig;
diff --git a/info/drawing-with-metapost/src/ifs-heigh-open.pdf b/info/drawing-with-metapost/src/ifs-heigh-open.pdf
index 5f26760b2e..7a9bfab1a1 100644
--- a/info/drawing-with-metapost/src/ifs-heigh-open.pdf
+++ b/info/drawing-with-metapost/src/ifs-heigh-open.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/ifs-heigh.mp b/info/drawing-with-metapost/src/ifs-heigh.mp
index 6ff5b94df0..cfe96940d3 100644
--- a/info/drawing-with-metapost/src/ifs-heigh.mp
+++ b/info/drawing-with-metapost/src/ifs-heigh.mp
@@ -3,15 +3,14 @@
\begin{document}
\begin{mplibcode}
beginfig(1);
-path p; p = origin -- right rotated 30;
+path p; p = origin -- dir 30;
numeric n;
for i=1 upto 12:
- n := length p;
- p := p rotated 45;
- p := p & reverse p rotatedabout(point n of p, 90);
+ n := length p;
+ p := p rotated 45;
+ p := p & reverse p rotatedabout(point n of p, 90);
endfor
-draw p scaled (384 / xpart (urcorner p - llcorner p))
- withcolor (.2, .2, .7);
+draw p scaled (384 / xpart (urcorner p - llcorner p)) withcolor (.2,.2,.7);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/ifs-heigh.pdf b/info/drawing-with-metapost/src/ifs-heigh.pdf
index d779719752..30924f4d0a 100644
--- a/info/drawing-with-metapost/src/ifs-heigh.pdf
+++ b/info/drawing-with-metapost/src/ifs-heigh.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/illusions-cafe-wall.mp b/info/drawing-with-metapost/src/illusions-cafe-wall.mp
index da81df2963..061ff235ed 100644
--- a/info/drawing-with-metapost/src/illusions-cafe-wall.mp
+++ b/info/drawing-with-metapost/src/illusions-cafe-wall.mp
@@ -3,22 +3,21 @@
\begin{document}
\begin{mplibcode}
beginfig(1);
- numeric u; u = 21;
-picture strip;
-strip = image(
+ numeric u; u = 21;
+ picture strip;
+ strip = image(
for i=-10 upto 10:
- fill unitsquare shifted (2i,0) scaled u;
- draw unitsquare shifted (2i,0) scaled u withcolor 1/2;
+ fill unitsquare shifted (2i,0) scaled u;
+ draw unitsquare shifted (2i,0) scaled u withcolor 1/2;
endfor
for i=0, 1:
- draw ((-20, i) -- (20, i)) scaled u withcolor 1/2;
+ draw ((-20, i) -- (20, i)) scaled u withcolor 1/2;
endfor
-);
-for i=0 upto 9:
+ );
+ for i=0 upto 9:
draw strip shifted (4 normaldeviate, i*u);
-endfor
-clip currentpicture to unitsquare shifted 1/2 left xscaled 29.2 yscaled 10 scaled u;
+ endfor
+ clip currentpicture to unitsquare shifted 1/2 left xscaled 29.2 yscaled 10 scaled u;
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/illusions-cafe-wall.pdf b/info/drawing-with-metapost/src/illusions-cafe-wall.pdf
new file mode 100644
index 0000000000..c5fd7f90fc
--- /dev/null
+++ b/info/drawing-with-metapost/src/illusions-cafe-wall.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/illusions-cubes.mp b/info/drawing-with-metapost/src/illusions-cubes.mp
index 2b083debb1..501aae3081 100644
--- a/info/drawing-with-metapost/src/illusions-cubes.mp
+++ b/info/drawing-with-metapost/src/illusions-cubes.mp
@@ -5,42 +5,41 @@
\begin{mplibcode}
input colorbrewer-rgb
beginfig(2);
- numeric u, v;
- u = 60;
- v = 21 * sqrt(3);
- path face[];
+ numeric u, v;
+ u = 60;
+ v = 21 * sqrt(3);
+ path face[];
+ for i=0 upto 2:
+ face[i] = unitsquare scaled u rotated 45 yscaled (1/sqrt(3)) rotated (120-120i);
+ endfor
+ picture cube, sides;
+ cube = image(
for i=0 upto 2:
- face[i] = unitsquare scaled u rotated 45 yscaled (1/sqrt(3)) rotated (120-120i);
+ fill face[i] withcolor Oranges[8][i+1];
endfor
- picture cube, sides;
- cube = image(
- for i=0 upto 2:
- fill face[i] withcolor Oranges[8][i+1];
- endfor
- for i=0 upto 2:
- draw subpath (1, 4) of face[i];
- endfor
- );
- sides = image(
- for i=0, 2:
- fill face[i] withcolor Oranges[8][i+1];
- endfor
- for i=0, 2:
- draw face[i];
- endfor
- );
- draw cube shifted (0u, 2v);
- draw cube shifted (0u, 4v);
- draw cube shifted (0u, 6v);
- draw cube shifted (1u, 5v);
- draw cube shifted (2u, 4v);
- draw cube shifted (3u, 3v);
- draw cube shifted (2u, 2v);
- draw cube shifted (u, v);
- draw cube;
- draw sides shifted (0u, 2v);
+ for i=0 upto 2:
+ draw subpath (1, 4) of face[i];
+ endfor
+ );
+ sides = image(
+ for i=0, 2:
+ fill face[i] withcolor Oranges[8][i+1];
+ endfor
+ for i=0, 2:
+ draw face[i];
+ endfor
+ );
+ draw cube shifted (0u, 2v);
+ draw cube shifted (0u, 4v);
+ draw cube shifted (0u, 6v);
+ draw cube shifted (1u, 5v);
+ draw cube shifted (2u, 4v);
+ draw cube shifted (3u, 3v);
+ draw cube shifted (2u, 2v);
+ draw cube shifted (u, v);
+ draw cube;
+ draw sides shifted (0u, 2v);
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/illusions-cubes.pdf b/info/drawing-with-metapost/src/illusions-cubes.pdf
new file mode 100644
index 0000000000..e9c20264a7
--- /dev/null
+++ b/info/drawing-with-metapost/src/illusions-cubes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/illusions-fraser-spiral.mp b/info/drawing-with-metapost/src/illusions-fraser-spiral.mp
deleted file mode 100644
index 850d957e79..0000000000
--- a/info/drawing-with-metapost/src/illusions-fraser-spiral.mp
+++ /dev/null
@@ -1,26 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\mplibsetformat{metafun}
-\begin{mplibcode}
-beginfig(1);
- path s;
- s = origin for i=1 upto 90: .. (30i, 0) rotated 4i endfor;
-
- path e[], f[];
- for i = 0 upto 17:
- e[i] = s rotated 20i;
- f[i] = s reflectedabout(left, right) rotated 20i;
- endfor
-
- for i=0 upto 8:
- fill e[2i] -- reverse e[2i+1] .. cycle withcolor 1/2;
- endfor
- for i=0 upto 8:
- fill f[2i] -- reverse f[2i+1] .. cycle withcolor transparent(2, 1/2, 0);
- endfor
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/illusions-fraser-spiral.pdf b/info/drawing-with-metapost/src/illusions-fraser-spiral.pdf
new file mode 100644
index 0000000000..be04c02985
--- /dev/null
+++ b/info/drawing-with-metapost/src/illusions-fraser-spiral.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/illusions-impossible-ring.mp b/info/drawing-with-metapost/src/illusions-impossible-ring.mp
deleted file mode 100644
index 85aaa6492f..0000000000
--- a/info/drawing-with-metapost/src/illusions-impossible-ring.mp
+++ /dev/null
@@ -1,42 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\usepackage{graphicx}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-%label("$\includegraphics{ring-11.png}$", origin);
-path S;
-S = (-117, 4) {dir 30} .. {right} 30 up .. {dir -36} (117, -4) .. {left} 88 down
- .. (-200, -50) .. {up} (-266, 30) {down} -- (-266, -50)
- .. (-200, -108) {dir -28} .. 148 down {right}
- .. (200, -108) .. {up} (266, -30);
-S := S & subpath (5, 2) of S rotated 180 & cycle;
-input colorbrewer-rgb
-
-fill S withcolor Greens 8 3;
-fill S rotated 180 withcolor Reds 8 3;
-
-picture rules; rules = image(
- for t=0 step 1/32 until directiontime down of subpath(12, 13) of S:
- draw point 12+t of S -- point 12+t of S shifted 100 down
- cutafter S;
- endfor
- for t=3 step 1/16 until 5:
- draw point t of S -- point t of S shifted 100 down cutafter subpath (6, 8) of S;
- endfor
- for t=8+1/16 step 1/16 until 12:
- draw point t of S -- 1/2[point 1 of S, point 3 of S] cutafter subpath (1, 3) of S;
- endfor
-);
-
-for r = 0, 180:
- draw rules rotated r;
- draw S rotated r;
-endfor
-
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/illusions-impossible-ring.pdf b/info/drawing-with-metapost/src/illusions-impossible-ring.pdf
new file mode 100644
index 0000000000..d8b8a7d735
--- /dev/null
+++ b/info/drawing-with-metapost/src/illusions-impossible-ring.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/illusions-impossible-triangle.mp b/info/drawing-with-metapost/src/illusions-impossible-triangle.mp
index 370a4800af..951f5c2979 100644
--- a/info/drawing-with-metapost/src/illusions-impossible-triangle.mp
+++ b/info/drawing-with-metapost/src/illusions-impossible-triangle.mp
@@ -6,35 +6,33 @@
input colorbrewer-rgb
beginfig(1);
- numeric u;
-
- u = 42;
-
- z0 = (0, 3u);
- z1 = z0 rotated 120;
- z2 = z1 rotated 120;
-
- z3 = z0 shifted (1/2u, 3/2u * sqrt(3));
- z4 = z3 shifted (-u,0);
-
- z5-z4 = whatever * (z0-z1);
- z6 = whatever [z0, z2];
- y5 = y6 = y2 - sqrt(3) * 1/2 u;
-
- z7-z3 = whatever * (z0-z1);
- z7 = whatever [z1, z2];
-
- %dotlabels.top(0, 1, 2, 3, 4, 5, 6, 7);
-
- path vii;
- vii = z3--z4--z5--z6--z2--z7--cycle;
-
- for i=0 upto 2:
- fill vii rotated 120i withcolor Blues[9][i+2];
- endfor
- for i=0 upto 2:
- draw vii rotated 120i;
- endfor
+ numeric u;
+
+ u = 42;
+
+ z0 = (0, 3u);
+ z1 = z0 rotated 120;
+ z2 = z1 rotated 120;
+
+ z3 = z0 shifted (1/2u, 3/2u * sqrt(3));
+ z4 = z3 shifted (-u,0);
+
+ z5-z4 = whatever * (z0-z1);
+ z6 = whatever [z0, z2];
+ y5 = y6 = y2 - sqrt(3) * 1/2 u;
+
+ z7-z3 = whatever * (z0-z1);
+ z7 = whatever [z1, z2];
+
+ path vii;
+ vii = z3--z4--z5--z6--z2--z7--cycle;
+
+ for i=0 upto 2:
+ fill vii rotated 120i withcolor Blues[9][i+2];
+ endfor
+ for i=0 upto 2:
+ draw vii rotated 120i;
+ endfor
endfig;
\end{mplibcode}
diff --git a/info/drawing-with-metapost/src/illusions-impossible-triangle.pdf b/info/drawing-with-metapost/src/illusions-impossible-triangle.pdf
new file mode 100644
index 0000000000..8e90a30227
--- /dev/null
+++ b/info/drawing-with-metapost/src/illusions-impossible-triangle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/illusions-pinna.mp b/info/drawing-with-metapost/src/illusions-pinna.mp
index 070802a5d9..06ac610f53 100644
--- a/info/drawing-with-metapost/src/illusions-pinna.mp
+++ b/info/drawing-with-metapost/src/illusions-pinna.mp
@@ -1,23 +1,20 @@
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
-\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
- path s; s = unitsquare shifted -(1/2, 1/2) scaled 23;
- for n = 1 upto 4:
- numeric N; N = 10n + 8;
- numeric a; a = 30 normaldeviate;
- for t=0 upto N-1:
- draw s rotated if odd n: - fi 13 shifted (5N * right) rotated (360 / N * t + a)
- withcolor t mod 2;
- endfor
+ path s; s = unitsquare shifted -(1/2, 1/2) scaled 21;
+ for n = 1 upto 4:
+ numeric N; N = 9n + 8;
+ numeric a; a = 30 normaldeviate;
+ for t=0 upto N-1:
+ draw s rotated if odd n: - fi 13 shifted (5N * right) rotated (360 / N * t + a)
+ withpen pencircle scaled 1 withcolor t mod 2;
endfor
- picture P;
- P = currentpicture; currentpicture := nullpicture;
- fill bbox P withcolor 0.42;
- draw P;
+ endfor
+ picture P;
+ P = currentpicture; clearit;
+ fill bbox P withcolor 0.52; draw P;
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/illusions-pinna.pdf b/info/drawing-with-metapost/src/illusions-pinna.pdf
new file mode 100644
index 0000000000..0c9ae9aee1
--- /dev/null
+++ b/info/drawing-with-metapost/src/illusions-pinna.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/illusions-shaded-diamonds.mp b/info/drawing-with-metapost/src/illusions-shaded-diamonds.mp
index adb4b003a6..17b2475534 100644
--- a/info/drawing-with-metapost/src/illusions-shaded-diamonds.mp
+++ b/info/drawing-with-metapost/src/illusions-shaded-diamonds.mp
@@ -6,27 +6,24 @@
input colorbrewer-rgb
path diamond; picture shaded;
diamond = (left -- 3 down -- right -- 3 up -- cycle) scaled 13;
-shaded = image(
-for i=0 upto 256:
- draw (left--right) scaled 15 shifted (0, 78/256 i - 39)
- withpen pencircle scaled 0.32
- withcolor (i/256)[white, Greens 8 8];
+shaded = image(for i=0 upto 256:
+ draw (left--right) scaled 15 shifted (0, 78/256 i - 39)
+ withpen pencircle scaled 0.32
+ withcolor (i/256)[white, Greens 8 8];
endfor); clip shaded to diamond;
-
- pair u, v;
- u = point 2 of diamond - point 0 of diamond;
- v = point 3 of diamond - point 0 of diamond;
+
+pair u, v;
+u = point 2 of diamond - point 0 of diamond;
+v = point 3 of diamond - point 0 of diamond;
beginfig(1);
- for i=0 upto 8:
- for j=0 upto min(8-i, 4):
- draw shaded shifted (i * u + j * v);
- endfor
+ for i=0 upto 8:
+ for j=0 upto min(8-i, 4):
+ draw shaded shifted (i * u + j * v);
endfor
- clip currentpicture to -1/2u -- 9u -- 5u + 4v -- 4v - 1/2u -- cycle;
-
- draw currentpicture rotated 180;
-
+ endfor
+ clip currentpicture to -1/2u -- 9u -- 5u + 4v -- 4v - 1/2u -- cycle;
+ draw currentpicture rotated 180;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/illusions-shaded-diamonds.pdf b/info/drawing-with-metapost/src/illusions-shaded-diamonds.pdf
new file mode 100644
index 0000000000..4e01066e5c
--- /dev/null
+++ b/info/drawing-with-metapost/src/illusions-shaded-diamonds.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/illusions-wonky-grid.mp b/info/drawing-with-metapost/src/illusions-wonky-grid.mp
index 74fe8ddf99..fa40371a17 100644
--- a/info/drawing-with-metapost/src/illusions-wonky-grid.mp
+++ b/info/drawing-with-metapost/src/illusions-wonky-grid.mp
@@ -4,22 +4,22 @@
\begin{mplibcode}
input colorbrewer-rgb
beginfig(1);
- path o; numeric r; r = 1/4;
- o = (for i=0 upto 3: subpath (i+r, i+1-r) of unitsquare shifted -(1/2, 1/2) -- endfor cycle) scaled 42;
- picture unit; path s; s = unitsquare scaled arclength subpath (1, 3/2) of o
- rotated -45 shifted point 3/2 of o;
- unit = image(
- fill o withcolor Blues 8 5;
- for i=0 upto 3: fill s rotated 90i; endfor
- );
+ path o; numeric r; r = 1/4;
+ o = (for i=0 upto 3: subpath (i+r, i+1-r) of unitsquare shifted -(1/2, 1/2) -- endfor cycle) scaled 42;
+ picture unit; path s; s = unitsquare scaled arclength subpath (1, 3/2) of o
+ rotated -45 shifted point 3/2 of o;
+ unit = image(
+ fill o withcolor Blues 8 5;
+ for i=0 upto 3: fill s rotated 90i; endfor
+ );
- pair u, v; u = 42 right; v = u rotated 90; numeric n; n = 3;
- for i=-n upto n:
- for j=-2n upto 2n:
- draw unit if (i+j) mod 4 < 2: reflectedabout (dir 135, dir -45) fi
- shifted ((2i + j mod 2)*u + j*v);
- endfor
+ pair u, v; u = 42 right; v = u rotated 90; numeric n; n = 3;
+ for i=-n upto n:
+ for j=-2n upto 2n:
+ draw unit if (i+j) mod 4 < 2: reflectedabout (dir 135, dir -45) fi
+ shifted ((2i + j mod 2)*u + j*v);
endfor
+ endfor
endfig;
\end{mplibcode}
diff --git a/info/drawing-with-metapost/src/illusions-wonky-grid.pdf b/info/drawing-with-metapost/src/illusions-wonky-grid.pdf
new file mode 100644
index 0000000000..1b709dff61
--- /dev/null
+++ b/info/drawing-with-metapost/src/illusions-wonky-grid.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/incircle.mp b/info/drawing-with-metapost/src/incircle.mp
deleted file mode 100644
index 050beebf22..0000000000
--- a/info/drawing-with-metapost/src/incircle.mp
+++ /dev/null
@@ -1,38 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-vardef through(expr a, b, o) =
- save t; numeric t; t = 1+o/abs(a-b);
- t[b,a] -- t[a,b]
-enddef;
-
-beginfig(1);
- pair A, B, C;
- A = origin; B = 377 dir 10; C = 233 dir 70;
- pair a, b, m, t;
- a = A + 22 unitvector (C-A) + 22 unitvector (B-A);
- b = B + 22 unitvector (A-B) + 22 unitvector (C-B);
- m = whatever[A,a] = whatever [B,b]; t = whatever[A,B];
- t-m = whatever * (B-A) rotated 90;
-
- drawoptions(dashed evenly scaled 1/4 withcolor 1/2 white);
- draw t -- m;
- draw unitsquare scaled 5 rotated angle (B-A) shifted t;
- draw through(A, m, 10);
- draw through(B, m, 10);
- drawoptions();
- draw fullcircle scaled 2 abs (t-m) shifted m withcolor 2/3 red;
- draw A--B--C--cycle;
- dotlabel.top(btex $m$\thinspace\strut etex, m);
- dotlabel.bot(btex $t$ etex, t);
- dotlabel.bot(btex $A$ etex, A);
- dotlabel.urt(btex $B$ etex, B);
- dotlabel.top(btex $C$ etex, C);
- dotlabel.top(btex $a$ etex, a);
- dotlabel.top(btex $b$ etex, b);
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/line-caps-and-joins.mp b/info/drawing-with-metapost/src/line-caps-and-joins.mp
deleted file mode 100644
index cf52919d6e..0000000000
--- a/info/drawing-with-metapost/src/line-caps-and-joins.mp
+++ /dev/null
@@ -1,56 +0,0 @@
-\documentclass[border=2mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\begin{mplibcode}
-beginfig(1);
-numeric u; u = 32;
-z1 = right scaled u;
-z2 = z1 rotated 90;
-z3 = z2 rotated 90;
-z4 = z3 rotated 90;
-z5 = 1/2[z1,z2];
-z6 = 1/2[z2,z3];
-z7 = 1/2[z3,z4];
-z8 = 1/2[z4,z1];
-
-color tb, tr;
-tb = (.2,.2,.7);
-tr = 0.54 red;
-
-drawoptions (withpen pencircle scaled 2);
-picture p;
-for i=0 upto 2:
- for j=0 upto 2:
- linecap := i;
- linejoin := j;
- p := image(
- draw unitsquare shifted -(1/2,1/2) scaled 2u withcolor 7/8;
- label(decimal linecap, z7) withcolor tb;
- label(decimal linejoin, z8) withcolor tr;
- drawarrow z1--z3;
- draw z2--z4;
- drawdot(z5);
- drawdot(z6);
- drawarrow halfcircle scaled u rotated 180 shifted z4;
- ) shifted (5/2u*i, -11/4u*j);
- draw p;
- if (i=1) and (j=1): draw bbox p dashed withdots scaled 3/4
- withpen pencircle scaled 1/2
- ; fi
- endfor
- endfor
-
- label("linecap" infont "cmtt10" scaled 1.2, (5/2u, 7/4u));
- label("butt" infont "cmtt10" , ( 0, 5/4u)) withcolor tb;
- label("rounded" infont "cmtt10" , (5/2u, 5/4u)) withcolor tb;
- label("squared" infont "cmtt10" , (5/1u, 5/4u)) withcolor tb;
-
- label("linejoin" infont "cmtt10" scaled 1.2 rotated 90, (-7/4u, -11/4u));
- label("mitered" infont "cmtt10" rotated 90, (-5/4u,0)) withcolor tr;
- label("rounded" infont "cmtt10" rotated 90, (-5/4u,-11/4u)) withcolor tr;
- label("beveled" infont "cmtt10" rotated 90, (-5/4u,-11/2u)) withcolor tr;
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/line-caps-and-joins.pdf b/info/drawing-with-metapost/src/line-caps-and-joins.pdf
deleted file mode 100644
index c65cacdde4..0000000000
--- a/info/drawing-with-metapost/src/line-caps-and-joins.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/linear-graph.mp b/info/drawing-with-metapost/src/linear-graph.mp
deleted file mode 100644
index 396c9ccd4c..0000000000
--- a/info/drawing-with-metapost/src/linear-graph.mp
+++ /dev/null
@@ -1,52 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- numeric u, m, m', b, b';
- u = 1.44cm;
- b = 3.6u; b' = b + 1/2 u;
- m = -1; m' = 3/4 m;
-
- path xx, yy;
- xx = (left -- 5 right) scaled u;
- yy = xx rotated 90;
-
- numeric minx, maxx; path ff, gg;
- minx = xpart point 1/16 of xx;
- maxx = xpart point 15/16 of xx;
- ff = (minx, minx * m + b) -- (maxx, maxx * m + b);
- gg = (minx, minx * m' + b') -- (maxx, maxx * m' + b');
-
- z0 = point 0.4 of ff;
- z1 = point 0.54 of ff;
- z1 0 = whatever [point 0 of gg, point 1 of gg]; x1 0 = x0;
- z1 1 = whatever [point 0 of gg, point 1 of gg]; x1 1 = x1;
-
- forsuffixes @=0, 1:
- draw (x@, 0) -- z@ -- (0, y@) dashed evenly scaled 3/4;
- draw z@ -- z1 @ -- (0, y1 @) dashed withdots scaled 1/2;
- label.bot("$x_{" & decimal @ & "}$", (x@, 0));
- label.lft("$y_{" & decimal @ & "}$", (0, y@));
- label.lft("$y'_{" & decimal @ & "}$", (0, y1 @));
- endfor
-
- draw ff withcolor 2/3 red;
- draw gg withcolor 3/4 blue;
- drawarrow xx; drawarrow yy;
-
- label.rt("$x$", point 1 of xx);
- label.top("$y$", point 1 of yy);
-
- dotlabel.urt("$b$", (0, b));
- dotlabel.urt("$b'$", (0, b'));
-
- draw thelabel("slope: $m=" & decimal m & "$", 7 up)
- rotated angle (1, m) shifted point 2/3 of ff;
- draw thelabel("slope: $m'=" & decimal m' & "$", 7 up)
- rotated angle (1, m') shifted point 2/3 of gg;
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/listex.py b/info/drawing-with-metapost/src/listex.py
new file mode 100644
index 0000000000..4ef48fd54f
--- /dev/null
+++ b/info/drawing-with-metapost/src/listex.py
@@ -0,0 +1,131 @@
+'''Read a TeX .fls file and produce a consolidated, deduplicated list of the
+files involved. Optionally check for MP source files as well'''
+
+import argparse
+import pathlib
+import sys
+
+
+def get_files_from_fls(f, want_all):
+ '''resolve the names in the recorded list of files
+ and return a deduplicated, sorted list
+ '''
+ pwd = None
+ files = []
+ for line in f.read_text().splitlines():
+ key, name = line.split(None, 1)
+ if key == "PWD":
+ pwd = pathlib.Path(name)
+ continue
+
+ if name.startswith("."):
+ f = pwd / name
+ elif want_all:
+ f = pathlib.Path(name)
+ else:
+ continue
+
+ f = f.resolve()
+
+ if not f.is_file():
+ continue
+
+ if f.suffix in ('.aux', '.toc', '.log', '.maf'):
+ continue
+
+ if f.suffix.startswith('.mtc'):
+ continue
+
+ files.append(f)
+
+ return sorted(set(files))
+
+
+def get_source_files_for_pdfs(files):
+ '''Heuristically find the MP source for a PDF
+ '''
+ mp_source = []
+ for p in files:
+ # only PDFs...
+ if p.suffix != '.pdf':
+ continue
+
+ # but not the main PDF
+ if p.name == file_record.with_suffix('.pdf').name:
+ continue
+
+ pdfbytes = p.read_bytes()
+
+ if b'LuaTeX' in pdfbytes:
+ mp = p.with_suffix('.mp')
+ tex = p.with_suffix('.tex')
+ if mp.is_file():
+ mp_source.append(mp)
+ elif tex.is_file():
+ mp_source.append(tex)
+ else:
+ print(f'No source found for {p} (Luatex)', file=sys.stderr)
+
+ elif b'MetaPost' in pdfbytes:
+ mp_multi = pathlib.Path(p.stem[:-1]).with_suffix('.mp')
+ mp_single = p.with_suffix('.mp')
+ if mp_multi.is_file():
+ mp_source.append(mp_multi)
+ elif mp_single.is_file():
+ mp_source.append(mp_single)
+ else:
+ print(f'No source found for {p} (Plain MP)', file=sys.stderr)
+
+ else:
+ print(f'No source found for {p} (??)', file=sys.stderr)
+
+ mp_includes = []
+ for f in mp_source:
+ for line in f.read_text().splitlines():
+ if line.startswith("input "):
+ mp = f.with_stem(line.split()[1])
+ if mp.is_file():
+ mp_includes.append(mp)
+
+ return sorted(set(mp_source + mp_includes))
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument("file_record", help="TeX .FLS file")
+ parser.add_argument("--all", action="store_true",
+ help="Also files from /texmf")
+ parser.add_argument("--mp", action="store_true",
+ help="Also MP source files ")
+ args = parser.parse_args()
+
+ file_record = pathlib.Path(args.file_record).with_suffix(".fls")
+ # using with_suffix allows you to default to the tex name or no extension
+ # at all
+
+ if not file_record.is_file():
+ print("Cannot see", file_record, file=sys.stderr)
+ sys.exit(1)
+
+ file_record_mtime = file_record.stat().st_mtime
+
+ files = get_files_from_fls(file_record, args.all)
+ if args.mp:
+ files.extend(get_source_files_for_pdfs(files))
+
+ files = sorted(set(files))
+
+ need_to_recompile = False
+ for f in files:
+ if f.suffix in ('.tex', '.mp'):
+ if f.stat().st_mtime > file_record_mtime:
+ print(f, "has been updated since .FLS was created",
+ file=sys.stderr)
+ need_to_recompile = True
+
+ if need_to_recompile:
+ print("Please recompile with -recorder", file=sys.stderr)
+ sys.exit(1)
+
+ for f in files:
+ print(f)
diff --git a/info/drawing-with-metapost/src/marked-up-photo-with-grid.pdf b/info/drawing-with-metapost/src/marked-up-photo-with-grid.pdf
deleted file mode 100644
index ffd5a71b83..0000000000
--- a/info/drawing-with-metapost/src/marked-up-photo-with-grid.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/neo-labels-tte.mp b/info/drawing-with-metapost/src/neo-labels-tte.mp
index 1838e838f5..e55d8644b4 100644
--- a/info/drawing-with-metapost/src/neo-labels-tte.mp
+++ b/info/drawing-with-metapost/src/neo-labels-tte.mp
@@ -5,24 +5,24 @@
\mplibtextextlabel{enable} % <-- added option
\begin{document}
\begin{mplibcode}
- beginfig(1);
- for x = 0 upto 1:
- draw (80x,16) -- (80x, -68) withcolor 3/4[red, white];
- endfor
- for y = 0 upto 3:
- draw (0, -20y) -- (160, -20y) withcolor 3/4[red, white];
- endfor
+beginfig(1);
+ for x = 0 upto 1:
+ draw (80x,16) -- (80x, -68) withcolor 3/4[red, white];
+ endfor
+ for y = 0 upto 3:
+ draw (0, -20y) -- (160, -20y) withcolor 3/4[red, white];
+ endfor
- string s; s = "Hand gloves";
- draw s infont defaultfont shifted (0, 0);
- draw s infont "phvr8r" shifted (0, -20);
- draw TEX(s) shifted (0, -40);
- draw btex Hand gloves etex shifted (0, -60);
+ string s; s = "Hand gloves";
+ draw s infont defaultfont shifted (0, 0);
+ draw s infont "phvr8r" shifted (0, -20);
+ draw TEX(s) shifted (0, -40);
+ draw btex Hand gloves etex shifted (0, -60);
- dotlabel.urt(s, (80, 0));
- dotlabel.urt(s infont "phvr8r", (80, -20));
- dotlabel.urt(TEX(s), (80, -40));
- dotlabel.urt(btex Hand gloves etex, (80, -60));
- endfig;
+ dotlabel.urt(s, (80, 0));
+ dotlabel.urt(s infont "phvr8r", (80, -20));
+ dotlabel.urt(TEX(s), (80, -40));
+ dotlabel.urt(btex Hand gloves etex, (80, -60));
+endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/neo-labels.mp b/info/drawing-with-metapost/src/neo-labels.mp
index 8b1d60b840..68e78cd8d6 100644
--- a/info/drawing-with-metapost/src/neo-labels.mp
+++ b/info/drawing-with-metapost/src/neo-labels.mp
@@ -4,24 +4,24 @@
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
- beginfig(1);
- for x = 0 upto 1:
- draw (80x,16) -- (80x, -68) withcolor 3/4[red, white];
- endfor
- for y = 0 upto 3:
- draw (0, -20y) -- (160, -20y) withcolor 3/4[red, white];
- endfor
+beginfig(1);
+ for x = 0 upto 1:
+ draw (80x,16) -- (80x, -68) withcolor 3/4[red, white];
+ endfor
+ for y = 0 upto 3:
+ draw (0, -20y) -- (160, -20y) withcolor 3/4[red, white];
+ endfor
- string s; s = "Hand gloves";
- draw s infont defaultfont shifted (0, 0);
- draw s infont "phvr8r" shifted (0, -20);
- draw TEX(s) shifted (0, -40);
- draw btex Hand gloves etex shifted (0, -60);
+ string s; s = "Hand gloves";
+ draw s infont defaultfont shifted (0, 0);
+ draw s infont "phvr8r" shifted (0, -20);
+ draw TEX(s) shifted (0, -40);
+ draw btex Hand gloves etex shifted (0, -60);
- dotlabel.urt(s, (80, 0));
- dotlabel.urt(s infont "phvr8r", (80, -20));
- dotlabel.urt(TEX(s), (80, -40));
- dotlabel.urt(btex Hand gloves etex, (80, -60));
- endfig;
+ dotlabel.urt(s, (80, 0));
+ dotlabel.urt(s infont "phvr8r", (80, -20));
+ dotlabel.urt(TEX(s), (80, -40));
+ dotlabel.urt(btex Hand gloves etex, (80, -60));
+endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/neo-labels.pdf b/info/drawing-with-metapost/src/neo-labels.pdf
index e5a85a74cc..7710a30aa8 100644
--- a/info/drawing-with-metapost/src/neo-labels.pdf
+++ b/info/drawing-with-metapost/src/neo-labels.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/penrose-P3.mp b/info/drawing-with-metapost/src/neo-marked-up-photo-grid.mp
index 177581a305..5ec111c53a 100644
--- a/info/drawing-with-metapost/src/penrose-P3.mp
+++ b/info/drawing-with-metapost/src/neo-marked-up-photo-grid.mp
@@ -1,11 +1,11 @@
-\documentclass{standalone}
+\documentclass[border=1mm]{standalone}
\usepackage{luamplib}
\begin{document}
-\mplibtextextlabel{enable}
\begin{mplibcode}
-input penrose
beginfig(1);
- draw penrose(3);
+undraw unitsquare xscaled 360 yscaled 178;
+input neo-reference-grid
endfig;
\end{mplibcode}
\end{document}
+
diff --git a/info/drawing-with-metapost/src/neo-marked-up-photo-grid.pdf b/info/drawing-with-metapost/src/neo-marked-up-photo-grid.pdf
new file mode 100644
index 0000000000..c7d056e7ad
--- /dev/null
+++ b/info/drawing-with-metapost/src/neo-marked-up-photo-grid.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/marked-up-photo.mp b/info/drawing-with-metapost/src/neo-marked-up-photo.mp
index c208e79708..3e57bad1dd 100644
--- a/info/drawing-with-metapost/src/marked-up-photo.mp
+++ b/info/drawing-with-metapost/src/neo-marked-up-photo.mp
@@ -1,4 +1,4 @@
-\documentclass[border=1mm]{standalone}
+\documentclass{standalone}
\usepackage{luamplib}
\usepackage{graphicx}
\usepackage{fontspec}\setmainfont[Scale=0.6]{Helvetica}
@@ -7,25 +7,20 @@
\begin{mplibcode}
beginfig(1);
draw btex \includegraphics[width=5in]{glenshiel.jpg} etex;
-if false:
-for i=1 upto 36:
- draw (origin -- 180 up) shifted (10i, 0) withcolor if i mod 10 = 0: red else: 1/2 fi;
-endfor
-for i=1 upto 18:
- draw (origin -- 360 right) shifted (0, 10i) withcolor if i mod 10 = 0: red else: 1/2 fi;
-endfor
-fi
+% input neo-reference-grid
vardef callout@#(expr t, p, o) =
save T; picture T; T = thelabel.@#(t, p+o);
draw T; drawarrow p+o -- p cutbefore bbox T;
enddef;
-ahangle := 20; ahlength := 2; drawoptions(withpen pencircle scaled 1/4 withcolor 1/2 blue);
+ahangle := 20; ahlength := 2;
+drawoptions(withpen pencircle scaled 1/4 withcolor 1/2 blue);
callout.top("Sgurr na Ciste Dubhe", (80, 96), (-10, 20));
callout.top("Sgurr nan Spainteach", (100, 91), (6, 12));
label.top("\tiny Cuillin Ridge, Isle of Skye", (140, 81));
label.top("Sgurr na Carnach", (190, 90));
label.top("Sgurr Fhuaran", (282, 94));
-label.bot("\itshape View looking west from the summit of Saileag – 19 April 2005", point 5/2 of bbox currentpicture shifted 4 down);
+label.bot("\textit{Looking west from the summit of Saileag} – 19 April 2005",
+ point 5/2 of bbox currentpicture shifted 4 down);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/marked-up-photo.pdf b/info/drawing-with-metapost/src/neo-marked-up-photo.pdf
index fc3155d855..b968b0b548 100644
--- a/info/drawing-with-metapost/src/marked-up-photo.pdf
+++ b/info/drawing-with-metapost/src/neo-marked-up-photo.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/multi-line-labels.mp b/info/drawing-with-metapost/src/neo-multi-line-labels.mp
index 497189ed16..80da860f69 100644
--- a/info/drawing-with-metapost/src/multi-line-labels.mp
+++ b/info/drawing-with-metapost/src/neo-multi-line-labels.mp
@@ -7,16 +7,14 @@ beginfig(1);
label("\vbox{\hsize 4in It is a truth universally acknowledged,"
& " that a single man in possession of a good fortune,"
& " must be in want of a wife.\par}", origin);
-label(btex \vbox{\hsize 4in
- It is a truth universally acknowledged,
- that a single man in possession of a good fortune,
- must be in want of a wife.
- \par} etex, 128 down);
-label(btex
- \begin{tabular}{c}
- A way to get simple\\
- two line labels
- \end{tabular} etex, 256 down);
+label(btex \vbox{\hsize 4in\noindent
+ \textsc{It is a truth} universally acknowledged,
+ that a single man in possession of a good fortune,
+ must be in want of a wife.\par} etex, 128 down);
+label(btex \begin{tabular}{c}
+ A way to get simple\\
+ two line labels
+ \end{tabular} etex, 270 down);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/multi-line-labels.pdf b/info/drawing-with-metapost/src/neo-multi-line-labels.pdf
index ecc0cb7611..84a4de192a 100644
--- a/info/drawing-with-metapost/src/multi-line-labels.pdf
+++ b/info/drawing-with-metapost/src/neo-multi-line-labels.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/neo-reference-grid.mp b/info/drawing-with-metapost/src/neo-reference-grid.mp
new file mode 100644
index 0000000000..a6262bef52
--- /dev/null
+++ b/info/drawing-with-metapost/src/neo-reference-grid.mp
@@ -0,0 +1,15 @@
+% Adds a reference grid, sized to the contents of currentpicture
+% useful for marking up external images etc
+begingroup;
+ save llx, lly, urx, ury, u; u = 10;
+ (llx, lly) = llcorner currentpicture;
+ (urx, ury) = urcorner currentpicture;
+ drawoptions(withpen pencircle scaled 1/4);
+ for x = ceiling (llx / u) upto floor (urx / u):
+ draw (x*u, lly) -- (x*u, ury) withcolor if x mod u = 0: red else: 1/2 fi;
+ endfor
+ for y = ceiling (lly / u) upto floor (ury / u):
+ draw (llx, y*u) -- (urx, y*u) withcolor if y mod u = 0: red else: 1/2 fi;
+ endfor
+ drawoptions();
+endgroup;
diff --git a/info/drawing-with-metapost/src/neo-simple-circle-labels.mp b/info/drawing-with-metapost/src/neo-simple-circle-labels.mp
new file mode 100644
index 0000000000..3050c8673c
--- /dev/null
+++ b/info/drawing-with-metapost/src/neo-simple-circle-labels.mp
@@ -0,0 +1,16 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+path P; P = for i=0 upto 8: 50 dir 40i -- endfor cycle;
+draw P withcolor 2/3 red;
+for i=1 upto length P:
+ draw point i of P withpen pencircle scaled dotlabeldiam;
+ label("$p_{" & decimal i & "}$", point i of P scaled 1.2);
+endfor
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/neo-simple-circle-labels.pdf b/info/drawing-with-metapost/src/neo-simple-circle-labels.pdf
new file mode 100644
index 0000000000..07cffe8136
--- /dev/null
+++ b/info/drawing-with-metapost/src/neo-simple-circle-labels.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-snub-hexagon.mp b/info/drawing-with-metapost/src/neo-simple-number-line.mp
index 09310036f2..a2406b3219 100644
--- a/info/drawing-with-metapost/src/arch-snub-hexagon.mp
+++ b/info/drawing-with-metapost/src/neo-simple-number-line.mp
@@ -3,11 +3,12 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-input arch-snub-hex-parts
beginfig(1);
-draw P1 shifted 180 left;
-draw P2 shifted 180 right;
-currentpicture := currentpicture rotated 90;
+labeloffset := 5;
+draw (left--right) scaled 2in withcolor 2/3 red;
+for i=-4 upto 4:
+ dotlabel.bot("$" & decimal i & "$", (32i, 0));
+endfor
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/simple-number-line.pdf b/info/drawing-with-metapost/src/neo-simple-number-line.pdf
index bb798247c5..a43236dc09 100644
--- a/info/drawing-with-metapost/src/simple-number-line.pdf
+++ b/info/drawing-with-metapost/src/neo-simple-number-line.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/unicode.mp b/info/drawing-with-metapost/src/neo-unicode.mp
index 629ebe18e2..3f43b097b0 100644
--- a/info/drawing-with-metapost/src/unicode.mp
+++ b/info/drawing-with-metapost/src/neo-unicode.mp
@@ -5,7 +5,6 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
-
label("café noir £2.50", origin);
label(btex \vbox{\hsize 4in
Nous étions à l'Étude, quand le Proviseur entra, suivi d'un
diff --git a/info/drawing-with-metapost/src/unicode.pdf b/info/drawing-with-metapost/src/neo-unicode.pdf
index 53ca0238c1..53ca0238c1 100644
--- a/info/drawing-with-metapost/src/unicode.pdf
+++ b/info/drawing-with-metapost/src/neo-unicode.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/new-fangled-transparency.mp b/info/drawing-with-metapost/src/new-fangled-transparency.mp
new file mode 100644
index 0000000000..6aa7d56d59
--- /dev/null
+++ b/info/drawing-with-metapost/src/new-fangled-transparency.mp
@@ -0,0 +1,35 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{dwmpcode}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+def withalpha expr a =
+ withprescript "tr_alternative=2"
+ withprescript "tr_transparency=" & decimal a
+enddef;
+beginfig(1);
+path r, g, b; r = fullcircle scaled 48 shifted 12 up; g = r rotated 120; b = g rotated 120;
+picture P[];
+
+for i=0 upto 7:
+ numeric a; a = 1/8 + i/8;
+ P[i] = image(
+ fill r withcolor 1/2[white, red] withalpha a;
+ fill g withcolor 1/2[white, green] withalpha a;
+ fill b withcolor 1/2[white, blue] withalpha a;
+ draw r withcolor 1/2;
+ draw g withcolor 1/2;
+ draw b withcolor 1/2;
+ label.bot(TEX("\mpl{withalpha " & decimal a & "}") scaled 0.8, point 1/2 of bbox currentpicture);
+ );
+endfor
+
+for i=0 upto 7:
+ draw P[i] shifted 120(i div 4, -(i mod 4)) ;
+endfor
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/new-fangled-transparency.pdf b/info/drawing-with-metapost/src/new-fangled-transparency.pdf
new file mode 100644
index 0000000000..4967e36bea
--- /dev/null
+++ b/info/drawing-with-metapost/src/new-fangled-transparency.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/new-fangled-trilobe.mp b/info/drawing-with-metapost/src/new-fangled-trilobe.mp
new file mode 100644
index 0000000000..5ffc34f7e4
--- /dev/null
+++ b/info/drawing-with-metapost/src/new-fangled-trilobe.mp
@@ -0,0 +1,46 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+def withalpha expr a =
+ withprescript "tr_alternative=2"
+ withprescript "tr_transparency=" & decimal a
+enddef;
+beginfig(1);
+ numeric u; u = 24; color shade[]; string name[];
+ shade0 = 1/256(166, 57, 65); name0 = "R"; % rouge
+ shade1 = 1/256(219, 170, 72); name1 = "J"; % jaune
+ shade2 = 1/256(36, 54, 84); name2 = "B"; % bleu
+ path edge[], arc[], ring[];
+ for r=1 upto 8:
+ edge[r] = fullcircle rotated 90 scaled (2r * u)
+ shifted (0, 7u / sqrt 3) rotated 120;
+ endfor
+ for i=2 upto 8:
+ edge[i] := edge[i] cutbefore edge8 rotated 120
+ cutafter edge8 rotated -120;
+ endfor
+ arc0 = point 0 of edge1 for i=2 upto 7: .. point 0 of edge[i] endfor;
+ arc1 = point 0 of edge1 for i=2 upto 7: .. point infinity of edge[i] endfor;
+ for i=1 upto 7:
+ ring[i] = edge[i] -- subpath (i-1, i) of arc1 --
+ reverse edge[i+1] -- subpath (i, i-1) of arc0 -- cycle;
+ endfor
+ for r=0, 1, 2: for i=1 upto 6: % fills first
+ fill ring[i] rotated 120r withcolor (i/6)[white, shade[r]] withalpha 0.9;
+ for k=0, 1:
+ label("$\textsf{" & name[r] & "}" if i<6: & "_" & decimal i fi & "$",
+ point i-1/2 of arc[k] shifted (-8,-2) rotated 120r);
+ endfor
+ endfor endfor
+ for r=0, 1, 2: % now lines on top
+ for i=1 upto 7:
+ draw edge[i] rotated 120r withpen pencircle scaled 1 withcolor 7/8;
+ endfor
+ draw arc0 rotated 120r; draw arc1 rotated 120r;
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/new-fangled-trilobe.pdf b/info/drawing-with-metapost/src/new-fangled-trilobe.pdf
new file mode 100644
index 0000000000..be570795c2
--- /dev/null
+++ b/info/drawing-with-metapost/src/new-fangled-trilobe.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/nine-point-circle.mp b/info/drawing-with-metapost/src/nine-point-circle.mp
deleted file mode 100644
index 8366bb3c1b..0000000000
--- a/info/drawing-with-metapost/src/nine-point-circle.mp
+++ /dev/null
@@ -1,54 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- pair A, B, C, D, N, M, p, q, r;
- A = origin; B = 377 dir 10; C = 233 dir 70;
- % pedal points
- p = whatever[B, C]; A - p = whatever * (B-C) rotated 90;
- q = whatever[C, A]; B - q = whatever * (C-A) rotated 90;
- r = whatever[A, B]; C - r = whatever * (A-B) rotated 90;
-
- D = whatever[A, p] = whatever[B, q];
- N = 1/4(A + B + C + D);
- M = D rotatedabout(N, 180); % M is also the circumcentre
-
- path circumcircle, nine_point_circle;
- nine_point_circle = fullcircle scaled 2 abs(N - 1/2[A, B]) shifted N;
- circumcircle = fullcircle scaled 2 abs(M - A) shifted M;
-
- draw nine_point_circle withcolor 3/4 red;
- draw circumcircle withcolor 1/2[3/4 blue, white];
-
- drawoptions(dashed evenly scaled 1/4 withcolor 1/2);
- draw 1/2[A,B] -- M -- 1/2[B, C];
- draw 1/2[C,A] -- M -- D;
- draw A -- p;
- draw B -- q;
- draw C -- r;
-
- drawoptions(withpen pencircle scaled 1/4);
- draw fullcircle scaled 2 shifted 1/2[A, B];
- draw fullcircle scaled 2 shifted 1/2[A, C];
- draw fullcircle scaled 2 shifted 1/2[A, D];
- draw fullcircle scaled 2 shifted 1/2[B, C];
- draw fullcircle scaled 2 shifted 1/2[B, D];
- draw fullcircle scaled 2 shifted 1/2[C, D];
- draw fullcircle scaled 2 shifted p;
- draw fullcircle scaled 2 shifted q;
- draw fullcircle scaled 2 shifted r;
-
- drawoptions();
- draw A--B--C--cycle;
- dotlabel.llft("$A$", A);
- dotlabel.rt("$B$", B);
- dotlabel.ulft("$C$", C);
- dotlabel.urt("\ $D$", D);
- dotlabel.llft("$M$", M);
- dotlabel.llft("$N$", N);
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/numbered-axes.mp b/info/drawing-with-metapost/src/numbered-axes.mp
deleted file mode 100644
index 47ee8f4ec9..0000000000
--- a/info/drawing-with-metapost/src/numbered-axes.mp
+++ /dev/null
@@ -1,27 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\usepackage{dwmpcode}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- numeric u, v; u = 40; v = 29;
- path xx, yy;
- xx = (3/2 left -- 5 right) scaled u;
- yy = (3/2 down -- 4 up) scaled v;
- for x=-1, 1, 2, 3, 4:
- draw yy shifted (x * u, 0) withcolor 7/8; % grid
- draw (down--up) shifted (x * u, 0); % ticks
- label("$" & decimal x & "$", (x * u, -8));
- endfor
- for y=-1, 1, 2, 3:
- draw xx shifted (0, y * v) withcolor 7/8; % grid
- draw (left--right) shifted (0, y * v); % ticks
- label("$" & decimal y & "$", (-10, y * v));
- endfor
- drawarrow xx; label.rt("$x$", point 1 of xx);
- drawarrow yy; label.top("$y$", point 1 of yy);
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/overlaps-missing-filler.mp b/info/drawing-with-metapost/src/overlaps-missing-filler.mp
deleted file mode 100644
index edee192c1c..0000000000
--- a/info/drawing-with-metapost/src/overlaps-missing-filler.mp
+++ /dev/null
@@ -1,16 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(2);
- path A, B;
- A = fullcircle scaled 2.5cm;
- B = fullcircle scaled 1.8cm shifted (1cm,0);
- fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;
- label.rt(btex Where has the fill colour gone? etex, point 0 of B shifted (1cm,0));
- label.ulft(btex $A$ etex, point 3 of A);
- label.urt(btex $B$ etex, point 1 of B);
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/pairs-complex-inverse-and-sqrt.mp b/info/drawing-with-metapost/src/pairs-complex-inverse-and-sqrt.mp
new file mode 100644
index 0000000000..f8c9461063
--- /dev/null
+++ b/info/drawing-with-metapost/src/pairs-complex-inverse-and-sqrt.mp
@@ -0,0 +1,47 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef zinverse(expr z) = 1/abs z * dir - angle z enddef;
+vardef zsqrt(expr z) =
+ if abs z > 0: sqrt(abs z) * dir 1/2 angle fi z
+enddef;
+
+z1 = 0.8 dir 148; z2 = 1.5 dir 60; z3 = 1.0 dir 42;
+
+input colorbrewer-rgb
+numeric u; u = 42; ahangle := 30;
+picture axes; axes = image(
+ path xx, yy; xx = (left--right) scaled 1.2 u; yy = xx rotated 90;
+ draw fullcircle scaled 2u;
+ drawarrow xx; label.rt("$\Re$", point 1 of xx);
+ drawarrow yy; label.top("$\Im$", point 1 of yy);
+);
+vardef connect(expr a, b, shade) =
+ save A, B; pair A, B; A = a scaled u; B = b scaled u;
+ drawarrow A -- origin -- B
+ cutafter fullcircle scaled 5 shifted B withcolor shade;
+ draw A withpen pencircle scaled dotlabeldiam;
+ draw B withpen pencircle scaled dotlabeldiam;
+ draw B withpen pencircle scaled 2/3 dotlabeldiam withcolor white;
+enddef;
+picture P[];
+P1 = image(draw axes withcolor 3/4;
+ label.lrt("\small\texttt{zinverse()}", ulcorner axes shifted 10 left);
+ connect(z1, zinverse(z1), SetTwo 7 3);
+ connect(z2, zinverse(z2), SetTwo 7 4);
+ connect(z3, zinverse(z3), SetTwo 7 5);
+);
+P2 = image(draw axes withcolor 3/4;
+ label.lrt("\small\texttt{zsqrt()}", ulcorner axes);
+ connect(z1, zsqrt(z1), SetTwo 7 3);
+ connect(z2, zsqrt(z2), SetTwo 7 4);
+ connect(z3, zsqrt(z3), SetTwo 7 5);
+);
+beginfig(1);
+ labeloffset := 12; label.lft(P1, origin); label.rt(P2, origin);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/complex-inverse-and-sqrt.pdf b/info/drawing-with-metapost/src/pairs-complex-inverse-and-sqrt.pdf
index b1dae07134..1e4c751540 100644
--- a/info/drawing-with-metapost/src/complex-inverse-and-sqrt.pdf
+++ b/info/drawing-with-metapost/src/pairs-complex-inverse-and-sqrt.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pairs-complex-operators.mp b/info/drawing-with-metapost/src/pairs-complex-operators.mp
new file mode 100644
index 0000000000..2a8e760f6e
--- /dev/null
+++ b/info/drawing-with-metapost/src/pairs-complex-operators.mp
@@ -0,0 +1,32 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ numeric u; u = 1cm;
+ z1 = 2 dir 15; z2 = 1.2 dir 60;
+ z3 = z1+z2; z4 = z1 zscaled z2; z5 = (x1,-y1);
+ drawoptions(withcolor 2/3 white);
+ draw (1/2 left -- 3 right) scaled u ;
+ draw (1/2 down -- 3 up ) scaled u ;
+ draw subpath (0,3) of fullcircle scaled 2u rotated -22.5;
+ drawoptions();
+ dotlabel.lrt (btex $\scriptstyle 1$ etex, (u,0));
+ dotlabel.ulft(btex $\scriptstyle i$ etex, (0,u));
+ interim ahangle := 30;
+ forsuffixes @=1,2,3,4,5:
+ x@ := x@ * u; y@ := y@ * u;
+ drawarrow origin -- z@
+ cutafter fullcircle scaled 5 shifted z@
+ withcolor 2/3 if @ < 3: blue else: red fi;
+ endfor
+ fill fullcircle scaled dotlabeldiam;
+ dotlabel.rt (btex $A$ etex, z1);
+ dotlabel.urt(btex $B$ etex, z2);
+ dotlabel.top(btex $A+B$ etex, z3);
+ dotlabel.top(btex $A \times B$ etex, z4);
+ dotlabel.rt (btex $\bar{A}$ etex, z5);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/complex-operators.pdf b/info/drawing-with-metapost/src/pairs-complex-operators.pdf
index 11370d7ce7..11370d7ce7 100644
--- a/info/drawing-with-metapost/src/complex-operators.pdf
+++ b/info/drawing-with-metapost/src/pairs-complex-operators.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pairs-double-dragon.mp b/info/drawing-with-metapost/src/pairs-double-dragon.mp
new file mode 100644
index 0000000000..b9c5019a12
--- /dev/null
+++ b/info/drawing-with-metapost/src/pairs-double-dragon.mp
@@ -0,0 +1,44 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\mplibnumbersystem{double}
+\begin{mplibcode}
+vardef fizz(expr X) =
+ pair m, n; m = right; n = origin;
+ numeric x; x = X;
+ forever:
+ exitif x = 0;
+ m := m zscaled (-1/2, -1/2);
+ if odd x:
+ n := n + m;
+ fi
+ x := x div 2;
+ endfor
+ n
+enddef;
+beginfig(1);
+ numeric s, t; s = 256; t = 4;
+ for n=0 upto (s/t*s/t-1):
+ draw fizz(n) scaled s
+ withpen pencircle scaled t
+ withcolor ((7+n mod 8)/16)[1/2 blue, white];
+ endfor;
+ path xx, yy;
+ xx = (left--right) scaled (s+8);
+ yy = xx rotated 90;
+ for i=-1 upto 1:
+ draw xx shifted (0, s*i) withpen pencircle scaled 1/8;
+ draw yy shifted (s*i, 0) withpen pencircle scaled 1/8;
+ if i=0:
+ dotlabel.lrt("$-i$", (i, -1) scaled s);
+ dotlabel.lrt("$+i$", (i, +1) scaled s);
+ else:
+ dotlabel.lrt("$" & decimal i & "-i$", (i,-1) scaled s);
+ dotlabel.lrt("$" & decimal i & "$", (i, 0) scaled s);
+ dotlabel.lrt("$" & decimal i & "+i$", (i, 1) scaled s);
+ fi
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pairs-double-dragon.pdf b/info/drawing-with-metapost/src/pairs-double-dragon.pdf
new file mode 100644
index 0000000000..211a65dd0e
--- /dev/null
+++ b/info/drawing-with-metapost/src/pairs-double-dragon.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-function.mp b/info/drawing-with-metapost/src/pairs-random-function.mp
index d2c13dd10b..d2c13dd10b 100644
--- a/info/drawing-with-metapost/src/random-function.mp
+++ b/info/drawing-with-metapost/src/pairs-random-function.mp
diff --git a/info/drawing-with-metapost/src/random-function.pdf b/info/drawing-with-metapost/src/pairs-random-function.pdf
index 8ec56fba8e..8ec56fba8e 100644
--- a/info/drawing-with-metapost/src/random-function.pdf
+++ b/info/drawing-with-metapost/src/pairs-random-function.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-selection.mp b/info/drawing-with-metapost/src/pairs-random-selection.mp
index d77f7fc141..d77f7fc141 100644
--- a/info/drawing-with-metapost/src/random-selection.mp
+++ b/info/drawing-with-metapost/src/pairs-random-selection.mp
diff --git a/info/drawing-with-metapost/src/random-selection.pdf b/info/drawing-with-metapost/src/pairs-random-selection.pdf
index 54b7a91dc6..54b7a91dc6 100644
--- a/info/drawing-with-metapost/src/random-selection.pdf
+++ b/info/drawing-with-metapost/src/pairs-random-selection.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/paths-antireuleaux-set.mp b/info/drawing-with-metapost/src/paths-antireuleaux-set.mp
new file mode 100644
index 0000000000..0d0434d2ee
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-antireuleaux-set.mp
@@ -0,0 +1,24 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+\mplibtextextlabel{enable}
+vardef antireuleaux(expr n, r) =
+ save a; numeric a; a = 90/n;
+ for t = 0 step 4a until 359:
+ (0, r) rotated t {left rotated (3a + t)} .. {left rotated (a + t)}
+ endfor cycle
+enddef;
+vardef median(expr p) = origin for i=1 upto length p: + point i of p / length p endfor enddef;
+input colorbrewer-rgb
+beginfig(1);
+ for n = 3 upto 7:
+ path p; p = antireuleaux(n, 42) shifted (90n, 0);
+ pair m; m = point (n+1)/2 of p;
+ fill p withcolor if odd n: Oranges else: Blues fi 8 2;
+ draw p;
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/paths-antireuleaux-set.pdf b/info/drawing-with-metapost/src/paths-antireuleaux-set.pdf
new file mode 100644
index 0000000000..a137db48b0
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-antireuleaux-set.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/paths-area-under-graph.mp b/info/drawing-with-metapost/src/paths-area-under-graph.mp
new file mode 100644
index 0000000000..5869cf25e2
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-area-under-graph.mp
@@ -0,0 +1,38 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+ahangle := 30;
+beginfig(1);
+ numeric u;
+ u = 42;
+ path xx, yy, f;
+ xx = (1/4 left -- 17/4 right) scaled u;
+ yy = (1/4 down -- 9/4 up) scaled u;
+
+ f = ((15/32,32/15) for x = 1/2 step 1/8 until 33/8: .. (x,1/x) endfor) scaled u;
+
+ path A; A = % keep next on it's own line....
+ buildcycle(yy shifted (u,0), f, yy shifted (2.71828u,0), xx)
+ ;
+ fill A withcolor Blues 8 2;
+
+ drawoptions(withcolor 3/4);
+ for x=1 upto 4:
+ draw yy shifted (x*u,0) cutafter (xx shifted (0, ypart point 0 of f));
+ endfor
+ for y=1 upto 2:
+ draw xx shifted (0,y*u) cutafter (yy shifted (xpart point infinity of f,0));
+ endfor
+
+ drawoptions();
+ draw f withcolor Reds 8 7;
+ drawarrow xx;
+ drawarrow yy;
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/paths-area-under-graph.pdf b/info/drawing-with-metapost/src/paths-area-under-graph.pdf
new file mode 100644
index 0000000000..4ff0a26be0
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-area-under-graph.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-fixed-polygon.mp b/info/drawing-with-metapost/src/paths-fixed-polygon.mp
index 793b4fac8b..793b4fac8b 100644
--- a/info/drawing-with-metapost/src/closed-fixed-polygon.mp
+++ b/info/drawing-with-metapost/src/paths-fixed-polygon.mp
diff --git a/info/drawing-with-metapost/src/closed-fixed-polygon.pdf b/info/drawing-with-metapost/src/paths-fixed-polygon.pdf
index c53cf71886..c53cf71886 100644
--- a/info/drawing-with-metapost/src/closed-fixed-polygon.pdf
+++ b/info/drawing-with-metapost/src/paths-fixed-polygon.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/little-hexagon.mp b/info/drawing-with-metapost/src/paths-little-hexagon.mp
index 102117cfb0..102117cfb0 100644
--- a/info/drawing-with-metapost/src/little-hexagon.mp
+++ b/info/drawing-with-metapost/src/paths-little-hexagon.mp
diff --git a/info/drawing-with-metapost/src/little-hexagon.pdf b/info/drawing-with-metapost/src/paths-little-hexagon.pdf
index 5a3ea39922..5a3ea39922 100644
--- a/info/drawing-with-metapost/src/little-hexagon.pdf
+++ b/info/drawing-with-metapost/src/paths-little-hexagon.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/open-triangle.mp b/info/drawing-with-metapost/src/paths-open-triangle.mp
index 5535611558..5535611558 100644
--- a/info/drawing-with-metapost/src/open-triangle.mp
+++ b/info/drawing-with-metapost/src/paths-open-triangle.mp
diff --git a/info/drawing-with-metapost/src/open-triangle.pdf b/info/drawing-with-metapost/src/paths-open-triangle.pdf
index 16986eacca..16986eacca 100644
--- a/info/drawing-with-metapost/src/open-triangle.pdf
+++ b/info/drawing-with-metapost/src/paths-open-triangle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/overlaps-default-fillers.mp b/info/drawing-with-metapost/src/paths-overlaps-default-fillers.mp
index 5137cdf984..5137cdf984 100644
--- a/info/drawing-with-metapost/src/overlaps-default-fillers.mp
+++ b/info/drawing-with-metapost/src/paths-overlaps-default-fillers.mp
diff --git a/info/drawing-with-metapost/src/overlaps-default-fillers.pdf b/info/drawing-with-metapost/src/paths-overlaps-default-fillers.pdf
index 51a3e0ef52..51a3e0ef52 100644
--- a/info/drawing-with-metapost/src/overlaps-default-fillers.pdf
+++ b/info/drawing-with-metapost/src/paths-overlaps-default-fillers.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/paths-overlaps-missing-filler.mp b/info/drawing-with-metapost/src/paths-overlaps-missing-filler.mp
new file mode 100644
index 0000000000..4aaeeb6937
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-overlaps-missing-filler.mp
@@ -0,0 +1,18 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+path A, B;
+A = fullcircle scaled 2.5cm;
+B = fullcircle scaled 1.8cm shifted (1cm,0);
+fill buildcycle(A,B) withcolor .8[blue,white];
+drawarrow A;
+drawarrow B;
+label.ulft(btex $A$ etex, point 3 of A);
+label.urt(btex $B$ etex, point 1 of B);
+label.rt(btex Where has the fill colour gone? etex, point 0 of B shifted (1cm,0));
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/overlaps-missing-filler.pdf b/info/drawing-with-metapost/src/paths-overlaps-missing-filler.pdf
index 4bf91ed568..4bf91ed568 100644
--- a/info/drawing-with-metapost/src/overlaps-missing-filler.pdf
+++ b/info/drawing-with-metapost/src/paths-overlaps-missing-filler.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/overlaps.mp b/info/drawing-with-metapost/src/paths-overlaps.mp
index d08b934249..d08b934249 100644
--- a/info/drawing-with-metapost/src/overlaps.mp
+++ b/info/drawing-with-metapost/src/paths-overlaps.mp
diff --git a/info/drawing-with-metapost/src/overlaps.pdf b/info/drawing-with-metapost/src/paths-overlaps.pdf
index f076ef2b7c..f076ef2b7c 100644
--- a/info/drawing-with-metapost/src/overlaps.pdf
+++ b/info/drawing-with-metapost/src/paths-overlaps.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-points.mp b/info/drawing-with-metapost/src/paths-points.mp
index 9abf287338..9abf287338 100644
--- a/info/drawing-with-metapost/src/closed-points.mp
+++ b/info/drawing-with-metapost/src/paths-points.mp
diff --git a/info/drawing-with-metapost/src/closed-points.pdf b/info/drawing-with-metapost/src/paths-points.pdf
index f99b1bbf2f..f99b1bbf2f 100644
--- a/info/drawing-with-metapost/src/closed-points.pdf
+++ b/info/drawing-with-metapost/src/paths-points.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/paths-polygon-chain.mp b/info/drawing-with-metapost/src/paths-polygon-chain.mp
new file mode 100644
index 0000000000..163fa652dc
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-polygon-chain.mp
@@ -0,0 +1,24 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef poly expr n of p =
+ clearxy; z0 = point 0 of p; z1 = point 1 of p;
+ for i=2 upto n-1:
+ z[i] = z[i-2] rotatedabout(z[i-1], 360/n-180);
+ endfor
+ for i=0 upto n-1: z[i] -- endfor cycle
+enddef;
+beginfig(1);
+ path P[]; P3 = for i=0 upto 2: 6 up rotated 120i -- endfor cycle;
+ fill P3 withcolor 3/4 red; undraw P3;
+ for n = 4 upto 23:
+ numeric m; m = floor(n / 2);
+ P[n] = poly n of subpath (m, m-1) of P[n-1];
+ fill P[n] withcolor (n/48)[3/4 if odd n: red else: blue fi, white];
+ undraw P[n]; label(decimal n, center P[n]) withcolor white;
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/paths-polygon-chain.pdf b/info/drawing-with-metapost/src/paths-polygon-chain.pdf
new file mode 100644
index 0000000000..dadf60b9de
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-polygon-chain.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-polygon-tops.mp b/info/drawing-with-metapost/src/paths-polygon-tops.mp
index 9943092ea8..9943092ea8 100644
--- a/info/drawing-with-metapost/src/closed-polygon-tops.mp
+++ b/info/drawing-with-metapost/src/paths-polygon-tops.mp
diff --git a/info/drawing-with-metapost/src/closed-polygon-tops.pdf b/info/drawing-with-metapost/src/paths-polygon-tops.pdf
index 3c4a736834..3c4a736834 100644
--- a/info/drawing-with-metapost/src/closed-polygon-tops.pdf
+++ b/info/drawing-with-metapost/src/paths-polygon-tops.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-polygons.mp b/info/drawing-with-metapost/src/paths-polygons.mp
index 22d4e42f97..22d4e42f97 100644
--- a/info/drawing-with-metapost/src/closed-polygons.mp
+++ b/info/drawing-with-metapost/src/paths-polygons.mp
diff --git a/info/drawing-with-metapost/src/closed-polygons.pdf b/info/drawing-with-metapost/src/paths-polygons.pdf
index 4e827ad6d9..4e827ad6d9 100644
--- a/info/drawing-with-metapost/src/closed-polygons.pdf
+++ b/info/drawing-with-metapost/src/paths-polygons.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-reuleaux-geometry.mp b/info/drawing-with-metapost/src/paths-reuleaux-geometry.mp
index f4e69f3b51..f4e69f3b51 100644
--- a/info/drawing-with-metapost/src/closed-reuleaux-geometry.mp
+++ b/info/drawing-with-metapost/src/paths-reuleaux-geometry.mp
diff --git a/info/drawing-with-metapost/src/closed-reuleaux-geometry.pdf b/info/drawing-with-metapost/src/paths-reuleaux-geometry.pdf
index 190c7b6b22..190c7b6b22 100644
--- a/info/drawing-with-metapost/src/closed-reuleaux-geometry.pdf
+++ b/info/drawing-with-metapost/src/paths-reuleaux-geometry.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-reuleaux-set.mp b/info/drawing-with-metapost/src/paths-reuleaux-set.mp
index 4088ea8421..4088ea8421 100644
--- a/info/drawing-with-metapost/src/closed-reuleaux-set.mp
+++ b/info/drawing-with-metapost/src/paths-reuleaux-set.mp
diff --git a/info/drawing-with-metapost/src/closed-reuleaux-set.pdf b/info/drawing-with-metapost/src/paths-reuleaux-set.pdf
index 9863d3d1cf..9863d3d1cf 100644
--- a/info/drawing-with-metapost/src/closed-reuleaux-set.pdf
+++ b/info/drawing-with-metapost/src/paths-reuleaux-set.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/saturn-code.mp b/info/drawing-with-metapost/src/paths-saturn.mp
index 9e80e0a492..1109dee168 100644
--- a/info/drawing-with-metapost/src/saturn-code.mp
+++ b/info/drawing-with-metapost/src/paths-saturn.mp
@@ -1,3 +1,9 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
path globe, gap, ring[], limb[];
globe = fullcircle scaled 2cm;
gap = fullcircle xscaled 3cm yscaled .8cm;
@@ -15,3 +21,6 @@ picture saturn; saturn = image(
fill limb2 withcolor .2 red + .1 green + .7 white;
);
draw saturn rotated 30;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/saturn.pdf b/info/drawing-with-metapost/src/paths-saturn.pdf
index 3ba35ab965..3ba35ab965 100644
--- a/info/drawing-with-metapost/src/saturn.pdf
+++ b/info/drawing-with-metapost/src/paths-saturn.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/paths-schlafli-polygons.mp b/info/drawing-with-metapost/src/paths-schlafli-polygons.mp
new file mode 100644
index 0000000000..e0939c1f19
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-schlafli-polygons.mp
@@ -0,0 +1,28 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+
+vardef gcd(expr a, b) =
+ if b = 0: a else: gcd(b, a mod b) fi
+enddef;
+
+beginfig(1);
+ for n=2 upto 24:
+ for s=1 upto floor n/2:
+ pair p; p = (12n - 24s, -24n);
+ path gon; gon = for t=0 upto n/gcd(s,n) - 1:
+ 10 up rotated (360/n * s * t) --
+ endfor cycle;
+ if (n mod s = 0):
+ fill gon shifted p withcolor PuBuGn[9][1+floor (n/s/6)];
+ label("$" & decimal (n/s) & "$", p);
+ fi
+ draw gon shifted p withpen pencircle scaled 1/8;
+ endfor
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/gons.pdf b/info/drawing-with-metapost/src/paths-schlafli-polygons.pdf
index acdbb350d8..545a62a9ef 100644
--- a/info/drawing-with-metapost/src/gons.pdf
+++ b/info/drawing-with-metapost/src/paths-schlafli-polygons.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-standards.mp b/info/drawing-with-metapost/src/paths-standards.mp
index a3296e6af2..331bb4fb04 100644
--- a/info/drawing-with-metapost/src/closed-standards.mp
+++ b/info/drawing-with-metapost/src/paths-standards.mp
@@ -5,8 +5,8 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-path unitse; unitse = superellipse(1/2 right, 1/2 up, 1/2 left, 1/2 down,.8);
-path xx, yy; xx = (left -- right) scaled 144; yy = (down -- up) scaled 89;
+path unitse; unitse = superellipse(1/2 right, 1/2 up, 1/2 left, 1/2 down, 13/16);
+path xx, yy; xx = 72 left -- 144 right; yy = 42 down -- 89 up;
path u, c, s;
u = unitsquare scaled 72;
c = fullcircle scaled 72;
diff --git a/info/drawing-with-metapost/src/closed-standards.pdf b/info/drawing-with-metapost/src/paths-standards.pdf
index 7f3a42a63e..814093509f 100644
--- a/info/drawing-with-metapost/src/closed-standards.pdf
+++ b/info/drawing-with-metapost/src/paths-standards.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/paths-superellipses.mp b/info/drawing-with-metapost/src/paths-superellipses.mp
new file mode 100644
index 0000000000..88e3c57dc6
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-superellipses.mp
@@ -0,0 +1,26 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+def gcd(expr a, b) = if b = 0: a else: gcd(b, a mod b) fi enddef;
+
+beginfig(1);
+
+ for s = 20 upto 31:
+ pair z; z = (75s mod 300, if s < 20: 80 elseif s < 24: 0 elseif s < 28: -80 else: -160 fi);
+ path S; S = superellipse(36 right, 36 up, 36 left, 36 down, 1/32 s);
+ if (23 < s) and (s < 28):
+ fill S shifted z withcolor 15/16[blue, white];
+ fi
+ draw S shifted z;
+ numeric n, d, g; g = gcd(s, 32); n = s/g; d = 32/g;
+ label("$\frac{" & decimal n & "}{" & decimal d & "}$", z);
+ endfor
+
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/paths-superellipses.pdf b/info/drawing-with-metapost/src/paths-superellipses.pdf
new file mode 100644
index 0000000000..32791d6386
--- /dev/null
+++ b/info/drawing-with-metapost/src/paths-superellipses.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/closed-triangles.mp b/info/drawing-with-metapost/src/paths-triangles.mp
index b39a9bbf92..b39a9bbf92 100644
--- a/info/drawing-with-metapost/src/closed-triangles.mp
+++ b/info/drawing-with-metapost/src/paths-triangles.mp
diff --git a/info/drawing-with-metapost/src/closed-triangles.pdf b/info/drawing-with-metapost/src/paths-triangles.pdf
index e42164b4b7..e42164b4b7 100644
--- a/info/drawing-with-metapost/src/closed-triangles.pdf
+++ b/info/drawing-with-metapost/src/paths-triangles.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/penrose-P3.pdf b/info/drawing-with-metapost/src/penrose-P3.pdf
deleted file mode 100644
index 71c9c5d98b..0000000000
--- a/info/drawing-with-metapost/src/penrose-P3.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/penrose-stages.mp b/info/drawing-with-metapost/src/penrose-stages.mp
deleted file mode 100644
index 94f3800b4c..0000000000
--- a/info/drawing-with-metapost/src/penrose-stages.mp
+++ /dev/null
@@ -1,39 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input penrose
-beginfig(1);
- path s, t; phi = 1.61803398875;
- s = unitsquare shifted -(1/2, 1/2) rotated 45 xscaled phi yscaled 2 sind(36) scaled 20;
- t = unitsquare shifted -(1/2, 1/2) rotated 45 xscaled (1/phi) yscaled 2 sind(72) scaled 20;
- picture p[];
- p1 = image(
- draw (left--right) scaled 30 dashed evenly;
- draw s;
- );
- p3 = image(
- draw (left--right) scaled 13 dashed evenly;
- draw t;
- ) rotated 90 shifted 130 right;
- p2 = image(
- draw subpath (1, 3) of s -- cycle dashed withdots scaled 1/16 withpen pencircle scaled 1/8 withcolor 1/2;
- inflate_wide(3, 1, point 1 of s, point 2 of s, point 3 of s);
- ) shifted 64 right;
- p4 = image(
- draw subpath (1, 3) of t -- cycle dashed withdots scaled 1/16 withpen pencircle scaled 1/8 withcolor 1/2;
- inflate_tall(3, 1, point 1 of t, point 2 of t, point 3 of t);
- ) rotated 90 shifted 200 right;
- ahangle := 30;
- draw p1;
- draw p2;
- draw p3;
- draw p4;
- drawarrow (7 left -- 8 right) shifted point 7/4 of bbox p1 withcolor .67 red;
- drawarrow (1 left -- 14 right) shifted point 7/4 of bbox p3 withcolor .67 red;
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/penrose-stages.pdf b/info/drawing-with-metapost/src/penrose-stages.pdf
deleted file mode 100644
index ae8b8bc3a6..0000000000
--- a/info/drawing-with-metapost/src/penrose-stages.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/penrose.mp b/info/drawing-with-metapost/src/penrose.mp
deleted file mode 100644
index 930a66680c..0000000000
--- a/info/drawing-with-metapost/src/penrose.mp
+++ /dev/null
@@ -1,84 +0,0 @@
-input colorbrewer-rgb
-numeric psi, size;
-psi = (sqrt 5 - 1) / 2;
-size = 800;
-vardef inflate_tall(expr mode, level, a, b, c) =
- save d, e; pair d, e;
- if level = 0:
- drawoptions(withpen pencircle scaled 1/8);
- filldraw a--b--c--cycle withcolor (abs(b)/size)[Reds 7 2, Blues 8 2];
- if mode = 2:
- draw c--a--b;
- else:
- % save arc; path arc;
- % arc = fullcircle rotated angle (c-a) scaled 1/2 abs(b-a) shifted a
- % if turningnumber (a--b--c--cycle) < 0: cutafter else: cutbefore fi (a--b);
- % cutdraw arc withpen pencircle scaled 3/2 withcolor Reds 7 4;
- % cutdraw arc reflectedabout(b, 1/2[a,c]) withpen pencircle scaled 3/2 withcolor Blues 8 8;
- % draw arc reflectedabout(b, 1/2[a,c]) withpen pencircle scaled 1/2 withcolor Blues 8 2;
- draw a--b--c;
- fi
- drawoptions();
- else:
- if mode = 3:
- d = psi[b,a];
- inflate_tall(mode, level - 1, d, c, a);
- inflate_wide(mode, level - 1, c, d, b);
- elseif mode = 2:
- d = psi[a, b];
- e = psi[b, c];
- inflate_tall(mode, level - 1, c, a, e);
- inflate_tall(mode, level - 1, d, a, e);
- inflate_wide(mode, level - 1, e, d, b);
- fi
- fi
-enddef;
-vardef inflate_wide(expr mode, level, a, b, c) =
- save d, e; pair d, e;
- if level = 0:
- drawoptions(withpen pencircle scaled 1/8);
- filldraw a--b--c--cycle withcolor (abs(b)/size)[Reds 7 3, white];
- if mode = 2:
- draw c--a--b;
- else:
- % save arc; path arc;
- % arc = fullcircle rotated angle (c-a) scaled 3/2 abs (b-a) shifted a
- % if turningnumber (a--b--c--cycle) < 0: cutafter else: cutbefore fi (a--b);
- % cutdraw arc withpen pencircle scaled 3/2 withcolor Reds 7 4;
- % path arc;
- % arc = fullcircle rotated angle (a-c) scaled 1/2 abs (b-a) shifted c
- % if turningnumber (a--b--c--cycle) > 0: cutafter else: cutbefore fi (c--b);
- % cutdraw arc withpen pencircle scaled 3/2 withcolor Blues 8 8;
- % draw arc withpen pencircle scaled 1/2 withcolor Blues 8 2;
- draw a--b--c;
-
- fi
- drawoptions();
- else:
- if mode = 3:
- d = psi[a,b]; e = psi[a,c];
- inflate_tall(mode, level - 1, d, e, b);
- inflate_wide(mode, level - 1, e, d, a);
- inflate_wide(mode, level - 1, c, e, b);
- elseif mode = 2:
- d = psi[c, a];
- inflate_tall(mode, level - 1, d, c, b);
- inflate_wide(mode, level - 1, b, d, a);
- fi
- fi
-enddef;
-
-vardef penrose(expr mode) =
- save a, b, c, P, R;
- pair a, b, c;
- b = origin;
- c = (sind(18), sind(72)) scaled size;
- a = (-xpart c, ypart c);
- picture P; P = image(inflate_tall(mode, 7, a, b, c));
- picture R; R = image(
- for t = 0 upto 9:
- draw P if odd t: reflectedabout(b, c) fi rotatedabout(b, 72t);
- endfor);
- clip R to (unitsquare shifted -(1/2, 1/2) xscaled 987 yscaled 610);
- R
-enddef;
diff --git a/info/drawing-with-metapost/src/pens-arrow-styles.mp b/info/drawing-with-metapost/src/pens-arrow-styles.mp
new file mode 100644
index 0000000000..7e1fa42ef7
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-arrow-styles.mp
@@ -0,0 +1,59 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+
+path s, c;
+
+s = origin -- 80 right;
+c = quartercircle scaled 40;
+
+labeloffset := 20;
+
+vardef make_arrows(expr t) = image(
+ picture A, B;
+ A = image(drawarrow s; drawarrow c;);
+ B = image(drawdblarrow s; drawdblarrow c;);
+ label.lft(A, origin);
+ label.rt(B, origin);
+ picture T; T = thelabel("\texttt{" & t & "}", 8 down); bboxmargin := 4; path p; p = bbox T;
+ path S; S = superellipse(point 3/2 of p, point 5/2 of p, point 7/2 of p, point 1/2 of p, 0.78);
+ string x; x = substring (0, 1) of t;
+ fill S withcolor if x = "m": 7/8[red, white] elseif x = "c": 7/8[blue, white] else: white fi;
+ draw S; draw T;
+) enddef;
+
+beginfig(1);
+
+ label("\mpl{drawarrow}", (-60, 28));
+ label("\mpl{drawdblarrow}", (60, 28));
+
+ pair v; v = 40 down;
+
+ draw make_arrows("1");
+
+ ahangle := 20; ahlength := 6;
+ draw make_arrows("2") shifted v;
+
+ ahangle := 45; ahlength := 4;
+input mparrows
+setarrows(open); draw make_arrows("mp1") shifted 2.5v;
+setarrows(defaultunfilled); draw make_arrows("mp2") shifted 3.5v;
+setarrows(barbed); draw make_arrows("mp3") shifted 4.5v;
+
+
+input cmarrows
+setup_cmarrows(macro_name="drawarrow"; arrow_name="texarrow"; parameter_file="cmr10.mf");
+setup_cmarrows(macro_name="drawdblarrow"; arrow_name="twowayarrow"; parameter_file="cmr10.mf");
+ draw make_arrows("cm1") shifted 6v;
+setup_cmarrows(arrow_name="lefthalfarrow"; parameter_file="cmr10.mf"; macro_name="drawarrow");
+setup_cmarrows(arrow_name="paralleloppositelefthalfarrows"; parameter_file="cmr10.mf"; macro_name="drawdblarrow");
+ draw make_arrows("cm2") shifted 7v;
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pens-arrow-styles.pdf b/info/drawing-with-metapost/src/pens-arrow-styles.pdf
new file mode 100644
index 0000000000..8fb68a74d4
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-arrow-styles.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-besides.mp b/info/drawing-with-metapost/src/pens-besides.mp
new file mode 100644
index 0000000000..36a930b0d9
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-besides.mp
@@ -0,0 +1,63 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+vardef extended(expr p) =
+ -42 unitvector(direction 0 of p) shifted point 0 of p .. p ..
+ +42 unitvector(direction 1 of p) shifted point 1 of p
+enddef;
+
+vardef chopper expr t of p =
+ (up--down) scaled 42
+ rotated 1/2(angle direction t-eps of p + angle direction t+eps of p)
+ shifted point t of p
+enddef;
+
+vardef beside(expr p, d) =
+ save n, a, b, aa, bb; numeric n; n = length p;
+ pair a, b, aa, bb; path _part[];
+ for i = 1 upto n:
+ aa := postcontrol i-1 of p - point i-1 of p;
+ bb := point i of p - precontrol i of p;
+ a := unitvector(aa) rotated -90 scaled d;
+ b := unitvector(bb) rotated -90 scaled d;
+ _part[i] = extended(
+ point i-1 of p shifted a {aa} .. point i of p shifted b {bb}
+ ) cutbefore chopper i-1 of p cutafter chopper i of p;
+ endfor
+ _part[1] for i=2 upto n: .. _part[i] endfor if cycle p: .. cycle fi
+enddef;
+beginfig(1);
+
+ path P[];
+
+ % P1 = origin -- (48,3) -- (96,-3) -- 144 right;
+ P2 = (22, 13) --- (92, 10) .. (120, 32) .. (138,50) .. (200, 69) ..
+ (280, 78) .. (300, 84) .. (315, 100) .. (322, 150) ..
+ (300, 186) --- (200, 187) --- (100, 188) --- (25, 188.75) -- cycle
+ ;
+
+ % % P1 := P1 shifted (center P2 - center P1) shifted 20 up;
+ % % P2 = fullcircle scaled 120;
+ % P3 = (reverse halfcircle -- origin -- down) scaled 64;
+ % P4 = for i=0 upto 4: 60 up rotated 72i -- endfor cycle;
+ % P5 = (left {dir 42} .. origin .. right {dir 42}) scaled 64;
+ % P6 = (left {dir 42} .. right {dir 42}) scaled 64;
+ % P7 = 40 left {right} .. 20 up .. 40 up {left} .. 20 up .. {right} 40 right;
+
+ for i=1 upto 10:
+ if known P[i]:
+ P[i] := P[i] shifted (150i, 0);
+ draw beside(P[i], 2) withcolor \mpcolor{textblue};
+ draw P[i];
+ draw beside(P[i], -2) withcolor \mpcolor{textred};
+ fi
+ endfor
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pens-besides.pdf b/info/drawing-with-metapost/src/pens-besides.pdf
new file mode 100644
index 0000000000..a1ae022f33
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-besides.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-crossings.mp b/info/drawing-with-metapost/src/pens-crossings.mp
new file mode 100644
index 0000000000..6c4f983839
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-crossings.mp
@@ -0,0 +1,57 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+
+vardef connect(expr a, b, r, want_erase) =
+ save p; path p; p = a {b-a rotated r} .. b;
+ if want_erase:
+ draw p withpen pencircle scaled 4 withcolor background;
+ fi
+ drawarrow p
+ cutbefore fullcircle scaled 20 shifted a
+ cutafter fullcircle scaled 20 shifted b;
+enddef;
+
+beginfig(1);
+ % how many points?
+ N = 7;
+ % define the points, from the top, counter-clockwise
+ for i=0 upto N-1:
+ z[i] = up scaled 100 rotated (360/N*i);
+ endfor
+ interim ahangle := 30; % with slim arrow heads
+
+ picture P[];
+ P1 = image(
+ for i=0 upto N-1:
+ connect(z[i], z[(i+1) mod N], -30, false);
+ connect(z[i], z[(i+2) mod N], -20, false);
+ connect(z[i], z[(i+4) mod N], 30, false);
+ endfor
+ % label all the points...
+ for i=0 upto N-1:
+ label(decimal (i+1), z[i]) withcolor .67 red;
+ endfor
+ );
+ P2 = image(
+ for i=0 upto N-1:
+ connect(z[i], z[(i+1) mod N], -30, true);
+ connect(z[i], z[(i+2) mod N], -20, true);
+ connect(z[i], z[(i+4) mod N], 30, true);
+ endfor
+ % label all the points...
+ for i=0 upto N-1:
+ label(decimal (i+1), z[i]) withcolor .67 red;
+ endfor
+ );
+
+ label.top(P1, 16 up);
+ label("Do you think it looks better with crossings?", origin);
+ label.bot(P2, 10 down);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pens-crossings.pdf b/info/drawing-with-metapost/src/pens-crossings.pdf
new file mode 100644
index 0000000000..5a38f33f3d
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-crossings.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-curly.mp b/info/drawing-with-metapost/src/pens-curly.mp
new file mode 100644
index 0000000000..a9013455e3
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-curly.mp
@@ -0,0 +1,46 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+pair r; r = dir 30;
+path S; S = origin {r} .. 300 right {r};
+
+numeric head_length, tail_length, amplitude, lambda;
+head_length = tail_length = 13; amplitude = 1; lambda = 2;
+
+vardef zigzag expr p =
+ save a, b; numeric a, b; a = arctime head_length of p; b = arctime arclength p - tail_length of p;
+ subpath(0, a) of p
+ -- _ziggy(subpath(a, b) of p, false) --
+ subpath(b, infinity) of p
+enddef;
+vardef wavy expr p =
+ save a, b; numeric a, b; a = arctime head_length of p; b = arctime arclength p - tail_length of p;
+ subpath(0, a) of p
+ ... _ziggy(subpath(a, b) of p, true) ...
+ subpath(b, infinity) of p
+enddef;
+
+vardef _ziggy(expr p, soft) =
+ save t, k, A, s; numeric t, k, A, s; k = 0; A = arclength p; s = A / round(A/lambda);
+
+ point 0 of p
+ for i=s step s until A:
+ hide(t := arctime i of p;)
+ if soft: .. else: -- fi amplitude * if odd incr k: up else: down fi rotated angle direction t of p shifted point t of p
+ endfor
+ cutbefore fullcircle scaled 4 lambda shifted point 0 of p
+ cutafter fullcircle scaled 4 lambda shifted point infinity of p
+enddef;
+
+beginfig(1);
+ draw S;
+ drawarrow zigzag S shifted 30 down;
+ amplitude := 2/3; lambda := 3;
+ drawarrow wavy S shifted 60 down;
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pens-curly.pdf b/info/drawing-with-metapost/src/pens-curly.pdf
new file mode 100644
index 0000000000..9cdece5534
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-curly.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-feynmp-styles.mp b/info/drawing-with-metapost/src/pens-feynmp-styles.mp
new file mode 100644
index 0000000000..d8f014ae06
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-feynmp-styles.mp
@@ -0,0 +1,34 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\mplibtextextlabel{enable}
+\mplibshowlog{enable}
+\begin{mplibcode}
+input feynmp;
+beginfig(1);
+ path p[];
+ p1 = (left -- right) scaled 50 rotated 40;
+ p2 = (left {dir 45} .. right {dir 45}) scaled 50 rotated 40;
+ p3 = fullcircle scaled 72 yscaled 4/5;
+ p4 = unitsquare shifted -(1/2, 1/2) scaled 50;
+
+ labeloffset := 13;
+ ahangle := 30;
+ for i=1, 2, 3, 4:
+ numeric y; y = 0;
+ forsuffixes $=curly, zigzag, wiggly:
+ drawarrow p[i] shifted (96i, 96(incr y)) withcolor 3/4[if i=4: red else: blue fi, white];
+ draw $ p[i] shifted (96i, 96y);
+ if i=1: label.ulft("\mpl{" & str $ & "}", 96(i, y)) fi;
+ endfor
+ endfor
+
+ label.bot("The un-morphed paths are drawn faintly in colour behind the morphed paths.", point 1/2 of bbox currentpicture);
+ label.bot("The macros work on open or closed paths, \red{provided there are no sharp corners}.", point 1/2 of bbox currentpicture shifted 7 up);
+
+ label.ulft("\red{Hmmm...}", point 2 of p4 shifted (4*96, 104));
+
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pens-feynmp-styles.pdf b/info/drawing-with-metapost/src/pens-feynmp-styles.pdf
new file mode 100644
index 0000000000..7ae5e05d43
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-feynmp-styles.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-fleuron.mp b/info/drawing-with-metapost/src/pens-fleuron.mp
new file mode 100644
index 0000000000..e1de211317
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-fleuron.mp
@@ -0,0 +1,17 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+ -z1 = z4 = 7 dir 8;
+ y2 - y1 = y4 - y3 = 3(y4 - y1);
+ z2 - z1 = z4 - z3 = whatever * dir 50;
+ draw z1 .. controls z2 and z3 .. z4 withpen pencircle xscaled 1.2 yscaled 0.2 rotated 50;
+ undraw z1 .. controls z2 and z3 .. z4 withpen pencircle xscaled 0.4 yscaled 0.03 rotated 50;
+ for i=1 upto 5:
+ draw currentpicture shifted ((2**(i-1))*z4);
+ endfor
+ currentpicture := currentpicture rotated - angle z4;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pens-fleuron.pdf b/info/drawing-with-metapost/src/pens-fleuron.pdf
new file mode 100644
index 0000000000..621e808098
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-fleuron.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-greek-meander.mp b/info/drawing-with-metapost/src/pens-greek-meander.mp
new file mode 100644
index 0000000000..663bff3d1a
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-greek-meander.mp
@@ -0,0 +1,40 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef meander expr p =
+ save a, u, v, d, dy; numeric a, u, v, d; pair dy;
+ d = 4 xpart urcorner makepath currentpen;
+ a = arclength p; v = round(a/8d); u = a if v > 1: / v fi;
+ if not cycle p: point 0 of p -- fi for t = 0 step u until a-4eps:
+ hide(dy := d*unitvector(direction arctime t+1/2u of p of p rotated 90))
+ subpath(arctime t of p, arctime t+u-2d of p) of p shifted 3dy
+ --
+ subpath(arctime t+u-2d of p, arctime t+1/2 u of p) of p shifted -dy
+ --
+ subpath(arctime t+1/2u of p, arctime t+2d of p) of p shifted dy
+ --
+ subpath(arctime t+2d of p, arctime t+u of p) of p shifted -3dy
+ --
+ endfor if cycle p: cycle else: point infinity of p fi
+enddef;
+
+beginfig(1);
+ path r; r = (left {right} .. right rotated 10) scaled 100;
+ linejoin := mitered;
+ path p[];
+ p1 = (left -- right) scaled 50 rotated 40;
+ p2 = (left {dir 45} .. right {dir 45}) scaled 50 rotated 40;
+ p3 = fullcircle scaled 72 yscaled 4/5;
+ p4 = unitsquare shifted -(1/2, 1/2) scaled 50;
+ interim labeloffset := 13;
+ interim ahangle := 30;
+ for i=1, 2, 3, 4:
+ drawarrow p[i] shifted (96i, 0) withcolor 3/4[if i=4: red else: blue fi, white];
+ draw meander p[i] shifted (96i, 0);
+ endfor
+ label.ulft("\texttt{meander}", (96, 0));
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pens-greek-meander.pdf b/info/drawing-with-metapost/src/pens-greek-meander.pdf
new file mode 100644
index 0000000000..24081c455f
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-greek-meander.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-highway.mp b/info/drawing-with-metapost/src/pens-highway.mp
new file mode 100644
index 0000000000..dab8aaf397
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-highway.mp
@@ -0,0 +1,15 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+path S; S = origin .. 100 right {down} .. origin .. 100 left {down} .. cycle;
+beginfig(1);
+draw S withpen pencircle scaled 6;
+draw S withpen pencircle scaled 5 withcolor 1/2[red, green] * 2;
+draw S withpen pencircle scaled 4.5;
+draw S dashed evenly scaled 1/2 withcolor white;
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pens-highway.pdf b/info/drawing-with-metapost/src/pens-highway.pdf
new file mode 100644
index 0000000000..9b3e662d5a
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-highway.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-line-caps-and-joins.mp b/info/drawing-with-metapost/src/pens-line-caps-and-joins.mp
new file mode 100644
index 0000000000..8dd01c2dc7
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-line-caps-and-joins.mp
@@ -0,0 +1,57 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\mplibtextextlabel{enable}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+numeric u; u = 56;
+z1 = right scaled u;
+z2 = z1 rotated 90;
+z3 = z2 rotated 90;
+z4 = z3 rotated 90;
+z5 = 1/2[z1,z2];
+z6 = 1/2[z2,z3];
+z7 = 1/2[z3,z4];
+z8 = 1/2[z4,z1];
+
+
+string capnames[], joinnames[];
+capnames[butt] = "\mpl{butt}";
+capnames[rounded] = "\mpl{rounded}";
+capnames[squared] = "\mpl{squared}";
+joinnames[mitered] = "\mpl{mitered}";
+joinnames[rounded] = "\mpl{rounded}";
+joinnames[beveled] = "\mpl{beveled}";
+
+picture p; numeric r; r = 2; interim labeloffset := 1;
+for i=butt, rounded, squared:
+ for j = mitered, rounded, beveled:
+ linecap := i;
+ linejoin := j;
+ p := image(
+ draw fullcircle scaled 8 shifted z5 withpen pencircle scaled 1/8 withcolor \mpcolor{textred};
+ drawoptions (withpen pencircle scaled 3);
+ draw unitsquare shifted -(1/2,1/2) scaled 2u withcolor 7/8;
+ label.top("\mpl{linecap}", z6);
+ label.bot(capnames[i], z6);
+ label.top("\mpl{linejoin}", z8);
+ label.bot(joinnames[j], z8);
+ drawarrow z4 -- -(r, r) -- z3;
+ draw z2-- (r, r) -- z1;
+ drawdot(z5);
+ drawarrow halfcircle scaled u rotated 180 shifted z4;
+ drawoptions();
+ ) shifted (5/2u*i, -11/4u*j);
+ draw p;
+ if (i=rounded) and (j=rounded):
+ draw bbox p dashed withdots scaled 1/4
+ withcolor \mpcolor{textgreen};
+ label.urt("\small \textsf{\textit{default}}", point 3 of bbox p) withcolor \mpcolor{textgreen};
+ fi
+ endfor
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pens-line-caps-and-joins.pdf b/info/drawing-with-metapost/src/pens-line-caps-and-joins.pdf
new file mode 100644
index 0000000000..19cb8b9036
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-line-caps-and-joins.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-pen-oddity.mp b/info/drawing-with-metapost/src/pens-pen-oddity.mp
new file mode 100644
index 0000000000..aa0531e4f3
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-pen-oddity.mp
@@ -0,0 +1,71 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\def\t#1{\vbox{\let\\\cr\halign{\texttt{##}\hss\cr#1\cr}}}
+\def\ts#1{\vbox{\let\\\cr\openup-4pt\halign{\small\hss\mpl{##}\hss\cr#1\cr}}}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ numeric u; u = 16;
+ pen P[];
+ P1 = makepen(for i=1 upto 90: 1/2 dir 4i -- endfor cycle) scaled u;
+ P10 = pencircle scaled u;
+ P100 = pencircle scaled 1/2;
+ P2 = pensquare scaled u;
+ P20 = pensquare scaled u;
+ P200 = pensquare;
+ P3 = pensquare scaled 0.7071 u rotated 45;
+ P30 = pensquare scaled 0.7071 u rotated 45;
+ P300 = pensquare scaled 0.35355 rotated 45;
+ P4 = penrazor scaled u;
+ P40 = penrazor scaled u;
+ P400 = penrazor;
+ path crook; crook = origin -- (5u, 0) -- 7u * dir 30;
+
+ string cap_name[], join_name[], pen_name[];
+ cap_name[butt] = "butt";
+ cap_name[rounded] = "rounded";
+ cap_name[squared] = "squared";
+ join_name[beveled] = "beveled";
+ join_name[rounded] = "rounded";
+ join_name[mitered] = "mitered";
+ pen_name1 = "pencircle";
+ pen_name2 = "pensquare";
+ pen_name3 = "pensquare\\\quad rotated 45";
+ pen_name4 = "penrazor";
+
+ for i=1, 2:
+ draw (origin -- 360 right) shifted ((0, 2.25-2.8i) scaled 8u);
+ label.rt("\t{" & pen_name[i] & "}", (0, 2.15-2.8i) scaled 8u);
+ for cap = rounded, butt, squared:
+ interim linecap := cap;
+ for join = rounded, beveled, mitered:
+ boolean default; default = (cap=rounded) and (join=rounded);
+ interim linejoin := join;
+ pair s; s = (cap, 0.8 join) shifted (0, -2.8i) scaled 8u;
+ draw crook shifted s withpen P[i]
+ withcolor
+ (15/16 if default: - 1/8 fi)
+ if i=1: [blue, white] fi;
+ draw (2.5u, 3u) shifted s withpen P[10i] withcolor 3/4;
+ draw fullcircle scaled 20 shifted (2.5u, 3u) shifted s withcolor 3/4 red;
+ for k=0, 1, 2:
+ draw makepath(P[i]) shifted point k of crook shifted s withcolor 1/2[blue, white];
+ endfor
+ draw envelope P[i] of crook shifted s;
+ draw crook shifted s withpen P[100i] withcolor red;
+ if default:
+ label("\ts{linecap\\" & cap_name[cap] & "}", s + (0, 5/4u));
+ label("\ts{" & join_name[join] & "\\linejoin}", point 1 of crook shifted s shifted (0, -5/4u));
+ else:
+ label("\ts{" & cap_name[cap] & "}", s + (0, u));
+ label("\ts{" & join_name[join] & "}", point 1 of crook shifted s shifted (0, -u));
+ fi
+ endfor
+ endfor
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pens-pen-oddity.pdf b/info/drawing-with-metapost/src/pens-pen-oddity.pdf
new file mode 100644
index 0000000000..1d4fa06f0a
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-pen-oddity.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-strokes.mp b/info/drawing-with-metapost/src/pens-strokes.mp
new file mode 100644
index 0000000000..1c3c68a9c0
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-strokes.mp
@@ -0,0 +1,109 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+path S; S = origin .. (48, 10) .. (116, -10) .. (165, 10);
+
+labeloffset := 14;
+
+beginfig(1);
+picture P[];
+numeric n; n = -1;
+P[incr n] = image(
+ draw S;
+ label.rt("plain", point 3 of S);
+);
+show incr n;
+
+P[incr n] = image(
+ draw S dashed dashpattern(on 4 off 2 on 1 off 2 on 1 off 2);
+ label.rt("with a dash pattern", point 3 of S);
+);
+
+P[incr n] = image(
+ cutdraw S dashed dashpattern(on 4 off 1 on 1 off 1 on 1 off 1);
+ label.rt("with a sharp dash pattern", point 3 of S);
+);
+
+P[incr n] = image(
+ cutdraw S withpen pencircle scaled 2;
+ undraw S withpen pencircle scaled 5/4;
+ cutdraw S dashed evenly scaled 2 shifted right withpen pencircle scaled 5/4;
+ label.rt("as a railway line", point 3 of S);
+);
+
+show incr n;
+
+P[incr n] = image(
+ draw S;
+ for a = 2 step 6 until arclength S:
+ numeric t; t = arctime a of S;
+ draw (down--up) rotated angle direction t of S shifted point t of S;
+ endfor
+ label.rt("as a plainer railway line", point 3 of S);
+);
+
+P[incr n] = image(
+ numeric A; A = arclength S;
+ for a = 0 step 1/8 until A:
+ draw point arctime a of S of S withcolor (a / A);
+ endfor
+ label.rt("fading away", point 3 of S);
+);
+
+P[incr n] = image(
+ for i=0 step 1/512 until length S:
+ draw point i of S withpen pencircle scaled (4 * (1 - i / length S))
+ withcolor (i / length S)[1/2 blue, white];
+ endfor
+ label.rt("fading and diminishing", point 3 of S);
+);
+
+path star; star = for i=0 upto 4: 6 up rotated (144i) -- endfor cycle;
+P[incr n] = image(
+ numeric t, i, a; t = i = a = 0;
+ for k=0 upto 100:
+ % show (t, arclength S);
+ exitif t >= arclength S;
+ a := arctime t of S;
+ fill star rotated angle direction a of S shifted point a of S
+ withcolor if odd incr i: blue else: red fi;
+ t := t + arclength subpath (2, 3) of star;
+ star := star scaled 0.94;
+ endfor
+ label.rt("with a fancy pattern", point 3 of S);
+);
+
+P[incr n] = image(
+ numeric u, v; u = 2; v = 1;
+ picture e; e = image(
+ draw (-u, v) {right} .. {right} (u, -v) withcolor blue;
+ cutdraw (-u, -v) {right} .. {right} (u, +v) withpen pencircle scaled 1 withcolor background;
+ draw (-u, -v) {right} .. {right} (u, +v) withcolor red;
+ );
+ picture f; f = image(
+ draw (-u, v) {right} .. {right} (u, -v) withcolor red;
+ cutdraw (-u, -v) {right} .. {right} (u, +v) withpen pencircle scaled 1 withcolor background;
+ draw (-u, -v) {right} .. {right} (u, +v) withcolor blue;
+ );
+ numeric t, a, T, wd, A; t = a = 0; A = arclength S; wd = xpart (lrcorner e - llcorner e);
+ for k=0 upto 100:
+ exitif a > A;
+ t := arctime a of S;
+ draw if odd k: f else: e fi rotated angle direction t of S shifted point t of S;
+ a := a + .8 wd;
+ endfor
+ label.rt("as a twisted pair", point 3 of S);
+);
+
+for i=0 upto 28:
+ if known P[i]:
+ draw P[i] shifted (0, -34i);
+ fi
+endfor
+input show_name
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pens-strokes.pdf b/info/drawing-with-metapost/src/pens-strokes.pdf
new file mode 100644
index 0000000000..d19c0c5862
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-strokes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pens-tubes.mp b/info/drawing-with-metapost/src/pens-tubes.mp
new file mode 100644
index 0000000000..f7526fc70a
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-tubes.mp
@@ -0,0 +1,32 @@
+\documentclass[border=1mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef tubular@#(expr p) = image(
+ draw p withpen pencircle scaled 8;
+ for w = 7.5 step -.5 until 1:
+ draw p withpen pencircle scaled w withcolor (sqrt(w/8))[white, 1/2 @#];
+ endfor
+) enddef;
+vardef ctubular@#(expr p) = image(
+ cutdraw p withpen pencircle scaled 8;
+ for w = 7.5 step -.5 until 1:
+ cutdraw p withpen pencircle scaled w withcolor (sqrt(w/8))[white, 1/2 @#];
+ endfor
+) enddef;
+beginfig(1);
+path half_reef;
+d = 1/4;
+half_reef = (-7, -d) --- (-2, -d) ... (0, -1) .. (2, 0) .. (0, 1) ... (-2, d) --- (-5, d);
+half_reef := half_reef scaled 20;
+draw tubular.red(half_reef);
+draw tubular.blue(half_reef reflectedabout (up, down));
+draw ctubular.red(subpath(3/2, 5/2) of half_reef);
+draw ctubular.red(subpath(7/2, 9/2) of half_reef);
+% for i=0 step 1/2 until length half_reef: dotlabel.top(decimal i, point i of half_reef); endfor
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pens-tubes.pdf b/info/drawing-with-metapost/src/pens-tubes.pdf
new file mode 100644
index 0000000000..aded171667
--- /dev/null
+++ b/info/drawing-with-metapost/src/pens-tubes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-border-common.mp b/info/drawing-with-metapost/src/pics-border-common.mp
new file mode 100644
index 0000000000..e2d8711d2a
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-border-common.mp
@@ -0,0 +1,30 @@
+input colorbrewer-rgb
+picture orthogonals;
+orthogonals = image(
+ interim ahangle := 30;
+ z0 = 42 left rotated normaldeviate;
+ z1 = 30 up rotated normaldeviate;
+ z2 = 31 right rotated normaldeviate;
+ z3 = 34 down rotated normaldeviate;
+ path s[];
+ for i=0 upto 3:
+ s[i] = unitsquare zscaled (z[(i+1) mod 4] - z[i]) shifted z[i];
+ z[i+4] = 1/2[point 0 of s[i], point 2 of s[i]];
+ endfor
+ z8 = whatever[z4, z6] = whatever[z5, z7];
+
+ for i=0 upto 3:
+ fill s[i] withcolor if odd i: Blues else: Oranges fi 8 1;
+ draw point 3 of s[i] -- subpath (1,4) of s[i] -- point 2 of s[i] withcolor 3/4;
+ drawarrow subpath (0, 1) of s[i];
+ endfor
+ draw unitsquare scaled 5 rotated angle (z4-z6) shifted z8 withcolor 3/4;
+ drawarrow z4--z6;
+ drawarrow z5--z7;
+);
+
+vardef with_rounded_corners expr p =
+ for i=1 upto length p:
+ subpath (i-15/16, i-1/16) of p ..
+ endfor cycle
+enddef;
diff --git a/info/drawing-with-metapost/src/pics-border-dashed.mp b/info/drawing-with-metapost/src/pics-border-dashed.mp
new file mode 100644
index 0000000000..c14e680da4
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-border-dashed.mp
@@ -0,0 +1,23 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\begin{mplibcode}
+input pics-border-common
+beginfig(1);
+draw orthogonals;
+
+bboxmargin := 16;
+draw with_rounded_corners bbox currentpicture
+ dashed evenly scaled 1/2;
+
+path b; b = bbox currentpicture;
+label.urt(btex
+\smallmpexternal[firstline=26,lastline=30]{pics-border-common.mp}
+etex, point 3/2 of b shifted 10 left);
+label.lrt(btex
+\smallmpexternal[firstline=10,lastline=12]{pics-border-dashed.mp}
+etex, point 3/2 of b shifted 10 left);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pics-border-dashed.pdf b/info/drawing-with-metapost/src/pics-border-dashed.pdf
new file mode 100644
index 0000000000..fdd637175b
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-border-dashed.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-border-rope.mp b/info/drawing-with-metapost/src/pics-border-rope.mp
new file mode 100644
index 0000000000..4ac4baf27d
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-border-rope.mp
@@ -0,0 +1,13 @@
+\documentclass[border=2mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+input pics-border-common
+input rope
+beginfig(1);
+draw orthogonals; % from the common code...
+bboxmargin := 16;
+draw rope with_rounded_corners bbox currentpicture;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pics-border-rope.pdf b/info/drawing-with-metapost/src/pics-border-rope.pdf
new file mode 100644
index 0000000000..e36ce677ad
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-border-rope.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-border-shadow.mp b/info/drawing-with-metapost/src/pics-border-shadow.mp
new file mode 100644
index 0000000000..47281ecf63
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-border-shadow.mp
@@ -0,0 +1,18 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\begin{mplibcode}
+input pics-border-common
+beginfig(1);
+draw orthogonals;
+bboxmargin := 16;
+picture P; P = currentpicture;
+fill bbox P shifted (3,-3) withcolor 3/4;
+unfill bbox P; draw bbox P; draw P;
+label.rt(btex
+\smallmpexternal[firstline=9, lastline=12]{pics-border-shadow.mp}
+etex, point 3/2 of bbox currentpicture shifted 10 left);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pics-border-shadow.pdf b/info/drawing-with-metapost/src/pics-border-shadow.pdf
new file mode 100644
index 0000000000..09af23599a
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-border-shadow.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/corners.mp b/info/drawing-with-metapost/src/pics-corners.mp
index cf4e3ad416..cf4e3ad416 100644
--- a/info/drawing-with-metapost/src/corners.mp
+++ b/info/drawing-with-metapost/src/pics-corners.mp
diff --git a/info/drawing-with-metapost/src/corners.pdf b/info/drawing-with-metapost/src/pics-corners.pdf
index 2588267ec8..2588267ec8 100644
--- a/info/drawing-with-metapost/src/corners.pdf
+++ b/info/drawing-with-metapost/src/pics-corners.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/double-angle.mp b/info/drawing-with-metapost/src/pics-double-angle.mp
index f09885dfb5..f09885dfb5 100644
--- a/info/drawing-with-metapost/src/double-angle.mp
+++ b/info/drawing-with-metapost/src/pics-double-angle.mp
diff --git a/info/drawing-with-metapost/src/double-angle.pdf b/info/drawing-with-metapost/src/pics-double-angle.pdf
index f0721c8b48..f0721c8b48 100644
--- a/info/drawing-with-metapost/src/double-angle.pdf
+++ b/info/drawing-with-metapost/src/pics-double-angle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-draw-picture.mp b/info/drawing-with-metapost/src/pics-draw-picture.mp
new file mode 100644
index 0000000000..84ffc19d37
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-draw-picture.mp
@@ -0,0 +1,74 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+numeric s; s = 21;
+path alpha;
+alpha = ((-2s, s) {right}
+.. halfcircle rotated -90 scaled 2s shifted (2s, 0)
+.. {left} (-2s, -s)) shifted (s*left);
+
+vardef overdraw(expr a, b, r, P, shade) =
+ linecap := butt;
+ undraw subpath (a+r, b-r) of P withpen pencircle scaled 2;
+ draw subpath (a, b) of P withcolor shade;
+enddef;
+
+picture cb; cb = image(
+ draw alpha withcolor 2/3 red;
+ undraw alpha rotated 180 withpen pencircle scaled 2;
+ draw alpha rotated 180 withcolor 2/3 blue;
+ overdraw(0.21, 0.36, 0.02, alpha, 2/3 red);
+ overdraw(0.67, 0.86, 0.02, alpha, 2/3 red);
+ overdraw(3.4, 4.3, 0.1, alpha, 2/3 red);
+ overdraw(5.4, 5.6, 0.02, alpha, 2/3 red);
+ overdraw(5.4, 5.6, 0.02, alpha rotated 180, 2/3 blue);
+);
+
+ picture P[];
+
+ P1 = image(draw cb; label.rt("\mpl{draw cb;}", point 3/2 of bbox currentpicture));
+ P2 = image(draw cb withpen pencircle scaled 4; label.rt("\mpl{draw cb withpen pencircle scaled 4;}", point 3/2 of bbox currentpicture));
+ P3 = image(draw cb withcolor 1/2; label.rt("\mpl{draw cb withcolor 1/2;}", point 3/2 of bbox currentpicture));
+ P4 = image(draw cb withpen pencircle scaled 4 withcolor 1/2; label.rt("\mpl{draw cb withpen pencircle scaled 4 withcolor 1/2;}", point 3/2 of bbox currentpicture));
+ P5 = image(
+ color pretzel; pretzel = 1/256(187, 146, 79);
+ for i=8 step -1/2 until 1/2:
+ draw cb withpen pencircle scaled i
+ withcolor (i/8)[white, pretzel];
+ endfor
+ label.rt(btex \vbox{\halign{#\cr
+ \mpl{for i=8 step -1/2 until 1/2:}\cr
+ \quad\mpl{draw cb withpen pencircle scaled i}\cr
+ \qquad\mpl{withcolor sqrt(i/8)[white, pretzel];}\cr
+ \mpl{endfor}\cr}} etex, point 3/2 of bbox currentpicture);
+ );
+
+ P6 = image(
+ for e within cb:
+ draw pathpart e withpen penpart e scaled 4
+ withcolor 7/8[colorpart e, background];
+ endfor
+ label.rt(btex \vbox{\halign{#\cr
+ \mpl{for e within cb:}\cr
+ \quad\mpl{draw pathpart e withpen penpart e scaled 4}\cr
+ \qquad\mpl{withcolor 7/8[colorpart e, background];}\cr
+ \mpl{endfor}\cr}} etex, point 3/2 of bbox currentpicture);
+ );
+
+ for i=1 upto 6:
+ if known P[i]:
+ pair p; p = 60i * down;
+ label.rt(P[i], p);
+ fill superellipse(right, up, left, down, 0.8) scaled 6 shifted p
+ withcolor 2/3;
+ label("\textsf{" & decimal i & "}", p) withcolor white;
+ fi;
+ endfor
+
+ endfig;
+ \end{mplibcode}
+ \end{document}
diff --git a/info/drawing-with-metapost/src/pics-draw-picture.pdf b/info/drawing-with-metapost/src/pics-draw-picture.pdf
new file mode 100644
index 0000000000..ca5b282aeb
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-draw-picture.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/fake-transparency.mp b/info/drawing-with-metapost/src/pics-fake-transparency.mp
index dfe7086052..e9bf30761d 100644
--- a/info/drawing-with-metapost/src/fake-transparency.mp
+++ b/info/drawing-with-metapost/src/pics-fake-transparency.mp
@@ -25,33 +25,27 @@ drawarrow xx;
drawarrow yy;
drawoptions();
+% Large A
label.urt("A" infont defaultfont scaled 8, origin) withcolor 1/4 green;
-
-% draw the "transparent" superellipse box
-path se;
-%se = unitsquare shifted 1/2 down shifted 1/4 left scaled 3cm;
-se = (superellipse(right, up, left, down, 0.81))
-shifted 1/2 right scaled 30 rotated 30;
-
+% the "transparent" box
+path shape; shape = (superellipse(right, up, left, down, 0.81))
+ shifted 1/2 right scaled 30 rotated 30;
alpha = 5/8; % alpha: 0=invisible, 1=opaque
color filler; filler = .95[red,white];
-picture fg, bg;
-bg = currentpicture;
-fg = image(
- for e within bg:
+picture bg; bg = currentpicture; % capture the current drawing
+picture fg; fg = image(
+ for e within bg: % redraw everything with blended color
draw e withcolor alpha[colorpart e, filler];
- endfor
- draw se withpen pencircle scaled 2 withcolor 3/4;
- draw subpath (2.718, 3.1415) of se
- shifted - center se scaled 7/8 shifted + center se
+ endfor
+ draw shape withpen pencircle scaled 2 withcolor 3/4;
+ draw subpath (2.718, 3.1415) of shape % add decoration
+ shifted - center shape scaled 7/8 shifted + center shape
withpen pencircle scaled 2 withcolor white;
-
);
-clip fg to se;
-
-fill se withcolor filler;
-draw fg;
-draw se withcolor 3/4 blue;
+clip fg to shape; % finally clip the fg drawing
+fill shape withcolor filler; % fill the shape
+draw fg; % and put the fg back on top
+draw shape withcolor 3/4 blue;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/fake-transparency.pdf b/info/drawing-with-metapost/src/pics-fake-transparency.pdf
index 07f247a29d..671d68a827 100644
--- a/info/drawing-with-metapost/src/fake-transparency.pdf
+++ b/info/drawing-with-metapost/src/pics-fake-transparency.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-graph-paper-5mm.mp b/info/drawing-with-metapost/src/pics-graph-paper-5mm.mp
new file mode 100644
index 0000000000..679ac1def3
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-graph-paper-5mm.mp
@@ -0,0 +1,5 @@
+input automatic-grid
+begingroup; save P; picture P; P = currentpicture; clearit;
+draw grid(P, 5mm) withpen pencircle scaled 1/4 withcolor (3/4, 3/4, 7/8);
+draw grid(P, 10cm) withpen pencircle scaled 1/4 withcolor (1/2, 1/2, 3/4);
+draw P; endgroup;
diff --git a/info/drawing-with-metapost/src/pics-graph-paper-cm.mp b/info/drawing-with-metapost/src/pics-graph-paper-cm.mp
new file mode 100644
index 0000000000..1eb53928b7
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-graph-paper-cm.mp
@@ -0,0 +1,5 @@
+input automatic-grid
+begingroup; save P; picture P; P = currentpicture; clearit;
+draw grid(P, 1mm) withpen pencircle scaled 1/4 withcolor (3/4, 3/4, 7/8);
+draw grid(P, 1cm) withpen pencircle scaled 3/8 withcolor (1/2, 1/2, 3/4);
+draw P; endgroup;
diff --git a/info/drawing-with-metapost/src/pics-graph-paper-example.mp b/info/drawing-with-metapost/src/pics-graph-paper-example.mp
new file mode 100644
index 0000000000..22cf5134e6
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-graph-paper-example.mp
@@ -0,0 +1,23 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{dwmpcode}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+path C; C = fullcircle scaled 125 shifted 20 up rotated 16;
+for t=0, 1, 4: draw center C -- point t of C withcolor 2/3 blue; endfor
+draw C withcolor 3/4 red; dotlabel.urt("Start", point 0 of C);
+input pics-graph-paper-inch
+
+label.ulft(btex \vbox{\hsize 134pt\raggedright
+Here is an example that adds graph paper behind a drawing.
+
+The first three lines make the example drawing, the
+final \mpl{input} adds the graph paper.
+\par} etex, llcorner currentpicture shifted 10 left);
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/pics-graph-paper-example.pdf b/info/drawing-with-metapost/src/pics-graph-paper-example.pdf
new file mode 100644
index 0000000000..e459e8f3d1
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-graph-paper-example.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-graph-paper-inch.mp b/info/drawing-with-metapost/src/pics-graph-paper-inch.mp
new file mode 100644
index 0000000000..5ddb765027
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-graph-paper-inch.mp
@@ -0,0 +1,6 @@
+input automatic-grid
+begingroup; save P; picture P; P = currentpicture; clearit;
+draw grid(P, 9) withpen pencircle scaled 4/16 withcolor 1/16(12,12,14);
+draw grid(P,36) withpen pencircle scaled 5/16 withcolor 1/16(10,10,13);
+draw grid(P,72) withpen pencircle scaled 6/16 withcolor 1/16( 8, 8,12);
+draw P; endgroup;
diff --git a/info/drawing-with-metapost/src/pics-graph-paper.mp b/info/drawing-with-metapost/src/pics-graph-paper.mp
new file mode 100644
index 0000000000..a6a59ced16
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-graph-paper.mp
@@ -0,0 +1,16 @@
+vardef grid(expr p, grid_unit) =
+ save llx, lly, urx, ury;
+ (llx, lly) = llcorner p - (bboxmargin, bboxmargin);
+ (urx, ury) = urcorner p + (bboxmargin, bboxmargin);
+ image(
+ for x = 1 + floor(llx / grid_unit) upto floor(urx / grid_unit):
+ draw (x * grid_unit, lly) -- (x * grid_unit, ury);
+ endfor
+ for y = 1 + floor(lly / grid_unit) upto floor(ury / grid_unit):
+ draw (llx, y * grid_unit) -- (urx, y * grid_unit);
+ endfor
+ if (llx < 0) and (lly < 0) and (urx > 0) and (ury > 0):
+ draw fullcircle scaled 3; % show origin if in range
+ fi
+ )
+enddef;
diff --git a/info/drawing-with-metapost/src/icosahedron.mp b/info/drawing-with-metapost/src/pics-icosahedron.mp
index b336628462..7ee50091f8 100644
--- a/info/drawing-with-metapost/src/icosahedron.mp
+++ b/info/drawing-with-metapost/src/pics-icosahedron.mp
@@ -1,4 +1,4 @@
-\documentclass[border=2mm]{standalone}
+\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
diff --git a/info/drawing-with-metapost/src/pics-icosahedron.pdf b/info/drawing-with-metapost/src/pics-icosahedron.pdf
new file mode 100644
index 0000000000..13372e9cdd
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-icosahedron.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-shady-circles.mp b/info/drawing-with-metapost/src/pics-shady-circles.mp
new file mode 100644
index 0000000000..eb2caed827
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-shady-circles.mp
@@ -0,0 +1,29 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ numeric r; r = 42; z1 = 5/4 r * left; z2 = 2r * right;
+ path c[];
+ c1 = fullcircle scaled 2 abs z1 shifted z1;
+ c2 = fullcircle scaled 2 abs z2 shifted z2;
+ c3 = fullcircle scaled abs(z2-z1) shifted 1/2[z1,z2];
+ numeric t, u;
+ (t, whatever) = c2 intersectiontimes c3;
+ (u, whatever) = c1 intersectiontimes (point t of c2 -- z1);
+
+ path s;
+ s = subpath (0, u) of c1 -- subpath (t, 4) of c2 -- cycle;
+ numeric gap; gap = 2;
+ for i=0 upto 2r / gap:
+ draw (origin--right) scaled 2r rotated 45t shifted (gap*i,0)
+ withpen pencircle scaled 1/4 withcolor 2/3 blue;
+ endfor
+ clip currentpicture to s;
+
+ draw c1; draw c2;
+ draw z1 -- z2 -- point t of c2 -- cycle;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pics-shady-circles.pdf b/info/drawing-with-metapost/src/pics-shady-circles.pdf
new file mode 100644
index 0000000000..147d0e23b2
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-shady-circles.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-twister.mp b/info/drawing-with-metapost/src/pics-twister.mp
new file mode 100644
index 0000000000..bc7ce43551
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-twister.mp
@@ -0,0 +1,53 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+vardef compass_rose(expr shade, highlight) = image(
+ drawoptions(withcolor shade);
+ draw thelabel("NW" infont defaultfont scaled 3/4, 64 up) rotated +45;
+ draw thelabel("NE" infont defaultfont scaled 3/4, 64 up) rotated -45;
+ draw thelabel("SE" infont defaultfont scaled 3/4, 64 down) rotated +45;
+ draw thelabel("SW" infont defaultfont scaled 3/4, 64 down) rotated -45;
+ draw fullcircle scaled 144 withpen pencircle scaled 2;
+ for r = 53, 54, 59, 60, 69: draw fullcircle scaled 2r; endfor
+ for t=0 step 15 until 350: draw ((53,0) -- (60,0)) rotated t; endfor
+ for t=0 step 45 until 350: draw ((69,0) -- (80,0)) rotated t; endfor
+ save s; path s; s = 8 right -- 60 up -- 8 left -- cycle;
+ for t=0 upto 3: filldraw s rotated (45 + 90t); endfor
+ s := s scaled 1.414;
+ for t=0 upto 3:
+ s := s rotated 90t;
+ fill s withcolor background;
+ fill subpath (-1/2, 1) of s -- cycle if t=0: withcolor highlight fi;
+ draw s;
+ endfor
+ unfill fullcircle scaled 28; draw fullcircle scaled 28;
+ draw origin withpen pencircle scaled dotlabeldiam;
+ label("N" infont "cmbx12", 92 up);
+ label("S" infont "cmbx12", 92 down);
+ label("E" infont "cmbx12", 92 right);
+ label("W" infont "cmbx12", 92 left);
+ drawoptions();
+) enddef;
+input colorbrewer-rgb
+beginfig(1);
+ picture O; O = compass_rose(Blues 8 8, Reds 8 7) scaled 1/2;
+
+ numeric s; pair p; s = 108; p = origin;
+ draw O shifted p;
+ draw bbox O withcolor 3/4[red, white];
+ label.urt(TEX("\small\texttt{bbox P}"), point -1 of bbox O) withcolor 3/4[red, white];
+
+ p := (1s, 0); draw O rotated 30 shifted p; label(TEX("\small\texttt{rotated 30}"), p shifted 54 down);
+ p := (2s,+15); draw O shifted p; label(TEX("\small\texttt{shifted 15 up}"), p shifted 54 down);
+
+ p := ( 0, -1s); draw O scaled 3/4 shifted p; label(TEX("\small\texttt{scaled 3/4}"), p shifted 54 down);
+ p := (1s, -1s); draw O xscaled 3/4 shifted p; label(TEX("\small\texttt{xscaled 3/4}"), p shifted 54 down);
+ p := (2s, -1s); draw O yscaled 3/4 shifted p; label(TEX("\small\texttt{yscaled 3/4}"), p shifted 54 down);
+
+ p := ( 0, -2s); draw O slanted 3/4 shifted p; label(TEX("\small\texttt{slanted 3/4}"), p shifted 54 down);
+ p := (1s, -2s); draw O zscaled 3/4 dir 21 shifted p; label(TEX("\small\texttt{zscaled 3/4 dir 21}"), p shifted 54 down);
+ p := (2s, -2s); draw O reflectedabout(up, down) shifted p; label(TEX("\small\texttt{reflectedabout(up, down)}"), p shifted 54 down);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pics-twister.pdf b/info/drawing-with-metapost/src/pics-twister.pdf
new file mode 100644
index 0000000000..993733716f
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-twister.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/pics-youth.mp b/info/drawing-with-metapost/src/pics-youth.mp
new file mode 100644
index 0000000000..3f31bc472f
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-youth.mp
@@ -0,0 +1,13 @@
+\documentclass{standalone}
+\usepackage{graphicx}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+input picture_frame
+beginfig(1);
+ picture F;
+ F = thelabel(TEX("\includegraphics[width=200pt]{youth.jpg}"), origin);
+ draw F; draw frame F;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/pics-youth.pdf b/info/drawing-with-metapost/src/pics-youth.pdf
new file mode 100644
index 0000000000..08aa6dedbb
--- /dev/null
+++ b/info/drawing-with-metapost/src/pics-youth.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/picture_frame.mp b/info/drawing-with-metapost/src/picture_frame.mp
index d957c54074..f512fd150a 100644
--- a/info/drawing-with-metapost/src/picture_frame.mp
+++ b/info/drawing-with-metapost/src/picture_frame.mp
@@ -1,5 +1,5 @@
% Toby Thurston -- 16 Apr 2021
-% Draw a kitsch picture frame round a rectangular path
+% Draw a kitsch picture frame round a path or picture
color gold, dark, grey;
gold = 1/256(243, 197, 127);
@@ -8,64 +8,57 @@ grey = 1/256(156, 147, 138);
picture ball; ball = image(for i=0 upto 16:
fill interpath(i/16,
- fullcircle scaled 10,
- fullcircle scaled 3 shifted (-2, 2)
+ fullcircle scaled 10,
+ fullcircle scaled 3 shifted (-2, 2)
) withcolor (i/16)[gold, 15/16 white];
endfor) scaled 1/4;
newinternal pf_width; pf_width := 21;
vardef frame expr P =
- save base, side, f, t, u, xx;
- picture base, side; path f; numeric t, u, xx;
-
- t = arclength subpath (0,1) of bbox P;
- u = arclength subpath (1,2) of bbox P;
- xx = max(t, u) + 2 pf_width;
- f = unitsquare xscaled xx yscaled pf_width;
-
- % convenience / nonce function
- vardef paint_strip(expr y, wd, shade) =
- draw subpath (0, 1) of f
- shifted (0, if y < 0: pf_width + fi y)
- withpen pencircle scaled wd
- withcolor shade
- enddef;
-
- base = image(
- % background colour
- fill f withcolor gold;
- % grey strips
- paint_strip(2, 3, 5/4 grey);
- paint_strip(3.5, 1/4, grey);
- paint_strip(5, 1/4, 1/2[gold, dark]);
- paint_strip(-6.5, 1/4, 1/2[gold, dark]);
- paint_strip(-6, 1/4, 1/2[gold, dark]);
- paint_strip(-2, 2, 5/4 grey);
- % spatter with random spots
- for i=0 upto 4 * arclength(subpath (0,1) of f):
- fill fullcircle scaled uniformdeviate 3/4
- shifted (uniformdeviate xx, uniformdeviate pf_width)
- withcolor dark;
- endfor
- % decorative balls
- for x = 2 step 3 until xx:
- draw ball shifted (x, 2);
- endfor
- );
-
- % make two trapezium shapes
- side = base;
- clip side to (pf_width, 0) -- (pf_width + u, 0)
- -- (2 pf_width + u, pf_width) -- (0, pf_width) -- cycle;
- clip base to (pf_width, 0) -- (pf_width + t, 0)
- -- (2 pf_width + t, pf_width) -- (0, pf_width) -- cycle;
-
- % arrange the pieces into a square
- image(
- draw base rotated 180 shifted point 1 of bbox P shifted (+pf_width, 0);
- draw base rotated 0 shifted point 3 of bbox P shifted (-pf_width, 0);
- draw side rotated 90 shifted point 0 of bbox P shifted (0, -pf_width);
- draw side rotated 270 shifted point 2 of bbox P shifted (0, +pf_width);
- )
+ save base, side, f, t, u, xx;
+ picture base, side; path f; numeric t, u, xx;
+ t = arclength subpath (0,1) of bbox P;
+ u = arclength subpath (1,2) of bbox P;
+ xx = max(t, u) + 2 pf_width;
+ f = unitsquare xscaled xx yscaled pf_width;
+ % convenience / nonce function
+ vardef paint_strip(expr y, wd, shade) =
+ draw subpath (0, 1) of f
+ shifted (0, if y < 0: pf_width + fi y)
+ withpen pencircle scaled wd
+ withcolor shade
+ enddef;
+ base = image(
+ fill f withcolor gold; % background colour
+ paint_strip(2, 3, 5/4 grey); % grey strips
+ paint_strip(3.5, 1/4, grey);
+ paint_strip(5, 1/4, 1/2[gold, dark]);
+ paint_strip(-6.5, 1/4, 1/2[gold, dark]);
+ paint_strip(-6, 1/4, 1/2[gold, dark]);
+ paint_strip(-2, 2, 5/4 grey);
+ % spatter with random spots
+ for i=0 upto 4 * arclength(subpath (0,1) of f):
+ fill fullcircle scaled uniformdeviate 3/4
+ shifted (uniformdeviate xx, uniformdeviate pf_width)
+ withcolor dark;
+ endfor
+ % decorative balls
+ for x = 2 step 3 until xx:
+ draw ball shifted (x, 2);
+ endfor
+ );
+ % make two trapezium shapes
+ side = base;
+ clip side to (pf_width, 0) -- (pf_width + u, 0)
+ -- (2 pf_width + u, pf_width) -- (0, pf_width) -- cycle;
+ clip base to (pf_width, 0) -- (pf_width + t, 0)
+ -- (2 pf_width + t, pf_width) -- (0, pf_width) -- cycle;
+ % arrange the pieces into a square
+ image(
+ draw base rotated 180 shifted point 1 of bbox P shifted (+pf_width, 0);
+ draw base rotated 0 shifted point 3 of bbox P shifted (-pf_width, 0);
+ draw side rotated 90 shifted point 0 of bbox P shifted (0, -pf_width);
+ draw side rotated 270 shifted point 2 of bbox P shifted (0, +pf_width);
+ )
enddef;
diff --git a/info/drawing-with-metapost/src/pinwheel.mp b/info/drawing-with-metapost/src/pinwheel.mp
deleted file mode 100644
index 83a957d415..0000000000
--- a/info/drawing-with-metapost/src/pinwheel.mp
+++ /dev/null
@@ -1,36 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-vardef pinwheel(expr level, a, b, c, s) =
- if level = 0:
- fill a--b--c--cycle withcolor s;
- draw a--b--c--cycle withpen pencircle scaled 1/16 withcolor Blues 9 1;
- % path t; t = a--b--9/10[b,c]--cycle;
- % fill t withcolor s;
- % draw t withpen pencircle scaled 1/16 withcolor Greens 9 1;
- % draw point 5/2 of t withpen pencircle scaled 2 withcolor (1/4 + greenpart s, redpart s, bluepart s);
- else:
- save d, e, f, g;
- pair d, e, f, g;
- d = 2/5[b, c]; e = 4/5[b,c]; f = 1/2[e, a]; g = 1/2[a, b];
- pinwheel(level - 1, e, a, c, Blues 9 4);
- pinwheel(level - 1, f, g, a, Blues 9 3);
- pinwheel(level - 1, f, g, e, Blues 9 2);
- pinwheel(level - 1, d, e, g, Blues 9 5);
- pinwheel(level - 1, d, b, g, Blues 9 6);
- fi
-enddef;
-beginfig(1);
- numeric a, b; b = 6.4in; 2a = b;
- pinwheel(5, (0, 0), (b, 0), (0, a), "");
- pinwheel(5, (b, a), (0, a), (b, 0), "");
- currentpicture := currentpicture rotated 90;
- % for i=1 upto 1:
- % draw currentpicture shifted (lrcorner currentpicture - llcorner currentpicture);
- % endfor
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/pinwheel.pdf b/info/drawing-with-metapost/src/pinwheel.pdf
deleted file mode 100644
index d0723c21c4..0000000000
--- a/info/drawing-with-metapost/src/pinwheel.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/plain-axes.mp b/info/drawing-with-metapost/src/plain-axes.mp
deleted file mode 100644
index e535290d21..0000000000
--- a/info/drawing-with-metapost/src/plain-axes.mp
+++ /dev/null
@@ -1,17 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- path xx, yy;
- xx = (left -- right) scaled 130;
- yy = (down -- up) scaled 80;
- drawarrow xx;
- drawarrow yy;
- label.rt("$x$", point 1 of xx);
- label.top("$y$", point 1 of yy);
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/pole-and-polar.mp b/info/drawing-with-metapost/src/pole-and-polar.mp
deleted file mode 100644
index 6673ca6341..0000000000
--- a/info/drawing-with-metapost/src/pole-and-polar.mp
+++ /dev/null
@@ -1,59 +0,0 @@
-\documentclass[border=3mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- path C, L;
- numeric r;
- r = 89;
- C = fullcircle scaled 2r;
- L = (up--down) scaled 138 shifted 180 right rotated 34;
- pair a, b, o;
- a = point 0 of L; b = point 1 of L;
- o = center C;
-
- pair P, Q, R, P', m;
- P = whatever[a, b]; o - P = whatever * (a - b) rotated 90;
- Q = C intersectionpoint halfcircle zscaled (P-o) shifted 1/2[P, o];
- R = Q reflectedabout(P, o);
- P' = whatever[o, P] = whatever [Q, R];
-
- draw fullcircle scaled abs(P' - o) shifted 1/2[o, P']
- dashed withdots scaled 1/4
- withpen pencircle scaled 1/4
- withcolor 1/3 blue;
-
- draw unitsquare scaled 5 rotated (270 + angle (P-Q)) shifted Q withcolor 3/4 white;
- draw unitsquare scaled 5 rotated (90 + angle (P-o)) shifted P withcolor 3/4 white;
- draw unitsquare scaled 5 rotated (90 + angle (P-o)) shifted P' withcolor 3/4 white;
-
- draw P -- Q -- o -- R -- cycle withcolor 1/2 white;
- draw Q--R; draw o -- P;
- draw L withcolor 2/3 blue;
-
- draw C dashed evenly scaled 1/2 withcolor 1/2[2/3 blue, white];
-
- dotlabel.top("$Q$", Q);
- dotlabel.lrt("$R$", R);
- dotlabel.urt("$P$", P);
- dotlabel.llft("$O$", o); fill fullcircle scaled 3/4 dotlabeldiam shifted o withcolor white;
- label.lft("$r$", 1/2[o, Q]);
-
- drawdot P' withpen pencircle scaled dotlabeldiam;
- label("$P'$", P' shifted 10 dir 68) withcolor 2/3 blue;
-
- drawoptions(withcolor 2/3 blue);
- label.bot("\textit{circle of inversion}", point 6 of C);
- label.urt("\textit{polar}", point 1/4 of L);
- z0 = P' + 20 dir -20; draw z0 -- P' cutafter fullcircle scaled 8 shifted P'
- withpen pencircle scaled 1/4;
- label.rt("\textit{pole}", z0);
- drawoptions();
-
- label("$\displaystyle {r\over OP} = {OP' \over r}$", 1/2[point 0 of C, point 1 of L] + 12 down);
- label("$\displaystyle r^2 = OP \times OP'$", 1/2[point 0 of C, point 1 of L] + 36 down);
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/qed.mp b/info/drawing-with-metapost/src/qed.mp
deleted file mode 100644
index e8ef24e4bd..0000000000
--- a/info/drawing-with-metapost/src/qed.mp
+++ /dev/null
@@ -1,42 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-def perpendicular expr t of p =
- direction t of p rotated 90 shifted point t of p
- enddef;
-
-vardef block(expr r) =
- save u, n, s, theta, base, ray;
- numeric u, n, s, theta;
- u = 5mm; n = 32; s = 8u; theta = -45;
-
- path base, ray[];
- base = origin for i=1 upto n-1: -- (i/n*s,r*normaldeviate) endfor
- -- (s,0) -- (s,-u) -- (0,-u) -- cycle;
-
- image(
- fill base withcolor .8[blue,white];
- draw base withcolor .67 blue;
-
- for i=2 upto 6:
- ray[i] = (left--right) scaled 2/3 s rotated theta shifted (i*u,0);
- b := ypart(ray[i] intersectiontimes base);
- ray[i] := point 0 of ray[i]
- -- point b of base
- -- point 0 of ray[i] reflectedabout(point b of base, perpendicular b of base);
- drawarrow ray[i];
- endfor
-
- label("r=" & decimal r, center base);
- ) enddef;
-
-beginfig(0);
-
- draw block(0); draw block(0.42) shifted 180 right;
-
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/qed.pdf b/info/drawing-with-metapost/src/qed.pdf
deleted file mode 100644
index 361fa0686a..0000000000
--- a/info/drawing-with-metapost/src/qed.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/radical-axis.mp b/info/drawing-with-metapost/src/radical-axis.mp
deleted file mode 100644
index ee1c7fd6fe..0000000000
--- a/info/drawing-with-metapost/src/radical-axis.mp
+++ /dev/null
@@ -1,72 +0,0 @@
-\documentclass[border=1mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-
-vardef radical_axis(expr ca, cb) =
- numeric t, d, ra, rb;
- ra = abs(center ca - point 0 of ca);
- rb = abs(center cb - point 0 of cb);
- d = abs(center cb - center ca);
- 2t = 1 + (ra+rb) / d * (ra-rb) / d;
- (up -- down) scaled 89
- rotated angle (center cb - center ca)
- shifted t[center ca, center cb]
-enddef;
-
-vardef tangent_times(expr C, p) =
- save m, a, b, G, H;
- pair m; numeric a, b; path G, H;
- m = 1/2[p, center C];
- H = halfcircle scaled abs (p - center C)
- rotated angle (p - center C) shifted m;
- G = H rotatedabout(m, 180);
- (a, whatever) = C intersectiontimes H;
- (b, whatever) = C intersectiontimes G;
- (a, b if b < a: + 8 fi)
-enddef;
-
-beginfig(1);
- path c[], a[];
- z1 = origin; z2 = 233 right rotated 4; z3 = 209 right rotated -42;
- c1 = fullcircle scaled 202 shifted z1;
- c2 = fullcircle scaled 106 shifted z2;
- c3 = fullcircle scaled 62 shifted z3;
- a1 = radical_axis(c1, c2);
- a2 = radical_axis(c2, c3);
- a3 = radical_axis(c3, c1);
-
- z0 = whatever [point 0 of a1, point 1 of a1]
- = whatever [point 0 of a2, point 1 of a2];
-
- numeric t;
- (t, whatever) = tangent_times(c1, z0);
-
- drawoptions(withpen pencircle scaled 1 withcolor 3/4[blue, white]);
- draw c1; draw c2; draw c3;
-
- drawoptions(withcolor 3/4[blue, white]);
- draw z1 -- point t of c1 dashed evenly;
-
- drawoptions(withpen pencircle scaled 1/4);
- draw z1 -- z2 -- z3 -- cycle;
- drawoptions();
- draw a1; draw a2; draw a3;
-
- drawoptions(withcolor 2/3 red);
- draw fullcircle scaled 2 abs (point t of c1 - z0) shifted z0;
- draw z0 -- point t of c1 dashed evenly;
- drawdot z0 withpen pencircle scaled dotlabeldiam;
-
- drawoptions(withcolor 1/4[blue, white]);
- drawdot z1 withpen pencircle scaled dotlabeldiam;
- drawdot z2 withpen pencircle scaled dotlabeldiam;
- drawdot z3 withpen pencircle scaled dotlabeldiam;
- label.urt(btex $C_1$ etex, point 1 of c1);
- label.urt(btex $C_2$ etex, point 1 of c2);
- label.rt (btex $C_3$ etex, point 0 of c3);
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/random-dice.mp b/info/drawing-with-metapost/src/random-dice.mp
new file mode 100644
index 0000000000..bd91017dae
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-dice.mp
@@ -0,0 +1,40 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+vardef dice(expr pip_count, pip_color) =
+ save d,r,p, ul, ur, lr, ll; r = 1/8;
+ path d; d = for i=0 upto 3:
+ quartercircle scaled 3 shifted (15,15) rotated 90i --
+ endfor cycle;
+ picture p; p = image(
+ fill fullcircle scaled 6 withcolor pip_color;
+ draw fullcircle scaled 6;
+ );
+ pair ul, ur, ll, lr;
+ ul = 1/5[ulcorner d, lrcorner d]; ur = 1/5[urcorner d, llcorner d];
+ ll = 4/5[urcorner d, llcorner d]; lr = 4/5[ulcorner d, lrcorner d];
+ image(
+ fill d withcolor (1, 0.96, 0.8); draw d;
+ if odd(pip_count):
+ draw p shifted center d;
+ fi;
+ if pip_count > 1:
+ draw p shifted ul; draw p shifted lr;
+ fi;
+ if pip_count > 3:
+ draw p shifted ur; draw p shifted ll;
+ fi;
+ if pip_count = 6:
+ draw p shifted 1/2[ul,ll]; draw p shifted 1/2[ur,lr];
+ fi
+ )
+enddef;
+beginfig(1);
+for i=0 upto 4:
+ draw dice(1+floor uniformdeviate 6, if odd i: red else: blue fi)
+ rotated (2 normaldeviate) shifted (36i,0);
+endfor
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/random-dice.pdf b/info/drawing-with-metapost/src/random-dice.pdf
new file mode 100644
index 0000000000..b49e30be4f
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-dice.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-explosions.mp b/info/drawing-with-metapost/src/random-explosions.mp
new file mode 100644
index 0000000000..344618d281
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-explosions.mp
@@ -0,0 +1,32 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\usepackage{fontspec}
+\setmainfont{PlayfairDisplay-Black}[Scale=2.8]
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+randomseed:=2128.5073;
+beginfig(1);
+ n = 40; r = 12 ; s = 72;
+ path explosion; explosion = for i=1 upto n:
+ (if odd i: - fi r + s + uniformdeviate r) * dir (360/n*i) --
+ endfor cycle;
+ path splash; splash = for i=1 upto n:
+ (if odd i: - fi r + s + uniformdeviate r) * dir (360/n*i) ..
+ endfor cycle;
+ picture P[];
+ P1 = image(
+ fill explosion withcolor Oranges 7 4;
+ draw explosion withpen pencircle scaled 2 withcolor Reds 7 7;
+ label("BOOM!", center explosion) withcolor Reds 7 7;
+ );
+ P2 = image(
+ fill splash withcolor Blues 7 2;
+ draw splash withpen pencircle scaled 2 withcolor Blues 7 7;
+ label("SPLAT!", center splash) withcolor Blues 7 7;
+ );
+ label.lft(P1, 10 left); label.rt(P2, 10 right);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/random-explosions.pdf b/info/drawing-with-metapost/src/random-explosions.pdf
new file mode 100644
index 0000000000..22e654aa49
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-explosions.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-exponential-test.mp b/info/drawing-with-metapost/src/random-exponential-test.mp
new file mode 100644
index 0000000000..3bb3991c17
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-exponential-test.mp
@@ -0,0 +1,89 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+input random-other-distributions
+
+beginfig(1);
+
+ numeric bucket[]; for i = 1 upto 5: bucket[i] = 0; endfor
+ numeric scale; scale = 50;
+ numeric N; N = 80;
+ numeric stack_height[];
+ numeric mu, r, k; mu = 0;
+ pair w;
+
+ for i=1 upto N: for j=1 upto N:
+ r := exponentialdeviate scale;
+ k := floor r;
+ mu := mu + (r - mu) / (i * N + j);
+
+ if known stack_height[k]:
+ stack_height[k] := stack_height[k] + 1;
+ else:
+ stack_height[k] := 1;
+ fi
+
+ w := (r, uniformdeviate 1/8 + stack_height[k]);
+
+
+ color shade;
+ if r < scale: bucket[1] := bucket[1] + 1; shade := Greens 8 8;
+ elseif r < 2 scale: bucket[2] := bucket[2] + 1; shade := Blues 8 8;
+ elseif r < 3 scale: bucket[3] := bucket[3] + 1; shade := Oranges 8 6;
+ elseif r < 4 scale: bucket[4] := bucket[4] + 1; shade := Reds 8 6;
+ else: bucket[5] := bucket[5] + 1; shade := black;
+ fi
+
+ if r < 7 scale: % trim very high ...
+ draw w withcolor shade;
+ fi
+ endfor endfor
+
+ draw (origin -- 1.44 scale * up) shifted (mu, 0) withcolor 2/3 blue;
+ label.top("$\mu$", (mu, 1.44 scale));
+
+ path xx, yy;
+ xx = origin -- 6 scale * right shifted 12 right;
+ yy = origin -- 2 N * up;
+
+ ahangle := 30;
+ for x=1 upto 6:
+ draw (origin -- 3 down) shifted (scale * x, 0);
+ label.bot(decimal x, (scale * x, -3));
+ endfor
+ drawarrow xx;
+ draw yy;
+
+ vardef exponential_pdf(expr x, lambda) =
+ if x < 0: 0 else: lambda * mexp(-256x * lambda) fi
+ enddef;
+
+ path E;
+ E = ((0, exponential_pdf(0, 1)) for x=1 upto 6: .. (x, exponential_pdf(x, 1)) endfor)
+ xscaled scale yscaled 1.8N;
+
+ draw E withcolor 1/2 red;
+
+ string p;
+ for i=1 upto 5:
+ p := decimal (bucket[i] / N / N);
+ label.bot("\tiny " & p, ((i-1/2) * scale, -10));
+ endfor
+
+ pair a, b;
+ a = point 1/4 of E shifted (2,3);
+ b = point 1/4 of E shifted (20, 30);
+ draw a -- b withpen pencircle scaled 1/4;
+ label.urt("$\lambda e^{-\lambda x}$", b);
+
+ label.llft("\large\textsf{Histogram of exponential deviates}", urcorner currentpicture);
+
+ input show_name
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/random-exponential-test.pdf b/info/drawing-with-metapost/src/random-exponential-test.pdf
new file mode 100644
index 0000000000..ce533e3bb2
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-exponential-test.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-freehand-circumcircle.mp b/info/drawing-with-metapost/src/random-freehand-circumcircle.mp
index 290ba81b7e..d668d7c3d0 100644
--- a/info/drawing-with-metapost/src/random-freehand-circumcircle.mp
+++ b/info/drawing-with-metapost/src/random-freehand-circumcircle.mp
@@ -18,26 +18,27 @@ color sepia; sepia = (0.44, 0.26, 0.08);
picture marker; marker = image(for s=-1/2, 1/2:
draw (left--right) scaled 2 rotated 60 shifted (s,0);
endfor);
-def moved_along expr x of p = rotated angle direction x of p
- shifted point x of p enddef;
-
+def moved_along expr x of p =
+ rotated angle direction x of p
+ shifted point x of p
+enddef;
beginfig(1);
-pair A, B, C, D;
-A = (0,-30); B = (180,0); C = (120,90); D = (1/2 + 1/40 normaldeviate)[A, B];
-path triangle, circumcircle, bisector;
-triangle = freehand_path(A--D--B--C--cycle);
-bisector = freehand_segment(C--D);
-circumcircle = freehand_path(A..B..C..cycle);
-draw triangle;
-draw bisector;
-draw circumcircle withcolor .67 red;
-draw marker moved_along 1/2 of triangle withcolor .67 red;
-draw marker moved_along 3/2 of triangle withcolor .67 red;
-label.lft("A", A);
-label.rt ("B", B);
-label.top("C", C);
-label.bot("D", D);
+ pair A, B, C, D;
+ A = (0,-30); B = (180,0); C = (120,90);
+ D = (1/2 + 1/40 normaldeviate)[A, B];
+ path triangle, circumcircle, bisector;
+ triangle = freehand_path(A--D--B--C--cycle);
+ bisector = freehand_segment(C--D);
+ circumcircle = freehand_path(A..B..C..cycle);
+ draw triangle;
+ draw bisector;
+ draw circumcircle withcolor .67 red;
+ draw marker moved_along 1/2 of triangle withcolor .67 red;
+ draw marker moved_along 3/2 of triangle withcolor .67 red;
+ label.lft("A", A);
+ label.rt ("B", B);
+ label.top("C", C);
+ label.bot("D", D);
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/random-freehand-circumcircle.pdf b/info/drawing-with-metapost/src/random-freehand-circumcircle.pdf
index d1e3586cd0..a078c71638 100644
--- a/info/drawing-with-metapost/src/random-freehand-circumcircle.pdf
+++ b/info/drawing-with-metapost/src/random-freehand-circumcircle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-freehand-through.mp b/info/drawing-with-metapost/src/random-freehand-through.mp
index 0bbacf4436..2a07c8b406 100644
--- a/info/drawing-with-metapost/src/random-freehand-through.mp
+++ b/info/drawing-with-metapost/src/random-freehand-through.mp
@@ -3,40 +3,41 @@
\begin{document}
\begin{mplibcode}
vardef freehand_through@#(expr a, b) =
- save t; pair t; t = @# * unitvector(b - a) rotated (4 + normaldeviate);
- a - t .. a {t} .. b {t} .. b + t
+ save t; pair t;
+ t = @# * unitvector(b - a) rotated (4 + normaldeviate);
+ a - t .. a {t} .. b {t} .. b + t
enddef;
vardef mid_arc@#(expr p, a, b) =
- save c; path c; c = fullcircle scaled (2*@#) shifted p cutbefore a cutafter b;
- point arctime 1/2 arclength c of c of c
+ save c; path c;
+ c = fullcircle scaled (2*@#) shifted p cutbefore a cutafter b;
+ point arctime 1/2 arclength c of c of c
enddef;
beginfig(1);
-defaultfont := "eurm10"; color sepia; sepia = (0.44, 0.26, 0.08);
-pair A, B, C;
-A = (0,-30); B = (180,0); C = (120,90);
+ defaultfont := "eurm10"; color sepia; sepia = (0.44, 0.26, 0.08);
+ pair A, B, C;
+ A = (0,-30); B = (180,0); C = (120,90);
-path a, b, c;
-a = freehand_through 7 (A, B);
-b = freehand_through 8 (B, C);
-c = freehand_through 6 (C, A);
+ path a, b, c;
+ a = freehand_through 7 (A, B);
+ b = freehand_through 8 (B, C);
+ c = freehand_through 6 (C, A);
-drawoptions(withcolor sepia);
-draw a; draw b; draw c;
+ drawoptions(withcolor sepia);
+ draw a; draw b; draw c;
-drawoptions(withcolor .67 blue);
-label.bot ("a", point 3/2 of a);
-label.rt ("b", point 3/2 of b);
-label.ulft("c", point 3/2 of c);
+ drawoptions(withcolor .67 blue);
+ label.bot ("a", point 3/2 of a);
+ label.rt ("b", point 3/2 of b);
+ label.ulft("c", point 3/2 of c);
-drawoptions(withcolor .5 red);
-label(char 11, mid_arc 16 (A, a, c));
-label(char 12, mid_arc 14 (B, b, a));
-label(char 13, mid_arc 14 (C, c, b));
+ drawoptions(withcolor .5 red);
+ label(char 11, mid_arc 16 (A, a, c));
+ label(char 12, mid_arc 14 (B, b, a));
+ label(char 13, mid_arc 14 (C, c, b));
-drawoptions();
+ drawoptions();
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/random-freehand-through.pdf b/info/drawing-with-metapost/src/random-freehand-through.pdf
index 55e5548095..3ae1c66efc 100644
--- a/info/drawing-with-metapost/src/random-freehand-through.pdf
+++ b/info/drawing-with-metapost/src/random-freehand-through.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/gaussian.mp b/info/drawing-with-metapost/src/random-gaussian.mp
index 540256bddb..540256bddb 100644
--- a/info/drawing-with-metapost/src/gaussian.mp
+++ b/info/drawing-with-metapost/src/random-gaussian.mp
diff --git a/info/drawing-with-metapost/src/gaussian.pdf b/info/drawing-with-metapost/src/random-gaussian.pdf
index 1be302a804..1be302a804 100644
--- a/info/drawing-with-metapost/src/gaussian.pdf
+++ b/info/drawing-with-metapost/src/random-gaussian.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-other-distributions.mp b/info/drawing-with-metapost/src/random-other-distributions.mp
new file mode 100644
index 0000000000..78c96f75ca
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-other-distributions.mp
@@ -0,0 +1,48 @@
+
+
+vardef normaldeviate =
+ save u, v, xa;
+ forever:
+ u := 1 - uniformdeviate 63/64;
+ v := sqrt(8/mexp(256)) * (-1/2 + uniformdeviate 1);
+ xa := v / u;
+ exitif (xa * xa <= -mlog(u)/64);
+ endfor
+ xa
+enddef;
+
+vardef exponentialdeviate expr mu =
+ save u;
+ u = 1 - uniformdeviate 1; % hence 0 < u <= 1 and so you avoid
+ -mu * 1/256 mlog(u) % the danger of calling mlog(0)
+enddef;
+
+vardef tand(expr theta) =
+ save x, y;
+ (x, y) = dir theta;
+ if abs(x) < eps: infinity else: y/x fi
+enddef;
+vardef exp(expr x) = mexp(256x) enddef;
+vardef log(expr x) = 1/256 mlog(x) enddef;
+
+% this is defined only for a > 1
+vardef gammadeviate(expr a, b) =
+ save y, x, v, s, accept; boolean accept;
+ s = sqrt(2a - 1);
+ forever:
+ forever:
+ y := tand(uniformdeviate 180);
+ exitif abs(y) < 16;
+ endfor
+ x := s * y + a - 1;
+ accept := false;
+ if x > 0:
+ v := uniformdeviate 1;
+ if v <= (1 + y * y) * exp((a - 1) * log(x / (a - 1)) - s * y):
+ accept := true;
+ fi
+ fi
+ exitif accept;
+ endfor
+ x/b
+enddef;
diff --git a/info/drawing-with-metapost/src/random-qed.mp b/info/drawing-with-metapost/src/random-qed.mp
new file mode 100644
index 0000000000..17ec5f9f89
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-qed.mp
@@ -0,0 +1,39 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+def perpendicular expr t of p =
+ direction t of p rotated 90 shifted point t of p
+enddef;
+
+vardef block(expr wd, dp, theta, r) =
+ save base, ray, b;
+ path base, ray[]; numeric b;
+
+ base = origin for i=1 upto 31:
+ -- (i/32 * wd, r * normaldeviate)
+ endfor -- (wd,0) -- (wd,-dp) -- (0,-dp) -- cycle;
+
+ image(
+ fill base withcolor .8[blue,white];
+ draw base withcolor .67 blue;
+
+ for i = 2 upto 6:
+ ray[i] = (left--right) scaled 2/3 wd rotated -theta
+ shifted (i/8 * wd,0);
+ b := ypart (ray[i] intersectiontimes base);
+ ray[i] := point 0 of ray[i] -- point b of base -- point 0 of ray[i]
+ reflectedabout(point b of base, perpendicular b of base);
+ drawarrow ray[i];
+ endfor
+
+ label("$r=" & decimal r & "$", center base);
+ )
+enddef;
+beginfig(0);
+ draw block(108, 16, 45, 0);
+ draw block(108, 16, 45, 0.42) shifted 180 right;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/random-qed.pdf b/info/drawing-with-metapost/src/random-qed.pdf
new file mode 100644
index 0000000000..ecd11c483e
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-qed.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-shapes.mp b/info/drawing-with-metapost/src/random-shapes.mp
index de581a58fe..cf9a4aca16 100644
--- a/info/drawing-with-metapost/src/random-shapes.mp
+++ b/info/drawing-with-metapost/src/random-shapes.mp
@@ -4,21 +4,20 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
-numeric desired_length, n, s;
-desired_length = 180; n = 30; s = 80;
-for r=0 upto 8:
- path shape;
- shape = for i=1 upto n:
- (s + r * normaldeviate, 0) rotated (360/n*i) ..
- endfor cycle;
+ numeric desired_length, n, s;
+ desired_length = 180; n = 30; s = 80;
+ for r=0 upto 8:
+ path shape;
+ shape = for i=1 upto n:
+ (s + r * normaldeviate, 0) rotated (360/n*i) ..
+ endfor cycle;
- shape := shape scaled (desired_length/arclength shape);
-
- draw shape shifted (r*s, 0) withcolor (r/8)[black,red];
- label(decimal r, (r*s, 0));
+ shape := shape scaled (desired_length/arclength shape);
-endfor
+ draw shape shifted (r*s, 0) withcolor (r/8)[black,red];
+ label(decimal r, (r*s, 0));
+
+ endfor
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/random-shapes.pdf b/info/drawing-with-metapost/src/random-shapes.pdf
index 540fdb680c..a39edade7e 100644
--- a/info/drawing-with-metapost/src/random-shapes.pdf
+++ b/info/drawing-with-metapost/src/random-shapes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-torn-edge-circle.mp b/info/drawing-with-metapost/src/random-torn-edge-circle.mp
new file mode 100644
index 0000000000..cc1b05459d
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-torn-edge-circle.mp
@@ -0,0 +1,18 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+input random-torn-edge
+beginfig(1);
+ path c; c = fullcircle scaled 200;
+ draw c withcolor .8 white;
+ y=0; n = 600;
+ path t; t = for i=0 upto n-1:
+ point i/n*length(c) of c
+ + (0, walkr y) rotated angle direction i/n*length(c) of c
+ --
+ endfor cycle;
+ draw t withcolor .67 red;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/random-torn-edge-circle.pdf b/info/drawing-with-metapost/src/random-torn-edge-circle.pdf
new file mode 100644
index 0000000000..4d1de0ad6d
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-torn-edge-circle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-torn-edge.mp b/info/drawing-with-metapost/src/random-torn-edge.mp
new file mode 100644
index 0000000000..f92de95c0a
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-torn-edge.mp
@@ -0,0 +1,8 @@
+vardef walkr suffix $ =
+ save t; boolean t;
+ t = uniformdeviate 1 < (2 ** - abs($));
+ $ := $ if t: + else: - fi signr $; $
+enddef;
+vardef signr suffix $ =
+ if $ < 0: - else: + fi uniformdeviate 1
+enddef;
diff --git a/info/drawing-with-metapost/src/random-torn-straight-edge.mp b/info/drawing-with-metapost/src/random-torn-straight-edge.mp
new file mode 100644
index 0000000000..73f735f7de
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-torn-straight-edge.mp
@@ -0,0 +1,14 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+input random-torn-edge
+beginfig(1);
+ path t; numeric x, y;
+ x = 0; y=0;
+ t = (x, -20) -- (x, y) for i=1 upto 288:
+ -- (incr x, walkr y) endfor -- (x, -20) -- cycle;
+ fill t withcolor (1, 1, 31/32); draw t withcolor .67 blue;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/random-torn-straight-edge.pdf b/info/drawing-with-metapost/src/random-torn-straight-edge.pdf
new file mode 100644
index 0000000000..ba6d68afba
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-torn-straight-edge.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-two-dimensional-brownian.mp b/info/drawing-with-metapost/src/random-two-dimensional-brownian.mp
new file mode 100644
index 0000000000..e1833d96f1
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-two-dimensional-brownian.mp
@@ -0,0 +1,22 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\mplibshowlog{enable}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+% randomseed := uniformdeviate infinity;
+randomseed := 2141.34242;
+numeric u, v; u = 5; v = 4;
+for n=1 upto 4:
+ numeric x, y; x = y = 0;
+ path w; w = (x, y) for i=1 upto 2048:
+ hide(x := x + normaldeviate * u ; y := y + normaldeviate * v)
+ .. (x, y)
+ endfor;
+ draw w withcolor (2n/10)[white, 2/3 blue];
+ draw (x, y) withpen pencircle scaled 3 withcolor 2/3 red;
+endfor
+draw origin withpen pencircle scaled 3 withcolor 3/4 green;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/random-two-dimensional-brownian.pdf b/info/drawing-with-metapost/src/random-two-dimensional-brownian.pdf
new file mode 100644
index 0000000000..8a4cb81690
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-two-dimensional-brownian.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-walks-normal-bridge.mp b/info/drawing-with-metapost/src/random-walks-normal-bridge.mp
new file mode 100644
index 0000000000..61d14e9f07
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-walks-normal-bridge.mp
@@ -0,0 +1,25 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\mplibshowlog{enable}
+\begin{mplibcode}
+beginfig(1);
+ randomseed := 3612.11746;
+ numeric w, h, n; w = 377; h = 80; n = 500;
+ draw (origin--right) scaled w;
+ draw (origin--right) scaled w shifted (0,+h/2) withcolor 3/4;
+ draw (origin--right) scaled w shifted (0,-h/2) withcolor 3/4;
+ numeric y; y = 0;
+ path walk; walk = (0, y) for x=w/n step w/n until w:
+ hide(y := y + 4 normaldeviate)
+ -- (x, y)
+ endfor;
+ path bridge; bridge = point 0 of walk for i=1 upto n:
+ -- point i of walk + (0, i/n * -y) endfor;
+ draw walk withcolor 7/8; % so you can see how it works
+ undraw bridge withpen pencircle scaled 3/4;
+ draw bridge withcolor 3/4 blue;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/random-walks-normal-bridge.pdf b/info/drawing-with-metapost/src/random-walks-normal-bridge.pdf
new file mode 100644
index 0000000000..64776bb47d
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-walks-normal-bridge.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-walks-normal.mp b/info/drawing-with-metapost/src/random-walks-normal.mp
new file mode 100644
index 0000000000..417ace7151
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-walks-normal.mp
@@ -0,0 +1,27 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\mplibshowlog{enable}
+\begin{mplibcode}
+beginfig(1);
+ randomseed := 3612.11746;
+ numeric w, h, n; w = 377; h = 80; n = 500;
+ draw (origin--right) scaled w;
+ draw (origin--right) scaled w shifted (0,+h/2) withcolor 3/4;
+ draw (origin--right) scaled w shifted (0,-h/2) withcolor 3/4;
+ for i=1 upto 4:
+ numeric y; y = 0;
+ path walk; walk = (0, y) for x=w/n step w/n until w:
+ hide(y := y + 2 normaldeviate)
+ -- (x, y)
+ endfor;
+ undraw walk withpen pencircle scaled 3/4;
+ draw walk withcolor (1/2+y/h)[red, blue];
+ label.rt("$\scriptstyle" & decimal i & "$",
+ point infinity of walk);
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/random-walks-normal.pdf b/info/drawing-with-metapost/src/random-walks-normal.pdf
new file mode 100644
index 0000000000..11e69fcd19
--- /dev/null
+++ b/info/drawing-with-metapost/src/random-walks-normal.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/random-walks-red-blue.mp b/info/drawing-with-metapost/src/random-walks-red-blue.mp
index a11a5f22f3..8ceee94761 100644
--- a/info/drawing-with-metapost/src/random-walks-red-blue.mp
+++ b/info/drawing-with-metapost/src/random-walks-red-blue.mp
@@ -1,45 +1,33 @@
\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
-\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
- randomseed := 3.1415;
- color tr, tb; tr = 0.84 red; tb = 1.2(.2,.2,.7);
- numeric w, h, n; w = 377; h = 80; n = 500;
- pair zenith, nadir; zenith = nadir = origin;
- path walk[];
+ numeric w, h, n; w = 377; h = 80; n = 500;
- draw (origin--right) scaled w;
- draw (origin--right) scaled w shifted (0,+h/2) withcolor 3/4;
- draw (origin--right) scaled w shifted (0,-h/2) withcolor 3/4;
-
- for i=1 upto 8:
- numeric y; y = 0;
- walk[i] = origin for x=w/n step w/n until w:
- hide(
- y := y if uniformdeviate 1 < 1/2: + else: - fi 1;
- if y > ypart zenith: zenith := (x,y) ; fi
- if y < ypart nadir: nadir := (x,y) ; fi
- )
- -- (x,y)
- endfor;
- undraw walk[i] withpen pencircle scaled 3/4;
- draw walk[i] withcolor (1/2+y/h)[tr, tb];
- label.rt("$\scriptstyle" & decimal i & "$",
- point infinity of walk[i]
- if i=1: shifted (-3, 3)
- elseif i=3: shifted (1,3)
- elseif i=5: shifted (-3, 3)
- elseif i=7: shifted (-1, -4) fi);
- endfor
-
- drawarrow (12 up -- 2 up ) shifted zenith withcolor tb;
- drawarrow (12 down -- 2 down) shifted nadir withcolor tr;
-
- fill fullcircle scaled 2;
+ draw (origin--right) scaled w;
+ draw (origin--right) scaled w shifted (0,+h/2) withcolor 3/4;
+ draw (origin--right) scaled w shifted (0,-h/2) withcolor 3/4;
+ pair zenith, nadir; zenith = nadir = origin;
+ color gain, lose; gain = .67 blue; lose = .85 red;
+ for i=1 upto 8:
+ path walk;
+ numeric y; y = 0;
+ walk = origin for x=w/n step w/n until w:
+ hide(
+ y := y if uniformdeviate 1 < 1/2: + else: - fi 1;
+ if y > ypart zenith: zenith := (x,y) ; fi
+ if y < ypart nadir: nadir := (x,y) ; fi
+ )
+ -- (x,y)
+ endfor;
+ undraw walk withpen pencircle scaled 3/4;
+ draw walk withcolor (1/2+y/h)[lose, gain];
+ endfor
+ draw origin withpen pencircle scaled 2;
+ drawarrow (12 up -- 2 up) shifted zenith withcolor gain;
+ drawarrow (12 down -- 2 down) shifted nadir withcolor lose;
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/random-walks-red-blue.pdf b/info/drawing-with-metapost/src/random-walks-red-blue.pdf
index c76047183c..5098669191 100644
--- a/info/drawing-with-metapost/src/random-walks-red-blue.pdf
+++ b/info/drawing-with-metapost/src/random-walks-red-blue.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-bush.mp b/info/drawing-with-metapost/src/rec-bush.mp
index 594a2eebf5..3d7deb4604 100644
--- a/info/drawing-with-metapost/src/rec-bush.mp
+++ b/info/drawing-with-metapost/src/rec-bush.mp
@@ -2,25 +2,19 @@
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
+\mplibshowlog{enable}
\begin{mplibcode}
+randomseed:=2321.57867;
input colorbrewer-rgb
vardef bush(expr start, aim, level, limit) =
- save s, target;
- numeric s; s = level / limit;
- for a = -32, -8, 8, 16:
- pair target;
- target = aim scaled ((32 + 16 normaldeviate) * s) rotated a shifted start;
- draw start -- target
- withpen pencircle scaled s
- withcolor BrBG[limit][limit-level];
- if level > 1:
- bush(target, aim rotated a, level - 1, limit);
- fi
- endfor
+ save s, target; pair target; numeric s; s = level / limit;
+ for a = -32, -8, 8, 16:
+ target := aim scaled ((64 + 32 normaldeviate) * s) rotated a shifted start;
+ draw start -- target withpen pencircle scaled s withcolor BrBG[limit][limit-level];
+ if level > 1: bush(target, aim rotated a, level - 1, limit); fi
+ endfor
enddef;
-beginfig(1);
-bush(origin, dir 80, 6, 8);
-endfig;
+beginfig(1); bush(origin, dir 80, 6, 8); endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-bush.pdf b/info/drawing-with-metapost/src/rec-bush.pdf
index 415b01c391..179fb57f71 100644
--- a/info/drawing-with-metapost/src/rec-bush.pdf
+++ b/info/drawing-with-metapost/src/rec-bush.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-dragon-golden.mp b/info/drawing-with-metapost/src/rec-dragon-golden.mp
index df4dc37c48..f6b2879c2d 100644
--- a/info/drawing-with-metapost/src/rec-dragon-golden.mp
+++ b/info/drawing-with-metapost/src/rec-dragon-golden.mp
@@ -4,19 +4,18 @@
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
-vardef acosd(expr a) = angle (a, 1 +-+ a) enddef;
numeric r, phi, theta;
-phi = 0.61803398875;
-r = phi**phi;
-theta = acosd(1/2(1/r + r - r * r * r));
+phi = 0.61803398875;
+r = phi ** phi;
+theta = angle (fullcircle scaled 2r intersectionpoint fullcircle scaled (2r*r) shifted right);
vardef dragon(expr a, b) =
- if abs(a-b) > 1:
+ if abs(a-b) > 1.618:
save p; pair p;
p = r[a, b] rotatedabout(a, theta);
dragon(a, p) & reverse dragon(b, p)
else:
- a -- b
+ a .. b
fi
enddef;
diff --git a/info/drawing-with-metapost/src/rec-dragon-golden.pdf b/info/drawing-with-metapost/src/rec-dragon-golden.pdf
index 810ad03560..0796fcedae 100644
--- a/info/drawing-with-metapost/src/rec-dragon-golden.pdf
+++ b/info/drawing-with-metapost/src/rec-dragon-golden.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-dragon.mp b/info/drawing-with-metapost/src/rec-dragon.mp
index 60b8549cf1..a1ccaf2edc 100644
--- a/info/drawing-with-metapost/src/rec-dragon.mp
+++ b/info/drawing-with-metapost/src/rec-dragon.mp
@@ -5,35 +5,35 @@
\begin{mplibcode}
numeric r, theta; r = sqrt 1/2; theta = 45;
vardef dragon(expr level, a, b) =
- if level > 0:
- save p; pair p;
- p = r[a, b] rotatedabout(a, theta);
- dragon(level - 1, a, p) & reverse dragon(level - 1, b, p)
- else:
- a .. b
- fi
+ if level > 0:
+ save p; pair p;
+ p = r[a, b] rotatedabout(a, theta);
+ dragon(level - 1, a, p) & reverse dragon(level - 1, b, p)
+ else:
+ a .. b
+ fi
enddef;
vardef rounded_corners expr p =
- save r, n; numeric r, n; r = 1/3; n = length p;
- subpath (0, 1-r) of p
- for t=1 upto n-1:
- .. subpath (t+r, t+1-r) of p
- endfor .. subpath (n-r, n) of p
+ save r, n; numeric r, n; r = 1/3; n = length p;
+ subpath (0, 1-r) of p
+ for t=1 upto n-1:
+ .. subpath (t+r, t+1-r) of p
+ endfor .. subpath (n-r, n) of p
enddef;
beginfig(1);
- path d; d = dragon(15, origin, 240 right);
- draw d withpen pencircle scaled 1/4 withcolor (.2, .2, .7);
- label.top("The dragon curve at level 15", point 1/3 of bbox currentpicture);
+ path d; d = dragon(15, origin, 240 right);
+ draw d withpen pencircle scaled 1/4 withcolor (.2, .2, .7);
+ label.top("The dragon curve at level 15", point 1/3 of bbox currentpicture);
- draw rounded_corners dragon(10, origin, 240 right)
- shifted 280 down
- withcolor .54 red;
+ draw rounded_corners dragon(10, origin, 240 right)
+ shifted 280 down
+ withcolor .54 red;
+
+ label.top("\dots\ and at level 10 with rounded corners", point 1/3 of bbox currentpicture);
- label.top("\dots\ and at level 10 with rounded corners", point 1/3 of bbox currentpicture);
-
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-dragon.pdf b/info/drawing-with-metapost/src/rec-dragon.pdf
index 3338a7adde..457c58035e 100644
--- a/info/drawing-with-metapost/src/rec-dragon.pdf
+++ b/info/drawing-with-metapost/src/rec-dragon.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-flowsnake-construction.mp b/info/drawing-with-metapost/src/rec-flowsnake-construction.mp
index ec543a7512..b439e318a2 100644
--- a/info/drawing-with-metapost/src/rec-flowsnake-construction.mp
+++ b/info/drawing-with-metapost/src/rec-flowsnake-construction.mp
@@ -5,48 +5,27 @@
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
-path h[], snake;
-h0 = (for i = 1 upto 6: 40 dir 60i -- endfor cycle) rotated angle (9, -sqrt(3));
-for i = 1 upto 6:
- h[i] = h0 shifted (point 0 of h0 - point 2 of h0) rotated 60i;
-endfor
-snake = point 0 of h3 -- point 1 of h2 -- point 2 of h1
- -- point 1 of h6 -- point 2 of h5 -- point 3 of h0
- -- point 1 of h4 -- point 0 of h5;
-
-for i=1 upto 6:
- draw subpath (4, 9) of h[i] withcolor 3/4;
-endfor
-
-% path usnake;
-% usnake = snake
-% shifted - point 0 of h3
-% scaled (1/abs(point 0 of h3 - point 0 of h5));
-
-% def zx(expr a, b) = zscaled (point b of snake - point a of snake)
-% shifted point a of snake enddef;
-
-% draw usnake zx(1, 0) dashed withdots scaled 1/2 withcolor 2/3 red;
-% draw usnake zx(1, 2) dashed withdots scaled 1/2 withcolor 2/3 red;
-% draw usnake zx(2, 3) dashed withdots scaled 1/2 withcolor 2/3 red;
-% draw usnake zx(3, 4) dashed withdots scaled 1/2 withcolor 2/3 red;
-% draw usnake zx(5, 4) dashed withdots scaled 1/2 withcolor 2/3 red;
-% draw usnake zx(6, 5) dashed withdots scaled 1/2 withcolor 2/3 red;
-% draw usnake zx(6, 7) dashed withdots scaled 1/2 withcolor 2/3 red;
-
-
-draw 2/3[point 0 of h3, point 0 of h5] -- point 0 of h5 withcolor 1/2;
-drawarrow point 0 of h3 -- 2/3[point 0 of h3, point 0 of h5] withcolor 1/2;
-draw snake withcolor 2/3 red;
-for t=1, 5, 6:
- drawarrow subpath (t, t-2/3) of snake withcolor \mpcolor{textred};
-endfor
-for t=1, 2, 3, 6:
- drawarrow subpath (t, t+2/3) of snake withcolor \mpcolor{textred};
-endfor
-
-dotlabel.llft("$(0, 0)$", point 0 of h3);
-dotlabel.lrt ("$(1, 0)$", point 0 of h5);
+ path h[], snake;
+ h0 = for i = 1 upto 6: 40 dir 60i -- endfor cycle;
+ h0 := h0 rotated - angle (9, sqrt(3));
+ for i = 1 upto 6:
+ h[i] = h0 shifted (point 0 of h0 - point 2 of h0) rotated -(120+60i);
+ draw h[i] withcolor 3/4;
+ endfor
+ snake = point 0 of h1 -- point 1 of h2 -- point 2 of h3
+ -- point 1 of h4 -- point 2 of h5 -- point 3 of h6
+ -- point 4 of h5 -- point 0 of h5;
+ ahangle := 30;
+ z0 = point 0 of snake; z1 = point 8 of snake; z23 = 2/3[z0, z1];
+ drawoptions(withcolor 1/2);
+ drawarrow z0 -- z23; draw z23 -- z1;
+ drawoptions(withcolor \mpcolor{textred});
+ draw snake;
+ for t=1, 5, 6: drawarrow subpath (t, t-2/3) of snake; endfor
+ for t=1, 2, 3, 6: drawarrow subpath (t, t+2/3) of snake; endfor
+ drawoptions();
+ dotlabel.llft("$(0, 0)$", z0);
+ dotlabel.lrt ("$(1, 0)$", z1);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-flowsnake-construction.pdf b/info/drawing-with-metapost/src/rec-flowsnake-construction.pdf
index 06f111a067..f2ebd6f2ac 100644
--- a/info/drawing-with-metapost/src/rec-flowsnake-construction.pdf
+++ b/info/drawing-with-metapost/src/rec-flowsnake-construction.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-flowsnake.mp b/info/drawing-with-metapost/src/rec-flowsnake.mp
index be94b53065..18348e5a7b 100644
--- a/info/drawing-with-metapost/src/rec-flowsnake.mp
+++ b/info/drawing-with-metapost/src/rec-flowsnake.mp
@@ -15,37 +15,6 @@ snake := snake shifted - point 0 of h3;
snake := snake rotated - angle (point 0 of h5 - point 0 of h3);
snake := snake scaled (1 / length (point 0 of h5 - point 0 of h3));
-vardef hexon(expr a, b) =
- pair c, m;
- c = b rotatedaround(a, 60);
- m = 2/3[c, 1/2[a, b]];
- a -- a rotatedaround(m, 60) --
- b -- b rotatedaround(m, 60) --
- c -- c rotatedaround(m, 60) -- cycle
-enddef;
-
-path w;
-w = origin -- right;
-w := w -- point 0 of w rotatedabout(point 1 of w, 120);
-w := w -- point 1 of w rotatedabout(point 2 of w, -120);
-w := w rotated - angle (point 3 of w - point 0 of w);
-w := w scaled (1/abs (point 3 of w - point 0 of w));
-
-pair a, b;
-a = 144 down rotated -60;
-b = 144 down rotated +60;
-numeric n; n = 4;
-
-path boundary;
-boundary = hexon(a, b);
-for i = 1 upto n:
- boundary := for t = 1 upto length boundary:
- subpath (0, 2) of w
- zscaled (point t of boundary - point t-1 of boundary)
- shifted point t-1 of boundary -- endfor cycle;
-endfor
-
-
vardef rattle(expr level, a, b) =
if level > 0:
save s; path s; s = snake zscaled (b-a) shifted a;
@@ -61,9 +30,11 @@ vardef rattle(expr level, a, b) =
fi
enddef;
beginfig(1);
- path s; s = rattle(n, a, b);
- fill a + (-40, 0) -- s -- b + (40, 0) --
- b + (40, 224) -- a + (-40, 224) -- cycle withcolor 3/4[1/4 blue, white];
+ pair a, b; path s;
+ a = 124 left; b = 124 right; s = rattle(4, a, b);
+ fill s -- b + (40, 0) -- b + (40, 224)
+ -- a - (40, -224) -- a - (40,0) -- cycle
+ withcolor 3/4[1/4 blue, white];
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-flowsnake.pdf b/info/drawing-with-metapost/src/rec-flowsnake.pdf
index 3bcc884ad1..6cf1442af2 100644
--- a/info/drawing-with-metapost/src/rec-flowsnake.pdf
+++ b/info/drawing-with-metapost/src/rec-flowsnake.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-gcd-comparison.mp b/info/drawing-with-metapost/src/rec-gcd-comparison.mp
new file mode 100644
index 0000000000..0bf5c3b235
--- /dev/null
+++ b/info/drawing-with-metapost/src/rec-gcd-comparison.mp
@@ -0,0 +1,34 @@
+vardef gcd(expr a, b) = if b = 0: a else: gcd(b, a mod b) fi enddef;
+
+show
+ (gcd(560,257) = 1) and
+ (gcd(12,3384) = 12) and
+ (gcd(2454,541) = 1) and
+ (gcd(2824,494) = 2) and
+ (gcd(3633,2930) = 1) and
+ (gcd(3555,3738) = 3) and
+ (gcd(2743,3484) = 13) and
+ (gcd(1267,1330) = 7) and
+ (gcd(2718,1672) = 2) and
+ (gcd(2515,3980) = 5);
+
+vardef gcd(expr A, B) = save r, a, b; numeric a, b, r; a := A; b := B;
+ forever:
+ r := a mod b; exitif r = 0;
+ a := b; b := r;
+ endfor b
+enddef;
+
+show
+ (gcd(560,257) = 1) and
+ (gcd(12,3384) = 12) and
+ (gcd(2454,541) = 1) and
+ (gcd(2824,494) = 2) and
+ (gcd(3633,2930) = 1) and
+ (gcd(3555,3738) = 3) and
+ (gcd(2743,3484) = 13) and
+ (gcd(1267,1330) = 7) and
+ (gcd(2718,1672) = 2) and
+ (gcd(2515,3980) = 5);
+
+end.
diff --git a/info/drawing-with-metapost/src/rec-general-tree-deviate.mp b/info/drawing-with-metapost/src/rec-general-tree-deviate.mp
index f6e1ac1e7b..5b0bc6c4db 100644
--- a/info/drawing-with-metapost/src/rec-general-tree-deviate.mp
+++ b/info/drawing-with-metapost/src/rec-general-tree-deviate.mp
@@ -2,32 +2,33 @@
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
+\mplibshowlog{enable}
\begin{mplibcode}
-input colorbrewer-rgb
+% randomseed := uniformdeviate infinity;
+randomseed := 134.7384;
r = 0.75; theta = 17;
vardef make_tree(expr bar) =
- save a; numeric a; a = abs(point 1 of bar - point 0 of bar);
- cutdraw bar withpen pencircle scaled (a/8);
- if a > 5:
- save s; pair s; s = 1/32 a * r * unitvector(direction 1 of bar) rotated 90;
- make_tree(
- bar shifted - point 0 of bar shifted s
- scaled (r + 1/16 normaldeviate)
- rotated (theta + 8 normaldeviate)
- shifted point 1 of bar
- );
- make_tree(
- bar shifted - point 0 of bar shifted -s
- scaled (r + 1/16 normaldeviate)
- rotated -(theta + 8 normaldeviate)
- shifted point 1 of bar
- );
- fi
+ save a; numeric a; a = abs(point 1 of bar - point 0 of bar);
+ cutdraw bar withpen pencircle scaled (a/8);
+ if a > 5:
+ save s; pair s; s = 1/32 a * r * unitvector(direction 1 of bar) rotated 90;
+ make_tree(
+ bar shifted - point 0 of bar shifted s
+ scaled (r + 1/16 normaldeviate) rotated (theta + 8 normaldeviate)
+ shifted point 1 of bar
+ );
+ make_tree(
+ bar shifted - point 0 of bar shifted -s
+ scaled (r + 1/16 normaldeviate) rotated -(theta + 8 normaldeviate)
+ shifted point 1 of bar
+ );
+ fi
enddef;
beginfig(1);
-for i=1 upto 4:
+ for i=1 upto 4:
picture T; T = image(make_tree(origin -- 40 up)); draw T shifted (170i, 0);
-endfor
+ endfor
+ input show_name;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-general-tree-deviate.pdf b/info/drawing-with-metapost/src/rec-general-tree-deviate.pdf
index 3803c073ca..6d127bd61b 100644
--- a/info/drawing-with-metapost/src/rec-general-tree-deviate.pdf
+++ b/info/drawing-with-metapost/src/rec-general-tree-deviate.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-general-tree.mp b/info/drawing-with-metapost/src/rec-general-tree.mp
index c4e31178af..7d9e857ce1 100644
--- a/info/drawing-with-metapost/src/rec-general-tree.mp
+++ b/info/drawing-with-metapost/src/rec-general-tree.mp
@@ -6,9 +6,10 @@
vardef make_tree(expr bar) =
save a; numeric a; a = abs(point 1 of bar - point 0 of bar);
cutdraw bar withpen pencircle scaled 1.2(1/8 a) withcolor background;
- cutdraw bar withpen pencircle scaled (1/8 a) withcolor 1/256(57, 35, 32);
+ cutdraw bar withpen pencircle scaled (1/8 a) withcolor 1/256(148,98,58);
if a > leaf:
- save s; pair s; s = 1/32 a * r * unitvector(direction 1 of bar) rotated 90;
+ save s; pair s;
+ s = 1/32 a * r * unitvector(direction 1 of bar) rotated 90;
make_tree(
bar shifted - point 0 of bar
shifted s scaled r rotated theta
@@ -20,14 +21,13 @@ vardef make_tree(expr bar) =
shifted point 1 of bar
);
else:
- draw point 1 of bar withpen pencircle scaled 1 withcolor 2/3 green;
+ draw point 1 of bar withpen pencircle scaled 2 withcolor 2/3 green;
fi
enddef;
beginfig(1);
-numeric stem, leaf, r, theta;
-r = 0.75; theta = 14;
-stem = 100; leaf = 3; % max(1, round(stem * (r ** 12)));
-make_tree(origin -- stem * up);
+ numeric leaf, r, theta;
+ leaf = 3; r = 0.71; theta = 14;
+ make_tree(origin -- 100 up);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-general-tree.pdf b/info/drawing-with-metapost/src/rec-general-tree.pdf
index 8db8f8a29e..384e3c9dad 100644
--- a/info/drawing-with-metapost/src/rec-general-tree.pdf
+++ b/info/drawing-with-metapost/src/rec-general-tree.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-h-tree.mp b/info/drawing-with-metapost/src/rec-h-tree.mp
index a131038491..3790ddfec8 100644
--- a/info/drawing-with-metapost/src/rec-h-tree.mp
+++ b/info/drawing-with-metapost/src/rec-h-tree.mp
@@ -5,25 +5,41 @@
\begin{mplibcode}
input colorbrewer-rgb
r = 0;
-vardef make_H(expr level, bar, thickness) =
+
+vardef decorate(expr a, b, s, z) =
+ save F, w; picture F; pair w; w = (mlog(a/b), 400 + normaldeviate);
+ F = thelabel(TEX("$\frac{" & decimal a & "}{" & decimal b & "}$") scaled s, z);
+
+
+ fill bbox F withcolor 1/4[white, if a/b < 1: red else: blue fi]; draw F;
+
+ draw w withpen pencircle scaled 1;
+enddef;
+
+vardef make_H(expr level, scale, bar, thickness, n, d) =
cutdraw bar withpen pencircle scaled thickness
- withcolor Blues[9][9 - floor(level/2)];
+ withcolor Blues[8][level];
+
+ decorate(n, d, scale, point 1/2 of bar);
% save spike, m; path spike; pair m; m = unitvector(direction 1/2 of bar rotated 90);
% spike = point 0 of bar .. m scaled +thickness shifted point 1/2 of bar .. point 1 of bar &
% point 1 of bar .. m scaled -thickness shifted point 1/2 of bar .. point 0 of bar & cycle;
% fill spike withcolor Reds 9 7;
- if level > 0:
+ if level > 1:
save foo, fo;
path foo, fo;
foo = bar shifted - point 1/2 of bar scaled 0.7071067811865475;
- make_H(level - 1, foo rotated 90 shifted point r of bar, thickness);
- make_H(level - 1, foo rotated 90 shifted point 1-r of bar, thickness);
+ make_H(level - 1, scale * .8, foo rotated (90+1/4normaldeviate) shifted point r of bar, thickness, n, n+d);
+ make_H(level - 1, scale * .8, foo rotated (90+1/4normaldeviate) shifted point 1-r of bar, thickness, n+d, d);
+ else:
+ decorate(n, n+d, scale, point 0 of bar);
+ decorate(n+d, d, scale, point 1 of bar);
fi
enddef;
beginfig(1);
-make_H(8, (left -- right) scaled 200, 1/2);
+make_H(9, 1.4, (left -- right) scaled 256, 1/2, 1, 1);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-h-tree.pdf b/info/drawing-with-metapost/src/rec-h-tree.pdf
index 5efa7ed845..37da0af380 100644
--- a/info/drawing-with-metapost/src/rec-h-tree.pdf
+++ b/info/drawing-with-metapost/src/rec-h-tree.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-koch-steps.mp b/info/drawing-with-metapost/src/rec-koch-steps.mp
index e696eac4f8..623798d397 100644
--- a/info/drawing-with-metapost/src/rec-koch-steps.mp
+++ b/info/drawing-with-metapost/src/rec-koch-steps.mp
@@ -5,27 +5,27 @@
\begin{mplibcode}
vardef koch(expr level, a, b) =
- if level = 0:
- a -- b
- else:
- save p, q, r; pair p, q, r;
- p = 1/3[a,b]; r = 2/3[a,b]; q = r rotatedabout(p, 60);
- koch(level-1, a, p) &
- koch(level-1, p, q) &
- koch(level-1, q, r) &
- koch(level-1, r, b)
- fi
+ if level = 0:
+ a -- b
+ else:
+ save p, q, r; pair p, q, r;
+ p = 1/3[a,b]; r = 2/3[a,b]; q = r rotatedabout(p, 60);
+ koch(level-1, a, p) &
+ koch(level-1, p, q) &
+ koch(level-1, q, r) &
+ koch(level-1, r, b)
+ fi
enddef;
beginfig(1);
- wd = 300;
- for n=0 upto 4:
- numeric y; y = -1/3 wd * n;
- path k; k = koch(n, origin, (wd, 0)) shifted (0, y);
- draw k withcolor 2/3 blue;
- label.urt("\small\textsf{Level " & decimal n & "}", point infinity of k);
- label.top("$\scriptstyle " & decimal length k & "/" & decimal arclength k & "$", (wd/2, y));
- endfor
-
+ wd = 300;
+ for n=0 upto 4:
+ numeric y; y = -1/3 wd * n;
+ path k; k = koch(n, origin, (wd, 0)) shifted (0, y);
+ draw k withcolor 2/3 blue;
+ label.urt("\small\textsf{Level " & decimal n & "}", point infinity of k);
+ label.top("$\scriptstyle " & decimal length k & "/" & decimal arclength k & "$", (wd/2, y));
+ endfor
+ input show_name
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-koch-steps.pdf b/info/drawing-with-metapost/src/rec-koch-steps.pdf
index d0be311ae6..556afcc1a9 100644
--- a/info/drawing-with-metapost/src/rec-koch-steps.pdf
+++ b/info/drawing-with-metapost/src/rec-koch-steps.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-sierpinski-garlands.mp b/info/drawing-with-metapost/src/rec-sierpinski-garlands.mp
new file mode 100644
index 0000000000..0929fcfe08
--- /dev/null
+++ b/info/drawing-with-metapost/src/rec-sierpinski-garlands.mp
@@ -0,0 +1,36 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+
+vardef garland(expr level, shape) =
+ if level = 0:
+ fill shape withcolor filler; draw shape withpen pencircle scaled 1/8;
+ else:
+ save little_shape; path little_shape;
+ little_shape = shape scaled factor;
+ for i=1 upto length shape:
+ garland(level - 1, little_shape shifted (point i of shape - point i of little_shape));
+ endfor
+ fi
+enddef;
+vardef sf(expr n) =
+ numeric s; s = 0;
+ for k=1 upto floor (n/4):
+ s := s + cosd(360 / n * k);
+ endfor
+ 1 / (2 * (1 + s))
+enddef;
+beginfig(1);
+ color filler; numeric factor; path poly;
+ for n=5 upto 9:
+ filler := Reds[7][n-3]; factor := sf(n);
+ poly := for i=1 upto n: 64 up rotated (360/n*i) -- endfor cycle;
+ draw image(garland(3, poly)) shifted (144n, 0);
+ endfor
+ input show_name
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/rec-sierpinski-garlands.pdf b/info/drawing-with-metapost/src/rec-sierpinski-garlands.pdf
new file mode 100644
index 0000000000..59723908cf
--- /dev/null
+++ b/info/drawing-with-metapost/src/rec-sierpinski-garlands.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-sierpinski-pentagon.mp b/info/drawing-with-metapost/src/rec-sierpinski-pentagon.mp
deleted file mode 100644
index 1829c8003c..0000000000
--- a/info/drawing-with-metapost/src/rec-sierpinski-pentagon.mp
+++ /dev/null
@@ -1,33 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input colorbrewer-rgb
-vardef make_gasket(expr t, s, level, c) =
- if level = 0:
- fill t withcolor Reds[7][7-c];
- draw t;
- else:
- save little_t; path little_t; little_t = t scaled s;
- for i=1 upto length t:
- make_gasket(little_t shifted (point i of t - point i of little_t), s, level-1, c);
- endfor
- fi
-enddef;
-vardef sf(expr n) =
- numeric s; s = 0;
- for k=1 upto floor (n/4):
- s := s + cosd(360 / n * k);
- endfor
- 1 / (2 * (1 + s))
-enddef;
-beginfig(1);
- for n=5 upto 9:
- draw image(make_gasket(for i=1 upto n: 64 up rotated (360/n*i) -- endfor cycle, sf(n), 3, n-4))
- shifted (144n, 0);
- endfor
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/rec-sierpinski-pentagon.pdf b/info/drawing-with-metapost/src/rec-sierpinski-pentagon.pdf
deleted file mode 100644
index 718d201949..0000000000
--- a/info/drawing-with-metapost/src/rec-sierpinski-pentagon.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-sierpinski-triangle.mp b/info/drawing-with-metapost/src/rec-sierpinski-triangle.mp
index c0bbc2ec1a..3632a77a85 100644
--- a/info/drawing-with-metapost/src/rec-sierpinski-triangle.mp
+++ b/info/drawing-with-metapost/src/rec-sierpinski-triangle.mp
@@ -3,19 +3,19 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
-vardef make_gasket(expr t, s, limit) =
- if length (point 1 of t - point 0 of t) < limit:
- fill t;
- else:
- save little_t; path little_t; little_t = t scaled s;
- for i=1 upto length t:
- make_gasket(little_t shifted (point i of t - point i of little_t), s, limit);
- endfor
- fi
+vardef gasket(expr t, s, limit) =
+ if length (point 1 of t - point 0 of t) < limit:
+ fill t;
+ else:
+ save little_t; path little_t; little_t = t scaled s;
+ for i=1 upto length t:
+ gasket(little_t shifted (point i of t - point i of little_t), s, limit);
+ endfor
+ fi
enddef;
beginfig(1);
- path T; T = for i = 1 upto 3: 220 up rotated (120i) -- endfor cycle;
- make_gasket(T, 1/2, 20);
+ path T; T = for i = 1 upto 3: 220 up rotated (120i) -- endfor cycle;
+ gasket(T, 1/2, 20);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-sierpinski-triangle.pdf b/info/drawing-with-metapost/src/rec-sierpinski-triangle.pdf
index 7a2c122f2c..1174f355e7 100644
--- a/info/drawing-with-metapost/src/rec-sierpinski-triangle.pdf
+++ b/info/drawing-with-metapost/src/rec-sierpinski-triangle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rec-simple-tree.mp b/info/drawing-with-metapost/src/rec-simple-tree.mp
index 59657cb1b8..6721d7bd24 100644
--- a/info/drawing-with-metapost/src/rec-simple-tree.mp
+++ b/info/drawing-with-metapost/src/rec-simple-tree.mp
@@ -15,18 +15,22 @@ vardef make_tree(expr level, bar) =
fi
enddef;
beginfig(1);
-picture T[];
-numeric r, theta;
-r = 0.58; theta = 60; T1 = image(
- make_tree(3, origin -- 100 up);
- label.urt("\ $r=" & decimal r & "$, $\theta=" & decimal theta & "$", origin) withcolor \mpcolor{textred};
+picture T[]; numeric r, theta;
+r := 0.58; theta := 60; T1 = image(
+ make_tree(3, origin -- 100 up);
);
r := 0.75; theta := 14; T2 = image(
- make_tree(10, origin -- 100 up);
- label.urt("\ $r=" & decimal r & "$, $\theta=" & decimal theta & "$", origin) withcolor \mpcolor{textred};
+ make_tree(10, origin -- 100 up);
);
draw T1 shifted 32 up;
draw T2 shifted 128 right;
+
+drawoptions(withcolor \mpcolor{textred});
+r := 0.58; theta := 60;
+label.urt("\ $r=" & decimal r & "$, $\theta=" & decimal theta & "$", 32 up);
+
+r := 0.75; theta := 14;
+label.urt("\ $r=" & decimal r & "$, $\theta=" & decimal theta & "$", 128 right);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/rec-simple-tree.pdf b/info/drawing-with-metapost/src/rec-simple-tree.pdf
index 1c3c848604..5f27bb80bf 100644
--- a/info/drawing-with-metapost/src/rec-simple-tree.pdf
+++ b/info/drawing-with-metapost/src/rec-simple-tree.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/rope.mp b/info/drawing-with-metapost/src/rope.mp
index 09bf92a56a..1a0eb6b141 100644
--- a/info/drawing-with-metapost/src/rope.mp
+++ b/info/drawing-with-metapost/src/rope.mp
@@ -1,21 +1,20 @@
+def twisted expr t of p =
+ rotated angle direction arctime t of p of p
+ shifted point arctime t of p of p
+enddef;
vardef rope expr c =
- save s, w, hemp, n, a, b, A;
- color hemp; hemp = 1/256 (192, 149, 82);
- numeric s, w, n, A;
- w = -1; n = -1; A = arclength c; s = A/floor(A/2);
- path a[];
- for t=0 step s until A + 1:
- a[incr n] = (0,+w) rotated angle direction arctime t-3/2s of c of c shifted point arctime t-3/2s of c of c
- .. (0,+w) rotated angle direction arctime t-1/2s of c of c shifted point arctime t-1/2s of c of c
- .. (0,-w) rotated angle direction arctime t+1/2s of c of c shifted point arctime t+1/2s of c of c
- .. (0,-w) rotated angle direction arctime t+3/2s of c of c shifted point arctime t+3/2s of c of c;
- endfor
- image(
- for i=1 upto n:
- path b; b = buildcycle(a[i-1], reverse a[i]);
- fill b withcolor 1/2[white, hemp];
- draw b withpen pencircle scaled 1/8;
- endfor
- )
- enddef;
+ save s, w, hemp, n, a, b, A;
+ color hemp; hemp = 1/256 (192, 149, 82);
+ w = -1; n = -1; A = arclength c; s = A/floor(A/2);
+ path a[];
+ for t=0 step s until A + 1: a[incr n] =
+ (0,+w) twisted t-3/2s of c .. (0,+w) twisted t-1/2s of c ..
+ (0,-w) twisted t+1/2s of c .. (0,-w) twisted t+3/2s of c;
+ endfor
+ image(for i=1 upto n:
+ path b; b = buildcycle(a[i-1], reverse a[i]);
+ fill b withcolor 1/2[white, hemp];
+ draw b withpen pencircle scaled 1/8;
+ endfor)
+enddef;
diff --git a/info/drawing-with-metapost/src/ruler-cm.mp b/info/drawing-with-metapost/src/ruler-cm.mp
index bdbaad10b5..8074f1bc94 100644
--- a/info/drawing-with-metapost/src/ruler-cm.mp
+++ b/info/drawing-with-metapost/src/ruler-cm.mp
@@ -1,6 +1,3 @@
-numeric u[];
-u0 = 1 cm;
-u1 = 1 mm;
+numeric u[]; u0 = 1 cm; u1 = 5 mm; u2 = 1 mm;
drawoptions(withcolor 0.54 red);
input ruler
-drawoptions();
diff --git a/info/drawing-with-metapost/src/ruler-inch.mp b/info/drawing-with-metapost/src/ruler-inch.mp
index 54fb5a654d..1090abf7d1 100644
--- a/info/drawing-with-metapost/src/ruler-inch.mp
+++ b/info/drawing-with-metapost/src/ruler-inch.mp
@@ -1,6 +1,3 @@
-numeric u[];
-u0 = 1 in;
-u1 = 6 bp;
-drawoptions(withcolor 0.54 red);
+numeric u[]; u0 = 72; u1 = 18; u2 = 6;
+drawoptions(withcolor 0.67 blue);
input ruler
-drawoptions();
diff --git a/info/drawing-with-metapost/src/ruler-pt.mp b/info/drawing-with-metapost/src/ruler-pt.mp
deleted file mode 100644
index 0b0992bae4..0000000000
--- a/info/drawing-with-metapost/src/ruler-pt.mp
+++ /dev/null
@@ -1,6 +0,0 @@
-numeric u[];
-u0 = 12 bp;
-u1 = 1 bp;
-drawoptions(withcolor 0.54 red);
-input ruler
-drawoptions();
diff --git a/info/drawing-with-metapost/src/ruler.mp b/info/drawing-with-metapost/src/ruler.mp
index 9d11af25d3..0736abf47e 100644
--- a/info/drawing-with-metapost/src/ruler.mp
+++ b/info/drawing-with-metapost/src/ruler.mp
@@ -1,19 +1,17 @@
% add a ruler along the left hand and lower edges
% of the bounding box of the currentpicture
-% ** meant to be embedded by something that sets u[] appropriately **
-path B; B = bbox currentpicture;
-for s=0, 1:
- path p; numeric a; pair o;
- p = subpath (0, 1) of if s=0: reverse fi B;
- a = arclength p;
- o = if s=0: left else: down fi;
- for i=0 upto 3:
- exitif not known u[i];
- for j=0 upto floor(a/u[i]):
- pair t; t = point arctime j*u[i] of p of p;
- draw (origin -- (6 - 2i) * o) shifted t;
- if i=0: label(decimal j, t shifted 12 o); fi
- endfor
+path B, p; pair o; B = bbox currentpicture;
+for s=-1, 1:
+ p := subpath (0, s) of B;
+ a := arclength p;
+ o := if s < 0: left else: down fi;
+ for i=0 upto 3:
+ exitif not known u[i];
+ for j=0 upto floor(a/u[i]):
+ pair t; t = point arctime j*u[i] of p of p;
+ draw (origin -- (7 - 2i) * o) shifted t;
+ if i=0: label(decimal j, t shifted 12 o); fi
endfor
- draw p;
-endfor
+ endfor
+ draw p;
+endfor
diff --git a/info/drawing-with-metapost/src/saturn.mp b/info/drawing-with-metapost/src/saturn.mp
deleted file mode 100644
index 08825c4f94..0000000000
--- a/info/drawing-with-metapost/src/saturn.mp
+++ /dev/null
@@ -1,10 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-input saturn-code
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/shadows.mp b/info/drawing-with-metapost/src/shadows.mp
deleted file mode 100644
index 9134946b15..0000000000
--- a/info/drawing-with-metapost/src/shadows.mp
+++ /dev/null
@@ -1,37 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-
-path b, w;
-b = ((-3,-4)--(3,-2)--(3,+2)--(-3,4)--cycle) scaled 5;
-w = b reflectedabout(up, down);
-
-numeric n;
-n = 128;
-
-picture B, W;
-B = image(for i=0 step 1/n until 1:
- draw point 4-i of b -- point 1+i**2 of b
- withcolor 1-i**8;
- endfor);
-
- W = image(for i=0 step 1/n until 1:
- draw point 4-i of w -- point 1+i**2 of w
- withcolor 3/4-i**8;
- endfor);
-
-for i=-9 upto 9:
- for j=-4 upto 4:
- draw if odd (i+j): W else: B fi shifted (i*30,j*30);
- endfor
-endfor
-
-clip currentpicture to bbox currentpicture yscaled 7/8;
-
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/shadows.pdf b/info/drawing-with-metapost/src/shadows.pdf
deleted file mode 100644
index ea0b67ef2b..0000000000
--- a/info/drawing-with-metapost/src/shadows.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/shady-circles.mp b/info/drawing-with-metapost/src/shady-circles.mp
deleted file mode 100644
index 62737f38fe..0000000000
--- a/info/drawing-with-metapost/src/shady-circles.mp
+++ /dev/null
@@ -1,24 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-path c, C; numeric r; r = 60;
-c = fullcircle scaled 2r shifted (-r, 0);
-C = fullcircle scaled 4r shifted (2r, 0);
-numeric t, u;
-(t, whatever) = C intersectiontimes C shifted (center c - center C);
-(u, whatever) = c intersectiontimes (point t of C -- center c);
-path s;
-s = subpath (0, u) of c -- subpath (t, 4) of C -- cycle;
-for i=0 upto r:
- draw (left--right) scaled 2r rotated -42 shifted (3i, 0)
- withpen pencircle scaled 1/4 withcolor 2/3 blue;
-endfor
-clip currentpicture to s;
-draw c; draw C;
-draw center c -- center C -- point t of C -- cycle;
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/shady-circles.pdf b/info/drawing-with-metapost/src/shady-circles.pdf
deleted file mode 100644
index df8eef9b56..0000000000
--- a/info/drawing-with-metapost/src/shady-circles.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/show_name.mp b/info/drawing-with-metapost/src/show_name.mp
new file mode 100644
index 0000000000..8dda691159
--- /dev/null
+++ b/info/drawing-with-metapost/src/show_name.mp
@@ -0,0 +1 @@
+label.llft("\tiny\texttt{" & jobname & ".mp}", lrcorner bbox currentpicture);
diff --git a/info/drawing-with-metapost/src/simple-circle-labels.mp b/info/drawing-with-metapost/src/simple-circle-labels.mp
deleted file mode 100644
index 77aa5e450b..0000000000
--- a/info/drawing-with-metapost/src/simple-circle-labels.mp
+++ /dev/null
@@ -1,15 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-path C; C = fullcircle scaled 100; draw C withcolor 2/3 red;
-for i=0 upto 11:
- drawdot point 2/3 i of C withpen pencircle scaled dotlabeldiam;
- label("$p_{" & decimal i & "}$", point 2/3 i of C scaled 1.2);
-endfor
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/simple-circle-labels.pdf b/info/drawing-with-metapost/src/simple-circle-labels.pdf
deleted file mode 100644
index 209463a97a..0000000000
--- a/info/drawing-with-metapost/src/simple-circle-labels.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/simple-number-line.mp b/info/drawing-with-metapost/src/simple-number-line.mp
deleted file mode 100644
index 83ef3d2833..0000000000
--- a/info/drawing-with-metapost/src/simple-number-line.mp
+++ /dev/null
@@ -1,14 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- draw (left--right) scaled 2in withcolor 2/3 red;
- for i=-4 upto 4:
- dotlabel.top("$" & decimal i & "$", (32i, 0));
- endfor
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/tangent-times.mp b/info/drawing-with-metapost/src/tangent-times.mp
deleted file mode 100644
index ecbb62bb97..0000000000
--- a/info/drawing-with-metapost/src/tangent-times.mp
+++ /dev/null
@@ -1,11 +0,0 @@
-vardef tangent_times(expr C, p) =
- save m, a, b, G, H;
- pair m; numeric a, b; path G, H;
- m = 1/2[p, center C];
- H = halfcircle scaled abs (p - center C)
- rotated angle (p - center C) shifted m;
- G = H rotatedabout(m, 180);
- (a, whatever) = C intersectiontimes H;
- (b, whatever) = C intersectiontimes G;
- (a, b if b < a: + 8 fi)
-enddef;
diff --git a/info/drawing-with-metapost/src/tangents-two-circles-exterior.pdf b/info/drawing-with-metapost/src/tangents-two-circles-exterior.pdf
deleted file mode 100644
index db6464e4a4..0000000000
--- a/info/drawing-with-metapost/src/tangents-two-circles-exterior.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/tikzcd-example.mp b/info/drawing-with-metapost/src/tikzcd-example.mp
deleted file mode 100644
index 3796618baf..0000000000
--- a/info/drawing-with-metapost/src/tikzcd-example.mp
+++ /dev/null
@@ -1,58 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-vardef sbox primary P =
- superellipse(1/2[point 1 of bbox P, point 2 of bbox P],
- 1/2[point 2 of bbox P, point 3 of bbox P],
- 1/2[point 3 of bbox P, point 0 of bbox P],
- 1/2[point 0 of bbox P, point 1 of bbox P], 0.75)
- enddef;
-
-beginfig(1);
- r = 0.9;
- z0 = (0, 0);
- z1 = r*(89, -55);
- z2 = r*(42, 30);
- z3 = z1 + z2;
-
- picture FE, FEV, E, EV, M, N, U, V;
- FE = thelabel("$f^*E$", (x0, y0));
- M = thelabel("$M$", (x0, y1));
- E = thelabel("$E$", (x1, y0));
- N = thelabel("$N$", (x1, y1));
- FEV = thelabel("$f^*E_V$", (x2, y2));
- U = thelabel("$U$", (x2, y3));
- EV = thelabel("$E_V$", (x3, y2));
- V = thelabel("$V$", (x3, y3));
-
- forsuffixes @=E, M, N, U, V, EV, FE, FEV: draw @; endfor
-
- ahangle := 20;
- vardef connect(expr a, b) =
- save line; path line;
- interim bboxmargin := 3;
- line = center a .. center b
- cutbefore sbox a cutafter sbox b;
- cutdraw line withpen pencircle scaled 4 withcolor background;
- drawarrow line
- enddef;
-
- connect(FEV, EV);
- connect(FEV, U);
- connect(EV, V);
- connect(U, V);
-
- connect(FEV, FE);
- connect(EV, E);
- connect(U, M);
- connect(V, N);
-
- connect(FE, E);
- connect(FE, M);
- connect(E, N);
- connect(M, N);
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-ammann-bounded.mp b/info/drawing-with-metapost/src/tiling-ammann-bounded.mp
new file mode 100644
index 0000000000..7ff7c4b16b
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann-bounded.mp
@@ -0,0 +1,20 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+input tiling-ammann-procedures
+
+beginfig(1);
+
+ pickup pencircle scaled 1/8;
+ path shape; shape = r scaled 360;
+
+ bounded_rhomb(4, point 0 of shape, point 2 of shape);
+ draw shape withpen pencircle scaled 1/2;
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-ammann-bounded.pdf b/info/drawing-with-metapost/src/tiling-ammann-bounded.pdf
new file mode 100644
index 0000000000..ae0bb78c06
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann-bounded.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-ammann-procedures.mp b/info/drawing-with-metapost/src/tiling-ammann-procedures.mp
new file mode 100644
index 0000000000..9d76c33e35
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann-procedures.mp
@@ -0,0 +1,81 @@
+% procedures for tiling-ammann-* drawings
+
+input colorbrewer-rgb
+
+def withalpha expr a =
+ withprescript "tr_alternative=2"
+ withprescript "tr_transparency=" & decimal a
+enddef;
+
+path r, s;
+r = origin -- (1/2, 1/2-sqrt(1/2)) -- right -- (1/2, sqrt(1/2)-1/2) -- cycle;
+s = origin -- (1/2, -1/2) -- right -- (1/2, 1/2) -- cycle;
+numeric p, q;
+p = sqrt(2) - 1; q = 1 - sqrt(1/2);
+vardef rhomb(expr level, a, b) =
+ save R; path R; R = r zscaled (b-a) shifted a;
+ if level = 0:
+ fill subpath (0, 2) of R -- cycle withalpha 0.9 withcolor Blues 9 3;
+ fill subpath (2, 4) of R -- cycle withalpha 0.9 withcolor Blues 9 4;
+ draw R withcolor 1/2;
+ else:
+ rhomb(level-1, a, p[a,b]);
+ rhomb(level-1, b, p[b,a]);
+ rhomb(level-1, point 1 of R, point 3 of R);
+ square(level-1, point 1 of R, point +p of R);
+ square(level-1, point 3 of R, point -p of R);
+ square(level-1, point 1 of R, point 2-p of R);
+ square(level-1, point 3 of R, point 2+p of R);
+ fi
+enddef;
+vardef square(expr level, a, b) =
+ save S; path S; S = s zscaled (b-a) shifted a;
+ if level = 0:
+ fill subpath (0, 2) of S -- cycle withalpha 0.9 withcolor Oranges 8 3;
+ fill subpath (2, 4) of S -- cycle withalpha 0.9 withcolor Oranges 8 2;
+ draw S withcolor 1/2;
+ else:
+ rhomb(level-1, a, q[point 1 of S, point 3 of S]);
+ rhomb(level-1, a, q[point 3 of S, point 1 of S]);
+ rhomb(level-1, point 1 of S, q[b,a]);
+ rhomb(level-1, point 3 of S, q[b,a]);
+ square(level-1, q[b,a], q[a,b]);
+ square(level-1, point 1 of S, point +p of S);
+ square(level-1, point 3 of S, point -p of S);
+ square(level-1, b, point +1+p of S);
+ square(level-1, b, point -1-p of S);
+ fi
+enddef;
+
+path t[];
+t0 = origin -- right -- point 3 of s -- cycle;
+t1 = origin -- right -- point 1 of s -- cycle;
+vardef bounded_rhomb(expr level, a, b) =
+ save R; path R; R = r zscaled (b-a) shifted a;
+ if level = 0:
+ fill subpath (0, 2) of R -- cycle withcolor Blues 9 4;
+ fill subpath (2, 4) of R -- cycle withcolor Blues 9 5;
+ draw R withcolor 1/2;
+ else:
+ bounded_rhomb(level-1, a, p[a,b]);
+ bounded_rhomb(level-1, b, p[b,a]);
+ bounded_rhomb(level-1, point 1 of R, point 3 of R);
+ half_square(level-1, point 1 of R, point +p of R, 1);
+ half_square(level-1, point 3 of R, point -p of R, 0);
+ half_square(level-1, point 3 of R, point 2+p of R, 1);
+ half_square(level-1, point 1 of R, point 2-p of R, 0);
+ fi
+enddef;
+vardef half_square(expr level, a, b, side) =
+ save T; path T; T = t[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withalpha 0.9 withcolor Oranges[8][3+side];
+ draw subpath (1, 3) of T withcolor 1/2;
+ else:
+ bounded_rhomb(level-1, point 0 of T, p[point 1/2 of T, point 2 of T]);
+ bounded_rhomb(level-1, point 2 of T, point sqrt(1/2) of T);
+ half_square(level-1, point 1 of T, point 2-p of T, side);
+ half_square(level-1, point 2 of T, point 3-p of T, side);
+ half_square(level-1, point 1-q of T, point q of T, 1-side);
+ fi
+enddef;
diff --git a/info/drawing-with-metapost/src/tiling-ammann-substitutions-bounded.mp b/info/drawing-with-metapost/src/tiling-ammann-substitutions-bounded.mp
new file mode 100644
index 0000000000..81e933dea4
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann-substitutions-bounded.mp
@@ -0,0 +1,65 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+input tiling-ammann-procedures
+
+path rr, ss, tt;
+rr = r scaled 48;
+ss = t0 scaled 36;
+tt = t1 scaled 36;
+
+dotlabeldiam := 2;
+
+picture P[];
+P1 = image(
+ bounded_rhomb(0, point 0 of rr, point 2 of rr);
+ dotlabel.ulft("$a$", point 0 of rr);
+ dotlabel.urt("$b$", point 2 of rr);
+);
+P2 = image(
+ draw rr dashed withdots scaled 1/4;
+ bounded_rhomb(1, point 0 of rr, point 2 of rr);
+);
+P3 = image(
+ drawarrow 16 left -- 20 right;
+ label(P1, 50 left);
+ label(P2, 50 right);
+);
+
+P4 = image(
+ half_square(0, point 0 of ss, point 1 of ss, 0);
+ dotlabel.ulft("$a$", point 0 of ss);
+ dotlabel.urt ("$b$", point 1 of ss);
+);
+P5 = image(
+ half_square(0, point 0 of tt, point 1 of tt, 1);
+);
+P6 = image(
+ half_square(1, point 0 of ss, point 1 of ss, 0);
+ draw ss dashed withdots scaled 1/4;
+);
+P7 = image(
+ half_square(1, point 0 of tt, point 1 of tt, 1);
+ draw tt dashed withdots scaled 1/4;
+);
+
+P8 = image(
+ label.top(P4, 50 left);
+ label.bot(P5, 50 left);
+ label.top(P6, 50 right + 8 up);
+ label.bot(P7, 50 right + 8 down);
+ path a; a = 18 left -- 24 right;
+ drawarrow a rotated 4 shifted 12 up;
+ drawarrow a rotated -4 shifted 12 down;
+);
+
+beginfig(1);
+ label.lft(P3, 13 left);
+ label.rt (P8, 13 right);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-ammann-substitutions-bounded.pdf b/info/drawing-with-metapost/src/tiling-ammann-substitutions-bounded.pdf
new file mode 100644
index 0000000000..e9ff77bf37
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann-substitutions-bounded.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-ammann-substitutions-overlapping.mp b/info/drawing-with-metapost/src/tiling-ammann-substitutions-overlapping.mp
new file mode 100644
index 0000000000..2a20f18e5d
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann-substitutions-overlapping.mp
@@ -0,0 +1,59 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+input tiling-ammann-procedures
+
+picture P[];
+
+path ss, rr;
+
+ss = s scaled 36;
+rr = r scaled 48;
+
+dotlabeldiam := 2;
+
+P1 = image(
+ square(0, point 0 of ss, point 2 of ss);
+ dotlabel.ulft("$a$", point 0 of ss);
+ dotlabel.urt ("$b$", point 2 of ss);
+);
+P2 = image(
+ draw ss dashed withdots scaled 1/4;
+ square(1, point 0 of ss, point 2 of ss);
+);
+
+P3 = image(
+ drawarrow 20 left -- 20 right;
+ label(P1, 50 left);
+ label(P2, 50 right);
+);
+
+P4 = image(
+ rhomb(0, point 0 of rr, point 2 of rr);
+ dotlabel.ulft("$a$", point 0 of rr);
+ dotlabel.urt("$b$", point 2 of rr);
+);
+
+P5 = image(
+ draw rr dashed withdots scaled 1/4;
+ rhomb(1, point 0 of rr, point 2 of rr);
+
+);
+
+P6 = image(
+ drawarrow 16 left -- 20 right;
+ label(P4, 50 left);
+ label(P5, 50 right);
+
+);
+
+beginfig(1);
+ label.lft(P6, 13 left);
+ label.rt(P3, 13 right);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-ammann-substitutions-overlapping.pdf b/info/drawing-with-metapost/src/tiling-ammann-substitutions-overlapping.pdf
new file mode 100644
index 0000000000..53410fadfe
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann-substitutions-overlapping.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-ammann.mp b/info/drawing-with-metapost/src/tiling-ammann.mp
new file mode 100644
index 0000000000..9da148243d
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann.mp
@@ -0,0 +1,20 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+input tiling-ammann-procedures
+
+beginfig(1);
+
+ pickup pencircle scaled 1/8;
+ path shape; shape = r scaled 360;
+
+ rhomb(4, point 0 of shape, point 2 of shape);
+ draw shape withpen pencircle scaled 1/2;
+
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-ammann.pdf b/info/drawing-with-metapost/src/tiling-ammann.pdf
new file mode 100644
index 0000000000..e89fe63618
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-ammann.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-arch-3-4-3-4.mp b/info/drawing-with-metapost/src/tiling-arch-3-4-3-4.mp
new file mode 100644
index 0000000000..60dd7f7be2
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-3-4-3-4.mp
@@ -0,0 +1,51 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+beginfig(1);
+ input colorbrewer-rgb
+ path s[], t[];
+ s1 = unitsquare scaled 21 rotated 15; s2 = s1 rotated 150;
+ t1 = subpath (4, 3) of s1 -- point 1 of s2 -- cycle;
+ t2 = t1 reflectedabout(point 1 of t1, point 2 of t1);
+ t3 = t1 rotated 150; t4 = t1 rotated 210;
+ picture color_unit, grid_unit;
+ color_unit = image(
+ fill s1 withcolor Oranges 8 1;
+ fill s2 withcolor Oranges 8 2;
+ fill t1 withcolor Blues 8 1;
+ fill t2 withcolor Blues 8 2;
+ fill t3 withcolor Blues 8 3;
+ fill t4 withcolor Blues 8 4;
+ );
+ grid_unit = image(
+ draw s1; draw s2;
+ draw t2; draw t3; draw t4;
+ );
+ pair u, v;
+ u = point 1 of s1 - point 1 of s2;
+ v = u rotated 90;
+ numeric n; n = 3;
+ forsuffixes $=color_unit, grid_unit:
+ for i=-n upto n:
+ for j=-n upto n:
+ draw $ shifted (i * u + j * v);
+ endfor
+ endfor
+ endfor
+
+ label.bot("The arrangement of polygons in the units was carefully",
+ point 1/2 of bbox currentpicture shifted 21 down);
+ label.bot("chosen to give the tiling neat edges.",
+ point 1/2 of bbox currentpicture);
+ path b; b = bbox currentpicture shifted 34 down;
+ draw color_unit shifted point 1/4 of b;
+ draw grid_unit shifted point 3/4 of b;
+ path b; b = bbox currentpicture shifted 13 down;
+ label("\texttt{color\_unit}", point 1/4 of b);
+ label("\texttt{grid\_unit}", point 3/4 of b);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-arch-3-4-3-4.pdf b/info/drawing-with-metapost/src/tiling-arch-3-4-3-4.pdf
new file mode 100644
index 0000000000..5df58f70c8
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-3-4-3-4.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-arch-3-4-6-4.mp b/info/drawing-with-metapost/src/tiling-arch-3-4-6-4.mp
new file mode 100644
index 0000000000..c1a6844c65
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-3-4-6-4.mp
@@ -0,0 +1,50 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+def withalpha expr a = % <-- this requires "luamplib"
+ withprescript "tr_alternative=2"
+ withprescript "tr_transparency=" & decimal a
+enddef;
+input colorbrewer-rgb
+path d; d = for i=1 upto 12: 18 dir (15+30i) -- endfor cycle;
+
+color shade[];
+shade0 = Oranges 8 4; shade1 = Blues 8 4;
+shade2 = Greens 8 4; shade3 = Reds 8 4;
+
+vardef unit(expr n) = image(
+ fill d withalpha 0.9 withcolor shade[n mod 4];
+ draw d;
+) enddef;
+pair u, v;
+u = point 0 of d - point 3 of d;
+v = u rotated 60;
+numeric n; n = 6;
+for i=-n upto n:
+ for j=-n upto n:
+ draw unit(3i-7j) shifted ((i-floor(j/2)) * u + j * v);
+ endfor
+endfor
+clip currentpicture to unitsquare shifted -(1/2, 1/2) scaled 42n;
+
+picture p; p = image(
+ draw d; draw point 0 of d withpen pencircle scaled 2;
+ drawoptions(withcolor 3/4[red, white]);
+ draw d shifted u; draw point 0 of d shifted u withpen pencircle scaled 2;
+ drawoptions(withcolor 3/4[blue, white]);
+ draw d shifted v; draw point 0 of d shifted v withpen pencircle scaled 2;
+ drawoptions();
+ drawarrow origin -- u withcolor red;
+ drawarrow origin -- v withcolor blue;
+);
+label.bot(p, point 1/2 of bbox currentpicture shifted 13 down);
+label.bot(btex \vbox{\hsize 3.4in\noindent
+The vectors are chosen so that the dodecagons overlap to make
+the required triangles, squares, and hexagons.} etex,
+point 1/2 of bbox currentpicture shifted 13 down);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-arch-3-4-6-4.pdf b/info/drawing-with-metapost/src/tiling-arch-3-4-6-4.pdf
new file mode 100644
index 0000000000..089e31ea5a
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-3-4-6-4.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-arch-4-6-12.mp b/info/drawing-with-metapost/src/tiling-arch-4-6-12.mp
new file mode 100644
index 0000000000..fbf10256e8
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-4-6-12.mp
@@ -0,0 +1,63 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+
+path unithex;
+unithex = for i = 0 upto 5: dir 60i -- endfor cycle;
+unithex := unithex shifted - point 4 of unithex;
+
+def fixed_at_point expr n of p =
+ zscaled (point n of p - point n+1 of p) shifted point n+1 of p
+enddef;
+
+beginfig(1);
+ path dodo, h[], s[];
+ dodo = for i = 1 upto 12: 21 dir (15 + 30i) -- endfor cycle;
+ h1 = unithex fixed_at_point 1 of dodo;
+ h2 = unithex fixed_at_point 3 of dodo;
+ s1 = unitsquare fixed_at_point 0 of dodo;
+ s2 = unitsquare fixed_at_point 2 of dodo;
+ s3 = unitsquare fixed_at_point 4 of dodo;
+
+ picture colour_unit, line_unit;
+ colour_unit = image(
+ fill dodo withcolor Greens 9 2;
+ fill h1 withcolor Greens 9 3;
+ fill h2 withcolor Greens 9 3;
+ fill s1 withcolor Greens 9 4;
+ fill s2 withcolor Greens 9 4;
+ fill s3 withcolor Greens 9 4;
+ );
+ line_unit = image(
+ forsuffixes $=dodo, s1, s2, s3, h1, h2:
+ draw $ withpen pencircle scaled 1/4;
+ pair m; m = center $; % all shapes have even number of sides
+ for i=1 upto length $:
+ cutdraw m -- point i - 1/2 of $
+ if odd i: cutbefore fullcircle scaled (length $ / 4) shifted m fi
+ withpen pencircle scaled 1/4
+ withcolor Reds 4 3;
+ endfor
+ endfor
+ );
+
+ pair u, v;
+ u = point 3 of s2 - point 8 of dodo;
+ v = u rotated 60;
+
+ numeric n; n = 4;
+ forsuffixes @ = colour_unit, line_unit:
+ for i=-n upto n:
+ for j=-n upto n:
+ draw @ shifted (i*u + j*v - floor(i/2) * v);
+ endfor
+ endfor
+ endfor
+
+ clip currentpicture to bbox dodo scaled 2n yscaled sqrt(3/4);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-arch-4-6-12.pdf b/info/drawing-with-metapost/src/tiling-arch-4-6-12.pdf
new file mode 100644
index 0000000000..dda414c738
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-4-6-12.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-4-8-8-parts.mp b/info/drawing-with-metapost/src/tiling-arch-4-8-8-parts.mp
index 53aec91d14..53aec91d14 100644
--- a/info/drawing-with-metapost/src/arch-4-8-8-parts.mp
+++ b/info/drawing-with-metapost/src/tiling-arch-4-8-8-parts.mp
diff --git a/info/drawing-with-metapost/src/arch-4-8-8-parts.pdf b/info/drawing-with-metapost/src/tiling-arch-4-8-8-parts.pdf
index 6466e01641..6466e01641 100644
--- a/info/drawing-with-metapost/src/arch-4-8-8-parts.pdf
+++ b/info/drawing-with-metapost/src/tiling-arch-4-8-8-parts.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-arch-4-8-8.mp b/info/drawing-with-metapost/src/tiling-arch-4-8-8.mp
new file mode 100644
index 0000000000..7c5b159387
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-4-8-8.mp
@@ -0,0 +1,33 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+input colorbrewer-rgb
+path o, r[];
+o = (for i=0 upto 7: 21 dir 45i -- endfor cycle) rotated -90/4;
+pair t; t = whatever[point 0 of o, point 1 of o]
+= whatever[point 2 of o, point 3 of o];
+r1 = subpath (1,2) of o -- t -- cycle;
+r2 = r1 rotated 90;
+r3 = r2 rotated 90;
+r4 = r3 rotated 90;
+picture filler; filler = image(
+ filldraw r1 withcolor Reds 8 3;
+ filldraw r2 withcolor Blues 8 3;
+ filldraw r3 withcolor Reds 8 3;
+ filldraw r4 withcolor Blues 8 3;
+ filldraw o withcolor Purples 8 2;
+);
+pair u, v;
+u = point 0 of o - point 5 of o; v = u rotated 90;
+beginfig(1);
+ numeric n; n = 5;
+ for i=-n upto n: for j=-n upto n:
+ draw filler rotated ((i+j) mod 2 * 90) shifted (i*u + j*v);
+ endfor endfor
+ for i=-n upto n: for j=-n upto n:
+ draw o shifted (i*u + j*v);
+ endfor endfor
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-arch-4-8-8.pdf b/info/drawing-with-metapost/src/tiling-arch-4-8-8.pdf
new file mode 100644
index 0000000000..8c89bb5eca
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-4-8-8.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-arch-hexagon.mp b/info/drawing-with-metapost/src/tiling-arch-hexagon.mp
new file mode 100644
index 0000000000..683d2c1a4f
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-hexagon.mp
@@ -0,0 +1,47 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+beginfig(1);
+
+ path h[]; pair m[];
+ for i=0 upto 2:
+ h[i] = (for j=0 upto 5: 30 dir 60j -- endfor cycle);
+ h[i] := h[i] shifted - point 0 of h[i] rotated (30+120i);
+ m[i] = 1/2[point 0 of h[i], point 3 of h[i]];
+ endfor
+
+ picture unit;
+ unit = image(
+ numeric i; i = -1;
+ forsuffixes $ = Purples, Oranges, Blues:
+ pair m; m = m[incr i];
+ for j=1 upto 3:
+ fill subpath (-2i+2j, 2-2i+2j) of h[i] -- m -- cycle withcolor $[8][1+j];
+ endfor
+ for j=1 upto 3:
+ draw m -- point 2j of h[i] withcolor $[8][1];
+ endfor
+ endfor
+
+ );
+
+ pair u, v;
+ u = point 3 of h1 - point 1 of h0;
+ v = u rotated 60;
+
+ numeric n; n = 4;
+ for i=-n upto n:
+ for j=-n upto n:
+ draw unit shifted (i*u + j*v);
+ endfor
+ endfor
+
+ path se; se = superellipse(right, up, left, down, 0.86);
+ clip currentpicture to se scaled 168;
+
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-arch-hexagon.pdf b/info/drawing-with-metapost/src/tiling-arch-hexagon.pdf
new file mode 100644
index 0000000000..87d9c63d05
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-hexagon.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-arch-hst.mp b/info/drawing-with-metapost/src/tiling-arch-hst.mp
new file mode 100644
index 0000000000..9a1a964dec
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-hst.mp
@@ -0,0 +1,54 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+
+beginfig(1);
+ path t[], s[], h;
+ h = for i=0 upto 5: 42 dir 60i -- endfor cycle;
+ for i = 1 upto 3:
+ s[i] = unitsquare zscaled (point i-1 of h - point i of h) shifted point i of h;
+ endfor
+ t1 = point 1 of h -- point 3 of s1 -- point 2 of s2 -- cycle;
+ t2 = point 2 of h -- point 3 of s2 -- point 2 of s3 -- cycle;
+
+ picture unit;
+ unit = image(
+ for i=1 upto 2:
+ fill t[i] withcolor Blues 8 4;
+ endfor
+ for i=1 upto 3:
+ fill s[i] withcolor Greens 8 1;
+ endfor
+ fill h withcolor Oranges 9 4;
+ forsuffixes $=t1, t2:
+ pair m; m = 2/3[point 0 of $, point 3/2 of $];
+ for i=1 upto 3:
+ draw m -- point i+1/2 of $ withcolor Blues 8 8;
+ endfor
+ endfor
+ forsuffixes $=s1, s2, s3:
+ draw point 1/2 of $ -- point 5/2 of $ withcolor Oranges 8 8;
+ draw point 3/2 of $ -- point 7/2 of $ withcolor Blues 8 8;
+ endfor
+ for i=1 upto 3:
+ draw point i-1/2 of h -- point i+5/2 of h withcolor Oranges 8 8;
+ endfor
+ );
+
+ pair u, v;
+ u = point 3 of s2 - point 4 of h;
+ v = u rotated 60;
+
+ numeric n; n=4;
+ for i=-n upto n:
+ for j=-n upto n:
+ draw unit shifted (i*u + j*v - floor (j/2) * u);
+ endfor
+ endfor
+ clip currentpicture to fullcircle scaled (7/4n * abs(u));
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-arch-hst.pdf b/info/drawing-with-metapost/src/tiling-arch-hst.pdf
new file mode 100644
index 0000000000..fa224b2733
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-hst.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-arch-snub-hex-parts.mp b/info/drawing-with-metapost/src/tiling-arch-snub-hex-parts.mp
new file mode 100644
index 0000000000..a1e8c7a6d9
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-snub-hex-parts.mp
@@ -0,0 +1,48 @@
+input colorbrewer-rgb
+% a polygon of n sides on a given path
+vardef poly expr n of p =
+ clearxy; z0 = point 0 of p; z1 = point 1 of p;
+ for i=2 upto n-1:
+ z[i] = z[i-2] rotatedabout(z[i-1], 360/n-180);
+ endfor
+ for i=0 upto n-1: z[i] -- endfor cycle
+enddef;
+vardef centroid(expr p) = save n; n = length p; origin for i=1 upto n: + point i of p / n endfor enddef;
+path t[], h;
+h = poly 6 of (origin -- 21 dir 60);
+for i=1 upto 6:
+ t[i] = poly 3 of subpath (i, i-1) of h;
+endfor
+picture P[], unit[];
+for k=0, 2:
+ t7 := poly 3 of subpath (k, k-1) of t6;
+ t8 := poly 3 of subpath (k, k-1) of t3;
+ pair u, v;
+ u = point 2+k/2 of h - point 2 of t6;
+ v = u rotated -60;
+ unit[k] = image(
+ for i=1 upto 6:
+ fill t[i] withcolor Blues 8 if odd i: 2 else: 3 fi;
+ endfor
+ for i=7 upto 8:
+ fill t[i] withcolor Oranges 8 if odd i: 3 else: 2 fi;
+ endfor
+ fill h withcolor Oranges 8 1;
+ forsuffixes $=h, t1, t2, t3, t4, t5, t6, t7, t8:
+ draw $ withpen pencircle scaled 1/4 withcolor 1/2;
+ for i=1 upto length $:
+ draw centroid($) -- point i - 1/2 of $ withcolor Reds 7 6;
+ endfor
+ endfor
+ );
+
+ numeric n; n=4;
+ P[k] = image(
+ for i=-n upto n:
+ for j=-n upto n:
+ draw unit[k] shifted (i*u + j*v - floor (j/2) * u);
+ endfor
+ endfor
+ clip currentpicture to superellipse(168 right, 168 up, 168 left, 168 down, 0.78);
+ );
+endfor
diff --git a/info/drawing-with-metapost/src/projections.mp b/info/drawing-with-metapost/src/tiling-arch-snub-hexagon-unit.mp
index 42d683c89d..e724070668 100644
--- a/info/drawing-with-metapost/src/projections.mp
+++ b/info/drawing-with-metapost/src/tiling-arch-snub-hexagon-unit.mp
@@ -3,8 +3,10 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
+input tiling-arch-snub-hex-parts
beginfig(1);
-input projections-code
+ draw unit0 shifted 50 left;
+ draw unit2 shifted 50 right;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-arch-snub-hexagon-unit.pdf b/info/drawing-with-metapost/src/tiling-arch-snub-hexagon-unit.pdf
new file mode 100644
index 0000000000..fc4171e407
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-snub-hexagon-unit.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-arch-snub-hexagon.mp b/info/drawing-with-metapost/src/tiling-arch-snub-hexagon.mp
new file mode 100644
index 0000000000..df93be60f4
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-snub-hexagon.mp
@@ -0,0 +1,14 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input tiling-arch-snub-hex-parts
+beginfig(1);
+draw P0 shifted 180 up;
+draw P2 shifted 180 down;
+numeric wd; wd = xpart (urcorner P0 - llcorner P0);
+currentpicture := currentpicture scaled (250/wd);
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-arch-snub-hexagon.pdf b/info/drawing-with-metapost/src/tiling-arch-snub-hexagon.pdf
new file mode 100644
index 0000000000..75e56c3a74
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-snub-hexagon.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/arch-snub-square.mp b/info/drawing-with-metapost/src/tiling-arch-snub-square.mp
index c607b4e5c4..bc8f3ec85e 100644
--- a/info/drawing-with-metapost/src/arch-snub-square.mp
+++ b/info/drawing-with-metapost/src/tiling-arch-snub-square.mp
@@ -14,7 +14,7 @@ vardef poly expr n of p =
endfor
for i=0 upto n-1: z[i] -- endfor cycle
enddef;
-vardef median(expr P) =
+vardef centroid(expr P) =
(origin for i=1 upto length P: + point i of P endfor) / length P
enddef;
beginfig(1);
@@ -35,7 +35,7 @@ beginfig(1);
fill t2 withcolor Greens 8 3;
fill s2 withcolor Reds 8 5;
forsuffixes $=s1, t1, s2, t2, t3, t4:
- pair m; m = median($);
+ pair m; m = centroid($);
for i=1 upto length $:
draw point i - 1/2 of $ -- m
withpen pencircle scaled 3/2 withcolor Spectral 3 2;
@@ -53,20 +53,6 @@ beginfig(1);
endfor
endfor
- % picture p; p = currentpicture;
- % (wd, ht) = (urcorner p - llcorner p);
- % currentpicture := nullpicture;
- % p := p scaled (145mm / wd);
- % undraw unitsquare xscaled 148mm yscaled 210mm shifted llcorner p shifted -(1.5mm, 1.5mm)
- % withpen pencircle scaled 1/8;
- % z0 = 1/2[llcorner currentpicture, ulcorner currentpicture];
- % draw z0 -- z0 shifted 3 right withpen pencircle scaled 1/8;
- % z1 = 1/2[lrcorner currentpicture, urcorner currentpicture];
- % draw z1 -- z1 shifted 3 left withpen pencircle scaled 1/8;
- % draw p;
- % picture r; r = currentpicture rotated 90;
- % currentpicture := nullpicture;
- % draw r;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-arch-snub-square.pdf b/info/drawing-with-metapost/src/tiling-arch-snub-square.pdf
new file mode 100644
index 0000000000..ed171de376
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-arch-snub-square.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/archimedes.mp b/info/drawing-with-metapost/src/tiling-archimedes.mp
index 81608868a8..0eba803624 100644
--- a/info/drawing-with-metapost/src/archimedes.mp
+++ b/info/drawing-with-metapost/src/tiling-archimedes.mp
@@ -9,48 +9,48 @@ picture P[];
% (4,6,12)
numeric dx; dx = u*(1+ cosd(15)/sind(15));
picture unit; unit = image(
- path s; s = unitsquare shifted -(1/2,1/2) scaled u shifted (dx/2,0);
- for t=0 upto 2:
- draw s rotated 120t;
- for tt=1 upto 3:
- draw subpath(3,4) of s rotated (120t+30tt);
- endfor
- endfor
+ path s; s = unitsquare shifted -(1/2,1/2) scaled u shifted (dx/2,0);
+ for t=0 upto 2:
+ draw s rotated 120t;
+ for tt=1 upto 3:
+ draw subpath(3,4) of s rotated (120t+30tt);
+ endfor
+ endfor
);
P1 = image(
- draw unit withpen pencircle scaled 4 withcolor .8[red,white];
- for x=-5dx step dx until 5dx:
- for y=-5dx step dx until 5dx:
- draw unit shifted (x,0) shifted ((y,0) rotated 60);
- endfor
+ draw unit withpen pencircle scaled 4 withcolor .8[red,white];
+ for x=-5dx step dx until 5dx:
+ for y=-5dx step dx until 5dx:
+ draw unit shifted (x,0) shifted ((y,0) rotated 60);
endfor
- clip currentpicture to box; draw box dashed withdots scaled 1/4;
- label.bot("$(4, 6, 12)$", point 1/2 of bbox currentpicture);
+ endfor
+ clip currentpicture to box; draw box dashed withdots scaled 1/4;
+ label.bot("$(4, 6, 12)$", point 1/2 of bbox currentpicture);
);
numeric dx; dx = u*(cosd(180/8)/sind(180/8));
path octagon; octagon = for t = 0 upto 7: 1/2(dx,u) rotated 45t -- endfor cycle;
P2 = image(
- draw octagon withpen pencircle scaled 4 withcolor .8[red,white];
- for x=-5dx step dx until 5dx:
- for y=-5dx step dx until 5dx:
- draw octagon shifted (x,y);
- endfor
+ draw octagon withpen pencircle scaled 4 withcolor .8[red,white];
+ for x=-5dx step dx until 5dx:
+ for y=-5dx step dx until 5dx:
+ draw octagon shifted (x,y);
endfor
- clip currentpicture to box; draw box dashed withdots scaled 1/4;
- label.bot("$(4, 8^2)$", point 1/2 of bbox currentpicture);
+ endfor
+ clip currentpicture to box; draw box dashed withdots scaled 1/4;
+ label.bot("$(4, 8^2)$", point 1/2 of bbox currentpicture);
);
numeric dx; dx = u*(cosd(180/12)/sind(180/12));
path unit; unit = for t=0 upto 11: 1/2(dx,u) rotated 30t -- endfor cycle;
P3 = image(
- draw unit withpen pencircle scaled 4 withcolor .8[red,white];
- for x=-5dx step dx until 5dx:
- for y=-5dx step dx until 5dx:
- draw unit shifted (x,0) shifted ((y,0) rotated 60);
- endfor
+ draw unit withpen pencircle scaled 4 withcolor .8[red,white];
+ for x=-5dx step dx until 5dx:
+ for y=-5dx step dx until 5dx:
+ draw unit shifted (x,0) shifted ((y,0) rotated 60);
endfor
- clip currentpicture to box; draw box dashed withdots scaled 1/4;
- label.bot("$(3, 12^2)$", point 1/2 of bbox currentpicture);
+ endfor
+ clip currentpicture to box; draw box dashed withdots scaled 1/4;
+ label.bot("$(3, 12^2)$", point 1/2 of bbox currentpicture);
);
% path box; box = unitsquare shifted -(1/2,1/2) scaled 12u;
@@ -83,20 +83,20 @@ P3 = image(
% (3,4,6,4)
numeric dx; dx = u*(1+cosd(30)/sind(30));
picture unit; unit = image(
- path s; s = unitsquare shifted -(1/2,1/2) scaled u shifted (dx/2,0);
- for t=0 upto 2:
- draw s rotated 120t;
- endfor
+ path s; s = unitsquare shifted -(1/2,1/2) scaled u shifted (dx/2,0);
+ for t=0 upto 2:
+ draw s rotated 120t;
+ endfor
);
P4 = image(
- draw unit withpen pencircle scaled 4 withcolor .8[red,white];
- for x=-5dx step dx until 5dx:
- for y=-5dx step dx until 5dx:
- draw unit shifted (x,0) shifted ((y,0) rotated 60);
- endfor
+ draw unit withpen pencircle scaled 4 withcolor .8[red,white];
+ for x=-5dx step dx until 5dx:
+ for y=-5dx step dx until 5dx:
+ draw unit shifted (x,0) shifted ((y,0) rotated 60);
endfor
- clip currentpicture to box; draw box dashed withdots scaled 1/4;
- label.bot("$(3, 4, 6, 4)$", point 1/2 of bbox currentpicture);
+ endfor
+ clip currentpicture to box; draw box dashed withdots scaled 1/4;
+ label.bot("$(3, 4, 6, 4)$", point 1/2 of bbox currentpicture);
);
% beginfig(6);
@@ -179,10 +179,10 @@ P4 = image(
% endfig;
beginfig(1);
-draw P1;
-draw P2 shifted (12.5u, 0);
-draw P3 shifted (0, -14.4u);
-draw P4 shifted (12.5u, -14.4u);
+ draw P1;
+ draw P2 shifted (12.5u, 0);
+ draw P3 shifted (0, -14.4u);
+ draw P4 shifted (12.5u, -14.4u);
endfig;
\end{mplibcode}
diff --git a/info/drawing-with-metapost/src/tiling-archimedes.pdf b/info/drawing-with-metapost/src/tiling-archimedes.pdf
new file mode 100644
index 0000000000..668ae84423
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-archimedes.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/conway.mp b/info/drawing-with-metapost/src/tiling-conway.mp
index 41d94bae34..1ecbcbe229 100644
--- a/info/drawing-with-metapost/src/conway.mp
+++ b/info/drawing-with-metapost/src/tiling-conway.mp
@@ -3,20 +3,21 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
+input colorbrewer-rgb
+input tiling-pinwheel-macro
beginfig(1);
pair a, b, c, d, e, f, g;
-a = origin; b = 180 right; c = 90 up;
-d = 2/5[b, c]; e = 4/5[b,c]; f = 1/2[e, a]; g = 1/2[a, b];
+a = origin; b = 180 right; c = 1/2 b rotated 90;
+d = 1/2[a,b]; e = 1/5[c,b]; f = 1/2[a,e]; g = 1/2[b,e];
+pinwheel(1,a,b,c,"");
-fill a--b--c--cycle withcolor 15/16[blue, white];
-draw a--b--c--a--e--g--f; draw g--d;
dotlabel.llft("$a$", a);
dotlabel.lrt ("$b$", b);
dotlabel.ulft("$c$", c);
-dotlabel.urt ("$d$", d);
+dotlabel.bot ("$d$", d);
dotlabel.urt ("$e$", e);
dotlabel.ulft("$f$", f);
-dotlabel.bot ("$g$", g);
+dotlabel.urt ("$g$", g);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/conway.pdf b/info/drawing-with-metapost/src/tiling-conway.pdf
index 4ca336f367..173944e606 100644
--- a/info/drawing-with-metapost/src/conway.pdf
+++ b/info/drawing-with-metapost/src/tiling-conway.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-hex-trig.mp b/info/drawing-with-metapost/src/tiling-hex-trig.mp
index ce9d1565e6..aa4089fe99 100644
--- a/info/drawing-with-metapost/src/tiling-hex-trig.mp
+++ b/info/drawing-with-metapost/src/tiling-hex-trig.mp
@@ -24,49 +24,49 @@ vardef make_image(expr P, n, u, v, s, arrows) =
currentpicture
enddef;
beginfig(1);
- path hexagon, triangle; pair u, v; numeric n;
- hexagon = for i=0 upto 5: (0, 16) rotated 60i -- endfor cycle;
- triangle = for i=0 upto 2: (0, 16) rotated 120i -- endfor cycle;
+ path hexagon, triangle; pair u, v; numeric n;
+ triangle = for i=0 upto 2: (0, 16) rotated 120i -- endfor cycle;
+ hexagon = for i=0 upto 5: (0, 16) rotated 60i -- endfor cycle;
- u = point 0 of triangle - point 1 of triangle;
- v = u rotated -60;
+ u = point 0 of triangle - point 1 of triangle;
+ v = u rotated -60;
- path s; s = superellipse(89 right, 89 up, 89 left, 89 down, 0.78);
- n = 8;
- picture P[];
- P3 = make_image(triangle, n, u, v, s, true);
- P6 = make_image(hexagon, n, u, v, s, true);
+ path s; s = superellipse(89 right, 89 up, 89 left, 89 down, 0.78);
+ n = 8;
+ picture P[];
+ P3 = make_image(triangle, n, u, v, s, true);
+ P6 = make_image(hexagon, n, u, v, s, true);
- picture T; T = image(
- path t'; t' = triangle reflectedabout(point 0 of triangle, point 1 of triangle);
- fill triangle withcolor Reds 8 2;
- fill t' withcolor Blues 8 2;
- draw triangle;
- draw t';
- );
- P4 = make_image(T, n, u, v, s, true);
- picture H; H = image(
- path ha, hb;
- ha = hexagon reflectedabout(point 0 of hexagon, point 1 of hexagon);
- hb = hexagon reflectedabout(point 0 of hexagon, point 5 of hexagon);
- fill hexagon withcolor Oranges 8 2;
- fill ha withcolor Blues 8 2;
- fill hb withcolor Greens 8 2;
- draw hexagon; draw ha; draw hb;
- );
- P7 = make_image(H, n, u zscaled 1.732 dir 30, v zscaled 1.732 dir 30, s, true);
+ picture T; T = image(
+ path t'; t' = triangle reflectedabout(point 0 of triangle, point 1 of triangle);
+ fill triangle withcolor Reds 8 2;
+ fill t' withcolor Blues 8 2;
+ draw triangle;
+ draw t';
+ );
+ P4 = make_image(T, n, u, v, s, true);
+ picture H; H = image(
+ path ha, hb;
+ ha = hexagon reflectedabout(point 0 of hexagon, point 1 of hexagon);
+ hb = hexagon reflectedabout(point 0 of hexagon, point 5 of hexagon);
+ fill hexagon withcolor Oranges 8 2;
+ fill ha withcolor Blues 8 2;
+ fill hb withcolor Greens 8 2;
+ draw hexagon; draw ha; draw hb;
+ );
+ P7 = make_image(H, n, u zscaled 1.732 dir 30, v zscaled 1.732 dir 30, s, true);
- picture dualt, dualh;
- dualt = image(
- draw triangle withcolor 1/2;
- for i=0 upto 2: draw origin -- point i+1/2 of triangle withcolor Reds 7 6; endfor
- draw currentpicture reflectedabout(point 0 of triangle, point 1 of triangle);
+ picture dualt, dualh;
+ dualt = image(
+ draw triangle withcolor 1/2;
+ for i=0 upto 2: draw origin -- point i+1/2 of triangle withcolor Reds 7 6; endfor
+ draw currentpicture reflectedabout(point 0 of triangle, point 1 of triangle);
);
dualh = image(
- draw hexagon withcolor 1/2;
- for i=0 upto 5:
- draw origin -- point i+1/2 of hexagon withcolor Reds 7 6;
- endfor
+ draw hexagon withcolor 1/2;
+ for i=0 upto 5:
+ draw origin -- point i+1/2 of hexagon withcolor Reds 7 6;
+ endfor
);
P5 = make_image(dualt, n, u, v, s, false);
P8 = make_image(dualh, n, u, v, s, false);
@@ -77,7 +77,7 @@ beginfig(1);
draw P6 shifted (+100, +100);
draw P7 shifted (+100, -100);
draw P8 shifted (+100, -300);
-endfig;
-\end{mplibcode}
-\end{document}
+ endfig;
+ \end{mplibcode}
+ \end{document}
diff --git a/info/drawing-with-metapost/src/tiling-hex-trig.pdf b/info/drawing-with-metapost/src/tiling-hex-trig.pdf
index a4a9313e42..17cccd5893 100644
--- a/info/drawing-with-metapost/src/tiling-hex-trig.pdf
+++ b/info/drawing-with-metapost/src/tiling-hex-trig.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-kepler-k.mp b/info/drawing-with-metapost/src/tiling-kepler-k.mp
index 81ea654def..499c283f47 100644
--- a/info/drawing-with-metapost/src/tiling-kepler-k.mp
+++ b/info/drawing-with-metapost/src/tiling-kepler-k.mp
@@ -11,7 +11,7 @@ beginfig(1);
ahangle := 10;
unit = image(
for i=-1 upto 1:
- fill s rotated 60i withcolor Spectral[9][3+2i];
+ fill s rotated 60i withcolor Oranges 8 3;
draw s rotated 60i;
endfor
);
@@ -24,7 +24,11 @@ beginfig(1);
draw unit shifted (i * u + j * v);
endfor
endfor
- clip currentpicture to fullcircle scaled 400;
+
+ picture P; P = currentpicture; currentpicture := nullpicture;
+ fill fullcircle scaled 400 withcolor Blues 5 4;
+ clip P to fullcircle scaled 400;
+ draw P;
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-kepler-k.pdf b/info/drawing-with-metapost/src/tiling-kepler-k.pdf
index c2b4272c60..6c457f3fbb 100644
--- a/info/drawing-with-metapost/src/tiling-kepler-k.pdf
+++ b/info/drawing-with-metapost/src/tiling-kepler-k.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-kepler-y.mp b/info/drawing-with-metapost/src/tiling-kepler-y.mp
new file mode 100644
index 0000000000..1ce6159f60
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-kepler-y.mp
@@ -0,0 +1,50 @@
+\documentclass[border=0mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+path o;
+o = for i=0 upto 7: 8 right rotated (45/2 + 45i) -- endfor cycle;
+numeric a, b;
+a = abs(point 1/2 of o - point 9/2 of o);
+b = abs(point 0 of o - point 1 of o);
+o := o shifted 1/2(2a + b, a);
+path s, t, x;
+s = unitsquare zscaled (point 4 of o - point 5 of o) shifted point 5 of o;
+t = unitsquare zscaled (point 6 of o - point 7 of o) shifted point 7 of o;
+x = unitsquare zscaled (point 7 of o - point 8 of o) shifted point 8 of o;
+
+input colorbrewer-rgb
+
+picture unit;
+unit = image(
+ for i=0 upto 7:
+ fill o rotated 45i withcolor Oranges 8 3;
+ draw o rotated 45i;
+ fill s rotated 45i withcolor Blues 8 2;
+ draw s rotated 45i;
+ endfor
+ for i = 0, 1, 2, 3, 5, 7:
+ fill t rotated 45i withcolor Blues 8 4;
+ draw t rotated 45i;
+ endfor
+ for i = 1, 3, 5, 7:
+ fill x rotated 45i withcolor Blues 8 4;
+ draw x rotated 45i;
+ endfor
+);
+
+beginfig(1);
+ pair u, v; u = 2 center t; v = u rotated 90;
+ n = 4;
+ for i=-n upto n:
+ for j = -n upto n:
+ draw unit shifted (i * u + j * v);
+ endfor
+ endfor
+
+ clip currentpicture to unitsquare shifted -(1/2, 1/2) yscaled sqrt(2) scaled 105mm;
+
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-kepler-y.pdf b/info/drawing-with-metapost/src/tiling-kepler-y.pdf
new file mode 100644
index 0000000000..9c238159e3
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-kepler-y.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart-construction.mp b/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart-construction.mp
new file mode 100644
index 0000000000..a1caf2336f
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart-construction.mp
@@ -0,0 +1,96 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+input colorbrewer-rgb
+
+numeric phi; phi = 0.61803398875;
+
+path wide[], tall[];
+wide0 = origin -- right -- phi * dir 36 -- cycle;
+wide1 = origin -- right -- phi * dir -36 -- cycle;
+tall0 = origin -- right -- (1+phi) * dir 72 -- cycle;
+tall1 = origin -- right -- (1+phi) * dir -72 -- cycle;
+
+vardef half_dart(expr level, a, b, side) =
+ save T; path T; T = wide[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withcolor Purples[9][3+side];
+ draw subpath (0, 2) of T;
+ else:
+ half_dart(level - 1, point 1 of T, point 2 of T, side);
+ half_kite(level - 1, point 2 of T, point phi of T, 1-side);
+ fi
+enddef;
+
+vardef half_kite(expr level, a, b, side) =
+ save T; path T; T = tall[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withcolor Blues[9][2+side];
+ draw subpath (0, 2) of T;
+ else:
+ half_dart(level - 1, point 2 of T, point 2+phi of T, side);
+ half_kite(level - 1, point 2+phi of T, point 0 of T, side);
+ half_kite(level - 1, point 2+phi of T, point 1+phi of T, 1-side);
+ fi
+enddef;
+
+beginfig(1);
+
+ picture kite, dart, P[];
+
+ kite = image(
+ half_kite(0, origin, 34 dir 198, 0);
+ half_kite(0, origin, 34 dir -18, 1);
+ label.bot("Kite", 55 down);
+ );
+
+ dart = image(
+ half_dart(0, origin, 55 dir 234, 0);
+ half_dart(0, origin, 55 dir 306, 1);
+ currentpicture := currentpicture shifted 4 down;
+ undraw origin;
+ label.bot("Dart", 55 down);
+ );
+
+
+ pickup pencircle scaled 1/4;
+
+ pair a, b; a = origin; b = 21 dir 198;
+ P1 = image(half_kite(0, a, b, 0); dotlabel.ulft("$a$", a); dotlabel.ulft("$b$", b));
+ P2 = image(half_kite(1, a, b, 0));
+
+ b := b reflectedabout(up, down);
+ P3 = image(half_kite(0, a, b, 1); dotlabel.urt("$a$", a); dotlabel.urt("$b$", b));
+ P4 = image(half_kite(1, a, b, 1));
+ P5 = image(begingroup; save arr; path arr; arr = (up--down) scaled 12;
+ drawarrow arr;
+ interim labeloffset := 8;
+ label.ulft(P1, point 0 of arr); label.urt(P3, point 0 of arr);
+ label.llft(P2, point 1 of arr); label.lrt(P4, point 1 of arr);
+ endgroup);
+
+ b := 34 dir 234;
+ P6 = image(half_dart(0, a, b, 0); dotlabel.ulft("$a$", a); dotlabel.ulft("$b$", b));
+ P7 = image(half_dart(1, a, b, 0));
+
+ b := b reflectedabout(up, down);
+ P8 = image(half_dart(0, a, b, 1); dotlabel.urt("$a$", a); dotlabel.urt("$b$", b));
+ P9 = image(half_dart(1, a, b, 1));
+ P10 = image(begingroup; save arr; path arr; arr = (up--down) scaled 12;
+ drawarrow arr;
+ interim labeloffset := 8;
+ label.ulft(P6, point 0 of arr); label.urt(P8, point 0 of arr);
+ label.llft(P7, point 1 of arr); label.lrt(P9, point 1 of arr);
+ endgroup);
+
+ label(kite, 42 left);
+ label(dart, 42 right);
+ label(P5, 134 left);
+ label(P10, 134 right);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart-construction.pdf b/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart-construction.pdf
new file mode 100644
index 0000000000..576713a5f7
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart-construction.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart.mp b/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart.mp
new file mode 100644
index 0000000000..5f8853f1d6
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart.mp
@@ -0,0 +1,49 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+input colorbrewer-rgb
+
+numeric phi; phi = 0.61803398875;
+
+path wide[], tall[];
+wide0 = origin -- right -- phi * dir 36 -- cycle;
+wide1 = origin -- right -- phi * dir -36 -- cycle;
+tall0 = origin -- right -- (1+phi) * dir 72 -- cycle;
+tall1 = origin -- right -- (1+phi) * dir -72 -- cycle;
+
+vardef half_dart(expr level, a, b, side) =
+ save T; path T; T = wide[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withcolor Purples[9][3+side];
+ draw subpath (0, 2) of T;
+ else:
+ half_dart(level - 1, point 1 of T, point 2 of T, side);
+ half_kite(level - 1, point 2 of T, point phi of T, 1-side);
+ fi
+enddef;
+
+vardef half_kite(expr level, a, b, side) =
+ save T; path T; T = tall[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withcolor Blues[9][2+side];
+ draw subpath (0, 2) of T;
+ else:
+ half_dart(level - 1, point 2 of T, point 2+phi of T, side);
+ half_kite(level - 1, point 2+phi of T, point 0 of T, side);
+ half_kite(level - 1, point 2+phi of T, point 1+phi of T, 1-side);
+ fi
+enddef;
+
+beginfig(1);
+ numeric wd; wd = 5in;
+ drawoptions(withpen pencircle scaled 1/8);
+ half_dart(9, 1.375 wd * left, 1.375 wd * right, 0);
+ drawoptions();
+ clip currentpicture to unitsquare shifted 1/2 left scaled wd yscaled phi;
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart.pdf b/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart.pdf
new file mode 100644
index 0000000000..00366a9681
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-penrose-tatham-p2-kite-dart.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs-construction.mp b/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs-construction.mp
new file mode 100644
index 0000000000..ac1bf4d0d2
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs-construction.mp
@@ -0,0 +1,98 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+input colorbrewer-rgb
+
+numeric phi; phi = 0.61803398875;
+
+path wide[], tall[];
+wide0 = origin -- right -- phi * dir 36 -- cycle;
+wide1 = origin -- right -- phi * dir -36 -- cycle;
+tall0 = origin -- right -- (1+phi) * dir 72 -- cycle;
+tall1 = origin -- right -- (1+phi) * dir -72 -- cycle;
+
+vardef half_thick(expr level, a, b, side) =
+ save T; path T; T = wide[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withcolor Purples[9][2+2side];
+ draw subpath (1, 3) of T;
+ else:
+ half_thick(level - 1, point phi of T, point 0 of T, 1-side);
+ half_thick(level - 1, point 1 of T, point 2 of T, side);
+ half_thin(level - 1, point 2 of T, point -phi of T, side);
+ fi
+enddef;
+
+vardef half_thin(expr level, a, b, side) =
+ save T; path T; T = tall[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withcolor Blues[9][2+2side];
+ draw subpath (1, 3) of T;
+ else:
+ half_thick(level - 1, point 0 of T, point 2 of T, 1-side);
+ half_thin(level - 1, point 1 of T, point 2-phi of T, side);
+ fi
+enddef;
+
+picture thin, thick, P[];
+
+pair a, b; a = -b = 13 down;
+thin = image(
+ half_thin(0, a, b, 0);
+ half_thin(0, a, b, 1);
+ label.bot("Thin", 42 down); undraw 28 up;
+);
+
+for s=0, 1:
+ P[1+s] = image(
+ half_thin(0, a, b, s);
+ dotlabel.bot("$a$", a);
+ dotlabel.top("$b$", b);
+ label("$" & decimal s & "$", (17 * (2s-1), 0));
+ );
+ P[3+s] = image(half_thin(1, a, b, s));
+endfor
+
+P5 = image(
+ begingroup; interim labeloffset := 8; save arr;
+ path arr; arr = 21 up -- 21 down; drawarrow arr;
+ label.ulft(P1, point 0 of arr); label.urt(P2, point 0 of arr);
+ label.llft(P3, point 1 of arr); label.lrt(P4, point 1 of arr);
+ endgroup;
+);
+
+pair a, b; a = -b = 28 down;
+thick = image(
+ half_thick(0, a, b, 0);
+ half_thick(0, a, b, 1);
+ label.bot("Thick", 42 down);
+);
+
+for s=0, 1:
+ P[6+s] = image(
+ half_thick(0, a, b, s);
+ dotlabel.bot("$a$", a);
+ dotlabel.top("$b$", b);
+ label("$" & decimal s & "$", (11 * (2s-1), 0));
+ );
+ P[8+s] = image(half_thick(1, a, b, s));
+endfor
+
+P10 = image(
+ begingroup; interim labeloffset := 8; save arr;
+ path arr; arr = 8 up -- 8 down; drawarrow arr;
+ label.ulft(P6, point 0 of arr); label.urt(P7, point 0 of arr);
+ label.llft(P8, point 1 of arr); label.lrt(P9, point 1 of arr);
+ endgroup;
+);
+
+beginfig(1);
+ label(thin, 53 left); label(P5, 132 left);
+ label(thick, 53 right); label(P10, 132 right);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs-construction.pdf b/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs-construction.pdf
new file mode 100644
index 0000000000..d297aca4ac
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs-construction.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs.mp b/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs.mp
new file mode 100644
index 0000000000..8b947d9361
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs.mp
@@ -0,0 +1,49 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+input colorbrewer-rgb
+
+numeric phi; phi = 0.61803398875;
+
+path wide[], tall[];
+wide0 = origin -- right -- phi * dir 36 -- cycle;
+wide1 = origin -- right -- phi * dir -36 -- cycle;
+tall0 = origin -- right -- (1+phi) * dir 72 -- cycle;
+tall1 = origin -- right -- (1+phi) * dir -72 -- cycle;
+
+vardef half_thick(expr level, a, b, side) =
+ save T; path T; T = wide[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withcolor Purples[9][1+side];
+ draw subpath (1, 3) of T;
+ else:
+ half_thick(level - 1, point phi of T, point 0 of T, 1-side);
+ half_thick(level - 1, point 1 of T, point 2 of T, side);
+ half_thin(level - 1, point 2 of T, point -phi of T, side);
+ fi
+enddef;
+
+vardef half_thin(expr level, a, b, side) =
+ save T; path T; T = tall[side] zscaled (b-a) shifted a;
+ if level = 0:
+ fill T withcolor Blues[9][2+side];
+ draw subpath (1, 3) of T;
+ else:
+ half_thick(level - 1, point 0 of T, point 2 of T, 1-side);
+ half_thin(level - 1, point 1 of T, point 2-phi of T, side);
+ fi
+enddef;
+
+beginfig(1);
+ numeric wd; wd = 5in;
+ drawoptions(withpen pencircle scaled 1/8);
+ half_thick(8, 1.375 wd * left, 1.375 wd * right, 0);
+ drawoptions();
+ clip currentpicture to unitsquare shifted 1/2 left scaled wd yscaled phi;
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs.pdf b/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs.pdf
new file mode 100644
index 0000000000..834faf7246
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-penrose-tatham-p3-rhombs.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-pinwheel-macro.mp b/info/drawing-with-metapost/src/tiling-pinwheel-macro.mp
new file mode 100644
index 0000000000..512bdebc8f
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-pinwheel-macro.mp
@@ -0,0 +1,15 @@
+input colorbrewer-rgb
+vardef pinwheel(expr level, a, b, c, s) =
+ if level = 0:
+ fill a--b--c--cycle withcolor s;
+ draw a--b--c--cycle;
+ else:
+ save d, e, f, g; pair d, e, f, g;
+ d = 1/2[a,b]; e = 1/5[c,b]; f = 1/2[a,e]; g = 1/2[b,e];
+ pinwheel(level - 1, f, d, e, Blues 9 2);
+ pinwheel(level - 1, f, d, a, Blues 9 3);
+ pinwheel(level - 1, e, a, c, Blues 9 4);
+ pinwheel(level - 1, g, e, d, Blues 9 5);
+ pinwheel(level - 1, g, b, d, Blues 9 6);
+ fi
+enddef;
diff --git a/info/drawing-with-metapost/src/tiling-pp48a.mp b/info/drawing-with-metapost/src/tiling-pp48a.mp
new file mode 100644
index 0000000000..0b0333c960
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-pp48a.mp
@@ -0,0 +1,29 @@
+% inspired by Grünbaum & Shephard - fig 8.0.1
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input colorbrewer-rgb
+beginfig(1);
+ numeric r, s; s = 9; r = 2s * (sind(75)-sind(45));
+ path a; a = unitsquare rotated -45 scaled s shifted (r, 0);
+ picture unit; unit = image(
+ for t=0 upto 5:
+ fill a rotated 60t withcolor Spectral[6][t mod 3 + 3];
+ draw a rotated 60t;
+ endfor
+ );
+ pair u, v;
+ u = (2s * sind(75), 0); u := u + u rotated 60; u := u rotated 60;
+ v = u rotated 60;
+ numeric n; n = 5;
+ for i = -n upto n:
+ for j = -n upto n:
+ draw unit shifted (i*u + j*v - floor(j/2)*u);
+ endfor
+ endfor
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-pp48a.pdf b/info/drawing-with-metapost/src/tiling-pp48a.pdf
new file mode 100644
index 0000000000..59b61ee6b6
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-pp48a.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-simple.mp b/info/drawing-with-metapost/src/tiling-simple.mp
index 6b0fdf540a..1bb41d059d 100644
--- a/info/drawing-with-metapost/src/tiling-simple.mp
+++ b/info/drawing-with-metapost/src/tiling-simple.mp
@@ -5,34 +5,29 @@
beginfig(1);
picture P[];
P1 = image(
-for i = -10 upto 10:
+ for i = -10 upto 10:
draw (left--right) scaled 200 shifted (0, 20i);
draw (down--up) scaled 200 shifted (20i, 0);
-endfor
-clip currentpicture to fullcircle scaled 180;
-draw fullcircle scaled 180;
+ endfor
+ path c; c = fullcircle scaled 180; clip currentpicture to c; draw c;
);
P2 = image(
-path unit; pair u, v; color a, b;
-unit = unitsquare scaled 24;
-u = point 1 of unit - point 0 of unit;
-v = point 3 of unit - point 0 of unit;
-a = 3/4[red, white]; b = 3/4[blue, white];
-for i=-5 upto 5:
- for j=-5 upto 5:
- fill unit shifted (i*u + j*v)
- withcolor if odd (i+j): a else: b fi;
- endfor
-endfor
-for i=-5 upto 5:
- for j=-5 upto 5:
- draw subpath (0,2) of unit shifted (i*u + j*v);
+ path unit; pair u, v; color a, b;
+ unit = unitsquare scaled 24;
+ u = point 1 of unit - point 0 of unit;
+ v = point 3 of unit - point 0 of unit;
+ a = 3/4[red, white]; b = 3/4[blue, white];
+ for i=-5 upto 5:
+ for j=-5 upto 5:
+ fill unit shifted (i*u + j*v)
+ withcolor if odd (i+j): a else: b fi;
+ draw subpath (-1,1) of unit shifted (i*u + j*v);
+ endfor
endfor
-endfor
-clip currentpicture to fullcircle scaled 180;
-draw fullcircle scaled 180;
+ path c; c = fullcircle scaled 180; clip currentpicture to c; draw c;
);
+undraw (left--right) scaled 2in;
draw P1; draw P2 shifted 200 down;
endfig;
diff --git a/info/drawing-with-metapost/src/tiling-simple.pdf b/info/drawing-with-metapost/src/tiling-simple.pdf
index ef086a2e0a..4a40647842 100644
--- a/info/drawing-with-metapost/src/tiling-simple.pdf
+++ b/info/drawing-with-metapost/src/tiling-simple.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-subs-pinwheel.mp b/info/drawing-with-metapost/src/tiling-subs-pinwheel.mp
new file mode 100644
index 0000000000..e13e71cba4
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-subs-pinwheel.mp
@@ -0,0 +1,16 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input tiling-pinwheel-macro
+beginfig(1);
+ pair a, b, c; a = origin; b = 460 right; c = 1/2 b rotated 90;
+ drawoptions(withpen pencircle scaled 1/8 withcolor white);
+ pinwheel(5, a, b, c, "");
+ drawoptions();
+ draw currentpicture rotatedabout(1/2[b,c], 180);
+ currentpicture := currentpicture rotated 90;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/tiling-subs-pinwheel.pdf b/info/drawing-with-metapost/src/tiling-subs-pinwheel.pdf
new file mode 100644
index 0000000000..6d9d625007
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-subs-pinwheel.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling-subs-triangle.mp b/info/drawing-with-metapost/src/tiling-subs-triangle.mp
new file mode 100644
index 0000000000..aaf5e0eb06
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-subs-triangle.mp
@@ -0,0 +1,82 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\mplibtextextlabel{enable}
+\begin{document}
+\begin{mplibcode}
+
+vardef tall(expr level, a, b, c) =
+ if level = 0:
+ fill a--b--c--cycle withcolor 3/4[blue, white];
+ draw a--c--b;
+ else:
+ save m; pair m; m = 1/3 (a + b + c); % the centroid
+ wide(level - 1, a, b, m);
+ wide(level - 1, b, c, m);
+ wide(level - 1, c, a, m);
+ fi
+enddef;
+vardef wide(expr level, a, b, c) =
+ if level = 0:
+ fill a--b--c--cycle withcolor 7/8[blue, white];
+ draw a--c--b;
+ else:
+ save p, q; pair p, q; p = 1/3[a,b]; q = 1/3[b,a];
+ wide(level - 1, c, a, p);
+ tall(level - 1, p, q, c);
+ wide(level - 1, b, c, q);
+ fi
+enddef;
+
+beginfig(1);
+
+ picture P[];
+ for i=0,1,2: z[1+i] = 173.2 up rotated 120i; endfor
+ for i=0,1,2: z[4+i] = 17.32 up rotated 120i; endfor
+
+ P1 = image(
+ pickup pencircle scaled 1/8;
+ tall(6, z1, z2, z3);
+ );
+
+ P2 = image(
+ tall(0, z4, z5, z6)
+ );
+ P3 = image(
+ tall(1, z4, z5, z6)
+ );
+ P4 = image(
+ drawarrow 10 left -- 10 right;
+ label.lft(P2, 12 left);
+ label.rt(P3, 12 right);
+ label.top("The \textit{tall} macro dissects a tall triangle into 3 wide ones",
+ point 5/2 of bbox currentpicture shifted 6 up);
+ );
+
+ P5 = image(
+ wide(0, z5, z6, origin)
+ );
+
+ P6 = image(
+ wide(1, z5, z6, origin)
+ );
+
+ P7 = image(
+ drawarrow 10 left -- 10 right;
+ label.lft(P5, 12 left);
+ label.rt(P6, 12 right);
+ label.top("The \textit{wide} macro dissects a wide triangle into 2 wides, and 1 tall.",
+ point 5/2 of bbox currentpicture shifted 6 up);
+ );
+
+ draw P1;
+ label.top(P7, point 5/2 of bbox currentpicture shifted 12 up);
+ label.top(P4, point 5/2 of bbox currentpicture shifted 12 up);
+
+ label.bot(btex \vbox{\hsize 4.2in\raggedright\noindent
+ Note that only part of the perimeter of each triangle is drawn, to give
+ the illusion that the completed tiling is made up of identical rhombs.} etex,
+ point 1/2 of bbox currentpicture shifted 12 down);
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tiling-subs-triangle.pdf b/info/drawing-with-metapost/src/tiling-subs-triangle.pdf
new file mode 100644
index 0000000000..3794c49561
--- /dev/null
+++ b/info/drawing-with-metapost/src/tiling-subs-triangle.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tiling.mp b/info/drawing-with-metapost/src/tiling.mp
deleted file mode 100644
index 9a82b1fd39..0000000000
--- a/info/drawing-with-metapost/src/tiling.mp
+++ /dev/null
@@ -1,56 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-
-prologues := 3;
-outputtemplate := "%j%c.eps";
-vardef poly_on(expr a,b,n) =
- save s,t,c; pair c;
- s = 360/n;
- t = 90-180/n;
- c = whatever[a,b rotatedabout(a,+t)]
- = whatever[b,a rotatedabout(b,-t)];
- for i=0 upto n-1: a rotatedabout(c,i*s) -- endfor cycle
-enddef;
-
-vardef make_uniform_tiling_shd(expr u, reps, scolor, hcolor, dcolor) =
- save x,y,s, h, d, t; path s[], h[], d; picture t;
- (x,y) = dir 15;
- d = for i=0 upto 11: (x/2y, 1/2) scaled u rotated 30i -- endfor cycle;
- for i=0 upto 2: s[i] = unitsquare scaled u shifted point -1 of d rotated (60+60i); endfor
- for i=0 upto 1: h[i] = poly_on(point 9+2i of d, point 8+2i of d, 6); endfor
- t = image(
- fill d withcolor dcolor;
- for i=0 upto 2: fill s[i] withcolor scolor; endfor
- for i=0 upto 1: fill h[i] withcolor hcolor; endfor
-
- draw d;
- for i=0 upto 2: draw s[i]; endfor
- for i=0 upto 1: draw h[i]; endfor
- );
- save dx, dy; pair dx, dy;
- dx = (u,0) + point -1/2 of d - point 11/2 of d;
- dy = dx rotated 60;
- for i=-reps upto reps:
- for j=-reps upto reps:
- draw t shifted (i*dx) shifted (j*dy);
- endfor
- endfor
-enddef;
-
-def rgb(expr r,g,b) = (r/255, g/255, b/255) enddef;
-color b[];
-b1 = rgb(255,255,217);
-b2 = rgb(237,248,177);
-b3 = rgb(199,233,180);
-
-beginfig(2);
-picture tt; tt = image(make_uniform_tiling_shd(4mm, 7, b1, b2, b3); fill fullcircle scaled 3 withcolor red;);
-clip tt to fullcircle scaled 12cm; draw tt;
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/tiling.pdf b/info/drawing-with-metapost/src/tiling.pdf
deleted file mode 100644
index b37895e16c..0000000000
--- a/info/drawing-with-metapost/src/tiling.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/torn-edge-circle.mp b/info/drawing-with-metapost/src/torn-edge-circle.mp
deleted file mode 100644
index 9a461eb737..0000000000
--- a/info/drawing-with-metapost/src/torn-edge-circle.mp
+++ /dev/null
@@ -1,18 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\begin{mplibcode}
-input torn-edge
-beginfig(1);
-path c; c = fullcircle scaled 200;
-draw c withcolor .8 white;
-y=0; n = 600;
-path t; t = for i=0 upto n-1:
- point i/n*length(c) of c
- + (0, walkr y) rotated angle direction i/n*length(c) of c
- --
-endfor cycle;
-draw t withcolor .67 red;
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/torn-edge-circle.pdf b/info/drawing-with-metapost/src/torn-edge-circle.pdf
deleted file mode 100644
index 2142838a3d..0000000000
--- a/info/drawing-with-metapost/src/torn-edge-circle.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/torn-edge-straight.mp b/info/drawing-with-metapost/src/torn-edge-straight.mp
deleted file mode 100644
index 18a365c4c2..0000000000
--- a/info/drawing-with-metapost/src/torn-edge-straight.mp
+++ /dev/null
@@ -1,14 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\begin{mplibcode}
-input torn-edge
-beginfig(2);
-path t; numeric x, y;
-x = 0; y=0;
-t = (x, -20) -- (x, y) for i=1 upto 288: -- (incr x, walkr y) endfor -- (x, -20) -- cycle;
-fill t withcolor 1/32(32,32,31);
-draw t withcolor .67 blue;
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/torn-edge-straight.pdf b/info/drawing-with-metapost/src/torn-edge-straight.pdf
deleted file mode 100644
index c0afc7349f..0000000000
--- a/info/drawing-with-metapost/src/torn-edge-straight.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/torn-edge.mp b/info/drawing-with-metapost/src/torn-edge.mp
deleted file mode 100644
index 5d0afface0..0000000000
--- a/info/drawing-with-metapost/src/torn-edge.mp
+++ /dev/null
@@ -1,7 +0,0 @@
-vardef signr suffix $ =
- if $<0: - else: + fi uniformdeviate 1
- enddef;
-vardef walkr suffix $ =
- $ := $ if uniformdeviate 1 < (2**-abs($)): + else: - fi signr $;
- $
- enddef;
diff --git a/info/drawing-with-metapost/src/trad-braces.mp b/info/drawing-with-metapost/src/trad-braces.mp
new file mode 100644
index 0000000000..595248ceba
--- /dev/null
+++ b/info/drawing-with-metapost/src/trad-braces.mp
@@ -0,0 +1,37 @@
+\documentclass[border=5mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+vardef do_brace(expr a, b, offset, r) =
+ save d, e, m, n, brace, hook; pair e; path brace, hook[];
+ d = angle(b-a);
+ e = up scaled offset rotated d shifted r[a,b];
+ n = 1/2 offset; m = abs(n);
+ hook1 = origin {0, n} .. (m, n) {1,0};
+ hook2 = (-m,-n) {1,0} .. {0, n} origin {0,-n} .. (m,-n) {1,0};
+ hook3 = (-m, n) {1,0} .. {0,-n} origin;
+ brace = (hook1 rotated d shifted a --
+ hook2 rotated d shifted e --
+ hook3 rotated d shifted b) shifted (up scaled n rotated d);
+ draw brace withpen pencircle yscaled .6 xscaled .1666 rotated d;
+ point 3 of brace
+enddef;
+
+beginfig(1);
+z1 = origin;
+z2 = 180 right rotated 13;
+draw z1--z2 withcolor .7 white;
+dotlabel.llft("$z_1$",z1);
+dotlabel.urt("$z_2$",z2);
+drawoptions(withcolor 2/3 red);
+label.lrt("Here", do_brace(z1, z2, -12, 3/4));
+drawoptions();
+begingroup; interim ahangle := 180; interim ahlength := 3;
+drawdblarrow (z1--z2) shifted (12 up rotated angle (z2-z1)) withcolor 2/3 blue;
+endgroup;
+
+
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/braces.pdf b/info/drawing-with-metapost/src/trad-braces.pdf
index 28064cabad..d3ebc86b0b 100644
--- a/info/drawing-with-metapost/src/braces.pdf
+++ b/info/drawing-with-metapost/src/trad-braces.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/callout.mp b/info/drawing-with-metapost/src/trad-callout.mp
index be171d03e5..f450baef4c 100644
--- a/info/drawing-with-metapost/src/callout.mp
+++ b/info/drawing-with-metapost/src/trad-callout.mp
@@ -1,19 +1,18 @@
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
-\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
path a; a = (left .. right) scaled 42;
pair P; P = origin; r = 31;
draw a rotated r withcolor 2/3 red; draw a rotated (90+r) withcolor 2/3 red;
-drawdot P withpen pencircle scaled dotlabeldiam;
-label("$P$", P shifted 10 dir 68);
- z0 = P + 20 dir -20;
- draw z0 -- P
- cutafter fullcircle scaled 8 shifted P
- withpen pencircle scaled 1/4;
- label.rt("\textit{pole}", z0);
+draw P withpen pencircle scaled dotlabeldiam;
+label(btex $P$ etex, P shifted 10 dir 68);
+z0 = P + 20 dir -20;
+draw z0 -- P
+ cutafter fullcircle scaled 8 shifted P
+ withpen pencircle scaled 1/4;
+label.rt(btex \textit{pole} etex, z0);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/callout.pdf b/info/drawing-with-metapost/src/trad-callout.pdf
index 07f6e21964..27ee0c69ff 100644
--- a/info/drawing-with-metapost/src/callout.pdf
+++ b/info/drawing-with-metapost/src/trad-callout.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/dynamic-labels.mp b/info/drawing-with-metapost/src/trad-dynamic-labels.mp
index d831d99a4b..d831d99a4b 100644
--- a/info/drawing-with-metapost/src/dynamic-labels.mp
+++ b/info/drawing-with-metapost/src/trad-dynamic-labels.mp
diff --git a/info/drawing-with-metapost/src/dynamic-labels.pdf b/info/drawing-with-metapost/src/trad-dynamic-labels.pdf
index 94ed338990..94ed338990 100644
--- a/info/drawing-with-metapost/src/dynamic-labels.pdf
+++ b/info/drawing-with-metapost/src/trad-dynamic-labels.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/euler-sampler.mp b/info/drawing-with-metapost/src/trad-euler-sampler.mp
index 72101fb1da..72101fb1da 100644
--- a/info/drawing-with-metapost/src/euler-sampler.mp
+++ b/info/drawing-with-metapost/src/trad-euler-sampler.mp
diff --git a/info/drawing-with-metapost/src/euler-sampler.pdf b/info/drawing-with-metapost/src/trad-euler-sampler.pdf
index 1da31b1984..1da31b1984 100644
--- a/info/drawing-with-metapost/src/euler-sampler.pdf
+++ b/info/drawing-with-metapost/src/trad-euler-sampler.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/trad-greek-default-encoding.mp b/info/drawing-with-metapost/src/trad-greek-default-encoding.mp
new file mode 100644
index 0000000000..be5ebafe0b
--- /dev/null
+++ b/info/drawing-with-metapost/src/trad-greek-default-encoding.mp
@@ -0,0 +1,20 @@
+\documentclass[border=3mm]{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+ string ab, AB;
+ ab = ("" for i=11 upto 23: & char i endfor
+ & "o" for i=24 upto 33: & char i endfor);
+ AB = ("AB" & char 0 & char 1 & "EZH" & char 2 & "IK"
+ & char 3 & "MNO" & char 4 & char 5 & "P"
+ & char 6 & "T" & char 7 & char 8 & "X"
+ & char 9 & char 10);
+
+ draw ab infont "cmmi10";
+ draw AB infont "cmmi10" shifted 12 down;
+ draw ab infont "eurm10" shifted 32 down;
+ draw AB infont "eurm10" shifted 44 down;
+endfig;
+\end{mplibcode}
+\end{document}
diff --git a/info/drawing-with-metapost/src/trad-greek-default-encoding.pdf b/info/drawing-with-metapost/src/trad-greek-default-encoding.pdf
new file mode 100644
index 0000000000..ba18279766
--- /dev/null
+++ b/info/drawing-with-metapost/src/trad-greek-default-encoding.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/greek-gfs-encoding.mp b/info/drawing-with-metapost/src/trad-greek-gfs-encoding.mp
index fbdcdcc513..30f4a97636 100644
--- a/info/drawing-with-metapost/src/greek-gfs-encoding.mp
+++ b/info/drawing-with-metapost/src/trad-greek-gfs-encoding.mp
@@ -1,14 +1,14 @@
-\documentclass{standalone}
+\documentclass[border=3mm]{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
-beginfig(2);
+beginfig(1);
string ab, AB;
ab = "abgdezhjiklmnoxprstufqyw";
AB = "ABGDEZHJIKLMNOXPRSTUFQYW";
y := 0;
for $="grmn1000", "gporsonrg6r", "gneohellenicrg6r":
- draw $ infont "cmss10" scaled 0.8 shifted (0,y) withcolor .67 red;
+ draw ("draw ab infont " & ditto & $ & ditto) infont "texnansi-lmtt10" scaled 0.8 shifted (0,y) withcolor .67 red;
draw ab infont $ shifted (0,y-10);
draw AB infont $ shifted (0,y-22);
y := y - 40;
diff --git a/info/drawing-with-metapost/src/greek-gfs-encoding.pdf b/info/drawing-with-metapost/src/trad-greek-gfs-encoding.pdf
index 383e3a63df..0f6f69488e 100644
--- a/info/drawing-with-metapost/src/greek-gfs-encoding.pdf
+++ b/info/drawing-with-metapost/src/trad-greek-gfs-encoding.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/greek-homer.mp b/info/drawing-with-metapost/src/trad-greek-homer.mp
index 0a872fe16e..0a872fe16e 100644
--- a/info/drawing-with-metapost/src/greek-homer.mp
+++ b/info/drawing-with-metapost/src/trad-greek-homer.mp
diff --git a/info/drawing-with-metapost/src/greek-homer.pdf b/info/drawing-with-metapost/src/trad-greek-homer.pdf
index f455cf1a21..f455cf1a21 100644
--- a/info/drawing-with-metapost/src/greek-homer.pdf
+++ b/info/drawing-with-metapost/src/trad-greek-homer.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/infont-annotated.mp b/info/drawing-with-metapost/src/trad-infont-annotated.mp
index 670c1f12b5..670c1f12b5 100644
--- a/info/drawing-with-metapost/src/infont-annotated.mp
+++ b/info/drawing-with-metapost/src/trad-infont-annotated.mp
diff --git a/info/drawing-with-metapost/src/infont-annotated.pdf b/info/drawing-with-metapost/src/trad-infont-annotated.pdf
index acc76a9f1d..c54d20cf9b 100644
--- a/info/drawing-with-metapost/src/infont-annotated.pdf
+++ b/info/drawing-with-metapost/src/trad-infont-annotated.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/infont-example.mp b/info/drawing-with-metapost/src/trad-infont-example.mp
index 0b2a4d965b..0b2a4d965b 100644
--- a/info/drawing-with-metapost/src/infont-example.mp
+++ b/info/drawing-with-metapost/src/trad-infont-example.mp
diff --git a/info/drawing-with-metapost/src/infont-example.pdf b/info/drawing-with-metapost/src/trad-infont-example.pdf
index 1e772668cc..1e772668cc 100644
--- a/info/drawing-with-metapost/src/infont-example.pdf
+++ b/info/drawing-with-metapost/src/trad-infont-example.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/minus.mp b/info/drawing-with-metapost/src/trad-minus.mp
index ebf8f8cb04..e7a4584d45 100644
--- a/info/drawing-with-metapost/src/minus.mp
+++ b/info/drawing-with-metapost/src/trad-minus.mp
@@ -1,4 +1,4 @@
-\documentclass[border=2mm]{standalone}
+\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
diff --git a/info/drawing-with-metapost/src/minus.pdf b/info/drawing-with-metapost/src/trad-minus.pdf
index 05d57963b4..05d57963b4 100644
--- a/info/drawing-with-metapost/src/minus.pdf
+++ b/info/drawing-with-metapost/src/trad-minus.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/porson.mp b/info/drawing-with-metapost/src/trad-porson.mp
index 59ac82181b..59ac82181b 100644
--- a/info/drawing-with-metapost/src/porson.mp
+++ b/info/drawing-with-metapost/src/trad-porson.mp
diff --git a/info/drawing-with-metapost/src/porson.pdf b/info/drawing-with-metapost/src/trad-porson.pdf
index 7a26026f46..7a26026f46 100644
--- a/info/drawing-with-metapost/src/porson.pdf
+++ b/info/drawing-with-metapost/src/trad-porson.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/split-labels.mp b/info/drawing-with-metapost/src/trad-split-labels.mp
index ca298e5e99..78006abd2a 100644
--- a/info/drawing-with-metapost/src/split-labels.mp
+++ b/info/drawing-with-metapost/src/trad-split-labels.mp
@@ -1,8 +1,7 @@
-\documentclass[border=0mm]{standalone}
+\documentclass{standalone}
\usepackage{luamplib}
\def\s#1{\let\\\cr\vbox{\halign{\hfil\strut ##\hfil\cr#1\crcr}}}
\begin{document}
-\mplibtextextlabel{enable}
\begin{mplibcode}
input colorbrewer-rgb
beginfig(1);
diff --git a/info/drawing-with-metapost/src/split-labels.pdf b/info/drawing-with-metapost/src/trad-split-labels.pdf
index d1a1ba6fd5..c2029e350b 100644
--- a/info/drawing-with-metapost/src/split-labels.pdf
+++ b/info/drawing-with-metapost/src/trad-split-labels.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/utf8.mp b/info/drawing-with-metapost/src/trad-utf8.mp
index 5606860388..abccfd5a07 100644
--- a/info/drawing-with-metapost/src/utf8.mp
+++ b/info/drawing-with-metapost/src/trad-utf8.mp
@@ -2,10 +2,7 @@
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
-beginfig(1);
-
def U primary s = if string s: decode(s) fi enddef;
-
vardef decode(expr given) =
save a,b,i,s,out; string s, out; numeric a, b, i;
out = ""; i=0;
@@ -25,11 +22,11 @@ vardef decode(expr given) =
out
enddef;
beginfig(2);
- draw "café noir £2.50" infont "pncr8r";
- draw U"café noir £2.50" infont "pncr8r" shifted 12 down;
- defaultfont := "pncr8r";
- label.rt("café noir £2.50", 24 down);
- label.rt(U"café noir £2.50", 36 down);
+draw "café noir £2.50" infont "ptmr8r";
+draw decode("café noir £2.50") infont "ptmr8r" shifted 12 down;
+defaultfont := "pncr8r";
+label.rt("café noir £2.50", 24 down);
+label.rt(decode("café noir £2.50"), 36 down);
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/trad-utf8.pdf b/info/drawing-with-metapost/src/trad-utf8.pdf
new file mode 100644
index 0000000000..9b8e6ab907
--- /dev/null
+++ b/info/drawing-with-metapost/src/trad-utf8.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/verbatim-listing.mp b/info/drawing-with-metapost/src/trad-verbatim-listing.mp
index 448246aac3..5c4102b7a8 100644
--- a/info/drawing-with-metapost/src/verbatim-listing.mp
+++ b/info/drawing-with-metapost/src/trad-verbatim-listing.mp
@@ -1,30 +1,26 @@
-prologues := 3;
-outputtemplate := "%j.eps";
+prologues := 3; outputtemplate := "%j.eps";
verbatimtex
\documentclass{article}
\usepackage{listings}
-\newcommand\mpstyle{\lstset{
-language=Metapost, basicstyle=\ttfamily,
-frame=none, columns=fullflexible,
-keepspaces=true, showstringspaces=false}}
+\usepackage{xcolor}
+\newcommand\mpstyle{\lstset{language=Metapost,
+basicstyle=\ttfamily,columns=fullflexible,commentstyle=\color{red},
+frame=none,keepspaces=true,showstringspaces=false}}
\lstnewenvironment{code}[1][]{\mpstyle\lstset{#1}}{}
\begin{document}
etex
beginfig(1);
-picture P;
-P = thelabel(btex \vbox{\begin{code}
+picture P; P = thelabel(btex \vbox{\begin{code}
% special operators
vardef incr suffix $ = $:=$+1; $ enddef;
vardef decr suffix $ = $:=$-1; $ enddef;
-
def reflectedabout(expr w,z) = % reflects about the line w..z
transformed begingroup transform T_;
w transformed T_ = w;
z transformed T_ = z;
xxpart T_ = -yypart T_;
xypart T_ = yxpart T_; % T_ is a reflection
- T_ endgroup enddef;
+ T_ endgroup enddef;
\end{code}} etex, origin);
fill bbox P withcolor (1,1,31/32); draw P; draw bbox P;
-endfig;
-end.
+endfig; end.
diff --git a/info/drawing-with-metapost/src/trad-verbatim-listing.pdf b/info/drawing-with-metapost/src/trad-verbatim-listing.pdf
new file mode 100644
index 0000000000..7b5286ce22
--- /dev/null
+++ b/info/drawing-with-metapost/src/trad-verbatim-listing.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/trad-verbatim-with-infont.mp b/info/drawing-with-metapost/src/trad-verbatim-with-infont.mp
new file mode 100644
index 0000000000..d912277b50
--- /dev/null
+++ b/info/drawing-with-metapost/src/trad-verbatim-with-infont.mp
@@ -0,0 +1,18 @@
+\documentclass{standalone}
+\usepackage{luamplib}
+\begin{document}
+\begin{mplibcode}
+beginfig(1);
+ string s; s = "\TeX\ sets maths like this $e=mc^2$";
+ draw ("1. " & s) infont defaultfont;
+ draw ("2. " & s) infont "texnansi-lmr10" shifted 20 down;
+ draw ("3. " & s) infont "cmtt10" shifted 40 down;
+ draw ("4. " & s) infont "texnansi-lmtt10" shifted 60 down;
+ bboxmargin := 14;
+ picture p; p = currentpicture;
+ fill bbox currentpicture withcolor (1,1,31/32);
+ draw p; draw bbox p;
+endfig;
+\end{mplibcode}
+\end{document}
+end.
diff --git a/info/drawing-with-metapost/src/trad-verbatim-with-infont.pdf b/info/drawing-with-metapost/src/trad-verbatim-with-infont.pdf
new file mode 100644
index 0000000000..0c7cfc5929
--- /dev/null
+++ b/info/drawing-with-metapost/src/trad-verbatim-with-infont.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/trigonometry-functions.mp b/info/drawing-with-metapost/src/trigonometry-functions.mp
new file mode 100644
index 0000000000..5883390aa5
--- /dev/null
+++ b/info/drawing-with-metapost/src/trigonometry-functions.mp
@@ -0,0 +1,49 @@
+numeric pi;
+% approximate value
+pi := 3.14159;
+% measure round a circular arc...
+pi := 1/4 arclength (quartercircle scaled 16);
+% up to 32 digits of precision
+pi := 3.1415926535897932384626433832795;
+% as many digits as are needed...
+vardef getpi =
+ save lasts, t, s, n, na, d, da;
+ lasts=0; s=t=3; n=1; na=0; d=0; da=24;
+ forever:
+ exitif lasts=s;
+ lasts := s;
+ n := n+na; na := na+8;
+ d := d+da; da := da+32;
+ t := t*n/d;
+ s := s+t;
+ endfor
+ s
+enddef;
+pi := getpi;
+
+% conversions
+def degrees(expr theta) = theta / pi * 180 enddef;
+def radians(expr theta) = theta / 180 * pi enddef;
+% trig functions that expect radians
+def sin(expr theta) = sind(degrees(theta)) enddef;
+def cos(expr theta) = cosd(degrees(theta)) enddef;
+% inverse trig functions
+def acosd(expr a) = angle (a,1+-+a) enddef;
+def asind(expr a) = angle (1+-+a,a) enddef;
+def acos(expr a) = radians(acosd(a)) enddef;
+def asin(expr a) = radians(asind(a)) enddef;
+% tangents
+vardef tand(expr theta) = save x,y; (x,y)=dir theta; y/x enddef;
+def atand(expr a) = angle (1,a) enddef;
+
+
+% tests - run with plain `mpost` and scaled numebr system
+show pi = 3.14159;
+show abs(degrees(1) - 57.29577951308232) < 2 eps;
+show radians(90) = 1/2 pi;
+show sin(1)**2 + cos(1)**2 = 1;
+show abs(acosd(1/2) - 60) < eps;
+show abs(asind(1/2) - 30) < eps;
+show tand(45) = 1;
+show atand(1) = 45;
+end
diff --git a/info/drawing-with-metapost/src/trisection-simple.mp b/info/drawing-with-metapost/src/trisection-simple.mp
deleted file mode 100644
index 8f55281efb..0000000000
--- a/info/drawing-with-metapost/src/trisection-simple.mp
+++ /dev/null
@@ -1,22 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
- path ray;
- numeric theta;
- ray = origin -- 200 right;
- theta = 42;
- draw ray;
- draw ray rotated 1/3 theta withcolor 2/3 red;
- draw ray rotated 2/3 theta withcolor 2/3 red;
- draw ray rotated theta;
- dotlabel.llft("$0$", origin);
- label("$\theta/3$", 72 right rotated 1/6 theta) withcolor 2/3 blue;
- label("$\theta/3$", 72 right rotated 3/6 theta) withcolor 2/3 blue;
- label("$\theta/3$", 72 right rotated 5/6 theta) withcolor 2/3 blue;
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/tufte-budget.mp b/info/drawing-with-metapost/src/tufte-budget.mp
index 6fd4c3ead1..f514dcf1a9 100644
--- a/info/drawing-with-metapost/src/tufte-budget.mp
+++ b/info/drawing-with-metapost/src/tufte-budget.mp
@@ -6,60 +6,41 @@
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
+input tufte-manila-paper
beginfig(1);
-path data, p;
-data = (1967, 311)
- -- (1968, 332)
- -- (1969, 372)
- -- (1970, 385)
- -- (1971, 385)
- -- (1972, 393)
- -- (1973, 387)
- -- (1974, 381)
- -- (1975, 387)
- -- (1976, 400)
- -- (1977, 380);
-
-numeric u, v;
-u = xpart urcorner textext("1980\kern 0.75em");
-v = 1.414;
-p = data shifted -(xpart point 0 of data, 300) xscaled u yscaled v;
-draw p;
-
-for d = 300 step 20 until 400:
- numeric y; y = (d - 300) * v;
+ path data; numeric n;
+ data = (1967, 311) -- (1968, 332) -- (1969, 372) -- (1970, 385)
+ -- (1971, 385) -- (1972, 393) -- (1973, 387) -- (1974, 381)
+ -- (1975, 387) -- (1976, 400) -- (1977, 380);
+ n = length data;
+ numeric u, v; path p; % make data --> p
+ u = xpart urcorner textext("1980\kern 0.75em"); v = 1.414;
+ p = data shifted -(xpart point 0 of data, 300) xscaled u yscaled v;
+ for i=0 upto n: z[i] = point i of p; endfor
+ for d = 300 step 20 until 400: % y-axis
+ numeric y; y = (d - 300) * v; draw (-8, y) -- (-12, y);
label.lft("\strut\scriptsize\$\,\small" & decimal d, (-12, y));
- draw (-8, y) -- (-12, y);
- if d > 370:
- draw (xpart point 3 of p, y) -- (xpart point infinity of p + 8, y)
- dashed evenly scaled 1/4 withpen pencircle scaled 1/4;
- fi
-endfor
-path a; a = (xpart point infinity of p + 21, (380 - 300) * v)
- -- (xpart point infinity of p + 21, (400 - 300) * v);
-interim ahangle := 180;
-interim ahlength := 2;
-drawdblarrow a withpen pencircle scaled 1/4;
-label("\small 5\%", point 1/2 of a shifted 12 right);
-
-for t=0 upto length p:
- numeric x, y; (x, y) = point t of p;
- undraw (x, y) withpen pencircle scaled 2 dotlabeldiam;
- draw (x, y) withpen pencircle scaled dotlabeldiam;
- draw (x, -8) -- (x, -12);
- label("\strut\small" & decimal xpart point t of data, (x, -20));
-endfor
-
-label.urt(btex \vbox{\halign{\small #\hfill\cr
-Per capita\cr budget expenditure\cr in constant dollars\cr}} etex,
-(0, (410 - 300) * v));
-
-picture p; p = currentpicture; currentpicture := nullpicture;
-bboxmargin := 12;
-fill bbox p withcolor 1/32(32, 32, 31);
-draw p;
-
+ endfor
+ path a, b, c; % annotating lines
+ a = (x3, y[n-1]) -- (x[n] + 8, y[n-1]);
+ b = (x3, y[n]) -- (x[n] + 8, y[n]);
+ c = (x[n] + 21, y[n]) -- (x[n] + 21, y[n-1]);
+ drawoptions(withpen pencircle scaled 1/4);
+ draw a dashed evenly scaled 1/4;
+ draw b dashed evenly scaled 1/4;
+ draw c;
+ for i=0,1: draw (left--right) scaled 2 shifted point i of c; endfor
+ label("\small 5\%", point 1/2 of c shifted 12 right);
+ drawoptions();
+ draw p; % the data points
+ for i = 0 upto n:
+ undraw z[i] withpen pencircle scaled 2 dotlabeldiam;
+ draw z[i] withpen pencircle scaled dotlabeldiam;
+ draw (x[i], -8) -- (x[i], -12);
+ label("\strut\small" & decimal xpart point i of data, (x[i], -20));
+ endfor
+ label.urt(btex \vbox{\halign{\small #\hfill\cr Per capita\cr
+ budget expenditure\cr in constant dollars\cr}} etex, (x0,y[n-1]+10v));
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/tufte-budget.pdf b/info/drawing-with-metapost/src/tufte-budget.pdf
index 9a369d27d1..9527862699 100644
--- a/info/drawing-with-metapost/src/tufte-budget.pdf
+++ b/info/drawing-with-metapost/src/tufte-budget.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tufte-currency.mp b/info/drawing-with-metapost/src/tufte-currency.mp
index 708f229696..bd469af94d 100644
--- a/info/drawing-with-metapost/src/tufte-currency.mp
+++ b/info/drawing-with-metapost/src/tufte-currency.mp
@@ -3,7 +3,7 @@
\usepackage{unicode-math}
\setmainfont[Numbers=OldStyle]{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}
-\def\tl#1{\vbox{\tiny\let\\\cr\halign{\hss ##\hss\cr#1\crcr}}}
+\def\tl#1{\vbox{\small\let\\\cr\halign{\hss ##\hss\cr#1\crcr}}}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
@@ -290,28 +290,66 @@ euro =
-- (base(2022, 02, 28), 83.827900)
-- (base(2022, 03, 31), 83.615400)
-- (base(2022, 04, 30), 83.557800)
- -- (base(2022, 05, 22), 84.892600)
+ -- (base(2022, 05, 31), 84.954600)
+ -- (base(2022, 06, 30), 85.784300)
+ -- (base(2022, 07, 31), 84.922300)
+ -- (base(2022, 08, 31), 84.566100)
+ -- (base(2022, 09, 30), 87.545600)
+ -- (base(2022, 10, 31), 87.084200)
+ -- (base(2022, 11, 30), 86.959400)
+ -- (base(2022, 12, 31), 86.945600)
+ -- (base(2023, 01, 31), 88.136600)
+ -- (base(2023, 02, 28), 88.710800)
+ -- (base(2023, 03, 31), 88.288100)
+ -- (base(2023, 04, 30), 88.306300)
+ -- (base(2023, 05, 31), 87.190600)
+ -- (base(2023, 06, 30), 85.824200)
+ -- (base(2023, 07, 31), 85.8333)
+ -- (base(2023, 08, 31), 85.9054)
+ -- (base(2023, 09, 30), 86.2139)
+ -- (base(2023, 10, 31), 86.8168)
+ -- (base(2023, 11, 30), 87.0744)
+ -- (base(2023, 12, 31), 86.2330)
+ -- (base(2024, 01, 31), 85.8814)
+ -- (base(2024, 02, 29), 85.4670)
+ -- (base(2024, 03, 31), 85.5549)
+ -- (base(2024, 04, 30), 85.6500)
+ -- (base(2024, 05, 31), 85.6277)
+ -- (base(2024, 06, 30), 84.7218)
+ -- (base(2024, 07, 31), 84.4672)
+ -- (base(2024, 08, 31), 85.1493)
+ -- (base(2024, 09, 30), 84.0409)
+ -- (base(2024, 10, 26), 83.5291)
;
-years = (base(1999, 01, 01), 1999) for y=2000 upto 2022: -- (base(y, 1, 1), y) endfor;
+years = (base(1999, 01, 01), 1999) for y=2000 upto 2025: -- (base(y, 1, 1), y) endfor;
+numeric u, v; u = 67; v = 5;
numeric offset;
offset = base(1999, 1, 1);
-euro := euro shifted -(offset, 0) xscaled 42 yscaled 3;
-years := years shifted -(offset, 0) xscaled 42;
+euro := euro shifted -(offset, 0) xscaled u yscaled v;
+years := years shifted -(offset, 0) xscaled u;
+input tufte-manila-paper
beginfig(1);
-draw euro withcolor 3/4 blue;
-numeric baseline; baseline = 54*3;
-draw (xpart point 0 of euro, baseline) -- (xpart point infinity of euro, baseline);
+
+draw euro
+ withpen pencircle scaled 1/4 withcolor 3/4;
+for t=0 upto length euro: draw point t of euro
+ withpen pencircle scaled if t mod 12 = 0: 3/2 else: 1 fi
+ withcolor 3/4 blue; endfor
+numeric baseline_height; baseline_height = 54v;
+draw (xpart point 0 of euro, baseline_height) -- (xpart point infinity of euro, baseline_height);
for t = 1 upto length years:
- numeric x, y, q; (x, y) = point t of years; 4q = xpart (point t-1 of years - point t of years);
- draw (x, baseline) -- (x, baseline + 4);
+ numeric x, y, q;
+ (x, y) = point t of years;
+ 4q = xpart (point t-1 of years - point t of years);
+ draw (x, baseline_height) -- (x, baseline_height + 4);
for i=1 upto 3:
- draw (x + i*q, baseline) -- (x + i*q, baseline + 2);
+ draw (x + i*q, baseline_height) -- (x + i*q, baseline_height + 2);
endfor
if not odd y:
- label.bot("\small\strut " & decimal y, (x, baseline));
+ label.bot("\small\strut " & decimal y, (x, baseline_height));
fi
endfor
numeric minx, miny, maxx, maxy;
@@ -322,42 +360,45 @@ for i=0 upto length euro:
if y > maxy: maxy := y; maxx := x; fi
if y < miny: miny := y; minx := x; fi
endfor
-draw (2 up -- up) scaled 2 shifted (maxx, maxy) withcolor red;
-draw (2 down -- down) scaled 2 shifted (minx, miny) withcolor red;
+fill ((0,1)--(1,4)--(-1,4)--cycle) scaled 2 shifted (maxx, maxy) withcolor 1/2 green;
+fill ((0,-1)--(1,-4)--(-1,-4)--cycle) scaled 2 shifted (minx, miny) withcolor 3/4 red;
-numeric left_axis, right_axis; left_axis = -16; right_axis = 368;
+numeric left_axis_x, right_axis_x;
+left_axis_x = xpart point 0 of euro - 24;
+right_axis_x = xpart point infinity of euro + 24;
-draw (left_axis, miny) -- (left_axis, maxy);
+draw (left_axis_x, miny) -- (left_axis_x, maxy);
for y = 60 step 10 until 100:
- draw (left_axis, 3y) -- (left_axis + 2, 3y);
- label.lft("\small\strut " & if y < 100: "0." & decimal y else: "1.00" fi, (left_axis, 3y));
+ draw (left_axis_x, y * v) -- (left_axis_x + 2, y * v);
+ label.lft("\small\strut " & if y < 100: "0." & decimal y else: "1.00" fi, (left_axis_x, y * v));
endfor
-draw (right_axis, miny) -- (right_axis, maxy);
+draw (right_axis_x, miny) -- (right_axis_x, maxy);
for eur = 100 step 10 until 170:
numeric y; y = 100/eur * 100;
- draw (right_axis, 3y) -- (right_axis - 2, 3y);
- label.rt("\small\strut " & if eur=100: "1.00" else: "1." & decimal (eur mod 100) fi, (right_axis, 3y));
+ draw (right_axis_x, y * v) -- (right_axis_x - 2, y * v);
+ label.rt("\small\strut " & if eur=100: "1.00" else: "1." & decimal (eur mod 100) fi, (right_axis_x, y * v));
endfor
-label.top("\small £/€", (left_axis - 10, 310));
-label.top("\small €/£", (right_axis + 10, 310));
-
-interim dotlabeldiam := 3/2;
-dotlabel.top("\tiny Creation", (base(1999, 1, 1) - offset, 71) xscaled 42 yscaled 3);
-dotlabel.top("\tiny 9/11", (base(2001, 9, 11) - offset, 64) xscaled 42 yscaled 3);
-dotlabel.lrt("\tl{Lehmans\\collapse}", (base(2008, 9, 15) - offset, 77) xscaled 42 yscaled 3);
-dotlabel.lrt("\tl{Brexit\\vote}", (base(2016, 6, 24) - offset, 77) xscaled 42 yscaled 3);
-dotlabel.bot("\tl{UK leaves\\EU}", (base(2020, 1, 31) - offset, 83) xscaled 42 yscaled 3);
-dotlabel.top("\tl{WHO declares\\pandemic}", (base(2020, 3, 11) - offset, 91) xscaled 42 yscaled 3);
-dotlabel.bot("\tl{Ukraine\\invaded}", (base(2022, 2, 24) - offset, 82.5) xscaled 42 yscaled 3);
+label.ulft("\small £/€", (left_axis_x, 103v));
+label.urt ("\small €/£", (right_axis_x, 103v));
+label.top("Monthly average exchange rates Euro v.\@ Sterling", (1/2 left_axis_x + 1/2 right_axis_x, 103v));
+vardef event_label@#(expr t, z) =
+ fill unitsquare shifted -(1/2,1/2) rotated 45 scaled 2 shifted z;
+ label@#(t, z);
+enddef;
-picture p; p = currentpicture; currentpicture := nullpicture;
-bboxmargin := 12;
-fill bbox p withcolor 1/32(32, 32, 31);
-draw p;
+event_label.top("\small Creation", (base(1999, 1, 1) - offset, 71) xscaled u yscaled v);
+event_label.top("\small 9/11", (base(2001, 9, 11) - offset, 64) xscaled u yscaled v);
+event_label.lrt("\tl{US / UK\\invade Iraq}", (base(2003, 3, 20) - offset, 64) xscaled u yscaled v);
+event_label.lrt("\tl{Lehmans\\collapse}", (base(2008, 9, 15) - offset, 77) xscaled u yscaled v);
+event_label.lrt("\tl{Brexit\\vote}", (base(2016, 6, 24) - offset, 77) xscaled u yscaled v);
+event_label.bot("\tl{UK leaves\\EU}", (base(2020, 1, 31) - offset, 83) xscaled u yscaled v);
+event_label.top("\tl{WHO declares\\pandemic}", (base(2020, 3, 11) - offset, 91) xscaled u yscaled v);
+event_label.bot("\tl{Ukraine\\invaded}", (base(2022, 2, 24) - offset, 82.5) xscaled u yscaled v);
+input show_name
endfig;
\end{mplibcode}
\end{document}
diff --git a/info/drawing-with-metapost/src/tufte-currency.pdf b/info/drawing-with-metapost/src/tufte-currency.pdf
index 18bb4f461b..43b69eac68 100644
--- a/info/drawing-with-metapost/src/tufte-currency.pdf
+++ b/info/drawing-with-metapost/src/tufte-currency.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tufte-manila-paper.mp b/info/drawing-with-metapost/src/tufte-manila-paper.mp
new file mode 100644
index 0000000000..97805eefbe
--- /dev/null
+++ b/info/drawing-with-metapost/src/tufte-manila-paper.mp
@@ -0,0 +1,3 @@
+extra_beginfig := "background := (1,1,31/32);";
+extra_endfig := "picture p; p = currentpicture; clearit;"
+ & "bboxmargin := 12; unfill bbox p; draw p;";
diff --git a/info/drawing-with-metapost/src/tufte-mpg.mp b/info/drawing-with-metapost/src/tufte-mpg.mp
index ab52f8336f..6d33009c13 100644
--- a/info/drawing-with-metapost/src/tufte-mpg.mp
+++ b/info/drawing-with-metapost/src/tufte-mpg.mp
@@ -1,55 +1,38 @@
\documentclass{standalone}
\usepackage{luamplib}
-\usepackage{unicode-math}
+\mplibtextextlabel{enable}
+\usepackage{fontspec}
\setmainfont[Numbers=OldStyle]{TeX Gyre Pagella}
-\setmathfont{TeX Gyre Pagella Math}
\begin{document}
-\mplibtextextlabel{enable}
\begin{mplibcode}
+input tufte-manila-paper
beginfig(1);
-path data, p;
-data = (1978, 18)
- -- (1979, 19)
- -- (1980, 20)
- -- (1981, 22)
- -- (1982, 24)
- -- (1983, 26)
- -- (1984, 27)
- -- (1985, 27.5);
-numeric u, v;
-u = xpart urcorner textext("1980\kern 0.75em");
-v = 8;
-p = data shifted -(xpart point 0 of data, 0) xscaled u yscaled v;
-draw (xpart point 0 of p, 20) -- p -- (xpart point infinity of p, 20);
-draw (xpart point 0 of p, 0) -- (xpart point infinity of p, 0);
+path data, p; numeric n, u, v;
+data = (1978, 18) -- (1979, 19) -- (1980, 20) -- (1981, 22) --
+ (1982, 24) -- (1983, 26) -- (1984, 27) -- (1985, 27.5);
+u = xpart urcorner textext("1980\quad"); v = 7;
+p = data shifted -(1978, 0) xscaled u yscaled v;
-for t=0 upto length p:
- numeric x, y; (x, y) = point t of p;
- undraw (x, y) withpen pencircle scaled 2 dotlabeldiam;
- draw (x, y) withpen pencircle scaled dotlabeldiam;
- label("\strut" & decimal ypart point t of data, (x, y + 8));
- draw (x, 0) -- (x, 4);
- label("\strut" & decimal xpart point t of data, (x, 12));
+draw p;
+for i=0 upto length p:
+ z[i] = point i of p;
+ undraw z[i] withpen pencircle scaled 2 dotlabeldiam;
+ dotlabel.top("\strut" & decimal ypart point i of data, z[i]);
+ label("\strut" & decimal xpart point i of data, (x[i], 12));
+ draw (x[i], 0) -- (x[i], 4);
endfor
+draw (x0, 20) -- z0; draw (x7, 20) -- z7; draw (x0, 0) -- (x7, 0);
dotlabel.rt(btex \vbox to 6pt{\halign{\small #\hss\cr
-13.7 mpg, average\cr for all cars on\cr road, 1978\cr}\vss} etex,
-(xpart point 0 of p, 13.7v));
+ 13.7 mpg, average\cr for all cars on\cr road, 1978\cr
+ }\vss} etex, (x0, 13.7v));
dotlabel.lft(btex \vbox to 6pt{\halign{\small #\hss\cr
-19.5 mpg, expected\cr average for all cars\cr on road, 1985\cr}\vss} etex,
-(xpart point infinity of p, 19.5v));
-
+ 19.5 mpg, expected\cr average for all cars\cr on road, 1985\cr
+ }\vss} etex, (x7, 19.5v));
label.top(btex \vbox{\halign{\hss\textsc{#}\hss\cr
-required fuel economy standards:\cr
-new cars built from 1978 to 1985\cr}} etex,
-point 5/2 of bbox currentpicture shifted 21 up);
-
-picture p; p = currentpicture; currentpicture := nullpicture;
-bboxmargin := 12;
-fill bbox p withcolor 1/32(32, 32, 31);
-draw p;
-
+ required fuel economy standards:\cr
+ new cars built from 1978 to 1985\cr}} etex,
+ point 5/2 of bbox currentpicture shifted 13 up);
endfig;
\end{mplibcode}
\end{document}
-
diff --git a/info/drawing-with-metapost/src/tufte-mpg.pdf b/info/drawing-with-metapost/src/tufte-mpg.pdf
index 7eac49d2b4..e47d26d17c 100644
--- a/info/drawing-with-metapost/src/tufte-mpg.pdf
+++ b/info/drawing-with-metapost/src/tufte-mpg.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tufte-snow.mp b/info/drawing-with-metapost/src/tufte-snow.mp
new file mode 100644
index 0000000000..43df7b435e
--- /dev/null
+++ b/info/drawing-with-metapost/src/tufte-snow.mp
@@ -0,0 +1,67 @@
+\documentclass{standalone}
+\usepackage{fontspec}
+\setmainfont[Numbers=OldStyle]{TeX Gyre Pagella}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+input tufte-manila-paper
+beginfig(1);
+
+numeric i, deaths[], ymax, dmax; i = 0; dmax = 0;
+for n = 1,
+ 0, 2, 0, 0, 2, 0, 0,
+ 1, 0, 1, 2, 3,70,127,
+ 76,71,45,37,32,30,24,
+ 18,15, 6,13, 6, 8, 6,
+ 5, 2, 3, 0, 0, 2, 3,
+ 0, 0, 2, 0, 2, 1, 0:
+ deaths[incr i] = n; if n > dmax: dmax := n; fi
+endfor
+numeric ymax; ymax = 20 * ceiling (dmax / 20);
+numeric days, day_number[]; days = 0;
+for n = 19,
+ 20,21,22,23,24,25,26,
+ 27,28,29,30,31, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9,
+ 10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,30:
+ day_number[incr days] = n;
+endfor
+numeric u, v; days * u = 5in = ymax * 2v;
+path xx; xx = origin -- (days * u, 0); draw xx;
+path yy; yy = origin -- (0, dmax * v); draw yy;
+for x = 1 upto days:
+ cutdraw (x * u, 0) -- (x * u, deaths[x] * v)
+ withpen pencircle scaled 2 withcolor 5/8[2/3 red, white];
+ draw (origin -- 2 down) shifted (x * u, 0);
+ if x mod 7 = 2: label.bot("\small" & decimal day_number[x], (x*u, -2)); fi
+ if x = 1: label.lrt("\small August", (x * u + 1, -12));
+ elseif x = 15: label.lrt("\small September", (x * u + 1/2 u, -12));
+ fi
+endfor
+for y = 10 step 10 until ymax:
+ draw (origin -- 2 left) shifted (0, y * v);
+ undraw xx shifted (0, y * v) withpen pencircle scaled 1/2;
+ if y mod 20 = 0: label.lft(decimal y, (-2, y * v)); fi
+endfor
+
+label.lrt(btex \vbox{\openup 0pt\halign{#\hss\cr
+Deaths from\cr cholera, each\cr day during\cr the epidemic\cr
+}} etex, (u, ymax * v + 6));
+
+z0 = (21u, deaths[21] * v ) shifted 2 up;
+z1 = z0 shifted (13, 34);
+draw z0 -- z1 withpen pencircle scaled 1/4;
+label.urt(btex \vbox{\openup 0pt\halign{#\hss\cr
+Handle removed from\cr
+the Broad Street pump,\cr
+Friday 8 September 1854\cr
+}} etex, z1 shifted 17 left);
+
+input show_name
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tufte-snow.pdf b/info/drawing-with-metapost/src/tufte-snow.pdf
new file mode 100644
index 0000000000..30e1a000c4
--- /dev/null
+++ b/info/drawing-with-metapost/src/tufte-snow.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/tufte-srm-damage.mp b/info/drawing-with-metapost/src/tufte-srm-damage.mp
new file mode 100644
index 0000000000..c44b647583
--- /dev/null
+++ b/info/drawing-with-metapost/src/tufte-srm-damage.mp
@@ -0,0 +1,115 @@
+\documentclass{standalone}
+\usepackage{fontspec}
+\setmainfont[Numbers=OldStyle]{TeX Gyre Pagella}
+\usepackage{luamplib}
+\begin{document}
+\mplibtextextlabel{enable}
+\begin{mplibcode}
+
+% 1985-01-24 51-C 53° 11
+% 1984-02-03 41-B 57° 4
+% 1986-01-12 61-C 58° 4
+% 1984-04-06 41-C 63° 2
+% 1981-04-12 1 66° 0
+% 1983-04-04 6 67° 0
+% 1984-11-08 51-A 67° 0
+% 1985-04-12 51-D 67° 0
+% 1982-11-11 5 68° 0
+% 1982-03-22 3 69° 0
+% 1981-11-12 2 70° 4
+% 1983-11-28 9 70° 0
+% 1984-08-30 41-D 70° 4
+% 1985-06-17 51-G 70° 0
+% 1983-06-18 7 72° 0
+% 1983-08-30 8 73° 0
+% 1985-04-29 51-B 75° 0
+% 1985-10-30 61-A 75° 4
+% 1985-08-27 51-I 76° 0
+% 1985-11-26 61-B 76° 0
+% 1984-10-05 41-G 78° 0
+% 1985-10-03 51-J 79° 0
+% 1982-06-27 4 80° ?
+% 1985-07-29 51-F 81° 0
+
+numeric r; r = 1/5; % adjustment of the marks where required...
+path damage; damage = origin ..
+(53, 11)..
+(57, 4)..
+(58, 4)..
+(63, 2)..
+(66, 0)..
+(67, 0 + 2r)..
+(67, 0)..
+(67, 0 - 2r)..
+(68, 0)..
+(69, 0)..
+(70, 4 + r)..
+(70, 0 + r)..
+(70, 4 - r)..
+(70, 0 - r)..
+(72, 0)..
+(73, 0)..
+(75, 0)..
+(75, 4)..
+(76, 0 + r)..
+(76, 0 - r)..
+(78, 0)..
+(79, 0)..
+(81, 0);
+
+input tufte-manila-paper
+beginfig(1);
+ numeric u, v; u = 10.8; 5u = 4v;
+ damage := damage xscaled u yscaled v;
+
+ path xx, yy;
+ xx = (25u, 0) -- (85u, 0);
+ yy = (0, 0) -- (0, 12v);
+
+ for y = 0, 4, 8, 12:
+ draw xx shifted (0, y * v) withpen pencircle scaled 1/4 withcolor 3/4;
+ label.lft(decimal y, (25u - 4, y * v));
+ label.rt (decimal y, (85u + 4, y * v));
+ endfor
+ for x = 25 step 5 until 85:
+ draw yy shifted (x * u, 0) withpen pencircle scaled 1/4 withcolor 3/4;
+ label(decimal x & "°", (x * u, -16));
+ endfor
+
+ for i = 1 upto length damage:
+ draw point i of damage
+ withpen pencircle scaled (3/2 r * v)
+ withcolor 2/3 red;
+ endfor
+
+ labeloffset := 8;
+ label.bot("\small SRM 15", point 1 of damage);
+ label.urt("\small SRM 22", point 18 of damage);
+
+ fill unitsquare shifted -(1/2, 1/2) xscaled 3.9u yscaled 3/8v
+ shifted (27.5u, 0)
+ withcolor 3/4[blue, white];
+
+ z0 = (27.5u, 0v); z1 = (31u, 3v);
+
+ ahlength := 2; ahangle := 30;
+ drawarrow z1 -- z0 cutafter xx shifted (0, 1/2 v)
+ withpen pencircle scaled 1/4 ;
+
+ label.rt(btex \vbox to 0pt{\vskip-6pt\openup 0pt\halign{\small #\hss\cr
+ 26°–29° range of forecast temperatures\cr
+ (as of 27 January 1986) for the launch\cr
+ of space shuttle Challenger on 28 January\cr
+ }\vss} etex, z1 shifted 2 left);
+
+ label.rt(btex \vbox to 0pt{\openup 2pt\halign{#\hss\cr
+ O-ring damage index,\cr
+ for each launch\cr
+ }\vss} etex, (23u, 14.4v));
+
+undraw point 1 of bbox currentpicture shifted 2 down;
+input show_name
+endfig;
+\end{mplibcode}
+\end{document}
+
diff --git a/info/drawing-with-metapost/src/tufte-srm-damage.pdf b/info/drawing-with-metapost/src/tufte-srm-damage.pdf
new file mode 100644
index 0000000000..96e8da9bdd
--- /dev/null
+++ b/info/drawing-with-metapost/src/tufte-srm-damage.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/twister.mp b/info/drawing-with-metapost/src/twister.mp
deleted file mode 100644
index 802d1a1ab8..0000000000
--- a/info/drawing-with-metapost/src/twister.mp
+++ /dev/null
@@ -1,31 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-input compass-rose
-input colorbrewer-rgb
-beginfig(1);
-picture O;
-O = compass_rose(Blues 8 8, Reds 8 7) scaled 1/2;
-%O = thelabel(TEX("\TeX"), origin) scaled 3;
-
-numeric s; pair p;
-s = 108;
-p = origin;
-draw O shifted p; draw bbox O withcolor 3/4[red, white]; label.urt("\small\texttt{bbox P}", point -1 of bbox O) withcolor 3/4[red, white];
-p := (1s, 0); draw O rotated 30 shifted p; label("\small\texttt{rotated 30}", p shifted 54 down);
-p := (2s,+15); draw O shifted p; label("\small\texttt{shifted 15 up}", p shifted 54 down);
-
-p := ( 0, -1s); draw O scaled 3/4 shifted p; label("\small\texttt{scaled 3/4}", p shifted 54 down);
-p := (1s, -1s); draw O xscaled 3/4 shifted p; label("\small\texttt{xscaled 3/4}", p shifted 54 down);
-p := (2s, -1s); draw O yscaled 3/4 shifted p; label("\small\texttt{yscaled 3/4}", p shifted 54 down);
-
-p := ( 0, -2s); draw O slanted 3/4 shifted p; label("\small\texttt{slanted 3/4}", p shifted 54 down);
-p := (1s, -2s); draw O zscaled 3/4 dir 21 shifted p; label("\small\texttt{zscaled 3/4 dir 21}", p shifted 54 down);
-p := (2s, -2s); draw O reflectedabout(up, down) shifted p; label("\small\texttt{reflectedabout(up, down)}", p shifted 54 down);
-
-endfig;
-\end{mplibcode}
-\end{document}
-
diff --git a/info/drawing-with-metapost/src/twister.pdf b/info/drawing-with-metapost/src/twister.pdf
deleted file mode 100644
index 24b6fd8341..0000000000
--- a/info/drawing-with-metapost/src/twister.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/utf8.pdf b/info/drawing-with-metapost/src/utf8.pdf
deleted file mode 100644
index 521f8dfc66..0000000000
--- a/info/drawing-with-metapost/src/utf8.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/verbatim-listing.pdf b/info/drawing-with-metapost/src/verbatim-listing.pdf
deleted file mode 100644
index 438c727086..0000000000
--- a/info/drawing-with-metapost/src/verbatim-listing.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/verbatim-with-infont.mp b/info/drawing-with-metapost/src/verbatim-with-infont.mp
deleted file mode 100644
index 7e4081a8e8..0000000000
--- a/info/drawing-with-metapost/src/verbatim-with-infont.mp
+++ /dev/null
@@ -1,13 +0,0 @@
-prologues := 3;
-outputtemplate := "%j.eps";
-beginfig(1);
- string s; s = "\TeX\ sets maths like this $e=mc^2$";
- draw ("1. " & s) infont defaultfont;
- draw ("2. " & s) infont "texnansi-lmr10" shifted 20 down;
- draw ("3. " & s) infont "cmtt10" shifted 40 down;
- draw ("4. " & s) infont "texnansi-lmtt10" shifted 60 down;
- bboxmargin := 14;
- picture p; p = currentpicture; fill bbox currentpicture withcolor (1,1,31/32); draw p;
- draw bbox p;
-endfig;
-end.
diff --git a/info/drawing-with-metapost/src/verbatim-with-infont.pdf b/info/drawing-with-metapost/src/verbatim-with-infont.pdf
deleted file mode 100644
index b2b3408c13..0000000000
--- a/info/drawing-with-metapost/src/verbatim-with-infont.pdf
+++ /dev/null
Binary files differ
diff --git a/info/drawing-with-metapost/src/whatever.mp b/info/drawing-with-metapost/src/whatever.mp
deleted file mode 100644
index 70b4678182..0000000000
--- a/info/drawing-with-metapost/src/whatever.mp
+++ /dev/null
@@ -1,48 +0,0 @@
-\documentclass[border=1mm]{standalone}
-\usepackage{luatex85}
-\usepackage{luamplib}
-\usepackage{dwmpcode}
-\mplibtextextlabel{enable}
-\begin{document}
-\hbox to 5.3in{$\vcenter{%
-\begin{mplibcode}
-beginfig(1);
- z1 = (10, 50);
- z2 = (80, 190);
- z3 = (0, 170);
- z4 = (60, 10);
-
- draw z1--z2;
- draw z3--z4;
-
- z0 = alpha [z1, z2] = beta [z3, z4];
-
- forsuffixes @=0,1,2,3,4:
- dotlabel.rt("$z_" & decimal @ & "$", z@)
- withcolor 2/3 if @=0: red else: blue fi;
- endfor
-
- %label.urt(decimal alpha, (x2, y0));
- %label.lrt(decimal beta, (x2, y0));
-
-endfig;
-\end{mplibcode}}
-\qquad\vcenter{
-\begin{code}
-beginfig(1);
- z1 = (10, 50);
- z2 = (80, 190);
- z3 = (0, 170);
- z4 = (60, 10);
-
- z0 = whatever [z1, z2] = whatever [z3, z4];
-
- draw z1--z2;
- draw z3--z4;
- forsuffixes @=0,1,2,3,4:
- dotlabel.rt("$z_" & decimal @ & "$", z@)
- withcolor 2/3 if @=0: red else: blue fi;
- endfor
-endfig;
-\end{code}}$\hss}
-\end{document}
diff --git a/info/drawing-with-metapost/src/workflow-plain.mp b/info/drawing-with-metapost/src/workflow-plain.mp
index 3d29b50e80..b2fc986f8e 100644
--- a/info/drawing-with-metapost/src/workflow-plain.mp
+++ b/info/drawing-with-metapost/src/workflow-plain.mp
@@ -32,13 +32,13 @@ beginfig(1);
drawarrow point 3/2 of bbox EPS -- point 7/2 of bbox pdf;
label.top("\texttt{epstopdf}", 1/2[center EPS, center pdf]);
- drawarrow center EPS -- center u
- cutbefore bbox EPS cutafter bbox u
- dashed withdots scaled 1/2;
+ % drawarrow center EPS -- center u
+ % cutbefore bbox EPS cutafter bbox u
+ % dashed withdots scaled 1/2;
- draw center EPS -- center p
- cutbefore bbox EPS cutafter bbox p
- dashed withdots scaled 1/2;
+ % draw center EPS -- center p
+ % cutbefore bbox EPS cutafter bbox p
+ % dashed withdots scaled 1/2;
endfig;
\end{mplibcode}
diff --git a/info/drawing-with-metapost/src/workflow-plain.pdf b/info/drawing-with-metapost/src/workflow-plain.pdf
index fc0eac7888..e055fc421b 100644
--- a/info/drawing-with-metapost/src/workflow-plain.pdf
+++ b/info/drawing-with-metapost/src/workflow-plain.pdf
Binary files differ
diff --git a/info/drawing-with-metapost/src/xypic-example.mp b/info/drawing-with-metapost/src/xypic-example.mp
deleted file mode 100644
index 074014c82c..0000000000
--- a/info/drawing-with-metapost/src/xypic-example.mp
+++ /dev/null
@@ -1,53 +0,0 @@
-\documentclass{standalone}
-\usepackage{luamplib}
-\begin{document}
-\mplibtextextlabel{enable}
-\begin{mplibcode}
-beginfig(1);
-
- picture U, XY, X, Y, Z;
- z1 = -z2 = (-61, 42);
-
- U = thelabel("$U$", z1);
- XY = thelabel("$X\times_ZY$", origin);
- X = thelabel("$X$", (x2, 0));
- Y = thelabel("$Y$", (0, y2));
- Z = thelabel("$Z$", z2);
-
- forsuffixes @=U, XY, X, Y, Z: draw @; endfor
-
- ahangle := 20;
- vardef connect@#(expr s, a, b) =
- curved_connect@#(s, a, b, center b - center a)
- enddef;
-
- vardef curved_connect@#(expr s, a, b, d) =
- save line, mark;
-
- path line;
- line = center a {d} .. center b;
- interim bboxmargin := 4;
- drawarrow line cutbefore bbox a cutafter bbox b;
-
- picture mark;
- mark = thelabel@#("$\scriptstyle " & s & "$", point 1/2 of line);
- interim bboxmargin := 1;
- unfill bbox mark; draw mark;
- enddef;
-
- connect.bot("p", XY, X);
- connect.rt ("q", XY, Y);
- connect.top("g", Y, Z);
- connect.lft("f", X, Z);
-
- curved_connect.urt("x", U, X, right);
- curved_connect.llft("y", U, Y, dir -80);
-
- drawoptions(dashed withdots scaled 1/2);
- connect("(x,y)", U, XY);
- drawoptions();
-
-
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/youth.mp b/info/drawing-with-metapost/src/youth.mp
deleted file mode 100644
index 77830d6629..0000000000
--- a/info/drawing-with-metapost/src/youth.mp
+++ /dev/null
@@ -1,12 +0,0 @@
-\documentclass[border=5mm]{standalone}
-\usepackage{graphicx}
-\usepackage{luamplib}
-\begin{document}
-\begin{mplibcode}
-input picture_frame
-beginfig(1);
- picture F; F = thelabel(TEX("\includegraphics[width=200pt]{youth.jpg}"), origin);
- draw F; draw frame F;
-endfig;
-\end{mplibcode}
-\end{document}
diff --git a/info/drawing-with-metapost/src/youth.pdf b/info/drawing-with-metapost/src/youth.pdf
deleted file mode 100644
index ad0aee97ca..0000000000
--- a/info/drawing-with-metapost/src/youth.pdf
+++ /dev/null
Binary files differ
diff --git a/info/dtk-bibliography/README.md b/info/dtk-bibliography/README.md
index 49799b2fcf..e1439d6165 100644
--- a/info/dtk-bibliography/README.md
+++ b/info/dtk-bibliography/README.md
@@ -3,7 +3,7 @@
This package contains the bibliography for "Die TeXnische Komödie", the journal
of the German-speaking user group.
-It is updated on a quarterly basis, last update 2024-03-08: updated for issue 2024-01
+It is updated on a quarterly basis, last update 2024-09-14: updated for issue 2024-03
# How to produce dtk-bibliography.pdf
@@ -19,4 +19,4 @@ respectively the (local) texmf tree.
# License
-This material is subject to the LaTeX Project Public License 1.3c. \ No newline at end of file
+This material is subject to the LaTeX Project Public License 1.3c.
diff --git a/info/dtk-bibliography/dtk-bibliography.bib b/info/dtk-bibliography/dtk-bibliography.bib
index 27124f1df9..950746cc6e 100644
--- a/info/dtk-bibliography/dtk-bibliography.bib
+++ b/info/dtk-bibliography/dtk-bibliography.bib
@@ -19741,7 +19741,7 @@ to \LaTeX{} quickly and convincingly},
@article {dtk24.1:wehr:schulphysik,
author = {Wehr, Keno},
- title = {\LaTeX und Schulphysik 5: Mechanik und Astronomie},
+ title = {\LaTeX\ und Schulphysik 5: Mechanik und Astronomie},
journal = dtk,
volume = {36},
number = {1},
@@ -19812,4 +19812,228 @@ to \LaTeX{} quickly and convincingly},
keywords = {hinterbuehne}
}
+
+@article {dtk24.2:sievers:grusswort,
+ author = {Sievers, Martin},
+ title = {Grußwort},
+ journal = dtk,
+ volume = {36},
+ number = {2},
+ date = {2024},
+ month = {6},
+ pages = {4--5},
+ keywords = {grusswort}
+}
+
+
+@article {dtk24.2:schaa:protokoll,
+ author = {Schaa, Volker RW},
+ title = {Protokoll der 66. Mitgliederversammlung von Dante e.V. am 6. April 2024 im Goethe-Nationalmuseum in Weimar},
+ journal = dtk,
+ volume = {36},
+ number = {2},
+ date = {2024},
+ month = {6},
+ pages = {6--12},
+ keywords = {hinterbuehne}
+}
+
+
+@article {dtk24.2:gasmus:weimar,
+ author = {Gasmus, Henrik},
+ title = {Die diesjährige Frühjahrstagung von Dante e.V. vom 4.--6. April 2024 im Goethe-Nationalmuseum in Weimar},
+ journal = dtk,
+ volume = {36},
+ number = {2},
+ date = {2024},
+ month = {6},
+ pages = {13--24},
+ keywords = {hinterbuehne}
+}
+
+@article {dtk24.2:standtem:chemnitz,
+ author = {{Team Stand Dante e.V.}},
+ title = {Chemnitzer Linux-Tage 24},
+ journal = dtk,
+ volume = {36},
+ number = {2},
+ date = {2024},
+ month = {6},
+ pages = {24--25},
+ keywords = {hinterbuehne}
+}
+
+@article {dtk24.2:wehr:schulphysik,
+ author = {Wehr, Keno},
+ title = {\LaTeX und Schulphysik 6: Feldlinienbilder},
+ journal = dtk,
+ volume = {36},
+ number = {2},
+ date = {2024},
+ month = {2},
+ pages = {27--51},
+ keywords = {bretter}
+}
+
+
+@article {dtk24.2:mispelhorn:bilder,
+ author = {Mispelhorn, Ralf},
+ title = {Umgang mit Bildern},
+ journal = dtk,
+ volume = {36},
+ number = {2},
+ date = {2024},
+ month = {2},
+ pages = {51--58},
+ keywords = {bretter}
+}
+
+
+@article {dtk24.2:niepraschk:markdown,
+ author = {Niepraschk, Rolf},
+ title = {Von Markdown zu PDF},
+ journal = dtk,
+ volume = {36},
+ number = {2},
+ date = {2024},
+ month = {2},
+ pages = {59--64},
+ keywords = {bretter}
+}
+
+
+@article {dtk24.2:ramm:context,
+ author = {Ramm, Henning Hraban},
+ title = {ConTeXt kurz notiert},
+ journal = dtk,
+ volume = {36},
+ number = {2},
+ date = {2024},
+ month = {2},
+ pages = {64--68},
+ keywords = {fremdebuehne}
+}
+
+@article {dtk24.2:fenn:ctan,
+ author = {Fenn, Jürgen},
+ title = {Neue Pakete auf CTAN},
+ journal = dtk,
+ date = {2024},
+ volume = {36},
+ number = {2},
+ month = {6},
+ pages = {69--73},
+ keywords = {fremdebuehne}
+}
+
+
+@article {dtk24.3:sievers:grusswort,
+ author = {Sievers, Martin},
+ title = {Grußwort},
+ journal = dtk,
+ volume = {36},
+ number = {3},
+ date = {2024},
+ month = {9},
+ pages = {4},
+ keywords = {grusswort}
+}
+
+@article {dtk24.3:behrendt:bericht,
+ author = {Doris Behrendt},
+ title = {Bericht der Schatzmeisterin},
+ journal = dtk,
+ volume = {36},
+ number = {3},
+ date = {2024},
+ month = {9},
+ pages = {5--7},
+ keywords = {hinterbuehne}
+}
+
+@article {dtk24.3:neukirchen:einladung,
+ author = {Leah Neukirchen},
+ title = {Einladung zur Bay\TeX~2024 in Neu-Ulm},
+ journal = dtk,
+ volume = {36},
+ number = {3},
+ date = {2024},
+ month = {9},
+ pages = {8--9},
+ keywords = {hinterbuehne}
+}
+
+@article {dtk24.3:wehr:schulphysik,
+ author = {Wehr, Keno},
+ title = {\LaTeX und Schulphysik 7: Optik},
+ journal = dtk,
+ volume = {36},
+ number = {3},
+ date = {2024},
+ month = {9},
+ pages = {10--32},
+ keywords = {bretter}
+}
+
+@article {dtk24.3:ziegenhagen:diagrammbeispiel,
+ author = {Ziegenhagen, Uwe},
+ title = {Diagramme mit TikZ: Ein Beispiel},
+ journal = dtk,
+ volume = {36},
+ number = {3},
+ date = {2024},
+ month = {9},
+ pages = {32--38},
+ keywords = {bretter}
+}
+
+@article {dtk24.3:larsson:moloch,
+ author = {Larsson, Johann},
+ title = {Moloch: Die Wieder-Auferstehung des LaTeX-Beamer-Stils Metropolis},
+ journal = dtk,
+ volume = {36},
+ number = {3},
+ date = {2024},
+ month = {9},
+ pages = {39--47},
+ keywords = {bretter}
+}
+
+@article {dtk24.3:voss:jetbrains,
+ author = {Voß, Herbert},
+ title = {JetBrains Mono},
+ journal = dtk,
+ volume = {36},
+ number = {3},
+ date = {2024},
+ month = {9},
+ pages = {48--58},
+ keywords = {bretter}
+}
+
+
+@article {dtk24.3:ramm:context,
+ author = {Ramm, Henning Hraban},
+ title = {ConTeXt kurz notiert},
+ journal = dtk,
+ volume = {36},
+ number = {3},
+ date = {2024},
+ month = {9},
+ pages = {59--62},
+ keywords = {fremdebuehne}
+}
+
+@article {dtk24.3:fenn:ctan,
+ author = {Fenn, Jürgen},
+ title = {Neue Pakete auf CTAN},
+ journal = dtk,
+ date = {2024},
+ volume = {36},
+ number = {3},
+ month = {9},
+ pages = {63--66},
+ keywords = {fremdebuehne}
+}
+
@Comment{jabref-meta: databaseType:biblatex;}
diff --git a/info/dtk-bibliography/dtk-bibliography.pdf b/info/dtk-bibliography/dtk-bibliography.pdf
index cd39cc02e0..f77ccc648f 100644
--- a/info/dtk-bibliography/dtk-bibliography.pdf
+++ b/info/dtk-bibliography/dtk-bibliography.pdf
Binary files differ
diff --git a/info/dtk-bibliography/dtk-bibliography.tex b/info/dtk-bibliography/dtk-bibliography.tex
index 9aea81db0a..9eb85838e0 100644
--- a/info/dtk-bibliography/dtk-bibliography.tex
+++ b/info/dtk-bibliography/dtk-bibliography.tex
@@ -22,7 +22,7 @@
\begin{document}
-\noindent Compiled on \today~ for DTK 2024-01
+\noindent Compiled on \today~ for DTK 2024-03
\nocite{*}
diff --git a/info/install-latex-guide-zh-cn/README.md b/info/install-latex-guide-zh-cn/README.md
index 0aea05a14b..9ef9ee18b4 100644
--- a/info/install-latex-guide-zh-cn/README.md
+++ b/info/install-latex-guide-zh-cn/README.md
@@ -3,7 +3,7 @@
This package will introduce the operations related to installing TeX Live (introducing MacTeX in macOS), upgrading packages, and compiling simple documents on Windows 11, Ubuntu 22.04, and macOS systems, and mainly introducing command line operations.
At the same time, it briefly introduces the use of several common editors under different operating systems, and additionally adds some related content using Online LaTeX editor, e.g. [Overleaf](www.overleaf.com).
-Users are advised to read [texlive-en](https://www.tug.org/texlive/doc/texlive-en/texlive-en.pdf) and [lshort-zh-cn](http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf) for a more comprehensive understanding of the basic content.
+Users are advised to read [texlive-zh-cn](https://www.tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf) and [lshort-zh-cn](http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf) for a more comprehensive understanding of the basic content.
The code involved in this article also asks users to do more, don't simply copy and paste.
@@ -25,7 +25,7 @@ This work is released under the LaTeX Project Public License, v1.3c or later.
æœ¬æ–‡å°†ä»‹ç» Windows 11ã€Ubuntu 22.04 å’Œ macOS 系统中安装 TeX Live (macOS ä¸­ä»‹ç» MacTeX)ã€å‡çº§å®åŒ…ã€ç¼–译简易文档的相关æ“作, 并多以介ç»å‘½ä»¤è¡Œæ“作为主.
åŒæ—¶ç®€è¦ä»‹ç»ä¸åŒæ“作系统下几款常è§ç¼–辑器的使用方法, 并é¢å¤–补充了一些使用在线 LaTeX 编辑器, 如 [Overleaf](www.overleaf.com), 的相关内容.
-建议用户阅读 [texlive-en](https://www.tug.org/texlive/doc/texlive-en/texlive-en.pdf) å’Œ [lshort-zh-cn](http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf) 以更全é¢åœ°äº†è§£åŸºç¡€å†…容.
+建议用户阅读 [texlive-zh-cn](https://www.tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf) å’Œ [lshort-zh-cn](http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf) 以更全é¢åœ°äº†è§£åŸºç¡€å†…容.
本文所涉åŠåˆ°çš„代ç è¿˜è¯·ç”¨æˆ·å¤šå¤šåŠ¨æ‰‹, ä¸è¦ç®€å•åœ°å¤åˆ¶ç²˜è´´.
diff --git a/info/install-latex-guide-zh-cn/appendix/updateinfo.tex b/info/install-latex-guide-zh-cn/appendix/updateinfo.tex
index 2615af7b8e..16fb23ec17 100644
--- a/info/install-latex-guide-zh-cn/appendix/updateinfo.tex
+++ b/info/install-latex-guide-zh-cn/appendix/updateinfo.tex
@@ -2,11 +2,12 @@
\chapter{版本信æ¯}
-\section*{v2024.6.1}
+\section*{v2024.9.1}
\begin{itemize}
\item 添加镜åƒ
\item 修改对于ä¸å®‰è£…第三方安全软件的建议
+ \item Overleaf å‡çº§ä¸º 2024 版
\end{itemize}
\section*{v2024.4.1}
diff --git a/info/install-latex-guide-zh-cn/chapter/overleaf.tex b/info/install-latex-guide-zh-cn/chapter/overleaf.tex
index b35e59fe74..cad91ef833 100644
--- a/info/install-latex-guide-zh-cn/chapter/overleaf.tex
+++ b/info/install-latex-guide-zh-cn/chapter/overleaf.tex
@@ -16,8 +16,8 @@ Overleaf 是全çƒèŒƒå›´å†…首屈一指的在线 \LaTeX{} 编辑平å°.
Overleaf æ供了包括%
\href{https://cn.overleaf.com}{中文}%
在内的多ç§è¯­è¨€ä¾›ç”¨æˆ·ä½¿ç”¨.
-2023年9月6日,
-\href{https://www.overleaf.com/blog/tex-live-2023-now-available}{它将åŽå°çš„ \TeX{} Live å‡çº§ä¸º 2023 版本},
+2024年6月27日,
+\href{https://www.overleaf.com/blog/tex-live-2024-is-now-available}{它将åŽå°çš„ \TeX{} Live å‡çº§ä¸º 2024 版本},
åŒæ—¶,
\href{https://www.overleaf.com/blog/new-feature-select-your-tex-live-compiler-version}{Overleaf 还å…许用户自主选择项目中的 \TeX{} Live 版本}.
diff --git a/info/install-latex-guide-zh-cn/chapter/preface.tex b/info/install-latex-guide-zh-cn/chapter/preface.tex
index feef749555..1370585c74 100644
--- a/info/install-latex-guide-zh-cn/chapter/preface.tex
+++ b/info/install-latex-guide-zh-cn/chapter/preface.tex
@@ -29,7 +29,7 @@
本手册所涉åŠåˆ°çš„代ç éœ€ç»“åˆä¸Šä¸‹æ–‡è¯´æ˜Ž, ä¸èƒ½ç®€å•åœ°å¤åˆ¶ç²˜è´´. 红色文字都是å¯ç‚¹çš„超链接, å¯ç›´æŽ¥è·³è½¬.
\menu{èœå•} 表示软件èœå•. \keys{k} 表示键盘按键.
-建议用户阅读 \href{https://www.tug.org/texlive/doc/texlive-en/texlive-en.pdf}{texlive-en}
+建议用户阅读 \href{https://tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf}{texlive-zh-cn}
和 \href{http://mirrors.ctan.org/info/lshort/chinese/lshort-zh-cn.pdf}{lshort-zh-cn}
以更全é¢åœ°äº†è§£åŸºç¡€å†…容.
diff --git a/info/install-latex-guide-zh-cn/chapter/ubuntu.tex b/info/install-latex-guide-zh-cn/chapter/ubuntu.tex
index 2de534b695..e0e2bd8d90 100644
--- a/info/install-latex-guide-zh-cn/chapter/ubuntu.tex
+++ b/info/install-latex-guide-zh-cn/chapter/ubuntu.tex
@@ -166,7 +166,7 @@
\end{lstlisting}
刷新字体缓存.
这样一æ¥, \TeX{} Live 中的字体æ‰èƒ½å¤Ÿè¢«æ­£ç¡®è°ƒç”¨.
-更多内容请å‚考 \href{https://www.tug.org/texlive/doc/texlive-en/texlive-en.pdf}{texlive-en}.
+更多内容请å‚考 \href{https://tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf}{texlive-zh-cn}.
如果用户更改了安装路径,
è¦æ³¨æ„å°†
@@ -195,7 +195,7 @@
export MANPATH=~/texlive/2024/texmf-dist/doc/man:$MANPATH
export INFOPATH=~/texlive/2024/texmf-dist/doc/info:$INFOPATH
\end{lstlisting}
-有关字体的处ç†å˜ä¸º\footnote{这里并未使用 \href{https://www.tug.org/texlive/doc/texlive-en/texlive-en.pdf}{texlive-en} 中建议的路径 \texttt{\~/.fonts.conf.d/},
+有关字体的处ç†å˜ä¸º\footnote{这里并未使用 \href{https://tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf}{texlive-zh-cn} 中建议的路径 \texttt{\~/.fonts.conf.d/},
å› ä¸ºæ ¹æ® \href{https://www.freedesktop.org/software/fontconfig/fontconfig-user.html}{freedesktop} 的说法,
该路径已废弃,
故此处采用新的路径,
diff --git a/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf b/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
index 6bb0c3e4b9..af6f27ae4f 100644
--- a/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
+++ b/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
Binary files differ
diff --git a/info/knuth-hint/README.md b/info/knuth-hint/README.md
index 2871f31177..ae25729c4d 100644
--- a/info/knuth-hint/README.md
+++ b/info/knuth-hint/README.md
@@ -10,8 +10,8 @@ sources and their changes in parallel. Also included is the collection of
Although not all the texts here are written or maintained by Donald Knuth, it
is more convenient for everything to be collected in one place for reading and
searching. They all stem from the system that Knuth created. The central
-entry point is the ‘index’ file, with links to the individual HINT documents,
-either in HTML or in PDF format.
+entry point is the ‘index’ file, with links to the individual documents, either
+in HTML or in PDF format.
If you believe to have found anything that remains technically, historically,
typographically, or politically incorrect in any of these files, please feel
@@ -21,4 +21,4 @@ The “License†of the `knuth-hint` package is “Public Domain†and it cove
the contents of this package, _not_ the various (and varying) “free softwareâ€
licenses of the presented software codes.
-This is version “2.4†of the `knuth-hint` package — 2024-07-10, Andreas Scherer.
+This is version “2.5†of the `knuth-hint` package — 2024-08-12, Andreas Scherer.
diff --git a/info/knuth-hint/bibtex/bibtex-changes.hnt b/info/knuth-hint/bibtex/bibtex-changes.hnt
index af386a05bd..bb7320d22b 100644
--- a/info/knuth-hint/bibtex/bibtex-changes.hnt
+++ b/info/knuth-hint/bibtex/bibtex-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/bibtex/bibtex.hnt b/info/knuth-hint/bibtex/bibtex.hnt
index 5ab7689272..2e70fdd291 100644
--- a/info/knuth-hint/bibtex/bibtex.hnt
+++ b/info/knuth-hint/bibtex/bibtex.hnt
Binary files differ
diff --git a/info/knuth-hint/ctie/ctie-changes.hnt b/info/knuth-hint/ctie/ctie-changes.hnt
index f2d9da7747..bff1a33ee2 100644
--- a/info/knuth-hint/ctie/ctie-changes.hnt
+++ b/info/knuth-hint/ctie/ctie-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/ctie/ctie.hnt b/info/knuth-hint/ctie/ctie.hnt
index 24ba1efaff..dbe5f3f800 100644
--- a/info/knuth-hint/ctie/ctie.hnt
+++ b/info/knuth-hint/ctie/ctie.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/common-changes.hnt b/info/knuth-hint/cweb/common-changes.hnt
index de95e4b943..6ef8670957 100644
--- a/info/knuth-hint/cweb/common-changes.hnt
+++ b/info/knuth-hint/cweb/common-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/common.hnt b/info/knuth-hint/cweb/common.hnt
index 9a96197992..084fbabe82 100644
--- a/info/knuth-hint/cweb/common.hnt
+++ b/info/knuth-hint/cweb/common.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/ctangle-changes.hnt b/info/knuth-hint/cweb/ctangle-changes.hnt
index e6287e16af..296bf59faa 100644
--- a/info/knuth-hint/cweb/ctangle-changes.hnt
+++ b/info/knuth-hint/cweb/ctangle-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/ctangle.hnt b/info/knuth-hint/cweb/ctangle.hnt
index bf9129299a..79c6ac0553 100644
--- a/info/knuth-hint/cweb/ctangle.hnt
+++ b/info/knuth-hint/cweb/ctangle.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/ctwill.hnt b/info/knuth-hint/cweb/ctwill.hnt
index 204772d939..d623b5327a 100644
--- a/info/knuth-hint/cweb/ctwill.hnt
+++ b/info/knuth-hint/cweb/ctwill.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/cweave-changes.hnt b/info/knuth-hint/cweb/cweave-changes.hnt
index cbc875f35e..f50e1420b7 100644
--- a/info/knuth-hint/cweb/cweave-changes.hnt
+++ b/info/knuth-hint/cweb/cweave-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/cweave.hnt b/info/knuth-hint/cweb/cweave.hnt
index 0d86f94947..9ab844070a 100644
--- a/info/knuth-hint/cweb/cweave.hnt
+++ b/info/knuth-hint/cweb/cweave.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/cwebman.hnt b/info/knuth-hint/cweb/cwebman.hnt
index 2ec505001e..2b1c8a8bf6 100644
--- a/info/knuth-hint/cweb/cwebman.hnt
+++ b/info/knuth-hint/cweb/cwebman.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/refsort-changes.hnt b/info/knuth-hint/cweb/refsort-changes.hnt
index 0f6e69a63a..18ba229281 100644
--- a/info/knuth-hint/cweb/refsort-changes.hnt
+++ b/info/knuth-hint/cweb/refsort-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/refsort.hnt b/info/knuth-hint/cweb/refsort.hnt
index a1c52bc602..1b1c06b612 100644
--- a/info/knuth-hint/cweb/refsort.hnt
+++ b/info/knuth-hint/cweb/refsort.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/twinx-changes.hnt b/info/knuth-hint/cweb/twinx-changes.hnt
index 5c749f7622..8de68935e6 100644
--- a/info/knuth-hint/cweb/twinx-changes.hnt
+++ b/info/knuth-hint/cweb/twinx-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/cweb/twinx.hnt b/info/knuth-hint/cweb/twinx.hnt
index d56b7dc7c9..6b332e3b20 100644
--- a/info/knuth-hint/cweb/twinx.hnt
+++ b/info/knuth-hint/cweb/twinx.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.eight.hnt b/info/knuth-hint/errata/errata.eight.hnt
index 25d99a8313..e0fd74b016 100644
--- a/info/knuth-hint/errata/errata.eight.hnt
+++ b/info/knuth-hint/errata/errata.eight.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.eleven.hnt b/info/knuth-hint/errata/errata.eleven.hnt
index 3dbbcf25e9..4011a1fc29 100644
--- a/info/knuth-hint/errata/errata.eleven.hnt
+++ b/info/knuth-hint/errata/errata.eleven.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.five.hnt b/info/knuth-hint/errata/errata.five.hnt
index 36c678088c..449a9f9a04 100644
--- a/info/knuth-hint/errata/errata.five.hnt
+++ b/info/knuth-hint/errata/errata.five.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.four.hnt b/info/knuth-hint/errata/errata.four.hnt
index 995f7ee94c..c03760085c 100644
--- a/info/knuth-hint/errata/errata.four.hnt
+++ b/info/knuth-hint/errata/errata.four.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.hnt b/info/knuth-hint/errata/errata.hnt
index 49cd9b214c..8cc4f643bb 100644
--- a/info/knuth-hint/errata/errata.hnt
+++ b/info/knuth-hint/errata/errata.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.nine.hnt b/info/knuth-hint/errata/errata.nine.hnt
index 10923cbe63..9c8d455e04 100644
--- a/info/knuth-hint/errata/errata.nine.hnt
+++ b/info/knuth-hint/errata/errata.nine.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.one.hnt b/info/knuth-hint/errata/errata.one.hnt
index ebc91808cc..f33068e118 100644
--- a/info/knuth-hint/errata/errata.one.hnt
+++ b/info/knuth-hint/errata/errata.one.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.seven.hnt b/info/knuth-hint/errata/errata.seven.hnt
index 9cc71b8316..3e54062604 100644
--- a/info/knuth-hint/errata/errata.seven.hnt
+++ b/info/knuth-hint/errata/errata.seven.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.six.hnt b/info/knuth-hint/errata/errata.six.hnt
index fcbafe804d..a12093bbb6 100644
--- a/info/knuth-hint/errata/errata.six.hnt
+++ b/info/knuth-hint/errata/errata.six.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.ten.hnt b/info/knuth-hint/errata/errata.ten.hnt
index 9b5a1a2d9f..53b21ae7d1 100644
--- a/info/knuth-hint/errata/errata.ten.hnt
+++ b/info/knuth-hint/errata/errata.ten.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.three.hnt b/info/knuth-hint/errata/errata.three.hnt
index 8a080af0fe..bb835f803a 100644
--- a/info/knuth-hint/errata/errata.three.hnt
+++ b/info/knuth-hint/errata/errata.three.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.twelve.hnt b/info/knuth-hint/errata/errata.twelve.hnt
index dcd90d5318..01779a9cf3 100644
--- a/info/knuth-hint/errata/errata.twelve.hnt
+++ b/info/knuth-hint/errata/errata.twelve.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errata.two.hnt b/info/knuth-hint/errata/errata.two.hnt
index e250acf6d3..f53c7ea79a 100644
--- a/info/knuth-hint/errata/errata.two.hnt
+++ b/info/knuth-hint/errata/errata.two.hnt
Binary files differ
diff --git a/info/knuth-hint/errata/errorlog.hnt b/info/knuth-hint/errata/errorlog.hnt
index 448a2d0592..494cc3da65 100644
--- a/info/knuth-hint/errata/errorlog.hnt
+++ b/info/knuth-hint/errata/errorlog.hnt
Binary files differ
diff --git a/info/knuth-hint/etc/vftovp-changes.hnt b/info/knuth-hint/etc/vftovp-changes.hnt
index 91535effb9..2f6382278d 100644
--- a/info/knuth-hint/etc/vftovp-changes.hnt
+++ b/info/knuth-hint/etc/vftovp-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/etc/vftovp.hnt b/info/knuth-hint/etc/vftovp.hnt
index 09354d32f7..baccc77368 100644
--- a/info/knuth-hint/etc/vftovp.hnt
+++ b/info/knuth-hint/etc/vftovp.hnt
Binary files differ
diff --git a/info/knuth-hint/etc/vptovf-changes.hnt b/info/knuth-hint/etc/vptovf-changes.hnt
index 96bcc0d073..b974bda31d 100644
--- a/info/knuth-hint/etc/vptovf-changes.hnt
+++ b/info/knuth-hint/etc/vptovf-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/etc/vptovf.hnt b/info/knuth-hint/etc/vptovf.hnt
index c3557f3750..f92d6ca717 100644
--- a/info/knuth-hint/etc/vptovf.hnt
+++ b/info/knuth-hint/etc/vptovf.hnt
Binary files differ
diff --git a/info/knuth-hint/hitex/hitex.hnt b/info/knuth-hint/hitex/hitex.hnt
index 05ff4ca503..6e4a173264 100644
--- a/info/knuth-hint/hitex/hitex.hnt
+++ b/info/knuth-hint/hitex/hitex.hnt
Binary files differ
diff --git a/info/knuth-hint/index.html b/info/knuth-hint/index.html
index 729f2c83c9..93010187cd 100644
--- a/info/knuth-hint/index.html
+++ b/info/knuth-hint/index.html
@@ -178,9 +178,8 @@
<code>WEB</code> and <code>CWEB</code> programs in readable format. With
the exception of <code>XeTeX</code>, all documents are in the
<code>HINT</code> format and can be viewed with the
-<code>hintview</code> program; see <a
-href="https://github.com/ruckertm/HINT">the HINT homepage</a> for the
-latest version.</p>
+<code>hintview</code> program, available from <a
+href="https://github.com/ruckertm/HINT">the HINT homepage</a>.</p>
<p>The <code>NAMED</code> entries represent the unmodified base sources
as written by their respective authors, the attached <code>chg</code>
links point to only the changed sections (or modules) as applied for
@@ -247,7 +246,9 @@ href="web/weave.hnt"><code>WEAVE</code></a>+<a
href="web/weave-changes.hnt"><code>chg</code></a> <a
href="web/tangle.hnt"><code>TANGLE</code></a>+<a
href="web/tangle-changes.hnt"><code>chg</code></a> <a
-href="web/twill.hnt"><code>TWILL</code></a> <span>]</span></p></li>
+href="web/twill.hnt"><code>TWILL</code></a><a href="#fn1"
+class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>
+<span>]</span></p></li>
</ul>
<h2 id="complementary-web-programs-by-other-authors">Complementary WEB
programs by other authors</h2>
@@ -286,7 +287,8 @@ href="cweb/ctangle.hnt"><code>CTANGLE</code></a>+<a
href="cweb/ctangle-changes.hnt"><code>chg</code></a> <a
href="cweb/cweave.hnt"><code>CWEAVE</code></a>+<a
href="cweb/cweave-changes.hnt"><code>chg</code></a><br />
-<a href="cweb/ctwill.hnt"><code>CTWILL</code></a> <a
+<a href="cweb/ctwill.hnt"><code>CTWILL</code></a><a href="#fn2"
+class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a> <a
href="cweb/refsort.hnt"><code>REFSORT</code></a>+<a
href="cweb/refsort-changes.hnt"><code>chg</code></a> <a
href="cweb/twinx.hnt"><code>TWINX</code></a>+<a
@@ -303,7 +305,9 @@ href="tie/tie-changes.hnt"><code>chg</code></a> <span>]</span></p></li>
href="hitex/hitex.hnt"><code>HiTeX</code></a> <span>]</span></p></li>
<li><p><code>mp/</code> <span>[</span> <a
href="mp/mp.hnt"><code>MP</code></a> <a
-href="mp/mpost.hnt"><code>MPOST</code></a> <span>]</span></p></li>
+href="mp/mpost.hnt"><code>MPOST</code></a> <span>]</span><a href="#fn3"
+class="footnote-ref" id="fnref3"
+role="doc-noteref"><sup>3</sup></a></p></li>
</ul>
<h2 id="errata-for-computers-typesetting-by-donald-e.-knuth">Errata for
“Computers &amp; Typesetting†by Donald E. Knuth</h2>
@@ -340,6 +344,24 @@ early 2014</a></p></li>
</ul></li>
</ul>
<h2 id="happy-cweb-programming">Happy C/WEB Programming!</h2>
-<p>2024-07-09 Andreas Scherer</p>
+<p>2024-08-11 Andreas Scherer</p>
+<section id="footnotes" class="footnotes footnotes-end-of-document"
+role="doc-endnotes">
+<hr />
+<ol>
+<li id="fn1"><p><code>TWILL</code> is presented here as a changed
+variant of <code>WEAVE</code>.<a href="#fnref1" class="footnote-back"
+role="doc-backlink">↩︎</a></p></li>
+<li id="fn2"><p><code>CTWILL</code> is presented here in its own format
+with a “mini-index†for every single code section.<a href="#fnref2"
+class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn3"><p><code>MP</code> and <code>MPOST</code> have received
+quite a few changes “behind the scenes†in order to present them in this
+collection; see project <a
+href="https://github.com/ascherer/mplibdir"><code>mplibdir</code></a>
+for details.<a href="#fnref3" class="footnote-back"
+role="doc-backlink">↩︎</a></p></li>
+</ol>
+</section>
</body>
</html>
diff --git a/info/knuth-hint/index.pdf b/info/knuth-hint/index.pdf
index 69a8c3e14d..2a06e900da 100644
--- a/info/knuth-hint/index.pdf
+++ b/info/knuth-hint/index.pdf
Binary files differ
diff --git a/info/knuth-hint/mf/mf-changes.hnt b/info/knuth-hint/mf/mf-changes.hnt
index e6c956616d..bc1667bd45 100644
--- a/info/knuth-hint/mf/mf-changes.hnt
+++ b/info/knuth-hint/mf/mf-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mf/mf.hnt b/info/knuth-hint/mf/mf.hnt
index c96e0613ff..eb97bb443c 100644
--- a/info/knuth-hint/mf/mf.hnt
+++ b/info/knuth-hint/mf/mf.hnt
Binary files differ
diff --git a/info/knuth-hint/mf/trapman.hnt b/info/knuth-hint/mf/trapman.hnt
index 3382522847..3fcd741974 100644
--- a/info/knuth-hint/mf/trapman.hnt
+++ b/info/knuth-hint/mf/trapman.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftodvi-changes.hnt b/info/knuth-hint/mfware/gftodvi-changes.hnt
index 458affe998..f5c7cd74e5 100644
--- a/info/knuth-hint/mfware/gftodvi-changes.hnt
+++ b/info/knuth-hint/mfware/gftodvi-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftodvi.hnt b/info/knuth-hint/mfware/gftodvi.hnt
index dcaba4f516..ef5608bc68 100644
--- a/info/knuth-hint/mfware/gftodvi.hnt
+++ b/info/knuth-hint/mfware/gftodvi.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftopk-changes.hnt b/info/knuth-hint/mfware/gftopk-changes.hnt
index ffb6384832..ce113516dd 100644
--- a/info/knuth-hint/mfware/gftopk-changes.hnt
+++ b/info/knuth-hint/mfware/gftopk-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftopk.hnt b/info/knuth-hint/mfware/gftopk.hnt
index 1879e40b85..642a1d4569 100644
--- a/info/knuth-hint/mfware/gftopk.hnt
+++ b/info/knuth-hint/mfware/gftopk.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftype-changes.hnt b/info/knuth-hint/mfware/gftype-changes.hnt
index 324740fd5d..fa571b7a07 100644
--- a/info/knuth-hint/mfware/gftype-changes.hnt
+++ b/info/knuth-hint/mfware/gftype-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/gftype.hnt b/info/knuth-hint/mfware/gftype.hnt
index 5e3e38dd72..35f95eec40 100644
--- a/info/knuth-hint/mfware/gftype.hnt
+++ b/info/knuth-hint/mfware/gftype.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/mft-changes.hnt b/info/knuth-hint/mfware/mft-changes.hnt
index 7babd18f2a..d7ebe9dcd5 100644
--- a/info/knuth-hint/mfware/mft-changes.hnt
+++ b/info/knuth-hint/mfware/mft-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/mfware/mft.hnt b/info/knuth-hint/mfware/mft.hnt
index b70f1314ab..227297db87 100644
--- a/info/knuth-hint/mfware/mft.hnt
+++ b/info/knuth-hint/mfware/mft.hnt
Binary files differ
diff --git a/info/knuth-hint/mp/mp.hnt b/info/knuth-hint/mp/mp.hnt
index 052014216f..062debf19d 100644
--- a/info/knuth-hint/mp/mp.hnt
+++ b/info/knuth-hint/mp/mp.hnt
Binary files differ
diff --git a/info/knuth-hint/mp/mpost.hnt b/info/knuth-hint/mp/mpost.hnt
index b9e969072d..b36ab06108 100644
--- a/info/knuth-hint/mp/mpost.hnt
+++ b/info/knuth-hint/mp/mpost.hnt
Binary files differ
diff --git a/info/knuth-hint/other/dvicopy-changes.hnt b/info/knuth-hint/other/dvicopy-changes.hnt
index 94a39fd26f..da00d6b634 100644
--- a/info/knuth-hint/other/dvicopy-changes.hnt
+++ b/info/knuth-hint/other/dvicopy-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/other/dvicopy.hnt b/info/knuth-hint/other/dvicopy.hnt
index ca6b059492..f70873e733 100644
--- a/info/knuth-hint/other/dvicopy.hnt
+++ b/info/knuth-hint/other/dvicopy.hnt
Binary files differ
diff --git a/info/knuth-hint/other/patgen-changes.hnt b/info/knuth-hint/other/patgen-changes.hnt
index 77950a826b..4e1b58399d 100644
--- a/info/knuth-hint/other/patgen-changes.hnt
+++ b/info/knuth-hint/other/patgen-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/other/patgen.hnt b/info/knuth-hint/other/patgen.hnt
index f3ca7c8ab8..5bdcb12c11 100644
--- a/info/knuth-hint/other/patgen.hnt
+++ b/info/knuth-hint/other/patgen.hnt
Binary files differ
diff --git a/info/knuth-hint/other/pktogf-changes.hnt b/info/knuth-hint/other/pktogf-changes.hnt
index 237e6a210e..24517a168c 100644
--- a/info/knuth-hint/other/pktogf-changes.hnt
+++ b/info/knuth-hint/other/pktogf-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/other/pktogf.hnt b/info/knuth-hint/other/pktogf.hnt
index 39f8c4601c..213e490402 100644
--- a/info/knuth-hint/other/pktogf.hnt
+++ b/info/knuth-hint/other/pktogf.hnt
Binary files differ
diff --git a/info/knuth-hint/other/pktype-changes.hnt b/info/knuth-hint/other/pktype-changes.hnt
index f086f5a9fc..0ab71373a7 100644
--- a/info/knuth-hint/other/pktype-changes.hnt
+++ b/info/knuth-hint/other/pktype-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/other/pktype.hnt b/info/knuth-hint/other/pktype.hnt
index e407be0090..d7011f6ac5 100644
--- a/info/knuth-hint/other/pktype.hnt
+++ b/info/knuth-hint/other/pktype.hnt
Binary files differ
diff --git a/info/knuth-hint/pdftex/pdftex-changes.hnt b/info/knuth-hint/pdftex/pdftex-changes.hnt
index 1440f73a23..9213de8719 100644
--- a/info/knuth-hint/pdftex/pdftex-changes.hnt
+++ b/info/knuth-hint/pdftex/pdftex-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/pdftex/pdftex.hnt b/info/knuth-hint/pdftex/pdftex.hnt
index 666c4d4a28..662676c11f 100644
--- a/info/knuth-hint/pdftex/pdftex.hnt
+++ b/info/knuth-hint/pdftex/pdftex.hnt
Binary files differ
diff --git a/info/knuth-hint/tex/glue.hnt b/info/knuth-hint/tex/glue.hnt
index 7b1a87f185..7d11599b64 100644
--- a/info/knuth-hint/tex/glue.hnt
+++ b/info/knuth-hint/tex/glue.hnt
Binary files differ
diff --git a/info/knuth-hint/tex/tex-changes.hnt b/info/knuth-hint/tex/tex-changes.hnt
index 4192d154c7..fb47d0ed42 100644
--- a/info/knuth-hint/tex/tex-changes.hnt
+++ b/info/knuth-hint/tex/tex-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/tex/tex.hnt b/info/knuth-hint/tex/tex.hnt
index b3f89d8de4..76e090eadf 100644
--- a/info/knuth-hint/tex/tex.hnt
+++ b/info/knuth-hint/tex/tex.hnt
Binary files differ
diff --git a/info/knuth-hint/tex/tripman.hnt b/info/knuth-hint/tex/tripman.hnt
index c8bf5c45b2..e6bf47fd73 100644
--- a/info/knuth-hint/tex/tripman.hnt
+++ b/info/knuth-hint/tex/tripman.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/dvitype-changes.hnt b/info/knuth-hint/texware/dvitype-changes.hnt
index f7e1e4d709..f2753579cf 100644
--- a/info/knuth-hint/texware/dvitype-changes.hnt
+++ b/info/knuth-hint/texware/dvitype-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/dvitype.hnt b/info/knuth-hint/texware/dvitype.hnt
index e8c992161a..d74ee84d47 100644
--- a/info/knuth-hint/texware/dvitype.hnt
+++ b/info/knuth-hint/texware/dvitype.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/pltotf-changes.hnt b/info/knuth-hint/texware/pltotf-changes.hnt
index 4124eb55b7..ffbaa0ac30 100644
--- a/info/knuth-hint/texware/pltotf-changes.hnt
+++ b/info/knuth-hint/texware/pltotf-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/pltotf.hnt b/info/knuth-hint/texware/pltotf.hnt
index ae31e25182..dc2e9231ea 100644
--- a/info/knuth-hint/texware/pltotf.hnt
+++ b/info/knuth-hint/texware/pltotf.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/pooltype-changes.hnt b/info/knuth-hint/texware/pooltype-changes.hnt
index f9eb390caf..2553863e05 100644
--- a/info/knuth-hint/texware/pooltype-changes.hnt
+++ b/info/knuth-hint/texware/pooltype-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/pooltype.hnt b/info/knuth-hint/texware/pooltype.hnt
index 88faa6ec97..25d9f9dc21 100644
--- a/info/knuth-hint/texware/pooltype.hnt
+++ b/info/knuth-hint/texware/pooltype.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/tftopl-changes.hnt b/info/knuth-hint/texware/tftopl-changes.hnt
index 3c63decdd8..6cdbb61794 100644
--- a/info/knuth-hint/texware/tftopl-changes.hnt
+++ b/info/knuth-hint/texware/tftopl-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/texware/tftopl.hnt b/info/knuth-hint/texware/tftopl.hnt
index e44c9e2dc9..d4fe6558ee 100644
--- a/info/knuth-hint/texware/tftopl.hnt
+++ b/info/knuth-hint/texware/tftopl.hnt
Binary files differ
diff --git a/info/knuth-hint/tie/tie-changes.hnt b/info/knuth-hint/tie/tie-changes.hnt
index 04b16f22f8..7dfe63c503 100644
--- a/info/knuth-hint/tie/tie-changes.hnt
+++ b/info/knuth-hint/tie/tie-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/tie/tie.hnt b/info/knuth-hint/tie/tie.hnt
index ebfc9397a0..c47b75268e 100644
--- a/info/knuth-hint/tie/tie.hnt
+++ b/info/knuth-hint/tie/tie.hnt
Binary files differ
diff --git a/info/knuth-hint/web/tangle-changes.hnt b/info/knuth-hint/web/tangle-changes.hnt
index 505d064363..d965062320 100644
--- a/info/knuth-hint/web/tangle-changes.hnt
+++ b/info/knuth-hint/web/tangle-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/web/tangle.hnt b/info/knuth-hint/web/tangle.hnt
index e75bbac292..cf2e7a47b4 100644
--- a/info/knuth-hint/web/tangle.hnt
+++ b/info/knuth-hint/web/tangle.hnt
Binary files differ
diff --git a/info/knuth-hint/web/twill.hnt b/info/knuth-hint/web/twill.hnt
index a7d0373095..80629d0591 100644
--- a/info/knuth-hint/web/twill.hnt
+++ b/info/knuth-hint/web/twill.hnt
Binary files differ
diff --git a/info/knuth-hint/web/weave-changes.hnt b/info/knuth-hint/web/weave-changes.hnt
index 633989f236..30d2555d4d 100644
--- a/info/knuth-hint/web/weave-changes.hnt
+++ b/info/knuth-hint/web/weave-changes.hnt
Binary files differ
diff --git a/info/knuth-hint/web/weave.hnt b/info/knuth-hint/web/weave.hnt
index 7549cf9f8f..0b0014bc93 100644
--- a/info/knuth-hint/web/weave.hnt
+++ b/info/knuth-hint/web/weave.hnt
Binary files differ
diff --git a/info/knuth-hint/web/webman.hnt b/info/knuth-hint/web/webman.hnt
index eec4f9a535..633381144b 100644
--- a/info/knuth-hint/web/webman.hnt
+++ b/info/knuth-hint/web/webman.hnt
Binary files differ
diff --git a/info/knuth-hint/xetex/xetex-changes.pdf b/info/knuth-hint/xetex/xetex-changes.pdf
index b9cbe8f8c7..3163e99dd8 100644
--- a/info/knuth-hint/xetex/xetex-changes.pdf
+++ b/info/knuth-hint/xetex/xetex-changes.pdf
Binary files differ
diff --git a/info/knuth-hint/xetex/xetex.pdf b/info/knuth-hint/xetex/xetex.pdf
index 5c47d2464c..ab14c6fd00 100644
--- a/info/knuth-hint/xetex/xetex.pdf
+++ b/info/knuth-hint/xetex/xetex.pdf
Binary files differ
diff --git a/info/knuth-pdf/README.md b/info/knuth-pdf/README.md
index 0ae94e0eb0..e33c69526e 100644
--- a/info/knuth-pdf/README.md
+++ b/info/knuth-pdf/README.md
@@ -23,4 +23,4 @@ licenses of the presented software codes.
In part `knuth-pdf` is an update and replacement for the `latex-tds` package.
-This is version “2.4†of the `knuth-pdf` package — 2024-07-10, Andreas Scherer.
+This is version “2.5†of the `knuth-pdf` package — 2024-08-12, Andreas Scherer.
diff --git a/info/knuth-pdf/bibtex/bibtex-changes.pdf b/info/knuth-pdf/bibtex/bibtex-changes.pdf
index 51afb72828..92952fed92 100644
--- a/info/knuth-pdf/bibtex/bibtex-changes.pdf
+++ b/info/knuth-pdf/bibtex/bibtex-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/bibtex/bibtex.pdf b/info/knuth-pdf/bibtex/bibtex.pdf
index e925af9e09..d0399eac37 100644
--- a/info/knuth-pdf/bibtex/bibtex.pdf
+++ b/info/knuth-pdf/bibtex/bibtex.pdf
Binary files differ
diff --git a/info/knuth-pdf/ctie/ctie-changes.pdf b/info/knuth-pdf/ctie/ctie-changes.pdf
index b5d24bfff0..760f704cf3 100644
--- a/info/knuth-pdf/ctie/ctie-changes.pdf
+++ b/info/knuth-pdf/ctie/ctie-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/ctie/ctie.pdf b/info/knuth-pdf/ctie/ctie.pdf
index c00112ba6a..4f77e166e8 100644
--- a/info/knuth-pdf/ctie/ctie.pdf
+++ b/info/knuth-pdf/ctie/ctie.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/common-changes.pdf b/info/knuth-pdf/cweb/common-changes.pdf
index 8294d6721a..0b47ef93dc 100644
--- a/info/knuth-pdf/cweb/common-changes.pdf
+++ b/info/knuth-pdf/cweb/common-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/common.pdf b/info/knuth-pdf/cweb/common.pdf
index fe92cb1537..b583ecc93c 100644
--- a/info/knuth-pdf/cweb/common.pdf
+++ b/info/knuth-pdf/cweb/common.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/ctangle-changes.pdf b/info/knuth-pdf/cweb/ctangle-changes.pdf
index 3fa90674ff..b5f56741fc 100644
--- a/info/knuth-pdf/cweb/ctangle-changes.pdf
+++ b/info/knuth-pdf/cweb/ctangle-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/ctangle.pdf b/info/knuth-pdf/cweb/ctangle.pdf
index 2321c56c31..1cf487ec20 100644
--- a/info/knuth-pdf/cweb/ctangle.pdf
+++ b/info/knuth-pdf/cweb/ctangle.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/ctwill.pdf b/info/knuth-pdf/cweb/ctwill.pdf
index b4ec76b58b..cd414d5880 100644
--- a/info/knuth-pdf/cweb/ctwill.pdf
+++ b/info/knuth-pdf/cweb/ctwill.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/cweave-changes.pdf b/info/knuth-pdf/cweb/cweave-changes.pdf
index 0f78fcf762..824da6b922 100644
--- a/info/knuth-pdf/cweb/cweave-changes.pdf
+++ b/info/knuth-pdf/cweb/cweave-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/cweave.pdf b/info/knuth-pdf/cweb/cweave.pdf
index 228381d60d..479d905a15 100644
--- a/info/knuth-pdf/cweb/cweave.pdf
+++ b/info/knuth-pdf/cweb/cweave.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/cwebman.pdf b/info/knuth-pdf/cweb/cwebman.pdf
index b6f051dfed..aec9fe1885 100644
--- a/info/knuth-pdf/cweb/cwebman.pdf
+++ b/info/knuth-pdf/cweb/cwebman.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/refsort-changes.pdf b/info/knuth-pdf/cweb/refsort-changes.pdf
index a81f0164ed..7e36960b39 100644
--- a/info/knuth-pdf/cweb/refsort-changes.pdf
+++ b/info/knuth-pdf/cweb/refsort-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/refsort.pdf b/info/knuth-pdf/cweb/refsort.pdf
index 1aed4d9b98..547a208ba0 100644
--- a/info/knuth-pdf/cweb/refsort.pdf
+++ b/info/knuth-pdf/cweb/refsort.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/twinx-changes.pdf b/info/knuth-pdf/cweb/twinx-changes.pdf
index 42fe0976eb..cca5496f7c 100644
--- a/info/knuth-pdf/cweb/twinx-changes.pdf
+++ b/info/knuth-pdf/cweb/twinx-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/cweb/twinx.pdf b/info/knuth-pdf/cweb/twinx.pdf
index bff5092b2b..2582ef3c2d 100644
--- a/info/knuth-pdf/cweb/twinx.pdf
+++ b/info/knuth-pdf/cweb/twinx.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.eight.pdf b/info/knuth-pdf/errata/errata.eight.pdf
index 91e9da3570..74dcf5653c 100644
--- a/info/knuth-pdf/errata/errata.eight.pdf
+++ b/info/knuth-pdf/errata/errata.eight.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.eleven.pdf b/info/knuth-pdf/errata/errata.eleven.pdf
index 844cead11f..f053598ed5 100644
--- a/info/knuth-pdf/errata/errata.eleven.pdf
+++ b/info/knuth-pdf/errata/errata.eleven.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.five.pdf b/info/knuth-pdf/errata/errata.five.pdf
index d8235bb8b2..d855ebf960 100644
--- a/info/knuth-pdf/errata/errata.five.pdf
+++ b/info/knuth-pdf/errata/errata.five.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.four.pdf b/info/knuth-pdf/errata/errata.four.pdf
index 5d4601997b..393192647f 100644
--- a/info/knuth-pdf/errata/errata.four.pdf
+++ b/info/knuth-pdf/errata/errata.four.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.nine.pdf b/info/knuth-pdf/errata/errata.nine.pdf
index 56ee96c487..3ea1a98947 100644
--- a/info/knuth-pdf/errata/errata.nine.pdf
+++ b/info/knuth-pdf/errata/errata.nine.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.one.pdf b/info/knuth-pdf/errata/errata.one.pdf
index cced6e6261..c8901565e1 100644
--- a/info/knuth-pdf/errata/errata.one.pdf
+++ b/info/knuth-pdf/errata/errata.one.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.pdf b/info/knuth-pdf/errata/errata.pdf
index 3b55012174..61e80920c1 100644
--- a/info/knuth-pdf/errata/errata.pdf
+++ b/info/knuth-pdf/errata/errata.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.seven.pdf b/info/knuth-pdf/errata/errata.seven.pdf
index 7c579e8629..095acccec3 100644
--- a/info/knuth-pdf/errata/errata.seven.pdf
+++ b/info/knuth-pdf/errata/errata.seven.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.six.pdf b/info/knuth-pdf/errata/errata.six.pdf
index 85c84182b3..8ceb1b7211 100644
--- a/info/knuth-pdf/errata/errata.six.pdf
+++ b/info/knuth-pdf/errata/errata.six.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.ten.pdf b/info/knuth-pdf/errata/errata.ten.pdf
index 2e787bc2e1..d1e0e7942e 100644
--- a/info/knuth-pdf/errata/errata.ten.pdf
+++ b/info/knuth-pdf/errata/errata.ten.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.three.pdf b/info/knuth-pdf/errata/errata.three.pdf
index 2b220d18bf..4d018dd326 100644
--- a/info/knuth-pdf/errata/errata.three.pdf
+++ b/info/knuth-pdf/errata/errata.three.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.twelve.pdf b/info/knuth-pdf/errata/errata.twelve.pdf
index 4cf60accb7..6bb21cda75 100644
--- a/info/knuth-pdf/errata/errata.twelve.pdf
+++ b/info/knuth-pdf/errata/errata.twelve.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errata.two.pdf b/info/knuth-pdf/errata/errata.two.pdf
index 780eef7564..42757353ea 100644
--- a/info/knuth-pdf/errata/errata.two.pdf
+++ b/info/knuth-pdf/errata/errata.two.pdf
Binary files differ
diff --git a/info/knuth-pdf/errata/errorlog.pdf b/info/knuth-pdf/errata/errorlog.pdf
index 7e67495e26..2ed6afb5b7 100644
--- a/info/knuth-pdf/errata/errorlog.pdf
+++ b/info/knuth-pdf/errata/errorlog.pdf
Binary files differ
diff --git a/info/knuth-pdf/etc/vftovp-changes.pdf b/info/knuth-pdf/etc/vftovp-changes.pdf
index 62e8779bb5..09b7d47904 100644
--- a/info/knuth-pdf/etc/vftovp-changes.pdf
+++ b/info/knuth-pdf/etc/vftovp-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/etc/vftovp.pdf b/info/knuth-pdf/etc/vftovp.pdf
index 7f42019be4..f47c22f6b9 100644
--- a/info/knuth-pdf/etc/vftovp.pdf
+++ b/info/knuth-pdf/etc/vftovp.pdf
Binary files differ
diff --git a/info/knuth-pdf/etc/vptovf-changes.pdf b/info/knuth-pdf/etc/vptovf-changes.pdf
index 3a3d94965c..d1ce5d4ec2 100644
--- a/info/knuth-pdf/etc/vptovf-changes.pdf
+++ b/info/knuth-pdf/etc/vptovf-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/etc/vptovf.pdf b/info/knuth-pdf/etc/vptovf.pdf
index 544bf76c1e..8169f3d7ab 100644
--- a/info/knuth-pdf/etc/vptovf.pdf
+++ b/info/knuth-pdf/etc/vptovf.pdf
Binary files differ
diff --git a/info/knuth-pdf/hitex/hitex.pdf b/info/knuth-pdf/hitex/hitex.pdf
index 7b82c521de..b4aa53714d 100644
--- a/info/knuth-pdf/hitex/hitex.pdf
+++ b/info/knuth-pdf/hitex/hitex.pdf
Binary files differ
diff --git a/info/knuth-pdf/index.html b/info/knuth-pdf/index.html
index 2dc82d621b..0e8abecfa7 100644
--- a/info/knuth-pdf/index.html
+++ b/info/knuth-pdf/index.html
@@ -241,7 +241,9 @@ href="web/weave.pdf"><code>WEAVE</code></a>+<a
href="web/weave-changes.pdf"><code>chg</code></a> <a
href="web/tangle.pdf"><code>TANGLE</code></a>+<a
href="web/tangle-changes.pdf"><code>chg</code></a> <a
-href="web/twill.pdf"><code>TWILL</code></a> <span>]</span></p></li>
+href="web/twill.pdf"><code>TWILL</code></a><a href="#fn1"
+class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a>
+<span>]</span></p></li>
</ul>
<h2 id="complementary-web-programs-by-other-authors">Complementary WEB
programs by other authors</h2>
@@ -280,7 +282,8 @@ href="cweb/ctangle.pdf"><code>CTANGLE</code></a>+<a
href="cweb/ctangle-changes.pdf"><code>chg</code></a> <a
href="cweb/cweave.pdf"><code>CWEAVE</code></a>+<a
href="cweb/cweave-changes.pdf"><code>chg</code></a><br />
-<a href="cweb/ctwill.pdf"><code>CTWILL</code></a> <a
+<a href="cweb/ctwill.pdf"><code>CTWILL</code></a><a href="#fn2"
+class="footnote-ref" id="fnref2" role="doc-noteref"><sup>2</sup></a> <a
href="cweb/refsort.pdf"><code>REFSORT</code></a>+<a
href="cweb/refsort-changes.pdf"><code>chg</code></a> <a
href="cweb/twinx.pdf"><code>TWINX</code></a>+<a
@@ -297,7 +300,9 @@ href="tie/tie-changes.pdf"><code>chg</code></a> <span>]</span></p></li>
href="hitex/hitex.pdf"><code>HiTeX</code></a> <span>]</span></p></li>
<li><p><code>mp/</code> <span>[</span> <a
href="mp/mp.pdf"><code>MP</code></a> <a
-href="mp/mpost.pdf"><code>MPOST</code></a> <span>]</span></p></li>
+href="mp/mpost.pdf"><code>MPOST</code></a> <span>]</span><a href="#fn3"
+class="footnote-ref" id="fnref3"
+role="doc-noteref"><sup>3</sup></a></p></li>
</ul>
<h2 id="errata-for-computers-typesetting-by-donald-e.-knuth">Errata for
“Computers &amp; Typesetting†by Donald E. Knuth</h2>
@@ -334,6 +339,24 @@ early 2014</a></p></li>
</ul></li>
</ul>
<h2 id="happy-cweb-programming">Happy C/WEB Programming!</h2>
-<p>2024-07-09 Andreas Scherer</p>
+<p>2024-08-11 Andreas Scherer</p>
+<section id="footnotes" class="footnotes footnotes-end-of-document"
+role="doc-endnotes">
+<hr />
+<ol>
+<li id="fn1"><p><code>TWILL</code> is presented here as a changed
+variant of <code>WEAVE</code>.<a href="#fnref1" class="footnote-back"
+role="doc-backlink">↩︎</a></p></li>
+<li id="fn2"><p><code>CTWILL</code> is presented here in its own format
+with “mini-indexes†for every two consecutive pages.<a href="#fnref2"
+class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn3"><p><code>MP</code> and <code>MPOST</code> have received
+quite a few changes “behind the scenes†in order to present them in this
+collection; see project <a
+href="https://github.com/ascherer/mplibdir"><code>mplibdir</code></a>
+for details.<a href="#fnref3" class="footnote-back"
+role="doc-backlink">↩︎</a></p></li>
+</ol>
+</section>
</body>
</html>
diff --git a/info/knuth-pdf/index.pdf b/info/knuth-pdf/index.pdf
index cdad14512e..85f27f46d9 100644
--- a/info/knuth-pdf/index.pdf
+++ b/info/knuth-pdf/index.pdf
Binary files differ
diff --git a/info/knuth-pdf/mf/mf-changes.pdf b/info/knuth-pdf/mf/mf-changes.pdf
index a16ecb16e3..36174d0916 100644
--- a/info/knuth-pdf/mf/mf-changes.pdf
+++ b/info/knuth-pdf/mf/mf-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mf/mf.pdf b/info/knuth-pdf/mf/mf.pdf
index 1fd069cfcd..bec4c04e24 100644
--- a/info/knuth-pdf/mf/mf.pdf
+++ b/info/knuth-pdf/mf/mf.pdf
Binary files differ
diff --git a/info/knuth-pdf/mf/trapman.pdf b/info/knuth-pdf/mf/trapman.pdf
index b97414ec23..33cfe054a4 100644
--- a/info/knuth-pdf/mf/trapman.pdf
+++ b/info/knuth-pdf/mf/trapman.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftodvi-changes.pdf b/info/knuth-pdf/mfware/gftodvi-changes.pdf
index 8d300e9b3a..71c2389b79 100644
--- a/info/knuth-pdf/mfware/gftodvi-changes.pdf
+++ b/info/knuth-pdf/mfware/gftodvi-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftodvi.pdf b/info/knuth-pdf/mfware/gftodvi.pdf
index b3b2dbc463..6452ded33d 100644
--- a/info/knuth-pdf/mfware/gftodvi.pdf
+++ b/info/knuth-pdf/mfware/gftodvi.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftopk-changes.pdf b/info/knuth-pdf/mfware/gftopk-changes.pdf
index cfa2061971..f218aa113e 100644
--- a/info/knuth-pdf/mfware/gftopk-changes.pdf
+++ b/info/knuth-pdf/mfware/gftopk-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftopk.pdf b/info/knuth-pdf/mfware/gftopk.pdf
index 358babf99e..b6844b30d2 100644
--- a/info/knuth-pdf/mfware/gftopk.pdf
+++ b/info/knuth-pdf/mfware/gftopk.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftype-changes.pdf b/info/knuth-pdf/mfware/gftype-changes.pdf
index bd3a31448c..2be0eeb982 100644
--- a/info/knuth-pdf/mfware/gftype-changes.pdf
+++ b/info/knuth-pdf/mfware/gftype-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/gftype.pdf b/info/knuth-pdf/mfware/gftype.pdf
index 99c425e27e..f70f8ddd17 100644
--- a/info/knuth-pdf/mfware/gftype.pdf
+++ b/info/knuth-pdf/mfware/gftype.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/mft-changes.pdf b/info/knuth-pdf/mfware/mft-changes.pdf
index 741f1d3b41..474c7e0c29 100644
--- a/info/knuth-pdf/mfware/mft-changes.pdf
+++ b/info/knuth-pdf/mfware/mft-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/mfware/mft.pdf b/info/knuth-pdf/mfware/mft.pdf
index 456b435219..e65b909062 100644
--- a/info/knuth-pdf/mfware/mft.pdf
+++ b/info/knuth-pdf/mfware/mft.pdf
Binary files differ
diff --git a/info/knuth-pdf/mp/mp.pdf b/info/knuth-pdf/mp/mp.pdf
index 8db59988ef..66ae7db9a1 100644
--- a/info/knuth-pdf/mp/mp.pdf
+++ b/info/knuth-pdf/mp/mp.pdf
Binary files differ
diff --git a/info/knuth-pdf/mp/mpost.pdf b/info/knuth-pdf/mp/mpost.pdf
index 7dc8cc7838..d82fe9d971 100644
--- a/info/knuth-pdf/mp/mpost.pdf
+++ b/info/knuth-pdf/mp/mpost.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/dvicopy-changes.pdf b/info/knuth-pdf/other/dvicopy-changes.pdf
index 059c71b9f1..3594481d7d 100644
--- a/info/knuth-pdf/other/dvicopy-changes.pdf
+++ b/info/knuth-pdf/other/dvicopy-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/dvicopy.pdf b/info/knuth-pdf/other/dvicopy.pdf
index d5e6a7de1a..e6be8cb07a 100644
--- a/info/knuth-pdf/other/dvicopy.pdf
+++ b/info/knuth-pdf/other/dvicopy.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/patgen-changes.pdf b/info/knuth-pdf/other/patgen-changes.pdf
index 9b24696e4e..3dfd77b565 100644
--- a/info/knuth-pdf/other/patgen-changes.pdf
+++ b/info/knuth-pdf/other/patgen-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/patgen.pdf b/info/knuth-pdf/other/patgen.pdf
index b4aa6ebad8..9a0b4c723e 100644
--- a/info/knuth-pdf/other/patgen.pdf
+++ b/info/knuth-pdf/other/patgen.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/pktogf-changes.pdf b/info/knuth-pdf/other/pktogf-changes.pdf
index 0874fc69ea..465bcde1df 100644
--- a/info/knuth-pdf/other/pktogf-changes.pdf
+++ b/info/knuth-pdf/other/pktogf-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/pktogf.pdf b/info/knuth-pdf/other/pktogf.pdf
index 7898be1405..3d821be836 100644
--- a/info/knuth-pdf/other/pktogf.pdf
+++ b/info/knuth-pdf/other/pktogf.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/pktype-changes.pdf b/info/knuth-pdf/other/pktype-changes.pdf
index 86078c7dee..6f426f2983 100644
--- a/info/knuth-pdf/other/pktype-changes.pdf
+++ b/info/knuth-pdf/other/pktype-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/other/pktype.pdf b/info/knuth-pdf/other/pktype.pdf
index 9d3e282221..35ef09e74d 100644
--- a/info/knuth-pdf/other/pktype.pdf
+++ b/info/knuth-pdf/other/pktype.pdf
Binary files differ
diff --git a/info/knuth-pdf/pdftex/pdftex-changes.pdf b/info/knuth-pdf/pdftex/pdftex-changes.pdf
index e0d8340ff4..13207db99f 100644
--- a/info/knuth-pdf/pdftex/pdftex-changes.pdf
+++ b/info/knuth-pdf/pdftex/pdftex-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/pdftex/pdftex.pdf b/info/knuth-pdf/pdftex/pdftex.pdf
index 42bf275b72..b1820df32e 100644
--- a/info/knuth-pdf/pdftex/pdftex.pdf
+++ b/info/knuth-pdf/pdftex/pdftex.pdf
Binary files differ
diff --git a/info/knuth-pdf/tex/glue.pdf b/info/knuth-pdf/tex/glue.pdf
index d698e78629..e4302312ba 100644
--- a/info/knuth-pdf/tex/glue.pdf
+++ b/info/knuth-pdf/tex/glue.pdf
Binary files differ
diff --git a/info/knuth-pdf/tex/tex-changes.pdf b/info/knuth-pdf/tex/tex-changes.pdf
index f4e81bf4d6..5c546dcb5a 100644
--- a/info/knuth-pdf/tex/tex-changes.pdf
+++ b/info/knuth-pdf/tex/tex-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/tex/tex.pdf b/info/knuth-pdf/tex/tex.pdf
index 3068cc9edc..c84fe305e5 100644
--- a/info/knuth-pdf/tex/tex.pdf
+++ b/info/knuth-pdf/tex/tex.pdf
Binary files differ
diff --git a/info/knuth-pdf/tex/tripman.pdf b/info/knuth-pdf/tex/tripman.pdf
index ac9f4eaa92..fc89c3aa72 100644
--- a/info/knuth-pdf/tex/tripman.pdf
+++ b/info/knuth-pdf/tex/tripman.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/dvitype-changes.pdf b/info/knuth-pdf/texware/dvitype-changes.pdf
index fbcedb9bde..75131be4f3 100644
--- a/info/knuth-pdf/texware/dvitype-changes.pdf
+++ b/info/knuth-pdf/texware/dvitype-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/dvitype.pdf b/info/knuth-pdf/texware/dvitype.pdf
index a8a3cfc2d2..53c934da8b 100644
--- a/info/knuth-pdf/texware/dvitype.pdf
+++ b/info/knuth-pdf/texware/dvitype.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/pltotf-changes.pdf b/info/knuth-pdf/texware/pltotf-changes.pdf
index 6528a5c5b3..43d1c93be8 100644
--- a/info/knuth-pdf/texware/pltotf-changes.pdf
+++ b/info/knuth-pdf/texware/pltotf-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/pltotf.pdf b/info/knuth-pdf/texware/pltotf.pdf
index 3ca3b977e7..6b64c716a4 100644
--- a/info/knuth-pdf/texware/pltotf.pdf
+++ b/info/knuth-pdf/texware/pltotf.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/pooltype-changes.pdf b/info/knuth-pdf/texware/pooltype-changes.pdf
index 922d39d91a..291d666c05 100644
--- a/info/knuth-pdf/texware/pooltype-changes.pdf
+++ b/info/knuth-pdf/texware/pooltype-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/pooltype.pdf b/info/knuth-pdf/texware/pooltype.pdf
index d2d46a3204..5de30fd5a1 100644
--- a/info/knuth-pdf/texware/pooltype.pdf
+++ b/info/knuth-pdf/texware/pooltype.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/tftopl-changes.pdf b/info/knuth-pdf/texware/tftopl-changes.pdf
index 9b0c58f22c..4bb30ac134 100644
--- a/info/knuth-pdf/texware/tftopl-changes.pdf
+++ b/info/knuth-pdf/texware/tftopl-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/texware/tftopl.pdf b/info/knuth-pdf/texware/tftopl.pdf
index 980ce9472c..6ff2fdd7ef 100644
--- a/info/knuth-pdf/texware/tftopl.pdf
+++ b/info/knuth-pdf/texware/tftopl.pdf
Binary files differ
diff --git a/info/knuth-pdf/tie/tie-changes.pdf b/info/knuth-pdf/tie/tie-changes.pdf
index 563d5788f5..769336535a 100644
--- a/info/knuth-pdf/tie/tie-changes.pdf
+++ b/info/knuth-pdf/tie/tie-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/tie/tie.pdf b/info/knuth-pdf/tie/tie.pdf
index db3830b544..1b4062697f 100644
--- a/info/knuth-pdf/tie/tie.pdf
+++ b/info/knuth-pdf/tie/tie.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/tangle-changes.pdf b/info/knuth-pdf/web/tangle-changes.pdf
index 6f9ad6d812..d0d4031dd8 100644
--- a/info/knuth-pdf/web/tangle-changes.pdf
+++ b/info/knuth-pdf/web/tangle-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/tangle.pdf b/info/knuth-pdf/web/tangle.pdf
index 0e6a77f36c..0bf03bfcb3 100644
--- a/info/knuth-pdf/web/tangle.pdf
+++ b/info/knuth-pdf/web/tangle.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/twill.pdf b/info/knuth-pdf/web/twill.pdf
index e360148f2d..31fb7740ab 100644
--- a/info/knuth-pdf/web/twill.pdf
+++ b/info/knuth-pdf/web/twill.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/weave-changes.pdf b/info/knuth-pdf/web/weave-changes.pdf
index 85ee36841f..2ac1efac3e 100644
--- a/info/knuth-pdf/web/weave-changes.pdf
+++ b/info/knuth-pdf/web/weave-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/weave.pdf b/info/knuth-pdf/web/weave.pdf
index ce2315c2ae..d825359280 100644
--- a/info/knuth-pdf/web/weave.pdf
+++ b/info/knuth-pdf/web/weave.pdf
Binary files differ
diff --git a/info/knuth-pdf/web/webman.pdf b/info/knuth-pdf/web/webman.pdf
index eda4824bd9..de9016752d 100644
--- a/info/knuth-pdf/web/webman.pdf
+++ b/info/knuth-pdf/web/webman.pdf
Binary files differ
diff --git a/info/knuth-pdf/xetex/xetex-changes.pdf b/info/knuth-pdf/xetex/xetex-changes.pdf
index 32dd78f050..f7288a2c97 100644
--- a/info/knuth-pdf/xetex/xetex-changes.pdf
+++ b/info/knuth-pdf/xetex/xetex-changes.pdf
Binary files differ
diff --git a/info/knuth-pdf/xetex/xetex.pdf b/info/knuth-pdf/xetex/xetex.pdf
index 9ad6e9d383..932e5ca2eb 100644
--- a/info/knuth-pdf/xetex/xetex.pdf
+++ b/info/knuth-pdf/xetex/xetex.pdf
Binary files differ
diff --git a/info/latex-doc-ptr/README b/info/latex-doc-ptr/README
index dfb20a8bc6..898cf775a4 100644
--- a/info/latex-doc-ptr/README
+++ b/info/latex-doc-ptr/README
@@ -18,27 +18,19 @@ Install:
pdflatex latex-doc-ptr
should do nicely.
- My version of TeX is old, so I have some trouble with tex4ht. If you
-are in my situation then try the Makefile, which does a lot of hacking.
-
Notes:
-1) My version of make4ht requires that I change
- \def\IfFileExists#1#2#3{%
-to
- \long\def\IfFileExists#1#2#3{%
-in a local copy of tex4ht.sty. See https://tex.stackexchange.com/a/423729/339
-
-2) Repo is here.
+This document's git repository is here:
https://gitlab.com/jim.hefferon/latex-doc-ptr
Comments to:
- Jim Hefferon email jhefferon@smcvt.edu
+ Jim Hefferon email: jim.hefferon@gmail.com
History:
+ 2024-Sep-29 JH, KB Add contact information.
2021-Jan-02 JH, KB Merged with another doc, first-packages.
2009-Mar-24 Jim Hefferon, Manuel Pégourié-Gonnard, Karl Berry
diff --git a/info/latex-doc-ptr/latex-doc-ptr.css.replacement b/info/latex-doc-ptr/latex-doc-ptr.css.replacement
deleted file mode 100644
index db1fcd494c..0000000000
--- a/info/latex-doc-ptr/latex-doc-ptr.css.replacement
+++ /dev/null
@@ -1,148 +0,0 @@
-
-/* start css.sty */
-.Spectral-Light-osf-t-1x-x-109{}
-.Spectral-Bold-osf-t-1x-x-172{font-size:156%;}
-.ectt-1095{ font-family: monospace;}
-.ectt-1095{ font-family: monospace;}
-.ectt-1095{ font-family: monospace;}
-.Spectral-Bold-osf-t-1x-x-109{}
-.cmr-8{font-size:72%;}
-.cmr-6{font-size:54%;}
-.cmmi-10x-x-109{font-style: italic;}
-.Spectral-Light-osf-t-1{font-size:90%;}
-.ectt-1000{font-size:90%; font-family: monospace;}
-.ectt-1000{ font-family: monospace;}
-.ectt-1000{ font-family: monospace;}
-.Spectral-LightItalic-osf-t-1x-x-109{}
-.Spectral-Light-osf-sc-t-1x-x-109{}
-.ectt-0900{font-size:81%; font-family: monospace;}
-.ectt-0900{ font-family: monospace;}
-.ectt-0900{ font-family: monospace;}
-p.noindent { text-indent: 0em }
-td p.noindent { text-indent: 0em; margin-top:0em; }
-p.nopar { text-indent: 0em; }
-p.indent{ text-indent: 1.5em }
-@media print {div.crosslinks {visibility:hidden;}}
-a img { border-top: 0; border-left: 0; border-right: 0; }
-center { margin-top:1em; margin-bottom:1em; }
-td center { margin-top:0em; margin-bottom:0em; }
-.Canvas { position:relative; }
-img.math{vertical-align:middle;}
-li p.indent { text-indent: 0em }
-li p:first-child{ margin-top:0em; }
-li p:last-child, li div:last-child { margin-bottom:0.5em; }
-li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
-.enumerate1 {list-style-type:decimal;}
-.enumerate2 {list-style-type:lower-alpha;}
-.enumerate3 {list-style-type:lower-roman;}
-.enumerate4 {list-style-type:upper-alpha;}
-div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
-.obeylines-h,.obeylines-v {white-space: nowrap; }
-div.obeylines-v p { margin-top:0; margin-bottom:0; }
-.overline{ text-decoration:overline; }
-.overline img{ border-top: 1px solid black; }
-td.displaylines {text-align:center; white-space:nowrap;}
-.centerline {text-align:center;}
-.rightline {text-align:right;}
-div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
-.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-div.fbox {display:table}
-div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-div.minipage{width:100%;}
-div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
-div.center div {text-align: left;}
-div.flushright, div.flushright div.flushright {text-align: right;}
-div.flushright div {text-align: left;}
-div.flushleft {text-align: left;}
-.underline{ text-decoration:underline; }
-.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
-.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
-.framebox-c {text-align:center;}
-.framebox-l {text-align:left;}
-.framebox-r {text-align:right;}
-span.thank-mark{ vertical-align: super }
-span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
-div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
-table.tabular td p{margin-top:0em;}
-table.tabular {margin-left: auto; margin-right: auto;}
-td p:first-child{ margin-top:0em; }
-td p:last-child{ margin-bottom:0em; }
-div.td00{ margin-left:0pt; margin-right:0pt; }
-div.td01{ margin-left:0pt; margin-right:5pt; }
-div.td10{ margin-left:5pt; margin-right:0pt; }
-div.td11{ margin-left:5pt; margin-right:5pt; }
-table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
-td.td00{ padding-left:0pt; padding-right:0pt; }
-td.td01{ padding-left:0pt; padding-right:5pt; }
-td.td10{ padding-left:5pt; padding-right:0pt; }
-td.td11{ padding-left:5pt; padding-right:5pt; }
-table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
-.hline hr, .cline hr{ height : 1px; margin:0px; }
-.tabbing-right {text-align:right;}
-span.TEX {letter-spacing: -0.125em; }
-span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
-a span.TEX span.E {text-decoration: none; }
-span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
-span.LATEX span.TEX{ position:relative; left: -0.4em; }
-div.float, div.figure {margin-left: auto; margin-right: auto;}
-div.float img {text-align:center;}
-div.figure img {text-align:center;}
-.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
-.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
-table.equation {width:100%;}
-.equation td{text-align:center; }
-td.equation { margin-top:1em; margin-bottom:1em; }
-td.equation-label { width:5%; text-align:center; }
-td.eqnarray4 { width:5%; white-space: normal; }
-td.eqnarray2 { width:5%; }
-table.eqnarray-star, table.eqnarray {width:100%;}
-div.eqnarray{text-align:center;}
-div.array {text-align:center;}
-div.pmatrix {text-align:center;}
-table.pmatrix {width:100%;}
-span.pmatrix img{vertical-align:middle;}
-div.pmatrix {text-align:center;}
-table.pmatrix {width:100%;}
-span.bar-css {text-decoration:overline;}
-img.cdots{vertical-align:middle;}
-.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
-.index-item, .index-subitem, .index-subsubitem {display:block}
-div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
-div.caption span.id{font-weight: bold; white-space: nowrap; }
-h1.partHead{text-align: center}
-p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
-p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
-.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
-.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
-.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
-.verse{white-space:nowrap; margin-left:2em}
-div.maketitle {text-align:center;}
-h2.titleHead{text-align:center;}
-div.maketitle{ margin-bottom: 2em; }
-div.author, div.date {text-align:center;}
-div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
-div.author{white-space: nowrap;}
-.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
-.abstract p {margin-left:5%; margin-right:5%;}
-div.abstract {width:100%;}
-.figure img.graphics {margin-left:10%;}
-.lstlisting .label{margin-right:0.5em; }
-div.lstlisting{font-family: monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; }
-div.lstinputlisting{ font-family: monospace; white-space: nowrap; }
-.lstinputlisting .label{margin-right:0.5em;}
-.columns-2 p:first-child { margin-top: 0em; }
-/* .columns-2{-moz-column-count:2; -webkit-column-count:2; column-count:2; -moz-column-gap: 27.2197pt; -webkit-column-gap: 27.2197pt; column-gap: 27.2197pt; -moz-column-rule-width: 0.0pt; -webkit-column-rule-width: 0.0pt; column-rule-rule-width: 0.0pt; -moz-column-rule-color: #555;; -webkit-column-rule-color: #555;; column-rule-color: #555;; -moz-column-rule-style: outset; -webkit-column-rule-style: outset; column-rule-style: outset; -moz-column-fill: balance; -webkit-column-fill: balance; column-fill: balance; } */
-/* end css.sty */
-
-/* added JH */
-/* Adjust the generated defs */
-.Spectral-Bold-lf-t-1x-x-172 {font-size:156%;
- font-weight: bold;} /* doc title in bold */
-.Spectral-Bold-lf-t-1x-x-109 {margin-top:2em;
- font-weight: bold;
- margin-right: 0.25em} /* run-in subsection name */
-p.indent{ text-indent: 0em } /* make all paragraphs un-indented */
-a { text-decoration: none; } /* remove underlines, since below LaTeX is ugly*/
-
-.Spectral-LightItalic-osf-t-1x-x-109 { font-style: italic;
- } /* make "name" in `texdoc name' */
diff --git a/info/latex-doc-ptr/latex-doc-ptr.html b/info/latex-doc-ptr/latex-doc-ptr.html
index 674de5fabb..a91afeddc9 100644
--- a/info/latex-doc-ptr/latex-doc-ptr.html
+++ b/info/latex-doc-ptr/latex-doc-ptr.html
@@ -1,778 +1,213 @@
-<?xml version="1.0" encoding="iso-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
-<html xmlns="http://www.w3.org/1999/xhtml"
->
+<!DOCTYPE html>
+<html lang='en-US' xml:lang='en-US'>
<head><title></title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
-<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
-<!-- xhtml,html -->
-<meta name="src" content="latex-doc-ptr.tex" />
-<link rel="stylesheet" type="text/css" href="latex-doc-ptr.css" />
-</head><body
->
-<div class="center"
->
-<!--l. 6--><p class="noindent" >
-</p><!--l. 7--><p class="noindent" ><span
-class="Spectral-Bold-lf-t-1x-x-172">A First Set of </span><span class="LATEX"><span
-class="Spectral-Bold-lf-t-1x-x-172">L</span><span class="A"><span
-class="Spectral-Bold-lf-t-1x-x-172">A</span></span><span class="TEX"><span
-class="Spectral-Bold-lf-t-1x-x-172">T</span><span
-class="E"><span
-class="Spectral-Bold-lf-t-1x-x-172">E</span></span><span
-class="Spectral-Bold-lf-t-1x-x-172">X</span></span></span> <span
-class="Spectral-Bold-lf-t-1x-x-172">Resources</span></p></div>
- <div class="columns-2">
-<!--l. 17--><p class="indent" > This page suggests documentation, add-on components, and other resources for a beginning <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>
+<meta charset='utf-8' />
+<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' />
+<meta content='width=device-width,initial-scale=1' name='viewport' />
+<link href='latex-doc-ptr.css' rel='stylesheet' type='text/css' />
+<meta content='latex-doc-ptr.tex' name='src' />
+</head><body>
+<div class='center'>
+<!-- l. 6 --><p class='noindent'>
+</p><!-- l. 7 --><p class='noindent'><span class='Spectral-Bold-lf-t1-x-x-172'>A First Set of LaTeX Resources</span></p></div>
+ <div class='columns-2'>
+<!-- l. 17 --><p class='indent'> This page suggests documentation, add-on components, and other resources for a beginning LaTeX
user.
-</p><!--l. 20--><p class="indent" > The links here are to freely available materials, so you can click to see the documentation online. Where
-the documentation is also available offline in a typical <span class="TEX">T<span
-class="E">E</span>X</span> installation, we provide its name as an end note.
-View it by running `<span
-class="ectt-1095">texdoc </span><span
-class="Spectral-LightItalic-lf-t-1x-x-109">name</span>' in a terminal.
+</p><!-- l. 20 --><p class='indent'> The links here are to freely available materials, so you can click to see the documentation online. Where
+the documentation is also available offline in a typical TeX installation, we provide its name as an end note.
+View it by running ‘<span class='ectt-1095'>texdoc </span><span class='Spectral-LightItalic-lf-t1-x-x-109'>name</span>’ in a terminal.
</p>
-<h3 class="sectionHead"><a
- id="x1-1000"></a>Starting</h3>
-<!--l. 32--><p class="noindent" >To run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>, you must use an online service or install a distribution. Online services are commercial;
-find them by entering `online latex' in a search engine. For distributions, your choices are <a
-href="https://tug.org/texlive/" ><span class="TEX">T<span
-class="E">E</span>X</span>&#x00A0;Live</a> on a
-Unix system, including GNU/Linux, or on Windows, or the related <a
-href="https://tug.org/mactex/" >Mac<span class="TEX">T<span
-class="E">E</span>X</span></a> on Macintosh, or <a
-href="https://miktex.org/" >MiK<span class="TEX">T<span
-class="E">E</span>X</span></a> on
+ <h3 class='sectionHead' id='starting'><a id='x1-1000'></a>Starting</h3>
+<!-- l. 32 --><p class='noindent'>To run LaTeX, you must use an online service or install a distribution. Online services are commercial; find
+them by entering ‘online latex’ in a search engine. For distributions, your choices are <a href='https://tug.org/texlive/'>TeX Live</a> on a Unix
+system, including GNU/Linux, or on Windows, or the related <a href='https://tug.org/mactex/'>MacTeX</a> on Macintosh, or <a href='https://miktex.org/'>MiKTeX</a> on
Windows or a Unix system.
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Tutorials </span>The site <a
-href="https://www.learnlatex.org/" ><span
-class="ectt-1095">learnlatex.org</span></a> teaches you the basics in a sound way, and also lets you play with the
-commands to see the results. For a more traditional document, the most widely recommended one is <a
-href="https://ctan.org/pkg/lshort-english" >The
-Not-So Short Guide to <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>2<span
-class="cmmi-10x-x-109">&#x03B5;</span></a>, available in many languages.<sup><a
-href="#ennote-1" id="enmark-1"><span
-class="cmr-8">1</span></a></sup>
- <p>Many people use <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> to write mathematical text and for this the premier choice is from the
-American Mathematical Society. See their <a
-href="http://mirror.ctan.org/info/amslatex/primer/amshelp.pdf" >Getting up and running with AMS-<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span></a>,<sup><a
-href="#ennote-2" id="enmark-2"><span
-class="cmr-8">2</span></a></sup> and more detail is
-in <a
-href="http://mirror.ctan.org/macros/latex/required/amsmath/amsldoc.pdf" >Users Guide for the <span
-class="ectt-1095">amsmath </span>package</a>.<sup><a
-href="#ennote-3" id="enmark-3"><span
-class="cmr-8">3</span></a></sup>
+</p><!-- l. 44 --><p class='noindent'>
</p>
-<h3 class="sectionHead"><a
- id="x1-2000"></a>Documentation</h3>
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">References </span>The nearest thing to a general reference for <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> is <a
-href="http://mirror.ctan.org/info/latex2e-help-texinfo/latex2e.html" ><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>2<span
-class="cmmi-10x-x-109">&#x03B5;</span> unofficial reference manual</a>.<sup><a
-href="#ennote-4" id="enmark-4"><span
-class="cmr-8">4</span></a></sup>
-Look for symbols in the <a
-href="http://mirror.ctan.org/info/symbols/comprehensive/symbols-letter.pdf" >Comprehensive List of Symbols</a>.<sup><a
-href="#ennote-5" id="enmark-5"><span
-class="cmr-8">5</span></a></sup> And, <a
-href="https://tug.org/TUGboat/" >TUGboat</a>, the journal of the <a
-href="https://tug.org" ><span class="TEX">T<span
-class="E">E</span>X</span> Users
-Group</a>, has published many articles, at levels from beginner to expert, almost since the inception of
-<span class="TEX">T<span
-class="E">E</span>X</span>.
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">FAQs </span>Many web pages offer quick help with <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>, although they can be out of date. Particularly useful
-and reliable are the <a
-href="https://texfaq.org/" ><span class="TEX">T<span
-class="E">E</span>X</span> FAQ</a>,<sup><a
-href="#ennote-6" id="enmark-6"><span
-class="cmr-8">6</span></a></sup> as well as <a
-href="https://tug.org/interest.html" ><span class="TEX">T<span
-class="E">E</span>X</span> Resources on the Web</a>. You can also get a handy
-general <a
-href="http://mirror.ctan.org/info/latexcheat/latexcheat/latexsheet.pdf" ><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> Cheat Sheet</a>,<sup><a
-href="#ennote-7" id="enmark-7"><span
-class="cmr-8">7</span></a></sup> as well as the <a
-href="http://mirrors.ctan.org/info/undergradmath/undergradmath.pdf" >Math for Undergraduates Cheat Sheet</a>.<sup><a
-href="#ennote-8" id="enmark-8"><span
-class="cmr-8">8</span></a></sup> Also,
-<a
-href="http://mirror.ctan.org/info/l2tabu/english/l2tabuen.pdf" >An essential guide to <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>2<span
-class="cmmi-10x-x-109">&#x03B5;</span> usage</a><sup><a
-href="#ennote-9" id="enmark-9"><span
-class="cmr-8">9</span></a></sup> helps you develop sound habits, by saying what not to
+ <h4 class='subsectionHead' id='tutorials'><a id='x1-2000'></a>Tutorials</h4>
+<!-- l. 45 --><p class='noindent'>The site <a href='https://www.learnlatex.org/'><span class='ectt-1095'>learnlatex.org</span></a> teaches you the basics in a sound way, and also lets you play with the commands
+to see the results. For a more traditional document, the most widely recommended one is <a href='https://ctan.org/pkg/lshort-english'>The Not-So Short
+Guide to LaTeX2e</a>, available in many languages.<sup class='textsuperscript'><a href='#ennote-1' id='enmark-1'><span class='Spectral-Light-lf-t1-'>1</span></a></sup>
+</p><!-- l. 59 --><p class='indent'> <p>Many people use LaTeX to write mathematical text and for this the premier choice is from the
+American Mathematical Society. See their <a href='http://mirror.ctan.org/info/amslatex/primer/amshelp.pdf'>Getting up and running with AMS-LaTeX</a>,<sup class='textsuperscript'><a href='#ennote-2' id='enmark-2'><span class='Spectral-Light-lf-t1-'>2</span></a></sup> and more detail is
+in <a href='http://mirror.ctan.org/macros/latex/required/amsmath/amsldoc.pdf'>Users Guide for the <span class='ectt-1095'>amsmath </span>package</a>.<sup class='textsuperscript'><a href='#ennote-3' id='enmark-3'><span class='Spectral-Light-lf-t1-'>3</span></a></sup>
+</p><!-- l. 72 --><p class='noindent'>
+</p>
+ <h3 class='sectionHead' id='documentation'><a id='x1-3000'></a>Documentation</h3>
+<!-- l. 75 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='references'><a id='x1-4000'></a>References</h4>
+<!-- l. 76 --><p class='noindent'>The nearest thing to a general reference for LaTeX is <a href='http://mirror.ctan.org/info/latex2e-help-texinfo/latex2e.html'>LaTeX2e unofficial reference manual</a>.<sup class='textsuperscript'><a href='#ennote-4' id='enmark-4'><span class='Spectral-Light-lf-t1-'>4</span></a></sup> Look for
+symbols in the <a href='http://mirror.ctan.org/info/symbols/comprehensive/symbols-letter.pdf'>Comprehensive List of Symbols</a>.<sup class='textsuperscript'><a href='#ennote-5' id='enmark-5'><span class='Spectral-Light-lf-t1-'>5</span></a></sup> And, <a href='https://tug.org/TUGboat/'>TUGboat</a>, the journal of the <a href='https://tug.org'>TeX Users Group</a>,
+has published many articles, at levels from beginner to expert, almost since the inception of
+
+
+TeX.
+</p><!-- l. 90 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='faqs'><a id='x1-5000'></a>FAQs</h4>
+<!-- l. 91 --><p class='noindent'>Many web pages offer quick help with LaTeX, although they can be out of date. Particularly useful and
+reliable are the <a href='https://texfaq.org/'>TeX FAQ</a>,<sup class='textsuperscript'><a href='#ennote-6' id='enmark-6'><span class='Spectral-Light-lf-t1-'>6</span></a></sup> as well as <a href='https://tug.org/interest.html'>TeX Resources on the Web</a>. You can also get a handy
+general <a href='http://mirror.ctan.org/info/latexcheat/latexcheat/latexsheet.pdf'>LaTeX Cheat Sheet</a>,<sup class='textsuperscript'><a href='#ennote-7' id='enmark-7'><span class='Spectral-Light-lf-t1-'>7</span></a></sup> as well as the <a href='http://mirrors.ctan.org/info/undergradmath/undergradmath.pdf'>Math for Undergraduates Cheat Sheet</a>.<sup class='textsuperscript'><a href='#ennote-8' id='enmark-8'><span class='Spectral-Light-lf-t1-'>8</span></a></sup> Also,
+<a href='http://mirror.ctan.org/info/l2tabu/english/l2tabuen.pdf'>An essential guide to LaTeX2e usage</a><sup class='textsuperscript'><a href='#ennote-9' id='enmark-9'><span class='Spectral-Light-lf-t1-'>9</span></a></sup> helps you develop sound habits, by saying what not to
do.
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Questions </span>If you are stuck on an issue, the <a
-href="https://tex.stackexchange.com/" ><span class="TEX">T<span
-class="E">E</span>X</span>-<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> Stack Exchange</a> site and the mailing list
-<a
-href="https://lists.tug.org/texhax" >texhax@tug.org</a> are where knowledgeable people hang out. You are likely to find an answer in their past
-discussions, which cover decades, and if not then you can post a question yourself.
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Books </span>There are many excellent books about <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>. Visit the <a
-href="https://tug.org/books/" ><span class="TEX">T<span
-class="E">E</span>X</span> Users Group's book list</a> for a
-selection, and for discounts.
-<h3 class="sectionHead"><a
- id="x1-3000"></a>Packages</h3>
-<!--l. 131--><p class="noindent" >One of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>'s strengths is the tremendous number of available add-on packages. This list covers most of
+</p><!-- l. 109 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='questions'><a id='x1-6000'></a>Questions</h4>
+<!-- l. 110 --><p class='noindent'>If you are stuck on an issue, the <a href='https://tex.stackexchange.com/'>TeX-LaTeX Stack Exchange</a> site and the mailing list <a href='https://lists.tug.org/texhax'>texhax@tug.org</a> are
+where knowledgeable people hang out. You are likely to find an answer in their past discussions, which
+cover decades, and if not then you can post a question yourself.
+</p><!-- l. 119 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='books'><a id='x1-7000'></a>Books</h4>
+<!-- l. 120 --><p class='noindent'><p>There are many excellent books about LaTeX. Visit the <a href='https://tug.org/books/'>TeX Users Group’s book list</a> for a selection, and for
+discounts.
+</p><!-- l. 129 --><p class='noindent'>
+</p>
+ <h3 class='sectionHead' id='packages'><a id='x1-8000'></a>Packages</h3>
+<!-- l. 131 --><p class='noindent'>One of LaTeX’s strengths is the tremendous number of available add-on packages. This list covers most of
what beginners want to do. (There are some comments in parentheses that often come up in conjunction
+with these recommendations.)
+</p><!-- l. 139 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='our-archive'><a id='x1-9000'></a>Our archive</h4>
+<!-- l. 140 --><p class='noindent'>The Comprehensive TeX Archive Network, <a href='https://ctan.org'><span class='Spectral-Light-lf-t1-'>CTAN</span></a>, has the latest official versions of the packages that are
+in the distributions, along with documentation. <a href='https://ctan.org/topics/cloud'>Browsing by topic</a> can be very handy.
+</p><!-- l. 149 --><p class='indent'> <p>If you have trouble finding something, it may be the house package of a journal or institution. Look on
+their web page as well as on <span class='Spectral-Light-lf-t1-'>CTAN</span>.
-with these recommendations.)
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Our archive </span>The Comprehensive <span class="TEX">T<span
-class="E">E</span>X</span> Archive Network, <a
-href="https://ctan.org" ><span
-class="Spectral-Light-lf-t-1">CTAN</span></a>, has the latest official versions of the
-packages that are in the distributions, along with documentation. <a
-href="https://ctan.org/topics/cloud" >Browsing by topic</a> can be very
-handy.
-
-<p><p>If you have trouble finding something, it may be the house package of a journal or institution. Look on
-their web page as well as on <span
-class="Spectral-Light-lf-t-1">CTAN</span>.
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Every document </span>To change page size, margins, and orientation, use <a
-href="https://ctan.org/pkg/geometry" ><span
-class="ectt-1095">geometry</span></a>.<sup><a
-href="#ennote-10" id="enmark-10"><span
-class="cmr-8">10</span></a></sup> Get multiple columns
-with <a
-href="https://ctan.org/pkg/multicol" ><span
-class="ectt-1095">multicol</span></a>.<sup><a
-href="#ennote-11" id="enmark-11"><span
-class="cmr-8">11</span></a></sup>
- <p>As referred to above, any document containing significant amounts of mathematics should use the
-American Mathematical Society's packages <a
-href="https://ctan.org/pkg/amsmath" ><span
-class="ectt-1095">amsmath</span></a><sup><a
-href="#ennote-12" id="enmark-12"><span
-class="cmr-8">12</span></a></sup> and <a
-href="https://ctan.org/pkg/amsfonts" ><span
-class="ectt-1095">amsfonts</span></a>.<sup><a
-href="#ennote-13" id="enmark-13"><span
-class="cmr-8">13</span></a></sup> Also use their <a
-href="https://ctan.org/pkg/amsthm" ><span
-class="ectt-1095">amsthm</span></a><sup><a
-href="#ennote-14" id="enmark-14"><span
-class="cmr-8">14</span></a></sup> for
-producing theorem environments. Notes: (1)&#x00A0;<a
-href="https://ctan.org/pkg/amsfonts" ><span
-class="ectt-1095">amssymb</span></a> inputs <a
-href="https://ctan.org/pkg/amsfonts" ><span
-class="ectt-1095">amsfonts</span></a> so load the former instead of the
-latter, (2)&#x00A0;many authors also use the calligraphic characters in <a
-href="https://ctan.org/pkg/rsfs" ><span
-class="ectt-1095">rsfs</span></a>,<sup><a
-href="#ennote-15" id="enmark-15"><span
-class="cmr-8">15</span></a></sup> (3)&#x00A0;get bold math symbols with <a
-href="https://ctan.org/pkg/bm" ><span
-class="ectt-1095">bm</span></a>,<sup><a
-href="#ennote-16" id="enmark-16"><span
-class="cmr-8">16</span></a></sup>
-(4)&#x00A0;don't load <a
-href="https://ctan.org/pkg/amsmath" ><span
-class="ectt-1095">amsmath</span></a> directly, instead get it by loading <a
-href="https://ctan.org/pkg/mathtools" ><span
-class="ectt-1095">mathtools</span></a><sup><a
-href="#ennote-17" id="enmark-17"><span
-class="cmr-8">17</span></a></sup> for some useful improvements, and
-(4)&#x00A0;load <a
-href="https://ctan.org/pkg/amsthm" ><span
-class="ectt-1095">amsthm</span></a> after <a
-href="https://ctan.org/pkg/mathtools" ><span
-class="ectt-1095">mathtools</span></a>.
- <p>Also, include <a
-href="https://ctan.org/pkg/microtype" ><span
-class="ectt-1095">microtype</span></a>.<sup><a
-href="#ennote-18" id="enmark-18"><span
-class="cmr-8">18</span></a></sup> It will make your document have fewer awkward lines.
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Inside a document </span>Tweak the layout of lists with <a
-href="https://ctan.org/pkg/enumitem" ><span
-class="ectt-1095">enumitem</span></a>.<sup><a
-href="#ennote-19" id="enmark-19"><span
-class="cmr-8">19</span></a></sup>
- <p>Enhance captions with <a
-href="https://ctan.org/pkg/caption" ><span
-class="ectt-1095">caption</span></a><sup><a
-href="#ennote-20" id="enmark-20"><span
-class="cmr-8">20</span></a></sup> and control floating environments with <a
-href="https://ctan.org/pkg/float" ><span
-class="ectt-1095">float</span></a>.<sup><a
-href="#ennote-21" id="enmark-21"><span
-class="cmr-8">21</span></a></sup> (In particular, this
-package provides the `<span
-class="ectt-1095">H</span>' option to override automatic float placement and put something exactly where you
+</p><!-- l. 155 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='every-document'><a id='x1-10000'></a>Every document</h4>
+<!-- l. 156 --><p class='noindent'>To change page size, margins, and orientation, use <a href='https://ctan.org/pkg/geometry'><span class='ectt-1095'>geometry</span></a>.<sup class='textsuperscript'><a href='#ennote-10' id='enmark-10'><span class='Spectral-Light-lf-t1-'>10</span></a></sup> Get multiple columns with
+<a href='https://ctan.org/pkg/multicol'><span class='ectt-1095'>multicol</span></a>.<sup class='textsuperscript'><a href='#ennote-11' id='enmark-11'><span class='Spectral-Light-lf-t1-'>11</span></a></sup>
+</p><!-- l. 160 --><p class='indent'> <p>As referred to above, any document containing significant amounts of mathematics should use the
+American Mathematical Society’s packages <a href='https://ctan.org/pkg/amsmath'><span class='ectt-1095'>amsmath</span></a><sup class='textsuperscript'><a href='#ennote-12' id='enmark-12'><span class='Spectral-Light-lf-t1-'>12</span></a></sup> and <a href='https://ctan.org/pkg/amsfonts'><span class='ectt-1095'>amsfonts</span></a>.<sup class='textsuperscript'><a href='#ennote-13' id='enmark-13'><span class='Spectral-Light-lf-t1-'>13</span></a></sup> Also use their <a href='https://ctan.org/pkg/amsthm'><span class='ectt-1095'>amsthm</span></a><sup class='textsuperscript'><a href='#ennote-14' id='enmark-14'><span class='Spectral-Light-lf-t1-'>14</span></a></sup> for
+producing theorem environments. Notes: (1)  <a href='https://ctan.org/pkg/amsfonts'><span class='ectt-1095'>amssymb</span></a> inputs <a href='https://ctan.org/pkg/amsfonts'><span class='ectt-1095'>amsfonts</span></a> so load the former instead of the
+latter, (2) many authors also use the calligraphic characters in <a href='https://ctan.org/pkg/rsfs'><span class='ectt-1095'>rsfs</span></a>,<sup class='textsuperscript'><a href='#ennote-15' id='enmark-15'><span class='Spectral-Light-lf-t1-'>15</span></a></sup> (3) get bold math symbols with <a href='https://ctan.org/pkg/bm'><span class='ectt-1095'>bm</span></a>,<sup class='textsuperscript'><a href='#ennote-16' id='enmark-16'><span class='Spectral-Light-lf-t1-'>16</span></a></sup>
+(4) don’t load <a href='https://ctan.org/pkg/amsmath'><span class='ectt-1095'>amsmath</span></a> directly, instead get it by loading <a href='https://ctan.org/pkg/mathtools'><span class='ectt-1095'>mathtools</span></a><sup class='textsuperscript'><a href='#ennote-17' id='enmark-17'><span class='Spectral-Light-lf-t1-'>17</span></a></sup> for some useful improvements, and
+(4) load <a href='https://ctan.org/pkg/amsthm'><span class='ectt-1095'>amsthm</span></a> after <a href='https://ctan.org/pkg/mathtools'><span class='ectt-1095'>mathtools</span></a>.
+</p><!-- l. 178 --><p class='indent'> <p>Also, include <a href='https://ctan.org/pkg/microtype'><span class='ectt-1095'>microtype</span></a>.<sup class='textsuperscript'><a href='#ennote-18' id='enmark-18'><span class='Spectral-Light-lf-t1-'>18</span></a></sup> It will make your document have fewer awkward lines.
+</p><!-- l. 185 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='inside-a-document'><a id='x1-11000'></a>Inside a document</h4>
+<!-- l. 186 --><p class='noindent'>Tweak the layout of lists with <a href='https://ctan.org/pkg/enumitem'><span class='ectt-1095'>enumitem</span></a>.<sup class='textsuperscript'><a href='#ennote-19' id='enmark-19'><span class='Spectral-Light-lf-t1-'>19</span></a></sup>
+</p><!-- l. 188 --><p class='indent'> <p>Enhance captions with <a href='https://ctan.org/pkg/caption'><span class='ectt-1095'>caption</span></a><sup class='textsuperscript'><a href='#ennote-20' id='enmark-20'><span class='Spectral-Light-lf-t1-'>20</span></a></sup> and control floating environments with <a href='https://ctan.org/pkg/float'><span class='ectt-1095'>float</span></a>.<sup class='textsuperscript'><a href='#ennote-21' id='enmark-21'><span class='Spectral-Light-lf-t1-'>21</span></a></sup> (In particular, this
+package provides the ‘<span class='ectt-1095'>H</span>’ option to override automatic float placement and put something exactly where you
ask. This may cause issues&nbsp;&mdash; what if you want to include a two inch tall graphic on a page that has only an
inch left?&nbsp;&mdash; but it sometimes is what you want.)
- <p>Get hyperlinks and turn references into links with <a
-href="https://ctan.org/pkg/hyperref" ><span
-class="ectt-1095">hyperref</span></a><sup><a
-href="#ennote-22" id="enmark-22"><span
-class="cmr-8">22</span></a></sup> (make sure to set it up, as with
-<span class="lstinline"></span><span
-class="ectt-1000">\</span><span
-class="ectt-1000">hypersetup</span><span
-class="ectt-1000">{</span><span
-class="ectt-1000">colorlinks</span><span
-class="ectt-1000">=</span><span
-class="ectt-1000">true</span><span
-class="ectt-1000">}</span>). Have cross-references that say `Theorem&#x00A0;1.2' instead of just `1.2' with
-<a
-href="https://ctan.org/pkg/cleveref" ><span
-class="ectt-1095">cleveref</span></a>.<sup><a
-href="#ennote-23" id="enmark-23"><span
-class="cmr-8">23</span></a></sup> For <span
-class="Spectral-Light-lf-t-1">URL</span>'s and file paths that can break across lines, use <a
-href="https://ctan.org/pkg/url" ><span
-class="ectt-1095">url</span></a>.<sup><a
-href="#ennote-24" id="enmark-24"><span
-class="cmr-8">24</span></a></sup> (If you use <a
-href="https://ctan.org/pkg/hyperref" ><span
-class="ectt-1095">hyperref</span></a> then note
-that it has its own commands for the <a
-href="https://ctan.org/pkg/cleveref" ><span
-class="ectt-1095">cleveref</span></a> and <a
-href="https://ctan.org/pkg/url" ><span
-class="ectt-1095">url</span></a> functions.)
- <p>Inside verbatim text, make single quotes come out correctly with <a
-href="https://ctan.org/pkg/upquote" ><span
-class="ectt-1095">upquote</span></a>.<sup><a
-href="#ennote-25" id="enmark-25"><span
-class="cmr-8">25</span></a></sup> For including computer
-code, the <a
-href="https://ctan.org/pkg/listings" ><span
-class="ectt-1095">listings</span></a><sup><a
-href="#ennote-26" id="enmark-26"><span
-class="cmr-8">26</span></a></sup> package is very popular. (Copy and paste for computer code is especially convenient.
-This is a start for the <a
-href="https://ctan.org/pkg/listings" ><span
-class="ectt-1095">listings</span></a> package. </p><!--l. 219-->
- <div class="lstlisting" id="listing-1"><span class="label"><a
- id="x1-3001r1"></a></span><span
-class="ectt-1000">\</span><span
-class="ectt-1000">lstset</span><span
-class="ectt-1000">{</span><span
-class="ectt-1000">basicstyle</span><span
-class="ectt-1000">=\</span><span
-class="ectt-1000">ttfamily</span><span
-class="ectt-1000">,</span><span
-class="ectt-1000">&#x00A0;</span><br /><span class="label"><a
- id="x1-3002r2"></a></span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">keepspaces</span><span
-class="ectt-1000">=</span><span
-class="ectt-1000">true</span><span
-class="ectt-1000">,</span><span
-class="ectt-1000">&#x00A0;</span><br /><span class="label"><a
- id="x1-3003r3"></a></span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">&#x00A0;</span><span
-class="ectt-1000">columns</span><span
-class="ectt-1000">=</span><span
-class="ectt-1000">fullflexible</span><span
-class="ectt-1000">}</span>
+</p><!-- l. 199 --><p class='indent'> <p>Get hyperlinks and turn references into links with <a href='https://ctan.org/pkg/hyperref'><span class='ectt-1095'>hyperref</span></a><sup class='textsuperscript'><a href='#ennote-22' id='enmark-22'><span class='Spectral-Light-lf-t1-'>22</span></a></sup> (make sure to set it up, as with
+<code class='lstinline'><span style='color:#000000'>\hypersetup{colorlinks=true}</span></code>). Have cross-references that say ‘Theorem 1.2’ instead of just ‘1.2’ with
+<a href='https://ctan.org/pkg/cleveref'><span class='ectt-1095'>cleveref</span></a>.<sup class='textsuperscript'><a href='#ennote-23' id='enmark-23'><span class='Spectral-Light-lf-t1-'>23</span></a></sup> For <span class='Spectral-Light-lf-t1-'>URL</span>’s and file paths that can break across lines, use <a href='https://ctan.org/pkg/url'><span class='ectt-1095'>url</span></a>.<sup class='textsuperscript'><a href='#ennote-24' id='enmark-24'><span class='Spectral-Light-lf-t1-'>24</span></a></sup> (If you use <a href='https://ctan.org/pkg/hyperref'><span class='ectt-1095'>hyperref</span></a> then note
+that it has its own commands for the <a href='https://ctan.org/pkg/cleveref'><span class='ectt-1095'>cleveref</span></a> and <a href='https://ctan.org/pkg/url'><span class='ectt-1095'>url</span></a> functions.)
+</p><!-- l. 210 --><p class='indent'> <p>Inside verbatim text, make single quotes come out correctly with <a href='https://ctan.org/pkg/upquote'><span class='ectt-1095'>upquote</span></a>.<sup class='textsuperscript'><a href='#ennote-25' id='enmark-25'><span class='Spectral-Light-lf-t1-'>25</span></a></sup> For including computer
+code, the <a href='https://ctan.org/pkg/listings'><span class='ectt-1095'>listings</span></a><sup class='textsuperscript'><a href='#ennote-26' id='enmark-26'><span class='Spectral-Light-lf-t1-'>26</span></a></sup> package is very popular. (Copy and paste for computer code is especially convenient.
+This is a start for the <a href='https://ctan.org/pkg/listings'><span class='ectt-1095'>listings</span></a> package. </p><!-- l. 219 -->
+ <pre class='lstlisting' id='listing-2'><span class='label'><a id='x1-11001r1'></a></span><span style='color:#000000'><span class='ectt-1000'>\</span></span><span style='color:#000000'><span class='ectt-1000'>lstset</span></span><span style='color:#000000'><span class='ectt-1000'>{</span></span><span style='color:#000000'><span class='ectt-1000'>basicstyle</span></span><span style='color:#000000'><span class='ectt-1000'>=\</span></span><span style='color:#000000'><span class='ectt-1000'>ttfamily</span></span><span style='color:#000000'><span class='ectt-1000'>,</span></span>
+<span class='label'><a id='x1-11002r2'></a></span><span style='color:#000000'> <span class='ectt-1000'>keepspaces=true,</span>
+</span><span class='label'><a id='x1-11003r3'></a></span><span style='color:#000000'> <span class='ectt-1000'>columns=fullflexible}</span></span></pre>
- </div>
- But it is not a full solution. The results depend on the <span
-class="Spectral-Light-lf-t-1">PDF </span>viewer and worse, if your code line begins
+<!-- l. 224 --><p class='indent'> But it is not a full solution. The results depend on the <span class='Spectral-Light-lf-t1-'>PDF </span>viewer and worse, if your code line begins
with blank spaces then after copy and paste those spaces are gone.)
- <p>If you use Python, <a
-href="https://ctan.org/pkg/pythontex" ><span
-class="ectt-1095">pythontex</span></a><sup><a
-href="#ennote-27" id="enmark-27"><span
-class="cmr-8">27</span></a></sup> will show code listings, but it also allows you to execute Python and put
-the results in your output. Do the same for the <span
-class="Spectral-LightItalic-lf-t-1x-x-109">Sage </span>mathematics software with <a
-href="https://ctan.org/pkg/sagetex" ><span
-class="ectt-1095">sagetex</span></a>, and similar
+</p><!-- l. 229 --><p class='indent'> <p>If you use Python, <a href='https://ctan.org/pkg/pythontex'><span class='ectt-1095'>pythontex</span></a><sup class='textsuperscript'><a href='#ennote-27' id='enmark-27'><span class='Spectral-Light-lf-t1-'>27</span></a></sup> will show code listings, but it also allows you to execute Python and put
+the results in your output. Do the same for the <span class='Spectral-LightItalic-lf-t1-x-x-109'>Sage </span>mathematics software with <a href='https://ctan.org/pkg/sagetex'><span class='ectt-1095'>sagetex</span></a>, and similar
support exists for other languages.
- <p>There are many packages that add table capabilities, such as multirow entries and breaking across
-pages. The first package to try is <a
-href="https://ctan.org/pkg/array" ><span
-class="ectt-1095">array</span></a>,<sup><a
-href="#ennote-28" id="enmark-28"><span
-class="cmr-8">28</span></a></sup> which lets you define your own column types. To handle
-scientific units, use <a
-href="https://ctan.org/pkg/siunitx" ><span
-class="ectt-1095">siunitx</span></a><sup><a
-href="#ennote-29" id="enmark-29"><span
-class="cmr-8">29</span></a></sup> (which also has a table column type for aligning on a decimal
+</p><!-- l. 238 --><p class='indent'> <p>There are many packages that add table capabilities, such as multirow entries and breaking across
+pages. The first package to try is <a href='https://ctan.org/pkg/array'><span class='ectt-1095'>array</span></a>,<sup class='textsuperscript'><a href='#ennote-28' id='enmark-28'><span class='Spectral-Light-lf-t1-'>28</span></a></sup> which lets you define your own column types. To handle
+scientific units, use <a href='https://ctan.org/pkg/siunitx'><span class='ectt-1095'>siunitx</span></a><sup class='textsuperscript'><a href='#ennote-29' id='enmark-29'><span class='Spectral-Light-lf-t1-'>29</span></a></sup> (which also has a table column type for aligning on a decimal
point).
- <p>Make boxes that are colored or framed, such as boxes for theorems, with <a
-href="https://ctan.org/pkg/tcolorbox" ><span
-class="ectt-1095">tcolorbox</span></a>.<sup><a
-href="#ennote-30" id="enmark-30"><span
-class="cmr-8">30</span></a></sup>
- <p>Use <a
-href="https://ctan.org/pkg/babel" ><span
-class="ectt-1095">babel</span></a><sup><a
-href="#ennote-31" id="enmark-31"><span
-class="cmr-8">31</span></a></sup> for internationalization, including changing the title of the abstract or the bibliography.
-(Note that <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> now defaults to UTF-8 encoded input.)
- <p>Finally, when developing a document, you often want to generate filler text. Use <a
-href="https://ctan.org/pkg/lipsum" ><span
-class="ectt-1095">lipsum</span></a>.<sup><a
-href="#ennote-32" id="enmark-32"><span
-class="cmr-8">32</span></a></sup>
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Color and graphics </span>For colors, use <a
-href="https://ctan.org/pkg/xcolor" ><span
-class="ectt-1095">xcolor</span></a>.<sup><a
-href="#ennote-33" id="enmark-33"><span
-class="cmr-8">33</span></a></sup>
- <p>To include graphics and do simple manipulations such as resizing, use <a
-href="https://ctan.org/pkg/graphicx" ><span
-class="ectt-1095">graphicx</span></a>.<sup><a
-href="#ennote-34" id="enmark-34"><span
-class="cmr-8">34</span></a></sup> Use the <span
-class="Spectral-Light-lf-t-1">JPG </span>format
-for photos, <span
-class="Spectral-Light-lf-t-1">PNG </span>for other kinds of raster graphics, and <span
-class="Spectral-Light-lf-t-1">PDF </span>for vector graphics. If your graphic is in another
+</p><!-- l. 247 --><p class='indent'> <p>Make boxes that are colored or framed, such as boxes for theorems, with <a href='https://ctan.org/pkg/tcolorbox'><span class='ectt-1095'>tcolorbox</span></a>.<sup class='textsuperscript'><a href='#ennote-30' id='enmark-30'><span class='Spectral-Light-lf-t1-'>30</span></a></sup>
+</p><!-- l. 251 --><p class='indent'> Use <a href='https://ctan.org/pkg/babel'><span class='ectt-1095'>babel</span></a><sup class='textsuperscript'><a href='#ennote-31' id='enmark-31'><span class='Spectral-Light-lf-t1-'>31</span></a></sup> for internationalization, including changing the title of the abstract or the bibliography.
+(Note that LaTeX now defaults to UTF-8 encoded input.)
+</p><!-- l. 256 --><p class='indent'> <p>Finally, when developing a document, you often want to generate filler text. Use <a href='https://ctan.org/pkg/lipsum'><span class='ectt-1095'>lipsum</span></a>.<sup class='textsuperscript'><a href='#ennote-32' id='enmark-32'><span class='Spectral-Light-lf-t1-'>32</span></a></sup>
-format then convert it to one of these three. (Usually in your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> source, you give the file name without
-the extension, as with <span class="lstinline"></span><span
-class="ectt-1000">\</span><span
-class="ectt-1000">includegraphics</span><span
-class="ectt-1000">{</span><span
-class="ectt-1000">myplot</span><span
-class="ectt-1000">}</span>.) Include parts of an outside <span
-class="Spectral-Light-lf-t-1">PDF </span>document with
-<a
-href="https://ctan.org/pkg/pdfpages" ><span
-class="ectt-1095">pdfpages</span></a>.<sup><a
-href="#ennote-35" id="enmark-35"><span
-class="cmr-8">35</span></a></sup> Include video or sound using <a
-href="https://ctan.org/pkg/media9" ><span
-class="ectt-1095">media9</span></a>.<sup><a
-href="#ennote-36" id="enmark-36"><span
-class="cmr-8">36</span></a></sup>
- <p>In your plots and graphics, you want that the fonts and notations match your document. You have a few
-choices. Draw inside your document with <a
-href="https://ctan.org/pkg/pgf" >Ti<span
-class="Spectral-LightItalic-lf-t-1x-x-109">k</span>Z</a>.<sup><a
-href="#ennote-37" id="enmark-37"><span
-class="cmr-8">37</span></a></sup> You can instead draw using an external command
-language such as <a
-href="https://asymptote.sourceforge.io/" >Asymptote</a>,<sup><a
-href="#ennote-38" id="enmark-38"><span
-class="cmr-8">38</span></a></sup> and bring the results in as graphics. And there are other options, such as
-that the <a
-href="http://www.gnuplot.info/" >Gnuplot</a> plotting software will output Ti<span
-class="Spectral-LightItalic-lf-t-1x-x-109">k</span>Z commands, and the <a
-href="https://inkscape.org/" >Inkscape</a> vector graphics editor
-allows you to embed <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>-generated equations.
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Front and back matter, headers, footers </span>To style chapter and section titles, use <a
-href="https://ctan.org/pkg/titlesec" ><span
-class="ectt-1095">titlesec</span></a>.<sup><a
-href="#ennote-39" id="enmark-39"><span
-class="cmr-8">39</span></a></sup> For page
-headers and footers, reach for <a
-href="https://ctan.org/pkg/fancyhdr" ><span
-class="ectt-1095">fancyhdr</span></a>.<sup><a
-href="#ennote-40" id="enmark-40"><span
-class="cmr-8">40</span></a></sup> You can tweak the format of tables of contents, lists of figures,
-etc., with <a
-href="https://ctan.org/pkg/tocloft" ><span
-class="ectt-1095">tocloft</span></a>.<sup><a
-href="#ennote-41" id="enmark-41"><span
-class="cmr-8">41</span></a></sup>
- <p>For footnotes, use <a
-href="https://ctan.org/pkg/footmisc" ><span
-class="ectt-1095">footmisc</span></a>.<sup><a
-href="#ennote-42" id="enmark-42"><span
-class="cmr-8">42</span></a></sup> Make an index with <a
-href="https://ctan.org/pkg/makeindex" ><span
-class="ectt-1095">makeindex</span></a>.<sup><a
-href="#ennote-43" id="enmark-43"><span
-class="cmr-8">43</span></a></sup> With <a
-href="https://ctan.org/pkg/answers" ><span
-class="ectt-1095">answers</span></a><sup><a
-href="#ennote-44" id="enmark-44"><span
-class="cmr-8">44</span></a></sup> you can send exercise
-answers to an external file, where you can make them a separate document or include them at the end of the
-current one.
- <p>Bibliographies are a thorny area. Often you have strict requirements, such as from the <a
-href="https://ctan.org/pkg/MLA" ><span
-class="ectt-1095">MLA</span></a>.<sup><a
-href="#ennote-45" id="enmark-45"><span
-class="cmr-8">45</span></a></sup> <span
-class="Spectral-Light-lf-t-1">CTAN </span>is a
-big help here; check out the many styles for both <a
-href="https://ctan.org/topic/bibtex-sty" >B<span
-class="Spectral-Light-lf-sc-t-1x-x-109">ib</span><span class="TEX">T<span
-class="E">E</span>X</span></a><sup><a
-href="#ennote-46" id="enmark-46"><span
-class="cmr-8">46</span></a></sup> and <a
-href="https://ctan.org/topic/biblatex" >B<span
-class="Spectral-Light-lf-sc-t-1x-x-109">ib</span><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span></a>.<sup><a
-href="#ennote-47" id="enmark-47"><span
-class="cmr-8">47</span></a></sup>
-<p class="subsection"><span
-class="Spectral-Bold-lf-t-1x-x-109">Special documents </span>Make exams and problem sets with the <a
-href="https://ctan.org/pkg/exam" ><span
-class="ectt-1095">exam</span></a><sup><a
-href="#ennote-48" id="enmark-48"><span
-class="cmr-8">48</span></a></sup> class.
- <p>There are many, many resume and CV packages. Start with <span
-class="Spectral-Light-lf-t-1">CTAN</span>'s <a
-href="https://ctan.org/topic/cv" >cv topic</a>.
- <p>To make presentations, use the <a
-href="https://ctan.org/pkg/beamer" ><span
-class="ectt-1095">beamer</span></a><sup><a
-href="#ennote-49" id="enmark-49"><span
-class="cmr-8">49</span></a></sup> class. (However, with this package you are entering another
+</p><!-- l. 263 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='color-and-graphics'><a id='x1-12000'></a>Color and graphics</h4>
+<!-- l. 264 --><p class='noindent'>For colors, use <a href='https://ctan.org/pkg/xcolor'><span class='ectt-1095'>xcolor</span></a>.<sup class='textsuperscript'><a href='#ennote-33' id='enmark-33'><span class='Spectral-Light-lf-t1-'>33</span></a></sup>
+</p><!-- l. 267 --><p class='indent'> <p>To include graphics and do simple manipulations such as resizing, use <a href='https://ctan.org/pkg/graphicx'><span class='ectt-1095'>graphicx</span></a>.<sup class='textsuperscript'><a href='#ennote-34' id='enmark-34'><span class='Spectral-Light-lf-t1-'>34</span></a></sup> Use the <span class='Spectral-Light-lf-t1-'>JPG </span>format
+for photos, <span class='Spectral-Light-lf-t1-'>PNG </span>for other kinds of raster graphics, and <span class='Spectral-Light-lf-t1-'>PDF </span>for vector graphics. If your graphic is in another
+format then convert it to one of these three. (Usually in your LaTeX source, you give the file name without
+the extension, as with <code class='lstinline'><span style='color:#000000'>\includegraphics{myplot}</span></code>.) Include parts of an outside <span class='Spectral-Light-lf-t1-'>PDF </span>document with
+<a href='https://ctan.org/pkg/pdfpages'><span class='ectt-1095'>pdfpages</span></a>.<sup class='textsuperscript'><a href='#ennote-35' id='enmark-35'><span class='Spectral-Light-lf-t1-'>35</span></a></sup> Include video or sound using <a href='https://ctan.org/pkg/media9'><span class='ectt-1095'>media9</span></a>.<sup class='textsuperscript'><a href='#ennote-36' id='enmark-36'><span class='Spectral-Light-lf-t1-'>36</span></a></sup>
+</p><!-- l. 280 --><p class='indent'> <p>In your plots and graphics, you want that the fonts and notations match your document. You have a few
+choices. Draw inside your document with <a href='https://ctan.org/pkg/pgf'>Ti<span class='Spectral-LightItalic-lf-t1-x-x-109'>k</span>Z</a>.<sup class='textsuperscript'><a href='#ennote-37' id='enmark-37'><span class='Spectral-Light-lf-t1-'>37</span></a></sup> You can instead draw using an external command
+language such as <a href='https://asymptote.sourceforge.io/'>Asymptote</a>,<sup class='textsuperscript'><a href='#ennote-38' id='enmark-38'><span class='Spectral-Light-lf-t1-'>38</span></a></sup> and bring the results in as graphics. And there are other options, such as
+that the <a href='http://www.gnuplot.info/'>Gnuplot</a> plotting software will output Ti<span class='Spectral-LightItalic-lf-t1-x-x-109'>k</span>Z commands, and the <a href='https://inkscape.org/'>Inkscape</a> vector graphics editor
+allows you to embed LaTeX-generated equations.
+</p><!-- l. 296 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='front-and-back-matter-headers-footers'><a id='x1-13000'></a>Front and back matter, headers, footers</h4>
+<!-- l. 297 --><p class='noindent'>To style chapter and section titles, use <a href='https://ctan.org/pkg/titlesec'><span class='ectt-1095'>titlesec</span></a>.<sup class='textsuperscript'><a href='#ennote-39' id='enmark-39'><span class='Spectral-Light-lf-t1-'>39</span></a></sup> For page headers and footers, reach for <a href='https://ctan.org/pkg/fancyhdr'><span class='ectt-1095'>fancyhdr</span></a>.<sup class='textsuperscript'><a href='#ennote-40' id='enmark-40'><span class='Spectral-Light-lf-t1-'>40</span></a></sup>
+You can tweak the format of tables of contents, lists of figures, etc., with <a href='https://ctan.org/pkg/tocloft'><span class='ectt-1095'>tocloft</span></a>.<sup class='textsuperscript'><a href='#ennote-41' id='enmark-41'><span class='Spectral-Light-lf-t1-'>41</span></a></sup>
+</p><!-- l. 305 --><p class='indent'> <p>For footnotes, use <a href='https://ctan.org/pkg/footmisc'><span class='ectt-1095'>footmisc</span></a>.<sup class='textsuperscript'><a href='#ennote-42' id='enmark-42'><span class='Spectral-Light-lf-t1-'>42</span></a></sup> Make an index with <a href='https://ctan.org/pkg/makeindex'><span class='ectt-1095'>makeindex</span></a>.<sup class='textsuperscript'><a href='#ennote-43' id='enmark-43'><span class='Spectral-Light-lf-t1-'>43</span></a></sup> With <a href='https://ctan.org/pkg/answers'><span class='ectt-1095'>answers</span></a><sup class='textsuperscript'><a href='#ennote-44' id='enmark-44'><span class='Spectral-Light-lf-t1-'>44</span></a></sup> you can send
+exercise answers to an external file, where you can make them a separate document or include them at the
+end of the current one.
+</p><!-- l. 313 --><p class='indent'> <p>Bibliographies are a thorny area. Often you have strict requirements, such as from the <a href='https://ctan.org/pkg/MLA'><span class='ectt-1095'>MLA</span></a>.<sup class='textsuperscript'><a href='#ennote-45' id='enmark-45'><span class='Spectral-Light-lf-t1-'>45</span></a></sup> <span class='Spectral-Light-lf-t1-'>CTAN </span>is a
+big help here; check out the many styles for both <a href='https://ctan.org/topic/bibtex-sty'>B<span class='Spectral-Light-lf-sc-t1-x-x-109'>ib</span>TeX</a><sup class='textsuperscript'><a href='#ennote-46' id='enmark-46'><span class='Spectral-Light-lf-t1-'>46</span></a></sup> and <a href='https://ctan.org/topic/biblatex'>B<span class='Spectral-Light-lf-sc-t1-x-x-109'>ib</span>LaTeX</a>.<sup class='textsuperscript'><a href='#ennote-47' id='enmark-47'><span class='Spectral-Light-lf-t1-'>47</span></a></sup>
+</p><!-- l. 324 --><p class='noindent'>
+</p>
+ <h4 class='subsectionHead' id='special-documents'><a id='x1-14000'></a>Special documents</h4>
+<!-- l. 325 --><p class='noindent'>Make exams and problem sets with the <a href='https://ctan.org/pkg/exam'><span class='ectt-1095'>exam</span></a><sup class='textsuperscript'><a href='#ennote-48' id='enmark-48'><span class='Spectral-Light-lf-t1-'>48</span></a></sup> class.
+</p><!-- l. 329 --><p class='indent'> <p>There are many, many resume and CV packages. Start with <span class='Spectral-Light-lf-t1-'>CTAN</span>’s <a href='https://ctan.org/topic/cv'>cv topic</a>.
+</p><!-- l. 333 --><p class='indent'> <p>To make presentations, use the <a href='https://ctan.org/pkg/beamer'><span class='ectt-1095'>beamer</span></a><sup class='textsuperscript'><a href='#ennote-49' id='enmark-49'><span class='Spectral-Light-lf-t1-'>49</span></a></sup> class. (However, with this package you are entering another
world, where many of the packages discussed here do not work. For example, section title styling happens
via a completely different mechanism.)
-<h3 class="sectionHead"><a
- id="x1-4000"></a>Fonts and engines</h3>
-<!--l. 344--><p class="noindent" >The documentation for font use commands from the <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> developers is <a
-href="http://mirror.ctan.org/macros/latex/base/fntguide.pdf" ><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>2<span
-class="cmmi-10x-x-109">&#x03B5;</span> font selection</a>.<sup><a
-href="#ennote-50" id="enmark-50"><span
-class="cmr-8">50</span></a></sup>
-</p><!--l. 348--><p class="indent" > To move beyond the default fonts, visit the <a
-href="https://tug.org/FontCatalogue/" ><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span>&#x00A0;Font Catalogue</a>, which includes copy and paste code
+</p><!-- l. 343 --><p class='noindent'>
+</p>
+ <h3 class='sectionHead' id='fonts-and-engines'><a id='x1-15000'></a>Fonts and engines</h3>
+<!-- l. 344 --><p class='noindent'>The documentation for font use commands from the LaTeX developers is <a href='http://mirror.ctan.org/macros/latex/base/fntguide.pdf'>LaTeX2e font selection</a>.<sup class='textsuperscript'><a href='#ennote-50' id='enmark-50'><span class='Spectral-Light-lf-t1-'>50</span></a></sup>
+</p><!-- l. 348 --><p class='indent'> To move beyond the default fonts, visit the <a href='https://tug.org/FontCatalogue/'>LaTeX Font Catalogue</a>, which includes copy and paste code
to make each one work.
-</p><!--l. 353--><p class="indent" > Beyond that list, you can also use your computer system's fonts (beware this makes your source
-harder to share with friends, though). The background is:&#x00A0;to convert <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> source to <span
-class="Spectral-Light-lf-t-1">PDF</span>
-output there are three varieties of the <span class="TEX">T<span
-class="E">E</span>X</span> engine. Currently the most common is <a
-href="https://tug.org/applications/pdftex/" >pdf<span class="TEX">T<span
-class="E">E</span>X</span></a>.<sup><a
-href="#ennote-51" id="enmark-51"><span
-class="cmr-8">51</span></a></sup>
-For instance, this document was generated with <span class="obeylines-h"><span class="verb"><span
-class="ectt-1095">pdflatex</span><span
-class="ectt-1095">&#x00A0;latex-doc-ptr.tex</span></span></span>. Two further
-developments, <a
-href="https://tug.org/xetex/" >Xe<span class="TEX">T<span
-class="E">E</span>X</span></a>,<sup><a
-href="#ennote-52" id="enmark-52"><span
-class="cmr-8">52</span></a></sup> and <a
-href="http://www.luatex.org/" >Lua<span class="TEX">T<span
-class="E">E</span>X</span></a>,<sup><a
-href="#ennote-53" id="enmark-53"><span
-class="cmr-8">53</span></a></sup> can leverage the <a
-href="https://ctan.org/pkg/fontspec" ><span
-class="ectt-1095">fontspec</span></a><sup><a
-href="#ennote-54" id="enmark-54"><span
-class="cmr-8">54</span></a></sup> package to use your system's fonts,
-such as OpenType and TrueType fonts, in addition to the ones from your <span class="TEX">T<span
-class="E">E</span>X</span> distribution.
+</p><!-- l. 353 --><p class='indent'> Beyond that list, you can also use your computer system’s fonts (this may make your source file harder to
+share with friends, though). The background is: to convert LaTeX source to <span class='Spectral-Light-lf-t1-'>PDF </span>output there
+
+
+are three varieties of the TeX engine. Currently the most common is <a href='https://tug.org/applications/pdftex/'>pdfTeX</a>.<sup class='textsuperscript'><a href='#ennote-51' id='enmark-51'><span class='Spectral-Light-lf-t1-'>51</span></a></sup> For instance,
+this document was generated with <span class='obeylines-h'><code class='verb'>pdflatex latex-doc-ptr.tex</code></span>. Two further developments,
+<a href='https://tug.org/xetex/'>X ETeX</a>,<sup class='textsuperscript'><a href='#ennote-52' id='enmark-52'><span class='Spectral-Light-lf-t1-'>52</span></a></sup> and <a href='http://www.luatex.org/'>LuaTeX</a>,<sup class='textsuperscript'><a href='#ennote-53' id='enmark-53'><span class='Spectral-Light-lf-t1-'>53</span></a></sup> can leverage the <a href='https://ctan.org/pkg/fontspec'><span class='ectt-1095'>fontspec</span></a><sup class='textsuperscript'><a href='#ennote-54' id='enmark-54'><span class='Spectral-Light-lf-t1-'>54</span></a></sup> package to use your system’s fonts,
+such as OpenType and TrueType fonts, in addition to the ones from your TeX distribution.
(Mathematics requires much special tuning, though, so most of the time you cannot use system fonts for
math.)
-</p><!--l. 376--><p class="indent" > More is on the <a
-href="https://tug.org/fonts/" ><span class="TEX">T<span
-class="E">E</span>X</span> Users Group's font page</a>.
+</p><!-- l. 376 --><p class='indent'> More is on the <a href='https://tug.org/fonts/'>TeX Users Group’s font page</a>.
+</p><!-- l. 384 --><p class='noindent'>
</p>
-<h3 class="sectionHead"><a
- id="x1-5000"></a>Writing <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span></h3>
-<!--l. 386--><p class="noindent" ><p>There are many ways to make writing <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> source easier. Most people use a source code editor, such as
-<a
-href="https://www.texstudio.org/" ><span class="TEX">T<span
-class="E">E</span>X</span>studio</a>, or Emacs with the add-on mode <a
-href="https://www.gnu.org/software/auctex/" >AUC-<span class="TEX">T<span
-class="E">E</span>X</span></a>, or <a
-href="https://pages.uoregon.edu/koch/texshop/" ><span class="TEX">T<span
-class="E">E</span>X</span>Shop</a> on a Mac.
+ <h3 class='sectionHead' id='writing-latex'><a id='x1-16000'></a>Writing LaTeX</h3>
+<!-- l. 386 --><p class='noindent'><p>There are many ways to make writing LaTeX source easier. Most people use a source code editor, such as
+<a href='https://www.texstudio.org/'>TeXstudio</a>, or Emacs with the add-on mode <a href='https://www.gnu.org/software/auctex/'>AUC-TeX</a>, or <a href='https://pages.uoregon.edu/koch/texshop/'>TeXShop</a> on a Mac.
+</p><!-- l. 400 --><p class='noindent'>
</p>
-<h3 class="sectionHead"><a
- id="x1-6000"></a>Pronunciation</h3>
-<!--l. 401--><p class="noindent" >Pronounce <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
-class="E">E</span>X</span></span> as &apos;la-tech&apos; or &apos;lay-tech&apos;, with emphasis on either syllable. We prefer the first, with
+ <h3 class='sectionHead' id='pronunciation'><a id='x1-17000'></a>Pronunciation</h3>
+<!-- l. 401 --><p class='noindent'>Pronounce LaTeX as &apos;la-tech&apos; or &apos;lay-tech&apos;, with emphasis on either syllable. We prefer the first, with
emphasis on the first syllable.
+</p><!-- l. 408 --><p class='noindent'>
</p>
-<h3 class="sectionHead"><a
- id="x1-7000"></a>Welcome to the community!</h3>
-<!--l. 409--><p class="noindent" >One reason that all of these resources are available is the work of the many <a
-href="https://tug.org/usergroups.html" >user groups</a>, including the <a
-href="https://tug.org/" ><span class="TEX">T<span
-class="E">E</span>X</span>
-
-
+ <h3 class='sectionHead' id='this-document'><a id='x1-18000'></a>This document</h3>
+<!-- l. 409 --><p class='noindent'>To contact this document’s authors with suggestions and corrections please see its page at
+<a class='url' href='https://ctan.org/pkg/latex-doc-ptr'><span class='ectt-1095'>https://ctan.org/pkg/latex-doc-ptr</span></a>.
+</p><!-- l. 415 --><p class='noindent'>
+</p>
+ <h3 class='sectionHead' id='welcome-to-the-community'><a id='x1-19000'></a>Welcome to the community!</h3>
+<!-- l. 417 --><p class='noindent'>One reason that all of these resources are available is the work of the many <a href='https://tug.org/usergroups.html'>user groups</a>, including the <a href='https://tug.org/'>TeX
Users Group</a>. Please consider joining.
-</p><!--l. 421--><p class="noindent" >_________________________________________________________________________________________
+</p><!-- l. 426 --><p class='noindent'>_________________________________________________________________________________________
+</p><!-- l. 429 --><p class='noindent'>
</p>
-<h3 class="sectionHead"><a
- id="x1-8000"></a>Package names, for texdoc</h3>
-<!--l. 424--><p class="noindent" ></p><!--l. 4--><p class="indent" > <a
-href="#enmark-1" id="ennote-1"><sup><span
-class="cmr-6">1</span></sup></a><a
-href="https://ctan.org/pkg/lshort" ><span
-class="ectt-0900">lshort</span></a> <a
-href="#enmark-2" id="ennote-2"><sup><span
-class="cmr-6">2</span></sup></a><a
-href="https://ctan.org/pkg/amshelp" ><span
-class="ectt-0900">amshelp</span></a> <a
-href="#enmark-3" id="ennote-3"><sup><span
-class="cmr-6">3</span></sup></a><a
-href="https://ctan.org/pkg/amsmath" ><span
-class="ectt-0900">amsmath</span></a> <a
-href="#enmark-4" id="ennote-4"><sup><span
-class="cmr-6">4</span></sup></a><a
-href="https://ctan.org/pkg/latex2e" ><span
-class="ectt-0900">latex2e</span></a> <a
-href="#enmark-5" id="ennote-5"><sup><span
-class="cmr-6">5</span></sup></a><a
-href="https://ctan.org/pkg/comprehensive" ><span
-class="ectt-0900">comprehensive</span></a> <a
-href="#enmark-6" id="ennote-6"><sup><span
-class="cmr-6">6</span></sup></a><a
-href="https://ctan.org/pkg/faq" ><span
-class="ectt-0900">faq</span></a> <a
-href="#enmark-7" id="ennote-7"><sup><span
-class="cmr-6">7</span></sup></a><a
-href="https://ctan.org/pkg/latexcheat" ><span
-class="ectt-0900">latexcheat</span></a> <a
-href="#enmark-8" id="ennote-8"><sup><span
-class="cmr-6">8</span></sup></a><a
-href="https://ctan.org/pkg/undergradmath" ><span
-class="ectt-0900">undergradmath</span></a> <a
-href="#enmark-9" id="ennote-9"><sup><span
-class="cmr-6">9</span></sup></a><a
-href="https://ctan.org/pkg/l2tabuen" ><span
-class="ectt-0900">l2tabuen</span></a> <a
-href="#enmark-10" id="ennote-10"><sup><span
-class="cmr-6">10</span></sup></a><a
-href="https://ctan.org/pkg/geometry" ><span
-class="ectt-0900">geometry</span></a>
-<a
-href="#enmark-11" id="ennote-11"><sup><span
-class="cmr-6">11</span></sup></a><a
-href="https://ctan.org/pkg/multicol" ><span
-class="ectt-0900">multicol</span></a> <a
-href="#enmark-12" id="ennote-12"><sup><span
-class="cmr-6">12</span></sup></a><a
-href="https://ctan.org/pkg/amsmath" ><span
-class="ectt-0900">amsmath</span></a> <a
-href="#enmark-13" id="ennote-13"><sup><span
-class="cmr-6">13</span></sup></a><a
-href="https://ctan.org/pkg/amssymb" ><span
-class="ectt-0900">amssymb</span></a> <a
-href="#enmark-14" id="ennote-14"><sup><span
-class="cmr-6">14</span></sup></a><a
-href="https://ctan.org/pkg/amsthm" ><span
-class="ectt-0900">amsthm</span></a> <a
-href="#enmark-15" id="ennote-15"><sup><span
-class="cmr-6">15</span></sup></a><a
-href="https://ctan.org/pkg/rsfs" ><span
-class="ectt-0900">rsfs</span></a> <a
-href="#enmark-16" id="ennote-16"><sup><span
-class="cmr-6">16</span></sup></a><a
-href="https://ctan.org/pkg/bm" ><span
-class="ectt-0900">bm</span></a> <a
-href="#enmark-17" id="ennote-17"><sup><span
-class="cmr-6">17</span></sup></a><a
-href="https://ctan.org/pkg/mathtools" ><span
-class="ectt-0900">mathtools</span></a> <a
-href="#enmark-18" id="ennote-18"><sup><span
-class="cmr-6">18</span></sup></a><a
-href="https://ctan.org/pkg/microtype" ><span
-class="ectt-0900">microtype</span></a> <a
-href="#enmark-19" id="ennote-19"><sup><span
-class="cmr-6">19</span></sup></a><a
-href="https://ctan.org/pkg/enumitem" ><span
-class="ectt-0900">enumitem</span></a> <a
-href="#enmark-20" id="ennote-20"><sup><span
-class="cmr-6">20</span></sup></a><a
-href="https://ctan.org/pkg/caption" ><span
-class="ectt-0900">caption</span></a> <a
-href="#enmark-21" id="ennote-21"><sup><span
-class="cmr-6">21</span></sup></a><a
-href="https://ctan.org/pkg/float" ><span
-class="ectt-0900">float</span></a>
-<a
-href="#enmark-22" id="ennote-22"><sup><span
-class="cmr-6">22</span></sup></a><a
-href="https://ctan.org/pkg/hyperref" ><span
-class="ectt-0900">hyperref</span></a> <a
-href="#enmark-23" id="ennote-23"><sup><span
-class="cmr-6">23</span></sup></a><a
-href="https://ctan.org/pkg/cleveref" ><span
-class="ectt-0900">cleveref</span></a> <a
-href="#enmark-24" id="ennote-24"><sup><span
-class="cmr-6">24</span></sup></a><a
-href="https://ctan.org/pkg/url" ><span
-class="ectt-0900">url</span></a> <a
-href="#enmark-25" id="ennote-25"><sup><span
-class="cmr-6">25</span></sup></a><a
-href="https://ctan.org/pkg/upquote" ><span
-class="ectt-0900">upquote</span></a> <a
-href="#enmark-26" id="ennote-26"><sup><span
-class="cmr-6">26</span></sup></a><a
-href="https://ctan.org/pkg/listings" ><span
-class="ectt-0900">listings</span></a> <a
-href="#enmark-27" id="ennote-27"><sup><span
-class="cmr-6">27</span></sup></a><a
-href="https://ctan.org/pkg/pythontex" ><span
-class="ectt-0900">pythontex</span></a> <a
-href="#enmark-28" id="ennote-28"><sup><span
-class="cmr-6">28</span></sup></a><a
-href="https://ctan.org/pkg/array" ><span
-class="ectt-0900">array</span></a> <a
-href="#enmark-29" id="ennote-29"><sup><span
-class="cmr-6">29</span></sup></a><a
-href="https://ctan.org/pkg/siunitx" ><span
-class="ectt-0900">siunitx</span></a> <a
-href="#enmark-30" id="ennote-30"><sup><span
-class="cmr-6">30</span></sup></a><a
-href="https://ctan.org/pkg/tcolorbox" ><span
-class="ectt-0900">tcolorbox</span></a> <a
-href="#enmark-31" id="ennote-31"><sup><span
-class="cmr-6">31</span></sup></a><a
-href="https://ctan.org/pkg/babel" ><span
-class="ectt-0900">babel</span></a> <a
-href="#enmark-32" id="ennote-32"><sup><span
-class="cmr-6">32</span></sup></a><a
-href="https://ctan.org/pkg/lipsum" ><span
-class="ectt-0900">lipsum</span></a>
-<a
-href="#enmark-33" id="ennote-33"><sup><span
-class="cmr-6">33</span></sup></a><a
-href="https://ctan.org/pkg/xcolor" ><span
-class="ectt-0900">xcolor</span></a> <a
-href="#enmark-34" id="ennote-34"><sup><span
-class="cmr-6">34</span></sup></a><a
-href="https://ctan.org/pkg/graphics" ><span
-class="ectt-0900">graphics</span></a> <a
-href="#enmark-35" id="ennote-35"><sup><span
-class="cmr-6">35</span></sup></a><a
-href="https://ctan.org/pkg/pdfpages" ><span
-class="ectt-0900">pdfpages</span></a> <a
-href="#enmark-36" id="ennote-36"><sup><span
-class="cmr-6">36</span></sup></a><a
-href="https://ctan.org/pkg/media9" ><span
-class="ectt-0900">media9</span></a> <a
-href="#enmark-37" id="ennote-37"><sup><span
-class="cmr-6">37</span></sup></a><a
-href="https://ctan.org/pkg/tikz" ><span
-class="ectt-0900">tikz</span></a> <a
-href="#enmark-38" id="ennote-38"><sup><span
-class="cmr-6">38</span></sup></a><a
-href="https://ctan.org/pkg/asymptote" ><span
-class="ectt-0900">asymptote</span></a> <a
-href="#enmark-39" id="ennote-39"><sup><span
-class="cmr-6">39</span></sup></a><a
-href="https://ctan.org/pkg/titlesec" ><span
-class="ectt-0900">titlesec</span></a> <a
-href="#enmark-40" id="ennote-40"><sup><span
-class="cmr-6">40</span></sup></a><a
-href="https://ctan.org/pkg/fancyhdr" ><span
-class="ectt-0900">fancyhdr</span></a> <a
-href="#enmark-41" id="ennote-41"><sup><span
-class="cmr-6">41</span></sup></a><a
-href="https://ctan.org/pkg/tocloft" ><span
-class="ectt-0900">tocloft</span></a> <a
-href="#enmark-42" id="ennote-42"><sup><span
-class="cmr-6">42</span></sup></a><a
-href="https://ctan.org/pkg/footmisc" ><span
-class="ectt-0900">footmisc</span></a>
-<a
-href="#enmark-43" id="ennote-43"><sup><span
-class="cmr-6">43</span></sup></a><a
-href="https://ctan.org/pkg/makeindex" ><span
-class="ectt-0900">makeindex</span></a> <a
-href="#enmark-44" id="ennote-44"><sup><span
-class="cmr-6">44</span></sup></a><a
-href="https://ctan.org/pkg/answers" ><span
-class="ectt-0900">answers</span></a> <a
-href="#enmark-45" id="ennote-45"><sup><span
-class="cmr-6">45</span></sup></a><a
-href="https://ctan.org/pkg/mla" ><span
-class="ectt-0900">mla</span></a> <a
-href="#enmark-46" id="ennote-46"><sup><span
-class="cmr-6">46</span></sup></a><a
-href="https://ctan.org/pkg/bibtex" ><span
-class="ectt-0900">bibtex</span></a> <a
-href="#enmark-47" id="ennote-47"><sup><span
-class="cmr-6">47</span></sup></a><a
-href="https://ctan.org/pkg/biblatex" ><span
-class="ectt-0900">biblatex</span></a> <a
-href="#enmark-48" id="ennote-48"><sup><span
-class="cmr-6">48</span></sup></a><a
-href="https://ctan.org/pkg/exam" ><span
-class="ectt-0900">exam</span></a> <a
-href="#enmark-49" id="ennote-49"><sup><span
-class="cmr-6">49</span></sup></a><a
-href="https://ctan.org/pkg/beamer" ><span
-class="ectt-0900">beamer</span></a> <a
-href="#enmark-50" id="ennote-50"><sup><span
-class="cmr-6">50</span></sup></a><a
-href="https://ctan.org/pkg/fntguide" ><span
-class="ectt-0900">fntguide</span></a> <a
-href="#enmark-51" id="ennote-51"><sup><span
-class="cmr-6">51</span></sup></a><a
-href="https://ctan.org/pkg/pdftex" ><span
-class="ectt-0900">pdftex</span></a> <a
-href="#enmark-52" id="ennote-52"><sup><span
-class="cmr-6">52</span></sup></a><a
-href="https://ctan.org/pkg/xetex" ><span
-class="ectt-0900">xetex</span></a> <a
-href="#enmark-53" id="ennote-53"><sup><span
-class="cmr-6">53</span></sup></a><a
-href="https://ctan.org/pkg/luatex" ><span
-class="ectt-0900">luatex</span></a>
-<a
-href="#enmark-54" id="ennote-54"><sup><span
-class="cmr-6">54</span></sup></a><a
-href="https://ctan.org/pkg/fontspec" ><span
-class="ectt-0900">fontspec</span></a>
+ <h3 class='sectionHead' id='package-names-for-texdoc'><a id='x1-20000'></a>Package names, for texdoc</h3>
+<!-- l. 429 --><p class='noindent'>
+
+
+</p><!-- l. 4 --><p class='indent'> <a href='#enmark-1' id='ennote-1'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>1</span></sup></a><a id='x1-20001x'></a> <a href='https://ctan.org/pkg/lshort'><span class='ectt-0900'>lshort</span></a> <a href='#enmark-2' id='ennote-2'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>2</span></sup></a><a id='x1-20002x'></a> <a href='https://ctan.org/pkg/amshelp'><span class='ectt-0900'>amshelp</span></a> <a href='#enmark-3' id='ennote-3'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>3</span></sup></a><a id='x1-20003x'></a> <a href='https://ctan.org/pkg/amsmath'><span class='ectt-0900'>amsmath</span></a> <a href='#enmark-4' id='ennote-4'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>4</span></sup></a><a id='x1-20004x'></a> <a href='https://ctan.org/pkg/latex2e'><span class='ectt-0900'>latex2e</span></a> <a href='#enmark-5' id='ennote-5'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>5</span></sup></a><a id='x1-20005x'></a> <a href='https://ctan.org/pkg/comprehensive'><span class='ectt-0900'>comprehensive</span></a> <a href='#enmark-6' id='ennote-6'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>6</span></sup></a><a id='x1-20006x'></a> <a href='https://ctan.org/pkg/faq'><span class='ectt-0900'>faq</span></a> <a href='#enmark-7' id='ennote-7'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>7</span></sup></a><a id='x1-20007x'></a> <a href='https://ctan.org/pkg/latexcheat'><span class='ectt-0900'>latexcheat</span></a> <a href='#enmark-8' id='ennote-8'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>8</span></sup></a><a id='x1-20008x'></a> <a href='https://ctan.org/pkg/undergradmath'><span class='ectt-0900'>undergradmath</span></a> <a href='#enmark-9' id='ennote-9'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>9</span></sup></a><a id='x1-20009x'></a> <a href='https://ctan.org/pkg/l2tabuen'><span class='ectt-0900'>l2tabuen</span></a> <a href='#enmark-10' id='ennote-10'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>10</span></sup></a><a id='x1-20010x'></a>
+<a href='https://ctan.org/pkg/geometry'><span class='ectt-0900'>geometry</span></a> <a href='#enmark-11' id='ennote-11'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>11</span></sup></a><a id='x1-20011x'></a> <a href='https://ctan.org/pkg/multicol'><span class='ectt-0900'>multicol</span></a> <a href='#enmark-12' id='ennote-12'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>12</span></sup></a><a id='x1-20012x'></a> <a href='https://ctan.org/pkg/amsmath'><span class='ectt-0900'>amsmath</span></a> <a href='#enmark-13' id='ennote-13'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>13</span></sup></a><a id='x1-20013x'></a> <a href='https://ctan.org/pkg/amssymb'><span class='ectt-0900'>amssymb</span></a> <a href='#enmark-14' id='ennote-14'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>14</span></sup></a><a id='x1-20014x'></a> <a href='https://ctan.org/pkg/amsthm'><span class='ectt-0900'>amsthm</span></a> <a href='#enmark-15' id='ennote-15'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>15</span></sup></a><a id='x1-20015x'></a> <a href='https://ctan.org/pkg/rsfs'><span class='ectt-0900'>rsfs</span></a> <a href='#enmark-16' id='ennote-16'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>16</span></sup></a><a id='x1-20016x'></a> <a href='https://ctan.org/pkg/bm'><span class='ectt-0900'>bm</span></a> <a href='#enmark-17' id='ennote-17'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>17</span></sup></a><a id='x1-20017x'></a> <a href='https://ctan.org/pkg/mathtools'><span class='ectt-0900'>mathtools</span></a> <a href='#enmark-18' id='ennote-18'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>18</span></sup></a><a id='x1-20018x'></a> <a href='https://ctan.org/pkg/microtype'><span class='ectt-0900'>microtype</span></a> <a href='#enmark-19' id='ennote-19'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>19</span></sup></a><a id='x1-20019x'></a> <a href='https://ctan.org/pkg/enumitem'><span class='ectt-0900'>enumitem</span></a> <a href='#enmark-20' id='ennote-20'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>20</span></sup></a><a id='x1-20020x'></a> <a href='https://ctan.org/pkg/caption'><span class='ectt-0900'>caption</span></a> <a href='#enmark-21' id='ennote-21'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>21</span></sup></a><a id='x1-20021x'></a>
+<a href='https://ctan.org/pkg/float'><span class='ectt-0900'>float</span></a> <a href='#enmark-22' id='ennote-22'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>22</span></sup></a><a id='x1-20022x'></a> <a href='https://ctan.org/pkg/hyperref'><span class='ectt-0900'>hyperref</span></a> <a href='#enmark-23' id='ennote-23'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>23</span></sup></a><a id='x1-20023x'></a> <a href='https://ctan.org/pkg/cleveref'><span class='ectt-0900'>cleveref</span></a> <a href='#enmark-24' id='ennote-24'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>24</span></sup></a><a id='x1-20024x'></a> <a href='https://ctan.org/pkg/url'><span class='ectt-0900'>url</span></a> <a href='#enmark-25' id='ennote-25'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>25</span></sup></a><a id='x1-20025x'></a> <a href='https://ctan.org/pkg/upquote'><span class='ectt-0900'>upquote</span></a> <a href='#enmark-26' id='ennote-26'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>26</span></sup></a><a id='x1-20026x'></a> <a href='https://ctan.org/pkg/listings'><span class='ectt-0900'>listings</span></a> <a href='#enmark-27' id='ennote-27'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>27</span></sup></a><a id='x1-20027x'></a> <a href='https://ctan.org/pkg/pythontex'><span class='ectt-0900'>pythontex</span></a> <a href='#enmark-28' id='ennote-28'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>28</span></sup></a><a id='x1-20028x'></a> <a href='https://ctan.org/pkg/array'><span class='ectt-0900'>array</span></a> <a href='#enmark-29' id='ennote-29'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>29</span></sup></a><a id='x1-20029x'></a> <a href='https://ctan.org/pkg/siunitx'><span class='ectt-0900'>siunitx</span></a> <a href='#enmark-30' id='ennote-30'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>30</span></sup></a><a id='x1-20030x'></a> <a href='https://ctan.org/pkg/tcolorbox'><span class='ectt-0900'>tcolorbox</span></a> <a href='#enmark-31' id='ennote-31'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>31</span></sup></a><a id='x1-20031x'></a> <a href='https://ctan.org/pkg/babel'><span class='ectt-0900'>babel</span></a> <a href='#enmark-32' id='ennote-32'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>32</span></sup></a><a id='x1-20032x'></a>
+<a href='https://ctan.org/pkg/lipsum'><span class='ectt-0900'>lipsum</span></a> <a href='#enmark-33' id='ennote-33'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>33</span></sup></a><a id='x1-20033x'></a> <a href='https://ctan.org/pkg/xcolor'><span class='ectt-0900'>xcolor</span></a> <a href='#enmark-34' id='ennote-34'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>34</span></sup></a><a id='x1-20034x'></a> <a href='https://ctan.org/pkg/graphics'><span class='ectt-0900'>graphics</span></a> <a href='#enmark-35' id='ennote-35'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>35</span></sup></a><a id='x1-20035x'></a> <a href='https://ctan.org/pkg/pdfpages'><span class='ectt-0900'>pdfpages</span></a> <a href='#enmark-36' id='ennote-36'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>36</span></sup></a><a id='x1-20036x'></a> <a href='https://ctan.org/pkg/media9'><span class='ectt-0900'>media9</span></a> <a href='#enmark-37' id='ennote-37'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>37</span></sup></a><a id='x1-20037x'></a> <a href='https://ctan.org/pkg/tikz'><span class='ectt-0900'>tikz</span></a> <a href='#enmark-38' id='ennote-38'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>38</span></sup></a><a id='x1-20038x'></a> <a href='https://ctan.org/pkg/asymptote'><span class='ectt-0900'>asymptote</span></a> <a href='#enmark-39' id='ennote-39'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>39</span></sup></a><a id='x1-20039x'></a> <a href='https://ctan.org/pkg/titlesec'><span class='ectt-0900'>titlesec</span></a> <a href='#enmark-40' id='ennote-40'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>40</span></sup></a><a id='x1-20040x'></a> <a href='https://ctan.org/pkg/fancyhdr'><span class='ectt-0900'>fancyhdr</span></a> <a href='#enmark-41' id='ennote-41'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>41</span></sup></a><a id='x1-20041x'></a> <a href='https://ctan.org/pkg/tocloft'><span class='ectt-0900'>tocloft</span></a> <a href='#enmark-42' id='ennote-42'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>42</span></sup></a><a id='x1-20042x'></a> <a href='https://ctan.org/pkg/footmisc'><span class='ectt-0900'>footmisc</span></a> <a href='#enmark-43' id='ennote-43'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>43</span></sup></a><a id='x1-20043x'></a>
+<a href='https://ctan.org/pkg/makeindex'><span class='ectt-0900'>makeindex</span></a> <a href='#enmark-44' id='ennote-44'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>44</span></sup></a><a id='x1-20044x'></a> <a href='https://ctan.org/pkg/answers'><span class='ectt-0900'>answers</span></a> <a href='#enmark-45' id='ennote-45'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>45</span></sup></a><a id='x1-20045x'></a> <a href='https://ctan.org/pkg/mla'><span class='ectt-0900'>mla</span></a> <a href='#enmark-46' id='ennote-46'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>46</span></sup></a><a id='x1-20046x'></a> <a href='https://ctan.org/pkg/bibtex'><span class='ectt-0900'>bibtex</span></a> <a href='#enmark-47' id='ennote-47'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>47</span></sup></a><a id='x1-20047x'></a> <a href='https://ctan.org/pkg/biblatex'><span class='ectt-0900'>biblatex</span></a> <a href='#enmark-48' id='ennote-48'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>48</span></sup></a><a id='x1-20048x'></a> <a href='https://ctan.org/pkg/exam'><span class='ectt-0900'>exam</span></a> <a href='#enmark-49' id='ennote-49'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>49</span></sup></a><a id='x1-20049x'></a> <a href='https://ctan.org/pkg/beamer'><span class='ectt-0900'>beamer</span></a> <a href='#enmark-50' id='ennote-50'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>50</span></sup></a><a id='x1-20050x'></a> <a href='https://ctan.org/pkg/fntguide'><span class='ectt-0900'>fntguide</span></a> <a href='#enmark-51' id='ennote-51'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>51</span></sup></a><a id='x1-20051x'></a> <a href='https://ctan.org/pkg/pdftex'><span class='ectt-0900'>pdftex</span></a> <a href='#enmark-52' id='ennote-52'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>52</span></sup></a><a id='x1-20052x'></a> <a href='https://ctan.org/pkg/xetex'><span class='ectt-0900'>xetex</span></a> <a href='#enmark-53' id='ennote-53'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>53</span></sup></a><a id='x1-20053x'></a> <a href='https://ctan.org/pkg/luatex'><span class='ectt-0900'>luatex</span></a> <a href='#enmark-54' id='ennote-54'><sup class='textsuperscript'><span class='Spectral-Light-lf-t1-'>54</span></sup></a><a id='x1-20054x'></a>
+<a href='https://ctan.org/pkg/fontspec'><span class='ectt-0900'>fontspec</span></a>
</p>
</div>
-</body></html>
-
-
-
-
+</body>
+</html>
diff --git a/info/latex-doc-ptr/latex-doc-ptr.pdf b/info/latex-doc-ptr/latex-doc-ptr.pdf
index 82a55bfefa..4fc54ddcc5 100644
--- a/info/latex-doc-ptr/latex-doc-ptr.pdf
+++ b/info/latex-doc-ptr/latex-doc-ptr.pdf
Binary files differ
diff --git a/info/latex-doc-ptr/latex-doc-ptr.tex b/info/latex-doc-ptr/latex-doc-ptr.tex
index 590bebb76b..387969008d 100644
--- a/info/latex-doc-ptr/latex-doc-ptr.tex
+++ b/info/latex-doc-ptr/latex-doc-ptr.tex
@@ -351,7 +351,7 @@ visit the
which includes copy and paste code to make each one work.
Beyond that list, you can also use your computer system's fonts
-(beware this makes your source file harder to share with friends, though).
+(this may make your source file harder to share with friends, though).
The background is:~to convert \LaTeX{} source to \PDF{} output
there are three varieties of the \TeX{} engine.
Currently the most common is
@@ -403,6 +403,14 @@ Pronounce \LaTeX{} as
We prefer the first, with emphasis on the first syllable.
+
+% ====================================================
+\section{This document}
+To contact this document's authors with suggestions and corrections
+please see its page at
+\url{https://ctan.org/pkg/latex-doc-ptr}.
+
+
% ====================================================
\section{Welcome to the community!}
@@ -411,9 +419,6 @@ the work of the many
\href{https://tug.org/usergroups.html}{user groups},
including the \href{https://tug.org/}{\TeX{} Users Group}.
Please consider joining.
-% The
-% \href{https://www.ctan.org/}{Comprehensive \TeX{} Archive Network}
-% contains more packages than any distribution.
% \vfill\null
% \columnbreak
diff --git a/info/russian/basiclatex-ru/BasicLatex.pdf b/info/russian/basiclatex-ru/BasicLatex.pdf
deleted file mode 100644
index 3fa1205dcf..0000000000
--- a/info/russian/basiclatex-ru/BasicLatex.pdf
+++ /dev/null
Binary files differ
diff --git a/info/russian/basiclatex-ru/BasicLatex_v2.1.pdf b/info/russian/basiclatex-ru/BasicLatex_v2.1.pdf
new file mode 100644
index 0000000000..66402b37b6
--- /dev/null
+++ b/info/russian/basiclatex-ru/BasicLatex_v2.1.pdf
Binary files differ
diff --git a/info/russian/basiclatex-ru/README b/info/russian/basiclatex-ru/README
index c1ff42aa46..9220ff5c52 100644
--- a/info/russian/basiclatex-ru/README
+++ b/info/russian/basiclatex-ru/README
@@ -1,7 +1,8 @@
BasicLatex-ru
-version 1.0
Creative Commons Attribution-ShareAlike (CC BY-SA v. 4.0) License
+version 1.0
+
The textbook "Basic LaTeX" was published by the
National Research Nuclear University MEPhI in 2021.
The publication is intended for students, postgraduates and scientists.
@@ -14,5 +15,22 @@ table of contents and subject index are considered.
The book contains a large amount of reference data
collected in tables as well as an extensive index.
+version 2.0
+
+The second edition is expanded to include discussion of the following resources:
+– creating indices using the xindex package;
+– creating chemical formulae using the chemformula package;
+– font management within the NFSS;
+– TrueType and OpenType font management using the fontspec package;
+– math extensions of the mathtools package;
+– creating math formulae using the unicode-math package;
+– layout of reports and dissertations according to Russian GOSTs.
+
+version 2.1
+
+Text editing, typo correction:
+– fixed typos and formatting errors;
+– edited discussion of the thesis layout at the end of Appendix G.
+
Alexey Kuznetsov
-MailToKuznetsov@gmail.com \ No newline at end of file
+MailToKuznetsov@gmail.com
diff --git a/info/russian/basiclatex-ru/README.ru b/info/russian/basiclatex-ru/README.ru
index 2e73582da1..790989448e 100644
--- a/info/russian/basiclatex-ru/README.ru
+++ b/info/russian/basiclatex-ru/README.ru
@@ -1,7 +1,8 @@
BasicLatex-ru
-ВерÑÐ¸Ñ 1.0
Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Creative Commons Attribution-ShareAlike (CC BY-SA v. 4.0)
+ВерÑÐ¸Ñ 1.0
+
Учебное поÑобие "ОÑновы LaTeX" опубликовано
Ðациональным иÑÑледовательÑким Ñдерным универÑитетом МИФИ в 2021 г.
Издание предназначено Ð´Ð»Ñ Ñтудентов, аÑпирантов и научных работников.
@@ -14,5 +15,24 @@ BasicLatex-ru
Книга Ñодержит большой объем Ñправочной информации,
Ñобранной в таблицах, и обширный указатель.
+ВерÑÐ¸Ñ 2.0
+
+Второе издание дополнено обÑуждением Ñледующих реÑурÑов:
+– Ñоздание индекÑов Ñ Ð¸Ñпользованием пакета xindex;
+– Ñоздание химичеÑких формул Ñ Ð¸Ñпользованием пакета chemformula;
+– управление шрифтами в Ñхеме NFSS;
+– управление TrueType и OpenType шрифтами Ñ Ð¸Ñпользованием пакета fontspec;
+– математичеÑкие раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð° mathtools;
+– Ñоздание математичеÑких формул Ñ Ð¸Ñпользованием пакета unicode-math;
+– оформление отчетов и диÑÑертаций в ÑоответÑтвии Ñ Ñ€Ð¾ÑÑийÑкими ГОСТами.
+
+
+ВерÑÐ¸Ñ 2.1
+
+Правка текÑта, иÑправление опечаток:
+– иÑправлены опечатки и ошибки форматированиÑ;
+– отредактировано обÑуждение верÑтки диÑÑертаций в конце Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð“.
+
+
ÐлекÑей Кузнецов
-MailToKuznetsov@gmail.com \ No newline at end of file
+MailToKuznetsov@gmail.com
diff --git a/info/tex-vpat/README.md b/info/tex-vpat/README.md
index 6eecd0ce9e..168c05e042 100644
--- a/info/tex-vpat/README.md
+++ b/info/tex-vpat/README.md
@@ -6,7 +6,7 @@ Currently it covers TeXLive. Other distributions can be added if needed.
The report is produced by [Tex Users Group](https://tug.org).
-TeX VPAT Statement (c) 2021-2023 by TeX Users Group
+TeX VPAT Statement (c) 2021-2024 by TeX Users Group
TeX VPAT is licensed under a
Creative Commons Attribution 3.0 Unported License.
@@ -14,6 +14,8 @@ Creative Commons Attribution 3.0 Unported License.
You should have received a copy of the license along with this
work. If not, see [http://creativecommons.org/licenses/by/3.0/](http://creativecommons.org/licenses/by/3.0/).
+Version 2.4: Updated to TeXLive 2024.
+
Version 2.3: compressed PDF. Makefile now requires lualatex-dev.
Version 2.2: new accessible PDF (thanks to Ulrike Fischer and L3 team). Updated to TeXLive 2023
diff --git a/info/tex-vpat/texlive-vpat.css b/info/tex-vpat/texlive-vpat.css
index b3712c8b31..f057f36101 100644
--- a/info/tex-vpat/texlive-vpat.css
+++ b/info/tex-vpat/texlive-vpat.css
@@ -58,6 +58,7 @@ div.flushleft {text-align: left;}
.framebox-r {text-align:right;}
span.thank-mark{ vertical-align: super }
span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
+code.verb{font-family:monospace,monospace;}
div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
table.tabular td p{margin-top:0em;}
table.tabular {margin-left: auto; margin-right: auto;}
@@ -103,7 +104,6 @@ table.pmatrix {width:100%;}
span.bar-css {text-decoration:overline;}
img.cdots{vertical-align:middle;}
.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
-.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
.index-item, .index-subitem, .index-subsubitem {display:block}
div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
div.caption span.id{font-weight: bold; white-space: nowrap; }
@@ -123,6 +123,10 @@ div.author{white-space: nowrap;}
div.abstract p {margin-left:5%; margin-right:5%;}
div.abstract {width:100%;}
.abstracttitle{text-align:center;margin-bottom:1em;}
+.subsectionToc, .likesubsectionToc {margin-left:1em;}
+.subsubsectionToc, .likesubsubsectionToc {margin-left:2em;}
+.paragraphToc, .likeparagraphToc {margin-left:3em;}
+.subparagraphToc, .likesubparagraphToc {margin-left:4em;}
.rotatebox{display: inline-block;}
div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
table.tabular td p{margin-top:0em;}
diff --git a/info/tex-vpat/texlive-vpat.html b/info/tex-vpat/texlive-vpat.html
index 4a43ab6389..edc7633488 100644
--- a/info/tex-vpat/texlive-vpat.html
+++ b/info/tex-vpat/texlive-vpat.html
@@ -24,7 +24,7 @@
class="cmr-12">TeX</span><span
class="cmr-12">&#x00A0;Users Group</span></div><br />
<div class="date" ><span
-class="cmr-12">Version 2.3, April 2023</span></div>
+class="cmr-12">Version 2.4, August 2024</span></div>
@@ -36,65 +36,65 @@ class="cmr-12">Version 2.3, April 2023</span></div>
<h3 class="likesectionHead"><a
id="x1-1000"></a>Contents</h3>
<div class="tableofcontents">
- &#x00A0;<span class="sectionToc" ><a
+ <span class="sectionToc" ><a
href="#x1-2000" id="QQ2-1-2">Name of Product/Version</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-3000" id="QQ2-1-3">Report Date</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-4000" id="QQ2-1-4">Product Description</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-5000" id="QQ2-1-5">Contact Information</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-6000" id="QQ2-1-6">Notes</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-7000" id="QQ2-1-7">Evaluation methods used</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-8000" id="QQ2-1-8">Applicable standards and guidelines</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-9000" id="QQ2-1-9">Terms</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-10000" id="QQ2-1-10">WCAG&#x00A0;2.x Report</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-11000" id="QQ2-1-11">Introduction</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-12000" id="QQ2-1-12">Table&#x00A0;1: Success Criteria, Level A</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-13000" id="QQ2-1-13">Table&#x00A0;2: Success Criteria, Level&#x00A0;AA</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-14000" id="QQ2-1-14">Table&#x00A0;3: Success Criteria, Level&#x00A0;AAA</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-15000" id="QQ2-1-15">Revised Section&#x00A0;508 Report</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-16000" id="QQ2-1-16">Chapter 3: Functional Performance Criteria (FPC)</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-17000" id="QQ2-1-17">Chapter 4: Hardware</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-18000" id="QQ2-1-18">Chapter 5: Software</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-19000" id="QQ2-1-19">Chapter 6: Support Documentation and Services</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-20000" id="QQ2-1-20">EN 301 549 Report</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-21000" id="QQ2-1-21">Chapter 4: Functional Performance Statements (FPS)</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-22000" id="QQ2-1-22">Chapter&#x00A0;5: Generic Requirements</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-23000" id="QQ2-1-23">Chapter&#x00A0;6: ICT with Two-Way Voice Communication </a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-24000" id="QQ2-1-24">Chapter&#x00A0;7: ICT with Video Capabilities </a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-25000" id="QQ2-1-25">Chapter&#x00A0;8: Hardware</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-26000" id="QQ2-1-26">Chapter 9: Web</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-27000" id="QQ2-1-27">Chapter&#x00A0;10: Non-Web Software</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-28000" id="QQ2-1-28">Chapter&#x00A0;11: Software</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-29000" id="QQ2-1-29">Chapter&#x00A0;12: Documentation and Support Services</a></span>
-<br /> &#x00A0;&#x00A0;<span class="subsectionToc" ><a
+<br /> <span class="subsectionToc" ><a
href="#x1-30000" id="QQ2-1-30">Chapter&#x00A0;13: ICT Providing Relay or Emergency Service Access</a></span>
-<br /> &#x00A0;<span class="sectionToc" ><a
+<br /> <span class="sectionToc" ><a
href="#x1-31000" id="QQ2-1-31">Legal Disclaimer</a></span>
</div>
<!--l. 205--><p class="indent" >
@@ -105,13 +105,13 @@ href="#x1-31000" id="QQ2-1-31">Legal Disclaimer</a></span>
id="x1-2000"></a>Name of Product/Version</h3>
<a
id="x1-2000doc"></a>
-<!--l. 210--><p class="noindent" >TeXLive 2023.
+<!--l. 210--><p class="noindent" >TeXLive 2024.
<!--l. 213--><p class="noindent" >
<h3 class="sectionHead"><a
id="x1-3000"></a>Report Date</h3>
<a
id="x1-3000doc"></a>
-<!--l. 216--><p class="noindent" >March 2023.
+<!--l. 216--><p class="noindent" >August 2024.
<!--l. 219--><p class="noindent" >
<h3 class="sectionHead"><a
id="x1-4000"></a>Product Description</h3>
@@ -120,8 +120,8 @@ href="#x1-31000" id="QQ2-1-31">Legal Disclaimer</a></span>
<!--l. 222--><p class="noindent" >TeXLive is the reference distribution of TeX&#x00A0;and related software supported by
TeX&#x00A0;Users Group, a membership-based not-for-profit organization dedicated to
support, promotion and advocacy of TeX&#x00A0;typesetting system created by Donald
-Knuth and maintained by the international community of developers. As of 2023
-TeXLive contains more than 470&#x00A0;programs and more than 7660&#x00A0;software
+Knuth and maintained by the international community of developers. As of 2024
+TeXLive contains more than 490&#x00A0;programs and more than 8000&#x00A0;software
packages.
<!--l. 229--><p class="noindent" >
<h3 class="sectionHead"><a
@@ -130,7 +130,6 @@ packages.
id="x1-5000doc"></a>
<!--l. 232--><p class="noindent" >
<dl class="description"><dt class="description">
- <!--l. 233--><p class="noindent" >
<span
class="cmbx-10">Website:</span> </dt><dd
class="description">
@@ -138,51 +137,45 @@ class="description">
href="https://tug.org" class="url" ><span
class="cmtt-10">https://tug.org</span></a>
</dd><dt class="description">
- <!--l. 234--><p class="noindent" >
<span
class="cmbx-10">Address:</span> </dt><dd
class="description">
<!--l. 234--><p class="noindent" ><br
-class="newline" />Robin Laakso, executive director,<br
+class="newline" />Sophia Laakso, office manager,<br
class="newline" />TeX&#x00A0;Users Group,<br
class="newline" />PO Box 2311,<br
class="newline" />Portland, OR&#x00A0;97208-2311,<br
class="newline" />USA
-
-
-
</dd><dt class="description">
- <!--l. 240--><p class="noindent" >
<span
class="cmbx-10">Phone:</span> </dt><dd
class="description">
<!--l. 240--><p class="noindent" >+1 503-223-9994
+
+
+
</dd><dt class="description">
- <!--l. 241--><p class="noindent" >
<span
class="cmbx-10">Fax:</span> </dt><dd
class="description">
<!--l. 241--><p class="noindent" >+1 815-301-3568
</dd><dt class="description">
- <!--l. 242--><p class="noindent" >
<span
class="cmbx-10">Administrative email:</span> </dt><dd
class="description">
- <!--l. 242--><p class="noindent" ><a
+ <!--l. 242--><p class="noindent" > <a
href="mailto:office@tug.org" >office@tug.org</a>
</dd><dt class="description">
- <!--l. 243--><p class="noindent" >
<span
class="cmbx-10">Board of directors:</span> </dt><dd
class="description">
- <!--l. 243--><p class="noindent" ><a
+ <!--l. 243--><p class="noindent" > <a
href="mailto:board@tug.org" >board@tug.org</a>
</dd><dt class="description">
- <!--l. 244--><p class="noindent" >
<span
class="cmbx-10">President:</span> </dt><dd
class="description">
- <!--l. 244--><p class="noindent" ><a
+ <!--l. 244--><p class="noindent" > <a
href="mailto:president@tug.org" >president@tug.org</a></dd></dl>
<!--l. 247--><p class="noindent" >
@@ -207,15 +200,17 @@ text files created in any authoring tool. TeX&#x00A0;Users group is aware about
fully accessible authoring tools, and promotes them on its web pages and
publications.
<!--l. 266--><p class="indent" > A separate issue is the accessibility of the <span
-class="cmti-10">output documents </span>created with
-TeXLive software. The accessibility features of these documents depend on the
-settings in the input code and the packages used, and thus is not covered
-by this document. TeX&#x00A0;Users Group strives to make the creation of full
-accessible documents using its tool as simple as possible, and to make the
-accessibility features the default settings of our software. This is an ongoing effort,
-involving many developers. TeX&#x00A0;Users Group welcomes any help in this
-work.
-<!--l. 276--><p class="indent" > The tools provided by TeXLive are accompanied by technical documentation,
+class="cmti-10">output documents </span>created with TeXLive
+software. The accessibility features of these documents depend on the settings in the
+input code and the packages used, and thus is not covered by this document.
+TeX&#x00A0;Users Group strives to make the creation of full accessible documents using its
+tool as simple as possible, and to make the accessibility features the default settings
+of our software. This is an ongoing effort, involving many developers. TeX&#x00A0;Users
+Group welcomes any help in this work. The current state of the effort can be found at
+<a
+href="https://tug.org/twg/accessibility/overview.html" class="url" ><span
+class="cmtt-10">https://tug.org/twg/accessibility/overview.html</span></a>.
+<!--l. 277--><p class="indent" > The tools provided by TeXLive are accompanied by technical documentation,
both included in TeXLive itself, and separate: there are many books, courses and
other materials about TeX. Many of the latter a fully accessible. The main
documentation of TeXLive, supported by TeXLive team, is accessible as well. Most of
@@ -223,15 +218,15 @@ the documentation for several thousand software packages in TeXLive is provided
PDF or text format. By requiring machine readable textual sources of all
documentation provided by TeXLive packages, we ensure a certain level of
accessibility for all documentation. However, the full audit of the documentation for
-all 7300+ packages created by many thousands of volunteers is not feasible at this
+all 8000+ packages created by many thousands of volunteers is not feasible at this
time. TeX&#x00A0;Users group supports the efforts of making all TeX&#x00A0;documentation fully
accessible.
-<!--l. 290--><p class="noindent" >
+<!--l. 291--><p class="noindent" >
<h3 class="sectionHead"><a
id="x1-7000"></a>Evaluation methods used</h3>
<a
id="x1-7000doc"></a>
-<!--l. 293--><p class="noindent" >The testing was based on the knowledge of the general product knowledge.
+<!--l. 294--><p class="noindent" >The testing was based on the general product knowledge.
<!--l. 296--><p class="noindent" >
<h3 class="sectionHead"><a
id="x1-8000"></a>Applicable standards and guidelines</h3>
@@ -249,68 +244,72 @@ id="TBL-2-2"></colgroup><tr
style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:normal; text-align:left;" id="TBL-2-1-1"
class="td11"> </td></tr><tr><td colspan="2"></td></tr><tr
style="vertical-align:baseline;" id="TBL-02-1-"><td style="white-space:normal; text-align:left;" id="TBL-02-1-1"
-class="td11">
-<!--l. 302--><p class="noindent" > </td>
+class="td11"><!--l. 302--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-02-2-"><td style="white-space:normal; text-align:left;" id="TBL-02-2-1"
-class="td11"> <!--l. 302--><p class="noindent" > </td>
+class="td11"> <!--l. 302--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-02-3-"><td style="white-space:normal; text-align:left;" id="TBL-02-3-1"
class="td11">
-<!--l. 304--><p class="noindent" >Standard/Guideline </td><td style="white-space:nowrap; text-align:left;" id="TBL-02-3-2"
+<!--l. 304--><p class="noindent" >Standard/Guideline </td><td style="white-space:nowrap; text-align:left;" id="TBL-02-3-2"
class="td11"> Included in the report </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-02-4-"><td style="white-space:normal; text-align:left;" id="TBL-02-4-1"
class="td11"> </td></tr><tr><td colspan="2"></td></tr><tr
style="vertical-align:baseline;" id="TBL-002-4-"><td style="white-space:normal; text-align:left;" id="TBL-002-4-1"
-class="td11">
-<!--l. 307--><p class="noindent" > </td>
+class="td11"><!--l. 307--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-5-"><td style="white-space:normal; text-align:left;" id="TBL-002-5-1"
-class="td11"> <!--l. 307--><p class="noindent" > </td>
+class="td11"> <!--l. 307--><p class="noindent" >
+ </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-6-"><td style="white-space:normal; text-align:left;" id="TBL-002-6-1"
-class="td11"> <!--l. 310--><p class="noindent" ><a
-href="http://www.w3.org/TR/2008/REC-WCAG20-20081211" >Web Content Accessibility Guidelines 2.0</a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-6-2"
+class="td11"> <!--l. 310--><p class="noindent" > <a
+href="http://www.w3.org/TR/2008/REC-WCAG20-20081211" >Web Content Accessibility Guidelines 2.0</a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-6-2"
class="td11"> Level A (Yes) </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-7-"><td style="white-space:normal; text-align:left;" id="TBL-002-7-1"
-class="td11"> <!--l. 311--><p class="noindent" > </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-7-2"
+class="td11"> <!--l. 311--><p class="noindent" >
+ </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-7-2"
class="td11"> Level AA (Yes) </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-8-"><td style="white-space:normal; text-align:left;" id="TBL-002-8-1"
-class="td11"> <!--l. 312--><p class="noindent" > </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-8-2"
+class="td11"> <!--l. 312--><p class="noindent" >
+ </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-8-2"
class="td11"> Level AAA (Yes) </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-9-"><td style="white-space:normal; text-align:left;" id="TBL-002-9-1"
-class="td11"> <!--l. 314--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21" >Web Content Accessibility Guidelines 2.1</a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-9-2"
+class="td11"> <!--l. 314--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21" >Web Content Accessibility Guidelines 2.1</a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-9-2"
class="td11"> Level A (Yes) </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-10-"><td style="white-space:normal; text-align:left;" id="TBL-002-10-1"
-class="td11"> <!--l. 315--><p class="noindent" > </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-10-2"
+class="td11"> <!--l. 315--><p class="noindent" >
+ </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-10-2"
class="td11"> Level AA (Yes) </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-11-"><td style="white-space:normal; text-align:left;" id="TBL-002-11-1"
-class="td11"> <!--l. 316--><p class="noindent" > </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-11-2"
+class="td11"> <!--l. 316--><p class="noindent" >
+ </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-11-2"
class="td11"> Level AAA (Yes) </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-12-"><td style="white-space:normal; text-align:left;" id="TBL-002-12-1"
-class="td11"> <!--l. 318--><p class="noindent" ><a
-href="https://www.access-board.gov/guidelines-and-standards/communications-and-it/about-the-ict-refresh/final-rule/text-of-the-standards-and-guidelines" >Revised Section 508 standards published January 18, 2017
-and corrected January 22, 2018</a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-12-2"
+class="td11"> <!--l. 318--><p class="noindent" > <a
+href="https://www.access-board.gov/guidelines-and-standards/communications-and-it/about-the-ict-refresh/final-rule/text-of-the-standards-and-guidelines" >Revised Section 508 standards published January
+18, 2017 and corrected January 22, 2018</a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-12-2"
class="td11"> Yes </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-13-"><td style="white-space:normal; text-align:left;" id="TBL-002-13-1"
-class="td11"> <!--l. 321--><p class="noindent" ><a
-href="https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.01.01_60/en_301549v030101p.pdf" >EN 301 549 Accessibility requirements suitable for public
-procurement of ICT products and services in Europe, -
-V3.1.1 (2019-11)</a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-13-2"
+class="td11"> <!--l. 321--><p class="noindent" > <a
+href="https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.01.01_60/en_301549v030101p.pdf" >EN 301 549 Accessibility requirements suitable for
+public procurement of ICT products and services in
+Europe, - V3.1.1 (2019-11)</a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-002-13-2"
class="td11"> Yes </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-002-14-"><td style="white-space:normal; text-align:left;" id="TBL-002-14-1"
-class="td11"> </td></tr></table><!--l. 323--><p class="noindent" ></div>
+class="td11"> </td></tr></table><!--l. 323--><p class="noindent" ></div>
<!--l. 325--><p class="noindent" >
<h3 class="sectionHead"><a
id="x1-9000"></a>Terms</h3>
@@ -318,35 +317,30 @@ class="td11"> </td></tr></table
id="x1-9000doc"></a>
<!--l. 328--><p class="noindent" >The terms used in the Conformance Level information are defined as follows:
<dl class="description"><dt class="description">
- <!--l. 330--><p class="noindent" >
<span
class="cmbx-10">Supports:</span> </dt><dd
class="description">
<!--l. 330--><p class="noindent" >The functionality of the product has at least one method that meets the
criterion without known defects or meets with equivalent facilitation.
</dd><dt class="description">
- <!--l. 333--><p class="noindent" >
<span
class="cmbx-10">Partially Supports:</span> </dt><dd
class="description">
<!--l. 333--><p class="noindent" >Some functionality of the product does not meet the criterion.
</dd><dt class="description">
- <!--l. 335--><p class="noindent" >
<span
class="cmbx-10">Does Not Support:</span> </dt><dd
class="description">
<!--l. 335--><p class="noindent" >The majority of product functionality does not meet the criterion.
-
-
-
</dd><dt class="description">
- <!--l. 337--><p class="noindent" >
<span
class="cmbx-10">Not Applicable:</span> </dt><dd
class="description">
<!--l. 337--><p class="noindent" >The criterion is not relevant to the product.
+
+
+
</dd><dt class="description">
- <!--l. 338--><p class="noindent" >
<span
class="cmbx-10">Not Evaluated:</span> </dt><dd
class="description">
@@ -375,7 +369,6 @@ href="#x1-13000doc">2</a> also document conformance with:
Editing, and Chapter 6 &#8211; 602.3 Electronic Support Documentation.</li></ul>
<!--l. 360--><p class="indent" >
<dl class="description"><dt class="description">
- <!--l. 361--><p class="noindent" >
<span
class="cmbx-10">Note:</span> </dt><dd
class="description">
@@ -397,7 +390,7 @@ Of course it would be impossible to estimate the accessibility of all this
documentation, comprising hundreds thousands of pages written over three
decades.
<!--l. 380--><p class="indent" > Another way is to count only the documentation for the packages included in
-TeXLive. This includes documentation for 7300+ packages, which makes the full
+TeXLive. This includes documentation for 8000+ packages, which makes the full
audit rather impractical.
<!--l. 384--><p class="indent" > In this document we discuss only the main manual for the system, available with the
installation and at <a
@@ -433,219 +426,216 @@ id="TBL-3-3"></colgroup><tr
style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:normal; text-align:left;" id="TBL-3-1-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-03-1-"><td style="white-space:normal; text-align:left;" id="TBL-03-1-1"
-class="td11">
-<!--l. 399--><p class="noindent" > </td>
+class="td11"><!--l. 399--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-03-2-"><td style="white-space:normal; text-align:left;" id="TBL-03-2-1"
-class="td11"> <!--l. 399--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 399--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-03-3-"><td colspan="2" style="white-space:nowrap; text-align:left;" id="TBL-03-3-1"
-class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-03-3-3"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-03-3-3"
class="td11">
<div class="multicolumn" style="white-space:normal; text-align:left;">Conformance Level</div>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-03-4-"><td style="white-space:normal; text-align:left;" id="TBL-03-4-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-003-4-"><td style="white-space:normal; text-align:left;" id="TBL-003-4-1"
-class="td11">
-<!--l. 399--><p class="noindent" > </td>
+class="td11"><!--l. 399--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-5-"><td style="white-space:normal; text-align:left;" id="TBL-003-5-1"
-class="td11"> <!--l. 399--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 399--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-003-6-"><td style="white-space:normal; text-align:left;" id="TBL-003-6-1"
class="td11">
<!--l. 400--><p class="noindent" >1.1.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-6-2"
-class="td11"> <!--l. 402--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG20/#text-equiv-all" >Non-text Content</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-6-3"
+class="td11"> <!--l. 402--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG20/#text-equiv-all" >Non-text Content</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-6-3"
class="td11"> <!--l. 402--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-7-"><td style="white-space:normal; text-align:left;" id="TBL-003-7-1"
class="td11"> <!--l. 403--><p class="noindent" >1.2.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-7-2"
class="td11">
-<!--l. 405--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG20/#media-equiv-av-only-alt" >Audio-only and Video only (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-7-3"
+<!--l. 405--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG20/#media-equiv-av-only-alt" >Audio-only and Video only (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-7-3"
class="td11"> <!--l. 405--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-8-"><td style="white-space:normal; text-align:left;" id="TBL-003-8-1"
class="td11"> <!--l. 406--><p class="noindent" >1.2.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-8-2"
-class="td11"> <!--l. 407--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG20/#media-equiv-captions" >Captions Prerecorded</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-8-3"
+class="td11"> <!--l. 407--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG20/#media-equiv-captions" >Captions Prerecorded</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-8-3"
class="td11"> <!--l. 407--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-9-"><td style="white-space:normal; text-align:left;" id="TBL-003-9-1"
class="td11"> <!--l. 408--><p class="noindent" >1.2.3 </td><td style="white-space:normal; text-align:left;" id="TBL-003-9-2"
-class="td11">
-<!--l. 410--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#media-equiv-audio-desc" >Audio Description or Media Alternative (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-9-3"
+class="td11"> <!--l. 410--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#media-equiv-audio-desc" >Audio Description or Media Alternative
+(Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-9-3"
class="td11"> <!--l. 411--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-10-"><td style="white-space:normal; text-align:left;" id="TBL-003-10-1"
class="td11"> <!--l. 412--><p class="noindent" >1.3.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-10-2"
-class="td11"> <!--l. 413--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic" >Info and Relationships</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-10-3"
+class="td11"> <!--l. 413--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic" >Info and Relationships</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-10-3"
class="td11"> <!--l. 413--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-11-"><td style="white-space:normal; text-align:left;" id="TBL-003-11-1"
class="td11"> <!--l. 414--><p class="noindent" >1.3.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-11-2"
-class="td11"> <!--l. 415--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic" >Meaningful Sequence</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-11-3"
+class="td11"> <!--l. 415--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#content-structure-separation-programmatic" >Meaningful Sequence</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-11-3"
class="td11"> <!--l. 415--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-12-"><td style="white-space:normal; text-align:left;" id="TBL-003-12-1"
class="td11"> <!--l. 416--><p class="noindent" >1.3.3 </td><td style="white-space:normal; text-align:left;" id="TBL-003-12-2"
-class="td11"> <!--l. 417--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#content-structure-separation-understanding" >Sensory Characteristics</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-12-3"
+class="td11"> <!--l. 417--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#content-structure-separation-understanding" >Sensory Characteristics</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-12-3"
class="td11"> <!--l. 417--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-13-"><td style="white-space:normal; text-align:left;" id="TBL-003-13-1"
class="td11"> <!--l. 418--><p class="noindent" >1.4.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-13-2"
-class="td11"> <!--l. 419--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-without-color" >Use of Color</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-13-3"
+class="td11"> <!--l. 419--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-without-color" >Use of Color</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-13-3"
class="td11"> <!--l. 419--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-14-"><td style="white-space:normal; text-align:left;" id="TBL-003-14-1"
class="td11"> <!--l. 420--><p class="noindent" >1.4.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-14-2"
-class="td11"> <!--l. 421--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-dis-audio" >Audio Control</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-14-3"
+class="td11"> <!--l. 421--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-dis-audio" >Audio Control</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-14-3"
class="td11"> <!--l. 421--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-15-"><td style="white-space:normal; text-align:left;" id="TBL-003-15-1"
class="td11"> <!--l. 422--><p class="noindent" >2.1.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-15-2"
-class="td11"> <!--l. 423--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#keyboard-operation-keyboard-operable" >Keyboard</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-15-3"
+class="td11"> <!--l. 423--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#keyboard-operation-keyboard-operable" >Keyboard</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-15-3"
class="td11"> <!--l. 423--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-16-"><td style="white-space:normal; text-align:left;" id="TBL-003-16-1"
class="td11"> <!--l. 424--><p class="noindent" >2.1.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-16-2"
-class="td11"> <!--l. 425--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#keyboard-operation-trapping" >No Keyboard Trap</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-16-3"
+class="td11"> <!--l. 425--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#keyboard-operation-trapping" >No Keyboard Trap</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-16-3"
class="td11"> <!--l. 425--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-17-"><td style="white-space:normal; text-align:left;" id="TBL-003-17-1"
class="td11"> <!--l. 426--><p class="noindent" >2.1.4 </td><td style="white-space:normal; text-align:left;" id="TBL-003-17-2"
class="td11">
-<!--l. 427--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#character-key-shortcuts" >Character Key Shortcuts</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-17-3"
+<!--l. 427--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#character-key-shortcuts" >Character Key Shortcuts</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-17-3"
class="td11"> <!--l. 427--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-18-"><td style="white-space:normal; text-align:left;" id="TBL-003-18-1"
class="td11"> <!--l. 428--><p class="noindent" >2.2.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-18-2"
-class="td11"> <!--l. 429--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#time-limits-required-behaviors" >Timing Adjustable</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-18-3"
+class="td11"> <!--l. 429--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#time-limits-required-behaviors" >Timing Adjustable</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-18-3"
class="td11"> <!--l. 429--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-19-"><td style="white-space:normal; text-align:left;" id="TBL-003-19-1"
class="td11"> <!--l. 430--><p class="noindent" >2.2.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-19-2"
-class="td11"> <!--l. 431--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#time-limits-pause" >Pause, Stop, Hide</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-19-3"
+class="td11"> <!--l. 431--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#time-limits-pause" >Pause, Stop, Hide</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-19-3"
class="td11"> <!--l. 431--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-20-"><td style="white-space:normal; text-align:left;" id="TBL-003-20-1"
class="td11"> <!--l. 432--><p class="noindent" >2.3.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-20-2"
-class="td11"> <!--l. 433--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#seizure-does-not-violate" >Three Flashes or Below Threshold</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-20-3"
+class="td11"> <!--l. 433--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#seizure-does-not-violate" >Three Flashes or Below Threshold</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-20-3"
class="td11"> <!--l. 433--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-21-"><td style="white-space:normal; text-align:left;" id="TBL-003-21-1"
class="td11"> <!--l. 434--><p class="noindent" >2.4.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-21-2"
-class="td11"> <!--l. 435--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-skip" >Bypass Blocks</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-21-3"
+class="td11"> <!--l. 435--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-skip" >Bypass Blocks</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-21-3"
class="td11"> <!--l. 435--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-22-"><td style="white-space:normal; text-align:left;" id="TBL-003-22-1"
class="td11"> <!--l. 436--><p class="noindent" >2.4.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-22-2"
-class="td11"> <!--l. 436--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-title" >Page Titled</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-22-3"
+class="td11"> <!--l. 436--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-title" >Page Titled</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-22-3"
class="td11"> <!--l. 436--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-23-"><td style="white-space:normal; text-align:left;" id="TBL-003-23-1"
class="td11"> <!--l. 437--><p class="noindent" >2.4.3 </td><td style="white-space:normal; text-align:left;" id="TBL-003-23-2"
-class="td11"> <!--l. 437--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-focus-order" >Focus Order</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-23-3"
+class="td11"> <!--l. 437--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-focus-order" >Focus Order</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-23-3"
class="td11"> <!--l. 437--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-24-"><td style="white-space:normal; text-align:left;" id="TBL-003-24-1"
class="td11"> <!--l. 438--><p class="noindent" >2.4.4 </td><td style="white-space:normal; text-align:left;" id="TBL-003-24-2"
class="td11">
-<!--l. 438--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-refs" >Link Purpose (In Context)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-24-3"
+<!--l. 438--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-refs" >Link Purpose (In Context)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-24-3"
class="td11"> <!--l. 438--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-25-"><td style="white-space:normal; text-align:left;" id="TBL-003-25-1"
class="td11"> <!--l. 439--><p class="noindent" >2.5.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-25-2"
class="td11">
-<!--l. 439--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#pointer-gestures" >Pointer Gestures</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-25-3"
+<!--l. 439--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#pointer-gestures" >Pointer Gestures</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-25-3"
class="td11"> <!--l. 439--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-26-"><td style="white-space:normal; text-align:left;" id="TBL-003-26-1"
class="td11"> <!--l. 440--><p class="noindent" >2.5.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-26-2"
class="td11">
-<!--l. 441--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#pointer-cancellation" >Pointer Cancellation</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-26-3"
+<!--l. 441--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#pointer-cancellation" >Pointer Cancellation</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-26-3"
class="td11"> <!--l. 441--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-27-"><td style="white-space:normal; text-align:left;" id="TBL-003-27-1"
class="td11"> <!--l. 442--><p class="noindent" >2.5.3 </td><td style="white-space:normal; text-align:left;" id="TBL-003-27-2"
class="td11">
-<!--l. 442--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#label-in-name" >Label in Name</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-27-3"
+<!--l. 442--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#label-in-name" >Label in Name</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-27-3"
class="td11"> <!--l. 442--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-28-"><td style="white-space:normal; text-align:left;" id="TBL-003-28-1"
class="td11"> <!--l. 443--><p class="noindent" >2.5.4 </td><td style="white-space:normal; text-align:left;" id="TBL-003-28-2"
class="td11">
-<!--l. 443--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#motion-actuation" >Motion Actuation</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-28-3"
+<!--l. 443--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#motion-actuation" >Motion Actuation</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-003-28-3"
class="td11"> <!--l. 443--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-29-"><td style="white-space:normal; text-align:left;" id="TBL-003-29-1"
class="td11"> <!--l. 444--><p class="noindent" >3.1.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-29-2"
-class="td11"> <!--l. 444--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#meaning-doc-lang-id" >Language of Page</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-29-3"
+class="td11"> <!--l. 444--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#meaning-doc-lang-id" >Language of Page</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-29-3"
class="td11"> <!--l. 444--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-30-"><td style="white-space:normal; text-align:left;" id="TBL-003-30-1"
class="td11"> <!--l. 445--><p class="noindent" >3.2.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-30-2"
-class="td11"> <!--l. 445--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#consistent-behavior-receive-focus" >On Focus</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-30-3"
+class="td11"> <!--l. 445--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#consistent-behavior-receive-focus" >On Focus</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-30-3"
class="td11"> <!--l. 445--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-31-"><td style="white-space:normal; text-align:left;" id="TBL-003-31-1"
class="td11"> <!--l. 446--><p class="noindent" >3.2.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-31-2"
-class="td11"> <!--l. 446--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#consistent-behavior-unpredictable-change" >On Input</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-31-3"
+class="td11"> <!--l. 446--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#consistent-behavior-unpredictable-change" >On Input</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-31-3"
class="td11"> <!--l. 446--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-32-"><td style="white-space:normal; text-align:left;" id="TBL-003-32-1"
class="td11"> <!--l. 447--><p class="noindent" >3.3.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-32-2"
-class="td11"> <!--l. 447--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#minimize-error-identified" >Error Identification</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-32-3"
+class="td11"> <!--l. 447--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#minimize-error-identified" >Error Identification</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-32-3"
class="td11"> <!--l. 447--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-33-"><td style="white-space:normal; text-align:left;" id="TBL-003-33-1"
class="td11"> <!--l. 448--><p class="noindent" >3.3.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-33-2"
-class="td11"> <!--l. 448--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#minimize-error-cues" >Labels or Instructions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-33-3"
+class="td11"> <!--l. 448--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#minimize-error-cues" >Labels or Instructions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-33-3"
class="td11"> <!--l. 448--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-34-"><td style="white-space:normal; text-align:left;" id="TBL-003-34-1"
class="td11"> <!--l. 449--><p class="noindent" >4.1.1 </td><td style="white-space:normal; text-align:left;" id="TBL-003-34-2"
-class="td11"> <!--l. 449--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#ensure-compat-parses" >Parsing</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-34-3"
+class="td11"> <!--l. 449--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#ensure-compat-parses" >Parsing</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-34-3"
class="td11"> <!--l. 449--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-35-"><td style="white-space:normal; text-align:left;" id="TBL-003-35-1"
class="td11"> <!--l. 450--><p class="noindent" >4.1.2 </td><td style="white-space:normal; text-align:left;" id="TBL-003-35-2"
-class="td11"> <!--l. 451--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#ensure-compat-rsv" >Name, Role, Value</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-35-3"
+class="td11"> <!--l. 451--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#ensure-compat-rsv" >Name, Role, Value</a> </td><td style="white-space:normal; text-align:left;" id="TBL-003-35-3"
class="td11"> <!--l. 451--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-003-36-"><td style="white-space:normal; text-align:left;" id="TBL-003-36-1"
class="td11"> </td></tr></table><!--l. 453--><p class="noindent" ></div>
-
-
-
<!--l. 455--><p class="indent" >
@@ -665,154 +655,154 @@ id="TBL-4-3"></colgroup><tr
style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:normal; text-align:left;" id="TBL-4-1-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-04-1-"><td style="white-space:normal; text-align:left;" id="TBL-04-1-1"
-class="td11">
-<!--l. 460--><p class="noindent" > </td>
+class="td11"><!--l. 460--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-04-2-"><td style="white-space:normal; text-align:left;" id="TBL-04-2-1"
-class="td11"> <!--l. 460--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 460--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-04-3-"><td colspan="2" style="white-space:nowrap; text-align:left;" id="TBL-04-3-1"
-class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-04-3-3"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-04-3-3"
class="td11">
<div class="multicolumn" style="white-space:normal; text-align:left;">Conformance Level</div>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-04-4-"><td style="white-space:normal; text-align:left;" id="TBL-04-4-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-004-4-"><td style="white-space:normal; text-align:left;" id="TBL-004-4-1"
-class="td11">
-<!--l. 460--><p class="noindent" > </td>
+class="td11"><!--l. 460--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-5-"><td style="white-space:normal; text-align:left;" id="TBL-004-5-1"
-class="td11"> <!--l. 460--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 460--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-004-6-"><td style="white-space:normal; text-align:left;" id="TBL-004-6-1"
class="td11">
<!--l. 461--><p class="noindent" >1.2.4 </td><td style="white-space:normal; text-align:left;" id="TBL-004-6-2"
class="td11">
-<!--l. 462--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#media-equiv-real-time-captions" >Captions (Live)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-6-3"
+<!--l. 462--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#media-equiv-real-time-captions" >Captions (Live)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-6-3"
class="td11"> <!--l. 462--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-7-"><td style="white-space:normal; text-align:left;" id="TBL-004-7-1"
class="td11"> <!--l. 463--><p class="noindent" >1.2.5 </td><td style="white-space:normal; text-align:left;" id="TBL-004-7-2"
class="td11">
-<!--l. 464--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#media-equiv-audio-desc-only" >Audio Description (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-7-3"
+<!--l. 464--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#media-equiv-audio-desc-only" >Audio Description (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-7-3"
class="td11"> <!--l. 464--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-8-"><td style="white-space:normal; text-align:left;" id="TBL-004-8-1"
class="td11"> <!--l. 465--><p class="noindent" >1.3.4 </td><td style="white-space:normal; text-align:left;" id="TBL-004-8-2"
class="td11">
-<!--l. 465--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#orientation" >Orientation</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-8-3"
+<!--l. 465--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#orientation" >Orientation</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-8-3"
class="td11"> <!--l. 466--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-9-"><td style="white-space:normal; text-align:left;" id="TBL-004-9-1"
class="td11"> <!--l. 467--><p class="noindent" >1.3.5 </td><td style="white-space:normal; text-align:left;" id="TBL-004-9-2"
class="td11">
-<!--l. 468--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#identify-input-purpose" >Identify Input Purpose</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-9-3"
+<!--l. 468--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#identify-input-purpose" >Identify Input Purpose</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-9-3"
class="td11"> <!--l. 468--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-10-"><td style="white-space:normal; text-align:left;" id="TBL-004-10-1"
class="td11"> <!--l. 469--><p class="noindent" >1.4.3 </td><td style="white-space:normal; text-align:left;" id="TBL-004-10-2"
class="td11">
-<!--l. 470--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast" >Contrast (Minimum)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-10-3"
+<!--l. 470--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast" >Contrast (Minimum)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-10-3"
class="td11"> <!--l. 470--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-11-"><td style="white-space:normal; text-align:left;" id="TBL-004-11-1"
class="td11"> <!--l. 471--><p class="noindent" >1.4.4 </td><td style="white-space:normal; text-align:left;" id="TBL-004-11-2"
-class="td11"> <!--l. 471--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#resize-text" >Resize text</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-11-3"
+class="td11"> <!--l. 471--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#resize-text" >Resize text</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-11-3"
class="td11"> <!--l. 472--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-12-"><td style="white-space:normal; text-align:left;" id="TBL-004-12-1"
class="td11"> <!--l. 473--><p class="noindent" >1.4.5 </td><td style="white-space:normal; text-align:left;" id="TBL-004-12-2"
-class="td11"> <!--l. 474--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-text-presentation" >Images of Text</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-12-3"
+class="td11"> <!--l. 474--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-text-presentation" >Images of Text</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-12-3"
class="td11"> <!--l. 474--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-13-"><td style="white-space:normal; text-align:left;" id="TBL-004-13-1"
class="td11"> <!--l. 475--><p class="noindent" >1.4.10 </td><td style="white-space:normal; text-align:left;" id="TBL-004-13-2"
class="td11">
-<!--l. 475--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#reflow" >Reflow</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-13-3"
+<!--l. 475--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#reflow" >Reflow</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-13-3"
class="td11"> <!--l. 475--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-14-"><td style="white-space:normal; text-align:left;" id="TBL-004-14-1"
class="td11"> <!--l. 476--><p class="noindent" >1.4.11 </td><td style="white-space:normal; text-align:left;" id="TBL-004-14-2"
class="td11">
-<!--l. 477--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#non-text-contrast" >Non-text Contrast</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-14-3"
+<!--l. 477--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#non-text-contrast" >Non-text Contrast</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-14-3"
class="td11"> <!--l. 477--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-15-"><td style="white-space:normal; text-align:left;" id="TBL-004-15-1"
class="td11"> <!--l. 478--><p class="noindent" >1.4.12 </td><td style="white-space:normal; text-align:left;" id="TBL-004-15-2"
class="td11">
-<!--l. 479--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#text-spacing" >Text Spacing</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-15-3"
+<!--l. 479--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#text-spacing" >Text Spacing</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-15-3"
class="td11"> <!--l. 479--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-16-"><td style="white-space:normal; text-align:left;" id="TBL-004-16-1"
class="td11"> <!--l. 480--><p class="noindent" >1.4.13 </td><td style="white-space:normal; text-align:left;" id="TBL-004-16-2"
class="td11">
-<!--l. 481--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#content-on-hover-or-focus" >Content on Hover or Focus</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-16-3"
+<!--l. 481--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#content-on-hover-or-focus" >Content on Hover or Focus</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-16-3"
class="td11"> <!--l. 481--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-17-"><td style="white-space:normal; text-align:left;" id="TBL-004-17-1"
class="td11"> <!--l. 482--><p class="noindent" >2.4.5 </td><td style="white-space:normal; text-align:left;" id="TBL-004-17-2"
-class="td11"> <!--l. 483--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-mult-loc" >Multiple Ways</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-17-3"
+class="td11"> <!--l. 483--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-mult-loc" >Multiple Ways</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-17-3"
class="td11"> <!--l. 483--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-18-"><td style="white-space:normal; text-align:left;" id="TBL-004-18-1"
class="td11"> <!--l. 484--><p class="noindent" >2.4.6 </td><td style="white-space:normal; text-align:left;" id="TBL-004-18-2"
-class="td11"> <!--l. 485--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-descriptive" >Headings and Labels</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-18-3"
+class="td11"> <!--l. 485--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-descriptive" >Headings and Labels</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-18-3"
class="td11"> <!--l. 485--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-19-"><td style="white-space:normal; text-align:left;" id="TBL-004-19-1"
class="td11"> <!--l. 486--><p class="noindent" >2.4.7 </td><td style="white-space:normal; text-align:left;" id="TBL-004-19-2"
-class="td11"> <!--l. 487--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-focus-visible" >Focus Visible</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-19-3"
+class="td11"> <!--l. 487--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-focus-visible" >Focus Visible</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-19-3"
class="td11"> <!--l. 487--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-20-"><td style="white-space:normal; text-align:left;" id="TBL-004-20-1"
class="td11"> <!--l. 488--><p class="noindent" >3.1.2 </td><td style="white-space:normal; text-align:left;" id="TBL-004-20-2"
-class="td11"> <!--l. 489--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#meaning-other-lang-id" >Language of Parts</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-20-3"
+class="td11"> <!--l. 489--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#meaning-other-lang-id" >Language of Parts</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-20-3"
class="td11"> <!--l. 489--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-21-"><td style="white-space:normal; text-align:left;" id="TBL-004-21-1"
class="td11"> <!--l. 490--><p class="noindent" >3.2.3 </td><td style="white-space:normal; text-align:left;" id="TBL-004-21-2"
-class="td11"> <!--l. 491--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#consistent-behavior-consistent-locations" >Consistent Navigation</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-21-3"
+class="td11"> <!--l. 491--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#consistent-behavior-consistent-locations" >Consistent Navigation</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-21-3"
class="td11"> <!--l. 491--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-22-"><td style="white-space:normal; text-align:left;" id="TBL-004-22-1"
class="td11"> <!--l. 492--><p class="noindent" >3.2.4 </td><td style="white-space:normal; text-align:left;" id="TBL-004-22-2"
-class="td11"> <!--l. 493--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#consistent-behavior-consistent-functionality" >Consistent Identification</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-22-3"
+class="td11"> <!--l. 493--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#consistent-behavior-consistent-functionality" >Consistent Identification</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-22-3"
class="td11"> <!--l. 493--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-23-"><td style="white-space:normal; text-align:left;" id="TBL-004-23-1"
class="td11"> <!--l. 494--><p class="noindent" >3.3.3 </td><td style="white-space:normal; text-align:left;" id="TBL-004-23-2"
-class="td11"> <!--l. 495--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#minimize-error-suggestions" >Error Suggestion</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-23-3"
+class="td11"> <!--l. 495--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#minimize-error-suggestions" >Error Suggestion</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-23-3"
class="td11"> <!--l. 495--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-24-"><td style="white-space:normal; text-align:left;" id="TBL-004-24-1"
class="td11"> <!--l. 496--><p class="noindent" >3.3.4 </td><td style="white-space:normal; text-align:left;" id="TBL-004-24-2"
class="td11">
-<!--l. 497--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#minimize-error-reversible" >Error Prevention (Legal, Financial, Data)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-24-3"
+<!--l. 497--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#minimize-error-reversible" >Error Prevention (Legal, Financial, Data)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-004-24-3"
class="td11"> <!--l. 497--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-004-25-"><td style="white-space:normal; text-align:left;" id="TBL-004-25-1"
class="td11"> <!--l. 499--><p class="noindent" >4.1.3 </td><td style="white-space:normal; text-align:left;" id="TBL-004-25-2"
class="td11">
-<!--l. 500--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#status-messages" >Status Messages</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-25-3"
+<!--l. 500--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#status-messages" >Status Messages</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-004-25-3"
class="td11"> <!--l. 500--><p class="noindent" >Supports </td>
</tr><tr
@@ -827,9 +817,6 @@ class="td11"> </td></tr></table><!--l. 502--><p class="noindent" ></div>
<a
id="x1-14000doc"></a>
<div class="tabular">
-
-
-
<!--l. 508--><p class="indent" >
<table id="TBL-5" class="tabular"
@@ -840,84 +827,84 @@ id="TBL-5-3"></colgroup><tr
style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:normal; text-align:left;" id="TBL-5-1-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-05-1-"><td style="white-space:normal; text-align:left;" id="TBL-05-1-1"
-class="td11">
-<!--l. 509--><p class="noindent" > </td>
+class="td11"><!--l. 509--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-05-2-"><td style="white-space:normal; text-align:left;" id="TBL-05-2-1"
-class="td11"> <!--l. 509--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 509--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-05-3-"><td colspan="2" style="white-space:nowrap; text-align:left;" id="TBL-05-3-1"
-class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-05-3-3"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-05-3-3"
class="td11">
<div class="multicolumn" style="white-space:normal; text-align:left;">Conformance Level</div>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-05-4-"><td style="white-space:normal; text-align:left;" id="TBL-05-4-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-005-4-"><td style="white-space:normal; text-align:left;" id="TBL-005-4-1"
-class="td11">
-<!--l. 509--><p class="noindent" > </td>
+class="td11"><!--l. 509--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-5-"><td style="white-space:normal; text-align:left;" id="TBL-005-5-1"
-class="td11"> <!--l. 509--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 509--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-005-6-"><td style="white-space:normal; text-align:left;" id="TBL-005-6-1"
class="td11">
<!--l. 510--><p class="noindent" >1.2.6 </td><td style="white-space:normal; text-align:left;" id="TBL-005-6-2"
class="td11">
-<!--l. 511--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#media-equiv-sign" >Sign Language (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-6-3"
+<!--l. 511--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#media-equiv-sign" >Sign Language (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-6-3"
class="td11"> <!--l. 511--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-7-"><td style="white-space:normal; text-align:left;" id="TBL-005-7-1"
class="td11"> <!--l. 512--><p class="noindent" >1.2.7 </td><td style="white-space:normal; text-align:left;" id="TBL-005-7-2"
class="td11">
-<!--l. 513--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#media-equiv-extended-ad" >Extended Audio Description (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-7-3"
+<!--l. 513--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#media-equiv-extended-ad" >Extended Audio Description (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-7-3"
class="td11"> <!--l. 513--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-8-"><td style="white-space:normal; text-align:left;" id="TBL-005-8-1"
class="td11"> <!--l. 515--><p class="noindent" >1.2.8 </td><td style="white-space:normal; text-align:left;" id="TBL-005-8-2"
class="td11">
-<!--l. 516--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#media-equiv-text-doc" >Media Alternative (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-8-3"
+<!--l. 516--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#media-equiv-text-doc" >Media Alternative (Prerecorded)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-8-3"
class="td11"> <!--l. 516--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-9-"><td style="white-space:normal; text-align:left;" id="TBL-005-9-1"
class="td11"> <!--l. 517--><p class="noindent" >1.2.9 </td><td style="white-space:normal; text-align:left;" id="TBL-005-9-2"
class="td11">
-<!--l. 518--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#media-equiv-live-audio-only" >Audio-only (Live)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-9-3"
+<!--l. 518--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#media-equiv-live-audio-only" >Audio-only (Live)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-9-3"
class="td11"> <!--l. 518--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-10-"><td style="white-space:normal; text-align:left;" id="TBL-005-10-1"
class="td11"> <!--l. 519--><p class="noindent" >1.3.6 </td><td style="white-space:normal; text-align:left;" id="TBL-005-10-2"
class="td11">
-<!--l. 520--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#identify-purpose" >Identify Purpose</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-10-3"
+<!--l. 520--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#identify-purpose" >Identify Purpose</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-10-3"
class="td11"> <!--l. 520--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-11-"><td style="white-space:normal; text-align:left;" id="TBL-005-11-1"
class="td11"> <!--l. 521--><p class="noindent" >1.4.6 </td><td style="white-space:normal; text-align:left;" id="TBL-005-11-2"
class="td11">
-<!--l. 522--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast7" >Contrast (Enhanced)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-11-3"
+<!--l. 522--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast7" >Contrast (Enhanced)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-11-3"
class="td11"> <!--l. 522--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-12-"><td style="white-space:normal; text-align:left;" id="TBL-005-12-1"
class="td11"> <!--l. 523--><p class="noindent" >1.4.7 </td><td style="white-space:normal; text-align:left;" id="TBL-005-12-2"
-class="td11"> <!--l. 524--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-noaudio" >Low or No Background Audio</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-12-3"
+class="td11"> <!--l. 524--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-noaudio" >Low or No Background Audio</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-12-3"
class="td11"> <!--l. 524--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-13-"><td style="white-space:normal; text-align:left;" id="TBL-005-13-1"
class="td11"> <!--l. 525--><p class="noindent" >1.4.8 </td><td style="white-space:normal; text-align:left;" id="TBL-005-13-2"
-class="td11"> <!--l. 526--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-visual-presentation" >Visual Presentation</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-13-3"
+class="td11"> <!--l. 526--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-visual-presentation" >Visual Presentation</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-13-3"
class="td11"> <!--l. 526--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-14-"><td style="white-space:normal; text-align:left;" id="TBL-005-14-1"
class="td11"> <!--l. 527--><p class="noindent" >1.4.9 </td><td style="white-space:normal; text-align:left;" id="TBL-005-14-2"
class="td11">
-<!--l. 528--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-text-images" >Images of Text (No Exception)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-14-3"
+<!--l. 528--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#visual-audio-contrast-text-images" >Images of Text (No Exception)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-14-3"
class="td11"> <!--l. 528--><p class="noindent" >Supports<span class="footnote-mark"><a
href="texlive-vpat2.html#fn1x0"><sup class="textsuperscript">
1</sup></a></span> </td>
@@ -925,122 +912,122 @@ href="texlive-vpat2.html#fn1x0"><sup class="textsuperscript">
style="vertical-align:baseline;" id="TBL-005-15-"><td style="white-space:normal; text-align:left;" id="TBL-005-15-1"
class="td11"> <!--l. 529--><p class="noindent" >2.1.3 </td><td style="white-space:normal; text-align:left;" id="TBL-005-15-2"
class="td11">
-<!--l. 530--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#keyboard-operation-all-funcs" >Keyboard (No Exception)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-15-3"
+<!--l. 530--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#keyboard-operation-all-funcs" >Keyboard (No Exception)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-15-3"
class="td11"> <!--l. 530--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-16-"><td style="white-space:normal; text-align:left;" id="TBL-005-16-1"
class="td11"> <!--l. 531--><p class="noindent" >2.2.3 </td><td style="white-space:normal; text-align:left;" id="TBL-005-16-2"
-class="td11"> <!--l. 532--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#time-limits-no-exceptions" >No Timing</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-16-3"
+class="td11"> <!--l. 532--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#time-limits-no-exceptions" >No Timing</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-16-3"
class="td11"> <!--l. 532--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-17-"><td style="white-space:normal; text-align:left;" id="TBL-005-17-1"
class="td11"> <!--l. 533--><p class="noindent" >2.2.4 </td><td style="white-space:normal; text-align:left;" id="TBL-005-17-2"
-class="td11"> <!--l. 534--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#time-limits-postponed" >Interruptions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-17-3"
+class="td11"> <!--l. 534--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#time-limits-postponed" >Interruptions</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-17-3"
class="td11"> <!--l. 534--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-18-"><td style="white-space:normal; text-align:left;" id="TBL-005-18-1"
class="td11"> <!--l. 535--><p class="noindent" >2.2.5 </td><td style="white-space:normal; text-align:left;" id="TBL-005-18-2"
-class="td11"> <!--l. 536--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#time-limits-server-timeout" >Re-authenticating</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-18-3"
+class="td11"> <!--l. 536--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#time-limits-server-timeout" >Re-authenticating</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-18-3"
class="td11"> <!--l. 536--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-19-"><td style="white-space:normal; text-align:left;" id="TBL-005-19-1"
class="td11"> <!--l. 537--><p class="noindent" >2.2.6 </td><td style="white-space:normal; text-align:left;" id="TBL-005-19-2"
class="td11">
-<!--l. 537--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#timeouts" >Timeouts</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-19-3"
+<!--l. 537--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#timeouts" >Timeouts</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-19-3"
class="td11"> <!--l. 538--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-20-"><td style="white-space:normal; text-align:left;" id="TBL-005-20-1"
class="td11"> <!--l. 539--><p class="noindent" >2.3.2 </td><td style="white-space:normal; text-align:left;" id="TBL-005-20-2"
-class="td11"> <!--l. 540--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#seizure-three-times" >Three Flashes</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-20-3"
+class="td11"> <!--l. 540--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#seizure-three-times" >Three Flashes</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-20-3"
class="td11"> <!--l. 540--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-21-"><td style="white-space:normal; text-align:left;" id="TBL-005-21-1"
class="td11"> <!--l. 541--><p class="noindent" >2.3.3 </td><td style="white-space:normal; text-align:left;" id="TBL-005-21-2"
class="td11">
-<!--l. 542--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#animation-from-interactions" >Animation from Interactions</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-21-3"
+<!--l. 542--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#animation-from-interactions" >Animation from Interactions</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-21-3"
class="td11"> <!--l. 542--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-22-"><td style="white-space:normal; text-align:left;" id="TBL-005-22-1"
class="td11"> <!--l. 543--><p class="noindent" >2.4.8 </td><td style="white-space:normal; text-align:left;" id="TBL-005-22-2"
-class="td11"> <!--l. 544--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-location" >Location</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-22-3"
+class="td11"> <!--l. 544--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-location" >Location</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-22-3"
class="td11"> <!--l. 544--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-23-"><td style="white-space:normal; text-align:left;" id="TBL-005-23-1"
class="td11"> <!--l. 545--><p class="noindent" >2.4.9 </td><td style="white-space:normal; text-align:left;" id="TBL-005-23-2"
class="td11">
-<!--l. 546--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-link" >Link Purpose (Link Only)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-23-3"
+<!--l. 546--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-link" >Link Purpose (Link Only)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-23-3"
class="td11"> <!--l. 546--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-24-"><td style="white-space:normal; text-align:left;" id="TBL-005-24-1"
class="td11"> <!--l. 547--><p class="noindent" >2.4.10 </td><td style="white-space:normal; text-align:left;" id="TBL-005-24-2"
-class="td11"> <!--l. 548--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-headings" >Section Headings</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-24-3"
+class="td11"> <!--l. 548--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#navigation-mechanisms-headings" >Section Headings</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-24-3"
class="td11"> <!--l. 548--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-25-"><td style="white-space:normal; text-align:left;" id="TBL-005-25-1"
class="td11"> <!--l. 549--><p class="noindent" >2.5.5 </td><td style="white-space:normal; text-align:left;" id="TBL-005-25-2"
class="td11">
-<!--l. 549--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#target-size" >Target Size</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-25-3"
+<!--l. 549--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#target-size" >Target Size</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-25-3"
class="td11"> <!--l. 550--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-26-"><td style="white-space:normal; text-align:left;" id="TBL-005-26-1"
class="td11"> <!--l. 551--><p class="noindent" >2.5.6 </td><td style="white-space:normal; text-align:left;" id="TBL-005-26-2"
class="td11">
-<!--l. 552--><p class="noindent" ><a
-href="https://www.w3.org/TR/WCAG21/#concurrent-input-mechanisms" >Concurrent Input Mechanisms</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-26-3"
+<!--l. 552--><p class="noindent" > <a
+href="https://www.w3.org/TR/WCAG21/#concurrent-input-mechanisms" >Concurrent Input Mechanisms</a> (2.1 only) </td><td style="white-space:normal; text-align:left;" id="TBL-005-26-3"
class="td11"> <!--l. 552--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-27-"><td style="white-space:normal; text-align:left;" id="TBL-005-27-1"
class="td11"> <!--l. 553--><p class="noindent" >3.1.3 </td><td style="white-space:normal; text-align:left;" id="TBL-005-27-2"
-class="td11"> <!--l. 554--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#meaning-idioms" >Unusual Words</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-27-3"
+class="td11"> <!--l. 554--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#meaning-idioms" >Unusual Words</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-27-3"
class="td11"> <!--l. 554--><p class="noindent" >Does Not Support </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-28-"><td style="white-space:normal; text-align:left;" id="TBL-005-28-1"
class="td11"> <!--l. 555--><p class="noindent" >3.1.4 </td><td style="white-space:normal; text-align:left;" id="TBL-005-28-2"
-class="td11"> <!--l. 556--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#meaning-located" >Abbreviations</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-28-3"
+class="td11"> <!--l. 556--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#meaning-located" >Abbreviations</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-28-3"
class="td11"> <!--l. 556--><p class="noindent" >Does Not Support </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-29-"><td style="white-space:normal; text-align:left;" id="TBL-005-29-1"
class="td11"> <!--l. 557--><p class="noindent" >3.1.5 </td><td style="white-space:normal; text-align:left;" id="TBL-005-29-2"
-class="td11"> <!--l. 558--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#meaning-supplements" >Reading Level</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-29-3"
+class="td11"> <!--l. 558--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#meaning-supplements" >Reading Level</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-29-3"
class="td11"> <!--l. 558--><p class="noindent" >Does Not Support </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-30-"><td style="white-space:normal; text-align:left;" id="TBL-005-30-1"
class="td11"> <!--l. 559--><p class="noindent" >3.1.6 </td><td style="white-space:normal; text-align:left;" id="TBL-005-30-2"
-class="td11"> <!--l. 560--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#meaning-pronunciation" >Pronunciation</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-30-3"
+class="td11"> <!--l. 560--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#meaning-pronunciation" >Pronunciation</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-30-3"
class="td11"> <!--l. 560--><p class="noindent" >Not Applicable </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-31-"><td style="white-space:normal; text-align:left;" id="TBL-005-31-1"
class="td11"> <!--l. 561--><p class="noindent" >3.2.5 </td><td style="white-space:normal; text-align:left;" id="TBL-005-31-2"
-class="td11"> <!--l. 562--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#consistent-behavior-no-extreme-changes-context" >Change on Request</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-31-3"
+class="td11"> <!--l. 562--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#consistent-behavior-no-extreme-changes-context" >Change on Request</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-31-3"
class="td11"> <!--l. 562--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-32-"><td style="white-space:normal; text-align:left;" id="TBL-005-32-1"
class="td11"> <!--l. 563--><p class="noindent" >3.3.5 </td><td style="white-space:normal; text-align:left;" id="TBL-005-32-2"
-class="td11"> <!--l. 564--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#minimize-error-context-help" >Help</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-32-3"
+class="td11"> <!--l. 564--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#minimize-error-context-help" >Help</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-32-3"
class="td11"> <!--l. 564--><p class="noindent" >Does Not Support </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-005-33-"><td style="white-space:normal; text-align:left;" id="TBL-005-33-1"
class="td11"> <!--l. 565--><p class="noindent" >3.3.6 </td><td style="white-space:normal; text-align:left;" id="TBL-005-33-2"
class="td11">
-<!--l. 566--><p class="noindent" ><a
-href="http://www.w3.org/TR/WCAG20/#minimize-error-reversible-all" >Error Prevention (All)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-33-3"
+<!--l. 566--><p class="noindent" > <a
+href="http://www.w3.org/TR/WCAG20/#minimize-error-reversible-all" >Error Prevention (All)</a> </td><td style="white-space:normal; text-align:left;" id="TBL-005-33-3"
class="td11"> <!--l. 566--><p class="noindent" >Not Applicable </td>
</tr><tr
@@ -1052,7 +1039,6 @@ class="td11"> </td></tr></table>
<!--l. 568--><p class="noindent" ></div><a
id="x1-14001f1"></a>
<dl class="description"><dt class="description">
- <!--l. 574--><p class="noindent" >
<span
class="cmbx-10">Note:</span> </dt><dd
class="description">
@@ -1081,69 +1067,69 @@ id="TBL-6-3"></colgroup><tr
style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:normal; text-align:left;" id="TBL-6-1-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-06-1-"><td style="white-space:normal; text-align:left;" id="TBL-06-1-1"
-class="td11">
-<!--l. 587--><p class="noindent" > </td>
+class="td11"><!--l. 587--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-06-2-"><td style="white-space:normal; text-align:left;" id="TBL-06-2-1"
-class="td11"> <!--l. 587--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 587--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-06-3-"><td colspan="2" style="white-space:nowrap; text-align:left;" id="TBL-06-3-1"
-class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-06-3-3"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-06-3-3"
class="td11">
<div class="multicolumn" style="white-space:normal; text-align:left;">Conformance Level</div>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-06-4-"><td style="white-space:normal; text-align:left;" id="TBL-06-4-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-006-4-"><td style="white-space:normal; text-align:left;" id="TBL-006-4-1"
-class="td11">
-<!--l. 587--><p class="noindent" > </td>
+class="td11"><!--l. 587--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-5-"><td style="white-space:normal; text-align:left;" id="TBL-006-5-1"
-class="td11"> <!--l. 587--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 587--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-006-6-"><td style="white-space:normal; text-align:left;" id="TBL-006-6-1"
class="td11">
<!--l. 588--><p class="noindent" >302.1 </td><td style="white-space:normal; text-align:left;" id="TBL-006-6-2"
-class="td11"> <!--l. 588--><p class="noindent" >Without Vision </td><td style="white-space:normal; text-align:left;" id="TBL-006-6-3"
+class="td11"> <!--l. 588--><p class="noindent" >Without Vision </td><td style="white-space:normal; text-align:left;" id="TBL-006-6-3"
class="td11"> <!--l. 589--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-7-"><td style="white-space:normal; text-align:left;" id="TBL-006-7-1"
class="td11"> <!--l. 590--><p class="noindent" >302.2 </td><td style="white-space:normal; text-align:left;" id="TBL-006-7-2"
-class="td11"> <!--l. 590--><p class="noindent" >With Limited Vision </td><td style="white-space:normal; text-align:left;" id="TBL-006-7-3"
+class="td11"> <!--l. 590--><p class="noindent" >With Limited Vision </td><td style="white-space:normal; text-align:left;" id="TBL-006-7-3"
class="td11"> <!--l. 590--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-8-"><td style="white-space:normal; text-align:left;" id="TBL-006-8-1"
class="td11"> <!--l. 591--><p class="noindent" >302.3 </td><td style="white-space:normal; text-align:left;" id="TBL-006-8-2"
-class="td11"> <!--l. 591--><p class="noindent" >Without Perception of Color </td><td style="white-space:normal; text-align:left;" id="TBL-006-8-3"
+class="td11"> <!--l. 591--><p class="noindent" >Without Perception of Color </td><td style="white-space:normal; text-align:left;" id="TBL-006-8-3"
class="td11"> <!--l. 591--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-9-"><td style="white-space:normal; text-align:left;" id="TBL-006-9-1"
class="td11"> <!--l. 592--><p class="noindent" >302.4 </td><td style="white-space:normal; text-align:left;" id="TBL-006-9-2"
-class="td11"> <!--l. 592--><p class="noindent" >Without Hearing </td><td style="white-space:normal; text-align:left;" id="TBL-006-9-3"
+class="td11"> <!--l. 592--><p class="noindent" >Without Hearing </td><td style="white-space:normal; text-align:left;" id="TBL-006-9-3"
class="td11"> <!--l. 592--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-10-"><td style="white-space:normal; text-align:left;" id="TBL-006-10-1"
class="td11"> <!--l. 593--><p class="noindent" >302.5 </td><td style="white-space:normal; text-align:left;" id="TBL-006-10-2"
-class="td11"> <!--l. 593--><p class="noindent" >With Limited Hearing </td><td style="white-space:normal; text-align:left;" id="TBL-006-10-3"
+class="td11"> <!--l. 593--><p class="noindent" >With Limited Hearing </td><td style="white-space:normal; text-align:left;" id="TBL-006-10-3"
class="td11"> <!--l. 593--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-11-"><td style="white-space:normal; text-align:left;" id="TBL-006-11-1"
class="td11"> <!--l. 594--><p class="noindent" >302.6 </td><td style="white-space:normal; text-align:left;" id="TBL-006-11-2"
-class="td11"> <!--l. 594--><p class="noindent" >Without Speech </td><td style="white-space:normal; text-align:left;" id="TBL-006-11-3"
+class="td11"> <!--l. 594--><p class="noindent" >Without Speech </td><td style="white-space:normal; text-align:left;" id="TBL-006-11-3"
class="td11"> <!--l. 594--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-12-"><td style="white-space:normal; text-align:left;" id="TBL-006-12-1"
class="td11"> <!--l. 595--><p class="noindent" >302.7 </td><td style="white-space:normal; text-align:left;" id="TBL-006-12-2"
-class="td11"> <!--l. 595--><p class="noindent" >With Limited Manipulation </td><td style="white-space:normal; text-align:left;" id="TBL-006-12-3"
+class="td11"> <!--l. 595--><p class="noindent" >With Limited Manipulation </td><td style="white-space:normal; text-align:left;" id="TBL-006-12-3"
class="td11"> <!--l. 595--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-13-"><td style="white-space:normal; text-align:left;" id="TBL-006-13-1"
class="td11"> <!--l. 596--><p class="noindent" >302.8 </td><td style="white-space:normal; text-align:left;" id="TBL-006-13-2"
-class="td11"> <!--l. 596--><p class="noindent" >With Limited Reach and Strength </td><td style="white-space:normal; text-align:left;" id="TBL-006-13-3"
+class="td11"> <!--l. 596--><p class="noindent" >With Limited Reach and Strength </td><td style="white-space:normal; text-align:left;" id="TBL-006-13-3"
class="td11"> <!--l. 596--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-006-14-"><td style="white-space:normal; text-align:left;" id="TBL-006-14-1"
class="td11"> <!--l. 597--><p class="noindent" >302.9 </td><td style="white-space:normal; text-align:left;" id="TBL-006-14-2"
-class="td11"> <!--l. 597--><p class="noindent" >With Limited Language, Cognitive, and Learning
-Abilities </td><td style="white-space:normal; text-align:left;" id="TBL-006-14-3"
+class="td11"> <!--l. 597--><p class="noindent" >With Limited Language, Cognitive, and
+Learning Abilities </td><td style="white-space:normal; text-align:left;" id="TBL-006-14-3"
class="td11"> <!--l. 599--><p class="noindent" >Does Not Support </td>
</tr><tr
@@ -1179,8 +1165,7 @@ class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:normal; text-align:left;" id="TBL-7-3-1"
-class="td11">
-<!--l. 615--><p class="noindent" > </td>
+class="td11"> <!--l. 615--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-4-"><td colspan="2" style="white-space:nowrap; text-align:left;" id="TBL-7-4-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-7-4-3"
@@ -1194,12 +1179,10 @@ class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-7-"><td style="white-space:normal; text-align:left;" id="TBL-7-7-1"
-class="td11">
-<!--l. 615--><p class="noindent" > </td>
+class="td11"> <!--l. 615--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-8-"><td style="white-space:normal; text-align:left;" id="TBL-7-8-1"
-class="td11">
-<!--l. 616--><p class="noindent" > </td>
+class="td11"> <!--l. 616--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-9-"><td style="white-space:normal; text-align:left;" id="TBL-7-9-1"
class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-7-9-2"
@@ -1361,9 +1344,6 @@ class="td11">
<!--l. 641--><p class="noindent" >Platform Accessibility Features </td><td style="white-space:normal; text-align:left;" id="TBL-7-37-3"
class="td11">
<!--l. 641--><p class="noindent" >Supports </td>
-
-
-
</tr><tr
style="vertical-align:baseline;" id="TBL-7-38-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-7-38-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;"> <span
@@ -1385,6 +1365,9 @@ class="td11">
<!--l. 644--><p class="noindent" >Alternative User Interfaces </td><td style="white-space:normal; text-align:left;" id="TBL-7-40-3"
class="td11">
<!--l. 644--><p class="noindent" >Supports </td>
+
+
+
</tr><tr
style="vertical-align:baseline;" id="TBL-7-41-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-7-41-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;"><span
@@ -1461,29 +1444,22 @@ class="td11"> </td>
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-52-"><td style="white-space:normal; text-align:left;" id="TBL-7-52-1"
-class="td11">
-<!--l. 656--><p class="noindent" > </td>
+class="td11"> <!--l. 656--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-53-"><td style="white-space:normal; text-align:left;" id="TBL-7-53-1"
-class="td11">
-<!--l. 656--><p class="noindent" > </td>
+class="td11"> <!--l. 656--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-54-"><td style="white-space:normal; text-align:left;" id="TBL-7-54-1"
-class="td11">
-<!--l. 656--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 656--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-7-15-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-7-15-1"
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-7-16-"><td style="white-space:normal; text-align:left;" id="TBL-7-16-1"
-class="td11">
-<!--l. 620--><p class="noindent" > </td>
+class="td11"> <!--l. 620--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-7-17-"><td style="white-space:normal; text-align:left;" id="TBL-7-17-1"
-class="td11">
-<!--l. 620--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 620--><p class="noindent" > </td></tr>
</table></div>
<!--l. 659--><p class="noindent" >
<h4 class="subsectionHead"><a
@@ -1498,9 +1474,6 @@ class="td11">
id="TBL-8-1"><col
id="TBL-8-2"><col
id="TBL-8-3"></colgroup>
-
-
-
<tr
style="vertical-align:baseline;" id="TBL-8-10-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-8-10-1"
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
@@ -1514,13 +1487,10 @@ class="td11">
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-8-13-"><td style="white-space:normal; text-align:left;" id="TBL-8-13-1"
-class="td11">
-<!--l. 666--><p class="noindent" > </td>
+class="td11"> <!--l. 666--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-14-"><td style="white-space:normal; text-align:left;" id="TBL-8-14-1"
-class="td11">
-<!--l. 666--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 666--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-8-18-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-8-18-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;"> <span
@@ -1567,6 +1537,9 @@ class="td11">
Features </td><td style="white-space:normal; text-align:left;" id="TBL-8-23-3"
class="td11">
<!--l. 677--><p class="noindent" >Not Applicable </td>
+
+
+
</tr><tr
style="vertical-align:baseline;" id="TBL-8-24-"><td style="white-space:normal; text-align:left;" id="TBL-8-24-1"
class="td11">
@@ -1583,29 +1556,22 @@ class="td11"> </td>
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-27-"><td style="white-space:normal; text-align:left;" id="TBL-8-27-1"
-class="td11">
-<!--l. 680--><p class="noindent" > </td>
+class="td11"> <!--l. 680--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-28-"><td style="white-space:normal; text-align:left;" id="TBL-8-28-1"
-class="td11">
-<!--l. 680--><p class="noindent" > </td>
+class="td11"> <!--l. 680--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-29-"><td style="white-space:normal; text-align:left;" id="TBL-8-29-1"
-class="td11">
-<!--l. 680--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 680--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-8-15-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-8-15-1"
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-8-16-"><td style="white-space:normal; text-align:left;" id="TBL-8-16-1"
-class="td11">
-<!--l. 668--><p class="noindent" > </td>
+class="td11"> <!--l. 668--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-8-17-"><td style="white-space:normal; text-align:left;" id="TBL-8-17-1"
-class="td11">
-<!--l. 668--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 668--><p class="noindent" > </td></tr>
</table></div>
@@ -1630,78 +1596,79 @@ id="TBL-9-3"></colgroup><tr
style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:normal; text-align:left;" id="TBL-9-1-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-09-1-"><td style="white-space:normal; text-align:left;" id="TBL-09-1-1"
-class="td11">
-<!--l. 692--><p class="noindent" > </td>
+class="td11"><!--l. 692--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-09-2-"><td style="white-space:normal; text-align:left;" id="TBL-09-2-1"
-class="td11"> <!--l. 692--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 692--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-09-3-"><td colspan="2" style="white-space:nowrap; text-align:left;" id="TBL-09-3-1"
-class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-09-3-3"
+class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;">Criteria</div> </td><td style="white-space:normal; text-align:left;" id="TBL-09-3-3"
class="td11">
<div class="multicolumn" style="white-space:normal; text-align:left;">Conformance Level</div>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-09-4-"><td style="white-space:normal; text-align:left;" id="TBL-09-4-1"
class="td11"> </td></tr><tr><td colspan="3"></td></tr><tr
style="vertical-align:baseline;" id="TBL-009-4-"><td style="white-space:normal; text-align:left;" id="TBL-009-4-1"
-class="td11">
-<!--l. 692--><p class="noindent" > </td>
+class="td11"><!--l. 692--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-5-"><td style="white-space:normal; text-align:left;" id="TBL-009-5-1"
-class="td11"> <!--l. 692--><p class="noindent" > </td></tr><tr
+class="td11"> <!--l. 692--><p class="noindent" >
+ </td></tr><tr
style="vertical-align:baseline;" id="TBL-009-6-"><td style="white-space:normal; text-align:left;" id="TBL-009-6-1"
class="td11">
<!--l. 693--><p class="noindent" >4.2.1 </td><td style="white-space:normal; text-align:left;" id="TBL-009-6-2"
-class="td11"> <!--l. 693--><p class="noindent" >Usage without vision </td><td style="white-space:normal; text-align:left;" id="TBL-009-6-3"
+class="td11"> <!--l. 693--><p class="noindent" >Usage without vision </td><td style="white-space:normal; text-align:left;" id="TBL-009-6-3"
class="td11"> <!--l. 693--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-7-"><td style="white-space:normal; text-align:left;" id="TBL-009-7-1"
class="td11"> <!--l. 694--><p class="noindent" >4.2.2 </td><td style="white-space:normal; text-align:left;" id="TBL-009-7-2"
-class="td11"> <!--l. 694--><p class="noindent" >Usage with limited vision </td><td style="white-space:normal; text-align:left;" id="TBL-009-7-3"
+class="td11"> <!--l. 694--><p class="noindent" >Usage with limited vision </td><td style="white-space:normal; text-align:left;" id="TBL-009-7-3"
class="td11"> <!--l. 694--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-8-"><td style="white-space:normal; text-align:left;" id="TBL-009-8-1"
class="td11"> <!--l. 695--><p class="noindent" >4.2.3 </td><td style="white-space:normal; text-align:left;" id="TBL-009-8-2"
-class="td11"> <!--l. 695--><p class="noindent" >Usage without perception of colour </td><td style="white-space:normal; text-align:left;" id="TBL-009-8-3"
+class="td11"> <!--l. 695--><p class="noindent" >Usage without perception of colour </td><td style="white-space:normal; text-align:left;" id="TBL-009-8-3"
class="td11"> <!--l. 695--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-9-"><td style="white-space:normal; text-align:left;" id="TBL-009-9-1"
class="td11"> <!--l. 696--><p class="noindent" >4.2.4 </td><td style="white-space:normal; text-align:left;" id="TBL-009-9-2"
-class="td11"> <!--l. 696--><p class="noindent" >Usage without hearing </td><td style="white-space:normal; text-align:left;" id="TBL-009-9-3"
+class="td11"> <!--l. 696--><p class="noindent" >Usage without hearing </td><td style="white-space:normal; text-align:left;" id="TBL-009-9-3"
class="td11"> <!--l. 696--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-10-"><td style="white-space:normal; text-align:left;" id="TBL-009-10-1"
class="td11"> <!--l. 697--><p class="noindent" >4.2.5 </td><td style="white-space:normal; text-align:left;" id="TBL-009-10-2"
-class="td11"> <!--l. 697--><p class="noindent" >Usage with limited hearing </td><td style="white-space:normal; text-align:left;" id="TBL-009-10-3"
+class="td11"> <!--l. 697--><p class="noindent" >Usage with limited hearing </td><td style="white-space:normal; text-align:left;" id="TBL-009-10-3"
class="td11"> <!--l. 697--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-11-"><td style="white-space:normal; text-align:left;" id="TBL-009-11-1"
class="td11"> <!--l. 698--><p class="noindent" >4.2.6 </td><td style="white-space:normal; text-align:left;" id="TBL-009-11-2"
-class="td11"> <!--l. 698--><p class="noindent" >Usage with no or limited vocal capability </td><td style="white-space:normal; text-align:left;" id="TBL-009-11-3"
+class="td11"> <!--l. 698--><p class="noindent" >Usage with no or limited vocal capability </td><td style="white-space:normal; text-align:left;" id="TBL-009-11-3"
class="td11"> <!--l. 698--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-12-"><td style="white-space:normal; text-align:left;" id="TBL-009-12-1"
class="td11"> <!--l. 699--><p class="noindent" >4.2.7 </td><td style="white-space:normal; text-align:left;" id="TBL-009-12-2"
-class="td11"> <!--l. 699--><p class="noindent" >Usage with limited manipulation or strength </td><td style="white-space:normal; text-align:left;" id="TBL-009-12-3"
+class="td11"> <!--l. 699--><p class="noindent" >Usage with limited manipulation or strength </td><td style="white-space:normal; text-align:left;" id="TBL-009-12-3"
class="td11"> <!--l. 699--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-13-"><td style="white-space:normal; text-align:left;" id="TBL-009-13-1"
class="td11"> <!--l. 700--><p class="noindent" >4.2.8 </td><td style="white-space:normal; text-align:left;" id="TBL-009-13-2"
-class="td11"> <!--l. 700--><p class="noindent" >Usage with limited reach </td><td style="white-space:normal; text-align:left;" id="TBL-009-13-3"
+class="td11"> <!--l. 700--><p class="noindent" >Usage with limited reach </td><td style="white-space:normal; text-align:left;" id="TBL-009-13-3"
class="td11"> <!--l. 700--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-14-"><td style="white-space:normal; text-align:left;" id="TBL-009-14-1"
class="td11"> <!--l. 701--><p class="noindent" >4.2.9 </td><td style="white-space:normal; text-align:left;" id="TBL-009-14-2"
-class="td11"> <!--l. 701--><p class="noindent" >Minimize photosensitive seizure triggers </td><td style="white-space:normal; text-align:left;" id="TBL-009-14-3"
+class="td11"> <!--l. 701--><p class="noindent" >Minimize photosensitive seizure triggers </td><td style="white-space:normal; text-align:left;" id="TBL-009-14-3"
class="td11"> <!--l. 701--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-15-"><td style="white-space:normal; text-align:left;" id="TBL-009-15-1"
class="td11"> <!--l. 702--><p class="noindent" >4.2.10 </td><td style="white-space:normal; text-align:left;" id="TBL-009-15-2"
-class="td11"> <!--l. 702--><p class="noindent" >Usage with limited cognition, language or learning </td><td style="white-space:normal; text-align:left;" id="TBL-009-15-3"
-class="td11"> <!--l. 702--><p class="noindent" >Does not support </td>
+class="td11"> <!--l. 702--><p class="noindent" >Usage with limited cognition, language or
+learning </td><td style="white-space:normal; text-align:left;" id="TBL-009-15-3"
+class="td11"> <!--l. 702--><p class="noindent" >Does Not Support </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-16-"><td style="white-space:normal; text-align:left;" id="TBL-009-16-1"
class="td11"> <!--l. 704--><p class="noindent" >4.2.11 </td><td style="white-space:normal; text-align:left;" id="TBL-009-16-2"
-class="td11"> <!--l. 704--><p class="noindent" >Privacy </td><td style="white-space:normal; text-align:left;" id="TBL-009-16-3"
+class="td11"> <!--l. 704--><p class="noindent" >Privacy </td><td style="white-space:normal; text-align:left;" id="TBL-009-16-3"
class="td11"> <!--l. 704--><p class="noindent" >Supports </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-009-17-"><td style="white-space:normal; text-align:left;" id="TBL-009-17-1"
@@ -1713,7 +1680,6 @@ class="td11"> </td></tr></table><!--l. 705--><p class="noindent" ></div>
id="x1-22000doc"></a>
<!--l. 710--><p class="noindent" >
<dl class="description"><dt class="description">
- <!--l. 711--><p class="noindent" >
<span
class="cmbx-10">Note:</span> </dt><dd
class="description">
@@ -1722,10 +1688,10 @@ class="description">
assistive technology&#8221;. Since TeXLive utilities do not prevent users from
attaching, installing or using assistive technology, most of requirements in
this chapter are not applicable to them.</dd></dl>
+<!--l. 720--><p class="noindent" >
-<!--l. 720--><p class="noindent" >
<a
id="x1-22001r3"></a> <!--l. 721--><div class="longtable"> <table id="TBL-10" class="longtable"
@@ -1746,28 +1712,21 @@ class="td11">
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-10-13-"><td style="white-space:normal; text-align:left;" id="TBL-10-13-1"
-class="td11">
-<!--l. 724--><p class="noindent" > </td>
+class="td11"> <!--l. 724--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-14-"><td style="white-space:normal; text-align:left;" id="TBL-10-14-1"
-class="td11">
-<!--l. 724--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 724--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-10-18-"><td style="white-space:normal; text-align:left;" id="TBL-10-18-1"
-class="td11">
-<!--l. 727--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-10-18-2"
-class="td11">
-<!--l. 727--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-10-18-3"
-class="td11">
-<!--l. 727--><p class="noindent" > </td>
+class="td11"> <!--l. 727--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-10-18-2"
+class="td11"> <!--l. 727--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-10-18-3"
+class="td11"> <!--l. 727--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-19-"><td style="white-space:normal; text-align:left;" id="TBL-10-19-1"
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-20-"><td style="white-space:normal; text-align:left;" id="TBL-10-20-1"
-class="td11">
-<!--l. 727--><p class="noindent" > </td>
+class="td11"> <!--l. 727--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-21-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-10-21-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;"> <span
@@ -1919,9 +1878,6 @@ class="td11">
<!--l. 746--><p class="noindent" >Non-visual error identification </td><td style="white-space:normal; text-align:left;" id="TBL-10-40-3"
class="td11">
<!--l. 746--><p class="noindent" >Not Applicable </td>
-
-
-
</tr><tr
style="vertical-align:baseline;" id="TBL-10-41-"><td style="white-space:normal; text-align:left;" id="TBL-10-41-1"
class="td11">
@@ -1946,6 +1902,9 @@ class="td11">
<!--l. 749--><p class="noindent" >Visual output for auditory information </td><td style="white-space:normal; text-align:left;" id="TBL-10-43-3"
class="td11">
<!--l. 749--><p class="noindent" >Not Applicable </td>
+
+
+
</tr><tr
style="vertical-align:baseline;" id="TBL-10-44-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-10-44-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;"><span
@@ -2066,33 +2025,23 @@ class="td11"> </td>
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-61-"><td style="white-space:normal; text-align:left;" id="TBL-10-61-1"
-class="td11">
-<!--l. 766--><p class="noindent" > </td>
+class="td11"> <!--l. 766--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-62-"><td style="white-space:normal; text-align:left;" id="TBL-10-62-1"
-class="td11">
-<!--l. 766--><p class="noindent" > </td>
+class="td11"> <!--l. 766--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-63-"><td style="white-space:normal; text-align:left;" id="TBL-10-63-1"
-class="td11">
-<!--l. 766--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 766--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-10-15-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-10-15-1"
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-10-16-"><td style="white-space:normal; text-align:left;" id="TBL-10-16-1"
-class="td11">
-<!--l. 726--><p class="noindent" > </td>
+class="td11"> <!--l. 726--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-10-17-"><td style="white-space:normal; text-align:left;" id="TBL-10-17-1"
-class="td11">
-<!--l. 726--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 726--><p class="noindent" > </td></tr>
</table></div>
-
-
-
<!--l. 768--><p class="noindent" >
<h4 class="subsectionHead"><a
id="x1-23000"></a>Chapter&#x00A0;6: ICT with Two-Way Voice Communication </h4>
@@ -2105,6 +2054,9 @@ class="td11">
<a
id="x1-24000doc"></a>
<!--l. 776--><p class="noindent" >Not Applicable.
+
+
+
<!--l. 779--><p class="noindent" >
<h4 class="subsectionHead"><a
id="x1-25000"></a>Chapter&#x00A0;8: Hardware</h4>
@@ -2143,13 +2095,10 @@ class="td11">
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-11-13-"><td style="white-space:normal; text-align:left;" id="TBL-11-13-1"
-class="td11">
-<!--l. 799--><p class="noindent" > </td>
+class="td11"> <!--l. 799--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-14-"><td style="white-space:normal; text-align:left;" id="TBL-11-14-1"
-class="td11">
-<!--l. 799--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 799--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-11-18-"><td style="white-space:normal; text-align:left;" id="TBL-11-18-1"
class="td11">
@@ -2179,37 +2128,27 @@ class="td11">
</tr><tr
style="vertical-align:baseline;" id="TBL-11-21-"><td style="white-space:normal; text-align:left;" id="TBL-11-21-1"
class="td11"> </td>
-
-
-
</tr><tr
style="vertical-align:baseline;" id="TBL-11-22-"><td style="white-space:normal; text-align:left;" id="TBL-11-22-1"
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-23-"><td style="white-space:normal; text-align:left;" id="TBL-11-23-1"
-class="td11">
-<!--l. 805--><p class="noindent" > </td>
+class="td11"> <!--l. 805--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-24-"><td style="white-space:normal; text-align:left;" id="TBL-11-24-1"
-class="td11">
-<!--l. 805--><p class="noindent" > </td>
+class="td11"> <!--l. 805--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-25-"><td style="white-space:normal; text-align:left;" id="TBL-11-25-1"
-class="td11">
-<!--l. 805--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 805--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-11-15-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-11-15-1"
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-11-16-"><td style="white-space:normal; text-align:left;" id="TBL-11-16-1"
-class="td11">
-<!--l. 801--><p class="noindent" > </td>
+class="td11"> <!--l. 801--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-11-17-"><td style="white-space:normal; text-align:left;" id="TBL-11-17-1"
-class="td11">
-<!--l. 801--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 801--><p class="noindent" > </td></tr>
</table></div>
<!--l. 808--><p class="noindent" >
<h4 class="subsectionHead"><a
@@ -2224,6 +2163,9 @@ class="td11">
id="TBL-12-1"><col
id="TBL-12-2"><col
id="TBL-12-3"></colgroup>
+
+
+
<tr
style="vertical-align:baseline;" id="TBL-12-10-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-12-10-1"
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
@@ -2237,20 +2179,15 @@ class="td11">
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-12-13-"><td style="white-space:normal; text-align:left;" id="TBL-12-13-1"
-class="td11">
-<!--l. 817--><p class="noindent" > </td>
+class="td11"> <!--l. 817--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-14-"><td style="white-space:normal; text-align:left;" id="TBL-12-14-1"
-class="td11">
-<!--l. 817--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 817--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-12-18-"><td style="white-space:normal; text-align:left;" id="TBL-12-18-1"
class="td11">
-11.1.1.1 through 11.4.1.3
-<!--l. 820--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-18-2"
-class="td11">
-<!--l. 820--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-18-3"
+11.1.1.1 through 11.4.1.3<!--l. 820--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-18-2"
+class="td11"> <!--l. 820--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-12-18-3"
class="td11">
<!--l. 820--><p class="noindent" >Supports<span class="footnote-mark"><a
href="texlive-vpat6.html#fn5x0"><sup class="textsuperscript">5</sup></a></span> <a
@@ -2324,9 +2261,6 @@ class="td11">
<!--l. 832--><p class="noindent" >Row, column, and headers </td><td style="white-space:normal; text-align:left;" id="TBL-12-27-3"
class="td11">
<!--l. 832--><p class="noindent" >Not Applicable </td>
-
-
-
</tr><tr
style="vertical-align:baseline;" id="TBL-12-28-"><td style="white-space:normal; text-align:left;" id="TBL-12-28-1"
class="td11">
@@ -2444,6 +2378,9 @@ class="td11">
<!--l. 849--><p class="noindent" >User preferences </td><td style="white-space:normal; text-align:left;" id="TBL-12-42-3"
class="td11">
<!--l. 849--><p class="noindent" >Not Applicable </td>
+
+
+
</tr><tr
style="vertical-align:baseline;" id="TBL-12-43-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-12-43-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;"> <span
@@ -2490,32 +2427,22 @@ class="td11"> </td>
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-50-"><td style="white-space:normal; text-align:left;" id="TBL-12-50-1"
-class="td11">
-<!--l. 856--><p class="noindent" > </td>
+class="td11"> <!--l. 856--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-51-"><td style="white-space:normal; text-align:left;" id="TBL-12-51-1"
-class="td11">
-<!--l. 856--><p class="noindent" > </td>
+class="td11"> <!--l. 856--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-52-"><td style="white-space:normal; text-align:left;" id="TBL-12-52-1"
-class="td11">
-<!--l. 856--><p class="noindent" > </td>
- </tr>
-
-
-
+class="td11"> <!--l. 856--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-12-15-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-12-15-1"
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-12-16-"><td style="white-space:normal; text-align:left;" id="TBL-12-16-1"
-class="td11">
-<!--l. 819--><p class="noindent" > </td>
+class="td11"> <!--l. 819--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-12-17-"><td style="white-space:normal; text-align:left;" id="TBL-12-17-1"
-class="td11">
-<!--l. 819--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 819--><p class="noindent" > </td></tr>
</table></div>
<!--l. 859--><p class="noindent" >
<h4 class="subsectionHead"><a
@@ -2543,28 +2470,21 @@ class="td11">
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-13-13-"><td style="white-space:normal; text-align:left;" id="TBL-13-13-1"
-class="td11">
-<!--l. 866--><p class="noindent" > </td>
+class="td11"> <!--l. 866--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-14-"><td style="white-space:normal; text-align:left;" id="TBL-13-14-1"
-class="td11">
-<!--l. 866--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 866--><p class="noindent" > </td></tr>
<tr
style="vertical-align:baseline;" id="TBL-13-18-"><td style="white-space:normal; text-align:left;" id="TBL-13-18-1"
-class="td11">
-<!--l. 869--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-18-2"
-class="td11">
-<!--l. 869--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-18-3"
-class="td11">
-<!--l. 869--><p class="noindent" > </td>
+class="td11"> <!--l. 869--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-18-2"
+class="td11"> <!--l. 869--><p class="noindent" > </td><td style="white-space:normal; text-align:left;" id="TBL-13-18-3"
+class="td11"> <!--l. 869--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-19-"><td style="white-space:normal; text-align:left;" id="TBL-13-19-1"
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-20-"><td style="white-space:normal; text-align:left;" id="TBL-13-20-1"
-class="td11">
-<!--l. 869--><p class="noindent" > </td>
+class="td11"> <!--l. 869--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-21-"><td colspan="3" style="white-space:normal; text-align:left;" id="TBL-13-21-1"
class="td11"> <div class="multicolumn" style="white-space:nowrap; text-align:left;"> <span
@@ -2625,17 +2545,13 @@ class="td11"> </td>
class="td11"> </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-30-"><td style="white-space:normal; text-align:left;" id="TBL-13-30-1"
-class="td11">
-<!--l. 877--><p class="noindent" > </td>
+class="td11"> <!--l. 877--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-31-"><td style="white-space:normal; text-align:left;" id="TBL-13-31-1"
-class="td11">
-<!--l. 877--><p class="noindent" > </td>
+class="td11"> <!--l. 877--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-32-"><td style="white-space:normal; text-align:left;" id="TBL-13-32-1"
-class="td11">
-<!--l. 877--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 877--><p class="noindent" > </td></tr>
@@ -2644,13 +2560,10 @@ class="td11">
class="td11"><span class="cmidrule"><!-- enable post-processing of cmidrule--></span>
</td></tr><tr
style="vertical-align:baseline;" id="TBL-13-16-"><td style="white-space:normal; text-align:left;" id="TBL-13-16-1"
-class="td11">
-<!--l. 868--><p class="noindent" > </td>
+class="td11"> <!--l. 868--><p class="noindent" > </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-13-17-"><td style="white-space:normal; text-align:left;" id="TBL-13-17-1"
-class="td11">
-<!--l. 868--><p class="noindent" > </td>
- </tr>
+class="td11"> <!--l. 868--><p class="noindent" > </td></tr>
</table></div>
<!--l. 880--><p class="noindent" >
<h4 class="subsectionHead"><a
diff --git a/info/tex-vpat/texlive-vpat.pdf b/info/tex-vpat/texlive-vpat.pdf
index 370e8e4a35..d27a1c5b6a 100644
--- a/info/tex-vpat/texlive-vpat.pdf
+++ b/info/tex-vpat/texlive-vpat.pdf
Binary files differ
diff --git a/info/tex-vpat/texlive-vpat.tex b/info/tex-vpat/texlive-vpat.tex
index 6eefcde301..700b7eefda 100644
--- a/info/tex-vpat/texlive-vpat.tex
+++ b/info/tex-vpat/texlive-vpat.tex
@@ -190,7 +190,7 @@
(International Edition)\\
(Based upon VPAT\textsuperscript{\textregistered} version~2.4)}
\author{\TeX\ Users Group}
-\date{Version 2.3, April 2023}
+\date{Version 2.4, August 2024}
\hypersetup{
pdftitle=TeX Live Accessibility Conformance Report,
@@ -207,13 +207,13 @@
\section{Name of Product/Version}
\label{sec:name}
-\TeX Live 2023.
+\TeX Live 2024.
\section{Report Date}
\label{sec:date}
-March 2023.
+August 2024.
\section{Product Description}
@@ -223,8 +223,8 @@ March 2023.
supported by \TeX\ Users Group, a membership-based not-for-profit
organization dedicated to support, promotion and advocacy of \TeX\
typesetting system created by Donald Knuth and maintained by the
-international community of developers. As of 2023 \TeX Live contains
-more than 470~programs and more than 7660~software packages.
+international community of developers. As of 2024 \TeX Live contains
+more than 490~programs and more than 8000~software packages.
\section{Contact Information}
\label{sec:contact_info}
@@ -232,7 +232,7 @@ more than 470~programs and more than 7660~software packages.
\begin{description}
\item[Website:] \url{https://tug.org}
\item[Address:] \leavevmode\\
- Robin Laakso, executive director,\\
+ Sophia Laakso, office manager,\\
\TeX\ Users Group,\\
PO Box 2311,\\
Portland, OR~97208-2311,\\
@@ -271,7 +271,8 @@ strives to make the creation of full accessible documents using its
tool as simple as possible, and to make the accessibility features the
default settings of our software. This is an ongoing effort,
involving many developers. \TeX\ Users Group welcomes any help in
-this work.
+this work. The current state of the effort can be found at
+\url{https://tug.org/twg/accessibility/overview.html}.
The tools provided by \TeX Live are accompanied by technical
documentation, both included in \TeX Live itself, and separate: there
@@ -282,7 +283,7 @@ documentation for several thousand software packages in \TeX Live is
provided in PDF or text format. By requiring machine readable textual
sources of all documentation provided by \TeX Live packages, we ensure
a certain level of accessibility for all documentation. However, the
-full audit of the documentation for all 7300+ packages created by many
+full audit of the documentation for all 8000+ packages created by many
thousands of volunteers is not feasible at this time. \TeX\ Users
group supports the efforts of making all \TeX\ documentation fully
accessible.
@@ -290,8 +291,7 @@ accessible.
\section{Evaluation methods used}
\label{sec:methods}
-The testing was based on the knowledge of the general product
-knowledge.
+The testing was based on the general product knowledge.
\section{Applicable standards and guidelines}
\label{sec:standards}
@@ -378,7 +378,7 @@ impossible to estimate the accessibility of all this documentation,
comprising hundreds thousands of pages written over three decades.
Another way is to count only the documentation for the packages
-included in \TeX Live. This includes documentation for 7300+
+included in \TeX Live. This includes documentation for 8000+
packages, which makes the full audit rather impractical.
In this document we discuss only the main manual for the system,
@@ -699,8 +699,8 @@ Does Not Apply.
4.2.7& Usage with limited manipulation or strength & Supports \\
4.2.8& Usage with limited reach & Supports \\
4.2.9& Minimize photosensitive seizure triggers & Supports \\
- 4.2.10 &Usage with limited cognition, language or learning & Does not
- support \\
+ 4.2.10 &Usage with limited cognition, language or learning & Does Not
+ Support \\
4.2.11& Privacy & Supports\\
\end{tabular}
diff --git a/info/tex-vpat/texlive-vpat2.html b/info/tex-vpat/texlive-vpat2.html
index 11cd93099c..f507ddbabe 100644
--- a/info/tex-vpat/texlive-vpat2.html
+++ b/info/tex-vpat/texlive-vpat2.html
@@ -12,8 +12,8 @@
>
<div class="footnote-text">
<!--l. 570--><p class="indent" > <span class="footnote-mark"><a
- id="fn1x0"><a
- id="x2-14002x"></a> <sup class="textsuperscript">1</sup></a></span><span
+ id="x2-14002x"></a><a
+ id="fn1x0"> <sup class="textsuperscript">1</sup></a></span><span
class="cmr-8">Images of GUI screens are used only when essential to the information being</span>
<span
class="cmr-8">conveyed.</span></div>
diff --git a/info/tex-vpat/texlive-vpat3.html b/info/tex-vpat/texlive-vpat3.html
index 06caa9f153..67b2d0e6ed 100644
--- a/info/tex-vpat/texlive-vpat3.html
+++ b/info/tex-vpat/texlive-vpat3.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" type="text/css" href="texlive-vpat.css">
</head><body
> <div class="footnote-text"><span class="footnote-mark"><a
- id="fn2x0"><a
- id="x3-18003x2"></a> <sup class="textsuperscript">2</sup></a></span><span
+ id="x3-18003x2"></a><a
+ id="fn2x0"> <sup class="textsuperscript">2</sup></a></span><span
class="cmr-8">See Table</span><span
class="cmr-8">&#x00A0;2: Success Criteria, Level</span><span
class="cmr-8">&#x00A0;AA</span></div>
diff --git a/info/tex-vpat/texlive-vpat4.html b/info/tex-vpat/texlive-vpat4.html
index d0d3ad6104..4c976d8267 100644
--- a/info/tex-vpat/texlive-vpat4.html
+++ b/info/tex-vpat/texlive-vpat4.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" type="text/css" href="texlive-vpat.css">
</head><body
> <div class="footnote-text"><span class="footnote-mark"><a
- id="fn3x0"><a
- id="x4-19003x3"></a> <sup class="textsuperscript">3</sup></a></span><span
+ id="x4-19003x3"></a><a
+ id="fn3x0"> <sup class="textsuperscript">3</sup></a></span><span
class="cmr-8">See WCAG</span><span
class="cmr-8">&#x00A0;2.x Report</span></div>
</body></html>
diff --git a/info/tex-vpat/texlive-vpat5.html b/info/tex-vpat/texlive-vpat5.html
index e411503b40..e018e209d0 100644
--- a/info/tex-vpat/texlive-vpat5.html
+++ b/info/tex-vpat/texlive-vpat5.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" type="text/css" href="texlive-vpat.css">
</head><body
> <div class="footnote-text"><span class="footnote-mark"><a
- id="fn4x0"><a
- id="x5-27003x4"></a> <sup class="textsuperscript">4</sup></a></span><span
+ id="x5-27003x4"></a><a
+ id="fn4x0"> <sup class="textsuperscript">4</sup></a></span><span
class="cmr-8">WCAG</span><span
class="cmr-8">&#x00A0;2.x Report</span></div>
</body></html>
diff --git a/info/tex-vpat/texlive-vpat6.html b/info/tex-vpat/texlive-vpat6.html
index fec5b8464d..657c41f649 100644
--- a/info/tex-vpat/texlive-vpat6.html
+++ b/info/tex-vpat/texlive-vpat6.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" type="text/css" href="texlive-vpat.css">
</head><body
> <div class="footnote-text"><span class="footnote-mark"><a
- id="fn5x0"><a
- id="x6-28003x5"></a> <sup class="textsuperscript">5</sup></a></span><span
+ id="x6-28003x5"></a><a
+ id="fn5x0"> <sup class="textsuperscript">5</sup></a></span><span
class="cmr-8">See WCAG</span><span
class="cmr-8">&#x00A0;2.x Report</span></div>
</body></html>
diff --git a/info/tex-vpat/texlive-vpat7.html b/info/tex-vpat/texlive-vpat7.html
index 6d73328b06..cd73d2682e 100644
--- a/info/tex-vpat/texlive-vpat7.html
+++ b/info/tex-vpat/texlive-vpat7.html
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="texlive-vpat.css">
</head><body
> <div class="footnote-text"><span class="footnote-mark"><a
- id="fn6x0"><a
- id="x7-28005x6"></a> <sup class="textsuperscript">6</sup></a></span><span
+ id="x7-28005x6"></a><a
+ id="fn6x0"> <sup class="textsuperscript">6</sup></a></span><span
class="cmr-8">See information in 11.5.2.5 through 11.5.2.17</span></div>
</body></html>
diff --git a/info/tex-vpat/texlive-vpat8.html b/info/tex-vpat/texlive-vpat8.html
index 6ecaccd575..7630b7f5f9 100644
--- a/info/tex-vpat/texlive-vpat8.html
+++ b/info/tex-vpat/texlive-vpat8.html
@@ -10,7 +10,7 @@
<link rel="stylesheet" type="text/css" href="texlive-vpat.css">
</head><body
> <div class="footnote-text"><span class="footnote-mark"><a
- id="fn7x0"><a
- id="x8-28007x7"></a> <sup class="textsuperscript">7</sup></a></span><span
+ id="x8-28007x7"></a><a
+ id="fn7x0"> <sup class="textsuperscript">7</sup></a></span><span
class="cmr-8">See information in 11.5.2.5 through 11.5.2.17</span></div>
</body></html>
diff --git a/info/tex-vpat/texlive-vpat9.html b/info/tex-vpat/texlive-vpat9.html
index 4021c71011..62e7b096fc 100644
--- a/info/tex-vpat/texlive-vpat9.html
+++ b/info/tex-vpat/texlive-vpat9.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" type="text/css" href="texlive-vpat.css">
</head><body
> <div class="footnote-text"><span class="footnote-mark"><a
- id="fn8x0"><a
- id="x9-29003x8"></a> <sup class="textsuperscript">8</sup></a></span><span
+ id="x9-29003x8"></a><a
+ id="fn8x0"> <sup class="textsuperscript">8</sup></a></span><span
class="cmr-8">See WCAG</span><span
class="cmr-8">&#x00A0;2.x Report</span></div>
</body></html>